Skip to content

Instantly share code, notes, and snippets.

@ketch
Last active January 24, 2024 22:59
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ketch/b0e30aae8452716233969479d6b6ca5d to your computer and use it in GitHub Desktop.
Save ketch/b0e30aae8452716233969479d6b6ca5d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Belt balancers in Factorio\n",
"*Author: David Ketcheson*\n",
"\n",
"*Last revision: October 2016*\n",
"\n",
"[Factorio](https://www.factorio.com/) is a game that involves transporting (many!) items on belts. In order to achieve efficient transport\n",
"on sets of belts, one can use junctions (call \"splitters\" in the game) that take input from two belts and attempt to send half the output out along each belt. Combinations of junctions (i.e., \"balancers\") can be used to equilibrate the flow along whole groups of belts. When some of the inputs and/or outputs are not operating it is desirable to always route the available inputs to the available outputs. A balancer that does this for all possible combinations of inputs and outputs is referred to as universally throughput unlimited (UTU). This property was discussed in [this forum thread](https://forums.factorio.com/viewtopic.php?f=5&t=25008) and then a more precise problem was posed in [this math.SE question](http://math.stackexchange.com/questions/1775378/belt-balancer-problem-factorio).\n",
"\n",
"In this notebook I have implemented an iterative algorithm for computing the flow along a set of belts with junctions. I then present UTU balancers for 3- and 4-belt systems."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['figure.figsize']=(15,5)\n",
"plt.rcParams['font.size']=25\n",
"import numpy as np\n",
"from sympy import Rational, sympify, nsimplify\n",
"from __future__ import division # Switch to sympy rationals later\n",
"import seaborn as sb"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Description of the model and the iterative algorithm\n",
"Each belt is composed of unit length segments, referred to in the game as tiles. In the model, we imagine each belt flowing from left to right along coordinate direction $x$ and each junction uniting two belts at the left edge of a given tile. Note that some balancers used in practice contain loops and could not be represented by our model without an infinite length belt. \n",
"\n",
"The state of a belt tile is represented by a density $0 \\le \\rho \\le 1$ and a velocity $0 \\le v \\le 1$. The value $v=1$ is the normal belt speed, and $\\rho=1$ is the maximum capacity of a belt. Clearly, we can only have $v<1$ if $\\rho=1$; this is a state in which the belt is fully loaded and there is not enough outflow downstream. \n",
"\n",
"The inflow upstream is specified by the density $\\rho_{up}$ at the left edge of the domain ($x=0$) and the outflow downstream is specified by $v_{down}$ at the right edge of the domain. For the purposes of testing UTU, we are only interested in setting these values to zero or one, but more general values will work with the algorithm below.\n",
"\n",
"The main condition to be satisfied is conservation at each junction. The flux of items along a belt is given by the product $\\rho v$, and we require that the flux going into a junction be equal to the flux coming out. It turns out to be much more complicated than I expected to satisfy this condition at each junction in a way consistent with how splitters work, and that is reflected in the code below. When I have time, I will hopefully add a more precise mathematical description of the conditions that are applied in the algorithm in order to achieve conservation.\n",
"\n",
"Briefly: we initially set $\\rho=0$ and $v=1$ everywhere except at the boundaries. At each iteration, we only increase $\\rho$ and decrease $v$; the iterative values are always lower (respectively upper) bounds on the correct values. At each iteration, we check for junctions where inflow is greater than outflow (due to the conditions in the previous sentence, the opposite situation cannot happen) and adjust them in order to achieve conservation and equal outflow. If possible, outflow densities are increased to achieve this. If that's not possible (because one of the outflow densities reaches 1) then all excess outflow is assigned to the other belt. If that's not possible (because both outflow densities reach 1) then one or both of the inflow belts will fill up and slow down."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def set_balancer_flow(junctions,upstream_densities,downstream_velocities,debug=False,maxiter=100,tol=0):\n",
" \"\"\"\n",
" Compute the flow in a given balancer configuration. The flow consists of a density (rho)\n",
" and velocity (v) for each tile of each belt, such that the conservation condition\n",
" (flow in = flow out) is enforced at each junction.\n",
" \n",
" Required inputs:\n",
" - junctions: a list of triples (x,y1,y2) that means belts y1 and y2 are \n",
" joined at the left edge of tile x (x>0). Note that belts are indexed\n",
" from zero; tiles are also indexed from zero but no junctions are allowed\n",
" on tile zero (it is reserved for the upstream inflow).\n",
" - upstream_densities: a list of densities, one for the upstream flow of\n",
" each belt. A value of 1 means the belt is fully loaded, while zero\n",
" means it is empty.\n",
" - downstream_velocities: a list of velocities, one for each belt.\n",
" Velocity one means items on the belt are moving at normal speed.\n",
" Smaller velocity is possible only if the belt is full (rho=1).\n",
" Zero velocity means the belt is completely stopped/blocked\n",
" downstream.\n",
" \n",
" Outputs: rho and v, the density and velocity of each tile of each belt.\n",
" Usually visualized using plot_belts().\n",
" \n",
" Optional inputs:\n",
" - debug: makes a plot at every step of the solution process; be warned\n",
" that this can generate hundreds of plots, which might exhaust your\n",
" graphics memory.\n",
" - maxiter: maximum number of iterations allowed before giving up. If this\n",
" is exceeded, it often means that there is a feedback loop that won't\n",
" converge in a finite number of iterations, but stopping after many iterations\n",
" will usually give a very accurate approximation of the true solution.\n",
" - tol: a numerical tolerance; once differences in flow across junctions are\n",
" smaller than this, the solver will terminate. For an exact solution, the\n",
" default value of zero must be used. Setting this larger than zero is useful for\n",
" cases in which the exact solution will never be reached.\n",
" \"\"\"\n",
" # Get problem domain bounds\n",
" n_belts = len(upstream_densities)\n",
" x, y1, y2 = zip(*junctions)\n",
" length = max(x)\n",
" \n",
" # Create more convenient lists of junctions, ordered by tile or belt\n",
" junctions_x = [ [] for i in range(length+1)]\n",
" junctions_by_belt = [ [] for i in range(n_belts)]\n",
" for x, y1, y2 in junctions:\n",
" assert(x>0) # No junctions allowed at x=0\n",
" junctions_x[x].append( (y1,y2) )\n",
" junctions_by_belt[y1].append(x)\n",
" junctions_by_belt[y2].append(x)\n",
" \n",
" # Check for overlapping junctions\n",
" for belt in range(n_belts):\n",
" for x in range(length+1):\n",
" assert(junctions_by_belt[belt].count(x)<=1) \n",
" \n",
" # Make sure all boundary conditions are set\n",
" assert len(upstream_densities) == len(downstream_velocities)\n",
"\n",
" # Check all velocities and densities are in [0,1]\n",
" assert( all([0<=m<=1 for m in upstream_densities]) )\n",
" assert( all([0<=m<=1 for m in downstream_velocities]) )\n",
" \n",
" # Use rational arithmetic if possible\n",
" try:\n",
" upstream_densities = [nsimplify(d) for d in upstream_densities]\n",
" downstream_velocities = [nsimplify(d) for d in downstream_velocities]\n",
" except:\n",
" pass\n",
"\n",
" # Set all densities to zero and velocities to one\n",
" rho = [ [0 for i in range(n_belts)] for j in range(length+1) ]\n",
" v = [ [1 for i in range(n_belts)] for j in range(length+1) ]\n",
" \n",
" # Set inflow densities\n",
" for belt, rho_upstream in enumerate(upstream_densities):\n",
" rho[0][belt] = rho_upstream\n",
" # Set outflow velocities\n",
" for belt, v_downstream in enumerate(downstream_velocities):\n",
" v[length][belt] = v_downstream\n",
" if v_downstream < 1:\n",
" rho[length][belt] = 1\n",
" \n",
" propagate_downstream(rho,junctions_by_belt,n_belts,length)\n",
" propagate_upstream(rho,v,junctions_by_belt,n_belts,length)\n",
" \n",
" something_changed = True\n",
" iterations = 0\n",
" # Loop until convergence\n",
" while something_changed:\n",
" iterations += 1\n",
" if iterations > maxiter: \n",
" print('Maximum number of iterations reached')\n",
" break\n",
" something_changed = False\n",
" for i in range(1,length+1): # Loop over x\n",
" for junction in junctions_x[i]: # Loop over junctions\n",
" y1, y2 = junction # Belts involved in this junction\n",
" inn = i-1 # inflow tile\n",
" out = i # outflow tile\n",
" flux_in = [rho[inn][y]*v[inn][y] for y in (y1,y2)]\n",
" flux_out = [rho[out][y]*v[out][y] for y in (y1,y2)]\n",
"\n",
" # If inflow > outflow:\n",
" if sum(flux_out) > sum(flux_in):\n",
" raise Exception('inverted flux condition!')\n",
" if sum(flux_in) > sum(flux_out)+tol:\n",
" # If possible, increase both outflow densities to the average inflow density\n",
" mean_upstream_density = (rho[inn][y1]+rho[inn][y2])/2\n",
" if (rho[out][y1] <= mean_upstream_density) and (rho[out][y2] <= mean_upstream_density) and \\\n",
" (v[out][y1]==1) and (v[out][y2]==1):\n",
" rho[out][y1] = mean_upstream_density\n",
" rho[out][y2] = mean_upstream_density\n",
" something_changed = True\n",
" # Otherwise, at least one outflow density is 1. \n",
" # If possible, assign all the \n",
" # surplus outflow to the non-full outflow by increasing its density.\n",
" elif (rho[out][y1] == 1) and (rho[out][y2] <= sum(flux_in) - v[out][y1] <= 1) and (rho[out][y2]<1):\n",
" rho[out][y2] = sum(flux_in) - v[out][y1]\n",
" something_changed = True\n",
" elif (rho[out][y2] == 1) and (rho[out][y1] <= sum(flux_in) - v[out][y2] <= 1) and (rho[out][y1]<1):\n",
" rho[out][y1] = sum(flux_in) - v[out][y2]\n",
" something_changed = True \n",
" else: # Both outflows are maxed out \n",
" if rho[out][y1] < 1: rho[out][y1] = Rational(1)\n",
" if rho[out][y2] < 1: rho[out][y2] = Rational(1)\n",
" flux_out = [rho[out][y]*v[out][y] for y in (y1,y2)]\n",
" mean_v_out = (v[out][y1]+v[out][y2])/2\n",
" # If the density of one inflow branch is less than the mean outflow velocity,\n",
" # leave that one alone; set the density of the other inflow to 1 and reduce\n",
" # its velocity so that conservation is enforced\n",
" if (rho[inn][y1]<=mean_v_out): # Inflow 1 is okay; assign excess to inflow 2\n",
" rho[out][y1] = Rational(1)\n",
" rho[out][y2] = Rational(1)\n",
" rho[inn][y2] = Rational(1)\n",
" v[inn][y2] = sum(flux_out) - rho[inn][y1]\n",
" something_changed = True\n",
" propagate_upstream(rho,v,junctions_by_belt,n_belts,length) \n",
" elif (rho[inn][y2]<=mean_v_out): # Inflow 2 is okay; assign excess to inflow 1\n",
" rho[inn][y1] = 1\n",
" v[inn][y1] = sum(flux_out) - rho[inn][y2]\n",
" something_changed = True \n",
" \n",
" # If the density of both inflow branches is greater than (or equal to) the\n",
" # mean outflow velocity,\n",
" # set each inflow density to 1 and inflow velocity to the mean outflow velocity\n",
" elif (rho[inn][y1]>=mean_v_out) and (rho[inn][y2]>=mean_v_out):\n",
" rho[inn][y1] = 1\n",
" rho[inn][y2] = 1\n",
" v[inn][y1] = mean_v_out\n",
" v[inn][y2] = mean_v_out\n",
" something_changed = True\n",
" else:\n",
" print('Failed to resolve junction!')\n",
" something_changed = False\n",
" \n",
" propagate_downstream(rho,junctions_by_belt,n_belts,length)\n",
" propagate_upstream(rho,v,junctions_by_belt,n_belts,length) \n",
" if debug:\n",
" plt.figure()\n",
" plot_belts(rho,v,junctions)\n",
" print rho[-1]\n",
" # Check that total flux at each tile is the same\n",
" total_flux = [ sum([rho[j][belt]*v[j][belt] for belt in range(n_belts)]) for j in range(length) ]\n",
" #print total_flux\n",
" try:\n",
" for j in range(1,length):\n",
" assert(abs(total_flux[j]-total_flux[0])<=10*tol)\n",
" except:\n",
" print('Failed flux check!')\n",
" print(total_flux)\n",
" return rho, v\n",
"\n",
"def propagate_downstream(rho,junctions_by_belt,n_belts,length):\n",
" # Fill in free-streaming tiles\n",
" for belt in range(n_belts):\n",
" for x in range(1,length+1):\n",
" if x not in junctions_by_belt[belt]: # if no junction at left edge of tile\n",
" if rho[x][belt] <= rho[x-1][belt]:\n",
" rho[x][belt] = rho[x-1][belt]\n",
" \n",
"def propagate_upstream(rho,v,junctions_by_belt,n_belts,length):\n",
" # Propagate jams upstream\n",
" for belt in range(n_belts):\n",
" for x in range(length-1,-1,-1):\n",
" if (x+1) not in junctions_by_belt[belt]: # if no junction at right edge of tile\n",
" if rho[x][belt] <= rho[x+1][belt]:\n",
" rho[x][belt] = rho[x+1][belt]\n",
" if v[x][belt] > v[x+1][belt]:\n",
" v[x][belt] = v[x+1][belt]\n",
" \n",
"def plot_belts(rho,v,junctions):\n",
" \"\"\"\n",
" Plots the flow, using colors for velocity and printing out the density on each tile.\n",
" Junctions are plotted as lines connecting tiles; these will not look correct if a junction\n",
" joins two belts whose indices are not consecutive.\n",
" \n",
" In the plot, flow is left to right and belt number increases downward.\n",
" \"\"\"\n",
" labels = np.array(rho)\n",
" if labels.dtype is np.dtype(object): \n",
" fmt = ''\n",
" else:\n",
" fmt = '.2g'\n",
" n_belts = len(rho[0])\n",
" length = len(rho)\n",
" sb.heatmap(np.array(v).T.astype(float),annot=np.array(rho).T,vmin=0,vmax=1,\n",
" linewidths=1,cmap=\"OrRd_r\",fmt = fmt,cbar_kws={'label':'velocity'});\n",
"\n",
" junctions_x = [ [] for i in range(length+1)]\n",
" for x, y1, y2 in junctions:\n",
" assert(x>0) # No junctions allowed at x=0\n",
" if (y2,y1) not in junctions_x:\n",
" junctions_x[x].append( (y1,y2) ) \n",
" \n",
" for x, junclist in enumerate(junctions_x):\n",
" for i, junction in enumerate(junclist):\n",
" y1, y2 = junction\n",
" plt.plot([x,x+0.05*(i+1),x+0.05*(i+1),x],[n_belts-y1-0.5,n_belts-y1-0.5,n_belts-y2-0.5,n_belts-y2-0.5],'-k',linewidth=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 1\n",
"Two belts, one with inflow and both with outflow; one junction between them."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c928790>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1), ) # The comma is necessary as junctions must be a list\n",
"upstream_densities = (1,0)\n",
"downstream_velocities = (1,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 2\n",
"Three belts, two with inflow and all with outflow."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c948ad0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1),\n",
" (2,1,2)\n",
" )\n",
"upstream_densities = (1,0,1)\n",
"downstream_velocities = (1,1,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 3\n",
"In this example, one of the outflows is backed up, so the splitter sends everything down the other belt."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c872bd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Two belts, one blocked\n",
"junctions = ( (1,0,1), )\n",
"upstream_densities = (1,0)\n",
"downstream_velocities = (0,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 4\n",
"If there is too much inflow with nowhere to go, the upstream section will fill up and slow down."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAE5CAYAAADiGd1TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGdBJREFUeJzt3XuUZVV9J/DvrUa7te0Gg4AaECTqlhhEBpCmeYrgOAgT\nUKNDfAQUO+pAVFwuxFFeGR0V6ckEUUEigstHRhR1CLaJQVQabFEQMOoGbEUwvESgEWmgrTt/VDUp\n2+6uojj33Lq3Pp+1zqLOPffs+zt/VHO/9dv7nE632w0AAMCjNdLvAgAAgOEgXAAAAI0QLgAAgEYI\nFwAAQCOECwAAoBHCBQAA0AjhAgAAhkApZfdSyjfW8/ohpZTvllKWl1KO6mUNwgUAAAy4Uso7knw8\nydx1Xt8kydIkByTZL8mSUsoWvapDuAAAgMF3Q5LD1vP6Dkmur7WuqrU+lOTSJPv0qgjhAgAABlyt\n9YIka9ZzaGGSeybs35tk017VsUmvBh7X7fH4AACQJJ1+FzAlq++c3vfjeZtP9/pWZSxgrLUgyd3T\nHGtSvQ4Xyeo7e/4RAENj3uZJkpM6g/H/SICZ4KTuIP09u+e1rvs/kB8neUYpZbMkv83YlKhTe/Xh\nvQ8XAADAmN4HoW6SlFIOTzK/1np2KeXYJP+cseBxdq31ll59eKfb2wvs6lwAPAI6FwCP2HjnYjD+\n4bz/jul9+X7cFgNxfToXAADQmkGawvXICRcAANCW7mi/K+gp4QIAAFqjcwEAADRhoO5s9cgJFwAA\n0BrhAgAAaILOBQAA0AzhAgAAaILOBQAA0AzhAgAAaILnXAAAAM0Y7s7FSL8LAAAAhoPOBQAAtMWC\nbgAAoBnCBQAA0IDuNDsXnYbr6BXhAgAAWqNzAQAANEK4AAAAmmBBNwAA0AwP0QMAAJqgcwEAADRD\nuAAAAJqgcwEAADRjuMPFSL8LAAAAhoPOBQAAtMW0KAAAoBnCBQAA0ASdCwAAoBkeogcAADRB5wIA\nAGiGcAEAADRB5wIAAGiGcAEAADRB5wIAAGiGu0UBAABNGPLOxUi/CwAAAIaDzgUAALRlyDsXwgUA\nALTGmgsAAKAJOhcAAEAzhAsAAKAJXdOiAACAJpgWBQAANEO4AAAAmmBaFAAA0AjTogAAgGYIFwAA\nQBOGfFrUSL8LAAAAhoPOBQAAtKb5aVGllE6SjyTZKcnqJEfVWldOOH5YknclGU1yTq31Y40XMU7n\nAgAAWtLtdqe1TeLQJHNrrYuTHJ9k6TrHlyY5IMleSd5eStm08QsbJ1wAAEBbuqPT2zZuryTLkqTW\nuiLJruscfzDJE5M8bm0VTV7SRMIFAAC0pjvNbaMWJrlnwv6aUsrE7/mnJfl+kmuTXFhrXfWoL2MD\nhAsAAGhLtzu9beNWJVkwYX+k1jqaJKWUbZIck2TbJNsl2aqU8rIeXNnYB/dqYAAAYB29mRa1PMlB\nSVJKWZSxDsVa85KsSfJArbWb5PaMTZHqCXeLAgCA1vRkucMFSQ4spSwf3z+ylHJ4kvm11rNLKecl\nuayUcn+Snyb5ZC+KSJLOFFafPxrdrL6zl+PDH/jc57+Uk957av7nicfn5YcdvMH3/frXd2Xx/gfn\nwP33zelL3/fw6yt/fmM+ce5nsuKKK3Pb7Xdkk002yXZP2yYHvnDfvPZVr8j8xz++jctgtpq3eZLk\npE6nz4XA+u2yZEkO/uhH85WjjspV55zT73IgSXLS2PfZgfiHc/T686f15XvkmS8fiOvTuWCoXPPD\nH+XUvzsjnSl8MfvmpZen0+lk370XP/zaV//54hz37lPy0ENr8pjHbJJtn7ZNfvvb+/OT627Ij35y\nXb584bKc+/HTs9WWW/TyMgBmpKfuumsO/OAHp3JbTGBDhvz3x5oLhsaKK67MG958bO6777dTev83\nv315kmSfvRYlSW66+d8fDhaHHvJfctk3/in/7/xP5V8vOj9f/Nw5ecb22+XnN96Ut77jPT27BoCZ\nart9982rly3L3AULJn8zsBGj09wGg3DBwHvwwQdz+kfPzuve+Jasuvc3UzpndHQ0l33nuynP/JNs\nucWTkiTnfeb/5sEHH8oO5Zl538nvyhPmz3/4/c9+1jPy90vflzlzRvKDa36YK39w7YaGBhgqcx77\n2Ox34ol5zb/8S+Zttlm/y4HB15u7Rc0YwgUD7Rc33ZwXHfLKnHHmOemkk7cevSRPfcqTJz3vqqt/\nmFX3/ib77r3Hw69993tXpdPp5MUv2n+906q2327bbL/dtkmSa//tR81dBMAM9cTtt8/fXH999j3h\nhKTbzcXvfnfuvvHGfpcFzGDWXDDQbr3tjtx2+x3Zeacdc8Lxx2aHZz8r/3j+lyc975vfviydTid7\n7/kf4eLdx701N//yljx3xz/d4Hlr5xmP/m5w2pMA07Vw662z4I//ODdddlkuOvro3Hr11dllyZJ+\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d403290>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1), )\n",
"upstream_densities = (0.5,0.75)\n",
"downstream_velocities = (0,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 5\n",
"Three belts; multiple outputs blocked."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nyatqrfdPPH5Nkoe2dK7OBRusWrU6F31yYU5YcFIOOuzYHHnsiTn1rHflXxZ/s9+lwazzd9d+KS94\n8Uvz+euu73cpMKscesYZef+6dTnklFP6XQrDajA6F39Ra31+rfVPJwWL/Wuta2ute27pRJ0LkiQ/\n/emqvPX0c3LbHXfmGc94Rn75+QdmxYonc8s3b83ib3wrZ595as4+8239LhNmhdvuuDMf/auPp9Pp\n9LsUmFX2nj8/x3/kI+kO+aVC6bMZ3Lkopeyb8TUWf1JKuXXi62Q8M9yQ5AVTvYZwQZLkA3/2sdx2\nx5351ReWfPKv/zx77rF7kuQr/3Bz/vh9H8zHL/1UDj3kRXnJEfP7XCkMtyW3fie//4d/nKee+olw\nAS064OUvzxu/8IWMzpkjXNBbM/vv1weSvCLJ3kn+ZdLja5NsVStduCAPPPhQ/v6Gm7PddiP52Ife\nvyFYJMlvvvo38sN7788nL78qF19yhXABPbJmzZpcesU1uWTh1Rkb8ru3wkyy3Q475OjzzsvR55+f\nzojZ4rRgBv8bX2t9W5KUUv5HrfXPp/MawgX58vU3Zd26sRx6yIty4AH7/8Lx33nDgnzy8qvyne/d\nnmXLH81ee+7RhypheN3/wIN5y2nnZNnyR7P9dtvlnWefns9+/st5ZNnyfpcGQ22XAw/MyV/9aubO\nm5extWuz6D3vyaFnnJFn77dfv0tjmHVn9LSoM2qtlyXZsZTyvo2P11r/ZKrXENHJd79/RzqdTg49\n5OBNHt9zj92z93P2SpJ869vfbbM0mBWWLX8syx99LIccfFCu/fTCvP3Ut/S7JJgV5s6blzn77JMH\nbrkllx9+eL7+4Q/3uyRmg7Hu9LZ2dDb6euNtSjoX5P4HHkyS7Dtvn80+Z5+9n5NHli3Pvfc90FZZ\nMGvstefuufTij+WYlx7Z71JgVln54IP5zKtfnXtuvrnfpTCbzOA1F7XWSye+/GCSE2utXyml/FKS\n30xy5da8hnBBHv/RE0mSXXfdebPP2WXnuUmSJ1asaKUmmE3223de9tt3Xr/LgFnniaVL88TSpf0u\nA2aiy5Jsl+QrE/uvTHJ4kjOnOlG4IKtWrU6SjO6ww2afMzo6mm63u+G5zEyPPvpYTj7zzVm0aFFW\nr/b/Ctr0c+NvK8/ZLslzkyxIslPvSgNmkhm85mKSw2qtByVJrfU/kryplHLb1pxozQUZcXWMoXHy\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d1a0a90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1),\n",
" (2,1,2)\n",
" )\n",
"upstream_densities = (1,0,0)\n",
"downstream_velocities = (0,0,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 6\n",
"If there is no path to an unblocked outflow, the inflow will stop completely."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nXQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d721a10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1), )\n",
"upstream_densities = (1,0,0)\n",
"downstream_velocities = (0,0,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 7\n",
"Here's a more complicated 3-belt example."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nBwlxX+per8CKAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d1a96d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1),\n",
" (2,1,2),\n",
" (3,0,1)\n",
" )\n",
"upstream_densities = (1,1,1)\n",
"downstream_velocities = (1,0,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 8\n",
"This is a unversally throughput-unlimited balancer for 3 belts. It uses 5 junctions, which seems to be the minimum number possible."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAE5CAYAAADiGd1TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmUHGW5+PFvTwIziAmRJYCGxQi+oBcCQiCEhE1QE+Aa\n8KKgoglLACVHyD3+EERZvLJcId4roAQiCXhwgysuMQleZRGSEED2i7xJiCAIJDEsAbLT/fujZ8IQ\nZunpVFV39Xw/59TJdFdVz1M8VE8//bxvVaFUKiFJkiRJG6up1gFIkiRJagwWF5IkSZISYXEhSZIk\nKREWF5IkSZISYXEhSZIkKREWF5IkSZISYXEhSZIkNYAQwv4hhDs7eP7oEML9IYTZIYRT0ozB4kKS\nJEnKuRDC14HrgeYNnu8LTAIOBw4BxocQtkkrDosLSZIkKf8WAsd08PzuwIIY4/IY41rgXuCgtIKw\nuJAkSZJyLsZ4G7Cug1X9gdfaPX4d2CKtOPqm9cKtSim/viRJkgRQqHUAFVm1rLrPxy1bVXt8yykX\nGG36Aa9W+VrdSru4gFXLUv8VSkHLVuV/zV/+mLt8M3/5Zv7yy9zlW1v+ciH17943LEL+CuwSQhgA\nrKA8JOp7af3y9IsLSZIkSWWl1IuLEkAI4QRg8xjjlBDCROAPlAuPKTHGF9P65YVSugdY8huAnPIb\nnPwyd/lm/vLN/OWXucu3cv7yMSxq5dLqPnxvtk0ujs/OhSRJkpSZxp6SbHEhSZIkZaVUrHUEqbK4\nkCRJkjJj50KSJElSEtKf0F1TFheSJElSZiwuJEmSJCXBzoUkSZKkZFhcSJIkSUqCnQtJkiRJybC4\nkCRJkpQE73MhSZIkKRmN3bloqnUAkiRJkhqDnQtJkiQpK07oliRJkpQMiwtJkiRJCShV2bkoJBxH\nWiwuJEmSpMzYuZAkSZKUCIsLSZIkSUlwQrckSZKkZHgTPUmSJElJsHMhSZIkKRkWF5IkSZKSYOdC\nkiRJUjIau7hoqnUAkiRJkhqDnQtJkiQpKw6LkiRJkpQMiwtJkiRJSbBzIUmSJCkZ3kRPkiRJUhLs\nXEiSJElKhsWFJEmSpCTYuZAkSZKUjMYuLryJ3kb6+S2/Zre9DuTW26bXOhT1kLnLN/OXb+Yvv8xd\nvpm/OlAqVbfkhJ2LjfDYE0/yvf+6hkKhUOtQ1EPmLt/MX76Zv/wyd/lm/upFY18tys5FleY98BCn\nfmUib765otahqIfMXb6Zv3wzf/ll7vLN/NUROxdqb82aNUz+8U1cO+VGisX8JFrmLu/MX76Zv/wy\nd/lm/pQ1Oxc98PfnnucTR3+OayZPpUCBs84cz/u3367WYakC5i7fzF++mb/8Mnf5Zv7qVIN3Liwu\neuClxUtZvGQpew/Zg1tunsJpJ3+p1iGpQuYu38xfvpm//DJ3+Wb+6lWxyiUfHBbVA9ttuw2Tr76C\ngw4cVutQ1EPmLt/MX76Zv/wyd/lm/upUjroQ1bC46IEddxjEjjsMqnUYqoK5yzfzl2/mL7/MXb6Z\nv3rV2MWFw6L0LkuWLGX06NG0tLRQ2GzrdywtAz7A6DHHs2TJ0lqHKTWcrs49zz8pPZ57ylSpWN2S\nExUXFyEEC5FeYuz4CcycOZPVq1e/a93q1auZefsfGTt+Qg0ikxpbV+ceeP5JafHcU6YafEJ3l8Oi\nQgiDgUnAvsC61gLjceDsGOP8DOJTDcyd90C329xx1z0ZRCL1LpWce+D5JyXNc0/Zyk+hUI3uuhFT\ngEtjjINijDvHGHcEvgNMTT801coB+w/tdpvOvt2RVL1Kzj3w/JOS5rmnTPXyYVEtMcZ57Z+IMd6X\nYjyqA9Ouu4pRo0bR3Nxc61CkXsVzT6oNzz1lqjcPiwIeDSHcAMwCXgP6AaOBx9IOTLUzcOA2zJgx\no/xg1TIACpttXcOIpN6ho3MPPP+ktHnuKVv5KRSq0V1x8RVgDDAC6A8sB6YDt6UclyRJktR4cjTE\nqRpdFhcxxhLlQsJiQpIkSVKXvImeJEmSlJnkh0WFEArAD4EhwCrglBjjonbrjwHOA4rA1BjjtYkH\n0cp7V0iSJEkZKZVKVS3dGAM0xxiHA+dSvpVEe5OAwylPdfj3EMIWiR9YKzsXG+mOmf9T6xBUJXOX\nb+Yv38xffpm7fDN/dSCdORcjKF+AiRjjvBDCvhusXwO8j7fbJqnNKrdzIUmSJGWmVOXSpf6Ur+za\npu3m122uBP5C+WbY02OMyzf6MDphcSFJkiRlJZ37XCynfMuINk0xxiJACGEHYAKwE7AzsG0I4TMp\nHFn5F6f1wpIkSZI2kM4dumdTvhcdIYRhlDsUbVqAdcDq1ivBLqE8RCoVzrmQJEmSMpPKdIfbgCNC\nCLNbH48LIZwAbB5jnBJCuAmYE0JYCTwNTEsjCLC4kCRJkrLT/RCnHmvtSJyxwdPz263/PvD9xH9x\nBywuJEmSpKykUFzUE4sLSZIkKTOpXIq2blhcSJIkSVlp8M6FV4uSJEmSlAg7F5IkSVJmGrtzYXEh\nSZIkZaX7e1bkmsWFJEmSlJUGn3NhcSFJkiRlxuJCkiRJUhIcFiVJkiQpEQ6LkiRJkpQMiwtJkiRJ\nSbBzIUmSJCkRFheSJEmSEtHgxUVTrQOQJEmS1BjsXEiSJElZsXMhSZIkSd2zcyFJkiRlpcE7FxYX\nkiRJUlYsLiRJkiQlw+JCkiRJUhLsXEiSJElKRGPXFhYXkiRJUmbsXEiSJElKhMWFJEmSpGRYXEiS\nJElKgp0LSZIkSYlo7NrC4kKSJEnKTIN3LppqHYAkSZKkxmDnQpIkScpKg3cuLC4kSZKkzFhcSJIk\nSUqCnYuN1LJV6r9CKeoqf+a2vpmffOsuf+a3vpmf/PLcU9osLiRJkiQlorFriwyKi1XLUv8VSkHb\nNzNd5c/c1qdKcqf61Zq/t77/hS436269aqPP2TeXf/D8y59K3zvNbX3KVUepsasLOxeSJElSVhwW\nJUmSJCkRFheSJEmSEmFxIUmSJCkRjV1bWFxIkiRJ2Wns6qKp1gFIkiRJagx2LiRJkqSsOOdCkiRJ\nUiIsLiRJkiQlwuJCkiRJUiIau7awuJAkSZIyUyrWOoJUWVxIkiRJWXFYlCRJkqREWFxIkiRJSkQx\n+WFRIYQC8ENgCLAKOCXGuKjd+qHAla0P/wF8Kca4NvFA8CZ6kiRJUnZKpeqWro0BmmOMw4FzgUkb\nrL8OGBtjPAj4E/DBxI+rlcWFJEmSlJViqbqlayOAWQAxxnnAvm0rQggfBpYBE0MIdwEDYozz0zk4\niwtJkiQpO6VidUvX+gOvtXu8LoTQ9jl/a+AA4AfA4cDhIYRDkj6sNhYXkiRJUr4tB/q1e9wUY2yr\nSJYBC2OM82OM6yh3OPbd8AWSYnEhSZIkZSWdYVGzgdEAIYRhwOPt1i0C3htCGNz6eCTwf0kfVhuv\nFiVJkiRlJZ1L0d4GHBFCmN36eFwI4QRg8xjjlBDCycDPQggAc2KMM9MIAiwuJEmSpOykcCnaGGMJ\nOGODp+e3W38XsH/iv7gDFheSJElSVryJniRJkqREWFxIkiRJSkQKw6LqicWFJEmSlBU7F5IkSZIS\n0f1lZXPN4kKSJEnKSvd32841iwtJkiQpIyU7F5IkSZIS0eBzLppqHYAkSZKk+hFCuCaEMLSafe1c\nSJIkSVnJx6Vo5wGXhRAGAjcBP4kxvlTJjnYuJEmSpKyUStUtGYox3hRj/DgwGigAc0II00MIY7rb\n1+JCkiRJykoOiguAEMIHgbGty0LgV8BnQwg3dbWfw6IkSZKkrORgWFQIYTawLXAj8KkY499bn78J\n+EdX+9q52Eg/v+XX7LbXgdx62/Rah6IeMnf1qdK8vPzyK+y214FMmHjeO55f9MyznH/RpRxx1HHs\nud8hfGz44Rx7/Dh+dP003lyxIs3Q1QOFPQ6j6ayfUPjowbUORT3ke2e+mb86kI/OxZUxxl1ijN9p\nV1jsFGNcF2Pctqsd7VxshMeeeJLv/dc1FAqFWoeiHjJ39aknebn73rkUCgUOHjl8/XMz/3AH55x/\nMWvXrmOTTfqy0447sGLFSp6av5Ann5rPb6bP4sbrr2LbgdukeRjqzraDKYw8ARr7aowNyffOfDN/\ndaKOOxchhB0oz7G4OITwQOvPUK4ZZgC7dfcadi6qNO+Bhzj1KxN5802/Cc0bc1efepqXu++ZC8BB\nI4YB8NzzL6wvLMYcPYo5d/6e3936E/4041Z+9fOp7DJ4Z5559jnO+vq3UjsGVWDQ7jQd8/9g05Za\nR6Ie8r0z38xfHanvzsVFwN3ArsCfW3++G7gdmFnJC9i56KE1a9Yw+cc3ce2UGyk2+B0WG425q0/V\n5KVYLDLnvvsJu36IgdtsDcBNP/0la9as5SO7fZhLLjrvHd/M7fbhXfjBpEs4+jNf5JHHnuChRx7n\nY3vtkcrxqBN9+lIY+q8U9vs0FPxeK09878w381eH6jgPMcaTAEII58QYL6/mNXyH74G/P/c8nzj6\nc1wzeSoFCpx15njev/12tQ5LFTB39anavDz86BMsf/0NDh55wPrn7n/wYQqFAp/6xGEdtvwH77wT\ng3feCYDH/+/J5A5C3dtiIE1jr6Qw7BgASnNugeX/rHFQqoTvnflm/upUqVjdkoEQwvjWH1tCCN/e\ncKnkNSwueuClxUtZvGQpew/Zg1tunsJpJ3+p1iGpQuauPlWbl7vvmUOhUGDkgW8XF+efcxaXXHQe\nHz90ZKf7lVrbysW36ne8a0N675bl5YUFFH/2bUoP/LbWEalCvnfmm/mrU8VSdUs2Chv8vOHSLYdF\n9cB2227D5Kuv4KADh9U6FPWQuatP1eblz/fOpX+/975jaNPQffZm6D57d7rPgoWLWLjoGQqFArt8\n6INVx6wqvPEyxV9/D559rNaRqId878w381enanDPikrFGCe3/vhdYHSM8bchhK2BfwWmVvIaFhc9\nsOMOg9hxh0G1DkNVMHf1qZq8LFn6T56av5DRn/w4TU2VNV+LxSIXXXIFUP5jO2y/fXscqzbCa0vK\ni3LH9858M3/aCNcBfYC2VvNhwH7A6d3t6LAovcuSJUsZPXo0LS0tFDbbmsJmW9c6JFWoo9y1X1oG\nfIDRY45nyZKltQ61anffU74E7UEjDuh+41bf/s7lPPjQoxQKBc759wlsskl9fq/SPn99J/50/aJ8\nWPL6qk7Pv0Y49xpZZ++dUirqeM5FO0NjjF8GiDH+M8b4RWB4N/sAFhfqwNjxE5g5cyarV6+udSjq\noe5yt3r1ambe/kfGjp+QcWTJ+XPr/S1GDt+/222LxSLfvPBSbr1tOoVCgRM/fxyfOuKwDKKsjude\nvp30s7md5q8Rzr1G5rmnTNX3nIs2TSGE7dsehBAGAhVVOPX59Z1qau68B7rdprm5OYNI1FOV5A7g\njrvuSTmSdKxbt4659z/I7rvtylZbbdnltitXrmLiN77NnXfPplAo8JkxR3Le17+WUaTVqTR/zX39\nXqge3fds91fAyuu51+gqPvf826ck1PGci3a+CzwcQriX8kTu/YCK/oj6F0rvcsD+Q7vd5rBDOr8i\nj2qnktwBuf127i8PP8Ybb7zJISO77swuXrKUz489fX1hMfbE4/mPC87NKMrqVZq/Q3fZNuVIVI1h\nO3U/jCav516jq/Tc82+fEpGDzkWM8afAx4CfAdOA/WKMv6pk3y6LixDCnSGEORssc0MIczY6atWt\nadddxahRozr8hqa5uZlRnzycadddVYPI1J2uctcI7mq9BO1BB3Y+3yIueJrPnTiev8YF9OnTxPnn\nnM05E8/MMMrqdZe/5r5NfGq37bnhhMrnmyg7N5xwQEOff42s23PPv31KUKlUqmrJUgjhPZQ7FecB\n3wG+HkLYvJJ9uxsW9Q3geuAYYN3GBKn8GDhwG2bMmFF+sGpZbYNRj3SWu0aZmHjv7PsYsEV/huz5\n0Q7XL3z6b4w9dQKvvPoam7W0MOnyizn04AMzjrJ67fP31ve/UONo1FMD+7UwY8b/lB+0nn+Ncu41\nOv/uKVO5GBXF1cAKYBzlYVGnAtcCJ3a3Y5fFRYxxXgjhJ8CeMcbbEghUkqry4kuLWfD03zh69Cc6\nXL98+euc+tWJvPLqa2zRvx/XXX1lp0WIJEk1k485F/vEGIe0e3xmCOHJSnbsdkJ3jPF7VYclSQlp\nuwTtwSM7HhJ02ZVX8eJLS+jTp4lJl19sYSFJqkvZX1W2Kk0hhAExxlcBQggDqHAUk1eLkpQLd90z\nh6amAiOGv/tOs0v/uYzfTp8FlMdGXzN5KtdM7vxGov92zFEc++kjU4tVkqRO5aNzMQl4IITwW8rD\noo4GLq1kR4sLSXVvzdq1zHvgIfb4l48wYIv+71r/8COP81axSKFQYOXKVTz86ONdvt7wYZVdGUaS\npKTlobaIMU4NITwAHEz5AlDHxhi7/uPaqpDy7POSE6NyqmWr8r/mL386yF1Hk0pLK7u/Jr9qoDV/\nTujOpz5n31z+oYsJ3Z57dcq/e/lWzl+h1mFUYs13P1vVh+9Nv/nL1I8vhPClrtbHGG/q7jXsXEiS\nJEkCOLSLdSXA4kKSJEmqGxnfEK8nYozj2j8OIbwvxvhKT17D4kKSJEnKSB7mXIQQhgC/AN4TQhgO\n3AV8Nsb4UHf7dnmHbkmSJEkJKpWqW7J1FeWbaC+LMT4PnE75JnrdsriQJEmSMpKP2oL3xBj/2vYg\nxvhHoLmSHR0WJUmSJGWljudctPNy69CoEkAI4QvAy5XsaHEhSZIkZSQPcy6AbwJXAx8NIbwKLAC+\nWMmOFheSJElSVvJRXfwQ2Az4DnBjjPG5Snd0zoUkSZKUlVKVS4ZijEOBMZRvTPj7EMJdIYSTK9nX\n4kKSJEnKSKlYqmrJWoxxITAJuAzoB3yjkv0cFiVJkiRlJQejokIIxwInAPsD04EJMcY5lexrcSFJ\nkiRlpJSPORdfAH4CfD7GuLYnO1pcSJIkSVovxviZave1uJAkSZKykovGRfUsLiRJkqSs5OMmelWz\nuJAkSZIyko8pF9WzuJAkSZKykkJ1EUIoUL7x3RBgFXBKjHFRB9tNBpbFGM9LPIhW3udCkiRJykip\nVKpq6cYYoDnGOBw4l/L9Kd4hhHAa8C/JH9E7WVxIkiRJWSlWuXRtBDALIMY4D9i3/coQwgHAUGBy\nMgfROYsLSZIkKSulUnVL1/oDr7V7vC6E0AQQQtgOuAA4EyikckztOOdCkiRJykhKE7qXA/3aPW6K\nMbb1O44DtgJmANsDm4UQnoox3pRGIBYXkiRJUlbSuRTtbOAo4NYQwjDg8bYVMcargKsAQghfBkJa\nhQVYXEiSJEmZSalzcRtwRAhhduvjcSGEE4DNY4xTUvmNnbC4kCRJkrKSQnURYywBZ2zw9PwOtrsx\n8V++AYsLSZIkKSsNfhM9rxYlSZIkKRF2LiRJkqSMlNKZ0F03LC4kSZKkrKQ0o7teWFxIkiRJGbFz\nIUmSJCkRJTsXkiRJkpJQKha73yjHLC4kSZKkrDgsSpIkSVISHBYlSZIkKREOi5IkSZKUCK8WJUmS\nJCkZDouSJEmSlIRG71wUUp5U0tj/9aScKBQK73qu0SeUSfXAc0/K1LtPuDq0+LMjq3oT2PaX9+Ti\n+OxcSJIkSRlxQvfGWrUs9V+hFLRsVf7X/OVPpbkzt/XJcy/fWvN3YQcdizZdrVPtXNjaUTI/+XRh\njjqCjd69tHMhSZIkZaTR51xYXEiSJElZcViUJEmSpCQ4LEqSJElSIhwWJUmSJCkRFheSJEmSklFy\nzoUkSZKkBNi5kCRJkpQIiwtJkiRJiSg1+LCoploHIEmSJKkx2LmQJEmSsuKwKEmSJElJcM6FJEmS\npER4h25JkiRJiSgVG3tCt8WFJEmSlBWHRUmSJElKgsOiJEmSJCXCYVGSJEmSEuHVoiRJkiQlw2FR\nkiRJkpJg50KSJElSIhp9zkVTrQOQJEmS1BjsXEiSJEkZ8VK0kiRJkhLhnAtJkiRJibBzIUmSJCkR\ndi4kSZIkJcLOhSRJkqRE2LmQJEmSlIiinQtJkiRJSbBzIUmSJCkRzrmQJEmSlIhSMfnXDCEUgB8C\nQ4BVwCkxxkXt1p8AfA1YCzweY/xK8lGUNaX1wpIkSZLeqVQqVbV0YwzQHGMcDpwLTGpbEUJoAS4G\nDo4xjgQGhBCOSuv4LC4kSZKkfBsBzAKIMc4D9m23bjUwPMa4uvVxX8rdjVRYXPTAqlWruepHUxg1\n5gT2GHoIww4ZzclnnM2fZ99X69BUAfOXDz+/5dfstteB3Hrb9C63e/nlV9htrwOZMPG8dzy/6Jln\nOf+iSzniqOPYc79D+Njwwzn2+HH86PppvLliRZqh93rmrnfYZ/x4LnjrLfYeN67WoagK5q/2SsVS\nVUs3+gOvtXu8LoTQBBBjLMUYlwKEECYAm8cY/5jKweGci4qtXLmKL586gceeeJJNNtmEXXcZzKuv\nvsac+x5g9tz7OfP0kznz9JNqHaY6Yf7y4bEnnuR7/3UNhUKh223vvncuhUKBg0cOX//czD/cwTnn\nX8zatevYZJO+7LTjDqxYsZKn5i/kyafm85vps7jx+qvYduA2aR5Gr2Tueof377svR/znfzb8hNRG\nZf7qQ0r//ZcD/do9booxrp/d0Ton4z+BXYFj0whg/S9O88UbyUWXXMFjTzzJR3YP/PH3t/Crn93A\nHTP/h8v/41v07dOHaybfwNx5D9Y6THXC/NW/eQ88xKlfmcibb1b2DfXd98wF4KARwwB47vkX1n84\nHXP0KObc+Xt+d+tP+NOMW/nVz6eyy+CdeebZ5zjr699K7Rh6K3PXO+x88MF8cdYsmvv1635j1R3z\nVz+KxVJVSzdmA6MBQgjDgMc3WH8d5TkZY9oNj0qFxUUFnnv+H/xuxu306dPEFZde8I5vzv71yE9y\n6kknUiqVuPraH9cwSnXG/NW3NWvWcNWPpnDS6V9j+etvVLRPsVhkzn33E3b9EAO32RqAm376S9as\nWcvuYVcuueg83rv55uu33+3Du/CDSZfQp08Tjzz2BA89suF7rqph7nqHPptuyiEXXMCJ//u/tAwY\nUOtw1EPmr/6kNKH7NmB1CGE2cCVwdgjhhBDCKSGEvYFxwB4hhDtDCHeEED6d1vE5LKoCv5k+i7fe\nKrLP3nsyeOed3rX++OPG8KPrp/HQI4/z0uIlbLftwBpEqc6Yv/r19+ee50unTOClxUvo26cPZ515\nKr+49Te8+NLiLvd7+NEnWP76G5zw2QPWP3f/gw9TKBT41CcO63BozuCdd2LwzjuxcNEzPP5/T/Kx\nvfZI/Hh6E3PXO7xv8GDG3nkn/QcNorhuHXecfz77jB/PFjvuWOvQVAHzV5/SuIlejLEEnLHB0/Pb\n/ZzZZ347FxV4+NEnKBQK7LP3kA7XbztwG96//XZA+Y+k6ov5q18vLV7K4iVL2XvIHtxy8xROO/lL\nFe139z1zKBQKjDzw7Q+o559zFpdcdB4fP3Rkp/u1ffNTfCuFi4z3Muaud+g/aBD9PvABnpszh+v3\n2497L7us1iGpB8xffUqpc1E37FxU4O/PPQ/ADoM+0Ok2H3j/9rz40mKeefa5rMJShcxf/dpu222Y\nfPUVHHTgsB7t9+d759K/33vf8Q320H32Zug+e3e6z4KFi1i46BkKhQK7fOiDVcesMnPXOyx//nl+\neuSRLLz99lqHoiqYv/qURueinlhcVGDZy68AsOWWnY9VfN+A/gC88uqrmcSkypm/+rXjDoPYcYdB\nPdpnydJ/8tT8hYz+5Mdpaqqs+VosFrnokiuA8ofiYfvt280e6o656x1eWbSIVxYt6n5D1SXzV5/y\n1IWohsOiKrBqVXlSffOmm3a6TXNzM6VSaf22qh+9KX9Llixl9OjRtLS0UNhs6/VLI7n7nvJlTA8a\ncUD3G7f69ncu58GHHqVQKHDOv09gk038XqUWGj137c+/i4CLah2QpLqU0n0u6kaPi4sQQnMagdSz\nSr9hU33qTfkbO34CM2fOZPXqfBdJXflz6z0SRg7fv9tti8Ui37zwUm69bTqFQoETP38cnzrisAyi\nVEcaPXe94fyTtPF67ZyLEMLRwNXAWuCbMcZftK6aCdT3O3zCNn/PZix//Q1Wr1nT6TarV6+mUCiw\nWUtLhpGpEr0pf3PnPVDRds3N+fyOYN26dcy9/0F2321Xttpqyy63XblyFRO/8W3uvHs2hUKBz4w5\nkvO+/rWMItWGekPuKjn/+mQQh6T6VsE9K3Ktq690vwnsBewPnBZC+HLr893ffrXBDGi9LvSrr77W\n6TavtK7bcsv3ZRKTKteb8nfA/kMr2u6wQzq/Kk89+8vDj/HGG29ySLs7O3dk8ZKlfH7s6es/nI49\n8Xj+44JzM4pSHekNuavk/HM6uqRG11VxsSbG+EqMcRnwaeDMEMKhQGOXWx340ODyvRH+8cJLnW7z\njxdeBOCDO+2QSUyqXG/K37TrrmLUqFGddiaam5sZ9cnDmXbdVRlHloy7Wi9jetCBnY/Zjwue5nMn\njuevcQF9+jRx/jlnc87EMzOMUh3pDbnr6vzrA+wCjMk8Kkn1ptcOiwKeCSFMAr4VY3w9hHAscDvQ\n627vOGSPj3LHXffyyKMd3xl28eKlvPDiYgqFAnt7c6e605vyN3DgNsyYMaP8YNWy2gaTgntn38eA\nLfozZM+Pdrh+4dN/Y+ypE3jl1dfYrKWFSZdfzKEHH5hxlOpIb8hd+/Pvwg5uBihJ0PiXou2qc3ES\n8BitnYoY43PAocAvM4irrrRNIrz/wYc7vA/CT2/5FQD77bv3+puxqX6Yv8bw4kuLWfD03xjRyWTg\n5ctf59SvTuSVV19ji/79mHbdD3L34bRRmTtJelujdy46LS5ijOtijNNijCvaPbc4xnhWNqHVj512\nHMRRo45g3VtvcebZ31h/UzaA30yfxY+n3kyhUOCMU8fWLkh1yvw1hrbLmB48suNhNZddeRUvvrSE\nPn2amHT5xZ1+Q67smTtJelujX4q2fi8YXmfO/8ZEFjz9N+YveJpRY07gw7t8iNeWv84LL75EoVDg\n7AmnMWw2O5oPAAAF3klEQVS/fWodpjph/vLvrnvm0NRUYMTwd98Reuk/l/Hb6bOA8rySayZP5ZrJ\nUzt9rX875iiO/fSRqcWqdzJ3kvS2PHUhqmFxUaEBW/TnFzddx5RpNzPrD39i0TPP0rdvX/Yf+jFO\n/PxxHH7oQbUOUV0wf/m2Zu1a5j3wEHv8y0cYsEX/d61/+JHHeatYpFAosHLlKh7uZH5Nm+HDKruq\nljaeuZOkd8pTF6IahZSrp1IjTirtFVq2Kv9r/vLH3OWb+cu31vw5oTt/Lmz9PGTu8qk1f7lI3qxN\n+1b14ftTa9bl4vjsXEiSJEkZafSb6FlcSJIkSRlxzoUkSZKkRDT6nAuLC0mSJCkjjV1adH0TPUmS\nJEmqmJ0LSZIkKSPFWgeQMosLSZIkKSMWF5IkSZIS0ehzLiwuJEmSpIzYuZAkSZKUCIsLSZIkSYlw\nWJQkSZKkRNi5kCRJkpQIOxeSJEmSEmHnQpIkSVIiLC4kSZIkJaLRh0U11ToASZIkSY3BzoUkSZKU\nEYdFSZIkSUqExYUkSZKkRDT6nAuLC0mSJCkjdi4kSZIkJcLiQpIkSVIiHBYlSZIkKRF2LiRJkiQl\nws6FJEmSpETYuZAkSZKUCIsLSZIkSYlwWJQkSZKkRDR656Kp1gFIkiRJagx2LiRJkqSMNHrnwuJC\nkiRJyohzLiRJkiQlws6FJEmSpETYuZAkSZKUiDQ6FyGEAvBDYAiwCjglxrio3fqjgW8Ba4GpMcYp\nKYQBeLUoSZIkKTPFKpdujAGaY4zDgXOBSW0rQgh9Wx8fDhwCjA8hbJPQ4byLxYUkSZKUkVKVSzdG\nALMAYozzgH3brdsdWBBjXB5jXAvcCxyUyMF0IP1hUS1bpf4rlCLzl1/mLt/MX65dWGr0UdWNy9wp\nbSlN6O4PvNbu8boQQlOMsdjButeBLdIJI/3iopDy60uSJEm5cWGplMbn4+VAv3aP2wqLtnX9263r\nB7yaQgzlX5zWC0uSJEnKxGxgNEAIYRjweLt1fwV2CSEMCCFsSnlI1Ny0AimUbP9JkiRJudXualF7\ntj41DtgH2DzGOCWEcCRwAeVRRT+OMV6bViwWF5IkSZIS4bAoSZIkSYmwuJAkSZKUCIsLSZIkSYmw\nuJAkSZKUiPRvoteA2s3IHwKsAk6JMS6qbVTqiRDC/sBlMcZDax2LKhdC6AvcAOwMbAp8N8b4u5oG\npYqEEJqA64FA+R5Sp8cYn6xtVOqpEMJA4EHg8Bjj/FrHo8qFEP7C2zdS+1uM8eRaxqPGZXFRnTFA\nc4xxeOuH1EmtzykHQghfB04E3qh1LOqxLwL/jDF+KYTwPuARwOIiH44GSjHGESGEg4FL8H0zV1qL\n+2uBFbWORT0TQmgGiDEeVutY1PgcFlWdEcAsgBjjPGDf2oajHloIHFPrIFSVXwLfav25CVhbw1jU\nAzHG3wDjWx/uDLxSu2hUpSuAHwEv1DoQ9dgQYPMQwu0hhD+2fjEqpcLiojr9ebu1CLCuteWvHIgx\n3gasq3Uc6rkY44oY45shhH7ALcA3ax2TKhdjLIYQpgL/Ddxc63hUuRDCWGBJjPF/Kd+ES/myAvhe\njPGTwBnAzX5uUVr8H6s6y4F+7R43xRiLtQpG6k1CCDsAdwA3xhh/Uet41DMxxnHAh4EpIYTNah2P\nKjYOOCKEcCewF3BT6/wL5cN8Wgv6GOMCYBmwfU0jUsNyzkV1ZgNHAbeGEIYBj9c4HlXHb99yJoSw\nLXA78NUY4521jkeVCyGcCAyKMV5K+UIYb1Ge2K0ciDEe3PZza4FxWoxxSQ1DUs+MA/YEvhpCeD/l\nL0hfrG1IalQWF9W5jfI3OLNbH4+rZTCqWqnWAajHzgUGAN8KIXybcg5HxRhX1zYsVeBWYFoI4W7K\nf3u+Zt5yy/fO/PkxcEMI4c+U83eSIy6UlkKp5HuEJEmSpI3nnAtJkiRJibC4kCRJkpQIiwtJkiRJ\nibC4kCRJkpQIiwtJkiRJibC4kCRJkpQIiwtJkiRJifj/TdpQ4/K1HREAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d4a2a10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1),\n",
" (2,1,2),\n",
" (3,0,1),\n",
" (4,1,2),\n",
" (5,0,1)\n",
" )\n",
"upstream_densities = (1,1,0)\n",
"downstream_velocities = (1,1,0)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The code in the next cell tests the throughput for the setup above on every possible relevant combination of inflows and outflows, demonstrating the universally throughput-unlimited condition."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"for upstream_densities in ( (1,1,0), (1,0,1), (0,1,1), (1,0,0), (0,1,0), (0,0,1)):\n",
" for downstream_velocities in ( (1,1,0), (1,0,1), (0,1,1), (1,0,0), (0,1,0), (0,0,1) ):\n",
" if sum(upstream_densities) == sum(downstream_velocities):\n",
" rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
" if rho[-1] != [1,1,1]:\n",
" plt.figure()\n",
" plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Can we remove the last junction? The example below shows that the answer is no -- the full throughput is not achieved (in at least 1 case) if we remove it."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAE5CAYAAADiGd1TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm8XePZ8PHfPgnnoAmqktQY461Vghgik7mVoA0eVSkV\nY7V4KunjRdAYimrRvtWqISX0LdUg5CGGEolMgkoNVTcRQshAZJI5zn7/2OfESXKmHGuvPZzf9/PZ\nH2fvtdbe13aurLOvfd33ujPZbBZJkiRJ+rIqCh2AJEmSpPJgcSFJkiQpERYXkiRJkhJhcSFJkiQp\nERYXkiRJkhJhcSFJkiQpERYXkiRJUhkIIRwQQni2nsePCSG8EEKYEEI4M58xWFxIkiRJJS6EcCFw\nB1C51uNtgZuAw4GDgbNDCFvmKw6LC0mSJKn0TQWOrefxbwBvxxgXxhhXAuOB3vkKwuJCkiRJKnEx\nxhHAqno2tQcW1Lm/CNg0X3G0zdcT18jm+fklSZIkgEyhA2iWZXNb9vm4aouWvr+F5AqMWu2A+S18\nriblu7ig+t/D8v0SKiEVuw8A4PPf/rCwgaiotBn4V8C80Jpq8+KKTGl8XlA6rsjmPpeZF6qrNi9K\nQ95jXfsfx3+AnUMImwFLyA2J+k2+XjzvxYUkSZKkGvkvhLIAIYSTgE1ijENDCIOAp8gVHkNjjDPz\n9eIWF5IkSVIZiDFOB7rX/HxfnccfAx5LIwaLC0mSJCk1pTSEa/1ZXEiSJElpyVYXOoK8sriQJEmS\nUmPnQpIkSVISSurKVuvP4kKSJElKjcWFJEmSpCTYuZAkSZKUDIsLSZIkSUmwcyFJkiQpGRYXkiRJ\nkpLgOheSJEmSklHenYuKQgcgSZIkqTzYuZAkSZLS4oRuSZIkScmwuJAkSZKUgGwLOxeZhOPIF4sL\nSZIkKTV2LiRJkiQlwuJCkiRJUhKc0C1JkiQpGS6iJ0mSJCkJdi4kSZIkJcPiQpIkSVIS7FxIkiRJ\nSkZ5FxcVhQ5AkiRJUnmwcyFJkiSlxWFRkiRJkpJhcSFJkiQpCXYuJEmSJCXDRfQkSZIkJcHOhSRJ\nkqRkWFxIkiRJSoKdC0mSJEnJKO/iwkX0UnT/k1P45vHX8eAzrxQ6FBWRzB6HUnHBX8jsflChQ1ER\nMS9Un65nn82Qzz9n79NOK3QoKiLmRYnJZlt2KxF2LlLy2tsfccNfniWTyRQ6FBWTjjuS6XVSuX+J\nofVlXqgeW+27L0f8+tdkS+hDhvLPvChFXi1KX9ILr0/nv3/9EIuXLre40Be2+QYVR/8MNqzyQ6S+\nYF6oHp0POojvP/ggle3a+SFSq5kXJarMf1cWF3m0YuUqbn9wErc9OJHqMk8krYc2bcns910y+38P\nMo5MVA3zQvVos+GG9LrkEnpdeimZCvNCOeaFipkZmSfvz5rHkefexi3Dx5PJwM9O6s1WW25a6LBU\naJt2oGLAjWS6HQtAduJwWPhJgYNSwZkXqsfmO+7If7/9Ngf94heQzTL6ssuYP316ocNSgZkXZaDM\n51xYXOTJrLmLmP3pIvYO23D/9QM4+/juhQ5JxeArX83dPnqb6vt+QfbFkYWOSMXAvFA92m+zDe22\n3poPJk7kjv33Z/yvflXokFQEzItyUN3CW2lwWFSedNqiHbcOPoFe++xU6FBUTD77lOqHfwPTXy10\nJCom5oXqsXDGDO496iimPvlkoUNRETEvykAJdSFawuIiT7brtDnbddq80GGo2CyYk7tJdZkXqse8\nadOYN21aocNQkTEvyoHFhZSIOXMXcnrfvowePZrly5fXu09l2woO2bkjd550IB3aVaUcoaRiMWfR\nMs6oPV80sE8bYAegH7BJeqFJ0peTLZ0hTi3R7DkXIQTnZ+hLOe2yoTz++OMNFhYAy1dV88SbMzn9\nvkkpRiap2Jx+36QmzxefA1OBh1OLSpISUOYTuhvtXIQQdgRuAvYFVtUUGK8BA2OMb6UQn8rI86+8\n0+x9n506O4+RSCp2z09v/tWy3s1jHJKUvNIpFFqiqW7EUOC6GOM2McbOMcbtgKuBu/IfmspNty7N\nn9y+fFV5twwlNa7b9l9r9r6f5zEOSUpctrpltxLRVHFRFWOcXPeBGOPzeYxHZeyuX55Jnz59qKys\nLHQokorcnScd6PlCUnlqzcOigFdCCHcCTwALgHZAX8DrJWq9ddiiPaNGjQLg89/+cI1tbQfdW4iQ\nJBWpDu2qGDXqQQCuyGTW2HZlIQKSpMSUTqHQEk0VFz8ldyGOnkB7YCHwKDAiz3FJkiRJ5aeEhji1\nRKPFRYwxS66QsJiQJEmS1CjXuZAkSZJSk/ywqBBCBrgF6AIsA86MMU6rs/1YYDBQDdwVY7w18SBq\nuHaFJEmSlJJsNtuiWxP6AZUxxu7AJeSWkqjrJuBwclMdfh5C2DTxN1bDzkWKnr71p4UOQUWo+s6B\nhQ5BRci8UH3+7447FjoEFSHzosTkZ85FT3IXYCLGODmEsO9a21cAm/NF2yRvs8rtXEiSJEmpybbw\n1qj25K7sWqt28etaNwL/JLcY9qMxxoVf+m00wOJCkiRJSkt+1rlYSG7JiFoVMcZqgBDCtsD5wPZA\nZ6BjCOH4PLyz3Avn64klSZIkrSU/K3RPILcWHSGEbuQ6FLWqgFXA8porwc4hN0QqL5xzIUmSJKUm\nL9MdRgBHhBAm1Nw/LYRwErBJjHFoCOEeYGIIYSnwDjAsH0GAxYUkSZKUnqaHOK23mo7ET9Z6+K06\n238L/DbxF66HxYUkSZKUljwUF8XE4kKSJElKTV4uRVs0LC4kSZKktJR558KrRUmSJElKhJ0LSZIk\nKTXl3bmwuJAkSZLS0vSaFSXN4kKSJElKS5nPubC4kCRJklJjcSFJkiQpCQ6LkiRJkpQIh0VJkiRJ\nSobFhSRJkqQk2LmQJEmSlAiLC0mSJEmJKPPioqLQAUiSJEkqD3YuJEmSpLTYuZAkSZKkptm5kCRJ\nktJS5p0LiwtJkiQpLRYXkiRJkpJhcSFJkiQpCXYuJEmSJCWivGsLiwtJkiQpNXYuJEmSJCXC4kKS\nJElSMiwuJEmSJCXBzoUkSZKkRJR3bWFxIUmSJKWmzDsXFYUOQJIkSVJ5sHMhSZIkpaXMOxcWF5Ik\nSVJqLC4kSZIkJaHMOxeZbH7fYHn/31NiMpnMOo/lOTcllSjPF5IasO7JoQhVT7ipRSesih6DSuL9\n2bmQJEmS0lLm34Xkvbio/vewfL+ESkjF7gNyPyyb2/TOzdlH5aFqi9x//Z2rrvXJC3On9fB8ofrU\n5kVJKO/qws6FJEmSlJYyH8ZpcSFJkiSlxeJCkiRJUiIsLiRJkiQlorxrC4sLSZIkKT3lXV1UFDoA\nSZIkSeXBzoUkSZKUFudcSJIkSUqExYUkSZKkRFhcSJIkSUpEedcWFheSJElSarLVhY4grywuJEmS\npLQ4LEqSJElSIiwuJEmSJCWiOvlhUSGEDHAL0AVYBpwZY5xWZ/t+wI01dz8EfhRjXJl4ILiIniRJ\nkpSebLZlt8b1AypjjN2BS4Cb1tp+OzAgxtgbeAbYIfH3VcPiQpIkSUpLdbZlt8b1BJ4AiDFOBvat\n3RBC2BWYCwwKIYwBNosxvpWfN2dxIUmSJKUnW92yW+PaAwvq3F8VQqj9nP814EDg98DhwOEhhIOT\nflu1LC4kSZKk0rYQaFfnfkWMsbYimQtMjTG+FWNcRa7Dse/aT5AUiwtJkiQpLfkZFjUB6AsQQugG\nvFZn2zTgKyGEHWvu9wL+nfTbquXVoiRJkqS05OdStCOAI0IIE2runxZCOAnYJMY4NIRwBnBfCAFg\nYozx8XwEARYXkiRJUnrycCnaGGMW+MlaD79VZ/sY4IDEX7geFheSJElSWlxET5IkSVIiLC4kSZIk\nJSIPw6KKicWFJEmSlBY7F5IkSZIS0fRlZUuaxYUkSZKUlqZX2y5pFheSJElSSrJ2LiRJkiQloszn\nXFQUOgBJkiRJxSOE8McQwn4tOdbOhSRJkpSW0rgU7WTgVyGEDsA9wF9ijLOac6CdC0mSJCkt2WzL\nbimKMd4TYzwM6AtkgIkhhEdDCP2aOtbiQpIkSUpLCRQXACGEHYABNbepwEPA90MI9zR2nMOiJEmS\npLSUwLCoEMIEoCNwN3BkjPH9msfvAT5s7Fg7Fym6/8kpfPP463jwmVcKHYqKyN+GP8xue/XggRGP\nFjoU5Vlzf9effjqP3fbqwfmDBq/x+LT3pnPZlddxxNEnsOf+B7NP98M57gen8ac7hrF4yZJ8hq4i\n4fmifE1/fwaDh1zLIUcey7f2PYiehx3DuRdczMTnX2z0uIbOF2tbvGQJh/Y5jt326sGL/5ySZOha\nX6XRubgxxrhzjPHqOoXF9jHGVTHGjo0daOciJa+9/RE3/OVZMplMoUNREXn19Tf4ze/+aF60Auvz\nux47fhKZTIaDenVf/djjT43mosuuYuXKVWywQVu2325blixZyptvTeWNN9/ikUef4O47bqZjhy3z\n+TZUQJ4vyte4Cc9z/qDBLF+xgqqqKnbZaQc+nTef0WPH88yYcZxxan8uHHhuvcfWd76ozzXX/46P\nZs42f4pBEXcuQgjbkptjcVUI4cWanyFXM4wCdmvqOexcpOCF16dz1tX3s3jp8kKHoiIy+cWXOeun\ng1i82G+cy936/q7HjpsEQO+e3QD4YMZHqwuLfsf0YeKzj/G/D/yFZ0Y9wEN/u4udd+zMe9M/4IIL\nL8/be1Bheb4oX/PmL+DnFw9h+YoV9D3ycMY9/Qgj7h/G2Kce5oZrh9CmTQV33nMf/3hmbL3Hr32+\nqM+Y5ybw0COP5SV+tUBxdy6uBMYCuwDP1fw8FngSeLw5T2DnIo9WrFzF7Q9O4rYHJ1Jd5gumqPlW\nrFjBbX++h1uH3k11ma/S2dq15HddXV3NxOdfIOyyEx22/BoA99z7d1asWMk3d9uVa68cvMY3j7vt\nujO/v+lajjn+ZP716uu8/K/X2GevPfLyfpQ+zxflb/hDI1m46DO22frrXHfVpWy4wQartx3V5whe\nfPlf/G34w/xt+AiOOOygNY6t73yxtgULF3L5Vdez0UYbsXTp0ry+FzVTEf9bjjGeDhBCuCjGeH1L\nnsPORZ68P2seR557G7cMH08mAz87qTdbbblpocNSgb3/wQy+fcyJ/PG2u8iQ4YLzzmarr3cqdFjK\ng5b+rqe88joLF33GQb0OXP3YCy9NIZPJcOS3D613SMOOnbdnx87bA/Dav99I7k2ooDxftA7bbL0V\nR/c5gv7fP26NwqJW2GVnAD6cue4SA6vPF70bHhJ15TU38MncTxl0/o+TC1pfTra6ZbcUhBDOrvmx\nKoTwi7VvzXkOi4s8mTV3EbM/XcTeYRvuv34AZx/f+FhItQ6zZn/M7Dkfs3eXPRj+16H8+IwfFTok\n5UlLf9djx00kk8nQq8cXxcVlF13AtVcO5rBDejV4XLamO1r9efGO5dX68XzROvT9zmHccN0VnH5q\n/3q3v/bv/wDQefvt1tm2+nzRvf4hUU/8YzSjnnyG/bruxSn9T0guaH051dmW3dKRWevntW9NclhU\nnnTaoh23Dj6BXvvsVOhQVEQ6ddyS2/5wA717NDw2VuWhpb/r58ZPon27r6wxtGm/rnuzX9e9Gzzm\n7anTmDrtPTKZDDvvtEOLY1Zx8XzRui1a9Bl3//V+RowcRdu2bTnrtJPX2ae+80WtuXM/5YprbmDj\njTfiuqsuTSNkNVcRD5WPMd5W8+M1QN8Y48gQwteA7wJ3Nec5LC7yZLtOm7Ndp80LHYaKzHbbbsN2\n225T6DCUgpb8rud8/AlvvjWVvt85jIqK5jWWq6urufLaG4Dch9Fu+++73rGqOHm+aJ2eenoMv7/l\nDt6f8SErVqxkq693ZMilF9J17z3X2K+p88XlV1/PggULufySQWy91dfTCl/l43agDTCy5v6hwP7A\nOU0d6LAopWbO3IX07duXqqoqMht9bY2bWq85cz5uMC9qb1WbbU3ffj9gzpyPCx1uXo0dl7ukZO+e\nBza9c41fXH09L738CplMhot+fj4bbFAe3xk1lhdqvVrD+eLV19/gnXens3LlKjKZDAsWLmLMcxPW\nWcumsfPFiJGjGD1mPN3270r/7x+XVuhqriKec1HHfjHGUwFijJ/EGE8GmjXG3+JCqTntsqE8/vjj\nLF/uJXn1hQFnn99kXixfvpzHn3yaAWefn2Jk6Xuu5nr1vbof0OS+1dXVXHrFdTww4lEymQyn9D+B\nI484NIUo09GcvFDr0xrOF6f0P4Epk55h3NMjue6qS6mqrOS+v49gwFn/TXWd9REaOl/Mnv0x1/z6\nd2yyycZcc8UlaYev5ijuORe1KkIIq1teIYQOQLMqnPL4iksl4flX3mn2vpWVlXmMRMVk0uTGV5+t\na/SYcXmMpLBWrVrFpBde4hu77cIWW3y10X2XLl3GoIt/wbNjJ5DJZDi+31EMvvBnKUWajvXJC88X\nrUdrOF/ULoRZVVVJv2P60GWP3el34qm8/sabjHzsSfod06fR88XgIdewePESrrj0f7y6WLEq4jkX\ndVwDTAkhjCc3kXt/oFl/aOxcKDXdujR/cvuhBzd8VRyVlwMP2K/Z+5bzt9j/nPIqn322mIObWGV3\n9pyP6T/gnNWFxYBTfsAvh5Tft5PrkxeeL1qP1ni+2KHzdhxxaG59i8kvvgzASy+/Uu/54t6/P8SE\n51/kwP27cuJ/9Us9VjVTCXQuYoz3AvsA9wHDgP1jjA8159hGOxchhGeBtb8SygDZGKPXVtV6ueuX\nZ3L6r55g9OjRDZ70KysrOfTgXgy7/eaUo1OhDLv9ZgacM6jRvGgNxtRcUrJ3j4bnW8S33+HH5/0P\ns2bPoU2bCgZfeAE//MHxKUaZnubkheeL1qcczxeffbaYD2Z8SKdOHdl8s/rXw9p6q05ks1k+mfsp\nAGNrhkStfb54/MnRAEyc/BK77dWjwdc85YzzADj2u329klQBZEugcxFC2Jhcp+JwchO7R4cQLo8x\nLm7q2KaGRV0M3AEcC6z6soGqdeuwRXtGjRqVu7NsbmGDUdHo0GHLBvOiNU3eHT/heTbbtD1d9ty9\n3u1T33mXAWedz7z5C9ioqoqbrr+KQw5q+MNDqWssL9R6leP5ot+JpzLjw5lcOPBczmhgrYsPP8ot\noNepY27I1Ljxk+o9X4Rdd6K6+vMGX+ufU14FYNdddqLdVzZhh+23TeItaH0Vf20B8AdgCXAaucbC\nWcCtwClNHdhocRFjnBxC+AuwZ4xxRAKBSpLWMnPWbN5+512O6fvtercvXLiIs84dxLz5C9i0fTtu\n/8ONDRYhkkpLjwMP4P4HHmb4QyMZcPKJtGnTZo3tMz6cydOjnyOTyXBI757MnDWbqdPeq/d8cdlF\nAxt9rdpuxuUXD2x07RzlWQl0LoCuMcYude6fF0J4ozkHNjnnIsb4GwsLScqf2ktKHtSr/iFRv7rx\nZmbOyg2Fuun6qywspDJy5oD+VFVWMv39GQy6eAjz5i9Yve2N/0TO+MlAlq9YwX5d9+LQg3sy5rmJ\njZ4vVPxK40q0VIQQNqu9U/Nzs0YxebUoSSqwMeMmUlGRoWf3dVdi/viTuYx89AkgN8fgj7fdxR9v\na3iR1P869miO+95ReYtVUrK23WZrfvebqxl40RCeenoMz44dzw6dt2f58uW8N/0DMpkMe+35LX5/\n47VAbr5FQ+cLlYjS6FzcBLwYQhhJbljUMcB1zTnQ4kKSCmjFypVMfvFl9vjWN9ls0/brbJ/yr9f4\nvLqaTCbD0qXLmPLKa40+X/duzb+ajqTicHDvHowcfjdDh93LhEmTmfbudDaqqmTffbrwvaOP5Ljv\nHUWbNm2aPF80RyaTSTh6ra9SqC1ijHeFEF4EDiI30um4GGPjf4BqZPI8Yz1b/e9h+Xx+lZiK3Qfk\nfnCCpuqq2iL332ZM0Mwu/SSNiFQMGsgLtXKeL1SfXF6UROW04prvt+jD94aX/j3v7y+E8KPGtscY\n72nqOexcSJIkSQI4pJFtWcDiQpIkSSoaKS+Itz5ijKfVvR9C2DzGOG99nsPiQpIkSUpJKcy5CCF0\nAe4HNg4hdAfGAN+PMb7c1LFNXopWkiRJUkKy2Zbd0nUzuUW058YYZwDnkFtEr0kWF5IkSVJKSqO2\nYOMY439q78QYnwYqm3Ogw6IkSZKktBTxnIs6Pq0ZGpUFCCH8EPi0OQdaXEiSJEkpKYU5F8ClwB+A\n3UMI84G3gZObc6DFhSRJkpSW0qgubgE2Aq4G7o4xftDcA51zIUmSJKUl28JbimKM+wH9yC1M+FgI\nYUwI4YzmHGtxIUmSJKUkW51t0S1tMcapwE3Ar4B2wMXNOc5hUZIkSVJaSmBUVAjhOOAk4ADgUeD8\nGOPE5hxrcSFJkiSlJFsacy5+CPwF6B9jXLk+B1pcSJIkSVotxnh8S4+1uJAkSZLSUhKNi5azuJAk\nSZLSUhqL6LWYxYUkSZKUktKYctFyFheSJElSWvJQXYQQMuQWvusCLAPOjDFOq2e/24C5McbBiQdR\nw3UuJEmSpJRks9kW3ZrQD6iMMXYHLiG3PsUaQgg/Br6V/Dtak8WFJEmSlJbqFt4a1xN4AiDGOBnY\nt+7GEMKBwH7Abcm8iYZZXEiSJElpyWZbdmtce2BBnfurQggVACGETsAQ4Dwgk5f3VIdzLiRJkqSU\n5GlC90KgXZ37FTHG2n7HCcAWwCjg68BGIYQ3Y4z35CMQiwtJkiQpLfm5FO0E4GjggRBCN+C12g0x\nxpuBmwFCCKcCIV+FBVhcSJIkSanJU+diBHBECGFCzf3TQggnAZvEGIfm5RUbYHEhSZIkpSUP1UWM\nMQv8ZK2H36pnv7sTf/G1WFxIkiRJaSnzRfS8WpQkSZKkRNi5kCRJklKSzc+E7qJhcSFJkiSlJU8z\nuouFxYUkSZKUEjsXkiRJkhKRtXMhSZIkKQnZ6uqmdyphFheSJElSWhwWJUmSJCkJDouSJEmSlAiH\nRUmSJElKhFeLkiRJkpQMh0VJkiRJSoKdiy+pYvcB+X4JlaKqLQodgYpRc/LC3Gl9/J2rPp4vpKJk\n50KSJElKiRO6v6xlc/P+Eiohtd8imReqa33ywtxpPTxfqD6eL1SfEupSeSlaSZIkSYlwzoUkSZKk\nZDgsSpIkSVISHBYlSZIkKREOi5IkSZKUCIsLSZIkScnIOudCkiRJUgLsXEiSJElKhMWFJEmSpERk\ny3xYVEWhA5AkSZJUHuxcSJIkSWlxWJQkSZKkJDjnQpIkSVIiXKFbkiRJUiKy1eU9odviQpIkSUqL\nw6IkSZIkJcFhUZIkSZIS4bAoSZIkSYnwalGSJEmSkuGwKEmSJElJsHMhSZIkKRHlPueiotABSJIk\nSSoPdi4kSZKklHgpWkmSJEmJcM6FJEmSpETYuZAkSZKUCDsXkiRJkhJh50KSJElSIuxcSJIkSUpE\ntZ0LSZIkSUmwcyFJkiQpEc65kCRJkpSIbHXyzxlCyAC3AF2AZcCZMcZpdbafBPwMWAm8FmP8afJR\n5FTk64klSZIkrSmbzbbo1oR+QGWMsTtwCXBT7YYQQhVwFXBQjLEXsFkI4eh8vT+LC0mSJKm09QSe\nAIgxTgb2rbNtOdA9xri85n5bct2NvLC4yJNly5Zz85+G0qffSeyx38F0O7gvZ/xkIM9NeL7QoamA\nzIvW7W/DH2a3vXrwwIhHG93v00/nsdtePTh/0OA1Hp/23nQuu/I6jjj6BPbc/2D26X44x/3gNP50\nxzAWL1mSz9CVR+aFAKa/P4PBQ67lkCOP5Vv7HkTPw47h3AsuZuLzLzZ6XEN5sbbFS5ZwaJ/j2G2v\nHrz4zylJhq71lK3OtujWhPbAgjr3V4UQKgBijNkY48cAIYTzgU1ijE/n5c3hnIu8WLp0GaeedT6v\nvv4GG2ywAbvsvCPz5y9g4vMvMmHSC5x3zhmcd87phQ5TKTMvWrdXX3+D3/zuj2QymSb3HTt+EplM\nhoN6dV/92ONPjeaiy65i5cpVbLBBW7bfbluWLFnKm29N5Y033+KRR5/g7jtupmOHLfP5NpQw80IA\n4yY8z/mDBrN8xQqqqqrYZacd+HTefEaPHc8zY8Zxxqn9uXDgufUeW19e1Oea63/HRzNnNyvXlF95\nmtC9EGhX535FjHH17I6aORm/BnYBjstHAKtfOJ9P3lpdee0NvPr6G3zzG4GnHxvOQ/fdyejHH+T6\nX15O2zZt+ONtdzJp8kuFDlMpMy9ar8kvvsxZPx3E4sXN+xZ57LhJAPTu2Q2AD2Z8tPoDZL9j+jDx\n2cf43wf+wjOjHuChv93Fzjt25r3pH3DBhZfn7T0oeeaFAObNX8DPLx7C8hUr6Hvk4Yx7+hFG3D+M\nsU89zA3XDqFNmwruvOc+/vHM2HqPXzsv6jPmuQk89MhjeYlf66+6OtuiWxMmAH0BQgjdgNfW2n47\nuTkZ/eoMj8oLi4uEfTDjQ/531JO0aVPBDdcNWePbou8e9R3OOv0Ustksf7j1zwWMUmkzL1qnFStW\ncPOfhnL6OT9j4aLPmnVMdXU1E59/gbDLTnTY8msA3HPv31mxYiXfCLtw7ZWD+comm6zef7ddd+b3\nN11LmzYV/OvV13n5X2v/PVGxMS9U1/CHRrJw0WdsvVUnrrvq0jV+j0f1OYITjvsu2WyWvw0fsc6x\n9eXF2hYsXMjlV13PRhttlLf3oPWTpwndI4DlIYQJwI3AwBDCSSGEM0MIewOnAXuEEJ4NIYwOIXwv\nX+/PYVEJe+TRJ/j882q67r0nO3befp3tPzihH3+6Yxgv/+s1Zs2eQ6eOHQoQpdJmXrQ+738wgx+d\neT6zZs+hbZs2XHDeWdz/wCPMnDW70eOmvPI6Cxd9xknfP3D1Yy+8NIVMJsOR3z603iENO3benh07\nb8/Uae/x2r/fYJ+99kj8/SgZ5oXWts3WW3F0nyP45m67suEGG6yzPeyyMwAfzpy1zrbVeXFiw0Oi\nrrzmBj6Z+ymDL/wZ1/z6d8kFrhbLxyJ6McYs8JO1Hn6rzs+pfea3c5GwKa+8TiaToeveXerd3rHD\nlmz19U70sxkaAAAMj0lEQVRA7g+DWgfzovWZNftjZs/5mL277MHwvw7lx2f8qFnHjR03kUwmQ68e\nX3yIvOyiC7j2ysEcdkivBo+r/Var+vM8XEBdiTEvtLa+3zmMG667gtNP7V/v9tf+/R8AOm+/3Trb\nVudF9/qHRD3xj9GMevIZ9uu6F6f0PyG5oPWl5KlzUTTsXCTs/Q9mALDtNls3uM/WW32dmbNm8970\nD9IKSwVmXrQ+nTpuyW1/uIHePRoeB12f58ZPon27r6zxLfN+Xfdmv657N3jM21OnMXXae2QyGXbe\naYcWx6z8My/UXIsWfcbdf72fESNH0bZtW8467eR19qkvL2rNnfspV1xzAxtvvBHXXXVpGiGrmfLR\nuSgmFhcJm/vpPAC++tXNGtxn883aAzBv/vxUYlLhmRetz3bbbsN2226zXsfM+fgT3nxrKn2/cxgV\nFc1rLFdXV3PltTcAuQ+u3fbft4kjVEjmhZry1NNj+P0td/D+jA9ZsWIlW329I0MuvZCue++5xn5N\n5cXlV1/PggULufySQWy91dfTCl/NUEpdiJZwWFTCli3LTcCv3HDDBveprKwkm82u3lflz7xo2Jw5\nH9O3b1+qqqrIbPS1NW6tzdhxuUtK9u55YNM71/jF1dfz0suvkMlkuOjn57PBBn5nVG7Miy+0hvPF\nq6+/wTvvTmflylVkMhkWLFzEmOcmrLNmSWN5MWLkKEaPGU+3/bvS//t5veqoWiBP61wUjfUuLkII\nlfkIpFw091sltS7mRcMGnH0+jz/+OMuXt66iqj7P1Vyvvlf3A5rct7q6mkuvuI4HRjxKJpPhlP4n\ncOQRh6YQpdJmXnyhNZwvTul/AlMmPcO4p0dy3VWXUlVZyX1/H8GAs/6b6uov5s40lBezZ3/MNb/+\nHZtssjHXXHFJ2uGrGcp9zkWDn3hCCMeEEKaHEKaGEE6ss+nxFOIqWZtsnLvU2/IVKxrcZ/ny5WQy\nGTaqqkorLBWYedGwSZMbX322rsrK8v1uY9WqVUx64SW+sdsubLHFVxvdd+nSZZw78GIefDj3AfL4\nfkcx+MKfpRSp0mRerKk1nC86dtiSqqpKvrbFV+l3TB/+3523UFm5Ia+/8SYjH3sSaDwvBg+5hsWL\nl/B/Bp67+kIhKi55WueiaDT2deqlwF7AAcCPQwin1jzu0o6N2Gyz3Jj6+fMXNLjPvJptX/3q5qnE\npMIzLxp24AH7NXvfQw9u+Ko4pe6fU17ls88Wc3ATq+zOnvMx/Qecw7NjJ5DJZBhwyg/45RC/nSxX\n5sWaWuP5YofO23HEoQcBuYUXAV56+ZV68+Levz/EhOdf5MD9u3Lif/VLPVYJGp/QvSLGOA+gZqGN\n0SGE94HSKZ0KYKcdt+f9D2bw4UfrXo+61ocfzQRgh+23TSssFZh50bBht9/MgHMGMXr06AaHOlRW\nVnLowb0YdvvNKUeXnjE1l5Ts3aPhcfXx7Xf48Xn/w6zZc2jTpoLBF17AD39wfIpRKm3mxZrK8Xzx\n2WeL+WDGh3Tq1JHNN9u03n223qoT2WyWT+Z+CsDYmiFRa+fF40+OBmDi5JfYba8eDb7mKWecB8Cx\n3+3rlaQKoJSGOLVEY8XFeyGEm4DLY4yLQgjHAU8CDV/uRnTZY3dGjxnPv16pfzXU2bM/5qOZs8lk\nMuztgkathnnRsA4dtmTUqFG5O8vmFjaYAho/4Xk227Q9Xfbcvd7tU995lwFnnc+8+QvYqKqKm66/\nikMOavjDg8qDebGmcjxf9DvxVGZ8OJMLB57LGQ2sdVH7xVSnjlsCMG78pHrzIuy6E9XVnzf4Wv+c\n8ioAu+6yE+2+skmr+zKrWJTS5OyWaKy4OB04mZpORYzxgxDCIUD59VkTdOQRh/Lbm2/jhZem8N70\nD+i81j/ce4c/BMD+++7tWMhWxLxQY2bOms3b77zLMX2/Xe/2hQsXcda5g5g3fwGbtm/H7X+4scEP\nmyof5kXr0OPAA7j/gYcZ/tBIBpx8Im3atFlj+4wPZ/L06OfIZDIc0rsnM2fNZuq09+rNi8suGtjo\na9V2My6/eGCja6Qov8q9c9HgnIsY46oY47AY45I6j82OMV6QTmilafvttuHoPkew6vPPOW/gxasX\nTwN45NEn+PNdfyWTyfCTswYULkilzrxQY2ovKXlQr/qHvvzqxpuZOSs35OWm66/yA2QrYV60DmcO\n6E9VZSXT35/BoIuHrJ5/B/DGfyJn/GQgy1esYL+ue3HowT0Z89zERvNCxa/cL0VbHhe+LjKXXTyI\nt995l7fefoc+/U5i1513YsHCRXw0cxaZTIaB5/+Ybvt3LXSYSpl5oYaMGTeRiooMPbuvu2rzx5/M\nZeSjTwC5seR/vO0u/njbXQ0+138dezTHfe+ovMWq9JgXrcO222zN735zNQMvGsJTT4/h2bHj2aHz\n9ixfvpz3pn9AJpNhrz2/xe9vvBbIzbdoKC9UGsq9c2FxkQebbdqe+++5naHD/soTTz3DtPem07Zt\nWw7Ybx9O6X8Chx/Su9AhqgDMC9VnxcqVTH7xZfb41jfZbNP262yf8q/X+Ly6mkwmw9Kly5jSwLyd\nWt27Nf9qOipe5kXrcnDvHowcfjdDh93LhEmTmfbudDaqqmTffbrwvaOP5LjvHUWbNm2azIvmyGS8\n6GehlVIXoiUyea6esuUy4UoJqdoi91/zQnWZF6qPeaH6mBeqTy4vSqJyemLDti368H3kilUl8f7s\nXEiSJEkpKaUF8VrC4kKSJElKiXMuJEmSJCWi3OdcWFxIkiRJKSnv0qKRdS4kSZIkaX3YuZAkSZJS\nUl3oAPLM4kKSJElKicWFJEmSpESU+5wLiwtJkiQpJXYuJEmSJCXC4kKSJElSIhwWJUmSJCkRdi4k\nSZIkJcLOhSRJkqRE2LmQJEmSlAiLC0mSJEmJKPdhURWFDkCSJElSebBzIUmSJKXEYVGSJEmSEmFx\nIUmSJCkR5T7nwuJCkiRJSomdC0mSJEmJsLiQJEmSlAiHRUmSJElKhJ0LSZIkSYmwcyFJkiQpEXYu\nJEmSJCXC4kKSJElSIhwWJUmSJCkR5d65qCh0AJIkSZLKg50LSZIkKSXl3rmwuJAkSZJS4pwLSZIk\nSYmwcyFJkiQpEXYuJEmSJCUiH52LEEIGuAXoAiwDzowxTquz/RjgcmAlcFeMcWgewgC8WpQkSZKU\nmuoW3prQD6iMMXYHLgFuqt0QQmhbc/9w4GDg7BDClgm9nXVYXEiSJEkpybbw1oSewBMAMcbJwL51\ntn0DeDvGuDDGuBIYD/RO5M3UI//Doqq2yPtLqASZF6qPeaH6mBeqj3mhEpWnCd3tgQV17q8KIVTE\nGKvr2bYI2DQ/YeS/uMjk+fklSZKkknFFNpuPz8cLgXZ17tcWFrXb2tfZ1g6Yn4cYci+cryeWJEmS\nlIoJQF+AEEI34LU62/4D7BxC2CyEsCG5IVGT8hVIJpst9wtiSZIkSeWrztWi9qx56DSgK7BJjHFo\nCOEoYAi5UUV/jjHemq9YLC4kSZIkJcJhUZIkSZISYXEhSZIkKREWF5IkSZISYXEhSZIkKRH5X0Sv\nlasze78LsAw4M8Y4rbBRqRiEEA4AfhVjPKTQsajwQghtgTuBzsCGwDUxxv8taFAqCiGECuAOIJBb\nf+ucGOMbhY1KxSCE0AF4CTg8xvhWoeORwM5FGvoBlTHG7sAlwE0FjkdFIIRwIbkPC5WFjkVF42Tg\nkxhjb6AP8IcCx6PicQyQjTH2BC4Hri1wPCoCNV9I3AosKXQsUl0WF/nXE3gCIMY4Gdi3sOGoSEwF\nji10ECoqfyf3wRFy5+aVBYxFRSTG+Ahwds3dzsC8wkWjInID8Cfgo0IHItVlcZF/7YEFde6vqmlx\nqxWLMY4AVhU6DhWPGOOSGOPiEEI7YDhwaaFjUvGIMVaHEO4C/i/w10LHo8IKIQwA5sQY/0FuUTSp\naPghN/8WAu3q3K+IMVYXKhhJxSuEsC0wGrg7xnh/oeNRcYkxngbsCgwNIWxU6HhUUKcBR4QQngX2\nAu6pmX8hFZwTuvNvAnA08EAIoRvwWoHjUXHxGycBEELoCDwJnBtjfLbQ8ah4hBBOAbaJMV5H7sIg\nn5Ob2K1WKsZ4UO3PNQXGj2OMcwoYkrSaxUX+jSD37cKEmvunFTIYFZ1soQNQ0bgE2Ay4PITwC3K5\n0SfGuLywYakIPAAMCyGMJfd3+2fmherw74iKSiabNSclSZIkfXnOuZAkSZKUCIsLSZIkSYmwuJAk\nSZKUCIsLSZIkSYmwuJAkSZKUCIsLSZIkSYmwuJAkSZKUiP8PAeyYdMoPXAAAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d4a2610>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1),\n",
" (2,1,2),\n",
" (3,0,1),\n",
" (4,1,2),\n",
" )\n",
"upstream_densities = (1,1,0)\n",
"downstream_velocities = (0,1,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Testing for the universal througput-unlimited (UTU) property\n",
"In order to test this property, we need to consider all possible (balanced) combinations of inflow and outflow. The code below generates the necessary combinations."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import itertools\n",
"def all_boundary_conditions(n):\n",
" vals = [0]*n + [1]*n\n",
" y=itertools.combinations( vals, n )\n",
" a = []\n",
" for p in y: \n",
" z = list(set(itertools.permutations(p)))\n",
" z = set(list(set(z)))\n",
" for w in z:\n",
" if w not in a: a.append(w)\n",
" return a"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[(0, 0, 0, 0), (0, 0, 0, 1), (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (1, 0, 1, 0), (0, 0, 1, 1), (1, 0, 0, 1), (0, 1, 1, 0), (0, 1, 0, 1), (1, 1, 0, 0), (1, 0, 1, 1), (1, 1, 0, 1), (0, 1, 1, 1), (1, 1, 1, 0), (1, 1, 1, 1)]\n"
]
}
],
"source": [
"print all_boundary_conditions(4)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class ReducedThroughputException(Exception):\n",
" pass\n",
"\n",
"def test_flow(junctions,upstream_densities,downstream_velocities,**kwargs):\n",
" rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities,**kwargs)\n",
" try:\n",
" tol = 10*kwargs['tol']\n",
" except:\n",
" tol = 0\n",
" if all([abs(r-1)<=tol for r in rho[-1]]):\n",
" return\n",
" else:\n",
" print rho[-1][:]\n",
" raise(ReducedThroughputException)\n",
"\n",
"def test_all_flows(junctions, n_belts, **kwargs):\n",
" bcs = all_boundary_conditions(n_belts)\n",
" for upstream_densities in bcs:\n",
" for downstream_velocities in bcs:\n",
" if sum(upstream_densities) == sum(downstream_velocities):\n",
" try:\n",
" test_flow(junctions,upstream_densities,downstream_velocities,**kwargs)\n",
" except ReducedThroughputException:\n",
" print('Failed for this configuration:')\n",
" print(upstream_densities)\n",
" print(downstream_velocities)\n",
" print('')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use this code to test (again) our 3-belt balancer."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"junctions = ( (1,0,1),\n",
" (2,1,2),\n",
" (3,0,1),\n",
" (4,1,2),\n",
" (5,0,1)\n",
" )\n",
"test_all_flows(junctions, n_belts=3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Investigation of 4-belt balancers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a 4-belt balancer that is\n",
"universally throughput unlimited.\n",
"This seems to be the smallest solution.\n",
"Notice that it includes a junction between belt 0 and belt 3."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"junctions = ( (1,0,1),\n",
" (1,2,3),\n",
" (2,1,2),\n",
" (2,0,3),\n",
" (3,0,1),\n",
" (3,2,3),\n",
" )\n",
"\n",
"test_all_flows(junctions, n_belts=4, maxiter=300, tol=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here are some examples of it in operation."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nHMep8tgly1bKcRz17N6lbNuCvy/SmHETdPJksWrWrKEmlzfW8eMn9NnW7dry2Va9O2+hXnlpii5u\n2MDLy0CKu7R9e/X51a+SfpgMTpfs/3/TuYhT4yc+r42bt+g7Vxt9+P5bevtPL2vRgr9q0i+fVI30\ndE2b/rJWrlob6zCRgshNxNqqNes07CejdexYZN2FJUtXSpJ6dOssSdq956uywmLggL5a8dH7em/O\na/rn/Dl6+81Zat6sqXbu2q1HHnvSs2sAmvbsqR8sXKiMOnViHQp8FgwEo1oSBcVFHNq950u9N/8D\npaen6flnnz7tl7P/6n+rht0/WMFgUFP/8McYRolURG4iloqKijTlxZm6f8TDyj9yNKJzAoGAVnyy\nWqbFlWrY4CJJ0qtv/EVFRSd1tWmhiePH6vzatcuOb3lVc/1u8kSlp6dp/cbNWrd+kyfXgtSVft55\n6vX00xr8j38os169WIeDGAgGg1EtiYLiIg69O2+hTp0KqM1116pZ0yZn7R9090BJ0rr1m7Rvf67f\n4SGFkZuIlS9279EtA+7RtOmz5MjRIyOH69JvX1LledkbNiv/yFH17H5D2bbVa7PlOI5uu6V3ucOq\nmjVtUpbfm/69xb2LQMq7oFkz/Z9t29TzqaekYFCLxo3ToV27Yh0WfEbnAr7L3rBZjuOoXdvW5e6/\nuGGDsn9UV6/N9jM0pDhyE7Gyb3+e9ufmqW3rVnrr9Zl68IEfRnTekqUr5DiOunf9T3Exbswjmjh+\nrG66sXuF55X+Shg4FTi3wIEwWY0aqc5ll2n3ihV6qWNHLXvuuViHhBhI9s4FE7rj0Be790iSGje6\nrMJjLrv029q7b7927trtV1gAuYmYueTiBpo+9Xn16Nq5Wud9vGylsuqcr+vbtCrb1qFdW3Vo17bC\nc7Ztz9H2nJ1yHEfNr7wi6piBM+Xv2aM3+vfX9g8+iHUoiKFE6kJEg+IiDh345qAk6cILKx6LeUG9\nLEnSwUOHfIkJkMhNxM7ljRvp8saNqnVObt7X+mzrdvW79SalpUXWqA8EAho/8XlJoYKmc8f21Y4V\nqMjBnBwdzMmJdRiIsUTqQkSD4iIOFRQUSpIyzjuvwmMyMjIUDAbLjgX8QG4ikSxZGroFbY9uN1R9\ncImnfjFJa9dtkOM4GvOzUapZk38mAbgr2R+ix6dmHEpLS9OpU6diHUbSys3N05ARg7Vo0SIVFvIF\n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\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d255d10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"upstream_densities = (1,1,0,0)\n",
"downstream_velocities = (0,1,1,0)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nkiSl4v8DQvJmy5yq2HgAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d270bd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"upstream_densities = (1,1,1,0)\n",
"downstream_velocities = (1,1,0,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Non-convergence\n",
"For some complicated setups, the iterative algorithm does not converge in a finite number of steps, due to feedback. It seems that in such cases it asymptotically approaches the correct solution. The 4-belt balancer below is an example of such a case; it appears to be UTU. Notice that it only requires junctions between adjacent belts, so only ordinary straight belts and splitters are required to construct it."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [],
"source": [
"junctions = ( (1,0,1),\n",
" (2,1,2),\n",
" (3,2,3),\n",
" (4,1,2),\n",
" (5,0,1),\n",
" (6,1,2),\n",
" (7,2,3),\n",
" (8,1,2),\n",
" (9,0,1),\n",
" (10,1,2),\n",
" (11,2,3),\n",
" (12,1,2),\n",
" (13,0,1),\n",
" (14,1,2),\n",
" (15,2,3),\n",
" (16,1,2),\n",
" (17,0,1)\n",
" )\n",
"\n",
"test_all_flows(junctions, n_belts=4, maxiter=300, tol=1.e-10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's another that is somewhat shorter and with fewer junctions."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [],
"source": [
"junctions = ( (1,0,1),\n",
" (1,2,3),\n",
" (2,1,2),\n",
" (3,0,1),\n",
" (3,2,3),\n",
" (4,1,2),\n",
" (5,0,1),\n",
" (5,2,3),\n",
" (6,1,2),\n",
" (7,0,1),\n",
" (7,2,3),\n",
" (8,1,2),\n",
" (9,0,1),\n",
" (9,2,3),\n",
" )\n",
"\n",
"test_all_flows(junctions, n_belts=4, maxiter=300, tol=1.e-10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's an example that is UTU and only uses junctions of adjacent belts, and for which the algorithm converges in finitely many steps."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"junctions = ( (1,0,1),\n",
" (1,2,3),\n",
" (2,1,2),\n",
" (3,2,3),\n",
" (3,0,1),\n",
" (4,1,2),\n",
" (5,0,1),\n",
" (5,2,3),\n",
" (6,1,2),\n",
" (7,0,1),\n",
" (7,2,3),\n",
" (8,1,2),\n",
" (9,0,1),\n",
" (9,2,3),\n",
" (10,1,2),\n",
" (11,2,3),\n",
" (12,1,2),\n",
" (13,0,1),\n",
" (13,2,3),\n",
" )\n",
"\n",
"test_all_flows(junctions, n_belts=4, maxiter=300, tol=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the simplest example I've found that leads\n",
"to an infinite number of iterations for convergence.\n",
"There is an endless feedback loop involving the junctions\n",
"at x = 6, 7, 8."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Maximum number of iterations reached\n",
"Failed flux check!\n",
"[11/4, 11/4, 11/4, 11/4, 11/4, 11/4, 13944156602510523416463735259135/5070602400912917605986812821504, 13944156602510523416463735259135/5070602400912917605986812821504, 13944156602510523416463735259135/5070602400912917605986812821504]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABEwAAAE5CAYAAACK1rVvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4FNXbxvHvbHroNXQQxLED0kVAFBvYKygiiIWfBQUL\nigqKAqLYRUGRKqIiRUSKIKIgiKjY8dCUToBQUiB15/1jNpsNCeiLZjeb3J/r2ivZnZ3ZZ545O7vz\n7DkzluM4iIiIiIiIiIhIHk+oAxARERERERERKW5UMBEREREREREROYIKJiIiIiIiIiIiR1DBRERE\nRERERETkCCqYiIiIiIiIiIgcQQUTEREREREREZEjqGAiIiIiIlIC2Lbd2rbtLwp5/DLbtr+1bftr\n27ZvC0VsIiLhSAUTEREREZEwZ9v2Q8DbQMwRj0cCLwKdgXOBO2zbrhb0AEVEwpAKJiIiIiIi4W8D\ncFUhj58CrDfGJBtjsoDlQIegRiYiEqZUMBERERERCXPGmFlAdiGTygMHA+6nABWCEpSISJiLLOLl\nO0W8fBERERERACvUAfwj6UnH9/04tsrxrl8ybtEkVzngwHEuS0SkVCnqgglO4rdF/RLFnpXQCgDv\nbxNDG0gx4DmtF6BcgHIRSLnIk5uLnJduCm0gxUBE/6mAcgHKRSDlIk9uLp60wqNOUJSedMLpN7oi\nj/XIBrEWONG27YrAIdzhOM8XdRAiIiVBkRdMRERERETEp+iLOw6AbdvdgTLGmHG2bQ8APsMtpowz\nxuws6iBEREoCFUxEREREREoAY8xm4Gzf/9MCHv8U+DRUcYmIhCsVTEREREREgiachg+JiJRuKpiI\niIiIiASL4w11BCIi8g+pYCIiIiIiEjTqYSIiEi5UMBERERERCZawuqKPiEjppoKJiIiIiEjQqGAi\nIhIuVDAREREREQkW9TAREQkbKpiIiIiIiASNCiYiIuFCBRMRERERkWBRDxMRkbChgomIiIiISNCo\nYCIiEi5UMBERERERCRbHG+oIRETkH1LBREREREQkaNTDREQkXHhCHYCIiIiIiIiISHGjHiYiIiIi\nIsGik76KiIQNFUxERERERIJGBRMRkXChgomIiIiISJA4x9nDxPqP4xARkb+ngomIiIiISNCoh4mI\nSLhQwUREREREJGhUMBERCRcqmIiIiIiIBItO+ioiEjZUMBERERERCRpvqAMQEZF/SAUTEREREZFg\nUQ8TEZGw4Ql1AMHw/sdLOKVjT2Z8+mWoQwm5Dxau4dRrRjDj859CHUrIKRd5lIs8ykUe64zz8Nw/\nBeu0jqEOJeSUizzKRR7lIk/zO+5gSE4OzXr3DnUoYcA5zpuIiARbie9h8svaTYwa8z6WrsXGL+t3\nMGrKF1hKhnIRQLnIo1wESGiI1b67vqODchFIucijXPjVatGCC5577rgvl1vqKE8iImGjRBdMVq1Z\nS78nXiXtUHqpL5h8++tm+j03k7TDGaX+YFC5yKNc5FEuAtQ5Bc+l90F0rA4GlYs8ykUe5cKvQceO\nXD9jBjHlyqlg8o8pTyIi4aJEFkwyM7MY++4njJ0yB69Tuk+slZmVzVszVjJ2xgq8pfyLjHKRR7nI\no1wEiIjEank5VqsrwCoVIzaPTrnIo1zkUS78IqKjaf/oo7R/7DEsT+nOhYiIlFwl7hNuy/ZELrrx\nId6YNBvLgvtuu5ZaCVVCHVZIbNm1n4vvHssb05e7uejegVrVKoQ6rJBQLvIoF3mUiwAVquPp9QJW\nm6sAcFZMh+S9IQ4qRJSLPMpFHuXCr1LDhvRbv56OgweD47Dk8cc5sHlzqMMKH45zfDcREQm6Elcw\n2bVnH4l799Hs9MZ8OPYp7uxxeahDCpldSSkk7kuhmV2HD0b24o5rzg51SCGjXORRLvIoFwHKVnZv\nO9bjnTYYZ/WcUEcUOspFHuUij3LhV75OHcrVrs3WFSt4u1Urlj/7bKhDCjM66auISLgocUNyalSr\nzNiRD9K+9ZmhDiXkalQpx5hB19H+rEahDiXklIs8ykUe5SJA6j68s5+HzT+HOpLQUy7yKBd5lAu/\n5G3beK9rVzYsXBjqUMKTeouIiISNElcwqVc7gXq1E0IdRrFQr0Yl6tWoFOowigXlIo9ykUe5CHBw\nt3sT5SKQcpFHufDbv2kT+zdtCnUYYax0n19PRCSclLiCiYiIiIhIsaUeJiIiYeMfF0xs2/YYY1QS\n/3/avWcfvXt3YcmSJWRkZPgfj4mOpFPrU5jwzG1Ur1I+hBGKSHGxOymZW7vk31/ERHrodGIC47u3\npXq52BBHKCLFxe6UdPrk7i98j0UAJwBXAmVCF5r8LRVMRETCxTFP+mrbdkPbtmfbtr0N2GTb9hbb\ntj+1bfukIMUX9nrfN5T58+fnK5YAZGRms2DZL/R+fFyIIhOR4qb34+MK7C8ysr0s+GMnt05bGcLI\nRKS4uXXaygL7ixxgAzA7ZFHJP6Kr5IiIhI2/62EyDnjUGLMq9wHbttsAE4B2RRlYSbHy+1+POf2L\nVWuDFImIFHff/LTxqNO+2JAYxEhEpLj7ZvPRL2n8ZxDjkOOh4oeISLj4u8sKxwYWSwCMMd8UYTwl\nTtvmpx9zekZmdpAiEZHirk2To1+tJyNbIyJFJE+b+lWPOi0niHHIcVAPExGRsPF3BZOfbNseb9v2\n9bZtX2Tb9rW2bY8HdE29f2jCK4O55JJLiImJCXUoIlLMTXjmNu0vROQfGd+9rfYXYct7nDcREQm2\nvxuScxfuucPOAcoDycBcYFYRx1ViVK9WmXnz5gHg/W0iEaf3DnFEIlJcVa9S3r+/sCwrxNGISHFW\nvVws8+bNALS/CDvqLSIiEjaOWTAxxji4xREVSERERERERESk1PjHlxUWEREREZF/ST1MRETChgom\nIiIiIiJBo/ORiIiEi1JRMPn8w5dCHUKxsXjMXaEOodhQLvIoF3mUizze8f1DHUKxoVzkUS7yKBd5\nXmnYMNQhhA/1MBERCRulomAiIiIiIlI8qGAiIhIuVDAREREREQkWR0NyRETChQomIiIiIiLBoiE5\nIiJhQwUTEREREZGgUcFERCRcqGAiIiIiIhIsGpIjIhI2VDAREREREQkWDckREQkbKpiIiIiIiASN\nCiYiIuFCBRMRERERkWDRkBwRkbDhCXUAIiIiIiIiIiLFjXqYiIiIiIgEzX8/JMe2bQt4A2gCpAO3\nGWM2BUy/ChgEeIEJxpgx/3kQIiIlkHqYiIiIiIgEieM4x3X7G1cCMcaYs4FHgRePmP4i0Bk4B3jA\ntu0K//mKiYiUQCqYiIiIiIgEi+M9vtuxnQMsADDGrAJaHDE9E6gExOVG8V+ukohISaWCiYiIiIhI\n0DjHeTum8sDBgPvZtm0Hfs9/Afge+AWYa4xJ/terISJSCqhgIiIiIiISLI5zfLdjSwbKBdz3GGO8\nALZt1wXuBeoDDYAE27avKYI1ExEpcVQwEREREREJlqIZkvM10AXAtu02uD1JcsUC2UCGMcYBduMO\nzxERkb+hq+SIiIiIiARNkZw+ZBZwgW3bX/vu97ZtuztQxhgzzrbtycAK27YPAxuBiUURhIhISaOC\niYiIiIhIsPz98Jr/N1/Pkf8d8fC6gOkvAS/95y8sIlLCqWAiIiIiIhIsRVAwERGRoqGCiYiIiIhI\n0Pzt+UhERKSYUMFERERERCRY1MNERCRs6Co5IiIiIiIiIiJHUA8TEREREZGgUQ8TEZFwoYKJiIiI\niEiwODqHiYhIuFDBREREREQkWHQOExGRsKGCiYiIiIhI0KhgIiISLlQwEREREREJFg3JEREJG5ZT\ntN0CVUI/gmVZBR4r4m0gImFI+woR+ae0v/ArmIhiyPvbxOPaOJ7TeoXF+omIlCTqYSIiIiIiEjSl\nspglIhKWirxg4iR+W9QvUexZCa3cf9KTCn/C0R4viWKruH9L0zofjXKRR7nIk5uLwpS2/Phy4f1t\nYmjjKAY8p/UClAvIy0XOSzeFNpBiIKL/1KNPLKX7i7BQOnv/iIiEJfUwEREREREJFhVMRETChgom\nIiIiIiLBooKJiEjY8IQ6ABERERERERGR4kY9TEREREREgkU9TEREwoZ6mIiIiIiIiIiIHEE9TERE\nREREgkU9TEREwoYKJiIiIiIiwaKCiYhI2FDBREREREQkaFQwEREJFyqYiIiIiIgEi3qYiIiEDRVM\nRERERESCRfUSEZGwoYKJiIiIiEiwqIeJiEjYUMFERERERCRYVDAREQkbKpiIiIiIiASNCiYiIuFC\nBRMRERERkWBRDxMRkbChgomIiIiISLCoXiIiEjZUMBERERERCRb1MBERCRueUAcgIiIiIiIiIlLc\nqIeJiIiIiEiwqIeJiEjYUMFERERERCRoVDAREQkXKpiIiIiIiASLepiIiIQNFUxERERERIJFBRMR\nkbChgomIiIiISLCoXiIiEjZKxVVy3v94Cad07MmMT78MdSgh9/702ZzctB0fzZob6lBCTrnIU9Jy\nsXnLNgYNGU6ni6/i9BYdOef8y7j7/kdY8c3qY863b99+Tm7ajnsHDDrm89IOHeK8S67m5KbtWP39\nmv8y9GKlpLWLf+ODhWs49ZoRzPj8p1CHEnLKRR7rjPPw3D8F67SOoQ4l5LS/+P9wjvMmIiLBVuIL\nJr+s3cSoMe9jWaGOJPR+/vV3nn95NJaSoVwEKGm5WPb1N1xxXU9mzZnHgYMpNG50AhERESz5cjm3\n9r2f518afdR5v1y+Esuy6Nj+7GO+xrCRL7NjZ2KJyVlhSlq7+Dd+Wb+DUVO+UC5QLvJJaIjVvruO\nY9H+4v/NcY7vJiIiQVeiCyar1qzltoeeJ+1QeqhDCblVq3/g9rsGkJZ2KNShhJxykaek5WL/gYM8\n8MgQMjIz6XJxZ5Yt/phZH0zky89mM2r4ECIiPIyfPI1Fnxfe2+zLZSsB6HBOm6O+xtKvvmbmx58W\nSfzFRUlrF//Gt79u5vanPyDtcEaoQwk55SJAnVPwXPUwRMeGOpKQ0/7iOKhgIiISNkrkOUwyM7MY\n++4njJ0yB6/jDXU4IZWZmcnYdyYzZtwkvN7S/WGrXOQpqbmYPnMOySmp1KldkxFDHyM6Kso/resl\nF7D6hx95f/ps3p8+iwvOz9+F3uv1suKbb7EbN6J6taqFLv9gcjJPDB1JXFwchw8fLtJ1CYWS2i6O\nR2ZWNm/NWMnYGSvwlvIDFeUiQEQkVsvLsVpdAVaJ/s3pb2l/8S+U9veRiEgYKXGf9lu2J3LRjQ/x\nxqTZWBbcd9u11EqoEuqwQmLL1m1ceNkNjB47AQuL+++5g1o1a4Q6rJBQLvKU5FzUqV2LSy+5gBuv\nvzpfsSSX3fhEALbv3FVg2pqffiU5JZWOHY4+HOepYaPYm7SPAffe+d8FXUyU5Hbx/7Vl134uvnss\nb0xf7n6OdO9ArWoVQh1WSCgXASpUx9PrBaw2VwHgrJgOyXtDHFRoaH/xL+kUJiIiYaPEFUx27dlH\n4t59NDu9MR+OfYo7e1we6pBCZlfiHhJ376FZkzOYPnUcd/bpGeqQQka5yFOSc9HlovMZNeJJbr3l\nxkKn//LbWgAa1K9XYNqXy1ZgWRbtzy58OM6CRUuYt/BzWjZvys03XvffBV1MlOR28f+1KymFxH0p\nNLPr8MHIXtxxzbHPaVOSKRcBylZ2bzvW4502GGf1nFBHFDLaX/xbqpiIiISLEjckp0a1yowd+SDt\nW58Z6lBCrkZCNca+PooO7Y5+PobSQrnIUxpzkZKSyqSpHzBrzjwiIyO5vXePAs/5avlKypcry1lN\nzygwLSlpH08OG0V8fBwjhj4WjJCDrjS2i6OpUaUcYwZdR/uzGoU6lJBTLgKk7sM7+3nY/HOoIwk5\n7S9ERKS0KHEFk3q1E6hXOyHUYRQL9erWoV7dOqEOo1hQLvKUplx8tngpr77xNlu2bSczM4taNRMY\n8thDNG+Wv6C6e89e/li3gS4XnY/HU7Dj3RNPj+TgwWSeeHQAtWvVDFb4QVWa2sXfqVejEvVqVAp1\nGMWCchHg4G73Jtpf/Fs6h4mISNgocUNyipvde/bRpUsXYmNjseIKP5FkabF79558ubDiqhJbsTZd\nruzG7t17Qh2ehEhRtouff/2djX9uJisrG8uyOJicwtKvvibtUP6rOXy5zL2ccIdz2hZYxqw581iy\ndDltWjXnxuuv/lfx/J3AXJR2gbmIOL03Eaf3Jv6s2+n6vxfZnZQc6vAkRHYnJfvbReSA94gc8B5l\nHn6fS9/6gt0ppeuKeLtT0rW/CFe6So6ISNhQwaSI9b5vKPPnzycjQ5dh7HXHvQVykZGRwfyFi+l1\nx70hjExCqSjbxc03XsealZ+zbPEcRgx9jNiYGKZ9OItet/fD6827gtZXy1f6zl/SOt/8iYl7GPbc\ny5QpE8+wJx/9V7H8E4XlorQqtF1kZrNg2S/0fnxcCCOTUOr9+LiC7SLby4I/dnLrtJUhjCz4bp22\nUvuLcKWCiYhI2FDBpIit/P7XY06PiYkJUiSht3LV6qNOW7J0WRAjkeKkKNtFQvVqxMbGULVKZa68\n7BLeHf8GMTHR/Pr7H8z5dCEA2dnZrPz2O045uTFVqlTON/+gIcNISzvEw/3vDsoVII6Vi9K0r4Bj\n5+KLVWuDGIkUJ9/8tPGo077YkBjESELvm81Hv0JPadtfhB2d81VEJGyoYFLE2jY//ZjTzzu3fZAi\nCb22rVsedZp+ISu9gtkuTmhQjwvO6wjAqtU/APDdDz+RmprGue3zX/3jvQ9n8vU3q2nbqjk3XHvl\nfxrH0RwrF6VpXwF/0y4ys4MYiRQnbZoc/eSzGdneo04ridrUP/ow39K2vwg7jvf4biIiEnTHLJjY\ntv2FbdsrjrittG17RbACDHcTXhnMJZdcUuDXnpiYGC65qDMT33otRJEF38S3Xis0F1K6/ZftIjU1\njbV/rGP/gYNHfU7tWjVwHIe9SfsA+NI3HKdDu/znL5m/cAkAK1Z9x8lN2xW45bq5zz2c3LQdjw4e\n9q/jLywXpXFfAdpfSOEmPHOb2oXP+O5ttb8IVxqSIyISNv7uKjmPAG8DVwH6Se84VK9WmXnz5rl3\n0pNCG0yIVa9ezZ8Ly7JCHI0UF/9lu7jyhlvYtn0nD/W/mz633Fjoc7bv2AW4l8UEWLZ8JRUrlKfJ\nmafle559UiO83pyjvtb3a9xLi57UuBHlypbhhPp1/1XskD8X2l9ofyEFVa9SXu3Cp3q5WObNm+He\nKeX7i7Cj4oeISNg4ZsHEGLPKtu0pwJnGmFlBiklE5Li0a9uaDz6azfSZc+jV4wYiIiLyTd+2fSeL\nl3yFZVl06nAOO3clsmHTX1zW5cICy3p8YP9jvlZuL5MnHulPy+bN/ruVEBGRks373w+vsW3bAt4A\nmgDpwG3GmE0B01sCL/jubgd6GmOy/vNARERKmL89h4kx5nkVS0QkHNzW60ZiY2LYvGUbAx4Zkm9o\nzu9rDX3+15+MzExaNm/Keeeew9KvVmBZFh3bF7ycsIiISJEomiE5VwIxxpizgUeBF4+Y/hbQyxjT\nAfgcOOE/Xy8RkRLo74bkiIiEjbp1avPy80/Tf+AQPlu8lC++XM4JDeqTkZHBX5u3YlkWTc88nVdf\nGA645y/xeCzOObtNiCMXEZFSw1skQ3LOARaAv4d4i9wJtm2fBCQBA2zbPh2Ya4xZVxRBiIiUNLpK\njoiUKOd2aMec6ZO4/porqF6tKpv+3My+fftpcVYThj7xMO+OH03FCuXJzMpi1eofOOP0U6lYofxx\nvVZpP4eCiIgch6K5Sk55IPCM59m2bed+z68KtAVeBToDnW3bPve/Xi0RkZLIcor2xFOOk/htUS4/\nLFgJrdx/dFI2iK0CFH6g6RzeG+xoQsuXC7UL1C4CqV3kOUa7yPl1QrCjCSnPab0A8P42MaRxFAe5\nuSisXWS/WPjJnkuqiP5T3X+0v8jdX4RFFdv7yePH9eXbc9kzR10/27ZfAFYaYz7y3d9ijKnn+98G\nPjTGNPHdvx+INMaMOp44RERKE/UwEREREREJFq9zfLdj+xroAmDbdhvgl4Bpm4Cytm039N1vD/z2\nX6+WiEhJpHOYiIiIiIgES9H07p4FXGDb9te++71t2+4OlDHGjLNtuw8wze1swgpjzPyiCEJEpKRR\nwUREREREJFiK4LLCxhgH+N8RD68LmL4UaP2fv7CISAmngomIiIiISLAU7fkDRUTkP6SCiYiIiIhI\nsKhgIiISNlQwEREREREJliIYkiMiIkVDBRMRERERkWBRDxMRkbChgomIiIiISLD8/SWCRUSkmFDB\nREREREQkWBwNyRERCRcqmIiIiIiIBImjHiYiImFDBRMRERERkWDROUxERMKGJ9QBiIiIiIhI8WHb\n9mjbtluGOg4RkVBTDxMRERERkWAJj8sKrwKetW27OjAZmGKM2RXimEREgk49TEREREREgsVxju8W\nRMaYycaY84EugAWssG17rm3bVwY1EBGREFPBREREREQkWMKgYAJg2/YJQC/fbQMwE7jetu3JQQ9G\nRCRENCRHRERERCRYwmBIjm3bXwMJwCTgYmPMFt/jk4HtoYxNRCSYVDAREREREQmW8LhKzgvGmJmB\nD9i2Xd8Ysxm3kCIiUiqoYCIiIiIiEizFuIeJbdt1cc9ZMtS27dW+/8E9ZpgHnByq2EREQkEFExER\nERGRYCnePUyeAjoBtYCvAh7PBuaGJCIRkRBSwUREREREJFi8xbdgYoy5FcC27YHGmJGhjkdEJNRU\nMBERERERCRanWA/JucMY8xYQa9v24COnG2OGhiAsEZGQUcFERERERCRYinEPE/LOWXLk/yIipZIn\n1AGIiIiIiJQajnN8tyAwxoz1/TsMWGOMeQoYDWwF1LtEREodFUxERERERCTQW8A1AffPA94MUSwi\nIiGjITkiIiIiIsFSjM9hEqClMeYMAGPMXqCHbds/hzgmEZGgK/KCiZXQqqhfInzEVgl1BMVbac1P\naV3vf6q05qe0rvc/5DmtV6hDCInSut7/VET/qaEOITS0vwgvxfscJrk8tm3XNMbsBLBtuzoQFpUe\nEZH/knqYiIiIiIgES5DOR/IvDQPW2La9HPfkr62A+0IbkohI8BV9wSQ9qchfotjL/eVHuTj2r2Cl\nLT9qF3nULvKoXeRRu8ijdpFH7SKP2kWecOplEwY9TIwx79m2vRRoC2QC9+T2NhERKU3Uw0RERERE\nJEicMOhhYtt2PG6Pks5ABLDEtu0njDFpoY1MRCS4dJUcEREREZFgcY7zFlyvA2WA3sAtQDQwJuhR\niIiEmHqYiIiIiIgESxj0MAGaG2OaBNy/x7bt30MWjYhIiKiHiYiIiIhIkDje47sFmce27Yq5d3z/\nZwc9ChGREFMPExERERGRYAmPHiYvAqtt256De5Wcy4ARoQ1JRCT41MNERERERCRIHOf4bsFkjJkA\nXAVsAv4ErjbGjA9uFCIioaceJiIiIiIiwVKMe5jYtt3ziIdSfH+b2bbdzBgzOdgxiYiEkgomIiIi\nIiIC0OkY0xxABRMRKVVUMBERERERCRZv8e1hYozpHXjftu1Kxpj9oYpHRCTUVDAREREREQmSYjwi\nx8+27SbAB0C8bdtnA0uB640xP4Q0MBGRINNJX0VEREREgiUczvoKr+Ge9DXJGLMN6AuMCXYQIiKh\npoKJiIiIiEiQhEe9hHhjzNrcO8aYxUBM0KMQEQkxDckREREREQmWYnwOkwD7fMNyHADbtm8C9oU2\nJBGR4FPBREREREQkSMLhHCbAY8DrwGm2bR8A1gM9QhuSiEjwqWAiIiIiIhIs4VExeQOIA54GJhlj\ntoY4HhGRkNA5TEREREREgsU5zlsQGWNaAlcCFvCpbdtLbdvuE9woRERCTwUTEREREZEgcbzOcd2C\nzRizAXgReBYoBzwS9CBEREJMQ3JERERERIIlDEbk2LZ9NdAdaA3MBe41xqwIbVQiIsGngomIiIiI\nSJA44XEOk5uAKcCNxpisUAcjIhIqKpiIiIiIiIifMeaaUMcgIlIcqGAiIiIiIhIsYdHBREREQAUT\nEREREZHgCcEJXEVE5PioYCIiIiIiEiThcQoTERGBEBVMEhP38M7k91i+YhU7duwCoE7tmpzboR23\n9uxO5cqV8j0/KyubZm3OIzsn56jLLF+uLN8uW1jg8ZWrvmP486+wbv1GIiMiqFEjgXZtW9H75m6c\n0KBeocv69rs19LztnmOuQ+dOHXj9pRH5HnMch+kz5zDz409Zt2ETjtehTp1aXHjRJfTu3ZuyR2R7\n85ZtjH1nMitXrWb37r1YHgvHcfBYHhrUr0vXSy7g1p7diY6O9s+zY+cuxoybzNcrvyVx9x7i42I5\n9RSb7tdfxQn163F191vpctH5PDdscL7X2rkrkdfHjOezxUtJTkkhJjqa2NgYMjKzcBwvNRKq065t\nK/rcchN1atf0z7d8xSre+3AmP/+6lgMHDuLxeLAsd5uUL1+O006xuaXHDXRo1ybf683+ZD7TZ87B\nrN+I4zjEREeT480hNfUQFStWpGbNmuzfv5/09HT/PK+9OY7RYyccM+9RUVFkZWWxZP4MatWsUWD6\nt9+t4eY+d/vvW5ZV4Dm5227ye9MZNvIlEqpXIzk5BSwoW6YMAKlph7CAhg3rc/XlXel+/VV4PO5V\nuNPTM3h7whTmLfycbdt3UqZMfL48TJr6ASOef5VWLZoxedzr/tc9cDCZN96awJKly9i+Yxder/eY\ncY5++VnOP7c9juPw0ay5zP5kHus3/ElqWhoejwfH6yUqKoqGJ9Sny8Wd6XnT9URHRfnn/37Nzwwd\n8QJ/mPVEREQQHR2NZVlkZWUSExND4xMbcvXlXbju6svZv/8AZ593KRec15HXXhzuX8ZPv/zGfQ8+\nxs5du31xQtmyZelyUWcGPnAPZeLj/c9NStrH2xPe5cvlK9m+Yyc5OV48HoucHC/x8XGc2LABXS++\ngG7XXUVUlPtmyMnJYer7M5gz/3M2btzIiSeemC8HWVlZvPHWBHp0u5by5cv5Hz98OJ13Jr3HwsVf\nsHXrdnKmZFPOAAAgAElEQVS8OURGRJLjzSEqKopaNWoQFxfL7j172Ju0n4oVytPkjNPoctH5/PTr\n7/59T3Z2Nh6Ph5ycHGJiY6hXpzZrzXo6d+rA6JefLXTb7UrcQ/lyZUk7dIj09AzeHT+aRUu+YvLU\nD7nq8i6MGPpYgW2Zu66j35rAm29NxOv1UrZMGU62T6T79Vdx6SUXFjpPrmkfzuSp4S/gOA5RUVFU\nqliBNq2a0/f2W2h0QgP/8wLfdwD169WhQ7u27Ni5i2++/Y5diXsAaN7sTO7p24ez27QEYMnS5Uya\n+gG/rTVkZ2VTt04tOnU8h7HvTKZGQnUSd+9h0dwPqVundoHY0g4d4rJrerB9xy4syyI6KgoHqFa1\nCh3bt6XvbbeQUL1avjw8/NhQ5s5fVGBZhb0PAOLi4sjKyqJy5cqUKVOGyMhI7CZnH3O+QQ/dR8+b\nrgdg4eIv+HDGHH5fa0hJTaN6taq0b9eGizufy+33PFjoPvNIAwYO5tMFi6lQvly+z5qDyclMnPIB\nX3y5nM1bt5OdnUWZ+Hg8Hg/pGRnk5ORQr05tulzcmVt7dicmJgaA8y65mh07Ewt9rdwTQiYkVOOr\nzz7ON+23tYa3x7/Ld2t+Yv/+A8THxREVFUlGZiYZGZlUqliBZk3PoOeN19PirCYAbN+xk/O7XPu3\nJ5oMzKNlWaxds5wFi5Yw7cNZ/L52HZlZmdRISODAgQNgWaz6cr7/+Tf3uZvV3/9Y6HrkuvqKrgx6\n6D7KlSvrf+xY+9NT7MZ0vepGGp/YkKkT3gTg5Kbt/PM2bty4wDoEtot6dWvz+kvPYjdu5H8s97Nw\n+YpVJO3bT2xMDJbHIj09ndiYWE5q3LDQ92RmVhbvvjed+Z8t4c+/NnM4PR3L8pCdnY3jOJzY6AQG\nPnBvgc/C79f8zNvjp7Dm5185fPgwNRMSuOD8jtzZpyeeCA+XXdODHTsTmfLO67Rs3gwAr9fL9Jlz\nmDt/EX+Y9SSnpB51OwGccsopzJo2rkAuMrOy6H1HP7774SciIyOJjIwotC3m5OQwZdpHzJozj782\nbyE6KjpfHhZ/8RX39H+U2rVq8vm8jwrddpu3bCMn4Dvasd6T69Zv5K3xU/j2uzUcOHjQ/zly6HA6\n4FC3di06n9eR23rdRNmyZQosB9zPgOt63Mb6DZuIiY4mIiKCExo25LfffnsIeMUYk5n7XNu2LwTu\nAloBVYAc3EExUcBB4HvgZWPMgsDXsG27J3AbcCbgATJ8k8oCWcB6YKbv9fJvpLxlXA7kJi0b+Av4\n9PuudqHr9Xds265ojDlwxGNNgQeBDkBtIDf5GQExvmiMSfY9f6xvvQ8BNwAnACkE5MG27fuAl4Cl\nxpjzfPNFAWkUPHYI3Ng5QD/gTWOMfwdg2/Y5wAPA2biXJ94JpAMVcbdJMrAcGGmMWRUwXzvfup3t\ne24S8BXwHPATsBJoAfQyxkwOmK+cb74rgYa+GNcCE4E6wECgszFmyRG57AncDpwBxPpy6AGigT3A\n58AIY8wfR8zXEfiikJwcbafbC/gE6A9cBpzse71chc33sjFmgG3bVYBHffPV8z03C4jAbdN7gRW4\n7XJ5QIy2LyedcNvJP2rDR7JtexpuuznRGLPpKM85Mh+FmW2MubqQedvhXr66LVAG2OqLcYQx5uA/\nidG3nAJtWOR4WUV8pm6H9KR8D3z3w4/cdd9AklNSiYyIoF69OuTkeNm+fQfZOTlUrVqF8W++xEkB\nX3D+WLeBK6+/hbi4OE49ueAXJHAPdMe+PirfY6+PGc/rY97xf2mrVbMGaWlpJKekEhMTzfPDhnBh\n53MLLGvy1A8Z/vwrVK9Wlbp1ahX6ei2bN+P+e+7w38/Kyuau+wey7OtvsCyLmjUSKFeuLH9t3kJG\nRiYJCQlMfvtV6terA8Cyr7/h3gGDyMjMJCIigqys/Ccg91gWDnDqyScxZfxoysTH8/Ovv3Pb//r7\n429Qvx779u1nb9I+HMehfLmypKSmcVmXC/N9+d/012a639KXgweTC3yBtSyLWjUT2LN3H1lZWZQp\nE8/rL46gbesWPDvqVSa++wGWZREfH0dOdg6HAwocsbExZGS430nu6duHe/reSnZ2Nv0efIwlS5dj\nWRaVK1UkOSWFzMws3zyxxMfHk5TktovExESSk5MBuLvv7Xy+dBkNG9SnYsXyBXK+bv1GklNS8Xg8\nfD7vo0ILJmPHTebF18YAUKVypUKLYi2bN6NVy2b06Xs/Xq+Dx7KoVasmO3cl+r/wxcbGUL5cOX9u\nO5zThjdfeY7MzCxuuf1efv71d6Kiomh8YkMOHDjIzl2JOI5Dj27X8tGsT8jIzKRl86b+gklS0j66\n3XInW7ftIC4uDq83h/R097uXBdSvX5eqVSrn2y797+3LqSefRN9+D7Fq9Q9YlkVkRASZAW0lMjIS\nr9eL4ziccdopTHz7VcrEx/P+9Nk8NXyUvyjj8XjyFWgqVazAweQUHMehU8d2dO7UgcefepanBz/C\ntVddCsCHM+fwxFN5RYMjl1O1SmVmvj+BhOrV+OHHX7jzngdJSU0lKjIyX4wAcXGxZGRk4jgOTc44\nlfFjXyEqKorb7xrgX7e4uDhSU/M+rx3HwXEcIiMjqZFQnbdHv0DjExtyMDmZHrfezfoNm/B4PMTE\nRHPo0GH/fDHR0WRkZvrzeGLDBqSkppG4e4+//UdGRhLh8fifBxAREYHjOHi9XqpXq8qcj6ZQqWKF\nAtuu0Qn1Wb9xk3/7XdblAj5d8DkAV152SaEFE6/Xyz0DHuXzL5b5H6tbpxbbd+zCcRyuufJShj35\nqDshtor717fvHPnCa4yfPM0/3yl2Y/707VdiYqIZ8+rztGzeNN/7rmqVytRIqM66DRv9cQZuu9yD\nmT633EjlypV4/qXRWJZFndo1KVe2LOvWbyQ7J9v/K6jH4+GzTz4otGAyaMhwZsye678fHR2N3bgR\nf27eQlraISqUL8ekca9z8kkn+vOwZOlycBxi42JxvA7pGRn+NtWgfl0ANmz6i4MHk4mLi2Pjxo1U\nr17dX7T0er1ERETky2VgUQag503X07lTBwY+/jRz5y/y7etqEB8fx59/bSE7OxvLcovUl3e96JgF\nk2kfzuKp4aNwHCdfMW3jn3/R+4772L1nLx6PhxoJ1dizdx+Zvnbl8VhUqVyZpH37cRyH0061mfT2\nazheh5btLyIyIoImZ56W77Ucx+HPv7awb/8BaiRU58vPZvvbxYwZMxg8+Am8Xocy8fHkeHPytf0a\nCdVJTUvzPzagX19u792Dz5cu4+77HyEmJobIyAgKExsTQ4P6dVnz0684jkP9enVo3qwJM2bP9bep\nalWrsOmvzRw+nE5UVCRT3hlNsyZnANC6w8Ukp6TS5IxTOZicwqY/N7vtISqKyKhIDh9Ox3Ecateq\nwbSJY0lIqMbhw+nH3J/WqlmDnbsSOavpGf6CyU29/wcetzD81VdfYVkWMTEx/jYdFRmZ78eVqKgo\nhj81iMu7XuT/LExOTqFc2TI4DiSnpADueyKhelV270kq8J5MStpH7773s279RiIiIoiMjPC/rwJZ\nluX/LASYt/BzHnz0SRzHIaF6NapUqcSGjX+SkZFJrZoJNDnjNOZ/tgTLspg87jVaNm/G4cPp3H73\nAL774Scsy6Js2TJuQT9A7Vo1qVmjunvHE0WDBg0Y9sSAfM9JStrHDT3vZOu27QCUL1+OCuXL+fc5\nuW0xPi7O/56MiPDQuFFD0jMy2LxlG47jcGmXC/lm1Xck7dtPrZo1/AWTI7ddZGREvrZYq2ZCgc/o\nnjddT3p6Bo89OYLs7Gy30BEZQVraoYA2XI2kpP1k5+RQr25t3h3/BtWrVc23nIPJyVx6dQ9279kL\nQJ3atYiMjGTrtu3k5OQ4wGrgfGNMqm3bL+AelDq4RYFI3IOwXIdwD1Qt4EljzFDbtiNxixyX++Y7\nAFQi7yA4HdiNe9DpAdYB5xljdgTGadv2IGCY724ObkGiLlDjuy4nFV4d/hst5q3bClxijPnN9xr3\nAC/7YvNSsJiRiXsQvR33QPl83IP1ekBN3/RfcYsW9XzLeQ23UBQLfBlQMDkT+BG3aLIGaATkfkk+\nhJurMr6/C4FLjTE5tm0PBHJ/iUkF9gP1ffcd3IP2mriFKC/Q2xgzxbbtO4HRvpgOAn/iFj8q4Baf\n5gBX+5bRO7dgYtv2ScBi3MJIBvAHUNUXa2Ah44LAgolt21Nwrwzk4BZHquIWIfC9Xgpu0SYduMIY\nsyhg3qbAq778NwHicduICdgWjXzrmQP0BJ73xeQNWLbjizEH+B237eX6EPfyzsvIK3hkkb89H/TN\nn1uVftQY85xt29cBk3ELP5m+nJfF3eZHbcNHsm27L/CGL87GxyiY9MNtlzuAQp+D27aeOGK+64H3\nfOuwHUgETsNti1uAdsaY7ceK0beck3DbaL42LHK8PMF8sZSUVO4dMIiU1DQ6ntOWLz+bzbxZ77Fw\nzvssmPMBzZudyd69Sdzd/5F8B1x/mPUAtGzehKkT3iz0dmSxZOWq7/IVSyzL4u47b+XrJZ/Sq8cN\nZGRk8vBjQ0ncvadAnH+s24BlWdzS44ajvl5gsQRg9NjxLPv6G8qWLcP4MS+zZP4MPv5wEkvmzaBN\nmzYkJibS70H3QGr/gYM88MgQMjIzad3iLPeLQ0w0o19+lheffcr9Qmu5X37XmvUMHf4COTk5PPDI\nEFJS02jVohlfzJ/Jxx9OYtniOQzo1xfHcfwHwIFycnLoe+9DHDyYnO+Lcp3atbjysksASEs7xCcz\nptC5UwfS0g5x34OPMe3DWUx89wMiIyJ49MF+XHBeR9IzMjjt1JN5evAjlC1bhszMLDp1bEdkRASj\nx45n5arvGPXyGyxZupzIyEieevwhGp5Qn+zsHM5u05KLOnciIyODatWqsXev+0WnevXqRPl6Rfyx\nzt3Ozz7zeIF8d7moMympaUf9BRrc3jfvTHrPv73PObt1oduubesW3HH3g3h9Y4jv6NOTSN/B8qmn\n2FSqWNFdtw7teO2FYcTFxrLs61VMfPcDnho+ip9//Z1TT7FZ/Ol0Zk4bz5L5Mxj5zBNERkQwZdr0\nfEWlXPc//ATbtu/knLNbs2TeR26hxuPh7rvvBstix85Enh7yiD/Gd8e/QfNmZzLkmedYtfoHaiRU\np0O7NmRlZ1MjoTqvPP8MDerXw+v10vTM06hcqSK//v4HI0e9xl+btzJ0xAv5CiSO10vjExvR9eLO\nWJbFocOHeXrwQGJioln61QomTvkAgA7nuL+Obt22g8FDR/rndw+ma7F2zXJu6XEDAHuT9tH33ofY\nt/8A/7vvYVLT0mjTqgVZvl4bd/bpyeBHHyAiIoKMjEzuvrM3CdWr8fOvaxn89HOMeXsSq1b/QHx8\nHN27d+fQIfdL84EDB8jKysKy3F99e/W4gV2Ju+nd935SU9MY/twrrN+wiYTq1eh6cWffwVsUd9za\ng0qVKvqLILlf1j0REcyZPjlfb5jTT7XJzMqiVs0Exr76PC3OaoLX6/X35tqbtI9BQ4YV2HZffTab\ne/re6i8UAnwyb9Hf/nI/eux4f7HEsiw8Hg+Tx73OO2++RHx8HDM//jRf0SHXR7Pm+oslluUWLmZ/\nOIlli+Zwbod2ZGRk8tCgp3h21Gv53nfLFs/hrdEv5OtxFFg8u+v2XkREeHhn0ns8/9JooqOjeO3F\n4SyaO52Z709g/sfTiI6KLhDPkZZ+9XWBuC++oBMfvfcOyxbN4aILOnEwOYV+DwwiOzub0WPHs2Tp\ncmrXqsm8j6fx4zdL+OnbL5gw9hXKlIln3/4DXH1FVx4f2J/Dhw9jWRaPPPKIv1iSnp7On3/+SU5O\nDh6Ph8GDHqB8Ofcg8KZu1+Z7n1/UuROvjxnP3PmLKFe2LG+9PorP533EJx9NYer40cTExPiLjccy\n8d0PGDriBf/zWrVoCrj71nsHDGLP3iSanHEqCz6eRq2aNcjKyqJRwwa0a9MKx4HMzEzeeHkkVSpX\n4ve163jxlTGY9RsAqF+vbr6Yx495mZo1a7D/wEEsy8q3v9u4cSNPPvkkXq9Drx43cGHnjhw+nE61\nqlW44ZorsCyLvUlJjB/zMnffeSuO4/Diq2P4euW3/GHc17v6ii58//WiQm9fL5lL10su8Pd+uury\nLsyYPZfIyEhGDR/CssVzmPn+BP9nX1ZWtlv0z8hg565EDianEBsby4ihj7Nt+048Hg9DHnuQX777\nkjUrP2fFkrm0atGMHTsTeeDRIQBH3Z8++diDgNsz5sjtM3XCm0ydOpWpU6eybds2vF6vr+dcFlu2\nbOHMM07DsizObX823a67iuzsbB57cgRm3Ub63vsQyckpXHnpxdx4w9WkpKZSu1ZNrrj0YsDtMfHq\nqGEF3pP3PfQ469ZvpPGJDenU0X3fNahfl/j4OH9cjRo2yPdZ+OdfWxj4+NM4jsMTjw5g6cJZzHhv\nPF/Mn0nL5k3ZsTOReQs/L9Dehj33Et/98BNVq1Rm3Bsv0qtHNyzLott1V3Lv/27Dsix27krkrjt6\n+3MxbNiwAsu5Z8Cj/mKJx2PRuVMHFn/6EVPeGZ2vLQa+Jz+Z8S6zP5zEgo/f9++bPvl0IXv2JhXY\nDoHb7vnhg/29RS3LIsLjYVfiHu7p2ydf+65buxaPPTmCnJwczj+3PTd1u5ZDhw5Tpkw8d/bpSXR0\nNHv27mPk8MHUr1uHrdt28OgTzxRYt1v73u8vlngsi4lvvcLCOe/z3nvvgXug2wJ4wbbtm3CLJdm+\nv7NxD2S/xy0IJOMeUH3ie84Q27bPA0biFkuygMd88zi4l9idDsTgHsg2xz2oPQn3YNbPtu1u5BVL\nHOAbY0xrY0wt4EG8cFw3twiwyLbt8rZtn497kG7h/pofiVu4uBjI7XKUDXyNe4A9D2jpe6wW8APQ\n0BjTwhhzAu5BfDZuD5G8xp2nie/vV8B43IP//cDZxpgyxpiywFm4vUcuBAbbtn0ZkNsd+y2gG+5B\nuteXd3yxtQDewT0uGePrkfKab91eBRKMMc2BGsDbvnW9hiN6Yti2HYNbVKgNLAVOMMY0M8bUBV70\nLS/3Fjhfb9xiSbYvDym+53wAfINbONnpiykWeN+2bX93eGPMj0AP3LYS51u/hcaYDsaYDkB33Hbj\n4PYOecKXv1WA7dsWXqAPMMuXhzrA1bnLMMa8DkzyrdsvvufFA7uAx4HDuL13ngOe8sU/wrbtm8kr\nlkwCqhtjzjTGNPRtr0Lb8JFs274ft4D1TzTxrevLAfEfeTuyWHKSL04LuMcYU88Y0xK3uPYVbrt5\n7+9e2LZtj289C2vDIsclqAWTGR9/yv4DB6lerSovPfc0VQJ+Ua9TuyavvTiCCuXLsW37ThYuyuvJ\nZda5X/ZOOrFRgWUWJjMzk8FPj8xXLPH/+hQVySMP9qPRCQ3IyMxk9ifzC8z/h+/1Gp/Y8B+9XlZW\nNu++/xGWZTFwwD20bd3CP61KlcqMGjUKy7JYt34ja376hekz55CckkrtWjXIynYPDHv37E7nTh3o\neskFXHf15TgO1KyRgMdj8cm8z5j/2eds3eYWfl949in/sKV5CxYzbuJU/+sd+aVmxuy5/l+KsrKy\n/Y/fdMM1jHzmCVqc1YTklFQ+/mQBL458ivp165CSmsboseOxLIsbu11Dp47t+GTeQiIiPIwaMYTr\nr7mcRx7oh+M4rFr9A7f2ugnHcXjp9bFM/WAmlmVx392306B+PVZ//yPx8XG89NzTjHr2SWrXrs36\n9etxHIeUlBQsy6JKlSpYluXv0n9iwxPyrcOWrdsY9cqbxMUdfd83b8FirurWm4O+3iqFyczM5LU3\nx9H7zn7+Hj2WZfHX5q1s3rqNOrVr8v6kMTw84G4cx+GTeZ/RsX07br2lO47jMPX9GfnyEPiL9uVd\nL+IsX/f33F/Bc3373Rp/HkaNeJI9e5P8wwv69evH5V0vIjs7mzFvT8o338+//s6cTxcSGRHBm68+\nxzerv/e3sYsvPI+hTzyM4zj8+PNv3H5rDxzHYc68hTz+1Ih8XaN9K8qwIY/w/PAh1K1Ti6ysbHbv\n2cttvm23YeMm7MaN/L/kPffS6/62FH9E3gc9dB/nn9segN//WMfgp0dy8GAyzZqcQVycb7hBx3MY\n0K8vN3W7hsu7XgTAD2t+5tmnH8dxHOYtWMzMjz/Fsizu7NOTBQsWYFkWBw8eZM+ePSQmukMV4uPj\n6XVzN5o2OZ2kpH28MvotFixa4iuA9mbBoi/87e2B++6iVYtm/u0668OJ1K5Vk/UbNvHYkyNIO3TI\nvy4//vwblmUx7MlBnNuxHa+9OILy5cuRnp5O1SqVcRyHpV+tYOGiL/JtO6/j5YmhI4mLi8t3MHvk\nNg+UmprmL0jF+rrA5zq7TUsGPXQ/juMUGI6WmZnJiOdfBiA6OorA73fly5dj1PAhlCkTz96kfUyb\nnve+u/6aKwCYPnMOKalp1KqZUCC+tm1a+PYzbi+e3P0PwJ69STz34uh8vW8KKyocTE7moUFD8z0W\nuK+Nj49j1PAnqVunFlu37eD96R8zeep0LMvi6cEDadigvn++wDy8PmY89z88mKysbLp3786mTZv8\nw6a2b99OTo477MqyLK6+vCsP3v8/HMfh2VGv5iu0J+7ew7iJU7Esi5eeG0p731CJeQsWc8e9D5GR\nkddDYN++/QXWb8/eJPo9MIhnR72a7/GWvjb2xZfL2fTnZuLiYnn1heH8tnYd3/3wE+XKluXdd0Yz\n5rXn/PtTs34DD9znxjnrk/n8vnYdACc1zvuM+fX3P7j2ptv41Ncb5kiTJ08mKyuLZk3O4I4+PZkz\ndyGWZfHk4w8xdPBA2rdrg9frMGPWXO7peyuXdbkQx3F4Z+JUzLr1WJZ1zM9Qs34jI194zd0+QwYy\n+5P5WJZFn1430vWSC/zP+2bV90RGRFC+fDmS9u1n0ZIv/QWZxo1OYOw7k8nOzqbrxZ258fq83taV\nK1fi9ZdGUK5sWb5f8zMfz11Q6P50xTerGTNukr/NHaugFR0dTbyvELpz507Kli3Lmp9+oWaN6jw/\nfAhPPf4QzZudSXZ2Nk8/+wJbtm6nZo0EBj7Qj6nvu++ZZ4Y8wnPDBvs/C3//Y12+9+T8z5b4t+vw\npx5lyVK38Ll12w7S0zPI3VRbt+2gj29/+vqYd46Zh+FDB/nvB67f/gMHmT1nvn+7tmvbyr/tTj6p\ncYHtejTzP1vCDz/+AuTuv/PaU4uzmvjb4sw585g89cOjvie7XtwZKDi8Zuu27XwybyEej0XTM09j\nwMAh/h8gLMuiwzlt/XkI9MZbE8nOzuakxo14ZdQzLFzs7r/73nYLA/r1pffN3fB6vbwzYSpDBw/E\ncRxWrPqOXYnukNA9e5O4p/+j/PrbH3lxBcTWtGlTcIdaWLgHvw/hHrSNxj2Ivgn3l/ubjDHvAAN8\nzz0P9yDTAp4B7vbN9wTuAXoMbs+KW3APiv8CTscdAnONb5ltbds+G8C27c64B2y5HHLLHYAx5kUc\nh+O6uUNQEoAhuIUEB7enQgvf/28ZYxYCfXEP/mNxeyQ4QGPcnhdtffHcFNijwBgz1fdcAuMNkFsw\n+QX3AN0BHjbGrAxYxhrgZl8u+wNP+5630BjzP2CU7/5IY8zlwPu4B7YjfDFv8sU8BLco8ocxpr8x\nJsu3/Azcgk7uzv7IOPsBJ+L2RulijNll23YF27bfwB0SlPuGO3Ine7Nv2ju4PXIa4fZo6AHc6HvO\nybgFs2W4vUH6585s2/YNuEWPMyhYxPHgHuhXxi1abfAtKw24xhizMSC3K3GLKxtwe9LcEbCcekB7\n3/IfJK93TV9jzDDy2nBvY8xQYCp5bTq3Dfcxxvi7rBljfqaQNnxE/DVs2/4It+D0T+Wuz6//j3kG\n4eZ+mjHmzYAY9wBX4faeOcdX1DyWgUBr3PyK/CeCWjD59ju3632nju3y/TKTq3Kliv7uvb/8ttb/\neG6Pj39SwNiydRsXXnYDW7Zux7Isrr3q0kKHbuR+Ud3uO4dKrpycHDZsdHuPnfQPCyYpqalcc0VX\nzm7dgos6dyowvWrVqlSu7BaHduzYRZ3atbj0kgvoevEFfL/mZwCuvfJS//Ptxu55HPYfOEDrFmfh\nOA6Lfb9OV6pYgWpV3S773XrewYBHhpCcnMIpJ59UaC6eftbdv3ksi2ZNz/BPyz0fxA3XXonjOHy6\nYBHR0dGcc3ZrvF4ve/a6wwG6XtSZj+cuICfHS9MzT/d/oep8nntwdfhwOq19BxA///I7WVlZREdH\ncXP365jlOyA+/9z2VKxQnuioKLp16+YOHypf3h0HD5QpU4bY2Fh/d+24uLxhnI7jMPDxZ0hPT2fA\nvXcWmv/APBztwDW3XYweOwHriM/JH378Gcuy6HfX7cTExHDGaacAkJ6Rwb79+7n2qsu4/547OKlx\nwwJ5yGXWb+QH37bMHdaR68g8+AtyvvH33a67yreNv/J35QeYNWcelmVx1RVdqFa1ir9Xg32S2z5a\ntzyL/vfeyeMD+3PaybZ/e+SeR+Ckxo38bSV3voiICH9b2bkr0b+uXsehY/u2/ueu/GY14BYC7uhz\nc4F83ta7h///3GFoD95/F6u//xHLsvxftAF69+xO/3vv5Ooru9K2dQvKlHEPcPb6hmXFREezb98+\nAP/fwHPb7NiZSM8br3cLQp8u9OchLfVQvvYG0OSMvOENGekZdLvObd+5xaZTT3HzVK5cWTqe09Z/\nDo/KlSr6t2mNhOr+Zcw4Yts9NWwUe5P2MeDeO/Md6FgW+bZ5oM8+X0pqmvu5/eD9dxWYfsWlFxMX\nG8vOXYn+/QHAgkVLSPV1VR9wb98C85UtW4YnHhnA5ZdeTE6ON18eAP9+pkL58oUedAYW/HL3P4uX\nfMmFl17PoiVfAlCxYoVC1wngwstu8A9nOJqoqEiuufJSHMdh2vSZpKSmkvB/7L1nmBRVt/79q54c\nYIG8XT8AACAASURBVAI5DEMuEMk5I4oEQaIoKJKDiBJEJOcgoEQlGUAFQURQRESS5CxIppCcYYYw\nOXf9P+zau6t7etDznOc97xfXdc01M91Vu3atHdfa97pX/nxK7znp4dr1GxQtUogRI0awZ88eAOLi\n4nA6nYp3Qc4Vr3R4maCgIGJiH7L/wBFV3qZft5GRkUHdWtVpUK824D5XNG/2HOV0MQb9A9zRNFIP\nW3fsJjw8jDEjhqjvcoUKpPPhYyfQNI3qVStTIH8+Nmz8RTkYIiMj1Hxqmianz5znxRea8O7APowY\n+jbnLhhua9pH8xbxyut9uHT5KmXLlGJAn+7Z9KPrOs2bN+e1V9rxx/E/yczKIjAgQDm69DKlME2T\n23fFmibn6NNnL/yjQ4AxE6aTnp5Bi2bP8XyTRjzfpCGN6tehjY3LIz0jg8PHTlCx4jOUiBbhjnfu\n3FPowFIlo/l1q0BNdLStaVLCcuemxYtijVyxck22+fS9kRPoNWAI9+7HUKXSs67n2uZFu0hnSXq6\nCPeLjIxE0zQmjftArXGSB+rsOaHztq1b8Puefdn6on0ttPfFFd+sUe26cdNvZGU5La4xjSGD+lGo\nYEE0TaNFs6a0f7kVIHhLNv+2PUc9zF2wFNM0szkivLWrZ9vZ2zUn+eIr4UwpWCA/LzRtlG38y77Y\n/IUmJCQmeR2TMbEP+W37LvW/vYyfNm0hMzMLH4cP3363Xn0uw+Rq1awGwPE/Tytnh9PpZP+ho2ia\nxptdX8HX15cYC2kq17TuFufQeeMvggJd+4A7d++rMbn9dzEfPAVtetT6HYTgHgFhlHdDoAQOGoYh\nwySseDdCEGgEgDqIk/g0BJqgCcIoXWsYhmlxoyxBGKLdrbJkY9TUdf1bYKtVhnxGtsr+5/4S5lvl\n9QTKI4zIRQjExw1EGAKGYWQhUDDvA1twGY8LLD1kIIxKJbquVwQkSZDDS70laiATERqTDqz0fDcr\nzOWSpVfZBrN1Xa9hq7NE38hwojYIdMRQq86yvt4M7okI/ZoIVIVdulufjzcMI1XX9TrAZYQzJgmX\n08RzUZTkfadsZXxjGEamYRhXEdwpIFAOS606dwHQdf0AsBoRtvUDgm/DrruBCEfHE4QDpIlV/j7D\nMO7oul4E4UxJBy5aTqHfrDLsA7OQ7e8IhEMpxTAMSXQl+36U9Vv27yLY+rDHe+PZh+3f6breDtGW\nHSwdvM3fiK7rPogwGviHDhMLGdTZ+vdLL3V8jHBWgaX3HMqpiHC2Xcc1Tv+Vf+V/Lf+nDpOB/Xoy\nc+o4OrR9Kcdr5KLstJ2Qy5AcO3FbTnLvfgz3H8RQrUolNqxZzrSJo7Nd43Q6OXdBlFnc4hSRcvXa\nDdLTM8gVGuJmOD1NIiPCGfX+YL5YMs+NmFLKrVu3ePxYnGBGR0fRqvnzfDRjonLI5MkT6cYNIJ1F\nxaOLUa1qJUzT5NZtcQjw+EmcCiP689RZChcqyMcfTqJihXLZnnv33gPFHTJu1HtMHT+SiIhwt41G\nNcuJcvPWHe7fd3E8VHr2GSaOGU6Z0iU5cfKMMgyk2DdP4eFhNqeUScni0QQGBnDilJgnq1etpK4t\nUUKgRwICAtQJr8PhIMQiW/U8Af3iq285cfI0bVu3oGmTBtne0a6HEUMFMkQSitpF9ouqlSvy/arP\n1UbbNE1iYmJxODSFmpAb1AB/f/LlzUOhggUY0Kc7GRmZ2fQAkJmZyQdjJuN0Ot14SKR46kGWX7as\ncFxUerY8vj4+pKSkum2CDxw6BsALTRuTJzJCIWzOXbiorunf+01ef60j9y14MohQFE3TyMzMdON5\nOHfhooUmuQqIOPgLFy+ptmxY3+UwkSf1TRvX9zoOKj1bXv2dmppmOTufZd6sKUwe9wHVq7l0pJcp\nRb9e3Wjd8kW3fpPHQkmdPHMOgFy5cpGZKVBQATYkRpFCBSlpcdEI2L/47vQ5MU5kfwPIny8vmqYR\nGBBAvrx5FIdNSnIK0yaOIleuUDRNo0a1KixZONvtnR5azhrpsHM4NK5euwGIttuybSebf9tBzepV\nVDgbgI+Pg8zMnAmp13wv9ixFixTy2of9/Hx51nJcHTl2XH2+9HPBX1e1ckUqPJN9fIPgTClTqkQ2\nPQC0av48LzRtxIWLlyhdqoQa97INDlhOMX9/fzX/XLh4ibT0dMpY19epWd3tHilbtu3kyZM4C/ny\ndKlWRfT7q9cEp4V9PvDUQ5nSJZUhOfaDoQQGBnLnjpj7pBNN9g05VzgcDqKjRP3/PO3amx04eARN\n03jh+cbqM/ucOX/2VJ7RywieiBB3Ykmph7atW/DLDysVSal97ny1Y1s+mj6BXm92wel0cvioaLtm\nTV3Pk3rLssJcBvbrSZfO7bl0+Zp4B2tNO3n6HEFBgQwa0Jsfvv2SYlHZuWK6du3K/Pnzefml5lSu\n9CwLP57OxLHvq+/lulHC4oBRz87KUujEnNbQDRs3c+bcBYKDgxg9Ygh+fr4MHzKQpZ98ROlSLsTf\n0WMnSElJoW6t6mpsREdHqUONXLlykZaWbs2T3tu5WhWxpl25ej3bfHri5BkiwsMYN2oY332zjNyW\n3hMSvR8UJiYmcvfuXWJjY8mfX8xTL77QxI141bR0IUMlq1etxImT2dcm+1r46NFjnq1QHtM0OWPN\nM82aNlb3FSyQj+9XfU7/3m8qVFXtmtUoHh2l1sL0dO96kPNIyRLuTncgW7smJ6dkaztXn/I+58TF\nxXP6jKjzpLHv42tbA6TIvijHkre2GjtxBgkJidkOBwC1J8jIzKRq5Yr07tEVTdPU2ps7Vy6lhyPH\nTgDw+PETUlKEbSvns6JFBP3FeWtNy5MnUjkkt+7YrZ5XpFBBNSZffqm5DW3qFX0kO1Qqwgh/C2G0\n1bVu2Ge71m5MPUIYWVIuGIaRgkAs9ALs7MvS4VLJMvRkOT7Wc57gQpWcx5s4zf/sx/XscOv3NsMw\nbhiGMQyBmGkCYDkKjhiGMQfhSAm26nPJqtsfHiSpvohwCF9EiIc3kbqV/BgnDMPIHoMsZD/uoS9/\nABKqts0wDDmo5fv4ADUMw/jZqvMB63O3zmm913CEc0E6b+R3hYBnrPeU7aUjnAu/AJUMw5hrfe7Z\nea5ada2KIAcGq6/oul4YwfECAl203/q7pOXsqIPoO10Mw+iM4GmRdYpAOHhMYKxhGHcRoUmvI9A2\n4NLrBcMw5MmLvU9JuWardzICGWI/Talsu85eRhrZ+7CneHueLDMQEY5WAcgOy88uOgLREmcYxq1/\ncD0IvQci3m9/DtfIPtXE60Pd+3BvbO3wr/wr/1v5P82S8+wz5Xg2h40/CGeAXFxLlxLOhAcxsTx+\nEoevjw/BwUEs/mwFp86cIzU1jaJFCtHseffNUcEC+Vj6yUfZmOql3Lx1m9nzFnH9xk3y58tLx/bu\npz/ypKx0qZKcO2/w06YtXLp8FYePD6VLlaB9m5ZuhLR/J8eOn2TKzPmYpkn9urXc3v/6TTGPFLOM\nlYSERL5a9R0bNm7G19eXvj3f4IZ1zcOHj6hauSJ/njrDiDGTmfPhJCaPG0G7l1uxbfsuFd5gN2x8\nfX3UZq5BvVoUiypKcFAQcXGusJVCBQvg4+PA6TS5dOUqO3fvw+FwUKdWdV7t1A5A1cHu1JGniL6+\nvkQXK0qRwoW4c/cepik+M02TW9ZGr1iUyyklDWJ5b2ZmJr6+vgQGBopwnNIl2LlrH9t/38OlK1c5\nfeYcISHBDOzbI0cdSz1s3S7CuHLnysWjx084c/Y8vQcMweHjQ4H8eRk/+j26vNIegDe7dmKJZZCa\nQMECBQgODmLXnv1MnDob0zTJkyeCWXM+oVP7NpQuVcKrHkCQC1+4eImunTvw1+WrPLTB+73pwTAE\nxLpEiRL8/PPP7Pl9Gw6Hg4zMTL797gfK6aXxcfio+PMypUqQnJJC9SoV2XvgMKMnTGfL1h106dyB\nBvVqc+68wUfzFqFp0KJZU8aNHEar9l25dv2mWxjThKmzePaZcly5ep2w3LmILhbFmImChy0oMFAZ\nDN+v36hQHG90eUWdENpFGktSSpUsjqZpFCyQn4OHj7Ft5y4Aypcry6sd26rN8559B0lKSkbTNDp3\nasvCRV+wc9deJLkrCJLGAgUKAJCQkECBAvl4YJ1ESrTH5t92sGf/Ibf7XHrQ6Nb1FRwOh+pvTtPk\n3IWL7N57QI0tuzx+EqcMk4t/XUHTNDq2a8N6i8MgPCw3E6Z9RHBwEDMmj2HyjI9VfSIjIhQiy1Mu\nXb7KKcsh9KIX9JmUooULcvQPk2vXbwJw8OBBLl25BkDnji+r65xOJz37DyYsd24a1KtNuzYtlBEv\n9SDl4cNHTLTq3LVzB1VngPU//aKQSHZi5JrVq/LT2ud4f/QkwnLnotKzz7Bl206v5fr7+zNj0miG\nj5701LCJIoVF24usSQ6vxLFSJC9BvryRNG4okMGejh5p5Nnnims3buJ0Otm15wDdu3YmMjJCZQoq\nU6oEGRmZ/LJlGxUrlCcoOIjfd+/D4cj54EnqQZ7qHzryh6iL7ZrSpUooZ8KVa9dJS0vH18eHkiWi\nefT4Ces2/My6Hzdhmib37z/g5KmzVK5UAafTyV8WijF/3rys+GYNqamplNfLcOPmLbbt3P23vCr5\n8uahmeUIiol9yKJlyzl89DihoSG8YaGMft0q2q1woQJcunKNAvnz8fDRYz5fsZLzxl9kZWZRPLoY\nzZ5vzJwFS9A0jX69urmh0jxl194DaMDuvYdITEqiTOmSvPBcI+YsWKquMU0TP19f+r79HnkiI6hX\npxYvt26u+HSKFBaHpKmpadn6w7sD+/BC00bKgZUrVy7iExK9EqyCWE8SExMJCQkhKCgI0zQZMdT9\nAHSLRaoqHXHFoopw4+YtNE1ze7Z9Lbx6/QZFCxfkyDGTzMws/Hx9KVkimgcx4rAiMkIQJUdHR2VD\nv9jXwnx587hlubOPyXcG9GbYyAlKZ57tCmD8JRza9rb74cdfME2ToMBAjv95mmp1mrg9f+R4wfnh\ncDho3LAeG3/5TaDsjvxBr/6DiY6Ool3rllSuVMGrHgC+X/8zu/cdpHGDukRGhHP1+nW37+Va2K3r\nK4wZMYTxk2cKh4mvH2lp6az/aRMJCYk4nU5++HETDerWcnM2+llzVY83XmX8lFl8tnwllStWoG7t\nGhZhr8kPP/6Mpmm0fLEpBQrkcxuThQouYekX32CaoNns3nPnzoHgHzGBBYZh/CK/03VdpmC7bHsV\neaIts4VcQ/AlaNZnGIaxB8GfYBfpKfZBEKk+Yz3zLK7T7d+ta7x6tv5miD9N7F5q+UwZBtQcaKbr\n+kMEiqOdrusTEcayhkC+yMwJbpl2rHpXRqBVKiDCflSjWc6IvAgHhUQ6ROm6vg3hbFhvuGcZuuZR\nfgbC+eFZZxm+owG9dV0/YBhGMiKbzQdAWV3X51h/+yBCnRzW348RqBEJhZTOlZuGYSTpuh6NcGDt\nt/Q2SNd19zgxl8y39NcDYRuZwGVd1/MjQltM4LBhGAesEJssqx5lgf7AV4YtM5NNJiDQI+cRiAcM\nwziH4A2RosJXrOwyXRAoFw2I1HW9uGEY1wzDuK/r+hoED8w0oL0kXbXCVEZa9ZShM7J/nzIMwz3m\n2ya6rlfAvQ/bZTewzkYynN2Dml3k+5zVdb0qoo0rIHR2FqErT+SJHJ93LYSNN7lm/S6u67qPhaKy\ni+rDhmHs1HW94T+o67/yr/wj+f8lrXBOMnXmXFJSUwkKClLZa+RpPJpGm07dFGJCyvfrf6ZJw3p8\nPHMSIcHBFIsq6magS3E6nXw8fzFx8fE4nU6qVq7I9EmjCcvtno1FxmJfuPgXHbr0clvk9+4/xFcr\nv6Nfr27ZSF89pVf/wVy8fJXY2Idomka7du0Y9777Rk7GzWdkZNC6w+vcuHWb9HRBRDlhjIi9luz4\njx/HsfH7b5g4bTa/bt3Jcy07UKJ4NIuWreDe/Qfkz5eX6GJF3dI6BtogrZER7qmapTgcDkJDQ4mP\nT2D12vXcu/8Ah8OheCcA5QCIjBQHGg9iYvlk8Rfi9Pa5hoSGhBBhy2pz5dp1Yh8+IjMrC03TiIgI\nV99dunTJ7dlZWVn4+vri5+eHaZqsXL2OpUlfo2maCnFISkqmfZeefPDeO17fQXI2yLaLixfZgC5f\nvc5VywA1TZP1P23m/v0Yhgzqx9B3BrDqu/UkWOkaH8TE0vCFl5XBBgIGvGLld3yz+nveH/J2Nj2A\n4Bn5fPlKoooW5v2hb/PBWHdOh7j4hGx6kH36o48+Iikpye1dN/26jcPHTjBq+LuKzPDuvQe83vMt\n7t2PQdM00tPT2f77Xrb/vpeQkGBSUlIJDAhgQJ8eDH67LwDffPEp46fMVCeiwUFBXPzrMhf/ukxA\ngD8BAQEMHTFOneY1bdIAh8PBnbv3+PDjhQCqzp4OE6fTyaTp7iTLkRERfL5iFfMWLiXLFpqyZ98h\nVnyzhhmTxtCkUX1VdsUK5Xm7Xy8iwsOZu3ApqalpPHz4kOjoaEUCHBcXx4MH4tkSFQMCcVOieDGW\nfSmQwKfPnqdF29e4cfM2Af7+DOjTXelhy9bfFU/HN99+T5HCBdXYkpKWlsaLrV9RRktScjI9ur1G\n355vsPaHn9A0jZXfrScuLp5xo4Zx7vxFft68Vd0fGhLi1WGSlZXFCIv0UdM0Cj0FsSZDXx4/eUJi\nYiKjR49WbeDn58fUD+eo+knjfcu2nXz97Vpef1XwI1y5dp30jAxlmI6zuGXGjRrmxtEhx0JISDDJ\nySnKYQsizOtBTCwXLl6iVfPnCQvLjpizl2s3Bv/u3eSzI23zgV0uXb7K3XuCu6ZwYRfyOCoqCsMw\nCAgIIDk5WTlM5FwhywWBRmzWpjPTJ40m9uEjBMFxKh1e68Ffl6+6zec/b96q+Go8pbYVUiBFOvLt\nfAl2uWOFdubOnYuDh48x9IPxblnJLlz8i1ff7EfPbq/RqUMbhcLoOWCwW2aR43+e5qdNW9TJ+9Nk\n5ep1rFyzjlu3RIa5MqVKMG3iaIpHR7HvwGF+s/h9ypYprTIOvdShq+KaADhw+Bgr14isJ2FhuXmj\nS6ccnzdq3FQ2/vKb5Xw0aNKwHlMnjiI9PUM5d9es3QCIcEaps82/7eCz5StZvGCmyIAW5r7m2udT\nO3ILUIgpu6Pdm+TJI5w88fHxyiEDsPaHnxTyRrZ9ZESEay639UX7Wvj4SZxbv5Xtev+BWB/OW07v\ng0f+UPO0FPta6NnX7WPHjtzJSdSaZrWdDAcCsS537TGAjh07MnnyZHyAbTt28/tucTgbHpbbcl4L\npMadu/e4d/8BB4/8weq1G+jZ7TWverhz9x4z5ywkd65Qpk4cxZdfZedYfPjosUCg1RIINIlUTExK\nwjRNjv952m2+atamMzOnjiM0NISkpGTOGxcpVbI4nTu2JTMri4WLPqdn/8EUyJ/PRf4dF88rHV5m\n7EhBE2Efk0PfGUBKaipfrVyL0zTp3ncwAQF+XL9xCwSaYJphGJ5pr+QEHAPKATARYST+aBhGguVo\nMBGGajld1/1zMILtqa1k9pfbwE7DMDJ0Xben9ckeEw7/G4+JfLZm1TVO1/XvyU6AGong1HBYn38N\nDEIQl5qIsBIAdF2viXBIXAFGWNd6ijSCTetZGiLUQ05WfXRd/wWBskjEFcIipQquzDg51flVBI9G\na8MwpPNgGTAEEYKUjqsdjyFQBHbUhCw/xiL8XYo78eeLCMRQNjEM4zcrQ8tChENIQ4TWlEGE/6xH\npBvGMAynrutxiL6W1zCMz7yVad3X13rHaTb0iKdI3b6MQJ6Ay1lVD7ig6/pgwzCWIhw6j6xyL+i6\nftF6xxIIB9JgwzCWWqm0O1nPfpqzxIFwkgHcAtxOSAzD2JXTvU+Ryrbff+Dexi2Aobquz/AgfXUb\nnzmI7FMORP9W13rpw//Kv/Jflf/TkJynyaJlyxXZ3aABvdQCLsNxsrKyeOG5Rqxf/SUnj/zO/h0/\nM37Ue4SGhrBr7wGGjcg5JaSUx0+eKOPl3v37/L57X7ZrJLQ4IyOTgf16sv2X7zl9dBdbf/6OHlZ2\nkKVffK2ysXiTtLQ0Dhw+xkNrww5w8eJFjv5xwu26FOvULCk5mctXr6uQj7j4BHbt2U9ScrLaMKal\np5OYlERIcDD+fn5kZGRy8a/L3H8QowxbT26OlBQXUtIzRt8ugQEBiidF0zRe69TOLdZdnu4F+PuT\nmJjEgHfe5/GTOIKDgxj2rkADBlhl+PiI1ILffPu9uj/AMqouX7nKp59+6pbaVP7t6+urQimmTxpN\nr+4iRPG5xg1o1KAOSUnJTJ7+8VNPXmXbSYOg2fONc2w7O+EjCPi0dJaEh4fx3uC3+G3jGt54rSNZ\nWU5mzvlE6VO+T3p6OiPHTcVpmkyfNJqgoEClB5fuXG0Q4O9P7MNHapOalpbG/fv3uXjxIikpKUp/\nsbEP3dL5vjNsFA6HD/NnT2VAnzfJkydS9aukpGScTichIcGEhoYowyIxKdnNGZiU7ErbmJYm3lXT\nNHwsFFKjBiIcZ9T4acqA0zRNvatdxk+ZybHjJ90+O3LsOB/NW8QLTRuzaf1KTh/dxeYN39LyxaYi\nI9XYKfToP5ir127g6+PD6BGDEUTEGeSyTpNN08Tf31+dBmdZjqasrCw+W+4Kk5b1yxXquu/a9ZuY\npummh/j4BH7f4xrjnmNLyux5i4hPcCE3nU4nZ89d4MTJ06r8I0ePU6dWdVo0a8qEqbMUeaumafjl\nEJay+LMVnDtvEBISLHT5lDEonQCpqWlMmzaNe/fuKWLTGbPnK8efw+Hgz0M7WLJgFkWLFOLiX5dZ\nuXodgYGBJCensOKbNYAIsdi5ax91alWndYtmrFrzgwfniqbSPPv4uC8Du/ceVH3Cs/3t5Xbt3MFr\nRihP8SS6zUkP9tTJAf7+PHgQQ6tWrTh6VIQOhYeHW2mkA1S50yeNpl/vbgpJFx4eRlJSMu+NnKjK\nGjVuKjEPHzFr2niO7vuNY/u3Mnv6eCLCw3JEBtnl5q3bKiQyJ5H9KSUllbeHjlLkwpqm0aHtS7zz\nVh8cDgcrVn7H4mUr1H1VKlZg1fLF/HloB4d3/8rs6ePJlzcPN2/dVo4+QOkiMDAQLSgvWlBeRo6b\nwtVrN8iyDPbYh4/Y/vsezp43eG/kBIsotLTiDErPyOC1Tu3V+Px9y3rlWASIjirqlknKU37fs1+l\n69U0jRu3brPvwGEu/nVZzeNhlrOgcsVn+GP/NhbNm0mJ4sW4fuMmfd4aSlx8vFvYGOB1jpEiM7s5\nTZedYdcFiIMB2Sdk6CuIkLOpM+eiaZobt5F/gL8tvMv92bKvpqWluYUFynaV775kwSz2bt/IO2/1\nBsQcsXf/QatM1xpgL99z7HjqwZtI53p6RgbNX3iO0NAQHA4HZUqXZPDbffHz82P9+vVMmzaNR4+f\nMGHqLBUWk5qaxttDRymC6nZtWqo6y774wArvtddz1PhpJCUlM3rEEPLlzeOmByn2PYFpmvx16Yoa\ng5qmMfr9wbRu+aKFOsxHUlIyQ0eMp9Kzz2CaJp8vX0VGRqZaA0JDQ6x9mcs57+PjIDIiXBG028Vz\n/b5z965aAxDZTeIteL5dZOdO1XU9N4IENi8Cti9jt1MQhmomIuxkqEcZ6LoejovHQUM4AkxgmI2Y\nNBZB3qkBjT3LAFwsGv/TH2EUStGsurdDOH+KIsIaJPGQDy7D+1mrLkoP1vsE4EJt9LLQHZ68IOAy\ngn2BWETYyyyEQ+htRMahlxB8MdjKSLPqMBbBUYJHnffhCl+6h+AI2WyFsuRGOAdM629pVDsRjh9P\nG0aWXxqBUDmM4OQIRHCufOKhE08JwZ0o9FlEaEmGVTf7hCHf72mZWHTr+8sIjpOcRHLDgCCHlfr4\nFhEK4w8s0nW9E6JfpiFCcnwQnDDFrXueAClW+ufV1mcncWVM8iZLcRHJvif78P9S5Pv4I0h/SyL0\nWAaQIVGjdV0fbrvHrV/mIPZ+qfSeQx/+V/6V/6r8jx0mVsf8r8onS75gwaLPLcRCI3p376q+K6eX\n4Y0unRj6Tn8+/nAS5cuVxd/Pj8jICLp0bs/ShSIDzZ79h9i7/1COz9A0jUljR7D15+8Y2K8HMbGP\nmDX302wZEJo2acAr7dswf/ZU3h3YhyKFC+Hr60tU0SKMHP4u7w7sg8zk8CTOe0YWh8OHXb9t4OTh\nnWz4bgXNmzfn7NmzvD1kJNt3uuJyfSyC0hLRUZw4uIO92zcyY/IYAgMCWL12Az36vqs2oqZp8sob\nfVm7fiPVq1Vm3bdfcOrILvZu38j7QwZy9dp1Dh877mYUeRpCOYk01kFwU4x8390BL4lUExOT6N7v\nHc5duIjD4eDDyWPdoLyapiniwc+Wr1Qb/szMTI7/eZr2r/bMkbwvJSWFtq1b8O2KJehlS/PVyrUU\nLlSAj6ZPYOnCj2hQr/bfnjLKtqtdoxqaphEcFOS17RYu/oJufQYpdImse8UK5ZgzczLBQYHMWbCE\nDz9eyJgPhtKuTctsRK4AcxYs4crV63R9tQM1q1f1WidPElqn00m/Xt0ICQ7i/PnzPHnyxC216YMH\nD/Dz8yXZahOxocxk+bL5rFj5HUs+/5rQkGCWLJjF5HEfoGkiRa2mwey5n/Lu8DFs27GbN/sMYs/+\nQ24GUJnSJWnSqJ5wTAUG0OvNriQmJCqHwDfffs/ho8epV7tGDoR6JmMmzmDdhk1omqYy6oAIaXnx\n+cbMmz2FUiWK4+vrS4nixZg7awo1qlUmIyODk6dE3Pv7w96mSqVnGTJiHDNmL+Degwduhk5SUhJZ\nWVlERkYSFRVF77eGcufOPQW5/2z5Sj5Z8iUhIcFuSKjnn2uIw+Fg9txP6d73HXr2H0yQFerlcDh4\nu3/PbGPrkyVfsHL1OlXGZ59+TK0aVTly7ATvfeCCywcHBzFt4igmTp3F4ydxDBnU72mkg5w9tyJu\nAwAAIABJREFUb7Dk868pVDA/eSKz89rkJI+fPGHDhg2UL19eZTp6/CSOt/v3VM8LCAigccN6fPbp\nHHx9fbl05Rr16tTENE3mLlzK1A/nMuXDOSJdc+f29BowRBkygAq9kNwGh6xTcil79gmHScN6bnyA\nxMY+YtqseYSEBDNtojAe/+kc83fyJC6eTb9uVfUD6NHvHX799VdiYmIUEi0qKoqEhATi4+NZNH8W\nsbEP+XLFt8rBXqlCeRrUq01GRoYaP/HxCXy5eC4vv9Sc0JAQQoKDad3yRebNdqUrfZrjZNeeA276\n8ybSgExNSyPA35/7Dx5YhvozTBo3goH9evJW3+7CMb1zD11eaUevN7vwxZJ5VKtSkYCAAHLnzkXr\nli/yzRefKpSQ5HyQurAbitLZGlWkIKOGv0t6RgZLv/iaV7v1Iy4+gfCw3Cz4eBp1alajS+f2TB73\nAeNGDVPjs2CB/JQrW1qBZs6cu8BlKwzMm3R9tSMOh4NR779Ll1fac/XaDUaOm8rO3fvo1b0rnTu2\n5bVO7dV4Cw4O4rnG9Vm1fDH58ubh7r0HfL4858wu/1Q8dRFhoScTEhKUcb1730EGDv6AjIxMoooW\nZtCAXm5lOBzZeT2eJqlpgqdJOvZ9fX3JmyeSgf16Kn6bnbv3u60pdrl/Pybb2PknUqt6Fbp0bk+/\nXm9y8PAxEhOTCA/LzeL5M3mrbw9mTB6NaZqsWbOG4aMminn4hefQNE3VWYYnOxwOVWfZF+Pi3Umb\n5RrQpFG9bGgfu9jXtdTUNHp0e422rVuQL6/IeBccHKxC3urVqaXG5MOHjwgKDOTCxUv06PcOPfoP\nZvqs+SQkJNGwfm0R4hgZYa3fwSz5/Ct6DxjihsJKz8igZ/8hfLVSZEDVNI1NP6zk2P6tzJ07FwQK\nYRawTtd1+6CV8P1cwA4EZ4IT6CHDGmxyCmFUT9d1faqu64V1XfezMohsxYVCkSiPBYZhrPMoY7RV\nfmnrumBd1311XS+j67o3BMc/lWjcjfq8CGfNZMMw7loG7x5EtpaHVh0uIFIg/0h27o7piIwtn1rh\nRznJSQT6YrT1N4DTMIwYwzCWIJwlJtBS1/XmtvseWXVoiUBBaFadZyB0U8+6BoTx/giBXFmKCGtq\nCSwG7iAcFx0QpKCtEc4Wu00ijehwBAKluWEYxw3DyDAM47phGO/iQs+4LV66rs9COFkK43JY5EI4\nE44inEJ7dV33jhjyLrpV1ixvZKs2WWk9+xMEygbgCCLbTXeEw0NDhA3tR3DVXEaEgwUh9NnXeu/P\nEGmQIxDt38kwjGybZ13XHbquf45A6eTUh/9T2WjV+RXDMCZYus80DOOKYRjvAeOt95mg67rcIOVM\nBPf38k/78L/yr/zHkuNuV9f1NrquX9d1/ZKVLkvKPyH8+UeSlZXF+Mkz+WSJSGHbsH5tPp45ye2a\nRvXrMPaDofTrlT1TBwiysnpWGt9tO3MeJ5qm4ePjQ1TRIrzzVh+1aVm5ep3iLgBErP/4D3IkGO3V\nvSvBwUGkpqay/8Bhr9f4+YnNqL+/P+XKlmbevHl06NCBzKwsZs11pTCXmYI0zUFgYAB580TSrk1L\nVn65iIAAf86cu8CefeLUyqFpxMY+5JlyZVn2yUdUKK/j5yc2bb26d2XOhy69JVmZNYJtxnJ6mndH\nxadLl6tNU9EihVj26cdqsy4lJFgYqtNmz+PsOQMfHwdTJ4x0i7VOS0tD0zSqVHqWLp3bq89N06RN\np2507TGA5JQUReAIov3lxistLY0Pp4ylUKECjBw7haysLKaMH6lOnt7u39OtTG8i265QQe+hD/a2\nO3X6nMuARPSPgf168VKLF/jmi0WEhobw++79/LRpC4MG9HYVYpqkpadz7PiffP3t90RHFWX4YFfm\nE6kHKfZsUGnp6eTPl5dh7w7g8pUrbkaq1IPT6eT27TvqHcUJdSv27jvE8T9PERwcxIplC2jSqD6v\ndnJxg3Ro25rQ0BB27trH6InTycrK4vVXO6i6hOXOzZqvl7J04Ue80aUTqalpbNu5C1/rNHL9xs3M\nnvcp4eFhjB8z3K3OUmIfPuKHHzdZ/B4vkS+fHXUMA/u7GyUgws4ePXaFSvfq3pXur7/K7r0iZa+P\nj4OYmBhiYmKItXhKQkJCVFhOQEAAJ06eYcGc6YRYurx2/YbSw6xp4+lqvef2nXu4/0AQFx87fpLb\nd+7yyVwXUqdVixfU2Dp99jzd+76r5h4fHx+eKa/TqEFdvvpsIXVr1yA1LU21Q483XuXY8ZNs3bGb\nqpUr0qPba6rcDI8wwfSMDLc+LJEwaTmMQfGdeNa1azfx9/fnww8/VOSz5cqWVsSpdilRvBitWzZT\naBw57r5Z/T1JSckkJyXz7ntjePT4MQs+nu52b8P6tWllZTJ6EhfPxl9+A0Tow8Ejxyhfrgx58kS6\ntf9H8z4lKSmZEUPfVv0uOChnRIKUVJuRr+Wgh+0795CenqEcfEGBgRw8LJAlYkzcJjMzE39/f3Ln\nzk3u3Ll5tVtf5n6yjM4d26rsJKGhIW5zhaZpNGlUX2VHskvtmtUUSbMMBfImu/cdVM7tnERm9DBN\n00IywjPly7rNp/16dcPf34+09HTq1q7J+x5cG1KKR0dRpbLIECMdMVIXdpEO5D37DvLm650Z0OdN\nQIR4hoaE8OWSeUQVLcJLLZsxYfRwOnnwdQH8smU7oCkUyo7fc15DT505h4/DQad2bRg/+j01L377\n3XoG9uvBpLHvK5JWextHRoTzRpdOmKbJtp27s/GRpOXgRBfvKPbQdgPdrgtN0xRheHx8PAEBAazb\nsIm3h4wkLT2dokUKsWLZAvLbMkKlp6WrucSzL8q+GhgYkA3F0P31zoRaerLXWYY1ZmRkcPDwMbc1\nQJY/esK0bGMnJ14Wu7zUshlNGtbj62+/U2FCsl0BWrd8kejoaJGB5uARqlauSPPnm7jV2c83e+S1\n7IvSqZiWls616zeZs2AJ4eFhTBk/Ul3rqQfApb/0dIKCAhn8dl8+nDLWjUdJ6iEoMFCNyYuXrjBl\nwkiVWvrQYUFs/iQujgMHjzJkUD/q1qqOpmm0bdOCwoUKcvL0OTf02fc/bOT4n6cICgpUjsyAAH9C\ngoNp0aIFCBRFPILw1b5xlN6s+QjnQRbQxzCMDbZrghDG40GEkQ7CQXALcaq/D8HtcdF2zw+GYWRD\nohiGsRvBHSINweoIZ44BdDSdJv/JDyKMxe6Ze4hIm2x/dobFEfEJYtrNApYj0CFyMAVaHA+DEUSw\nI21FZENNGIaxxTCMwYZhzLQ9P9D2/X5EymIQKWBlGY8sPaQhEByaVYex1rv0RfDHANy31bmdVd9P\nEU6RwsBHhmFsMAyjL8J5Ewy4BrdAXUiZ7s1RgEC1SCkDoOv6s7iy54yxfe9rGMYB4AWEA6Y0rhAs\n+X5PQzMEIRAT3z3lGqyUwNeAUQjdHEekRJYTjaxzIYRj4BbQ1DCMPYZhpBuG8dgwjC+BSQjdBSHG\nwItenIHouh4MbEC0iwl86a0P/6diGMZiwzD6G4bxcw6XfIToQ8G40FDZ+pQXsffLZICn9OF/5V/5\nr8rTdoFjEFDD2kB/Xde7W5//V1I0JSYl0XfgMNau34imabRq8QKL5s3MZqz/EylfriymaXL7b2DT\ndmnbugX58+Uly+nkjxMn//4GS/z9/ChdUsQe37pz9x/f17+/SIl789Yd7lhpHyWnxZO4OLdrSxQv\nRrOmjTFNk9NnzwuDyIJd9+vdzS3ziZQXmjZWIRgyrWSELQb78RP3Z2RlZTFizGQWLHKFXo4f9V42\nThdApfyNiYnF39+POTMnZ8t0JMvPkyeSCaOHs/KLT9Umt0a1yowbOYzSJaPdUCL2LC4yA8D8T5bx\n1+WrdGz3kkoFCvCMl7TJ/1ORbSeN4GALqiylnMUJV7RIITq0fQnTNPl581aKFimkyFNNBN/JyHHi\ndHrapFFu0GpPPYcEB6tMIk9s39Wt7Z7CUepBkhjapXy5suz4fY+AVbdu6ZYmW2ZISUhIVHWWvDcD\n+/dSIRN1a9dQRIqDBvTGx8fBjZu3SUlJpUR0FKZpkp6Wzuj3B1OsaBG3OksuhtRUsQHu0e01pk4Y\npdJCa5rIKFOubGnscvnKNTq93kedWmuaRotmgvhUpoZsULe2Quc8fvyY69ev8+TJE5KTk1WWifz5\n8lKvdg2eWPXQNJQeNE0T/e3LRbzaqR3169Qk2sp8VU4vQ+FCBVR9CuTPR4nixXiuUX2BqrHSnNeu\nUY2srCyaNq6vru3b8w03x5xetjRTP5xDUGAgMybb91MirbhdPPuwHIei/ngV2W/SMzJ46623KFu2\nLLlz5VLvkZOTUIbO3b59hwmjh9PdCj0LD8vNi82eY9zIYfz8w0o3PUgpHh2l/pYZXo4dP0liYhJN\nLMLVuHgXiu7YiVPUtZFBA0RE5Jx2WL3bY9uY0DSvyLztO3ejaZrq25GREW5jJC0tjWvXrhETE0NS\nUhLBwUG8/mpHvvt6GeNHv8ejx0/QNI0C+fO5zRWmaarUwd5E6th+gm2XtLQ0jv5xIscsRVKCLaey\nDPmsVaMqX3220G0+DQgIUHwxN/9mrZJ6kCEwnvOFZx1Xrl7HvE+Wqc9ebt3Ca6p5u2RmZrJ7r0DP\nlLd0dOu29zVN6qFqlYqEWg7AXm92wdfXl8SkJJXlRPYHzzVN1uX2nXvZ5sgnHv/bRYbO2I1+uy5C\nQkJU2F5ycjKVK1Vk7KQZZGVlUbZMKb5dsYTChQpmWwvtY1JKVlaWmnvzREZkq2f5cmUIDw/PVmf7\nGnLz9h23+57ExfHt2vXsP3Q029jxLN+brFy9joFDPiAlJZXChQqwavmibO1asqTILOXr48OMyWMU\n4kXW2ZvY+6Ksy8hxU0hNS2P0+4Pdsr15q6c3PXiKvC8yMsJtTBYpXJDfNq6hguXEjIwIp1f3rvz0\n/dcM6NOd2IcCbFCsaBG6vyHSyUv0GaDWwhdtjiG7GIZxDeEc0ICutq+SEHvewgjj/TXDMFZ43C5P\nAR4YhvE20AiBdNiOSBc7FsETIRcLE3FCn1NdvkY4ALDu+wURolAe0/xP8wpvR/A3SDnzFG4MSaxZ\nEoHoANe+vxAC1QDQ28oI5KmHnFARsQj9ejJEn7A+L4G7Lr9GhI7ctD57KPVgtYFcoG7b6iyNgf0I\nHZ9HkHpKmYRwBNk9gnYiW68be6t/SJGERy9b9T6Pu3Mjj3VPOoJkVQNes9LmykklOyu+EDkx/GIY\nRkIO12Ahl7623sdEpLduaqXRlXW+Yz1HlrnAs0xd1wcBH9s+2mIYxp94iJXxZx/CoWgCcywH1P+Z\nWPqUpLeSzEkSCObMOu7qU07goeX4WWF95tmH/5V/5b8qTyN9TZcDVtf1tsBOXddvkPME+o/l3v0H\n9B04TJHw9enxOu8NfivH62XIgjdHAYgMGOCeJSL24SNu3rpN1coVcyy3cOGCxMQ+zAbHTk9PfyqZ\noZ13Q/5/99594uLivZ5kime5SPxu3LhNXFw8BfKLsX/bi+NFZpaIjX3k9rm3FH9ScucKJS4+XpGm\n5c+Xl1yhoSQmJXH7zl2iioo6mKbJ8m9Wc+36TcUX4XA4vG6wN2/Zrrg9AgIC+XLJPK8pCOU7yJSW\n1atVpmyZUlz86zLtX25Fx3atada0EZ3e6Me9e/fIzMxUGU40TWPyuJGkp6fzq5XRYN2GTazbsEmV\n72kwNm3ZERDGvx1unVPIjxQ7qsPXz9ctItJOKFy6ZHHAZUDYQw/+PHmGW7fvomkab/RyPyW21/PI\nsROUr9pA6dfezss+mUO/dz9g586dpKWlqb6UkZGRDfqfnp7OXSu22zMVpY8V4+/v7+f2Xe7cuYiM\nCFdhHfbMF+FhuVVmF0kKefX6TUxgxJjJjBgzWb1H977uRLtOp5PlX6+mcYM6PHgQq+rqdJpuhKOH\njx7nnWGjiE9IJDAggDTL+SHH1d17ImShZIlopoz/gB4DhildxMTEEBAQQJ3aNbh3P5Z79x9w8a/L\nNmeblk0P1atWonrVSiQmJvHFV6tY/NlX3L33gLPnRMbCQgXzExoSwr37Dzh01JW6t0+P18nMyuLw\nseM0sqVVtjulAAYPH6v+frFNZ/W3aZpqgw+Cp0DqTvZh+f+nS79k0bLl6lp7H5Z9Q9M05s+fz/z5\n89V963/6hQ0bN6v7ylURe/UPp4xVc6LU69lzhuJq2bp9F1u372KKjTBWPqNb70Fun8l32G2F40hd\n3Lvvzr924PAx9Xz5/nYxTZOfNm3BxzLewDU3+Pj4CLSIx3yXkpLKgcMyxbHgbSkRHcXQQf3c+oVp\nmiKlbe0aLPtkDkWLuubUs+dFO5ctUwqn01TzmgZkZOQ8J2hW2IBn6JyUQ0f+IC0tnVo1q6lsR56S\nkJDIwsVfqv/r1KrO54vmZMtaBOCjMkH5kpGR6TUFOrj0KqeCFcsW0q3vYA4ePEhiYqKb3vPly6e4\nOsJyi6wyTo+Us5mZmTgcDrf3PPrHn8QnJBIeHkYey0C21/m+lYq9UsVnlB4k1xGI9NsR4WHEPnxE\nTOwj0jMyKFWiOAAxMQ9VBjQAU66ZPj6q/YODgkhNS+P2nZwymKK4hew8OCuWLVT9ItRCdyQnJ1O1\nahXi4hPQNI16tWsw/+NpyknsuRaWLFmc/YeOuvXFu/cekJUlDiaKRxfj9p27qh+BWB9KlYzmxs1b\nOdbZ38/PbSzHxDxk8xaRUe5pY0eOSYD2L7dixuQxzJg9n69WrRVcNHppln3ysdcMRjFW5p4sZxbN\nX35VlW2apioTxNy0YeNmNE3j/Il9qi+apkg1/+eps2iaptYAb/W8fecu5arUV45Bux481177nsBO\nNOzr60tkZAQREYKTqF2bliqzkWmaireubJlSas63P0euhd7I/W3iZoxZKGnpIUpBnLx7S11a3Pp9\nERRqYr9VRkWEw6MowmBzADeeZgxbIlMMnzEMo4388HHv5jnf8XSpiHAmOBEGdIBF3BkFRBqGYSfL\nk4tmGu4pk0Fkjylh1W23rrvtXeUmxASa6LouN04lEOgGmSq5uEeZcoLJwMWrIXV5Tdf1XxGIEsMw\njAkAVkiGvPY04qBWymMESSiILC5pOdRTw2U4yzCpf0IfIDd98vTggmEYdy1C19xWva5a38k+FQBU\nQ/CHqPfLQUyewl2i63oYIkyqsXXtKgQHhzdkjNStiQixspczB0GMayK4VgogQnI8n2fvw1nAEMMw\nPvW87r8huq4HPCXbDbj3FXD1qUK6rvvmoIPi1u/LhmGYFtFrTn3YLvY+XNwwjBs5Xfiv/Cs5ydMQ\nJtd0XZ+j63qItSB0QEDjnn7U9jfyICaWbr3f5q/LV/H18WHS2Pef6ixp2rIDFao34pvVOYfWnTsv\njATJOn/v/gMaPN+Grj3eUgz53kRmNihgwXWNvy5TvX4zKtV6Tp2YeUp6ero6MZfP+3nzVp5v1Yke\n/d5VBmr2Z7lOFEdNmEr713py7cYti+hMbEztIjcIqRasVRqmT4u1l9BZ+2lcpWfLA/DnKeG0l86n\na9duoGkazz/XUJ3sem7Gfvl1m1vK0GfKlfHqLLl/P4Y7d+8LlM/deyz+bAVOp5PKFsGbfHb+/Pmo\nW7cuDoeDLp078MfB33E4HPj5+jJkxDgaNmtLxQrlqValojKA5Y9e1j2Vc8UK5aletZI6Obe3XU7c\nMva2A1Rb+VpG/snTrmxqkpg1NDSYmNiHJCYmqTa4ev0G1atWylbPihXKuz0vV2go1atWIl/ePEoP\ncxcuoWLNJrw9bBSbN28mNTVVkRcKaLQgG5Rx8qJe5xTUPSY21u0ZV66KPVBUVBG3dMZJiUkqbSe4\noyAyMzNJsLhLQkJcCJiI8DD1LrIv2J03fn5+1KhWmRrVKnP33gMys7LcEGGnTov9xJFjJ+g/aDjx\nCYlEhIcxbtQwQKBQpCMwd65QTNPkQexD8ufPR69evZg/fz5P7l/BTIkl9clthr0rQp1CQoLZ/vte\nqz1ClB6Sk1NY+8NPqr8BtHu1O4uWrcA0TUJDgxWSpW7tmmrueWyFCAUGBvDe4LfYu+8g4WG5qVzJ\nRQwpUWBScufKRWhoiNuPN8mbJ5KI8DBCQ0OULktaaXsDAgLc+ojswwXy5+PMWbH/KVumJNWrV6d6\n9eoUKljAus/fLZW5LDdPZARXrl5Xxsviz1ZQtnQJ9b2/lXmqSOFC5Il03zuVLVOKSs8+o/4Pyy2Q\nFp66kA4nUd9y2cZljWqVs5FC5omMUI5TQJHnyvTFf550zyZ45tx50tMzyJUrVKWrrlqlIvnz52Pz\n5s3s27eP5cs+4cCuLaz47FNu371Px9d7q3np5q07XLRSCNetXUM5TzRNJBw9edq7owNQnBM5kZ1K\nAlzPrDlSkpKT6f3WUE6ePqOeWatGVa/OEqfTyY0bt3A6ncyYvYBZcz/Jdo0UOf/LcvLkieTOnTsU\nKVJEhaAA5M+fn/DwcBXSWjw6WiFtAOLjE6jVsDnP1mjMzl173Z7xx4lTANSsVkUZqaVLizXt2PGT\nNG7ejte69+fRo8duRMBSUlJSefwkDqfTyfBRExny/lhKlSpBcHAQWU4np8641l7ZJqVLlXDrD6Zp\n8qf1v6fcvx/jap9Q+zvnU3PnM+XL4ePjQ4N6tUlOTkHTNNq/3Ipln36snCVS7Gth5Yqi79v7oqxX\n4UIFCQ8L48zZC2iaRp48YuycPH2WyhUrPLXOuXKFcueuCO8KCgoky+kkMjI827ipXrWSG4oDxJis\nXrUSJaKjmDT9I75atVZxZ/Xp/nqO6Z7v3xfPiypa1DX2rTm9UMEC6jl580Sq72VflHuL88ZFr2ta\n1SoV3ZxsAQH+VK9aSWUi+vPkadZ8/yOVaz9Hw2Zt1XXx8QlKD1WrVHSNSWDfgcOcOXfBbQ2Qcvjo\nceFkDwykauVn1ZomQ8YAtRY+euR+mOQhMi43Xtf11xCGqFzMjntzlui6XgRBOAoQrev6GMsRga7r\nzyB4T4oiQgEkGd12z3Js5XXWdX0EXgxXcDm1/qc/iFAVcBnNFYE3EYb9Dgv9IEXu1y/jyiAj+Vd0\nBNJgv/Vb/hzxqGqc9Xk6IgPJOwgyVYBqHuS61XClpq1nfZap6/oIXddLIrg1ACra+BBlx7lqoT/s\nNkZu65n7cviRRrB0XBzA5SRyJ+GyxIODRG7MJTJFIk6kDurarrXHej9r/b5uGIY376l98tmRQz1C\ngd8QzhLZN4fkwDdSFBe6wl5PdF3/FJezZIv1AyIkx16GZx9u//+Fs0TX9YqWwylF1/UqOVwTgHCA\ngSuN8TlEWI4PUCuH4mWfkuNX9k3PPix/bnhct5enk8r+K/9KjvI0h0kvBPGVCWAYxk0EwdDa//Rh\nGRmZDHh3BDdv3cHf34/5H09TKWFzktKlRAjFxl9+y0a6CcJIk3Dyl6yY/IIF8qvN+eq1G7LdAyLV\n4YOYWPz8fGlQV4zNEsWL4eNwoGka620nunb5ZvU6UlJTyRMZQV2LO6VOreo4HA4SEpPc0o3aZfly\ncbJcXi9DowZizG/ZupMqlcS8+906V2a0W7fvsn3nHjRNOEh8fXyo8IyOaZp898NP2QsHrt+4Ray1\nuchr21i1ePF5TNNk/U+/kJmZqYxFTdMYN2oYjx/HITM52OXkqbN8MG4qpmmq0/zTZ85z7fpNPOXb\n79cDULN6VRYtXc6CRZ9z6MgftGz+PAC/bfud+PgErl2/yebNm3E4HHTr0olvv/sBgAb165CWnk58\nfAJtWjVj1fLF2X4KFyzoRlo5/6OprFq+WNXb3nbXb97yqiPZdjKDhcx6U94KeZAb1PSMDH7evNU6\nqaypMo/IuPFz5wymTRydrY716tZE0zSKFikkYO7lyrBq+WJmT5+g9FCsWBQZGRlc/Osy584JQ07C\nmxMSEjBNk4gIQXpXs3oVTNNky7adVLScTz9v3qpi33fvO8i16zdxOARPg6yzr68PWU4nP/y4SRmz\nfxw/qQzMTb9uU7H6tWtWZ9/BIzgcDoYM6q/eZeKY9wGxqQu0iFML5M/HquWLWfnlIvYfFPuJ1q1e\npEolYUQs/3o1N2/dUfwBhQsVYM3Xy9h3QFxbv24tZcRIWP2uPfuJiX3I0qVLmTdvHlu371Lt9cOP\nAmFUo1plVq9dbxGR1lF6yMpyMn3WfNXfAOrY4Prly5Vl8287hIPulXZq7pGSlpbOb9t+59KVa27h\nXwArVq5B0zSqV61sGRXw+6/r+WP/NvVj74/RxYpaRmsdDu3+lT/2b1O6XLf6SwIDA8jIyFAhM4Dq\nw2CSkppK8WJR/LT2a1atWsWqVav4cuk8NE1k7Gr5YlN1nyy3QnmdX7aIelz86zILFn3O8881Ut+3\nb/uSVUeThMQkN4TeuJFDmTtrCg7rHbKyBErOrosr164rZ6emacydNcXr2Oz1ZhdVrqZpNKhXm369\nJZ9GpuK9ebNrZwIC/Llx67ZqLxDzCggUVEpqKsWKFqFGNdc+68iRI3z48UIWLPqcZ8qXJS1NzBWS\nb0Oidl54rhGFChbgcyujUhXL6XP0jxPKYLPLxb8uKwe0t5AlgL0HDpE/X17l9PKU90ZO5NSZczgc\nDqW3tT9s9Bris2bdj6SkpuLv74fT6WTbjt1er7t9565Cs0huFB8fH2rXro1pmmq+iIiIICxMoMJb\nt2zGgD7dOX1W3PdcI4FkyJ07F/ny5vW6pp05e16gvgL8uHHzNn5+virModKz5ckVKgza1d//qPSg\n2xx3K9esIzMzk+DgIJxOJwcP/8HjR094vklDsVat+xEQTqnv1on03C80baRQhD3fFDxAR46deOq6\nAt4z6Tx+/Jjbd+5imsI5I9Gq0yeN9opGta+FDevXzdYXV6/doNbCH3/erPpix7atMU2TtT9spLEV\nqmavc1KS4N8MDAjg0hVxGF27ZjVeeK4RpmkSFBiYbcwsmj+TtPR0N2fEuJFDWbV8Mb6FFTFbAAAg\nAElEQVS+vqouuSwOr19+826Xb9m2UyHyVn+1RJXfs1sXhY6R+5SG9euo+Vv2xVyhIQT4+3P7zj3e\neatPtnp2eLkVpmnanC55WLV8McuXzld6iIgIU2NShlAdPiZ0WqtGVQoXKqjGZIEC+Zn/6Wes+GZN\ntjUARGYxTdN4tePL+Pv7qzVA8tSBWDtM01ROdE/Rdd0fkZpVGu5f4Qq3MIHauu41Tk+e3O1GkFJO\nBppaWXF+RRisjxFpXesjjPWFXishpB/wIYJc1rOOAabTyX/yY9XTtOqXijDOo6z6hGGFIVlGaX/r\n2u8RRKHgQkpUR4QxNLL/IJxAJi5kxQnr8x2WHt9AOExuITgoulnPq4WwEUA4OUojjPYKlh56IVLz\nyjoPsOr4vvW8+R51zkAYz48862jVRxKhSvjSdMMwGljvqgFDPEh/pdi5OiTqRg6w2hYKY61VRk+b\nQ0iGXh3Bxf3hgoy6i3RuJBiG4f0ET2TAqYVoN2ncvJnDtZKb47FVr966rmu6rr+Hqz98i2iL1tb/\natLw0oefNwzDBeH+74qBQK+YiLHiTd5B9J0HWA4lK0znJ8T79fe8wcqa1BlbmmTDMP701jdsfUS2\nzwnrs8aGYeQUQvWv/CtPlRwdJhaj8Qp7eibDMO4bhjHkP33Ysi+/UWiQ8aOG83yThn97T9+eb4gT\nkAsXGTNhOolJLnLww0ePM3CIyLDW/uVWbuEwg/r3wjRNNmzcrE7TpWz+bQdjJ80QnCC9uhFpnb76\n+/nRo9trmKbJqjU/8M2336v7TNNk1Xc/MHfBEjRNY/iQgep0vUD+fHRq3wbTNJk+ax47d7lSmaan\npzNv3jzWrFmDj4+DEcMG0adHVwIDArh+4xY+Pg6cTifLvvyGnzZt4dx5g95vDSUtPY0Af2Hstm71\nIsMHD0TTNLbt2M3Mjxe6pUW9YPxFv0HDlUOpgI3grm3r5hSLKsKNm7d57c3+ylBuWL8OV65c4/if\np8idK5Q3unRU9zidTkZYpJV5IiP46rOFtGn1IplZWQwaOpIbNofET5u28MXyVUhi1tatBAnllA/n\nULRIYapVqUR8QiLd+71D77eGkJmZSevWrdl74DCbft2Gn58fI4a9TZ1a1TFNk/FTZnHQIoIDcYI7\nbvKH7Np7wGt6Qyn2tpOoCyne2i48PIysrCxM06R2zeoEBgRw/sJFBg4eycB3R3Dl6nXCwnKTP39e\nvv72ezRN473BA2jdstnf6qFmdXenet3aNZQe1v+4iWLFimKaJoMHD2bq1KnkypUL0zSJi4ujcOHC\nBAQEkCdPJLOmjadMqRIkJSWz/+ARcuUK5e69B7w1eAS79h5g/OSZghzvpRZMmTGHK1evEx4eRreu\nIu579txPVVrOW3fuMnz0JH74cROTZ7jCXC9dvsKTJ3FEFS1Mh7at1Oc7bSm3w8Jyqb9NU2SpkW3X\np+frvD90EJqmsXP3Pt7oNZD4hAQCAwJYPH8W23buZsu2nfj4OHi7nyt0qm2bFkQXiyIpKZl+b79H\n48aCs2fuwqWcOHmacZM/5PDR4/j5+XL9+k0eP4mjRrXKjB/9HuHhYdy994B3h4+maZMGqr+dOnOe\nW7Y22bR5K5mZmbRp9SK79x3i3HlDoTEkt8S4yTMBaNxQHCQlJiYxZuIM9uw7RFBgIJPHjVBtN3DI\nBzy0Qldsp334+vhQtnTJbKFUUkKCg1Xf9MzKtf/gEWZ8tABN0+jf5023MkoWj+aVDmJeWfbFN273\nxcQ+ZPD740hKSqa8XoY2LzVXepBOoT49uuLv58et23dJT0+n+QtNVPnXrt+k91tD1U5z287dzP/0\nMzRNo3HDuty4eYt3ho62hYbkTF31ZtdX3PqHhN8nJSfz3qgJ3Lx1h2JFi9CpfWulhw/GTlFOjLMW\nmu/6jZte9dCmTRt8fX3589QZDh0+Ru2a1TBNk3GTZzJ81EQ2bNxMQIA//Xp3U3NFUGAg0yePoX6d\nmmRlORk4+AOFIBDPusV7Iyeo95N8Una5cu06N2/doXGDutm+A/jx51/ZtWe/qHPvN5kzcxJ580Ry\n7/4D+r8z3C1F6r4Dh5m7YCmaptH99VcJCPDn/oMYhowY6xbSdcH4i95vDVXZXiT6DGDgQLEGBAUF\nUaBAAfLkEY7xlJQU2r/cineGicyo7Vq3cONt6de7G6Zp8vvu/cxZsIR0q+yz1njYtmOP9Q7dlWHs\n7+9P356vY5omiz9bwc2bt5UenE4nK1evY/4ny9R8GhEeRkpKCoOGjaLtSy3w9fVl4y+/MXveIvoM\nHMb9BzEUj45i1579JCYmUaNaZdq0av6P5tOcRDqcTVOEVLVp9eJT0ar2tXDc5A95/bWOmKbJiDGT\nGfrBeLUWlilVwm1M9un5umrXaTPn8nyThqrO63/6RZGmlyldghVfC0frW317MKBPd6UHmTUO4OHD\nRwwc/IHSgxsHyq3bzLX0WrN6FcaOFDauZ9uBcJaMnjBd1LN/fzfESu8eXVWdDxw66vYMe18c0LcH\nPd7MPibBfW5q0qi+WxnRxYqqtlu46HPlNH/8JA7TNNm775DlFOviNiaHvivsoM2/7cDh41BrQO8B\nQxk0dBSHjx4nPCw3b3R9Ra0B/v5+DOjTXT37zdc7Ex4exoOY2GwhgQ8fPgRYh0ApPAIaIELPHwDP\nI4xKX2CDruvK+6fr+hvACIQxNsW6TkM4RJYiHBJZCG6/GYiQmFWGYTyNAE8aa24TiK7rBYD1OE3+\nox9h9O41DOM7YKpVzzGI03MN4XjojDAqoxG8IPmAAdY7vPMP9SBRNFJmWp9XBb6w/teAuZbhLk/z\nfkY4nEwEwa5MaTsUqGGr80yE86EcgrBzpUed51jXzdJ1vbtE+1j17ITghjHxQFIA4xBhV1WBNbYs\nLOi63g1BEAouJwWGYexAZBZyWO9xCYHKKWWVMR1h/DsRxLT1EaiUnGCC8tTyibcvrXpIx8Z0XJw7\n06y2k9f567o+GRiIaLvBCIdTTUQozzRcbTUeEW6TB+GwWmF75Me4+vBrhmF4z1jxXxDL8SHbbpCu\n6+9Ix5Xl5BlovbMJjLAR22J9ngG8YaGS5H35Ee2SG9H3/82E86/8n4uWE5ngf0lMUsXJQUZGJvWb\nvkR8QiK+Pj5UqljhqTc2bliX/tYp5crV65jx0XycTpMAf39KFC9GQmKi4pF4rnF95s+eli0efOHi\nz1m0zAXXL1K4EBkZGYq74dVObdVJuhSn08n7Yyazect2TNMkLCw3UUUKc/vOXR4/icPx/9g77/Ao\nyq7/f2Z200noBJJA6IMUEbugoAJSBURBLIgIIlbsveGj2LF3BVRQbCCIUkVQEFEUpA+9Q6ghCaRs\nmd8f98zs7Gajvs/vlefB93yuK9dudndm7vne95Rz5pxz6zojbrzWbZtDWVkZN952Hwt+XIxlWdSq\nWYNaNWuwees2jhw5SmJiIo89dLc7Vd+87xdy2z2PUFJSglO0LhZN02jZvBkfvvcaKSnJTPzsSx5/\n+gWCwSApyck0aJDL0aNH3VokGemVyD9cQO+eXXnmiYfd9axYtYYhw2+NmkJQ15WjRtM0mjRu6Fb6\nBzh0KJ9NW7a6UQXZWXUIhoKsW7/RjcpISUkhFApSVqZqbtx+y3CGXTOQQ/mHuXLwDWzashWfz0dO\ndh22b9/pFi9MT08nKSmJAwcOqClgn3iYHt06c+DAQQYPv5X1GzZhWRZ1ateiWrWqbNq0leKSEtLS\nUnn0/ju564HH0DSNb7/5vFydCafvptlRPgkJCTRr2jhu3y1bvpLLBg0nHA6jaxp16mSye0+ea+z5\nfD6qVsngwMF827F2JbfdPJz8wwUMuvZm1q3fiK5rNG3ciMMFhezavQdN07jt5usoKyvj1TfHcPqp\nbfjgXXU93b5jF1cNvZE9efvw+31YlpouGLDfB9x6LqFQiK8nf0Szpo3ZsXM3Q66/jW3bd9i1UDRC\noUikVVpaKqWlZYTDYapWqcxrLz7FSSe25L6Hn2DKtBnu2Pfm4gP4/T6CQTVLUXZWbd55bbQblbVv\n/wHO63IRgWAwajlN0/D7fATsvPIG9etRrWpVLrmoJ5qm8eDIp9ycc5/Ph6ZpBO111M3JomaN6Fl1\n+vbuzlvvfcCOnbuxLIukpCT3CaWzPecmvcUJBmPefJGMjHSWLV/JDSPu4VD+YTQNfLovypDQdc3t\nR13XaNyoIRs2bna1SEtLpUFuPTZt3spRe9rWxIQE/Al+iotLsCyLjPR0XnjmMc5ue0ZU3yUk+GnS\nuCF5e/ezz67tc+N1g9m9O4/JX0136w/EUlZWxnU338WixUtcPevmZLnnsP4X92bkg/a5KNm+1yo5\nQGlpKSPueoh53y90l2vRvBnrN2wiGAySnVWbd19/gcqVM6KOuwb16xEMBtm8ZZu7XGJiQlSdHl3X\nOenElrRu1Zz3J3zq6mM0acTGzVsIhy2aNG6IuW4Duq4z66tPoqYR92K0buu+d44759xXuXIGH417\ng0YN6rs6OE/1GzdqwLbtO9yCwpde0ieig0eLCePe5vGnX8CyLKpVrcKRI0dd56+mQW69uuzdu989\nV7w6+knOsgsFX3fTHSxfqYpn59bNISUlmfUbNxEOWxWeMwHGfvAxT49+lVdHj+KEZk3p2P0SNE1z\ndejZ9wo22Cl+J7Vuia7pHD16lPUbN7vjPjk5iXA4TGlpmWvUP/PEw8yaM4+7H3iM0rIy/H4/9XPr\nEgqF2LR5qxultn3HLmpn1mLezMmuFp999hn3339/OUeC83+Vyhk0bJCLpkU/C2nTuiVjPvjYTcOr\nVzeH1Z7UpQH9+pS7FlqWmkZ80pSvVYpbWioN6ueyY9du8u3z6S03DGX40EH8unQ5N4y4m4LCInRd\no2qVKlHpo4mJiWiaug/IzqrNxA/epkb1an96Pj3z9JNZtPhXTmlzoh2NFRkXkyZN4r777nP3oXmz\nplEOplhq1qzO0KuvYMjwWyksOqJmWUFzH8JomkZmZk3y8vaVOyZXrTEZdqMqLqzrOj6fHne2J13X\nue3m69xZ/T75/EtGjnqecDhMjRrVyaxVgw0bN1NWFnB1OLvjhWiaxgfvvsL0mXP56FMVWdO4YX0y\nMjLYsXOXm7Kr6zrJSUkEgkECgQC6rnPppZfy6KOP4txrOThtdhxylTMyqFqlMlu3q1QcZyzGOyYD\ngYB7X9H/4t6cdGIL7nv4CbKz6vDtNyo92tt3Tgqpd0adzFo1KSwsKndMPvvCa+5YrFmjOvn5h93z\nt67rNGhQj10791BSWkpKSgrPPvEQnc7vELVvy5av5Lqb7nTTb+vn1iU1JYX1GzcTCATCqAKSL6GM\nc1AG+BaUk6AVKsLBQqUm+FF1KcLA/aZpPm0YRnWUAd2MyIPFsOf9QSIRK17e8xaSNQxjIuqpuIYy\ndNeiip8mLDw9+9+ak73dzzt/QdVgybcNyjdQdUE0VNqM98lSEFW/JNV+vc40zQ9sJ8JcW4swqnZI\nVZSzwkLNDJSMKrI6zzTN8+39uQl4wdahxP7z5pYVAM7N5DdAb9M0w7YO/ew2brS35TgVQqhCr41Q\n/bIPlaazGOVIGGgvtx8V9ZJNZOrfCahpf+uhpuD9wG5nV1SUSJq932tQjqa69nK6vd+dTdOcay9T\nExWF0cbe3i6gNirKBSLjxdGyS0WGu2EY61ERNutN0yxXHNAwjJVEUlIW2a8tiBSSDdjbSEaNzzLU\njE4f2jUlxxOZcQj7t06/l6Aiq5zwxQQiKS5FVFAM10PUGI7T9lxUP1hAkwpm4dGBD4EBdhsPopw4\n9VH9EAYeMk3zyTjLDgNeR/XRHtSx28Levy1AW9M0K57WLnpdjxAzhgXh3+WYOUxWrTG55PIKi4mX\no8+F3aIMj5Wr1zLuw4ks+e13Dhw8RFpaKs2NJlzcpyc9unWucD2//LqUoTfcTklJKT6fj2pVq9Cm\ndSsu638Rbc+seOaBGbPn8tmkr1i1xuTIkaNUrVKZ0045iYGX93PTaOLhFGhca26gtKxUzfDR7hyu\nvvpqGmZFzyixfcdO3h33EQsXLWb3nr1gWe7Vt25OFt27dGLYNQPd6UVB1eoY98HHLF6ylH37D5CU\nlEjjRg3o2bUzK1auZuo3s+jVowtPP/5Q1LbMdRvp1a/81Mxeo9TBMZziFUL0Pll3uPXmYVw/9Gr3\n/yNHj/L2mA+Z/e18duzchc/np1JaKsFQiKKiI6SmpnJSq+YMHXyFO0MKKKNy/MefM33WXDZt2Uow\nGKR2rVq0P+cshg66gmAoSMful6DrOnO+/qycw8Rh4JAb+XnJUjuPW6uw7zpc0Ic9eXvdGzvLskhM\nSnRriWSkp9OyxQkMvOwS2p0VSaksKSnl3XETmDHrW7bv3IXf76dl82YMvLwfnc5rz6tvvsdrb411\nZ8pwyD9cwJvvjGPu/AXs2bMX7JvMwkLlyAoEAhQVFXHo0CFCRyJPp0tLS3l//CfMmP0dm7duIxQM\noeka4VDYdUqd274dVw8cEPWUce68Bdx290OUlJbi8+kk+BPQdI1gIEggGCQlJZnrhlzFwMv6RdXk\nmDVnHiPuerDC/obocXPjdddw0/BreO6F13hn3IQ//K2XJx97gE7nt2f8x58za+4CtmzZQmlpKbqm\nEQqH8ft8amx368yVl10SVYj5wIGDjBv/CfO+X8j2nbsIBJSBGg6HSEpKokH9eqSmpLJ7zx725O1z\nHTmxbYmX5tekUQPee+NFMjMjkVpRfZe3l5TkZPIPF6DrOh+8+wqTvvyaL6fN4KJe3Rk18v5y6wRV\nM+e1t8bw2lvqwWNyUhLNjMb0v7g3F/fxTPnqcZg4vPTa27z+9jhAFcvMqlObLp3PY9CV/d1omdjj\nzu/3YzRpzLnt27Jz1x5+/OlnN/qkWdPGXHnZJfTt3QOfz8esb+cx4s4H0TQ1xXJ2Vm26XdCRnt06\n06PvFei6zsypEyt0mDiFIEHVagmHw1SrWoWz257BDcMGk5PtplwTCoUYP/Fzpnw1g81bt1NcXIxl\nWfTq0cVNX4unxU8//8rYDz5m2YpVHDlylJTkZPx+HyWlpYTD4ahzhbfvQqEQn3wxhalfz3QdZ7l1\nc+jZ/QJMcz1fTZ8d95x5zXUjWLL0d36aN51D+fnuuWfm1Imkp6dz1rndiUe8YyYjI52RD95NdztN\nEVSUz5j3P+LHxb+wd99+kpOSaNSwAb16dCEpMZEHRj5J7cyafDcj4jBx9K1bt27U+dkZ1/GOM03T\nWP3bDyxavITxH3/O7ytWcSj/sO3UgZEP3h01e0ssvfsPYt36DaSnp1NcrNJRnfOptw7O3n37GfP+\nR8xfsMh1ePh9foKhIIFAkNqZtTj/3LO5/tqrqeaJ6Pmj8+lacz2vvTWWU9qcyPgxr0calVydd999\nl2effRaouGivl+ys2sz5+nN278nj9bfHsuDHxew/cAi/34ff56csEEDXNJo2aVj+mETNGDXm/Y+Y\nM/cHd4Y8TYukdjZskMsdI66n03nto5b7dely3h03nmW/r6Sw6AiZtWpG6dDspHbous7777zMY0+O\nZsPGzcQSb0xpGrzz2mjO6Win05aUr292uKCAgdfciLl+Iz6fj4yMdJo1Vecc71iMPSaxrCgdJk/9\nhvsfGeVq6BDVdzt2uU5Mv9+P3++r8JicNWce4yd+zpq16ykpVWmyus9nO6zVsdzurNMZfNWACs85\nK1et5eLLVdRiclKScv7n5LB+/fqnUUb9A0D8ubuVEec9WCzgAa8BZ9eYGAtcErOsRcWTH4w0TfMx\n7weGYUxBzcISQhnCG4FJC06t81Cc5f+Us5fsTo4tpmkYRjdUFMLpQBV7W7rdzl2o9IzRpmmanmVS\nUOkw/VGz6ARQU+e+bJrmFNvYfBhlbHb0LHcKKlqkPaquR5m9PcdgXwd8ALxkmmbIs9xQVFpLS5QT\nIM9etgrKybIDmGa3c4dnuQtR6U3OvuWjIlPeMU1zqmEYm1GOkGsch4m9XDZwD9AN5WQ5DPyCihqa\niTLaL3AcJvYyifa2BtjtTLZ10VCOh3zULDZPmKa5PLZvPOvZjqoVstI0zVYx31VDOYXiETsuQfVf\nR9M03UKvhmE0sPcltrBRRWPTcRD9FcqNYS8eh0kYaBrPYeL57SXAUFT6VzrK6fU9aoz99AfLtUNF\nOp2FciLtBKYCj5umub+i5eKsJ+4YFoR/h2PmMPk/TRwD6P8sokWE5PKFVR2s4r98TfhnIOMigmgR\nQbSIIOeLCDIuIogWEZQWFedx/Rex97IO/9bNd62P5x8X+ycIgvBP4o+mFRYEQRAEQRAE4X+Tv/dh\npSAIgvC/iDhMBEEQBEEQBOEYYYXFYSIIgnC88G8VnRIEQRAEQRAEQRAEQfgnIxEmgiAIgiAIgnCM\nsOIUHBcEQRD+OxGHiSAIgiAIgiAcI/7mCRcEQRCE/0XEYSIIgiAIgiAIxwipYSIIgnD8IA4TQRAE\nQRAEQThWSEqOIAjCcYM4TARBEARBEAThGCEpOYIgCMcP4jARBEEQBEEQhGOEpOQIgiAcP4jDRBAE\nQRAEQRCOEeIwEQRBOH4Qh4kgCIIgCIIgHCssqWEiCIJwvCAOE0EQBEEQBEE4RkiEiSAIwvGDOEwE\nQRAEQRAE4RghDhNBEITjB3GYCIIgCIIgCMIxwpKUHEEQhOMG/T/dAEEQBEEQBEEQBEEQhP82JMJE\nEARBEARBEI4VkpIjCIJw3CAOE0EQBEEQBEE4RkgNE0EQhOMHcZgIgiAIgiAIwjHCssRhIgiCcLwg\nDhNBEARBEARBOEZYYSn6KgiCcLwgDhNBEARBEARBOFZISo4gCMJxgzhMBEEQBEEQBOEYISk5giAI\nxw/iMBEEQRAEQRCEY4Sk5AiCIBw/iMNEEARBEARBEI4RMkuOIAjC8YM4TARBEARBEAThWCEpOYIg\nCMcN4jARBEEQBEEQhGOERJgIgiAcP2h/c+EpuSIIwp+gaVq5z6QgnCAI8ZDzhSD8IeUPkP9C1rap\n/28dtM2Wbjku9k8QBOGfhP6fboAgCIIgCIIgCIIgCMJ/G39/Sk7Jgb99E//1JFdXr6KFaOHF0SIe\n/9f0kXERQbSIIFpEkPNFBBkXEUSLCH90jPyXIVFhgiAIxw9Sw0QQBEEQBEEQjhFSw0QQBOH4QRwm\ngiAIgiAIgnCMkAgTQRCE4wdxmAiCIAiCIAjCMUIiTARBEI4fxGEiCIIgCIIgCMcIiTARBEE4fhCH\niSAIgiAIgiAcIyTCRBAE4fhBHCaCIAiCIAiCcIwIS4SJIAjCcYM4TARBEARBEAThGCERJoIgCMcP\n4jARBEEQBEEQhGOE1DARBEE4fhCHiSAIgiAIgiAcI6zw//46DcPQgNeB1kAJMNQ0zU2e7y8DRgAB\nYIVpmjf877dCEAThn4f+n26AIAiCIAiCIPxfwbKsf+vvT+gDJJmm2Ra4DxjtfGEYRjLwGNDBNM1z\ngCqGYfT8u/ZPEAThn4Q4TARBEARBEATh+OZsYAaAaZqLgVM935UCbU3TLLX/96OiUARBEIQ/QVJy\nBEEQBEEQBOEY8TcVfc0ADnv+DxqGoZumGTZN0wL2ARiGcTOQZprmnL+jEYIgCP80xGEiCIIgCIIg\nCMeIv6noawGQ7vlfN03TrZZi1zh5BmgC9P07GiAIgvBPRBwmgiAIgiAIgnCMCP89ESYLgZ7A54Zh\nnAmsiPn+baDYNM0+f8fGBUEQ/qmIw0QQBEEQBEEQjhF/U4TJZKCzYRgL7f8H2zPjpAG/AoOBHwzD\n+A6wgJdM05zydzREEAThn4Q4TARBEARBEAThGPF31DCx65RcH/PxOs97uecXBEH4N5CTpyAIgiAI\ngiAcI/6mCBNBEAThb0AcJoIgCIIgCIJwjPibZskRBEEQ/gbEYSIIgiAIgiAIxwiJMBEEQTh+EIeJ\nIAiCIAiCIBwjJMJEEATh+EEcJoIgCIIgCIJwjJAIE0EQhOMHcZgIgiAIgiAIwjEiLBEmgiAIxw3/\nSIdJSUkp74z9kG9mfsuOnbtJS0ulxQkGg668lPbtzvxPN89l67YdvPXeByxa/Av79h+kSuUMWrdq\nwRUDLqbtmafFXWbX7j28+e4HLFz0M3l795GakkzzEwwu638RXTqdV+73jhZTv57Jjp273acalStn\ncO45bRk2ZCCNGtSvsI0LflzMR59OYvnKNeTnHyYtNQWjaWP69u5Bnwu7Vbjcl19N57NJUzHXbwQg\nt14OfXp2o9/lV5OcnBxXixF3PcCatevLfadpmvv+/rtGcNUV/f9Qiw7ntOX5l96ge5eOPPPEw3+o\nhWVZ6LqOBiQkJNCoYX26d+3EVVf0JzEhIb4WK1Zz4OAhQD0lSklJ4eSTWlU4vhwt1q7bQGlpGQCh\nUIiqVatyyimnkJycTElJifv7hIQE+lw6KK4WXs48/RReeX4UGRnpcbXIyclm37797N23H03TqFGj\nOqed3Jqhg6+kxQkGALv35PHqm2OY/8OP7Nt/AE3T0DXN1eLM009h1RqTn37+FYC0tFTq16tL0yaN\nOJSfz6rVZpQWPp+PhAQ/oWCIxKREmjVtzIB+F3Fh9wsq1CIYDKLrOgA+n05u3Rw6nd+BoVdfQaVK\nabzyxru89tbYyI5bFrG3mrqu07RxQy7s0SVu3/26dDkPPDqKzVu22dvxgWXh9/upVzebc9u345qr\nLqNatars2rWb87pdTKVKaYSCITRNo27dbPw+H+s3bqKsLOCuo17dbHr37MpVV/THp/si550du9B0\nHV3XorToesH5vPjq2xw5cpS5078gq05t8g8X8PrbY5k77wd27c5D0zRby4gWbc88jcHX3UI4bLFm\n6QJX788nT2PSlGmsXrOO0rIy9/jWNI3ExAQaNWxA317d6de3F8nJSa4Wjz35PGvN9aq/dR3LCmNZ\nuP1fr14OvXt2pU/Pbpzb9SI6n9+BV0aPAiD/cAFPPvsS02d96/ahz+ejdq1a7IhnDWIAACAASURB\nVMnLo+sF5zP66cdc7Q8cOMg7Y8czf8Eidu/Ow+f3UbVKZUrLyti7dz8ArVqewNVXXkrPbhe4x8eE\niV8wdfq3bNy4kXA4RO3MWqSmpJC3dz8HDh4EoGf3Cxhy1WU0t8dzcXEJ773/ETPnfMfmLdsIhULu\n+EhKTMSyLMoCATJr1eScdmdyw7VX8933C3nk8Wdoe+Zp5O3dx/YdOwkG7eU8WixfsYpv5y3g7LZn\n8N4bL0RpMXvufI4cOeqO4bS0NAoKCvH7/fj9PurlZNO9ayeuueoykpKSXG1CoRAffvw5n34xhY2b\ntrhaXNH/Yl5/ZyyBQJB5MyeXO/b9fj/VqlUjLS0Nv9+P0botCQl+LAuqVa1Cm5NacdXl/Tn15NZR\nx93vy1cRCAbLrc/Be67VNI3XXniK9yd8wqo1JsFAkLo5WfTo1pm33/uQI0ePMufrz6ibkw3AwCE3\n8suvy6LWF/sUPTExkfr1cqK0cM7LX8+Yw7btOwELy4LkpCSan9CUS/pcGKVFs5Pa/eE2vCQnJ9Hh\nnLZRWjjnvK+nz6bYc979My1+//k7xn/0GdNnzWXz1m0EAgHq5WSzZdt2ysoCf6hFvDYmJiZQv17d\nuFp8M/Nbtm3bAZrm6lG9WlVObNWcFSvXoOt6XC3+aHs+n06n8zv8j7RQEmgxn0W0+HrmHNat30Qg\nEPBsx8cbLz/jXgv/iha1a9Wiwzlncc2gy6mfWxfgT7Voc1IrCgoK+ennX5k97VM69+zvrD8cV5To\nHQkB3wNjTdP8EMAwjLrAI0AXoA4QBnz2qwaUAquBD4B3TdMstpdLBG4GLgVOBBLtbRQDC4GxwGvA\nStM021fQtr+MYRjDgMuBVkAlYD+wyv6/NlAGHAYWAE+bprk4ZvkLgBuATkAaYNl/R4AfgRdN05xh\n/9Zn79vVwAmATrTdEO/gyweygXtQmjQACoGN9vKn2suZwNfAC6Zp7rK3Nxno8xelCJum6Yv90DCM\nk4AvgVxUPzttDKB0Gge8YZpm2KPF6UAt+3c6qs8dXbba7XzKNM099jauAq4Fzv4DLTSgzDTNpJjP\nMQzjbOB+oKv9USlqrIWAHcAsuz0Xx9lvLc5noPpuHGpsWh4t7gQ6oMa0s38OzpieBLxkmmaRYRgp\nRPqukWebXi1ygd5AY9M0NxmGkYAaP7E2ZWxbYzX6EhgN3AG0A6oCQZQWPs8y24BPgSdN0zxs71s7\ne9/aAdU86ywGlttapAIvAPNM0zzfXi7dXu5SoKGnzeW08DbU0+etgGRgezwtiINhGB2A72I0KaeF\naZp97d9XBW4DLgSa2turUAvPdqoD99nL1UOdC1ZWpIVnOcPW5DzUsRsA1lekRUUYhvExSte/qkVF\nuFrELNsOuBc4C3Xu2m63sZwWf9LOEVSgxR+h/c1hgRYlB/7O9ZejuLiEQdfezPKVq0lISKBJ44bk\n5x9m9548LMvipuFDuGn4Nce0TSRXV68eLX5Y+BM3334/pWVlJCcnU79eDgcP5bN3334sy2LIoMu5\n67Ybo1azfOVqhl5/GwWFRSQlJVI/tx4HDx5i/4GDWJbFgH59ePSBu9zfO1r8vmKV+5ljjLlNS07i\n9Refpt1Zp5dr9lPPvcy48Z+gaRppaanUy8kmb+8+Dh7Kx7Iszj/3bF55fpQyPm2CwSC33PkAc+ct\nUEZ69WrUzqzFxs1bOHq0mKZNm/LOO++QWTlyXnW0cG7YkhITCVuWexNWO7MmOdlZAFx1RX+6dDrv\nD7UIh9X9Uu+eXV2HSTwtYtE0zdWnVYsTGPfOy6SlppbTAnC3EcvN1w91x1esFpoGoVBkOZ/PRzgc\nJhwOk5eXR0FBAampqWRlZbkOhMTERAKBgNtnPp+PBL+fktJSAOrmZPHgvbdz9/0jo7TYuWs3hYWR\nc1xKSjIJ/gQKi4rw+3w8MfJ+WrU8gcsGDaegoNB1Hnm1gOib2wS/n8zMWuzcFXG86bpeoRYpKcmU\nlioj/uI+PTiUf7hCLbz4dJ2wZVGvbjbjx7zOY6Oe59t5P1A/ty779h+I2q94nNiyeVTfTfzsSx59\n4tkKDStnezVqVOflZx/ntnseZk/eXnRNIze3LqFgiG07dv7hNnPr5ZCWmsoacz1+v49QKByli6OF\n85mu63z7zeckJSYyYNB1bN+xC03TymnptM3v8xGwHUtrli6guLiE4bfcxeJffvtDg9HpH6NpY955\n9Xm++34hI0c9V2GfxZKdVZtdu/N4/JH7uOSinhw4cJBe/a5i/4GDFS5TKS2Vb778mMxaNflt2Qqu\nu+lOCouKSElJoX5uDus3bI4ysCAy3i7u05NHHriTa2+4ncW//IamaWRlZWGFg+zctSfu/gHcc8fN\nXNSrG1decyPrN2zCMazikZiYSDgcJhQKUSktjdKyMsrKytAA7Q/Gs8Mdt1zPsCEDy2nhOJ8cJ43z\nWZ3amezJ24tlWbRobvD+O69QKS2NcDjMTbffx9x5C6La6z1H16mdGXGY2NeRtLQ06tSp4+67Vz9n\n/4K2U+TWm4bx+4pV7nGn65rrDIrdlt/nw2jaiLXrNmJZFlUqZ3Ao/zCappGTXYf0SpVYt35jlMPF\n6yQ4o31XCgqLaN2qOT6fj0AggLl+IyUl6lzl8+nUqlmTvL37XC3eevk5brj1Hn5fsarctakiLa4Y\nfD3oyiFakH+QjZu2EKqgz3w+n7v87bcMp+N553DZoOEcPlwQ93hzrIJYLXKys0hJSWbd+o34fT4a\nNMiluLiY7Tt2uctO+ewDmjVtHKVFvbrZbNm6PWrdbtt0XVlkMVosX7kaKO9YSEjwEwgo7dPTK7Fk\nwawoLQirYyoUDrN+wyaKio5ELe8dL14tCgoK1eIVaFijejXq59Zl6e8ry2kRr50OzrUwnhax6LqG\nZSkn0lP/eojz2rdz7+PibSMxMYFAIIhlWWiaxuxpn3LvQ4+DnsCSJUt+iFl9Q5QR4CWAMsg0YCrK\nyPgBZbCFgATiE0AZWCuA7vb/s1FGFES6OZ6huMBxmBiG0f+NPds/qWAbf8j1tes6hvxeYBfQnIhB\nBcpAykU5U8LAYI9T6HmUIWYRbTjHtvVR4HGUMdLLs2+xv9NQhvJKlHEGUIQyYE8nYrA1RGnrUGj/\nrjbKwXIRUBdl2DlOqiNAChGDNoQyhit51jPQNM3xzj+GYdwEvPQn+wYwHeWwuZWIY6Sc88XGMeD3\nAZ2Bx1CaOBqGPcsfAdainEupwE7TNHO8KzMM4x5gVAVtDBEZf2XAOpQ+oLRqUkEbvfv2FdAXuB54\nkUi//Zkm61Bj+iNU38UbI44WGmq/m9gOkxOBZaj9X2r/NgvlcHHGSRmwOGZ9AeBc+71Gxc4gp53b\nUA6SnignZEX75uyT4+ycb5rm+YZhNAXmADlEOy5inRjrgPM9jrwPgSvs73ejnJQGkBSrRbyGG4Zx\nC6ovQqjxvBc1/rzMN03zIcMwmtltzKLi49TVwjTNnfY26qPOYY7DYx3qWKnnaaOrhadt/VBO4ERU\nH633LKfHalERhmEMB1632/ZXtNgFxP2No0XMcv1RY1MDdgJ5QAvUuS9Kiz9pZ1PUGE0mRos/o6ID\n6Lhl5KjnWL5yNc1PMJjz9WdM+ngMc6d/wdOPP4Tf5+O1t8awaPGS/2gbD+Uf5o57H6G0rIzuXTvx\nw5wpTP5kHPNnfclzox7B59MZ88HHzP52vrtMKBTijnsfobDoCKef2obvpk9iyqfv88OcqTz20D1o\nmsYnn09h2vRZ7jIjRz3H7ytWkZiYgK7r9O3VneU/f8ezox7Bbzs5SkvLuP2ehzlcUBDVxqlfz2Tc\n+E/w+3zcd+ctLFkwi0kTx7Jw7jReevZx0tJS+W7+Ql5+/Z2o5Z578XXmzluA3+9n5IN38cOcqXw2\n4V1+mDOVHl07sW7dOq699lr35syrRWpKCpqmMWHcG6xcMp/RT43E7/exd98Brr5yABPGvkGXTudV\nqMUnH75NrZo13Lbs2Bk5vmO1qFdX3T9VrpyBz3MjmZqaQpXKGaxcvZann3ulnBYtmzezb3Cb8f3s\nKbzy/CgqVUpzn8x7x5dXi3p1s7EsOKfdmXw/awo9u3UmHA5To4Zqb61atUhKSqJOnTpomuZqcebp\npwBQpXJl9+b/uScfZdoX46mfW48dO3cz4s4Ho7R46dnH3afdDrVq1GDh3K/o37cXwVCIB0c+qRxO\nBYXkZNdxb0jffvU5Bl7eDyh/k5qZWYsRN14b9Vk4HKZZ08ZkZKSjaRp+v8/VorS0jIGX9UPXdT6f\nPK2cFk4f+HxqmZo1awKg+3xk1c5k+45d3PfQ46xdpyJtcrKzKCo6QoodoVQ7sxaTJ451tdDsyBhv\n323Zup2Ro56L2peM9HTmzZjMpRf3RtM0fH4/LZs3Y//+Awy94Tb25O0F4J3XRzNjykSqVK1MLDnZ\nWdx1242uk23rth2sXrsOo0kjUlJSAOjRtRP/evgeEvx+SkvLOO2Uk9zlnfbcevdD7Ni5m7o5WYTD\nYdLSUhk3bhx33XWX0tHnIzU1tVxUwCOPP8PiX34j2Y5WSE1V2/T7/VSvXs3VApTO69ZvZNCwm3ns\nyeejDKO6OcoRqeu6HZWSSKsWJ9jL+9m5aw+WZdH+bPW0ePiIu6OcJY5DoKbnuCs6cpRb73qIg4fy\nuX7E3RQdOUL3Lh35ftaXnN/hbILBoNuHzjqeHfUwqakpTJryNSPueIDFv/xGamoKY8aM4aOPPqKw\n8IjqK1/kWNV1nTFvvkiltDSefv4Vbrj1XtZv2ERKSjKWpSK1zj2nrbsNTdOoVzebQCBAbr0cGtSv\nR2FREWVl6j4/JycLy7JISkrktRef4ttvvnCfxHs5/dQ25bS4sPsFLFk4ixbNjajfWpZF7cxafPje\na1SvVpXVa9Yx+qU3AXjtrTHMnbeAyhkZgOY6XFqf2NJd/ujR4qj15eXluc6SWAfnuLdfJiM9nWAw\nyAUdz8WyLEa//KZ73LVvdyahUJiM9HReHf0kPbt1BqBRw/q0btWcUDjMPtvhnJyURP7hwyQmJvDK\n6FHMnvYZkyaOZcjgK8vpASpS4XBBIcnJyUz84G0mjH0DC1xnia5r9Ox2AfNmTo7SYuCQG1m+cjU1\nayhnUE52FtOnfOxeo7z76GgxYewbTJgwgdGjR7Mnbx8WUL26ssVq1KhG40YNAPD71fJeLQYNvZmC\ngkKMJo2wLIuM9HTeekWd8zRNIz29Ei1bNIvSolJaGpUrp7Nu/UaaNG7IN19+xFeff8iVl/WLclS9\nN25ClBZJiYns2p2Hruvk1ssBTaNpk0Z8Nv5dTj+1DWHLommThuW0qFI5A8uyqFmjOmPefNHVwnGW\nABQWFrFw0c+uFhMmTFDvx75B44b1OXLkKNWrV8PvjzyY6NWjCzded005LZo2aUQ4HCYnO4tpk8a7\nWqSlpZKamsLBQ/lk1aldTov0SpWiroWDBw5wt+VcC6dNnx2thT3GdV2n03ntmTF1Iqef2gbLggb1\n62FZcOd9jzLizgcq1CLB73edJc4x9uvS310tTNNs7/wBb6EMjwDK2HMYD/RDGe4XoiJBqqKeTPtR\nERoWkQiFQvvPB/yMcpB8A3xmv3eM2l9Rxtg5KKPIQQMqg3vD/oEVtvh3/lCGQlfTNOsAd6OMNi/P\noKIT3kPd479pGEaOYRhXoJwlQVsPh4moSIYCIs6DR1CRMb3sz0EZU2Ps74P262KUYyAFONfWfC/K\n4P4N5SgZCVSJaeNm0zSzUE+1q6AcGO/ZOn0J1ARO8bTH8fK+Yf9fZr++YxuKGIbREXiZaLtmEVAf\neNezXDHQDeUsCQJL7GW2ePat2H4ftr9bbbdprq1JAOXcsYAZ9j58bGvRwtYjbP/exTCMC4EnY9pY\nCDRGRVno9rpnogzYHJTzY4i9H2GUsWh5Xh0tAqgoiZ6ocf+yradzwQ7bf+vs35cCR+33eahIhkWo\nvttqLxtAOQquJNrJSMw+OBfK7z3HntfQCgOfxBybz6IiGiByvC3z7I8T9TSDyBioB0wGXrHbsdt+\nXY5yUr3t0cJxYmm29knANJRDwenbsajj8iJ7W14tPrWXG2xrEEQ56HJM0zwJ1Y9/5oxyaGv/1nEG\nzvRqYf89ZEd0TUJFA/1ubzOMioKqae+7V4uPPNt43963FcAJpmm2Mk2zASr6JUoLB8MwGhBxlrwP\n1DJN80TTNBsCJ6PGvatFRRiGcSvKgfVXaG2358U4GrhaxKy/qd1ODbjJNM16pmmehnIMfx9Hi4ra\nqdv7mfIX2xrFP8phsn3HTr76ZiY+n85zTz5CZq2a7ne9enTh2msGYlkWr7753n+wlfDZpKkUFBaR\nnVWbJx97gEppae53Pbp1pl/fXliWxcTPIqHYvy1b7j7Nev6pkVSrFnHW9+t7Ib17dnVD9CGiha5r\nBAJB6tTO5F+P3EtiYiK9enRh2JCr3JuigsIixn0Y/bDjvfc/QtM0Lh9wsZsC43BBp3O5945bsCyL\nDz/+3L2RO3gonwmfTELTNEbceC39L+7tLpOWmsqT/3qQ7Oxs1q9fz4SJX0RpUad2JsUlJei6TuOG\nDf7HWnwzYw4XDRjM3n373d9t3b6zAi1qkbd3H7qu8+j9d3Ld0EGuFkePFtOmdSssy+Krb2YRCARd\nLS7s0YXVa82o8eVoAeDz+wmHw7z65ntRWvTt3YOt23aQmprCc08+SmZmTVeLAwcOUFJSgqZpZGZm\nous6gUCAYvuz7xcswu/zMWHs6/S/OKJFk8YNeeyhu7Esy03nef6pkVSqlMYNt95T7mnhgUOHSExM\n5JEH7qRuThaBgHpi72gBkF2nNh3OacuD99wW5XhysCzL1aJzxw7u59WqVaWwsIiTTzrRjXBytFi1\nZq2bKmZZVpQWwWAIXde5+fohrhatWpxAKBSifv16WJbFwp9+cSMLvl+wCJ/PRyislrvn9ptofoLh\nagEqqiccDvPVN7M4cvRoXC3q59alTp1MV4tgMMhZZ5xKRnoljthGWXad2pzd9gx+XrKU5StWx9Vi\n6NVX0KtHF7zPjR0t2rRuxfNPjaT/xb3d884vvy5zo7Esy2LZ8lX88uuyKC2GDx3EWWedxdChQ+nV\nowvBYJAjR45EbXf5ytVM/XpmlBalpWXous6tNw3jBTsdxtFi3/6D1KmdGZWi4qBryngZOviKKC0q\nZ6RH/bakpKScFo6TJm/vXg7ERJwsW76Sh//1NIcPF7haaJrGBxM+c/fDq8UpbVpz/123YlkW8xcs\nQtM0V4sxY8ZQWFREZdt48mpx1hmncuet1xMOh1ny6zI021Gn6zpDBl3Oj4uXoOs6V9vGnKPFps1b\n3fQsrxaapjH4qsvodF57kpISSa+URiylZaVRWhhNG/PsqEd46bV3446VZctXous6d4y4HsuymPzV\ndPLzD7talJSUuE62cDjMst9XuIZ40ZHoaKoxY8a4USyxKSOOFpZlsfT3FXQ+v72rk6OFpmm88Mxj\ndO7YQZ2Dsuqwecs2zm57JpqGmyKVVScTiGixb/8Bbrnjft569/2o9uzarY7NteYGAJrYzoonnnnJ\n1UJFNkTaeurJrV0tNm3ZiqapCEBN0/jXw/fQsH4uDRvkklE5I2pb8bQoLCqierWqHM4vQNd1Tmlz\nIhs3bSGrTiZ33XaTq0WPrp2wrDB79+2nVs0abNqyzdXi3PbqnHfqya0pOnKU1q1aRmnRt08PVq5a\nS3qlSrz/9sukpKRwyx3389RzL0eNx1nfzicYDLpaJKckEwwGadO6Jdu273SXP7FVc1594Uk7YmcT\nvS/s5tFCo7CwSF2bHryLdmedHlcLiDhovBzKP8yXU6ejaRopSUkEg0HXWajrOjcNv4YLu1/galE7\nsxY7d+5G13X+9fA9NGnU0NWiuLiEM0492T6fzlTXMluLtNRUjhw9gt/vc6+FW7Zuj6RW+lX05Bvv\njIvSolatmliWRdMmjXjpucdpkFvP1WLL1u1c0LEDoVCI+QsWoet6OS3OOuNU6tbNLufM//SLqeW0\nsLkLdYI+hHKEOIYSpmlOAm63B2dVVCpEffs3qfbr/aintmnAPPu3mSjjuiXKMVIIpKOMmCvsJ7HJ\nlI9YyLVf7wcSnKjO/+kfMNw0zdmGYdRGGVexwUvDTNMsAYajnuAmA1d5tNhExMkSBoo9WoAy0jRU\n2o9Xi4dsHUGljMRqcaNhGA1RxqVXi9GUf4Kfa/fBaJTDJgVltK0A+pmmeRC4zO6zNSgnkI5ysFjA\nQHs/EoErY7Twco1pmls9WiQAPxGJZhiPMgxDKEPZQjlXbo7RwrkIV4+jxQo7ZWGa/V35nPMIXi0c\nVpumuTFGixJgA8qYH+bRYiORyIMaMVr4UQ4Pzf7MQo3Z6qgxqqEcEs3jaFFia1ALNSYcLd4zTfMj\n4Fu7PbFtP9V+dRwmKwAMw7iUSDpRRSGwI4k4SaqgNF5n78dHcbTQUU6eU+NoMcw0zbUox4Kzb459\n67T5FpRjyqvFENM0C03T/BJ4LkaLswzDaOvR8j3TND8yDKO2YRifo6KwvDeXpxKHv6iFw4VAsxgt\nPjZN8w3TNPejxoFXi7MNwzjfMIx6qHORo4U3cqNVHC0cRqDOBa4WzhemaS632+3VInbfHC1G/8l+\neXHGysr/wTL3o/r0Y9M03/C0cR/K2XUYW4s/Wc89wBlEjuf/Ef8oh8mUaTMIhcKcdGJLGtbPLff9\ngH4qNfK3ZSvcp8j/CXKys+jZrTOX9+9brtYCgNFEhfXu3B0JQd+3T6XzVK1S2X0a56VVixMA2L07\nD4hokZaaiqZp9O7ZNeppk6PFkSNHsSyLr2fMdr87XFCAuU7d9PXo0inuPnSyb8aLi0vYuGkzAD8t\nXkIgECAxMYGBl/Urt0xiQgIDBgxwjQavFs6T4Oys2qSkRK43f0WLAVcN4/Z7H6GgoJALOp3LCc2a\n2G0rjqtF547nunUojKaNy2mxxlQRDSWlpWzdtt3VwufT444vRwvHwPxt2QpmzJrralFSXIymaXQ8\n9xyq2De+Xi286TeFhYWugZyamoKu61zUuzuNGzUop8UZp51Mj66qfypnZFBcXMzJbTu7tRAqVUpz\n+zzgqbtxQrOmKpQZorQ4u235tCwvwWDQ1aKK5wZ+6TJl4N156w10Or9DOS2cSJKEBH+UFk4diuYn\nGK4WRUeOKGeCHf4NyuBztOjepaProDPs8HdHi9tuvo7rhlxl910Jp5/T1dXCmzYWqZeitADIP3yY\nls2bub9xtJg85Wv3s4SEyPHjOGEG9LsoKvXDq4Vj0F56SW8syyIcDnPpJcqJqGkaM2fPLaeFd58u\n6tU9brj75KnfoGmaq4VlWYRCIfe4i9WitLSEw4cjEWRpaanu+23bdwDQv2+vKC2U0xC3rV/PmBOl\nRVJSIpUz0u39srig07mcftrJUfosWLg4SovZc+dTUKjqepQFAgwZdLm7flApdCnJyYRCISzLcrX4\n/vvvAbDCFrpePmq6X99ersPBq0VKSgqBQICzTj+Fi3v3iNLCsiywLGpUj6Q+O1pc0qcnc+bO54Ke\n/Zn3wyISEvxRzonv5i+M0qJnt85cNug6PpignM5NGjeM0sKyLFasWs0Fnc7llhuGcvdtNzJj9ndR\nWrRu1dzt64YNchlm910oFObXpcvddTlaxEuZ82qxb/+BqDQVrxZntz0DsM9B/fpgWRbzfviRzFq1\n0DSN009pw8bNW8tpMevb+VSpnOFGLjlaAG4UWJPGDRlw1bAoLTp37FCunRd0OpczTlOROjnZWRw5\nepTMWjVpe+ZpPPfi6/S7Yij5+dEpyfG00DSNU09uTSgcJjEhgTlzf0DTNEY+dA9XXd7P1SIrq7Y7\nnhvUr1dOC4BLL1FaLPjxJ1eL9u3OZLPtyBhy9eX8tmx5XC00TWPYNQMpKwu4WhTYUZuBQNBd3nnQ\nUTkjg64XKEfygQMHXS1y6+UQsiN8Op3XPq4WzkhcsWotsfz62zKCoRA+n48du3YDcIYdEeXQ6fz2\nrhbNjMYUHTniah+rxcbNW9A1lS5z+qknu1q0bNGMcNhyr4VlgQCLlyylVYtmjLjxWm65fiiAe/51\ntHBSvK66vJ97bfJq4T3OsupkRmnhjMNN9tj0/tZct7GcFnYdgBPtf536FN8RbTR86fl/E8pAdZwr\npagn2W/ZvzkB9US+HioiwvEE/oJyjiwyTdM0DOMjlEOhKrAZVVsCoLLtUOgP/FvRJVbYwjTNKYZh\n9LHbm4EykpzUEpx9Nk0zhIoouQtlEDlaOGFwe+NoAZEUGCfSxquF83T40xgtNGAQyrj0ajEJZaRi\nt2GcRwsnVeUlTxveNk3TiQRyam6sJJJaogGzTNP8lEjqxzkxWuy2P3eiL2K1eJ9IBIOTYrIIOwII\nFa0Qq8WpRIysYIwWKw3D+BHlfHH0zCfGOI3RYh+R/irz/MzZzx5ExuppHi222q86yoD8LEaLUvs1\nEdV3te3t5Nuvn8Zo8TrwICpFyHnqscWrhT3WNqAMeYg2+rPs11gtPibioHTGh1eLTMAJud1s/+5H\nlMMAVCRTPC0cQ0DzaAGqz5x+3mh/Hx2eqcZnrBbefXnPo4VzcvVq79WiL3AA8NZNyCKGv6JFDOcS\nXwvs/StFRR95tbjM00awtbC33woVLZb3J9uL1cLZnkm0Ft59+yMt4mJH0LSw//1LDhM7Msh5aj8m\n9nvTNA+hIv1AaVHRehwttgJv8sf9EJd/lMNk6e8r0TSNU9qUD6MGyKxVk6w6tQH4ecnSuL85FnTv\n0pHnnnyUa2yDIZYVq9YAUD+3nvuZU8PjUP5hNyLAi3OTlp2l9m/p72osFtsh0ae0OTHq914twGL7\njl3k5an1JiUm8dYrz/LoA3fSpHHDuG303gA7N+aOId+wfq5bYDKWBg3UE8h16zZQVlbmatGoUX0A\nmjZuFPX7v6LFsuWryKpTm+efGslLzz5OcbGKuEi1jahYLc4+63TXwFq9YdwhTgAAIABJREFUdl05\nLZx6A0mJiWTVqe1qsWPn7rjjy6tFTTvF5pfflrlaLLf3IbYPHC0SE1WNOE3TyM/Pd1MEwnaND8cJ\nEU+Lq68cgKZpHC4oYM3a9QQCAdc5UKtmDbdtiYkJbltVjQdA0zj7rNPx+9Xvq1ePOOKqV/OmGyt8\nPl+UFg7FJSVUq1qFk09qFVeLbTt2omkaTRo1jNLC6cc1a9e5WmzfsQufrnO0OPpa52jRs1vnqL7z\nct2Qq2jcqIGdGpRAMBh0taidWcvV2cGyLDZsVM6+7Kw6UQ5FR4ulyyPn9E7ntce5R3ecLie2PCHq\nxt2rhcO06RFnZP16dd0nvqvWrIurhcOM2VHRvC4//rSknBYQfdzFanHkaCRFq3JGBlWrRCKkq1ev\nRk52VpQWsQbuz0uWRmlxw7DB7N6jnM7VqlXlpWcfJyuzVtQysVo4x2EgEKB3z64M6NfH1QKUQ6ql\n7fj1arFr1y4sy6KgsJDePbtE6Q2qL3Jtp5zrdKifyy9LVA2UTh07sNZ29Hm18Pl8vPrCk+W0qJuT\nrYoSl5XRu2dXTjulDd57xN9XrGLpcnWtuahXdzqedw7Llq9C09QxHE+LcEilM9wwbDCX9b/IHbuO\nFk66iaZpvPXKczSwC18q7X9z3+/atcvd56KiIg4dOoQXrxaOA0jXtSgtvDSor84la8117N6TR1pa\nKt26dKxQi0fuvzOq/oxTE2rtug1omkbTJg3LaZGWUj76tVJaGn6/So9MsyMsnfPj7ytWk5KSzE3D\nh5BVp3ZUf8fTosM5bXnl+VG2U0Q579q3OzNKC280UUFBYVwtnHG6bftO9uTtJS0tlX89ci+Lf1Hb\n7Hx+hwq10DSNXj0uIDU1xR1rTo0mp9ZH5/Njt3eiGwHjaHH2WWfwyvOjePTBuyrUwhmJoXB0tBhA\n6xNb8szjD7kO3bPbnuG5tim8s7OEguEo7WO12L5jF2H7mGrZ3HC1KCsLRF0Lf1mylOLiYs7rcDY3\nDBvMsCFXRZ1HQqGwqppq195q4XFOe7VYvnK1e87OzqoTpYWjfZ8Lu1GndmbUuKig/koJ6kbb+XIG\nKtfdi/dk4nhjnUIra+3Crgvt/xuiwuQhYlCCiiiwUEVWQRUk3I8KHW+Icp44DHR+//8RYQLKQHVu\nsqYCUzzbcO/rTdP8yo5c+M7WooBIakZsUSivFs4F2PG0O1o4Nz/LUI4irxYnolIPvFo4HkkLVXjU\na+Q6B8R+z2feVKHNnvV6ZxiYbRiGRsTw8hHRYibKSeBs08WjxWeotJXhQANPezejNGhDtBbOzY4T\nbrglRosVwJn2vj1nr698Hm+0Fj2AL2LbSKSuhQ8VveO8d7TwPgkuBm6N0cJr0/2AcvKFUVEq12CP\nE0cL0zS/ME1zlGma76AiiUA5TLxatEaN2Q9Rx4+3zTvs11gtdhFxTpQ3WKL342lUVNJXRI6lhRVo\n4b3g5Xra0gbAMAw/4BRWXuX5PhEVWVNOCwfTNLd7tHD639E+nhYtUCl4sVp4+StaeHmb+Fp4cdp2\nyH5/LpF0MojW4gOUs2Ya5ccaqKibclpUsL3Yp1WxWkz/g3U4OHVfDpumGU+veLShYi0cFhLRovxG\no7UYgqqf9D/mH+UwcW4QnSJ08cjOUo64ioqP/ScpLCzi1TffY/LUb/D7/VzryRc/sVVz2rRWNzF3\nP/BYVAj819NnM2nK1+i6ziA79NzRImTXPnCe8ntxtHBuPDZvVfcSzswCl17Sxw27j2X6rG8BVTMh\nt15O1Hq8hmcsTjHCUDjsGlwApqluuBs3bsDceQu46/6RdOx+CV98OQ1d07jUk94Tq8Xdt9/IjKkT\n6d6lI19Pn83WbWrfGzWsH1eL3Ho5XHX5JQA8/9IbrF5julqA5haSG3h5P1JTU1wtdtpP7GLHl1cL\nR+dDhw67n+2w04fq1Y2q/eVq4X2fmJhIUlISmqZRXFKCZVl8+vlUzu/Wly++nAaWxe49e3jg0SdZ\n8OPiKC3GfPAxl/S9kLnffE6VyhlRKRg1a9QgEAjy5HMvRz2hy62XQ0Z6OgCTp37N6jUmn036qpwz\nApQx5mixZWvkvlPTNFfrDyZ86t7YlZaVYlmWG80Vq8XVV16KZVm8M3Y8q1er8P1wOEyVKpXdPqib\nnRWlxeSp06lSOZ1wOMy9D/2LvgOudrVYvcbkuRdfV6Hjvboz8PJ+rha79+RF3VR7tchIr0Sn89pH\nzeQweerXrFpjqtkZUE/KlcGvufvs7JOuR6dGOFps2LiZ+x8ZxfMvve46BhxjyrIsdu/Ji6vFokWL\nWLRoEZ9+MTXusbTdLkDbpHFDLuvX272J3rx1W4VaDB86yF1+T14eZR6jt252Vjktfl6yFMuy3Kia\nzVu2ulq0btWC4UMH0bd3d5x6O8748BKrxdx5qhajz6dTtUrluI7fHNvh69XC6bfatWuxYuWaqPU7\nxKYaOQVHQRUrfvZFlV5bJ7OW61QOhcNUq1qV1NQUd1317GP7tFPaMOXT97n3zlvsaCev/rvULEh2\n5F6jBvW5+YYhWJYqFtqwQW5UzRnLslj8y2/8vjxScHqtHcWWlpbKA3ffSq+eXd0x4jgwHbzXKkeL\nQCDA7t27OXo0ulYRRM4le2wHeHJSsqtFk0YNCASCfPnVdO6471FeevVtOyon7EZJHMrPj6vF048/\nxG+edCHAdZw6aSg52Vmc176tq9erb77Hhk1bsCyLn5cs5ZrrRqh6UstXuefl0tIydazb27us/0XM\nmfYZN1432HUkxtPCaUe1alXRNOUU8fv93O0plu5o4S327Rx3sVrc/8goIGKUDrtmIEeOHqW0tAyf\nrtOwQS7NmjZh0BX9OXLkKE+PftVuR7T+jhagIntKSkvdVOD3x3/K22M+5Kbb7mP8x59jWRY7du5y\nr1lG08Z07tiB3j27/qkWTvqTl5o1qvPppKmE7CgTJ1XRy5dffeO+LygsiNLeoU7tTLsQa2Tgb966\nzdVi335VnH7rth3cdNt9PPDok4Cq1+PgXFOddaTaRbjD4TCjX3qDzydPc89Dzm937trtjvGkpKQo\nLbzjMLa9ubnR11YA26i9CXWTHEQZyLEM87xPQN2UO9X5nZPkdiI1NApQFwFv8U3Hu9nYjiIoQkUo\n/EZ5HMMy7/+jhgnAfJQDKOzZjpv2YhjGJMMwbjEMI9WjRW9UFIZjdLrh9zbOU9wAkagH56IZMAyj\nDioNJGTvYwbKhuhOpD6D4wlzQn6cmhIW0c4QULURIHpmlUzP+3F2W5sCrzr7ZrdhtL2tfFSUhKOF\n96KiARMNw1htGMZywzBm2UVvG5im+Y1pmm+jHCZOe1+y1381KgXI0WIb0bZSfhwtpqCcBV3s7caz\nrbxarCT+E3ZvyLmTYuHM7HMIVUTVGYuFqD5wtChCOawcnZywtP2o1IohwCSvFoZhNAcwDKMFkWK6\ny2O08AGtTdMchDoWvPv2WwVa5Nk6lNpt04COhmF8YxjGs0R0BzV71ERPe3fbkRTxtPDmvDZCpa0A\nvGHXuViAMq7LiI6IcfZtu2mas1CpSpcahjHFMIwZcbRobv9+1R9oAdHRUfGO9+tQs7o466oWq4Vh\nGG7RMtM0V1egBXbbEogUHHa0qI/q44keLRqioilao5wvzrEd60T83jTN9+10pnLE0cLLfGwtTNP8\nqykbzvlvlWEYbQzDGG0Yxsx4WnhworKitIhhi/1a345iicXR4k3TNOM/ifwL/KOmFXamN61WLba+\nVISqVVQqgXNT+N/ArDnzePn1d9i2YydlZQGy6mTyyAN3lXvq8/arz/HoE88yfdZczuvWlwb1czl8\nuIA9eXupVbMG9901gg5nnwVEtHDu5qpVLR8xULVKBpqmqSJqwSCHYkKgK2Lvvv28+sZ76indeee4\nNVicApKbtmylLBCIm260YUPkZtJbaHbtug1YlsW4Dye6hQIdQuEwd97/KM888TAdzz2nnBZLf1/B\nlGkzXS3U9Iwlbg2beFrcdvNwEhISlJPhiqEkJSVG3Rx27tiBO0ZcH9WOeOMrVgvHcHOKU27cvMWd\n3aRq1ehx6dXCuUn0+XwkJSVFPU2a891893cW6obcXLeRL76cRvcuHXntxad44ukXmD5rLmvMdaxc\ntRZ/QkLU/uzOy6Pd+T0oKCyiUcP6rtMkFApz8FA+TRo3ZNfuPVx8+RA3TchpU8vmzVi1JlLQOxwO\nk2fn9ycnJVJaFqBa1aq8+Orbbs66ZVnu7AvLfl8RV4uzzjiVYCjEK6+/y2uvveYu5xTSPLGlSlPY\nvnOXuy8zZs913weDIVatWceqNev4fPJXaJpGclISw4cOiipO++F7r/Hwv552IxzM9RtcLVo0N3ji\n0ft549333VmaGjbIJW/vPi65fIirwcZNW0hOSuK8Du3cNARHC+dJsjM7TrWqVXl33AReeOWtKKcY\nqOldHWeQU4ciVovBgwe7RT2d5Rs1rO+Gt4fDyrjdvWcv02dFzv3FxSV8PvmruFq8+uZ7roHZuFHD\nyAwXqNm3lv6+Iq4WzU8wWL5iNQcP5ruRZLfdfB2gQvQnT408VPBeiZ1ZLOJpEQ6FGfvhRCZ88oWr\nhUOVKpWV47RhfQ4cPMTgwYPd/s7L28d+30HOa9+OufMXuMuUlZWxfecudF2nerWq7Nt/gPUbN7vf\nP/yvZ9zjyTuWLMvi9nseJhwOuylq1exj9Aw7peaO+x4tN91qQUEhQU/fAbRu2QJN08jISGfR4iXM\nnjs/apn5CxYx74cfGTxwAHfeeoPrOOvZrTPp6ZU4r31bHn8qfhqwc60qKipyx2NRUfwHJI4WlmW5\ns0mFwiH27T+AruscLS6h74CrWb9xs4pW8JwjdE2jT69uvPPehxBHC4DvF/xE1apVOGifCwsKCiku\nLnGdeHc/8JhbcNqyLKbPihyvu/fkkbd3H4t+/pWPP53sRhI4NZic7XW3I1wgcr2O1QKgbt26bNiw\ngbXmemZ/Ox9N0+hzYVfX+PZq4dQjUetQaSGxWqg2q99othbr16toPKdfHxj5ZLlZZdQyakGvFoCb\nXulo8c1M5Vz3OllDobDrxIm9d4nVwttffS7sTiyzv53vOn779u7heRCgWPDjYub/sMjdx4JC1b5q\nMdcmXddJTEykuLgEv99PMBh064NlZKSzb/8BLMti5pzv0LTIbEP3PfwE69Zv5J47biYjPbr+T6Fn\nzH6/8Ce+X/gT74wdzxsvP+2meIbDluf4jI4a8Y7DWC0u6HhuOS0Mw7iISBTDWNM0t6rZM93v66Bq\nYoDqwHT7vRMF0cwwjETTNMsMwziMSrFxjH6vx6YWyoj0TgHbHBhqGMZooh0Tjkcpz7KsciH8fxXT\nNOcZhjHK/vcw0UUZK6GcI32A2w3D6Ily8FyBSj1xwh/dE5utxaMoHb4kMt2t85tmqCKs2L9ZQaRW\nh3NzqRPRxXFcvIYyViCSguHgFErzhkC5IYamae61pyCdSsTA1lC1VhJRT/eHmKa53DAMpx8TiTiO\nnHQWh1aoqZRvMQzjbtM0X/h/7Z13mBTF1offns0BWHLOociIoIggKCZEFHNGEAVF5Sp6wayfilkx\nYUIEVFBRDJgwoIKAYsaIJaKEJee4eeb7o7q6e8Iu6lVG9LzPs8/uznTPVP86nlMn4O+P9Vrrt91O\nHPcB57ivFwQ+Yy3GoZNICxvhEnSfOkTbWBVpYbGRIg5G1zAwpRwtauNHYRRhjt/NGO0bB7Sog2mH\nGxxbUIsrMMeLZW5Ai3swaSpDlFLr8Y8d8J1p1ggOamG/qw7+/q3r/t0Xv2NLxNXiYwL7ogItXsDU\n1glj9n9XjHOkQ0CLCMbZsgNTEPQo/GN1vVv8+DGiC38ekUCLfOB9rXVJOVoo/BbiCUPctNaPK6Vu\nD+hkrzFBLUYqpW6LKXQaq4Xl/zCFgINahDCOmMGYtKqhrha2TfUAzHExk+hIrQpxC6Q+7P6bT0wB\nY6317N/6WQE6BX5/QfRj4+/VIoh1clstvGWVUvthapf8gimS/Yf5R0WYWEM7Iyb0Pog1RmON8mTy\nzXc/sOTXZV6u89Zt25n94fyoMHqAHTt3kpOdTXqaMUZ+WryEtevWew/uwW4vsduXnhGvidXCzgzb\ncNmK2LFjJxeMGMXmLVvJzs7isv/4kzbd9+9KVmYmu3YVMPnp5+LW3bZtO1On+oXqbC0KmybiOA5O\noFtEKBQiKyuLenVrs2PHTi4ddR1fucZ3RVpkpEc7ahJpYbc1OzubSCQS143CPiQm+hx7fCXSwmqa\nl1eFrMxMLz0ouF4iLezDn+M4JsIkXnoy0tOpW8dcO0KhEOlpacx8531uv+eBOC1ii3AWFBSyfcdO\nz6izLHBDrBs3akB2drZnPEYZUjEdOa6/+Q7vAblF82bu53zhOUuys7N4a8Zz9Dm4J+A/BAc1zkg3\nDqqSkpJyo5jS0lJZvOQX/+nHccirUpl6devQs/v+UbUUrIYRIuTm5kTtux07d7mdSOK1qFmjBtNe\neIU3AmkzzZo29rQIfDo5Odlkuvs3qIXFOiU//fxL7r7vYZq4aRXHH9svoIU1svzPCGqRm5vj1eGI\n0iJBpMmIy67CcUJeUd3ytNi0aYtXZBnw2i1bbGHIWC1sPQuAIjdNzHGcqFnkIF8t/Nb7u27t2gm1\nABhx4XkcdUQfr3ZOlBauvsXFvhaWcDhsCrFWCnaVNAWqbfvq9PS0uHPHan70UYfzzuvPu04Z8953\nP/zIps2+EZ4RuE4+PH5S1HFhKS7xU87tOW2v1QUFhVw08qqox4A+B/dkxPBzCYVCTJ4yjfMuvMxP\nTWgT3VUnEfa6c8stt3jHRaVKleIiemK1ALO/gt1VrrpuDOs3buLOW67n/ZkvklfFjxwvC4e57sbb\nvdTFjJh7xor8lSxbvsLrEmS1+GnxEk/jJo0bMnzoYBzHISsrk/T0dG+cWVmZvPHyVE+L0tLSKKdg\n7PeZ16LPt+C1vE+fPq6TfRrffr+IlFCIYUMGlqtFLEEtPpv3Np/Ne9tznIRdLWL3a706tXny8Qd5\n/aWpXkQkmGN42vQZUVqASX0NamHTAuvUrsWEh30HmdWiomeXoiL/uEtNTeXkE46Jen/T5i1ulIxx\n3p5/7sCo97du3cblV94Q9VpxceJ9bc9BwIvyK3TvZQUFhd5+GHXphZ4Wbdu08o7xCZOnRo0XjNPX\npnvVr1eHJo0bsmz5Cs4bPpKSUvNdQe3K229Wi+D7QccSgFKqBqYmARgnx+1Ek4YJU7eeogi+UfUN\npj5HLqbWA/gpKnaAwUgIu95ojBFWD2MYh931g8US7c2uMBw29Z9+708AeyO/HtPZxNIOE5q+EFNj\n5C2MgViAMarsDcDeZKwWNTBG5tX4tsG2gBYXuq+lYpwqtvOM7UgCxkgL4Tpa3EKVthDptURjtQi+\nfog7i26pjG8wWdLxa5XYcVotjo5Z9mPgPEyNjwimDkkKcLfbTtVqYR/Uqrs/we+337EVv61xrBZd\nMAbwRqKNQJsesjstLPZ1ext7VGttZ/aDWkSIdoBk4Kd92JPZalGA2dcfUI4WmAgO8Ns5g0lBsvU+\n6mJSoxLZjNYIDmrxjvtZpfjH2SqM4+7ewLpBLWL3RZwWREfl2K5OQSeZXd5qYR2cNuqgBSZa5xOM\nIywTk2o3jmgtIsDlWmu7fiItMojuvFUetr5LOuacjABTidbi6oDTD+K1QCl1NiZaJZJAiyzMcWk7\nH6XiRzrFavFbeYzEWvwvBLW4GaN9Br9TiwQEDTjPoHDrnzyJ0WGI1jo+JPd38I9ymCR6gNwbGHjG\nyXz18XvMnfUqt910DZkZGTz7/MsMHvof7wFi+Yp8Tj5rKM+/9Cpd9u3E9Gee4JtPZzN31quMuvRC\nfl26jP/89xqeeNJ0VvortNi8ZSuDho3ghx9/IhQKcftN10aFxlauXImhQ84iEolw74OPce+4x1i7\nbj0lJaV8ufBbhlxwadRssjUCCwuLGDzwNAb078vER+9j4YL3PS1ysrNYvWYdlXJzKC4u5va7H9it\nFtt3mOu9rckQq0VJSQnnnH8p4x6dSHZWJo/cf4dXPNVGxbz51iz+899r4hwHv1WL9LQ0TwswD4Ib\nN27ytDj7vIvZunVrwtzrzZs30yNQjDA3J4erR19CpUq5rFm7nkq5OZSVlVGrVk3C4TAzXnsrSov7\n7rzJa9VrqVunNjNfeZYTjzuarxZ+6zlFPpz7EZFIhPc+mOsZLr0P6s4XH73rzfp9852J/ItEwlzz\nf7d5nZgcx/HSZza7RmdKSgp3jrmepk0akZtj2i3XqF49ajbbavGf/17DrXfez5o168jNzfUcZQ3d\n0PPPv/yaKpUr0b2bX3y8tKyM6tWqMn/BZ9StU4t2bRSO49CgvmnHXFhYxJ1jx3n7btb7czj7vIv5\ncP4CL72lU4d2nhYfzJnHM8+/BOAVAA1qYbfzqv9eQlpaqpd+FasF4NUP2bxlK93268Ky5fnUq1ub\na68Y6WkRO5NruXT0ddx21wNeccfWrVvz5UfvemH3wVQe+7u4pIRqVfN4573ZVHH3leM4HNTjAFPq\n3dXiyGNP8daJRCIs/OY7r24EwMG9DozTomaN6oRCITq0ax11DsTWDzFEuOb/bmPpcj9dwhaWDWph\nj8ka1atx750306lD26htCrJsRb6nRcuWLanu7pvi4mJmvP6Wt974J57ioUcnUtU9DleuWhPXUcRG\nnrz51ixOOHWwTarytiWRo3jco0/wwMMTXEdS9d1eT60BWVhUhANRKU/t2rTmwmHnMHzoIMLhMB8t\n+Czu/NwdL894g5deeomioiLKyspITU2lYcOGZGT4taLGP/EU4x7xO8ClpaYyyE31AnPebd26jfEP\n3kWD+vUYcdnVlJZFP+/Nnf8JGzZsJBGzP/zIONFiiojmVsphyKAzOOXEATw7+VHPOVZUVEzNGtW9\n2h0FBYW8PONNTwuo2CjeHYMGDaJGjepscuu4dN23E7Vr12LTps1xWqS60SzBYrnbtm1n4iP3cuzR\nR5Kbk8PnXyyMGs/c+Z94daMKi4qoVjWPpyc+xP5dO/PRx5/iOA5nnHKCt/yU56YTCjkMGXQGHdqb\niXJ7TbBavPnKM9SqWYM1a9fzzqw5UcdAJBKJq91k+fb7RXz0yWfe/1WrVolL1/u/MXeybbupz3LU\nEYdG3Y8ikQjzPvqErdu2Uyk319MiURFlgDlzP/Kccw3cyFF7ryp0zxfHcVCtWnhaDBtyNsOHDiIS\nifDw+EmeCVM1zzjlKlfK5T8Xnkd2VpY5TytXIi+vCqvXrGPy09PijoVgoe6KtHAcJ9Gyj2JmpSOY\ngoa/xLzfF5MbH8Y3cK1hV4BxsDjArUqpMfjPyjakPs4vi+mWUqy1Xqu1HgOMcZfrHVjO28j/sYYJ\nGMPAccdk3wgDRVrruZgIgk2YqI8awLVa68WB7UykxWBXq6AmVosjMa1ib8MU0EyL0SH4MNMl8PfV\n7ntHAacFXq+slHoK49yxXus6wHtKqf2VUidiwv7tzWqT+znPYoo/9gfmKaV6BbTICWoMDNJaPxHQ\nIhsTBeFg2tp6WiilHsCPPAhjOgtl4tegURhjNJEW2cAbxEca1FNKHbk7LZRSLV0tDsHXdAVu5yK3\nwGZQC9zvPxO/1XMJZj/XxxyvVosMd9kjEmhh62A4MVrciXEsNMOktdWK0QL3O2pg6vo8CFyttT5D\na70Qk5YzAVMQ9G2rBdBSa305xslnnT5HKaVexndUZVakReC7D8E/bmxXH1u3xGpxLNEpUnmuFkdq\nrb/UWpe4XZQuxe8C5AAPaK2n70aLg/BrGlktEvGqq8XJGIcJQERr/UtACwe4QSllq9BHnaNKqSH4\nDuBPY7QAUzNnvvu6bcs8zh3TUHe7rRYVopQKKaUmYFK4IkEt/gQ8LbTWN2itl2mtS3+PFr+TWzER\nYQ9prT/8n0bO73SYKKWyXI/N35Icd6bazoYmoqioyMz4ZFbU+WvPUrtWTTIzM6hRvRrHHXMUUyY+\nTEZGOt/98COvvmGuNXff/wgbNmykbetWjB93N+3aKNLSUqlRvRpDBp3B2NtvBODeBx5lRf5KTwtL\ncVG8JlYL+yBUXqFWgGXL8znt7PP5/gfTVnfMDVdGtZa1DB86mNNPOR6AxyY8Re8jjqPDfr05Y/AF\nbNq8mQceeMBbNifXGFVZWZlcctFQbr/5Wvbt3DGhFjvcMO9vvlvELXfeV6EW+3cx0Y4//PhTQi2m\nvfAKXy78huzsLCaPf4CDe/Wg1E0VsUZ7ZmYmH8yZ7xln4B9fK1auKleL4PE1fOhgTjq+v7f+Wede\n5GmxeMkv/PqrnzYQfJDfuHEjI0ec743lpOP7M+jMU+O0WLlqtWcw1apZg/Hj7qZli2bccuf9hMNh\nzjrtRG9Gc83ade5Yr6J/vyO875r70SdmH2RmUrCrgKpV87j1xmtMFIL7/baOxbr1G3jxlddxHMfM\n5DuOV6AWzANuIi326dgu7mH4zCEX8s6s2QBUrZrHY4895r2XkZlBKBSicuVKrFu/kQYN6nv1Hdq2\nVnz3w49kZ2fx5OMPct1V5r6xavVaateqSSgUIiMjnQ/mzOfFV97gptvGUlZWxpmn+h2pTM5+PUKO\nf/nLzMjwUsSsFnnug77jOOy/3748/cTDnt5BLRLV7lm9ejVlZWXcfP2V5ObmeFrYTjRBPlrwKW+/\n+4EbVWVSsu666y6ys7NJzzBaZMdEhcRq8fJzkzjj1BNwHId5H30S9cS4bfsOTjzOPw6P6XeE5wxz\ngNSU1Dgtdu7aRZvWLdm8ZRuxxF5fN2zcZOrrBMgMXF+tFg3qGaeWnXkOtivf6qY5WCenNeYyMjIY\nO3YsEx66h9q1akZFS0QiEe4dN55TThxAa7ejTmpKCi8/Nylqe8PhMBs2bjJG8vYdXrtzx3G87mKW\nwsIirr/pDsY9OhHHMUWRdxUU0CJQLyJYPNhqYe8n4XA4LjLQdv1symPHAAAgAElEQVQ6Z+Bpft2N\nqlWitKiI1JQUrrnxNsLhMKtWrWLlypWUlpaSnp5OzZo1ve8d++BjEHBMdttvX668fAQnDPAnXUvL\nyjhl4DDvetyxfVvvPauFrS0TO7Y58z4mJRTyoo6sFs2bNmH0yIu48dpRpKenR91bB515StT116Yq\nBSNB7P0nkRb2vLEEP7tatWo8ePct3v8LPvuSjvsdzIF9+sdp0aF926jPcRyHg3v1oG0gwueNt2Z5\nf7dwa+/8FOi+MujMU7z006AW9nMLC4tYvWYdo0dexLH9jvTS7oLrN6xfj7NOPynq2hsc1zeBGj2W\nOXM/YtDQEV7EB5hzNsirr77K27Nme9ej44/103VsDami4mLy8qpw0/VXeN+ZFXDoBAlqYWvqBM/p\nrExTZ6uouNjT4qADuzFsyEDS09NMFJ/bErh50ybesd6sSWMeHHsrlXJz+fa7RWzevIVwOOw959gU\nYSBhSm8iLWIdj27I/Qn4zpAnA29Xwlz2bM2F/wu8Z0/cTOAWwLavvBpj7IXwZ+IXB9YrCKwX5HbM\njG8wfMfO3mf+jzVMwMyI243fTHx9gk0YIxtM62A7g2tzo2K1OE9r/bL7njX8y2K06OrqUYSJVgG/\n+Cv4M+7ByIo5mMKSRfgdesCkMJ2IMeh+dL+zAOiBaXc7HT+lZSG+sb5Caz0UY6RnYwwwu++C7ULD\n7vitFuPc7bX7oyH+vjsQv5VwGSbV52l3Vn2H+1nrMM4pm/oR1GIexpBO1D72+Aq0cDDHlMY4UII2\n2f1uOlg6fgSEJR/oo7V+Rmt9rqtFOr4DAaJn5G+13YdcLR7DT1+w47XHRSvgcve1wdq0tN0Yo4Vl\nlNb6La31JVprL9zWXed8rfVrrm6xWtztflYEc8wci2lx62Ccdwm1wD9mwURYVMWkX9TAODz2i9HC\n7ofgOehpAeDW+XkZv1ZGBFPIFLemRkIttNYfYRxWnhYkIEaLRFgtsjGpQeDvi0yl1HWYYzyEqZPS\nz9UiaNicj3EMBLUYrbXerLWeiHHwWS0SFSSO1WKIu/xErfXI8pb/vfyvWlTw0UEtdgEopQ7CHFM/\n49eR+Z+o0GGilGqrlHpFKTVJKXUYph/6D25O5N+OPLfbQWw7wiC2Tke1BF1A/i40bdKIw/v09ooF\nRiIRZn8438zinDsw4czLYX1607pVC8rCYWa+/Z6nhT1HEtUn2bxlq0kFcMNhE3VGATPTf+rZw1i2\nfAXp6WmMveOmqIfwII7jcMPV/2XKxIc59aTjOLBbV4447GCuu/IyXntxCvXq+Wm7tsbIb9HCEolE\nmP/xZxVqYbsCRCKRhFrMet+0ozyu/1HesrFa9D6oO5FIhNfe9B3qeXl5RCIR7hw7rlwtgseX4zjc\nfP2VnsOhbRvlabF69eqoKAY7g11aWkpGRgaVA2kH1shOpIV1WLRq0YyUlBS++/5HL9f8wvOHeDOr\nVguA4YECoCUlpttBdnYWxSUlXD3qEmpUr0ZZWZlXJ6F50ybusiZ1Y/DA06hX13RAsClSAPfemViL\nJk0aeQ/ydjx21rFl86a8/dq0qOPC5v337tnd3d+feu9t2rQpat+1DTgg6tYxUdJNGjdyQ+RfidLC\nEg6HGXrhZTz/0qveuAqLirzOD1aLa0Zd4oWqb9mylQb163pGZVALmwpnw+kjkQjL81dx4nFHe21L\nrRYNA4UbrSHy4bwFgKkjsG37doYPH06rVm6LX7dmg43GCBLUon69ulHnndXXpgRY4wzgP259F8cx\nHTc+/fyrOC127txF757deeLJqe7+yovSAvDa8xYWGqO2ZXO/o5b9/qAWtsbRFrfFcZNGfrenNW4N\nh8VLzERwenp6lBZt2yhmzniWKy8fEVX8ctpT47n+6sv52a3v0qJFM+rXq8tN1432zqmGDepz5OGH\n0G2/fXEchy+++tpbv43yazfGatGv72Gcc/bp7Ny5iwP29ydM86pU8bpOWS1K3VbIVtegFva6+sjj\nT3rL2Agfq0VFgRZLl+dTWlrGpk2bKC4upqioiKVLl7J+/Xqv/geYuhjhcJjsrCxCIYeWLZrhOE6c\nFvYa9PK0yXzjFkN1HIc2qqXZn24EwZat/j2jqKiIz774is77dIhKoQum9FgqRV27WnqfD7BylWnM\nkZGREZdSt2VrvHMu9r4Ve99et8Gc3zk52Rx68EH0OGA/unbuFKdFq5b+/rBjaR3Y96Wlpcye+5H3\nftMm5hoSHJPdlvK0AONMBxMBAkSlZNr17fV8neuYSknxndL5gfonAFOenc6Fl15BQUGh66SOk4h1\n69YxZswYz5FXvVpVr0XwlGen8/GnppFDdlYWUyc9HFUbLTfmOEykRWlpmbtNfnRcFXe/r1+/0dMi\nNzeHjIwMr1iwrfllo8Ps8dTzwG68/epzjBh+ruews5MVKSkh756enh49gROvRbwY69atA2MwFWEM\nq3XALAClVE9MVAIYo/g0/Flb8GuNVNdaR7TWF2EMf1usE0yhxQjRHWZsSFYwlQOtdSF+8VNviHbZ\nCH4F0N/z427LxfidRgoxs9dRuHVJjoh9Hb8rjQ3dLANO01pPDizjRZjEaPEYRs8XMWkNEaK7g1gN\no6rwaq2fwtQnmRd4eTbQxv1em+I0DJPO9FFguTAmPcMuY0+SG92xBwuhVtR5w6YwNMR3rNjfV7m/\nI8CpMVrYyIH3MMdUY+K1GAG0J3EXpmCB00RabMJEvdjWs4XuNlunXFeMw84e8GHMrH+wNo7VogF+\nwdBg6KR301NK1SO6/apNqbJaHOx+1yKt9Usx22O1sMfH77EFPS1cg9+eS/diOuXYMZZQvhY9Ap9n\nI2isEXCuNsWNg1rY/RHM443VYh6mhW8wvczeMGxURiItIDod7Q/ZxQEtwD9W7Dnayt2eCOZ86aNN\nG13w90UYc54n0sJ+x+f4BXKj26a5JNBirOuY3GPsRovq8Wt4BLXY6Dp+JruvRWnxv7C7oq+PAtdh\nqvBOx+y8QkzxmNfLXy05NG/WmOUr8r2HskTYTifBto17mh07drIifyV16tT2DItYbCeHDRs3sXHT\nZs+Ya9akccLlAZo3b4pevIT8las9LdJS0ygpLWXlqtWewWKxWkQiph5qsF2t5c23ZnHl9WMoKSkl\nL68KD917e1wx2kR06dwx4XIffWFqZtStU4vcnJwoLXKys+Javwa1sNiaCxVpYUmkxSrXOGvW1F8/\nVotOHdryzqzZUe1zc3NMvZOCgsJytYg9vhzHoXmzpvy0eAlnnnqCN/M99bkXmDt/gbc9weiE3gcd\nSM0a1cnISKe4uCQqiiNWC2uAWaPMGp6VK1eKS/+w22LbzQajPjZs3EQoFDJdh665Keo9mw4Cxtkw\n6alnadK4oVt3o9TbzkN690ysRSNfi4YN67NseT41alRn67btHNTjAHKys73jok7tWqx3nRwd27fl\n9ZnvuoV8jRbWgLL7LpjT7bVHdrVYXY4WP/28xOvMcd7gM3nltZmsD6QheFpce7Onw+BhI7AdlGK1\nsK9ZQ9EWMp3+8uteyo5d5rnpr3jrW+2++W4RjuN4hTnvv/9+7r///qjv+viTz72/bWj2anfmOHgc\n2/Nu/YYNfDBnPs2bNWHd+g2scq+JoZDjOW3s52/bvp1QKBSlhY1geeixSUB0sc3ytLDODoB2bRXv\nz5kXpYVd/qHHJvLw+ElR61/wn9Fe5BIYozSoRZDgeqcMHOpul3EItHRrSpiOVQ1YviKfo/seysgR\nF/D8izP49POvvI4kdevUIjMretIiqMXllwznjrHjcByHbl335amppq5iwwb1qFo1j58WL2HlqtXo\nxUu47S5/jGecegI7d+z09LApKsECvbbbi9UiSJ+jTiQ4QblylWlnXr169ajW3xZrONriw7m5ORQW\nFdGqZfNytQBzTNn0xbp1antaVHFrHNnzF2DBp19QVFRML7eouKVBfb+oqC30bTsjAVGRAOCnxoCp\nm1FSUkK6W8Mn+H3BbQ8Se99+74O5hEIhTjyuP9eMvpTb7rqfJ6c+7zmACouK+HXpcvbp2J6Zb7/P\njp07qVWzBuvWb6AkUIvmsy8WekVywZ98yQukd9ltKU8L8KMibEe0rQFHhFezx42ocUIOlBkn1voN\nGykpKfWiB4G4bdm4abNbpyv6O+fPn8+2bdu882L9ho206dwzLqpvV0EBRx9/Jo7jUCk3lx07d1Kt\nWtU47WO12L5jB47j0K5NK895XadOLdat38CnX3wVp0WKey+zxXHbqBa8895s1q/f6N3rqlWryoXD\nzqFdG8X5I0aRmppCSUkpDRvUZ4XbSS3YLSqRFuvWb4jbxvnz54Nfl8QWvCxzi70GlQthiiZGMAZm\nZYwzw8E87wKgtZ6vlFqJMeTD7rIRfCcJGKOsXnC9ALE1Dj7HRCHUTbDsb8ItJHtp4KVviXfMgDGi\nbApHtlLKRgZYHUKB3y8opSJaayt6aswyVouPAUdrXaaUmo3Rwp5IKzAGZFX8IqgE1l+qlHoPP0rn\nMa31cjf0von7WfO11lOVUosxUR8OxqHwFu6sv7u9aK03KaXW4dcOgYrrNNh9UYRvWO5yt9E+eM7R\nWr8Ys14T9/enGCdbBqaA5EVWC7ugUupw98+d+EZ63JgCWvR0x9LB3f4XMB1NInY78bswBYnqahKj\nxWZMFEHQvstwx9cBkzpkHVo7MbpUwuy/OviOuESdU5rE/J/uOubWEq9Fho7vahLUwh5b67XWdyul\n3sS0Qk7DL2oaq4UtBFuGX2DYpqTNCRR1tse4HW/wmtAEWB6jRRnmnLoFo4Udt9U+YReZGNKVUnW1\n1nE3snK0CGK1CHbmsilmYUzNkyHByJjAti3B32eJtLBYTeoFrgVN3HMwTgut9UMVjPcP8we0sGGX\ndZVSqTEaWJq4v5dorSNuodemlK+F5eBYLSoa++5SckJa6zla6yeBl7XW67TW2/hthW72OJ06mND/\nhYFZ7yBr165n1WpjRHXep0PCZfYEx506iONPO4eXZrxR7jLW6VOndk1yc3I8g2B9OfnlgNe5ICc3\nx9PChoMv/Ca6g1lQCzBRGTVrRD+MvzHzXf579Y3ug0w9pj01vkJnya5dBTz/4gweeXxywtocALNm\nmVDf7t3MDNhxpw7i+FMH0/PQ/hx0+IC4B6CgFgApoZDXYaAiLSyJtLDGyHp3djKRFvbhNtdNG3pj\n5rtep5iMjPSEWgQ/p3Xrlp4WHdu18WpHWCaPf9CLIgjWUKhbty4rVq6h95HH076t6Yr29bd+J7VY\nLbztdDsSWKN9546dccVuc3LNMtbhBHhRBXVq12LffTp4BnfTJvHOM8dx6LpvJ5o2aeQZfDbqwHEc\nvgmMM6hFVlamu18j7NOxvReVEIlEWOfuQ3tcqJbNKS0rIyM9ne8Xaa8AqtXCHld239l9khIKedEk\ndkzZOVlRWthjq7CwiNSUFG68dhSXXDSU7dt3EIlEvFnOoBb2nMirUsXrfBTUQrVq4b0WTBdp1bKZ\np2Uw7aNRI3/izXeWGgdItap55nu7dKFLly5emkkoFIoqtJrr7kfHvf+tWr0m7ryzXZCsFjY1IBIx\n2x9bVPbyS4ZHaZGTk80+ndp7kU7B60OsFmlpaXTdt5NnaKekpHDUEX4RRqtFM/eYysjIoEvnjlGG\ndbs2in336UCJe95VqpTradGqVSsa1K9Lyxbmc2wkERgHUfu2rb3tyc7K9rTo1MF0WbLnj53xtud2\n9277eTrFamE7ZM2bv4C8KpW96AA71k5uB6c58z5m8NARnpPJ1mixjr2UlBQvCqpD+zbedbxO7ZpR\nWgSPkQ7t2tC4of+MrFo1p1OHtmRlZVFSUkJJSQlFRUUUFRVFRdhVqVyJdm2Udx7s06l9uVoAfPHV\nN97fBx5gtHAch9atW+E4DmvWrvfSc+bM/RjHceKcBO3aKEZdfSPtu/Ti0lGmRl+tmjW84tS2na89\n92xqUzgcjqsds/DrxPeo4D0heN/+/PPPme3WYOq+f1duvPVuz6g+qEc37hhznbd/u3frSke3rkjV\nqnnlaGG+p369uqxesxbHcWjRolnctpSnBZiUo/ZdevHw+MlkZ2cRjkQ8B65d316zbHTHPh3be1rY\n+jGx2zL29hsTtuEGqF69Ol26dPEmG1o0a+LVYwLfiVOzRnXvmmS1SEkNxWkfrUUdLy3poB4HeFpk\nZ2URiUT44suvo7QIh8Ne+/Gt27YTDof55POvyM7Ooiwc5qlnnueJJ5/hux9+TKhFg/r1vMhLu72/\nVwvMLKk9uL7HpDtYY6HM3bi17nLzMIYw+M+1ByqlhiqlrnE7RdiircswxR7BN4btzLwDRB0Q7rot\niGY6JsQ8JYyxhH7vD8aws0ZkBBOKn6ha8Fr8jj/b3W3Vgfdt0EpQC5RS9QPb1yigxVKMETPCLcxq\nI1RsqPAsfJ298DGl1ClKqdFuq1O/4rwfRWK7kmzGn0UOppbMw0R05GEcHB+7n5uKbwjbh/4m+Kko\nsSFIts3scoyDzMFEp4DZ9xFidHS1sA9D9iHRwaQMleCn8ViOc39bo9nW1bCfF9TCFiut4i53C369\nj1+11kvdvxOl2UQ53GK0CKYw2Jn1bsq0zX0PYxTbyIjFrhbgF6S1+yD2O4JaBInSQinVwe0qVaCU\nCnYD8rRwSzt0dL9vo1IqF9OFxvIkibVo4v528HX5GVO/Y17gxxogdvtLAq+1j9FiFyZV6MWAFtYB\nab/jtzo4o1p1V6BFcJkMAq17E2mhtT47gaPAXpfmU7EW9sceFyXu/3OBwkRa/BXOkj+ihfv7B3fs\nKUQXtw4S1AKMY3se5WuxPGa5uVRcVBbYvcNEK6UmKKVCWutz3A26iuhwxL8NfQ/vA5iwamvQBXnm\nBRNRtX/Xzl4qRjLo0d2E6b/w0qtxhguYSACbNnJIr55kZmZ4hua0F2ck/Mxly/O9doLdu3X1tLAG\n0Esz3ohKAbFa2GKUsSk2X3/zPVdcN4ZIJIJq2ZznnnyMxgFjLxFpaWnceuf9PPDwBBa4YcBBli5b\nwZtvvkkoFGLg6Sf5Wrhhv1u3buO9D6Lr8lgt7EPzwb16sE/HDhVqsWOHn8aaSItduwoIh8O89uY7\nFBYWxWkx4Ji+vPbmOziOw4Hd9vO0sDN7pSWlCR07weOrUYMGnhaN3QiLt9/9wJt121VQSHFxMamp\nqfTrezihUIhmTZt4ee9bt26jZfNmRCIR3nr3fdauXR+nRfv2vpG10o0e2bdzRzIzMigLh3nxldej\nHFe2eOrrM9/1Xk9NSSEcDpOSEuKJR+5j6qRHmDrpEc/4BX8GOzcnh9EjL2ZF/ipPi7LSMtq0NqH8\nk556NqEWb7u1SsLhCC2aGYNpg9uWcvaH8/ly4bfecWFb1/bre5hXzyISiXha7NixM2rfTZg0BYB2\n7VqzfMVKQo7jGX59evX0tHj+xRlRxQrvv+cWTjlxAK/PfNd73YbhB7W469YbcByHLVu3UVpaFqXF\n1EmPeEVZAb77fhGtVQsTSVO/vqflgd33w3EcDti/i+c0ALjmipE4jkNBQaFXxPW+u8YwdepUpk6d\n6qVUHH9sv6gImdEjL3JrAhQRDoeZ+c773HLHfd55N2fexyxdtiKgBV4xSQd4/sUZnvPAcYweu3YV\nRGlx0IHd2LZ9O7sKCkhLTeWpCQ/GaZGdlYnjONSuVZOpkx6hciVzzNSvV4dmTRuzT8d2UVpMf3Yi\nmZkZlJSUMGL4eVERb+PuvY3jj+1HOFDU1mrRt29f8leu9jQPRuVNnfQILVv46RZz5y/wtLB1KD77\n4isWfvu9e077USS9enTj46jikb4WYCKUFi/5lZ4HdmN5IFXi0EN6ed0+3pk1m02bt1ClciUG9Ded\nOJ9/8VUvRah+vTqeIdttv32JRCJUqVyJGS88FaXFfXfd7H3+/XePYV/XGZuSksKM55/i+SkT+Prr\nrxk1ahQZGRkceMD+3HD1f6PO7wVzZqJamePvsEN60bB+fe8aFNTCGqmffv6ldz706tGNBZ+aKKYT\njz2azp2MY2LadHONnfvRAmrVrIFq2TxOC9WqBaVlZXz8yResXWsM2WP6HUkkEuH5F1+Nasvcv5+Z\ngH1u+iteqsfatetIT0tjef7KqPuGvYZYR11KSgpd9/Wfs+bMmeOlhX33w488+/zLOI5D/6MO59EH\n7mKiez067JBe1K1Tm75HHOrWiNoUp8V33y9yowsdevfs7mnR97BDorZl166CKC3Adwbl5mTTo/v+\nlJaV8clnX3LgAft5jlC7/rp165k2fQaO47Bz1y4cx6FKlUqeFot//oW773s4blteft20704UVdmr\nVy/GjRtHSUkJoVCIIw/v40XJHXv0kRzd9zDX2XAAUyc9wpSJD3tafPe9Jj09WvugFqplCwoKC2nU\noD5d993H02Lxz78QiURYs3Yd1apV9bR4bvorFBQWeilGYBz+Vovnnn+Fu+59iMlPP8f27TvitNi4\ncZN3jf38i4UVatGpQ7u4tJxevXqBMX4yMAbSKEx4fRhTB8O2352pte6lte7tvuZgHACF7vIPADcB\nfYDhGGPvG0xu/XJM2oJ9CGjv/j5YqUCel6krkI2fLrJFa70EUxDT+R8cJhHgGUwx2ULMLHSwloLl\nA/d3GNORIqiF/ZxYLXC3167XKKDFGlens/C77Vgtwu732Rtig4AWwzD1XIbgt+jd4s5sZ+DXfqiG\n35VofmCcDiYlJwKMD8xOn4GpXVAMjA1osSSwHuAZYue7nxF0QMQ+yHVzZ9stVovZmIgdWxR0tdXC\ndYzhbu+p7riDUQbBlpFBLYJtqC/GOExGuWMKhlUGtVjvfu+5SqngwR/Uwt5YUzCREQ6mDsdMTOrC\nZvxuPlaLHzFtj8GPqihPiwX42n6NSXUKaqHxHZODiS6GarUYgd9+uCXmeN4P34mXFquFUqoq0R2n\nluNHIPV2j+FemHofDuZ4sPv3F2Ca+//QGC0O1Vq/jn/s/ai1tt50W8wpVosgnhZa6x0x78VqkYgR\nmHNpHcZxEatFXN0BVwsbffMkvrMySouAJgPw7f1fAud7cTla/BX8ES1sms4MzPadH7tCAi3QWi+M\n1SBGDxvW+5XVQmu9LvazY9mdw2Qo8JrWOhgukF/BxiaVxo0a0P+owyktK+PikVeyfIWfzjjj9bd4\nYpJpfzd86ODkDRI4b/AZZGZksGx5PpddeUNUnvYPizTnDh9JUXEx+3XZx2tHOmL4uTiOw7vvzeGO\nex6MKiz4o17MsIv/S1lZGZ07daBXjwM8LcrCYVJTU1i+YiWXXXkDO3ftYsbrbzFh4hRjgO7cSeVK\nuZx1un/tDofDjL72ZsrcjiSPPzz2N9V8SUtLpX+/w4lEItx8+1gvtNZu17CLL6e0tJRjjjnGyx+3\nWoB58Lz2xtu99IMfFmmGXHCJl6efnZXF5ZcO360WH7nrV6tWNaEW27bvIC0tjVWr13LSGUN4/Imn\nPS1yc3P4+psf+OXXZVSpUpmBZ5wc0KIahx/am7JweLfHV1CLF2e8Trs2im3bd3DhpVfw0YLPPC2U\nUsydv4C0tDSuu2pklBYz332f+nXrsHPnLs4690IGnnuhp0VmRgb5+avcWW1TB+OOex4EYMigM4hE\nItxxz4OeAZyTnU2vHgfw1rvvc9NtvvO6tLTU02L4JaNZkb+SMbePZeE33qRIoO5CdkIttm83Dqr3\n58xjzB338sJLr3paNG7UgHfe84sRWi0Ki4rIyMhgx46dDDrv4hgtUtm5axffL9Leem+/N5v6detQ\n4hbnXblqDUcccwqz535ERnq6p0Xt2rVYvmIlVapU5rxzzvK1GDvO244G9etx6MEHxWlx9pkne10b\nhl8ymtVr1tK9W1cvbD2oRW5uDo9PmsLrM98lPT2dQ3r3oLSsbLdazJn7MWCMkS6dO7LvPh2jtBh2\n0eUsXryYxx9/nNdnvutpsUgv9tY7YUB/WjZv6mmxes1aKlepRDgc5tobb+OaG26N0sLez1WrFkSA\nO8Ya4wrgwAOMw/7RCU9GtUjep1N7Roy8mnA4Qv9+R9CwQf04LY47xi8s+fikKV79BhtFMGrkxTiO\n42nhYGq+hN3zJ6jF519+zW13P+BFaOzcuYthF13Ozz//zDHHHENqaipfff0tJ51xbpQW9457jJdf\nfZOMjHQqV67EmrXrPC1efm0mXfbpSGlpGWcPuYhffl2KTSU6pHcPxj06MSqly2oxfuLTzHj9LS+S\noF1bxQ033+ktV69u7Tgt/u+aUVw9+hKqV6vK6jVrvRQHq8W8jz7h3gcew3Eczj9vEHlVqjB44GlE\nIhGuuPZmfvrZT2f6/MuveeMt087YOnEtVouF33zL3fc/4r0eCoW4/+HHPS0uuWho1DXIalFWFubC\nS67gpRlv8PmXxsHeqUM7T4vePbvTsUNbLr5gCJFIhPETn2bC5CmsyF9F757dWb4iP06Lk084hqp5\nVSgoKODiy65i+Yp8zh18BjWqV2PN2nVeoddKlXI5/eTjo7Ro27oV4UiE7OwsT4vvF2nvegp+fY1Y\nLZo3b+79/eiEJwHYr8s+jLnhyjgtAAb0P5JGDU36S7VqeZ4Wn32xkAWfGWdBZkY6Cz77IkqL4Lac\nPfRiTwvAm6QAOP2UEzjt5OM8LWxnqMVLfiU7K4s1a9dx1HGnmxTD9HSKiopp2bwpL73ypqdFWTjM\nhMlTvW2585bree3Nd7xriH0eiOWHH8zzfU6OuS45juOtb6+hQawW+StXUb9eXcLhMFdcezNff/u9\np0V6ejoff/q5e8yejeM4nhYbNm7y0pWKi4tZviLf26/g13iqVCk3Sovl+SuJRCK8PvNdTjxjCGvX\nrfe0qFY1j0V6MVXzqnDkYYdQWlZWoRbBZ5YY9nV/bwbuw6QmrMN0Jiki3kiegjGymwFL8TuGOBhn\nSg9MFEkfd90sjEE3DRN1UAdjyKYCLyulmiuljsB0aAD/OZhyM58AABZrSURBVNvOat4KlATrkvye\nH0wh17O11lvwO/FEFTVUSlXCGA+NMTU/HgeeCmjxojsuh0DUh1LqLEx7ZOuUCWpRx329M8a4Dmox\nC1OwEVfLFKsFvnHyX0wKCpiUiNrAS5jID/swdZpS6izX8LQPdv0xHVE2YrrSoJQ6CVMINQLco7Ve\nEdAiWFn9AaVUo4AWmzGRQI67rtUiBRONEAJmKKUOjNEiH9MNx+6GoBZPKKV6AG8GtLCOoSVa668C\n4wlqYce53NXBavEzphwCADFa1MJECOwHTFFKVY/RYiMmJcqGX7d3l++EcX6VYRx/NnWnu7veDVrr\nnzH7fHdaBJ1B92Hqj3haYBwhY12NR2AKjoI5LhYqpS7EnANWy8sw+zjibncJxinnaaGUqoUxmitj\noqYcTBrT7rSwRaZWY8pLFMRocZrW+hOl1EBMgdAIpoaO1f494MOgFvY9txhvsCDqfcTgGvtWi4sx\ntWsi7vpOjBajMQ63OC3cqCTHXS+oxVxtur/cinEQeVoExtkUc2wGtbDcg3GQeVrEbsOfRawWSqkR\ngW2K08Jd3nIrv12Lvwwn0Uz5n0iEwt2nTfyZbNm6jUFDR/DT4iWm2FuL5mzdtp1Vq9fgOA4jR5wf\nVaF/j5DpHrsBLWZ/OJ+RV9xAoTsb07RJY1PMb9kKHMdhn47teeSBO6NyqJ974RXG3HEvpaWlZGVm\n0rRpY3bt2uWt00a15PGH7gkUWTNa6J9+jipIGNznGRnpPPHIvewX6Hzw1rvvc+mo6wBTNLJ+vYqj\n0a6/6jLPAbJ5y1bOOudCflm6jJSUFJo2aURpaSm/Ll1uZjJ79eLBBx8kPexHrs3+cD4jR18f1VIx\nNSWF0kD0TU5ONg/de7sXJVGRFnb7+h5+CPe7XRQSaRGL45iuMJFIhKp5VXjovttZu259lBa1a9fk\np8VLvGJ+WVlZlJWVemH+A884mWuvGBmvRShkyoEHonzS09MpLi4mJSWFu265nqOPOjyhFvHjNKkV\noVCIA7t15eBePbhj7LiAFo1Ytjw/KtImKzPT7TqzAcdxqFmzOuvXbyA3J8fUMYhE4p4iLaFQiHA4\nTGpqqjf+tLQ00tPSKCgsiDI6g2RmZlBUVExqSgojR1zASzPeKFeLIGlpaWZbsrK4/sqRTJoyzZvR\nDIVCCaOyjC7GKKhWNY+H7rudzp06eEZYsNtRKOSQkpLqOQ3S0tIoKSmhU8d2FBYWsWLFStMe1nVy\nJErbCNK0SSMqV6rETz8v8QqgxqakZWdnUVBQSEpKiteR6b03p1NWFubs8y5izdp1bm2SxFpkpKdT\n6Nb1WPTVPPJXrubc4SNZtnxFucdzUJfePbvzwNhbue7G26O0SE9Po7S0rNwUutq1avL2q9PIyspk\n/YaNHHzEcVHnZSKqVa1K0yaNOOn4/jiOw3U33UFZWRlZWZk0adSQn35eEpW+ZAmFQpxy4gDOGXga\nQy+6jPyVq4lEIjRp0oSigl1e7aHYbcvMyOCh+24nJyebCy+5gs1bErfrtuTmZFNQWEg4HCHkOF5U\nU+NGDSgqKva6isReK+1r777+PJmZmVFaOI5DVlYmxUXFUfqkpIRITU2luLgYxwlxTL8juPOW6wFj\naJ4/YhQLPv3Cq0sT/J5IJELdOrWZ/bbbuMK9j0ydPJ6bb78nYaFY25WkshshVlpail78M8XFJaSk\npJCSEopL1TMpjvH3j3vHPcb4J572tGxYvx6r164lHI4QDoc9LRo2qM8XX33DhZeMZtv2HYRCDo0b\nNaS0tNSrFwNQKTeH6tWqsWxFPo7jcEy/I7h69KXeddmkpsVvU3lavPTSS1x11VVRy2ZkpFNaWkZZ\nWVmcFgA7d+1i9eo1bNu+I+F5alOmYrX4fpFm2EWXs3HTZiKRCPXr1SUtNTWqlfasN16I0wIo91hM\nTU2hrCwcpUXfY0/1JlAy0tNNgQi3hlXwO9PS0ujYvi3PTH7E0+Lqq682dcHcotktmjWhcuXKLF22\nnI2bNlO9WtWoOmVWi+07duI4fg2cWD1OOXEAN17rN4CI1SIRoVCIkSPOp0vnTr9JC7uPq1XNY9Jj\n91OnTu3dalGtap7X9rl9u9a8+MxEyKyOUuocTKvVNfgFDldinCEtMcVD1xLd6SYX4zDJpZxZ3QBh\nzKzsCRiD9E1MWoqNPojFijTPnd1EKTXslp9+eizBsrvlmlatvscYu5YWRBdy3Ol+Zw7GkTMAE25v\no2tWYhwAXfHrXOx0/7a1R+4HrsDUKuxDxZOruzDGWAR4DRNF8Q7GoA1j0mVaEd0S135fGvArxiFy\nMcaR4GBqOMSmf2zG7LP6mCiKCKa2wyC3boGD6eYztJzxhvEdJSH3t9WiQ8z4gthOR6WYrjjnYIz5\nMPF1IK0WuN81RWsdZXAopZ7DGMax47JREd/g14UB+Aq3Xoo7ZnuMxR5r1gGxFOMcvAyjRXnHpWUF\nfupWKkbf+uWsV4gfGRIBWmitf1GmCPG9GF0LMdEELYkutrrR3dYa7u/rMM6LoBY7MREG9nuL3Z9s\n97O3YroL3QEM/A1abMWkKs3WWvdRSp2OcQpZdmCOQXvcB7UA4wB6A3O+d3a/ZynmvFL4qV2eFjHj\nsKl5TxPd+SdOC631bUqp7/BTUj7GOMhsWl9CLbTWa93vGYBx/mZjnAuLMNextu4YY7Wog3HWpbo6\n+NXwE/NETDHk2O1sjDmXI5j20bvTwkbE/IJJtYrSIsG6w4CH3W1fgzl322H23VLgQKvF7lBK3YBx\njM3WWvf5LevAP9BhAiZHf8Lkqbz1znusWLmK1NRU2rdtzcAzTuawQ3rt/gP+bBI4TABW5K9kwuRn\nmP/xJ6xdt4GszAxatWzOgP59OWHA0Qk7wOjFS5j81LN88vlXrN+wkYyMdFo0b0r/vodzykkD4lrx\nWS1ee/NtVuSv9Izb3Jwceh7YjQuGDvJqJVjG3D6WqdMSFYSOx3Ecnnz8gSiHy85duxg/8WnefW8O\n+a7+qmULThjQj5NOH2wM2wRajJ/4NO/Mms3Wbdu9YpHVquZx1JGHMuycgdSuHd1VpzwtwmVlfPPd\nIgb078sdY66rUItg7Yq01FQaNqjHwb16MHjgadSoXq1cLWINHDAPiU9NeLB8LfJXEY6EPaM/JyeX\nzp07c97ZJ0etk0gLwDsesrMyadG8Kccf24+TTziWUCiUUIuaNarz69LlUVp2bN+W4wcczZXXjUG1\nas69d9zEw+MnMWfux2zYuBE7A1+RwflbqVY1j+7dujL4rNPo2KFtQi0cJ+R16nEc0yWhXp069Oi+\nP+ecfRoNG9SnuLiYKc9OZ+Y77/PLr8s8Z0aZ25nEcUz3nUYN63NI757evrN8v0hz4ulDEj7cB41i\nayz1PaIPDerVZfaH81m6PD+q6G6i9a2jJhKJsH/XzmzatJnlK1ZSFg57zqYa1avRpXNH+vU9jItH\nXkUoFGLWGy9Qr24dtmzdxqOPT2bWBx9G1dIJarFv546MuvpGHMfhhy/nAqb2zZNTpvH6zHf5Zely\nysqiHR9paam0btWSU08awEnHH4PjOBVqkWjbjj36SM/Af2fWbC4ZdW3CYz+WUCjERecP4eILhrDk\n16VMmDSVBZ9+zsZNm6mal0e1qnls37HDi0Jr27olZ51+slcUecfOnUx5djrvvD+PpUuXUlZWSpXK\nlUlJSWHL1q1e2szJJxzDeYPP8gqrbty4iclTpvH+7LksXZ7vOdccxyEzM4OyMpN+1qRRQ7p22Ycp\nz073NLP7MtH2WSdlSkoKb7/6HIt+XPybtQAT1XT5JcPpd+ShUa+XlZUx5bnpvPDSayx2o0zatm5J\n2zaKl2a8SZ3aNfngrWiHCYUbObTfSeSvXEUsiaIJAIadO9C7Hkcixli3GjZv2oQTj+/PWaed6LXN\ntrw/ex5XXj+GrVu3kZ6eRv16denZfX+efna6p0VDtyvKuvUbmPjkM8yZ9zGrVq8hNTWVBvXrsWHj\nRjZs2ERKKETlKpVp3aoFp5w4wNPCXpdnvj2LpctXePeo1NRU2rZuSYvmTRNqMWHCBO655x5SUlI8\n5+futHAch/fenM7D4ycxd/4C1q3f6O2H3Wmxdds2TjjtHFauWkNGejpZ2Vk0bdyQr77+jlAoVK4W\n+StXUVYW9q6rqampEImQm5tDm9atorQ4+oQzWfLL0oSOuthjMyUlxVwLAlqkp6VRHKNF8Jpgr3Hx\nWnziFVG1y7du1Zyzzzw1qkV3Ii1CoZDrcI+QlpZO507to561KtLCjqle3docekgvzht8JrVq1vhN\nWgS3zTqSXYfJaEzaw3r8+hre6vgGTvCDIxjD7Uj3x6Y1hALLFwNfYLovPKG1tjPFVTGG/vEY48au\nU4Qxeta6nz0vkPbC847zhx6+r2vVKtHNOda4XYxxdozVWucrpR7AGN0VrWMJA4dorT9USqVgHBmD\nMYZXWmCZUoxBtgVj1E/UWj8HoJTKwqRUnIJxRJUAqzBGkTWMFmGiKu7RWm911zvB/b598dufvo+Z\nAe+EMfi2YOrOPK61fjV28EqpQfgdMmxtEmucfeJ+1rEJtrs8PdZgis7ep7X+2q0xcSXGYdYMs7/D\nMVqkY4rbTtFaD4oZXzVM54/yjPxY5mMic8LAfzDOkAPwC3yCOTatng+6tSZRSh2FSafqSmISHUu3\nYHQ7FeP0sM6lCGYffgqc5K7byhrGSqkumIiLXhhDfzvGqG3ojtWmKn2I6fKzYDdaJHot6HQ8BuOc\nq0iLHIzjb7bW+lD3+HqBxPs6kRY3aq1vcqNJhmEM/faY+jBrytMiEW70y30YZ1R5WiQuzhTvAIzS\nIvAdTTHpV4djdC/FXAsq0uK3cqPW+qYKts86TH6rFucBXTARbhsIaFHBej0wkTjdMdeHlcCrwBit\n9Yby1kvwOTcA1+Nq8VvX+0c6TP52lOMw+VciWviIFj6ihY9o4SNa+IgWPqKFj2jhY7SoaDb9b8O0\nP+gwOTUS2Su2TxAE4Z/E7toKC4IgCIIgCILwJ/G/x3AKgiAIewpxmAiCIAiCIAjCHuIvje0WBEEQ\n/lTEYSIIgiAIgiAIewiJMBEEQdh7EIeJIAiCIAiCIOwhxGEiCIKw9yAOE0EQBEEQBEHYQ0hKjiAI\nwt5DRb3VBUEQBEEQBEEQBEEQ/pVIhIkgCIIgCIIg7CEkJUcQBGHvQRwmgiAIgiAIgrCHEIeJIAjC\n3oM4TARBEARBEARhDyE1TARBEPYexGEiCIIgCIIgCHsIiTARBEHYexCHiSAIgiAIgiDsIcRhIgiC\nsPcgDhNBEARBEARB2ENISo4gCMLegzhMBEEQBEEQBGEPIREmgiAIew/iMBEEQRAEQRCEPYREmAiC\nIOw9iMNEEARBEARBEPYQEmEiCIKw9yAOE0EQBEEQBEHYQ4jDRBAEYe9BHCaCIAiCIAiCsIeQlBxB\nEIS9B3GYCIIgCIIgCMIeQiJMBEEQ9h5CyR6AIAiCIAiCIAiCIAjC3w2JMBEEQRAEQRCEPYREmAiC\nIOw9iMNEEARBEARBEPYQUsNEEARh70EcJoIgCIIgCIKwh5AIE0EQhL0HcZgIgiAIgiAIwh5CIkwE\nQRD2HsRhIgiCIAiCIAh7iL8iwkQp5QAPA52AQuA8rfUvgfePAa4DSoBJWusJf8EwBEEQ/nFIlxxB\nEARBEARB2EOE/+DPbjgOyNBaHwhcBYy1byilUt3/DwMOBoYppWr+SZsjCILwj0YcJoIgCIIgCIKw\nh4j8wZ/d0BN4C0Br/QnQNfBeG2Cx1nqb1roEmAf0+lM2RhAE4R/OX5+Sk1n9L/+KvQbRwke08BEt\nfEQLH9HCR7TwES18RAsf0WKv4i8q+loZ2Br4v1QpFdJahxO8tx2o8tcMQxAE4Z/FX+0wcf7izxcE\nQRAEQRCEvYb/i0T+iufjbUClwP/WWWLfqxx4rxKw5S8YgyAIwj8OSckRBEEQBEEQhL2b+UA/AKXU\nAcC3gfcWAS2UUnlKqXRMOs7He36IgiAIex9OJCLNzQRBEARBEARhbyXQJaej+9I5QBcgR2s9QSl1\nNHADJvr7Ca31o8kZqSAIwt6FOEwEQRAEQRAEQRAEQRBikJQcQRAEQRAEQRAEQRCEGMRhIgiCIAiC\nIAiCIAiCEIM4TARBEARBEARBEARBEGIQh4kgCIIgCIIgCIIgCEIMqckewF9FoFp4J6AQOE9r/Uty\nR5VclFLdgNu11ockeyzJQimVCkwEmgDpwC1a69eSOqgkoZQKAY8DCggDF2itf0juqJKLUqoW8Dlw\nmNb6p2SPJ1kopb4Atrr//qq1PjeZ40kmSqkrgWMx98txWuunkjykpKCUGgQMBiJAFubeWkdrvS2Z\n40oG7vPFBMy1swwY+m+9Xiil0jBatASKgUu01l8nd1SCIAiC8OfxT44wOQ7I0FofCFwFjE3yeJKK\nUmoUxjjOSPZYksxZwAatdS/gKGBckseTTI4BIlrrnsB1wK1JHk9ScZ1pjwK7kj2WZKKUygDQWvdx\nf/7NzpLeQHf3PnII0CzJQ0oaWusntdaHaK37AF8AI/6NzhKXIzCtWnsCN/PvvnYOBQrcc2QYZkJC\nEARBEP4x/JMdJj2BtwC01p8AXZM7nKTzM3B8sgfxN+B5jHMAzPFfksSxJBWt9QzMAy6YiJvNyRvN\n34K7gUeAVckeSJLpBOQopd5WSs1yI9P+rRwJfKeUegV41f35V6OU6gq01Vo/keyxJJFCoIobaVIF\nE1nxb6UdMBPAjbKpr5SqnNwhCYIgCMKfxz/ZYVIZP6QcoNRNQfhXorV+GShN9jiSjdZ6l9Z6p1Kq\nEvACcE2yx5RMtNZhpdQk4H5garLHkyyUUoOBdVrrdwEnycNJNruAu7TWRwLDgan/4mtnDaALcBJG\ni2eSO5y/BVcBNyZ7EElmHiYt6UfgMeCB5A4nqSwE+gMopQ7AnDM5SR2RIAiCIPyJ/JMfgrcBlQL/\nh7TW4WQNRvj7oJRqCLwPPKm1npbs8SQbrfU5QCtgglIqK9njSRLnAIcrpT4A9gGecuuZ/Bv5Cdd5\nprVeDGwE6iZ1RMljI/C21rrUnT0vVErVSPagkoVSqgrQSms9J9ljSTKjgflaa4WJyHpKKZWe5DEl\ni4nAdqXUh5hU6J+ATckdkiAIgiD8efyTHSbzgX7gzXp8m9zh/G34V8+eK6VqA28Do7XWTyZ7PMlE\nKTVQKXWV+28hpnjhv9KpqLXu7dZnOAQzY3q21npdsseVJM4B7gFQStXDOJ5XJ3VEyWMe0Bc8LbIx\nTpR/K72A95I9iL8BufgRrFswBYFTkjecpLI/8L5bF+wFYI3WuijJYxIEQRCEP41/bJcc4GXMjPF8\n9/9zkjmYvxGRZA8gyVwF5AHXKaWux+hx1L/0AW86MFkpNQdzLbjkX6pDLP/2c+QJYKI7YxwBhvxb\no/O01m8opQ5SSn2KcTZfqLX+Nx8fCvhXd5tzuQuYpJSai7l2XqW1LkjymJKFBqYppa4GCjBFYAVB\nEAThH4MTifybn/0EQRAEQRAEQRAEQRDi+Sen5AiCIAiCIAiCIAiCIPwhxGEiCIIgCIIgCIIgCIIQ\ngzhMBEEQBEEQBEEQBEEQYhCHiSAIgiAIgiAIgiAIQgziMBEEQRAEQRAEQRAEQYhBHCaCIAiCIAiC\nIAiCIAgxiMNEEARBEARBEARBEAQhhv8HBx4VhcJ0BpkAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c948810>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"junctions = ( (1,0,1),\n",
" (2,1,2),\n",
" (3,2,3),\n",
" (4,1,2),\n",
" (5,0,1),\n",
" (6,1,2),\n",
" (7,2,3),\n",
" (8,1,2),\n",
" (9,0,1),\n",
" )\n",
"\n",
"upstream_densities = (1,1,1,0)\n",
"downstream_velocities = (0,1,1,1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 5-belt balancer\n",
"Here is what seems to be a 5-belt UTU balancer. There is probably something simpler, but the possibilities start exploding at this point so it's hard to say."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAE5CAYAAADiGd1TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XucTfX+x/HXmsEMIiWXkEvSV7nnfo9SqE7S0cXJaSQ6\nnVJxjhJKSFK6/FKddJyoThcRcsqlkPslRUlYkXI3w7gMgxns/ftjZuxh9t4z9uz7fj8fj/Uwe9Za\ne3/W21qz93d/v2sty+l0IiIiIiIiUlhxoS5ARERERESigxoXIiIiIiLiF2pciIiIiIiIX6hxISIi\nIiIifqHGhYiIiIiI+IUaFyIiIiIi4hdqXIiIiIiIRAFjTHNjzLdufn+bMeY7Y8xyY8yDgaxBjQsR\nERERkQhnjBkE/BtIOO/3RYBXgRuB64F+xphygapDjQsRERERkci3FbjDze+vAbbYtp1m2/YpYBnQ\nLlBFqHEhIiIiIhLhbNueAZx2M6s0cCTX46PAxYGqo0ignjibM8DPLyIiIiICYIW6gAI5merb5+PE\nsr5uXxpZDYwcpYDDPj5XvgLduICTqQF/ibCXWDbrX2WhLHJTFi7ZWTh+mRzaOsJAXJ0kQFmAssgt\nJ4szr/0ltIWEgfgBHwHKAlxZPGdFxmfqQHrOGUnfZwe81vN3iE3AVcaYMsBxsoZEvRyoFw9840JE\nRERERLIEviHkBDDG3AuUtG17ojFmIPA1WQ2PibZt7w3Ui6txISIiIiISBWzb3g60yv75k1y//wr4\nKhg1qHEhIiIiIhI0kTSE68KpcSEiIiIiEixOR6grCCg1LkREREREgkY9FyIiIiIi4g8RdWWrC6fG\nhYiIiIhI0KhxISIiIiIi/qCeCxERERER8Q81LkRERERExB/UcyEiIiIiIv6hxoWIiIiIiPiD7nMh\nIiIiIiL+Ed09F3GhLkBERERERKKDei5ERERERIIlyk/ojomei0+nzqR2w9ZMm/FlqEsJOWXhEm1Z\nbN+xiyHDX6BD5zuo26Q9bW64jUeeGMyKVWu8rnfw4CFqN2xN/4FDvC6Xfvw4Hbt0p3bD1qz5YZ0/\nSw8rU+at49o7x/D5gp9CXUrIKQsXZeFi1etI3BMfYtVpH+pSQk5ZuDTu14/hZ87QqHfvUJcSAZw+\nTpEh6hsX6zds5OXX38KyrFCXEnLKwiXasli6fBW39/grM2bN5vCRo9SqWYP4+HgWLl7GA397gpdf\ne8vjuouXrcSyLNq3beX1NUaPfZ09e5OjJjN3ft6yh3EffhvV21hQysJFWeRS4UqstvdG0uecwFEW\nZ1Vq0oROL72EM8q/kfcXp9Pp0xQporpxsXrNWvr+fSDp6cdDXUrIKQuXaMvi0OEj/GPwcDIyM+na\n+UaWzv+CGVMms/jrmYx7YTjx8XG898EnfLNgsdv1Fy9dCUC7Ni08vsaiJcuZ/sVXAak/XHy3YTt9\nR00h/URGqEsJOWXhoixyqXINcXc8CcUSQ11J6CmLs6q3b899c+eSUKpUqEuJINHdcxGV51xkZmYy\n4T8f8M7E93E4Iuc/IxCUhUu0ZjF1+izSjh6jSuXLGTNyKMWKFj0775YunViz9kc+nTqTT6fOoNMN\n53bdOxwOVqz6DlOrJuXLXeb2+Y+kpfHMyLEUL16cEydOBHRbQiHz1Gne/XwlEz5fgSOCvhkKBGXh\noixyiS+C1fRPWM1uByuqv5PMn7I4K75YMdo+/TRthw7FiovtLC5cdP9Nibq9YcfOXdx02928NWES\nFhZPPNqPSpdXDHVZIaEsXKI5iyqVK3Frl070vKv7OQ2LHKbWVQDs3rsvz7x1P20g7egx2rfzPCRq\nxOhxHEg9yMD+D/mv6DCxY98hOj8ygbenLsOy4PF721Gp3MWhLisklIWLssjl4vLEJb2C1eIOAJwr\npkLagRAXFSLK4qxLrrySx7Zsof2zz4LTycJhwzi8fXuoy4ocTqdvU4SIusbFvuT9JKfsp1GDekz9\naCIP9flrqEsKGWXhEs1ZdL35BsaNeY4H7u/pdv7Pv2wCoHq1qnnmLV66AsuyaNvK/ZCoud8sZPa8\nBTRt3JBePXv4r+gwsS/1KMkHj9LIVGHK2CT63en9vJNopixclEUuF12aNe3ZguOTZ3GumRXqikJH\nWZxVukoVSlWuzM4VK/h3s2Yse/HFUJcUYRw+TpEh6oZFVaxQjglvjqNda8/jx2OFsnCJxSyOHj3G\n+x9NYcas2RQpUoS+ve/Ls8ySZSspXeoirmtYL8+81NSDPDd6HCVKFGfMyKHBKDnoKpYtxTtDetD2\nupqhLiXklIWLssjl2EEcM1+G7etDXUnoKYuz0nbt4uNbbmHrvHmhLiUyRVAvhC+irnFR9YoqVL2i\nSqjLCAvKwiWWsvh6/iLeePvf7Ni1m8zMU1S6vALDhw6icaP65yyXsv8Am3/dStebbyDOzXjZZ0aN\n5ciRNJ55eiCVK10erPKDqmrFS6ha8ZJQlxEWlIWLssjlSErWJMoil0PbtnFo27ZQlxHBortxEXXD\nokRi3foNG/nt9+2cOnUay7I4knaURUuWk3783KtjLV6adQnadm1a5nmOGbNms3DRMlo0a0zPu7oH\nq3QREZHop3Mushhj1BDxQUrKfrp27UpiYiJW8cvOTollKtO12z2kpOwPdYkSAu72C3/tE7169mDd\nygUsnT+LMSOHkpiQwCefzSCp72M4HK4xm0uy72/RtlXzc9ZPTt7P6Jdep2TJEox+7ulC1VIQubOI\nr9ub+Lq9KXFdX255+FVSUtMC/voSnlJS07RfZMudRZGBH1Nk4MeUfPJTbn33W1KOngx1eRIiKUdP\nnt0vRgAjgOeBj4D00JYm+YruS9F6bTAYY640xsw0xuwCthljdhhjvjLGXB2k+iJeUr/+zJkzh4yM\nc6+RnpGRwZx580nq1z9ElUkoudsv/LVPVChfjsTEBC4reyndbuvCf997m4SEYmzYuJlZX2WNjz19\n+jQrv/uea2rXomzZS89Zf8jw0aSnH+fJAY8E5YpabrPIPM3cpT/Te9jEgL++hKfewyZqv8jmNovT\nDuZu3ssDn6wMYWUSSg98sjLPfnEG2ArMDFlVIvn3XEwExti2XcW27eq2bVcFRgGTAl9adFi5eo3X\n+QsXLQ1SJRJOvO0X/t4nalSvSqeOWfe3WL1mLQDfr/2JY8fSuf68u3J//Nl0lq9aQ8tmjbn7z938\nWocn3rL4dvWmoNQg4WfVT795nBdr+4XXLLYmB7ESCSertnu+DO7vQaxDfBDjw6ISbdtenfsXtm2v\nCmA9Uadl86Ze55/foyGxwdt+caH7xLFj6Wza/CuHDh/xuEzlShVxOp0cSD0IwOLsIVHtWp97vsWc\neQsBWLH6e2o3bJ1nytGrz6PUbtiap58dfUG1uuM1i8zThX5+iUwtGni+UlOs7RdeszgdOZenFP9q\nUc39jU8hqwdDwlkMD4sCfjLGvGeMucsYc7Mx5s/GmPcAXYetgCa/O54uXbqQkJAQ6lIkjPhzv+h2\n9/3ccU9vpn/xlcdldu/JuoFexQrlAFi6bCVlLi5Ng/p1zlnOXF2Txo3qe5xyXF0ra7ka1a4odP06\nRsSdSc8/qP0im7IQd967t6X2i0gV5T0X+V2K9u9AN6ANUBpIA74EZgS4rqhRvnw5Zs+enfXgZCpW\ncc/fNEjsyL1fWJZVqOdq3bI5U6bNZOr0WSTddzfx8fHnzN+1ey/zFy7Bsiw6tGvD3n3JbN32B7d1\nvSnPcw17aoDX18rpvXhm8ACaNm5UqLpz+DMLiR7ly5bWfpFNWYg75UslMnv254D2i8gT3T2OXhsX\ntm07yWpIqDEhEqYeTOrJF/+bw/Yduxg4eDjPDR3EJWUuBmDjJpsBTw0nIzOTpo0b0vH6Nnzy2Qws\ny6J927yXoBUREZEAi6BeCF9E3U30RGLNFVUq8/rLoxjw1HC+nr+Ibxcvo0b1amRkZPDH9p1YlkXD\n+nV545UXgKzzLeLiLNq0ip27lYuIiIQPNS5EJMxd3641s6a+z8TJH7N85Wq2/b6d4okJNLmuAbff\n2pnut99CfHw8madOsXrNWurVvZYyF5f26bXU/S4iIlIIUd5zYTkDu4FOTqYG8vkjQ2LZrH89nHPh\nPOH5cnJRJ1cWMS87C3cf1mNqnwCvWZzZEFtXvo6rkwSA45fJIa0jHORkof3CexanX+0Z5GpCK37A\nRwCcee0vIa4k9HKycLdfDA92MSH2XNbn2Yj49suZvNqnD99WheYRsX3quRARERERCZYo77lQ40JE\nREREJGhi+GpRIiIiIiLiR1Hec5HfTfREREREREQKRD0XIiIiIiLBEuU9F2pciIiIiIgEjc65EBER\nERERf1DPhYiIiIiI+IcaFyIiIiIi4g9ODYsSERERERF/0LAoERERERHxDzUuRERERETEHzQsSkRE\nRERE/ELDokRERERExD/UuBAREREREX+I8mFRcaEuQEREREREooN6LkREREREgsb/w6KMMRbwNtAA\nOAk8aNv2tlzz7wCGAA5gkm3b7/i9iGzquRARERERCRKn0+nTlI9uQIJt262Ap4FXz5v/KnAj0Ab4\nhzHmYr9vWDY1LkREREREgsXp8G3yrg0wF8C27dVAk/PmZwKXAMVzqvDnJuVmFaAlVBjRfTq8DyzL\nyvO7AP8fSJjTPuGiLMQd7RcuykLc0X5xVt4gwpBj2xc+/efEXXm7x+0zxvwbmGbb9rzsx38AV9q2\n7ch+3A8YAxwDptu2PcCXGgpUZ6CeWEREREREzuN0+jZ5lwaUyvU4LlfD4gqgP1ANqA5UMMbcGYAt\nA4JxQvfJ1IC/RNhLLJv1r6csYimj/LKIJTlZuBNr+SgLl+wsHL9MDm0dYSCuTpLHebGWj7csYvUY\nibntdkd/O128ZRFuAnMp2uXArcA0Y0wL4Odc8xKB00CGbdtOY0wKWUOkAkJXixIRERERCZqADFmb\nAXQyxizPftzbGHMvUNK27YnGmA+AFcaYE8BvwORAFAFqXIiIiIiIBE8AzoexbdsJPHzer3/NNf81\n4DW/v7AbalyIiIiIiARLlJ9sr8aFiIiIiEjQBOSci7ChxoWIiIiISLBEec+FLkUrIiIiIiJ+oZ4L\nEREREZGgie6eCzUuRERERESCJTD3uQgbalyIiIiIiARLlJ9zocaFiIiIiEjQqHEhIiIiIiL+oGFR\nIiIiIiLiFxoWJSIiIiIi/qHGhYiIiIiI+IN6LkRERERExC+ivHERE3fo/nTqTGo3bM20GV+GupSQ\nUxYuysJFWbgoC5cp89Zx7Z1j+HzBT6EuJeSUhYuOERdl4aIsLoDT6dsUIaK+cbF+w0Zefv0tLMsK\ndSkhpyxclIWLsnBRFi4/b9nDuA+/VRYoi9x0jLgoCxdlIblFdeNi9Zq19P37QNLTj4e6lJBTFi7K\nwkVZuCgLl+82bKfvqCmkn8gIdSkhpyxcdIy4KAsXZeGDKO+5iMpzLjIzM5nwnw94Z+L7OByR858R\nCMrCRVm4KAsXZeGSeeo0736+kgmfr8ARQW9kgaAsXHSMuCgLF2UhnkRdz8WOnbu46ba7eWvCJCws\nnni0H5UurxjqskJCWbgoCxdl4aIsXHbsO0TnRybw9tRlWBY8fm87KpW7ONRlhYSycNEx4qIsXJRF\nIUV5z0XUNS72Je8nOWU/jRrUY+pHE3moz19DXVLIKAsXZeGiLFyUhcu+1KMkHzxKI1OFKWOT6Hdn\nq1CXFDLKwkXHiIuycFEWhRTljYuoGxZVsUI5Jrw5jnatW4S6lJBTFi7KwkVZuCgLl4plS/HOkB60\nva5mqEsJOWXhomPERVm4KIvCipyGgi+irnFR9YoqVL2iSqjLCAvKwkVZuCgLF2XhUrXiJVSteEmo\nywgLysJFx4iLsnBRFoUUQb0Qvoi6xoWIiIiISNiK7rZF9J1zEW5SUvbTtWtXEhMTsYpfFupyQur8\nLKzil5FYpjJdu91DSsr+UJcnIZJ7v4h1ubOIr9ub+Lq9KXFdX255+FVSUtNCXZ6ESEpqmo6RbHof\nkagQ5edcqHERYEn9+jNnzhwyMnSNdHdZZGRkMGfefJL69Q9hZRJKOkZc3B4jmaeZu/Rneg+bGMLK\nJJR6D5uoYySb3kckKkR540LDogJs5eo1XucnJCQEqZLQ85bFwkVLg1iJhBNv+0UsHR/gPYtvV28K\nYiUSTlb99JvHeTpGXPQ+IpEjchoKvvDac2GM+dYYs+K8aaUxZkWwCox0LZs39Tq/4/Vtg1RJ6HnL\nQt/IxS5v+0UsHR+QzzGSeTqIlUg4adHA81WrdIy46H1EIkaU91zkNyxqMHAR0Au4N3u6J/tfKYDJ\n746nS5cueb5dSkhIoMvNNzL53fEhqiz4PGUhsc3dfhGLxwfoGBH3Jj3/oI6RbDpGJCo4fZwihNdh\nUbZtrzbGfAjUt217RpBqiirly5dj9uzZWQ9Opoa2mBDLnYVlWSGuRsKFjhEXHSPiTvmypXWMZNMx\nIlEhgnohfJHvORe2bb8cjEJERERERCSy6YRuEREREZFgifWeCxERERER8ZfoblxYzsC2npyxPj4U\ngMSyWf8qi7NZuBsr6zxxINjVhJaycNEx4uJlvzizYVKwqwmpuDpJgLIAVxY6RtDfztyUhUtWFhFx\nIo5jxWs+ffiOazUgIrZPPRciIiIiIsGiYVEiIiIiIuIX0d22UONCRERERCR4ort1ocaFiIiIiEiw\naFiUiIiIiIj4hRoXIiIiIiLiF2pciIiIiIiIX0R320KNCxERERGR4Inu1kVcqAsQEREREZHooJ4L\nEREREZFg0TkXIiIiIiLiF2pciIiIiIiIX6hxISIiIiIifhHdbQs1LkREREREgsbpCHUFAaXGhYiI\niIhIsGhYlIiIiIiI+IUaFyIiIiIi4hcO/w+LMsZYwNtAA+Ak8KBt29tyzW8KvJL9cDfwV9u2T/m9\nEHQTPRERERGR4HE6fZu86wYk2LbdCngaePW8+e8CSbZttwMWADX8vl3ZAt9zkVg24C8RMZSFd8rH\nJVaziNXtLqC4OkmhLiFsxGwWOka8Uz4uyiJ8OQIyLKoNMBfAtu3VxpgmOTOMMVcDqcBAY0xd4Evb\ntn8NRBGgngsRERERkeBxOnybvCsNHMn1+LQxJudz/mVAS+AN4EbgRmPM9f7erByB77k4mRrwlwh7\nOd8eKAvv36TEWj7KwkXHiIv2Cxdl4aJjxEX7hYuycFFPTRpQKtfjONu2c1okqcDWnN4KY8xcoAmw\nKBCFqOdCRERERCRYHE7fJu+WA10BjDEtgJ9zzdsGXGSMuTL7cVvgF39vVg5dLUpEREREJFgCcyna\nGUAnY8zy7Me9jTH3AiVt255ojOkDfGKMAVhh2/acQBQBalyIiIiIiARPAC5Fa9u2E3j4vF//mmv+\nIqC531/YDTUuRERERESCRTfRExERERERv1DjQkRERERE/CIAw6LCiRoXIiIiIiLBop4LERERERHx\ni8DcoTtsqHEhIiIiIhIs+d9tO6KpcSEiIiIiEiRO9VyIiIiIiIhfRPk5F3GhLkBERERERMKHMeYt\nY0xTX9ZVz4WIiIiISLBExqVoVwMvGmPKAx8AH9q2va8gK6rnQkREREQkWJxO36Ygsm37A9u2bwC6\nAhawwhjzpTGmW37rqnEhIiIiIhIsEdC4ADDG1ACSsqetwHTgLmPMB97W07AoEREREZFgiYBhUcaY\n5UAF4H2gs23bO7J//wGw29u6MdFz8enUmdRu2JppM74MdSkhpyxcoi2L7Tt2MWT4C3TofAd1m7Sn\nzQ238cgTg1mxao3X9Q4ePETthq3pP3CI1+XSjx+nY5fu1G7YmjU/rPNn6X6nLPwjWo6RnP+rgkx/\nffDRPOt72i/27N3Hs6Ne4oauf6Zuk/Y0a3szSf0eY978b4O1aSERLfuFPygLF2VxASKj5+IV27av\nsm17VK6GRTXbtk/btl3B24pR33OxfsNGXn79LSzLCnUpIacsXKIti6XLV9F/4BAyMjNJTEykVs0a\nHDx0mIWLl7Fg0VL63N+TQQMecbvu4mUrsSyL9m1beX2N0WNfZ8/e5LDPTFn4RzQdI/Xr1uHyip7f\nC48fP8EmewuWZVG9WtU8893tF+s3bOTBhweQdvQYCQnFqHlldQ4ePMTqNWtZ9d0P3NOjG88NHRSQ\n7QmlaNovCktZuCiLCxTGPRfGmCvIOsdipDFmTfbPkNVmmA3Uzu85orpxsXrNWh77xxDS04/H/A6v\nLFyiLYtDh4/wj8HDycjMpGvnGxkxbBAXlSwJwFdzvuHJYSN574NPaFi/Lp1uaJ9n/cVLVwLQrk0L\nj6+xaMlypn/xVWA2wI+UhX9E2zHy+sujvM4f8OQzbLK3UOcaw7Cnnsgz//z94syZM/xj8HCOHkun\nWZNGvP7SKC699BIApk7/H8+OGsuUaV/Q5LoG3NrlJj9vTehE235RGMrCRVn4ILzvczEC6ABUApbk\n+v1poEDdUlHZuMjMzGTCfz7gnYnv44jyuyDmR1m4RGsWU6fPIu3oMapUvpwxI4dSrGjRs/Nu6dKJ\nNWt/5NOpM/l06ow8H6gdDgcrVn2HqVWT8uUuc/v8R9LSeGbkWIoXL86JEycCui2FpSwKJ1qPEW8+\n+/wL5ny9kJIlS/D6y89TrFixc+a72y/W/rienbv2YFkWr7w44mzDAqBH99v4Yd1PzPzfHKbN+DIq\nGhexuF94oixclEUhhHFetm0/AGCMecq27bG+PEfUnXOxY+cubrrtbt6aMAkLiyce7UelyyuGuqyQ\nUBYu0ZxFlcqVuLVLJ3re1f2cD9M5TK2rANi9N+/lqdf9tIG0o8do387zMKARo8dxIPUgA/s/5L+i\nA0RZ+C6ajxFP9h9I5cVXxmNZFv98/O9UqXx5nmXc7Rf796cCcEmZiyl3Wdk869Srcw0Ae/cmB6jy\n4InF/cITZeGiLArJ6fBtCgJjTL/sHxONMc+ePxXkOaKucbEveT/JKftp1KAeUz+ayEN9/hrqkkJG\nWbhEcxZdb76BcWOe44H7e7qd//MvmwDcjyVfugLLsmjbyv0woLnfLGT2vAU0bdyQXj17+K/oAFEW\nvovmY8STV//vXxw/foJ6da7h3rvucLuMu/2iSuVKQNYwvOSU/XnW2fzrFgAqV4r8D1uxuF94oixc\nlEUhOZy+TcFhnffz+VO+om5YVMUK5Zjw5jjatfY8ZjpWKAuXWMzi6NFjvP/RFGbMmk2RIkXo2/u+\nPMssWbaS0qUu4rqG9fLMS009yHOjx1GiRHHGjBwajJIDRlnkL9aOkY2bbGZ+ORfLsnh60GMel3O3\nX9Svdy2NGtTjx/UbeHLoSF59cQRly14KZJ3bM/2Lr4iLi+P+XvcEfDsCLdb2C2+UhYuyKKQwPufC\ntu0J2T+OBrratj3LGHMZ8CdgUkGeI+oaF1WvqELVK6qEuoywoCxcYimLr+cv4o23/82OXbvJzDxF\npcsrMHzoIBo3qn/Ocin7D7D51610vfkG4uLydmI+M2osR46k8czTA6lcKe9wkUigLAoulo4RgHf+\n8wFOp5NWzZvQqEHeBiV43y/efXMcz41+mTlfL6RDl+7UqF6NI0fS2JecQvlyl/H0oMdp36ZlMDYl\noGJtv/BGWbgoi5jwLhAPzMp+3BFoBvwtvxWjblhUuElJ2U/Xrl1JTEzEKn6Z2ymxTGW6druHFDfd\n69EkdxaxLr8sCrNfrN+wkd9+386pU6exLIsjaUdZtGQ56cePn7Pc4qVZl9ds5+YD0IxZs1m4aBkt\nmjWm513dL+j1L1Qgj5FIziLWBfIY2b1nLwu+XYJlWTzcL8njct72i2Pp6ZQsUYJiRYty6tRpft3y\nG8kp+7Esi0suKUO8m0aqr/Q+4qJjxCWQx4gEWBifc5FLU9u27wewbfuAbdv3Ad6v057tgv/6GWMS\nLnSdWJbUrz9z5swhIyPD4zIZGRnMmTefpH79g1hZ8BUki1gRyP2iV88erFu5gKXzZzFm5FASExL4\n5LMZJPV9DEeua2svyb52f9tWzc9ZPzl5P6Nfep2SJUsw+rmnL2zDfKAsXHSMuARyv/jvJ9M4c8ZB\nw/p1adq4kcflPO0XO3buosd9ffls+iwaX9eAaR//h/XfLWLp/FkMeuLv/P7Hdh7751D+8/7HF1SX\nJ3ofcdEx4qL9IoKF9zkXOeKMMWe76o0x5YECtXA8Ni6MMbcZY7YbY7YaY+7ONWuO73XGnpWrvd8R\nOLeFi5YGsJLQ85ZFQkJstVkDuV9UKF+OxMQELit7Kd1u68J/33ubhIRibNi4mVlfzQPg9OnTrPzu\ne66pXevsWPEcQ4aPJj39OE8OeCQoV/9QFi46RlwCuV/M/WYhlmXR/fauHpfxtl+M+79/ceBAKtfW\nvpp33xxHnWsMRYsW4bKyl/LA/T159cURALz2xjvs3LX7gmpzR+8jLjpGXLRfRLDIuEP3aGCdMWaa\nMeZz4AdgZEFW9NZzMRRoCDQHHjLG3J/9e90h5QK0bN60wMtG+zcx3rLoeH3bIFYSesHcL2pUr0qn\njln3dFi9Zi0A36/9iWPH0rn+vDtRf/zZdJavWkPLZo25+8/dCvW6BaUsXHSMuARqv9iwcTN796VQ\npEgRbr6xg8flfli33u1+4XQ6WbRkOZZl0a9PL+Lj4/Ose2PH9tS++irOOBzMmbegwLV5ovcRFx0j\nLtovIlgE9FzYtv0xcB3wCTAZaGbb9vSCrOutcZFp2/Yh27ZTgduBR40xHYDwPcU9DE1+dzxdunSJ\nuW9U3HGXRUJCAl1uvpHJ744PYWXB58/94tixdDZt/pVDh494XKZypYo4nU4OpB4EYHH2cI92rc8d\nSz5n3kIAVqz+ntoNW+eZcvTq8yi1G7bm6WdHF7p+ZeGiY8QlUH87F3yb9Q1um1bNKF26lMflFmVf\ngvb8/SL14CEyM08BcGX1ah7Xr1mzBgC7du8tbMl6H8lFx4iL9ovI5XQ6fZqCyRhTAngcGAKMAgYZ\nY0oWZF1vV4v6wxjzKvCMbdtHjTHdgXlAmcIWHEvKly/H7Nmzsx6cTD1nnlXc/V2Ao5W3LGJN7iws\nq3Cdgd3SEGGpAAAgAElEQVTuvp9du/cyaMAj9PFwf4fde7JuGlexQjkAli5bSZmLS9Ogfp1zljNX\n18ThOOPxtX5Ytx6Aq2vVpNRFJalR7YpC1Q7+PUaiOYtY489jJLcf1v2EZVm0yudb32XLV7ndLy4q\nWZK4uDicTif7D6Ryda2abtc/ePAQACUvKtB7sVd6H3HRMeISqGNEgiAyvqZ/EzgO9CZr1FJf4B2g\nV34remtcPADcR3YEtm3vzO65CPxZjSJSYK1bNmfKtJlMnT6LpPvuzjNMY9fuvcxfmHVlnA7t2rB3\nXzJbt/3BbV1vyvNcw54a4PW1cr6xf2bwAK8nwoaKshBvnE4nv2yyAahX9xqPy+3dl8yW3353u18k\nJibQsH5d1v64nimff0Hrls3yLLN9xy7W/PAjAC2bN/FT9SISNcL4Phe5NLZtu0Gux48aYzYWZEWP\nw6Js2z5t2/Zk27aP5/pdsm3bTxSiUBHxsweTepKYkMD2HbsYOHj4OUOCNm6y6fPwADIyM2nauCEd\nr2/DoiVZwz3at438a/CfT1mIN9t37CI9PestrdZVV3pcLucStJ72i/4P98GyLL5ZsJixr4w/59LG\nm+0t9Hv0n5w5c4ZGDerpJmMikkdkXImWOGPM2dFK2T+fLsiKUXcTPZFYc0WVyrz+8igGPDWcr+cv\n4tvFy6hRvRoZGRn8sX0nlmXRsH5d3njlBSDrHIO4OIs2raLvQ4+yEG+Ss6/1Hx8fT8kSJTwut2jp\nCq/7RcvmTRg+5J88P/Y1Jn34KZ9OnUmNGtU4fvz42f3sGlOL8a8U/jwcEYlCkdFz8Sqwxhgzi6xh\nUbcBYwqyohoXIlHg+natmTX1fSZO/pjlK1ez7fftFE9MoMl1Dbj91s50v/0W4uPjyTx1itVr1lKv\n7rWUubi0T68V7mN7lYV4cvDQYSzLonSpizwuU9D94p4e3WjUsB6TP/iE1d+vY8vWbSQkFKNhg7rc\n2rkTd/35dooVLRqIzRCRCBcJbQvbticZY9YA7cka6dTdtu2fC7KuFeCzz52xfsIVAIlls/4twIl4\nzhMHglFR6HjIIiZlZ1GQD6ixul/oGIlxOkZcdIy46Bhx0THikpVFRHzjkzn6Lp8+fBcb+lnAt88Y\n81dv823b/iC/51DPhYiIiIiIAHi+AVDWRZ7UuBARERERCRtBviHehbBtu3fux8aYS2zbPnQhz6HG\nhYiIiIhIkETCORfGmAbAFKCEMaYVsAi4y7bttfmt6+0O3SIiIiIi4k9Op29TcI0H7gBSbdveBfyN\nrJvo5UuNCxERERGRIImMtgUlbNvelPPAtu35QEJBVtSwKBERERGRYAnjcy5yOZg9NMoJYIz5C3Cw\nICuqcSEiIiIiEiSRcM4FMBR4E6hjjDkMbAHuK8iKalyIiIiIiARLZLQu3gaKA6OA923b3lnQFXXO\nhYiIiIhIsDh9nILItu2mQDeybkz4lTFmkTGmT0HWVeNCRERERCRInA6nT1Ow2ba9FXgVeBEoBQwu\nyHoaFiUiIiIiEiwRMCrKGNMduBdoDnwJ9Ldte0VB1lXjQkREREQkSJyRcc7FX4APgZ62bZ+6kBXV\nuBARERERkbNs277T13XVuBARERERCZaI6LjwnRoXIiIiIiLBEhk30fOZGhciIiIiIkESGadc+E6N\nCxERERGRYAlA68IYY5F147sGwEngQdu2t7lZbgKQatv2EL8XkU33uRARERERCRKn0+nTlI9uQIJt\n262Ap8m6P8U5jDEPAXX9v0XnCnzPRWLZgL9ExChIFrGSV6xsp7/ESl46RlxiZTv9JVby0jHiEivb\n6S/KK3w4AvKsbYC5ALZtrzbGNMk90xjTEmgKTABqB6SCbOq5EBEREREJFqfTt8m70sCRXI9PG2Pi\nAIwxFYHhwKOAFZBtyiXwPRcnUwP+EmEv59uCgmQR7XldSBbR7kK+RYr2vHSMuOgYcdEx4pKdheOX\nyfkuWpBlIllcnaSsH6L9/7wgdIy4RFDPTIBO6E4DSuV6HGfbdk4fSQ+gLDAbuBwobozZbNv2B4Eo\nRCd0i4iIiIgES2AuRbscuBWYZoxpAfycM8O27fHAeABjzP2ACVTDAtS4EBEREREJmgD1XMwAOhlj\nlmc/7m2MuRcoadv2xIC8ogdqXIiIiIiIBEsAWhe2bTuBh8/79a9ulnvf7y9+HjUuRERERESCJcpv\noqerRYmIiIiIiF+o50JEREREJEicgTmhO2yocSEiIiIiEiwBOqM7XKhxISIiIiISJOq5EBERERER\nv3Cq50JERERERPzB6XDkv1AEU+NCRERERCRYNCxKRERERET8QcOiRERERETELzQsSkRERERE/EJX\nixIREREREf+I8mFRcaEuIBg+nTqT2g1bM23Gl6EuJeRiIYuCbuPBg4eo3bA1/QcOOef32/7YzrAR\nY+h0aw/qN7ue61rdSPd7evOvf08m/fjxQJZeKNt37GLI8Bfo0PkO6jZpT5sbbuORJwazYtUar+t5\nyuF86ceP07FLd2o3bM2aH9b5s3S/UxYuyoKz9RVk+uuDj+ZZ31MWe/bu49lRL3FD1z9Tt0l7mrW9\nmaR+jzFv/rfB2rSQmDJvHdfeOYbPF/wU6lJCLhbeUwtKWRSc0+H0aYoUUd9zsX7DRl5+/S0sywp1\nKSEXC1lcyDYuXrYSy7Jo37bV2d/N+XohTw0byalTpylatAjVql7B8eMn2PzrVjZu/pUvvpzL+/8e\nT4Xy5QK5GRds6fJV9B84hIzMTBITE6lVswYHDx1m4eJlLFi0lD7392TQgEfcrusuB3dGj32dPXuT\nw37/URYuyiJL/bp1uLxiBY/zjx8/wSZ7C5ZlUb1a1Tzz3WWxfsNGHnx4AGlHj5GQUIyaV1bn4MFD\nrF6zllXf/cA9Pbrx3NBBAdmeUPp5yx7GffhtWP9/B0ssvKcWlLKQ3KK6cbF6zVoe+8cQ0tOPx/wO\nHwtZXOg2Ll66EoB2bVoAsHPXnrMNi263dWHoU09wUcmSAGz+dSv/HDycrdv+4IlBz/DJ++8EbkMu\n0KHDR/jH4OFkZGbStfONjBg26GzdX835hieHjeS9Dz6hYf26dLqhfZ71z8/BnUVLljP9i68CswF+\npCxclIXL6y+P8jp/wJPPsMneQp1rDMOeeiLP/POzOHPmDP8YPJyjx9Jp1qQRr780iksvvQSAqdP/\nx7OjxjJl2hc0ua4Bt3a5yc9bEzrfbdjOYy9NJ/1ERtS+jxRULLynFpSyuHDRfkJ3VA6LyszMZPy/\nJvLA3x4n7eixUJcTUrGQhS/b6HA4WLHqO0ytmpQvdxkAH3z8GZmZp7jG1OKFEUPOfhADqH31Vbzx\n6gvEx8fx4/oNrP3x54Bsiy+mTp9F2tFjVK5UkTEjh55T9y1dOtGj+59wOp18OnVGnnXd5XC+I2lp\nPDNyLMWLFw/YNviLsnBRFgXz2edfMOfrhZQsWYLXX36eYsWKnTPfXRZrf1zPzl17AHjlxRFnGxYA\nPbrfxu23dsbpdEbN8JDMU6d589Ol9BnxKUePZ4S6nJCKhffUglIWvnM6nT5NkSLqGhc7du7iptvu\n5q0Jk7CweOLRflS6vGKoywqJWMjC121c99MG0o4eo33blmd/993367Asi843dXT77cuV1atxZfVq\nAPz8y0b/bUQhValciVu7dKLnXd0pVrRonvmm1lUA7N67L8+8szm08zz0ZcTocRxIPcjA/g/5r+gA\nURYuyiJ/+w+k8uIr47Esi38+/neqVL48zzLusti/PxWAS8pcTLnLyuZZp16dawDYuzc5QJUHz459\nh+j8yATenroMy4LH721HpXIXh7qskIiF99SCUhaFE+3nXERd42Jf8n6SU/bTqEE9pn40kYf6/DXU\nJYVMLGTh6zYuXroCy7Jo29rVuBj21BO8MGIIN3Ro63G9nG8OHGfCp0uz6803MG7Mczxwf0+383/+\nZROA+7HkOTm0cj/0Ze43C5k9bwFNGzekV88e/is6QJSFi7LI36v/9y+OHz9BvTrXcO9dd7hdxl0W\nVSpXArKGniWn7M+zzuZftwBQuVLkf9jal3qU5INHaWSqMGVsEv3u9H4OTjSLhffUglIWheRw+DZF\niKg756JihXJMeHMc7Vp7HiccK2IhC1+3ccmylZQudRHXNax39ndNGzeiaeNGHtfZsnUbW7f9gWVZ\nXFWzhs81B8vRo8d4/6MpzJg1myJFitC39315lnGXQ47U1IM8N3ocJUoUZ8zIocEoOWCUhYuyyLJx\nk83ML+diWRZPD3rM43Lusqhf71oaNajHj+s38OTQkbz64gjKlr0UyDqfZfoXXxEXF8f9ve4J+HYE\nWsWypXhnSA/aXlcz1KWEXCy8pxaUsiicSBri5Iuoa1xUvaIKVa+oEuoywkIsZOHLNqbsP8DmX7fS\n9eYbiIsrWOedw+FgxAvjgKw/qi2aNbngWoPl6/mLeOPtf7Nj124yM09R6fIKDB86iMaN6p+zXH45\nPDNqLEeOpPHM0wOpXCnvcJFIoCxclMW53vnPBzidTlo1b0KjBnkbUeA9i3ffHMdzo19mztcL6dCl\nOzWqV+PIkTT2JadQvtxlPD3ocdq3aen2eSNJ1YqXULXiJfkvGANi4T21oJRF4UTSECdfRN2wKJH8\nLF6adVnJdhfwxv/sqLF8v/YnLMviqX/0p2jR8G2Xr9+wkd9+386pU6exLIsjaUdZtGR5nnt0eMth\nxqzZLFy0jBbNGtPzru7BKt3vlIWLsnDZvWcvC75dgmVZPNwvyeNy3rI4lp5OyRIlKFa0KKdOnebX\nLb+RnLIfy7K45JIyxBfwiwsRiT0650IKJSVlP127diUxMRGr+GXnTLHGWxY5U2KZynTtdg8pbsYx\n+8uS7GvWt23VPN9lHQ4HQ58bw7QZX2JZFr169qBzp46FriF3Fv7Wq2cP1q1cwNL5sxgzciiJCQl8\n8tkMkvo+hiPXmE1POSQn72f0S69TsmQJRj/3tN/rO18gj5FoyqKwx0gkZ+Fv//1kGmfOOGhYv67X\noZCestixcxc97uvLZ9Nn0fi6Bkz7+D+s/24RS+fPYtATf+f3P7bz2D+H8p/3P/ZLvbmziK/b+5wp\n1qSkpoXF+0g4COQxIgHmdPg2RYgLalwYY4obYxICVUw0SurXnzlz5pCREduX74OCZZGRkcGcefNJ\n6tc/IDWcPn2ald99zzW1a50dI+3JiRMneWTAYD6fmdWwuLPbLQwZ9Lhf6gjkflGhfDkSExO4rOyl\ndLutC/99720SEoqxYeNmZn01D/Cew5Dho0lPP86TAx4JytU/lIVLII+RaMzCV3O/WYhlWXS/vavH\nZbxlMe7//sWBA6lcW/tq3n1zHHWuMRQtWoTLyl7KA/f35NUXRwDw2hvvsHPX7kLXq/cRl97DJob8\nfSRcaL+IXDHdc2GMudYYM9MYM8kYcyOwCdhojLk1OOVFvpWr1xR42YSE6G63XUgWCxctDUgNP6xb\nz7Fj6Vyfz12Hk1P20zPpb3y7eDmWZZHU6x6eH+6/b2uDuV/UqF6VTh2zbpK2es1aAL5f+5PbHD7+\nbDrLV62hZbPG3P3nboV63YJSFi7BPEaiKYsL2S82bNzM3n0pFClShJtv7OBxOU9/K5xOJ4uWZP1d\n6NenF/Hx8XnWvbFje2pffRVnHA7mzFtQ4No8uaAsioXvkE1/WPXTbwVeNlDvI+FCny8iV0w3LoB3\ngNeARcA0oBnQCAh8n3iUaNm8aYGX7Xi950ugRoMLySJQ38Qsyr6sZLvWns+3sLf8xt29+rHJ3kJ8\nfBzDnhrAUwMf9Wsd/twvjh1LZ9PmXzl0+IjHZSpXqojT6eRA6kEAFmcP9zg/hznzFgKwYvX31G7Y\nOs+Uo1efR6ndsDVPPzu6wNvhibJw8ecxEktZXMjfzgXfZn3gbNOqGaVLl/K4nKe/FakHD5GZeQrg\n7H1v3KmZfUW5Xbv3Frg2Ty4kiw7Nryn064WzFg0KftWqaP9GX58vIpfT6fBpihT5NS7ibNtebNv2\n+8AM27ZTbNtOA04HobaoMPnd8XTp0sXrtwYJCQl0uflGJr87PoiVBV9Bsgi0ZctXUebi0jSoX8ft\n/K2//U5S3/7sS06heGIib776In+5506/1+HP/aLb3fdzxz29mf7FVx6X2b0n60ZpFSuUA2DpspVu\nczBX16Rxo/oepxxX18parka1K/Ld1vwoCxd/HiOxkIUvfzt/WJd1YYZW+Xww8/S34qKSJc9eOWr/\ngVSP6x88eAiAkheV9LhMQRUoi2JF6Ny2HpOef7DQrxfOJj3/YMjfR8KFPl9IuMqv/9Q2xkwE+tm2\n3RvAGPM0kPeWruJW+fLlmD17dtaDk57fiGKBtyyCcYL73n3JbPntd27repPb+WlpR+n7yEAOHT7C\nxaVL8e6br3hshBRW7izc3Q3ceeJAgZ+rdcvmTJk2k6nTZ5F03915hmns2r2X+QuzrozToV0b9u5L\nZuu2P9zmMOypAV5fK+db6mcGD/B6IuyF8OcxEs1ZXOgxEk1ZFPYYObuO08kvm2wA6tX1/A2/t78V\niYkJNKxfl7U/rmfK51/QumWzPMts37GLNT/8CEDL5oW/bHXuLBy/TC7080Wy8mVLh/R9JJwE4hiR\nIImgIU6+yK/noi/wP9u2c/fF7AKSAlaRSIDkXFayfVv3Q6JefGU8e/elEB8fx6tjRwasYeFvDyb1\nJDEhge07djFw8PBzhsFs3GTT5+EBZGRm0rRxQzpe34ZFS1Z4zSGSKQsXZZHX9h27SE/PuvRurauu\n9Lhcfn8r+j/cB8uy+GbBYsa+Mv6cy/lutrfQ79F/cubMGRo1qKebjIlIHtF+zoXXnovsRsUX5/3u\nw4BWJBIgi5auIC7Ook2rvG/2+w+kMuvLuUBWN/JbEybx1oRJHp/rz3fcSvfbbwlYrRfiiiqVef3l\nUQx4ajhfz1/Et4uXUaN6NTIyMvhj+04sy6Jh/bq88coLQNa4ek85RDpl4aIs8krOvjRpfHw8JUuU\n8Lict78VkNUbMXzIP3l+7GtM+vBTPp06kxo1qnH8+PGz2V5jajH+lcKfeyIi0Ud36BaJApmnTrF6\nzVrq1b2WMheXzjN/3Y8/c8bhwLIsTpw4ybqffvb6fK1aFPxEumC4vl1rZk19n4mTP2b5ytVs+307\nxRMTaHJdA26/tTPdb7+F+Pj4fHMoCHfd7+FEWbgoi3MdPHQYy7IoXeoij8sUNIt7enSjUcN6TP7g\nE1Z/v44tW7eRkFCMhg3qcmvnTtz159spVrRoIDZDRCKc0xE5J2f7wgpw68kZ6+cZAJBYNutfZeEx\nC3djZaN+vGh2Fhori46R3HSMuOgYccnOItbPuQCIq5OU9YOOER0juWVlEf7fcgC/ta7t04fvmss3\nR8T2qedCRERERCRINCxKRERERET8ItqHRalxISIiIiISJJF05SdfqHEhIiIiIhIsGhYlIiIiIiL+\noJ4LERERERHxi2g/5yK/O3SLiIiIiIgUiHouRERERESCRJeiFRERERERv9A5FyIiIiIi4hfquRAR\nEREREb9Qz4WIiIiIiPiFei5ERERERMQv1HMhIiIiIiJ+4VDPhYiIiIiI+IN6LkRERERExC90zoWI\niIiIiPiF0+H/5zTGWMDbQAPgJPCgbdvbcs2/F3gcOAX8bNv23/1fRZa4QD2xiIiIiIicy+l0+jTl\noxuQYNt2K+Bp4NWcGcaYRGAk0N627bZAGWPMrYHaPjUuREREREQiWxtgLoBt26uBJrnmZQCtbNvO\nyH5chKzejYAI/LCoxLIBf4mIoSxcCpJFLOcVq9seq9vtjo4R72J02+PqJIW6hPChY8S7WN72MBeg\nE7pLA0dyPT5tjImzbdth27YT2A9gjOkPlLRte34gigCdcyEiIiIiEjQBOqE7DSiV63Gcbdtnz+7I\nPifjJaAW0D0QBeQIfOPiZGrAXyLs5Xx7oCwuLItoz8vbt0rRvu3n0zHiomPExcsx4vhlcvDqCAM5\nPRaxtt3u5GRx5rW/5LtsQZaJZPEDPvI8M9r/PpwvgnpqHIHpuVgO3ApMM8a0AH4+b/67wAnbtrsF\n4sVzU8+FiIiIiEiQBKjnYgbQyRizPPtx7+wrRJUEfgB6A0uNMd8CTuD/bNv+IhCFqHEhIiIiIhIk\ngTjnIvu8iofP+/WvuX4O2md+NS5ERERERIJEN9ETERERERG/CNDVosKGGhciIiIiIkGingsRERER\nEfEL9VyIiIiIiIhfqOdCRERERET8IkD3uQgbcaEuQEREREREooN6LkREREREgkTDokRERERExC90\nQreIiIiIiPiFei5ERERERMQv1HMhIiIiIiJ+oZ4LERERERHxi2jvuYjKS9GePJnB+H9NpEu3e6nX\n9HpaXN+VPg8PYMnyVaEuLehiMYtPp86kdsPWTJvxpdflDh48RO2Grek/cMg5v9/2x3aGjRhDp1t7\nUL/Z9VzX6ka639Obf/17MunHjwey9ELZvmMXQ4a/QIfOd1C3SXva3HAbjzwxmBWr1nhdz1MO50s/\nfpyOXbpTu2Fr1vywzp+l+52ycFEW/jFl3jquvXMMny/4KdSlhJyycLHqdSTuiQ+x6rQPdSkhV9D3\nXsnqufBlihRR13Nx4sRJ7u/bn/UbNlK0aFFqXXUlhw8fYcWqNSxf+R2P/q0Pj/7tgVCXGRSxmMX6\nDRt5+fW3sCwr32UXL1uJZVm0b9vq7O/mfL2Qp4aN5NSp0xQtWoRqVa/g+PETbP51Kxs3/8oXX87l\n/X+Pp0L5coHcjAu2dPkq+g8cQkZmJomJidSqWYODhw6zcPEyFixaSp/7ezJowCNu13WXgzujx77O\nnr3JBco2lJSFi7Lwj5+37GHch99G9TYWlLLIpcKVWG3vhcj5zBcwF/LeK7qJXsQZ8cI41m/YyLXX\nGOZ/NZXpn7zHwjmfM/b5ZygSH89bE95j5ervQ11mUMRaFqvXrKXv3weSnl6w3oXFS1cC0K5NCwB2\n7tpztmHR7bYurPj2K/437UMWzJ7G9E8ncdWV1flj+06eGPRMwLbBF4cOH+Efg4eTkZlJ1843snT+\nF8yYMpnFX89k3AvDiY+P470PPuGbBYvdrn9+Du4sWrKc6V98FZD6/UlZuCgL//huw3b6jppC+omM\nUJcScsoilyrXEHfHk1AsMdSVhNyFvvdK9PdcRFXjYueu3fxv9jzi4+MYN2b4Od8u/+mWm+n7QC+c\nTidvvvOfEFYZHLGURWZmJuP/NZEH/vY4aUePFWgdh8PBilXfYWrVpHy5ywD44OPPyMw8xTWmFi+M\nGMJFJUueXb721VfxxqsvEB8fx4/rN7D2x58Dsi2+mDp9FmlHj1G5UkXGjBx6Tt23dOlEj+5/wul0\n8unUGXnWdZfD+Y6kpfHMyLEUL148YNvgL8rCRVkUTuap07z56VL6jPiUo8dj+8O0ssglvghWi+7E\ndR8MCSXzXz6K+fLeK1mcDqdPU6SIqsbFF1/O5cwZBw3r1+XK6tXyzL+nRzcA1v74M/uSU4JdXlDF\nShY7du7iptvu5q0Jk7CweOLRflS6vGK+6637aQNpR4/Rvm3Ls7/77vt1WJZF55s6uu3avbJ6tbNZ\n/vzLRv9tRCFVqVyJW7t0oudd3SlWtGie+abWVQDs3rsvz7yzObTzPPRlxOhxHEg9yMD+D/mv6ABR\nFi7Kwnc79h2i8yMTeHvqMiwLHr+3HZXKXRzqskJCWeRycXnikl7BanEHAM4VUyHtQIiLCg1f33sl\ni9PHKVJEVeNi3U8bsCyLxo0auJ1foXy5szv/d99H74mHEDtZ7EveT3LKfho1qMfUjybyUJ+/Fmi9\nxUtXYFkWbVu7GhfDnnqCF0YM4YYObT2ul9Mt6TjjKFzhftT15hsYN+Y5Hri/p9v5P/+yCYDq1arm\nmXc2h1buh77M/WYhs+ctoGnjhvTq2cN/RQeIsnBRFr7bl3qU5INHaWSqMGVsEv3u9H7eSTRTFrlc\ndGnWtGcLjk+exblmVqgrChlf33slNkTVCd07du4C4IoqlT0uU7nS5ezdl8wf23cGq6yQiJUsKlYo\nx4Q3x9Gutedx4e4sWbaS0qUu4rqG9c7+rmnjRjRt3MjjOlu2bmPrtj+wLIuratbwueZgOXr0GO9/\nNIUZs2ZTpEgR+va+L88y7nLIkZp6kOdGj6NEieKMGTk0GCUHjLJwURb5q1i2FO8M6UHb62qGupSQ\nUxa5HDuIY+bLsH19qCsJOV/feyVL+Hw9GRhR1bhIPXgIgEsvLeNxmUvKlAbg0OHDQakpVGIli6pX\nVKHqFVUuaJ2U/QfY/OtWut58A3FxBeu8czgcjHhhHJD1R7VFsyYXXGuwfD1/EW+8/W927NpNZuYp\nKl1egeFDB9G4Uf1zlssvh2dGjeXIkTSeeXoglStdHqzy/UpZuCiLgqta8RKqVrwk1GWEBWWRy5GU\nrEl8eu8Vl2hvXETVsKiTJ7NONEsoVszjMgkJCTidzrPLRitl4dnipVmX2GzXpmX+C2d7dtRYvl/7\nE5Zl8dQ/+lO0aPi2y9dv2Mhvv2/n1KnTWJbFkbSjLFqyPM89OrzlMGPWbBYuWkaLZo3peVf3YJXu\nd8rCRVmIiIQHnXMRQQr6LXQsCMcsUlL207VrVxITE7GKX3bOFExLsq/f37ZV83yXdTgcDH1uDNNm\nfIllWfTq2YPOnToWuobcWfhbr549WLdyAUvnz2LMyKEkJiTwyWczSOr7GA6H6/sSTzkkJ+9n9Euv\nU7JkCUY/97Tf6wumSMsikMdIJGchkiMlNe3sflFk4MfnTLEm5ehJHSMRyuHjFCkK/AnUGFM+kIX4\nQ8kSWZdEzMjM9LhMRkYGlmVRPMoPxnDMIqlff+bMmUNGRuh6Sk6fPs3K777nmtq1KFv2Uq/Lnjhx\nkkcGDObzmVkNizu73cKQQY/7pY5AZlGhfDkSExO4rOyldLutC/99720SEoqxYeNmZn01D/Cew5Dh\nozd52a0AAAuUSURBVElPP86TAx6J+Kt/RFoW2i9cwuHvhYSf3sMmar/I9sAnK5VFhIrZxoUx5urc\nEzAr189hqUyZrPMLDh8+4nGZQ9nzLr00useQhmMWK1evKfCyCQkJAanhh3XrOXYsnevzuetwcsp+\neib9jW8XL8eyLJJ63cPzw/33ba23LPy97TWqV6VTx/ZA1s2OAL5f+5PbHD7+bDrLV62hZbPG3P3n\nbn6tIxyEexbBPEYiOYuEYuE7LFECa9VPvxV42YQi4deD70+rtnu+DG6g3kPFP6J9WJS3v9DzgePA\nHsACDDCBrO0r/LiQAKh5ZTV27NzF7j15r9ueY/eevQDUqHZFsMoKiXDMomXzpsyZN79Ay3a83vPl\nYAtjUfYlNtu19ny+hb3lNx569J/sS04hPj6OIYOe4C/33OnXOrxlcaHbfuxYOjt37aZixQpcUsb9\n9ecrV6qI0+nkQOpBABZnD305P4c58xYCsGL199Ru2Nrja/bq8ygAd/ypa1hdMSjSs/DnMRLNWXRo\nfk2hnlsiV4sGNZm7tGA3Me1wVYUAVxNaLapdxtzNe93OC9R7qPhHJPVC+MJb46IJ8A7wL9u2vzHG\nfGvbdocg1eWTBvXqsHDRMn78yf0fnuTk/ezZm4xlWTRyc4nFaBKOWUx+dzxJfxvIwoULPXbjJiQk\n0PH6tkx+d3xAali2fBVlLi5Ng/p13M7f+tvvJPXtz6HDRyiemMirY0fSob3nD1O+cpeFr9ve7e77\n2bV7L4MGPEIfD/c0yGlkVqyQdaf2pctWus3BXF0Th+OMx9f6YV3WJRivrlWTUheVDLtGeqRn4c9j\nJBqzSChWhA7Nr2HS8w8W+vklMk16/kEeeHGu92OkSBwdrqrAe/cW/KIdkei9e1vSZ9UJv7yPSHBF\nUi+ELzw2LmzbTjHG3AWMM8Y0DWJNPuvcqSOvjZ/Ad9+v44/tO6l+3hvcx1OnA9CsSaOIH0uen3DM\nonz5csyePTvrwcnUoLxmbnv3JbPlt9+5retNbuenpR2l7yMDOXT4CBeXLsW7b77isRFSWP7MonXL\n5kyZNpOp02eRdN/dxMfHnzN/1+69zF+4BMuy6NCuDXv3JbN12x9ucxj21ACvr5XzrfUzgwd4vSdI\nqER6FtovXHJn4fhlsl+eUyJf+bKlz+4XZ177S4irCa3ypRKZPfvzrAcheE8V30V7z4XXAYm2bZ+2\nbfsJsoZGhf3gxWpVq3Brl06cPnOGRwcMPnsjOYAvvpzLfyZ9hGVZPNw3KXRFBomyyCvnEpvt27r/\nNuvFV8azd1/WUKhXx44MWMPC3x5M6kliQgLbd+xi4ODhZ8+lAdi4yabPwwPIyMykaeOGdLy+DYuW\nrPCaQyRTFi7KQkQkPEX7Cd0FOivOtu3JwOSAVuInwwYPZMtvv/Prlt/o0u1err6qJkfSjrJn7z4s\ny2JA/4do0axxqMsMCmVxrkVLVxAXZ9GmVd47iu4/kMqsL+cCWd3Kb02YxFsTJnl8rj/fcSvdb78l\nYLVeiCuqVOb1l0cx4KnhfD1/Ed8uXkaN6tXIyMjgj+07sSyLhvXr8sYrLwBZ4+o95RDplIWLshAR\nCU8xOywqUpW5uDRTPniXiZM/Yu7XC9j2x3aKFClC86bX0atnD27s0C7UJQaNsnDJPHWK1WvWUq/u\ntZS5uHSe+et+/JkzDgeWZXHixEnWeThXJUerFuE1UvD6dq2ZNfV9Jk7+mOUrV7Pt9+0UT0ygyXUN\nuP3WznS//Rbi4+PzzaEgLMvyc/X+pSxclIWIiASb5XQGtP3k1DhAILFs1r/KQlnkpixclIWLsnDJ\nzkLnXEBcnSRAWYAri1g/5wIgfsBHWT/o70XO34uI+JZjkmX59OG7t9MZEdsXdT0XIiIiIiLhKpLO\nn/CFGhciIiIiIkGicy5ERERERMQv1HMhIiIiIiJ+ocaFyP+3d/8hd5Z1HMffe7QtXduEllkRRJRf\nUmhBo0zWbGKZlmLQn5l7SqWCkP5IepL1AzECSyikjPajDRaYgaWIjkqxNsJQMIzqO8P+q5Asm7Q9\ntrXTH9e9PYeSBLnP8z079/sF54/7uXnO+ZyLc677fK/ruu9bkiRJvXBZlCRJkqReOHMhSZIkqRfO\nXEiSJEnqhTMXkiRJknphcSFJkiSpFy6LkiRJktSLWZ+5mKsOIEmSJGk2OHMhSZIkLZNZn7mwuJAk\nSZKWiedcSJIkSeqFMxeSJEmSeuHMhSRJkqReTGLmIiJWAN8CNgCLwLWZ+dTY/iuAbcBRYFdmbp9A\nDMCrRUmSJEnL5vhLfLyIq4BVmXkhsADcdmJHRJzebV8CvAe4PiJe1dPb+R8WF5IkSdIyGb3Ex4vY\nBDwAkJmPABvH9r0FeDIzD2XmUWA/sLmXN/MCJr8s6uWvnPhLnDJsiyW2xRLbYoltscS2OGnu/K3V\nEaaGbbHktM/srY4wPewvTikTOqF7LfCPse1jETGXmcdfYN9zwLrJxJh8cbFiws8vSZIknTK+NBpN\n4vfxIWDN2PaJwuLEvrVj+9YAz04gQ3vhST2xJEmSpGVxALgcICIuAJ4Y2/c74E0RcVZErKQtifrl\npIKsGI1m/YJYkiRJ0uwau1rUW7s/zQNvB1Zn5vaI+ADwRdqqoh2ZecekslhcSJIkSeqFy6IkSZIk\n9cLiQpIkSVIvLC4kSZIk9cLiQpIkSVIvJn8TvSJjZ81vABaBazPzqdpUtSLincBXM3NLdZYqEXE6\nsBN4A7ASuCUz7y0NVSQi5oDvAkG7p88nMvO3talqRcTZwKPAJZl5sDpPlYh4jKUbLv0xMz9emadS\nRHwOuJJ2vLw9M/cURyoREdcAW2k3Cj6Ddmw9JzMPVeaq0P2+2E7rO/8NXDfU/iIiXkZrizcD/wJu\nyMxf16ZStVmeubgKWJWZFwILwG3FeUpFxGdpPyRXVWcp9hHgr5m5GbgMuL04T6UrgFFmbgK2AV8p\nzlOqKzzvAA5XZ6kUEasAMvPi7jHkwuIi4F3dcWQL8MbiSGUyc3dmbsnMi4HHgE8PsbDovI92ec9N\nwM0Mu++8DjjSfUeupw3eaeBmubjYBDwAkJmPABtr45T7A/Ch6hBT4Ae0H9LQPv9HC7OUyswf0w4G\n0GZy/l6XZip8Dfg28KfqIMU2AKsjYl9E/LSb8RyqS4HfRMSPgHu6x6BFxEbgvMzcUZ2l0CKwrpvB\nWEcbsR+q84H7AbrZm9dFxNr//y+adbNcXKxlaVof4Fi3DGSQMvNu4Fh1jmqZeTgz/xkRa4C7gJuq\nM1XKzOMRsQv4BrC3Ok+ViNgKPJ2ZP6HdYGjIDgO3ZualwCeBvQPuO9fTbkL1YVpbfL82zlRYAL5c\nHaLYftrSsN8D3wG+WRun1OPAB+HkXaHXA6tLE6ncLB8wDgFrxrbnMvN4VRhNj4h4PfAgsDsz76zO\nUy0z54Fzge0RcUZ1niLzwHsj4iHgbcCe7vyLITpIV2hm5pPAM8BrShPVeQbYl5nHulHZxYhYXx2q\nSkSsA87NzIersxS7ETiQmUGb6dsTESuLM1XZCTwXET+nLUc/CPytNpKqzXJxcQC4HE5W00/Uxpka\ngx6VjYhXA/uAGzNzd3WeShFxdUQsdJuLtBMTB1mAZ+ZF3XryLbSRuI9m5tPVuYrMA18HiIjX0gZp\n/lyaqM5+4P1wsi3OpBUcQ7UZ+Fl1iCnwCpZWRjxLO9n/tLo4pd4BPNidx3gX8JfMfL44k4rN7NWi\ngLtpI5EHuu35yjBTZFQdoNgCcBawLSK+QGuPywbaGf4Q+F5EPEzrC24YaDv8t6F/R3YAO7uRyBHw\nsaHO+mbmfRHx7oj4FW1g5lOZOeTPRwCDvupi51ZgV0T8gtZ3LmTmkeJMVRK4MyI+DxyhneCtgVsx\nGg25n5QkSZLUl1leFiVJkiRpGVlcSJIkSeqFxYUkSZKkXlhcSJIkSeqFxYUkSZKkXlhcSJIkSeqF\nxYUkSZKkXvwHmfFrWBZbjPoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x110023750>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"junctions = ( (1,0,1),\n",
" (1,2,3),\n",
" (2,1,2),\n",
" (2,3,4),\n",
" (3,4,0),\n",
" (3,2,3),\n",
" (4,0,1),\n",
" (4,2,3),\n",
" (5,1,2),\n",
" (5,3,4),\n",
" (6,4,0),\n",
" (6,2,3),\n",
" (7,0,1),\n",
" (7,2,3),\n",
" (8,1,2),\n",
" (8,3,4),\n",
" (9,4,0),\n",
" (9,2,3),\n",
" )\n",
"\n",
"upstream_densities = (1, 1, 1, 1, 0)\n",
"downstream_velocities = (0, 1, 1, 1, 1)\n",
"\n",
"rho, v = set_balancer_flow(junctions,upstream_densities,downstream_velocities,tol=1.e-5)\n",
"plot_belts(rho,v,junctions)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"test_all_flows(junctions, n_belts=5, maxiter=300, tol=1.e-10)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment