{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# DiscreteDP Example: Asset Replacement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Daisuke Oyama**\n", "\n", "*Faculty of Economics, University of Tokyo*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From Miranda and Fackler, Applied Computational Economics and Finance, 2002,\n", "Section 7.6.2" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from quantecon.markov import DiscreteDP" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "maxage = 5 # Maximum asset age\n", "repcost = 75 # Replacement cost\n", "beta = 0.9 # Discount factor\n", "m = 2 # Number of actions; 0: keep, 1: replace" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "S = np.arange(1, maxage+1) # State space\n", "n = len(S) # Number of states" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Reward array\n", "R = np.empty((n, m))\n", "R[:, 0] = 50 - 2.5 * S - 2.5 * S**2\n", "R[:, 1] = 50 - repcost\n", "\n", "# Infeasible action\n", "R[-1, 0] = -np.inf" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 45., -25.],\n", " [ 35., -25.],\n", " [ 20., -25.],\n", " [ 0., -25.],\n", " [-inf, -25.]])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "R" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# (Degenerate) transition probability array\n", "Q = np.zeros((n, m, n))\n", "for i in range(n):\n", " Q[i, 0, np.minimum(i+1, n-1)] = 1\n", " Q[i, 1, 0] = 1" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[ 0., 1., 0., 0., 0.],\n", " [ 1., 0., 0., 0., 0.]],\n", "\n", " [[ 0., 0., 1., 0., 0.],\n", " [ 1., 0., 0., 0., 0.]],\n", "\n", " [[ 0., 0., 0., 1., 0.],\n", " [ 1., 0., 0., 0., 0.]],\n", "\n", " [[ 0., 0., 0., 0., 1.],\n", " [ 1., 0., 0., 0., 0.]],\n", "\n", " [[ 0., 0., 0., 0., 1.],\n", " [ 1., 0., 0., 0., 0.]]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Q" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Create a DiscreteDP\n", "ddp = DiscreteDP(R, Q, beta)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Solve the dynamic optimization problem (by policy iteration)\n", "res = ddp.solve()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Number of iterations\n", "res.num_iter" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 216.56004653, 190.62227392, 172.91363769, 169.90404187,\n", " 169.90404187])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Optimal value function\n", "res.v" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, 1, 1])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Optimal policy\n", "res.sigma" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 1., 0., 0., 0.],\n", " [ 0., 0., 1., 0., 0.],\n", " [ 0., 0., 0., 1., 0.],\n", " [ 1., 0., 0., 0., 0.],\n", " [ 1., 0., 0., 0., 0.]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Transition probability matrix\n", "res.mc.P" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Simulate the controlled Markov chain\n", "res.mc.state_values = S # Set the state values\n", "initial_state_value = 1\n", "nyrs = 12\n", "spath = res.mc.simulate(nyrs+1, init=initial_state_value)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtoAAAEWCAYAAABYLDBhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8VPWd//HXZ5KQCbkSCCETEFDAEkBUELXWS1tplXKx\nrW1tq3bdrnatdXvb3d52t91f6/62l93f2l1dV3tTa1tt1SZoFVuqrpeqBZ1Bw0VA5JJJSILkQkJI\nMvP5/XFm8BgDJJCZc2bm83w88iCZ6ycZzpnvfM/nvL+iqhhjjDHGGGPGVsDrAowxxhhjjMlGNtA2\nxhhjjDEmBWygbYwxxhhjTArYQNsYY4wxxpgUsIG2McYYY4wxKWADbWOMMcYYY1LABtomZUTkJBE5\nICJ5KXjsb4nIz8f6cVP92H6QeE1O9roOY0x2yNR9vZ+JyAwRURHJ97oWc2JsoG0OE5G/EJGXRaRX\nRFpE5L9FpGIU939dRC5O/qyqu1S1RFVjqal42BpqRWRQRE4Z5roHReQH6aplmOe/SETiiTek5Nfq\nFD/nEyLyV+7LEq/Ja6l8XmOMf2XDvt5Vy9dFZEdif7pHRO51Xfe2/d8xHuuEBvWJ+w8kaukQkWdF\n5NwR3vctf1OTPWygbQAQkS8D3wX+DigHzgGmA78XkXFe1jYaqtoErAWucl8uIpXAMuBOL+pyiSbe\nkJJfKzyuxxiTQ7JlXw8gIp/C2ddfrKolwGKc/b+X7k3UUgU8DTwgIuJxTcZDNtA2iEgZ8M/Ajar6\nqKoOqOrrwEeBGcCVidt9S0R+IyL3iki3iLwoIgsT190NnASsTnya//uhh74SswvfSXzKPyAiq0Vk\noojcIyJdIvJnEZnhqutmEdmduG69iJw/wl/pToYMtIErgI2q+vJoHjsxC71nyGWHZx5EJCAiXxWR\n7SKyT0TuSwzqR0VEfiYi3znS8yae829FZIOIdCZeg6Dr+lUiEk78PttF5BIRuQk4H/ivxN/7vxK3\nVRGZlfi+XETuEpE2EdkpIv8gIoHEdX8hIk+LyA9EZH9i1ujS0f5uxhh/yMJ9/VnAGlXdDqCqLap6\ne+Ixj7T/G/a5ROQS4OvAxxK3jyQuLxeRH4tIs4g0JX6vY7bIqOoAznvRFGCiiJwiIn9MvE+0J/4W\nFUf6m7oe6pMisitxn2+M8O9ifMQG2gbgnUAQeMB9oaoeAH4HLHVdvAr4NVAJ/AL4rYgUqOpVwC5g\nRWKm9ntHeK4rcAbBtcApwJ+AnyYebxPwTddt/wyc7nquX7sHl0fxIDBJRN7luuwq3jqbfbyPPdSN\nwGXAhUAI2A/cchyPMxIfBS4BZgKnAX8BICJLgLtwZqgqgAuA11X1G8BTwOcSr8nnhnnM/8SZ1To5\n8TtcDVzjuv5sYAswCfge8GMRm50xJkNl277+OeBqEfk7EVnsHgAfZf837HOp6qPAv5CYkVbVhYnb\n/wwYBGYBZwDvA47ZjiIihTj76N2q2g4I8H9x3ifmAtOAbyVqPdrf9F3AqcB7gX8Skbkj+LsYH7GB\ntgFnENWuqoPDXNecuD5pvar+JvFp/d9xdtrnjOK5fqqq21W1E3gE2K6qf0g8969xdmQAqOrPVXWf\nqg6q6r8BhTg7nKNS1YOJx7oaQERmA4twdqon9NjD+GvgG6q6R1UP4ew4L5cjn8ASEqd3L/n10VE8\n1w9VNaqqbwCrcd4sAD4N/ERVf6+qcVVtUtXNx3qwxJvSFcDXVLU7MbP1b7z1aMBOVb0j0Xt5J1AD\nVI+iZmOMf2Tbvv7nOJMd7weeBFpF5CvHus9In0tEqnFaDr+gqj2q2gr8P5z95pF8VEQ6gN047zsf\nTDzvtsQ++pCqtuH8TS881u8I/LOqHlTVCBABFh7rDsZf7GxWA9COMwOcP8wOuCZxfdLu5DeqGk+0\nN4RG8Vx7Xd8fHObnkuQPIvK3OIPIEKBAGW99IziaO4EGEfkbnIHjmsROciwe22068KCIxF2XxXAG\no03D3D6qqlOP43kAWlzf9/Lm330azmzUaE0CCoCdrst24sxAve05VbU3MZldgjEmE2Xdvl5V7wHu\nEZECnKOL94hIWFXXDHf7UT7XdJx9ZLPrQF4A199mGPep6pXDPG81cDNOO0tp4nH2H/23A96+37f9\nb4axGW0DziG9Q8CH3BeKSAlwKW89uWSa6/oAMBWIJi7SsSoo0Tf39zjtEhNUtQLoxDn8NhJPA2/g\nHP68ElfbyCgfuwcY77pvHs5JLkm7gUtVtcL1FUyclDkab3kenL6+kdqNc2h2OEd7TdqBAZw3k6ST\nGP4DgjEm82Xjvt4pyOk3/zWwAZg/XJ0jeK6hv9dunL/XJNf+vUxV542mtoR/STz+AlUtw3lfcv+O\nY/Y3Nf5iA21D4tDePwP/mTiJriBxosp9wB7gbtfNF4nIhxKtEV/A2Qk9l7huL06v71goxemLawPy\nReSfcGYeRkRVFadv+bs4fcvuGL3RPParQFBEPpCYMfkHnEONSbcBN4nIdAARqRKRVSOt0yUMLBOR\nShGZgvO3HakfA9eIyHvFOTmzVkTekbjuiK9Joh3kvkT9pYnf4UtAzmXWGpMLsm1fL84J2x9I7L8C\n4pysPQ94/gh1Huu59gIzEh8sUNVm4DHg30SkLPEcp4jISFo+hvs9DwCdIlKLc06N21j+TY2P2EDb\nAJA4+eLrwA+ALpwd1W7gvYne46R64GM4h7yuAj6U6OED50SPf0j0Hv/tCZa0BngUZ6C7E+jj6Ifr\nhnMXzgztvUN+hxE/duKN6bPAj3Bmentw3pCSbgYagMdEpBvnjejsUdYJzhtcBHgdZ8d+71Fv/dYa\nX8A5gfH/4czOPMmbs9Q34/SM7xeRHw5z9xtxfqfXcI4C/AL4yXHUb4zJAFm2r+9K/C67gA6cE7av\nV9WnE9cP3f8d67l+nfh3n4i8mPj+amAcsBHnb/EbnDab0fpn4EycffTDDDkhlbH9mxofEWfiz5hj\nE5FvAbOG6z8zxhiTHWxfb8zYsRltY4wxxhhjUiBlA20RmSYij4vIRhFpFJHPJy7/vohsFmfhjQfF\nteyriHxNRLaJyBYReX+qajPGGDN2RCRPRF4SkYe8rsUYY/wkZa0jIlID1KjqiyJSCqzHid6ZCvxR\nVQdF5LsAqvoVEakDfgkswYnd+QMwJ3HCljHGGJ8SkS/hLH9dpqrLva7HGGP8ImUz2qrarKovJr7v\nxlkJqlZVH3Pldz6HM/AGJ4btV4kw9x3ANpxBtzHGGJ8SkanAB3BOGDbGGOOSlgVrEvFBZ/Bm5E7S\nX/JmukItb0YHgZPsUDvk9ojIdcB1AMXFxYve8Y53DL2JMcZkhPXr17eratWxb+lr/4GTTVx6pBvY\nfnv0Dg7E2NZ6gNqKIiqLx3ldjknY0d5D/2CcU6cc8b+7SbPuvkFe39fD9MrxlBUVpPS5jmefnfKB\ndiII/36cJUy7XJd/AyfP8p7RPJ6q3g7cDrB48WJdt27dGFZrjDHpIyI7j30r/xKR5UCrqq4XkYuO\ndDvbb4/ev/xuE7f/72tce8HJfG3ZXK/LMcDerj7O+b9rCYjw/HcuJS8wqjV1TIp88d4wD77UxN9/\nYC5/dX5qo8iPZ5+d0tSRxAIf9wP3qOoDrsv/AlgOfFLfbBJvwrUSFU5Lia1QZ4wx/nUesFJEXgd+\nBbxHRGzBoxMUjyurI84ijE0dBz2uxiStjkRRhVhcae3u87ocAxzsj7Gm0Vml3q/bSipTRwRnxbpN\nqvrvrssvwTnMuFJVe113aQCuEJFCEZkJzAZeSFV9xhhjToyqfk1Vp6rqDOAKnBPdLXv5BP359Tdo\n7uyjIE+I+nTwkItWR6IU5Dmz2Pa6+MPazXvp7Y/5eltJ5Yz2eTirSb1HRMKJr2XAf+H08v0+cdlt\nAKraiLMM7EaclZtusMQRY4wxuaY+EqWoII/31U0h2mEzp36wo72HyJ5OLjvdOXWsyV4XX6gPR5lc\nWsg5J0/07baSsh7txBKowzUw/e4o97kJuClVNRljjEkNVX0CeMLjMjJe/2Cc373czNK6amZMKuZ3\nrzQzEItTkGfry3lpdSSKCHzmwpP59fo9vp09zSWdvQM8uaWNK8+ZTt9gjI3RFq9LGpZtucYYY4xP\nPL2tjY7eAVadHqK2IoiqcxKe8Y6qUh9uYsmMSmZNLqUsmG8DbR94tLGZ/lg8sa0Usa+nn74B/zVC\n2EDbGGOM8YmGcJSK8QWcP7uKUEURgG8PieeKjc1dbG/rYVWibSRUUWSviQ80RKLMmDie06aWU1Me\nBKC503+viw20jTHGGB/o7R/ksY17uXR+DePyA9SUJwfaNnvqpYZwlPyAcOn8KUByoG2viZdau/p4\ndvs+Vi4MISKuD6X+e11soG2MMcb4wB82tdLbH2PV6SEAQhXOLJ1fY8tyQTyuNESiXDinigmJhYNC\nFUGinfaaeGn1hmZUYWViW6lNDLT9uK3YQNsYY4zxgYZwlCllQZbMqARg/Lh8Jowv8OUsXa5Yt3M/\nzZ19hwd04Mxod/QO0HNo0MPKcltDJEpdTRmzJjsrdFaXBRGxGe0xFz+81o0xxhiTuTp6+3ny1VZW\nLKwh4Fpx0NoUvFUfbqKoII+L51Yfviw5e9pss9qeeL29h8jujsNHfgDG5QeYXFroy20lowfaW1q6\nfXmYwBhjjBmNR19pYSCmrFxY+5bL7cQ77wzEnKjFi+uqKS58Mw05dLhNwV4XLyRXTV2+MPSWy/26\nrWT0QDuu8Jm713Gw339xLsYYY8xI1YejnDypmPm1ZW+5vNZmtD3z9NZ29vcOsGqYAR34s00h26kq\nv01ELSaPLCT59ehPRg+0T6osojHaxVcf2IBaG4kxxpgM1NLZx3M79rHydCdBwS1UEaT70CBdfQMe\nVZe76sNNlBcVcMGcqrdcXl1aSECg2YeDumyXjFp098wnhcqdk1T9Nh7M6IF2abCALy+dQ304yh1P\nveZ1OcYYY8yoPbQh6iQoLHz74CEZ8dfsw0Pi2exgf4zHNu5l2YIpjMt/61ApPy9AdVnQWkc80BBx\nohaXLah523WhiiL6BuLs7/XXh9KMHmgD3PDuWXxgQQ3/+shmnny1zetyjDHGmFFpiERZUFvOyVUl\nb7vO2hS88YdNe+ntj72tZz7Jr20K2SweV1aHo5w/exKViahFN79uKxk/0BYRvv+R05hTXcqNv3iR\n19t7vC7JGGOMGZEd7T1s2NM57Gw2+DsfOJs1RKJUlxWyZGblsNeHKoosSzvN1u/aT3RI1KKbX7eV\njB9og5M1esfVi8kLCNfetY4Dlm1pjDEmAzSEo4jA8oVvPxQOUFVaSH5AfDdLl806ewd4YksrK04L\nkReQYW8TqgjS3NFHPO6vfuBsVh9uIlgQYGndlGGvtxntFJtWOZ5bPnEmr7X38MV7w/af3xhjjK+p\nKvWRJs6eWXm4F3uovIAwpTzou8FDNnu0sZmBmLLq9OHbRsCZPe2PxWnvOZTGynKXE7XYwsVzqylx\nRS26TRhfQLAg4LttJWsG2gDvnDWJbyyby+837uXmtVu9LscYY4w5osZoF6+19RyxDzjJr/nA2ao+\nHGXmMFGLbqHy5OypvS7p8PS2dt7o6T9iixU4rcR+3FayaqANcM15M7h80VRuXruVR19p9rocY4wx\nZlgNkSgFecKl84c/FJ5Ua/3AabO3q48/vbaPlQvfHrXolmxTsIi/9GgIRykL5nPhqVVHvV2o3H/b\nStYNtEWE71w2n4XTKvjSfRG2tHR7XZIxxhjzFvG4sjoS5YLZVUwYJkHBraY8SEtnHzFriUy5hzY0\nO1GLRzjhLilUEQT8d+JdNjrYH+OxxhYunV9DYX7eUW8bqvBfm1XWDbQBggV53H7VIooL87n2rnV0\n9PZ7XZIxxhhz2J9ff4PmoyQouIUqihiMK23d1g+cag3hJubXlnHKMFGLbuVFBYwfl+e7NoVstHbz\nXnr6Y6wa4bbS2n2I/sF4GiobmawcaANUlwW57cpFtHT2ceMvX2Iw5p8/ujHGmNzWEIlSVJDH0rrq\nY97Wr7Fl2eb19h4iezpZdYyeeXD3A9trkmoN4SiTSws5++SJx7xtqKIIVacFyC+ydqANsGj6BL5z\n2Xye2trOdx/d7HU5xhhjDP2DcR5+uZmlddWMHzd8goKbX2PLsk1D5OhRi0NZlnbqOVGLbSw/StSi\nmx8/lGb1QBvgo2dN41PnTueOp3bwwIt7vC7HGGNMjnt6WxsdvQMjOhQOb/YD20A7dVSV+nATS2Yc\nOWpxqFof9gNnm0cbm+mPxUexrfjvQ2nWD7QB/mF5HeecXMlXH3iZDXs6vC7HGGNMDmsIRykvKuD8\n2UdPUEgqDRZQGsz31eAh22xs7mJ7W8+IeuaTQuVFtB/op28glsLKcltDJMr0ieM5bWr5iG5fU+6/\nD6U5MdAuyAtwyyfOpKqkkM/cvd5OKDHGGOOJg/0xHtu4l2ULahiXP/K3YCfizz99p9mmIRwlPyAs\nmz+ythFwRfzZ65ISrV19PLt9H6uOEbXoFizIY2LxOJp8dJJqTgy0ASaWFHL71YvY39vP9T9f76sz\nUo0xxuSGP2zaS29/7KgLbwynxlaHTJnDUYtzjh216GZZ2qk10qjFoUIVRTT7qHc+ZwbaAPNC5Xz/\n8oWs27mfbzY0el2OMcaYHFMfjjKlLMiSmZWjup8lXKTOup37iXb2jbgPOMmytFOrPhKlrqaMWZNL\nR3U/v2Vp59RAG2DFwhDXX3QKv3xhFz9/bqfX5RhjjMkRnb0DPPlqKysW1owoQcEtVFHE/t4BevsH\nU1Rd7mqINFFUkMfFc48dteg25XA/sH/aFLLFzn09RHZ3jPrDDzjbStP+g6j6Y4GnnBtoA/zt+07l\nolOr+FZDIy/seMPrcowxxuSAR15pZiCmrBxBTvNQtYfTFGxQN5YGYnEe3tDMxXXVFBceO2rRrTA/\nj6rSQl/NnmaLhnAUgOWjbLECZ1vp6Y/R1eePD6UpG2iLyDQReVxENopIo4h8PnH5RxI/x0Vk8ZD7\nfE1EtonIFhF5f6pqywsIN19xBidVjuez96y3jcQYY0zK1YejnDypmPm1ZaO+rx9jy7LB01vb2d87\nwKrjGNCBZWmngqpSH4myZEbl4Q+Yo+G3bSWVM9qDwJdVtQ44B7hBROqAV4APAf/rvnHiuiuAecAl\nwK0icvRF7U9AeVEBt1+9mEMDca67ex0H+y2exxhjTGrs7erjuR37WDGKBAU3y9JOjYaIE7V4wZyR\nRS0OVVsRtB7tMbapuZttrQdYcRxtI5BDA21VbVbVFxPfdwObgFpV3aSqW4a5yyrgV6p6SFV3ANuA\nJamqD2DW5BL+44rTaYx28dUHNvimn8cYY0x2WR2JHleCQlJ1WZCAYBF/Y+hgf4w1jS0sWzBlVFGL\nbqFy5yRVGz+MnfpIE/kB4QMLRh616BbyWZZ2Wnq0RWQGcAbw/FFuVgvsdv28J3FZSr13bjVfXjqH\n+nCUO556LdVPZ4wxJgetjkRZUFvOKVUlx3X/grwAk0v9laaQ6dZuTkYtHv9QI1RRRN9AnI7egTGs\nLHfF48pDkWbOnz2JylFELbpNKimkIE9886E05QNtESkB7ge+oKpdY/B414nIOhFZ19bWduIFAje8\nexbLFkzhXx/ZzJOvjs1jGmOMMQA72nuI7OkcdXb2UH6LLct09eEo1WWFo45adLOIv7G1ftd+mjoO\nHveRH4BAQKgp908cZkoH2iJSgDPIvkdVHzjGzZuAaa6fpyYuewtVvV1VF6vq4qqq4+upGqZOvn/5\nQuZUl3LjL17k9faeMXlcY4wxZnUkiggsX3h8h8KTLEt77HT2DvDkljZWnBYaddSim9/6gTNdQzhK\nsCDA0ropJ/Q4fvpQmsrUEQF+DGxS1X8fwV0agCtEpFBEZgKzgRdSVd9QxYX53HH1YvICwrV3rePA\nIX/EwhhjjMlcqspvw00smVFJTfnoExTcksuwx+PWD3yiHm1spj8WP6GZU7CB9lgaiMV5+OVm3ju3\nmpJRRi0O5Xwozf7WkfOAq4D3iEg48bVMRD4oInuAc4GHRWQNgKo2AvcBG4FHgRtUNa1RINMqx3PL\nJ87ktfYevnhv2HZmxhhjTkhjtIvX2npYdfqJn3IUqiiifzDOvp7+Magst9WHo8ycVMyC2vITepyJ\nxeMYlx/wTT9wJnt6Wztv9PQfd9SiW21FES1dfQzG4mNQ2YlJZerI06oqqnqaqp6e+Pqdqj6oqlNV\ntVBVq1X1/a773KSqp6jqqar6SKpqO5p3zprEN5bN5fcb93Lz2q1elGCMMSZLrI5EKcgTLp1/YofC\nwWZPx0prVx9/em0fK48zatFNRKitKLIe7TGwOhylLJjPhaeeeFtwqKKIWFxp7T40BpWdmJxcGfJY\nrjlvBh8+cyo3r93Ko6+0eF2OMcaYDBSPKw2RKBfMrmLCcSYouCVPvGu2BVJOyOoNzScUtTiUn/qB\nM1UyavHS+TUU5p/4Eio1Por4s4H2MESEmz44n4XTKvjSfWG2tHR7XZIxxpgMs27nfpo7+8ZuQJfo\n8W7ySe9ppmqIRJlfW3bcUYtDhcqLaLbX5IT8cXMrPf0xVo3RtpJcUdIPLT020D6CYEEet1+1iOLC\nfK69ax0dvdYTZ4wxZuTqw00UFeSxtK56TB6vYnwBRQV5vpily1Svt/cQ2d1xwlGLbjUVRezt7mPA\nB/3Amao+3MTk0kLOPnnimDxejY/arGygfRTVZUFuu3IRLZ193PjLl3zRVG+MMcb/BmJxfvdyM0vr\nqhk/7sQSFJJExNoUTlBDImpxxRgOtGsrgqhCiw9mTzNR58EBntjSxvITjFp0KynMp7yowBfbig20\nj2HR9Al8+7J5PLW1ne8+utnrcowxxmSAp7e2s793YMwOhSdZlvbxU1Xqxyhq0c1OUj0xa15poT8W\nz9ptxQbaI/Cxs07iU+dO546ndvDgS3u8LscYY4zP1YebKC8q4PzZY7OwWpKTcGEzp8djY3MX29t6\nxqxnPunwQNtOUj0u9ZEmpk8cz2lTTyxqcajaiqAvthUbaI/QPyyv45yTK/nK/S+zYU+H1+UYY4zx\nqYP9MR7buJdlC2oYlz+2b7OhiiLaDxzi0GBal5nICg2RKPkBYdn8E1uhc6jkSap+WSAlk7R29fGn\n7ftYNQZRi0PZjHaGKcgLcMsnzqSqpJDP3L2eNh9kMxpjjPGfP2zaS29/bExPuEtKzp5aP/DoxOPK\n6nCUC+aMTdSiW9G4PCqLx1mW9nF4aEMz8TGMWnSrKS+i8+CA5yt920B7FCaWFHL71YvY39vP9T9f\nT/+gnRxpjDHmrRoiUaaUBVkys3LMHzuUyAe2Qd3orN+1n2hn35j3ASfZSarHpyESpa6mjFmTS8f8\nsQ/nznv8uthAe5Tmhcr5/uULWbdzP99a3eh1OcYYY3yks3eAJ7a0svy0mjFLUHB788Q7m9Eejfpw\nE8GCABfPHZuoxaEsS3v0du7rIby7IyWz2eCfLG0baB+HFQtDXH/RKfzi+V38/LmdXpdjjDHGJx55\npZmBmLLq9NqUPP4UH614lykGYnEe3tDM0ropFBeOTdTiUH7pB84kDeEoMLZRi25+SYOxgfZx+tv3\nncpFp1bxrYZGXtjxhtflGGOM8YGGSJSTJxUzv7YsJY8fLMhjUkmh54OHTPL0tkTUYooGdOC0KXQf\nGqSrbyBlz5FNVJX6SJQlMyoPzzyPtcmlheQFxPNtxQbaxykvINx8xRmcVDmez96z3vMX0hhjjLf2\ndvXxp9f2sSIFCQpuTmyZveeMVEM4SnlRARfMGduoRTe/zJ5mik3N3WxrPcCKFLWNAOTnBZhS5v22\nYgPtE1BeVMDtVy+ibyDOdXev42C/xS0ZY0yuemhDM5qiBAU3a1MYuYP9MR5rbGHZgiljHrXoZgPt\n0UlGLX5gwdhGLQ7lh5NUbaB9gmZNLuU/PnY6jdEuvvrABlTV65KMMcZ4oCHcxPzaMk6pKknp84Qq\nimju7LP3mxFYu3kvPf2xlPUBJyXbH/ywQIrfxePK6kiUd82eROUYRy0OVVNe5PmJwzbQHgMX11Xz\n5aVzqA9HueOp17wuxxhjTJrtaO8hsqeTVQtTcxKkW015kN7+GJ0HrR/4WOrDUarLCjl75sSUPk9V\nSSEFed73A2eC9bv209RxMGVRi27Oh9KDxOPefSi1gfYYueHds1i2YAr/+shmnny1zetyjDHGpNHq\nSBQRWL4wtYfCwT17aoO6o+nsHeDJLW2sOC2UkqhFt0BAmFIe9DyzORM0hKMECwIsrZuS8ueqrQgy\nEFPae7xbZNAG2mNERPj+5QuZU13Kjb94kdfbe7wuyRhjTBqoKvXhJpbMqKSmPDUJCm6WpT0yjzY2\n0x+Lp7xnPskPbQp+NxCL8/DLzbx3bjUlKYpadPPDtmID7TFUXJjPHVcvJhAQrr1rnefLfhpjjEm9\njc1dbG/rSVl29lB24t3INESizJxUzILa8rQ8X21FkR1lOIZntrXzRk9/SqMW3fywrdhAe4xNqxzP\nrZ84k9fae/jivWFP+4KMMcakXkPYSVC4dH7qD4UDTCwex7j8gA20j6K1q49nt6c+atEtVBGkpauP\nmL3vH1FDOEpZMJ8LT01d1KKbDbSz1DtnTeIby+by+417uXntVq/LMcYYkyLJBIUL51QxIcUJCkmB\ngBAq9z4f2M8ORy2maeYUnEFdLK60dlv7yHD6BmKsaWzh0vk1FObnpeU5y4L5lBTme7qt2EA7Ra45\nbwYfPnMqN6/dyqOvtHhdjjHGmBRYt3M/0c6+tPUBJyUj/szw6iNR5teWMWtyaqMW3fwwe+pnaze1\n0tMfS0vaSJKIUFPubZa2DbRTRES46YPzWTitgi/fF2ZLS7fXJRljjBlj9eEmigryWFpXndbndU68\nswHdcF5v7yGyuyOts9lgWdrHUh9uYnJpIWefnNqoxaGcBZ7sZMisFCzI43+uXMT4wnyuvWsdHb39\nXpdkjDFmjAzE4vzu5WaW1lUzflzqExTcaiuC7O3qYyAWT+vzZoJk1GKqF6kZqqY8CGARf8PoPDjA\nE1vaWJ4LSCRvAAAgAElEQVSGqMWhklnaXrGBdopNKQ9y25WLaOns48ZfvsSg7RSNMSYrPL21nf29\nA2mfOQVn8BBX2Ntls6duqkp9JMpZaYpadCsNFlAazLcjDcNY80pLWqMW3WorgrQf6KdvIJb25wYb\naKfFoukT+PZl83hqazvffXSz1+UYY4wZAw2RKOVFBVwwJz0JCm5+yAf2o03N3WxrPZDWPmA3J+LP\nXpOhGiJRpk8cz8Kp6YladEtuK16d02AD7TT52FkncfW507njqR08+NIer8sxxhhzAg72OwkKyxZM\nYVx++t9K7cS74dVHmsgPCMvmp36FzuE4/cD2mrg5UYvtrExj1KKb19uKDbTT6B+X13H2zEq+cv/L\nbNjT4XU5xhhjjtMfNu2ltz/GyoXpWaRmqFCF0w9sEX9viseV1eEoF6QxanGoUEWQqIf9wH700IZm\n4oqnRxnAu20lZQNtEZkmIo+LyEYRaRSRzycurxSR34vI1sS/E1z3+ZqIbBORLSLy/lTV5pWCvAC3\nfvJMqkoK+czd62nrPuR1ScYYc9xEJCgiL4hIJLGf/2eva0qXhkiUKWVBlsys9OT5x4/LZ8L4Ak9P\n8vKb9bucqEWvBnTgzJ529A7QYytDH9YQiVJXU8asyaWePH91WRCR7JzRHgS+rKp1wDnADSJSB3wV\nWKuqs4G1iZ9JXHcFMA+4BLhVRNKTaJ5GE0sKuf3qRezv7ef6n6+nf9BOjjTGZKxDwHtUdSFwOnCJ\niJzjcU0p19k7wBNbWll+Wk3aExTcnIg/6wdOqg83ESwIcPHc9EYtutUe7ge2D0AAO/f1EN7d4clJ\nkEnj8gNUlRRm30BbVZtV9cXE993AJqAWWAXcmbjZncBlie9XAb9S1UOqugPYBixJVX1emhcq5/uX\nL2Tdzv18a3Wj1+UYY8xxUceBxI8Fia+sX3/60cZmBmLKqtO9aRtJsn7gNzlRiy0srZtCcWF6oxbd\nQpal/RarI1Eg/VGLQ3mZpZ2WHm0RmQGcATwPVKtqc+KqFiD50bMW2O26257EZUMf6zoRWSci69ra\n2lJWc6qtWBjiry88hV88v4ufP7fT63KMMTlMRMaLyD+KyB2Jn2eLyPIR3jdPRMJAK/B7VX1+mNtk\nxX47qT4cZeakYubXlnlaR22FLcOe9PS2dt7o6fckatHtcMKFvS5O1GI4ylkzJhye6fdKbUWRZ73z\nKR9oi0gJcD/wBVXtcl+nqsooZz9U9XZVXayqi6uq0h+pNJb+7v2nctGpVXyroZEXdrzhdTnGmNz1\nU5w2kHMTPzcB3xnJHVU1pqqnA1OBJSIyf5jbZM1+u7Wrjz+9ts+zBAW3UEUR3X2DdPUNeFqHH6wO\nO1GLF3oQtehWXVpIwMN+YD/Z3NLN1tYDrPT4yA8kTlLtOIgz7EyvlA60RaQAZ5B9j6o+kLh4r4jU\nJK6vwZkFAWfHPs1196mJy7JWXkC4+YozOKlyPJ+9Z71tmMYYr5yiqt8DBgBUtRcY1ShSVTuAx3HO\nsclaqzc0o4qnPadJb86e5nabgtdRi275eQGqy4LWOoJz5Cc/IHxggTdRi26hiiL6BuLs703/h9JU\npo4I8GNgk6r+u+uqBuBTie8/BdS7Lr9CRApFZCYwG3ghVfX5RXlRAbdfvYi+gTjX3b3Os5WLjDE5\nrV9EikgcYRSRU3BmuI9KRKpEpCLxfRGwFMjqVbkawk3Mry3jlKoSr0vxPB/YL9Zu3ktPf8zzPuAk\n651PRC1Gorxr9iQqPYpadPNyW0nlR7/zgKuA94hIOPG1DPhXYKmIbAUuTvyMqjYC9wEbgUeBG1Q1\nJ0adsyaX8h8fO53GaBdfvX+DJ4c2jDE57Zs4+91pInIPTiLU34/gfjXA4yKyAfgzTo/2Q6kr01uv\nt/cQ2dPJKo+ys4dK9r3mem5zQzhKdVkhZ8+c6HUpQGKgneOvyYu79tPUcdDTqEW3ULl3WdopOzVX\nVZ/myIce33uE+9wE3JSqmvzs4rpqvrx0Dj947FXqQmVcd8EpXpdkjMkRqvp7EXkRJ4pVgM+ravsI\n7rcB50T3nNAQiSICyxd6fygcoKq0kPyA5PTsaefBAZ7Y0sZV5073NGrRLVQRZM0rfcTjSsAnNaVb\nfThKYX6ApXVTvC4FeHOBp2yb0TajdMO7Z7FswRT+9ZHNPPlq5p+Zb4zJKEFgP9AF1InIBR7X4ytO\ngkITS2ZUUlPubYJCUl5AqC4L5nSW9ppXWuiPxX0zcwrOkYb+WJz2ntxclM6JWmzm4rpqSjyMWnSr\nLB5HYX7Ak4G2P/4CBgAR4fuXL+S1th5u/MWLNHzuXcyYVOx1WcaYLCci3wU+BjQCyVW0FPhfz4ry\nmY3NXWxv6+Ev3zXT61LeoraiKKcj/uojTcyYOJ4FteVel3JYsk2huaOPyaVBj6tJv2e2tbPPB1GL\nbiKSiPhL/4dSm9H2meLCfO64ejGBgHDtXes4YMu4GmNS7zLgVFX9gKquSHyt9LooP2lIJCgsm++P\ntpGkZGxZLmrt6uPZ7ftYeXqt51GLbjUetin4QUM4Smkwn4tO9VeUp1cnqdpA24emVY7nlk+cyWvt\nPXzp3jDxuJ0caYxJqddwVnU0w0gmKFw4p4oJPkhQcAtVFNHS2UcsB98nHkpGLfpo5hTePEk1F480\n9A0kohbn11CYn+d1OW/h1YdSG2j71HmzJvGNZXN5bONebl671etyjDHZrRcIi8j/iMgPk19eF+UX\n63buJ9rZ54vs7KFCFUUMxpW27tzrB66PRJkXKmPWZO+jFt3KiwoYPy4vJ3vn125qpac/5tttpbX7\nEP2D8WPfeAxZj7aPXXPeDBqjXdy8ditza8q4ZL4/zt41xmSdhsSXGUZDpImigjwunlvtdSlv4474\nm1KeO/3AO/f1ENndwdeXvcPrUt5GRHI2S7sh0kRVaSHnnOyPqEW3UHkRqrC3q49plePT9rw20PYx\nEeGmD85nW9sBvnxfmJOrzmNOdanXZRljsoyq3ul1DX41EIvz8AYnQaHYJwkKbu5+4DNPmuBxNenT\nEI4CsPw0/82cQm5maXceHODxzW188pyTfBO16BZytfSkc6BtrSM+FyzI43+uXMT4wnyuvWsdHb39\nXpdkjMkSInJf4t+XRWTD0C+v6/ODp7e1s793gFU+6wNOysXVIVWV+kiUJTMrD//+flObgyeprmlM\nRi36Y0GnobzK0raBdgaYUh7ktisX0dzRx42/fInBWHr7i4wxWevziX+XAyuG+cp5DeEo5UUFXDDH\nXwkKSWXBAkoL83OqH3hTczfbWg/4Kjt7qFB5Ee0H+ukbyIkFrgFnW5k+cTwLp/onatEt+aGsOc0R\nfzbQzhCLpk/g25fN46mt7Xz30c1el2OMyQKq2pz4d+dwX17X57WD/YkEhQVTGJfv37fLUI5laddH\nmnwZtehWkxjUtXiQ2+yF1u4+nt3ezsqFIV9FLboFC/KYWDwu7duKf/cc5m0+dtZJXH3udO54age/\nfanJ63KMMVlCRD4kIltFpFNEukSkW0S6vK7La2s376W3P8bKhf48FJ6US1na8bjyUKSZC3wYtejm\n5ZLfXnh4QzNxxddHGcCbLG0baGeYf1xex9kzK/nK/RvYsKfD63KMMdnhe8BKVS1X1TJVLVXVMq+L\n8lp9OEp1WSFLZlZ6XcpR5VLCxfpd+2nqOOi77Oyhci1Luz4cZW5NGbMm+zuwwYsPpTbQzjAFeQFu\n/eSZTCop5DN3r8/J7FRjzJjbq6qbvC7CTzp7B3hySxsrTgv5MkHBLVRRxP7eAQ72Z38/cEM4SrAg\nwNI6/0UtuiWjFnOhd37Xvl7Cuzt8P5sNUFNeRNP+g6imb4EnG2hnoIklhdx+9SL29/Zz/c/Xpz18\n3RiTHRItIx8C1onIvSLy8eRlictz1qONzfTH4r5ceGMod5Z2NhuIxXn45WYunuvPqEW3wvw8qkoL\nc+JIQ0PEaWVd4fOjDOBsKz39Mbr6BtP2nDbQzlDzQuV8//KFrNu5n2+tbvS6HGNMZkqmi5ThrA75\nPtdlyz2sy3P14SgzJxWzoNafCQpuNeW50Q/89LZ23ujp92183FC5kKWtqtSHo5w1Y8LhD3x+5kUc\npr8/EpqjWrEwRGO0i9ue3M68UBmfPHu61yUZYzKIql7jdQ1+1NrVx59e28ffvGe2bxMU3HIlS3t1\nImrxQp9GLQ5VWxFkc0u312Wk1OaWbra2HuDbl833upQRcZ+kOrcmPaeh2Ix2hvu795/KRadW8c36\nRl7Y8YbX5RhjMpCI3CkiFa6fJ4jIT7ysyUurNzSjSka0jYDTDywCTVncD5yMWrx0vr+jFt1C5UU0\nd/SltR843erDUfICwrL5U7wuZUTebLNK37aSGf9bzRHlBYSbrziDaZXj+ew967N+RsMYkxKnqerh\nGCNV3Q+c4WE9nmqIRJlfW8YpVSVelzIiBXkBqkuzO+Lvj5tb6emPZcyHH3CytA8OxOjoHfC6lJSI\nx5XVkSjnz57ExJJCr8sZkUklhRTkSVq3FRtoZ4HyogLuuHoRfQNxrrt7XU6tRGWMGRMBEZmQ/EFE\nKsnR1sLX23uI7O7wfXzcUNmepV0fbmJyaSFnz5zodSkjVptoU8jWiL8XMyRq0S0QEGrK0xuHecyB\ntohUi8iPReSRxM91IvLp1JdmRmPW5FL+42On0xjt4qv3b8jqQ1XGmDH3b8CfROTbIvId4FmcbO2c\nszoSRSQzEhTcsjlLu/PgAE9saWPFQv9HLbple+98QyRKYX6A983LjLaRpJry9H4oHcmM9s+ANUBy\nr/Mq8IVUFWSO38V11Xzp4jn8NhzlR0/t8LocY0yGUNW7gA8De4EW4EOqere3VaWfqvLbcBNLZlRS\nU+7/BAW32ooiop3Z2Q+85pUW+mPxjMhpdsvmgfZALM7DG5q5uK6aEp9HLQ5VW1GU1nzzkQy0J6nq\nfUAcQFUHAetN8KnPvWcWyxZM4f8+soknX23zuhxjTIZQ1UbgPqABOCAiJ3lcUtptbO5ie1tPRvUB\nJ9WUB+kfjLOvp9/rUsZcfaSJGRPHZ0TUotvE4nGMyw+k9cS7dHlmWzv7evozqm0kKVRRREtXH4Ox\n9KxBMpKBdo+ITAQUQETOATpTWpU5biLC9y9fyJzqUm78xYu83t7jdUnGGJ8TkZUishXYATwJvA48\n4mlRHmiIRMkPCMvm13hdyqhl6+xpa1cff9q+j5Wn12ZE1KKbiFBbUZSVPdoNkSilwXwuOjUzohbd\nQhVFxOJKa5pW1h7JQPtLODMcp4jIM8BdwI0prcqckOLCfO64ejGBgHDtXes4cCh9KyAZYzLSt4Fz\ngFdVdSbwXuA5b0tKr3hcWR2OcsGcKiYUj/O6nFHL1oH2QxuaiSsZOXMKzkmqzVn2mvQNxFjzihO1\nWJif53U5o5bM0m5O02JCxxxoq+qLwIXAO4HPAPNUdUOqCzMnZlrleG75xJm81t7Dl+4NE49nX9+e\nMWbMDKjqPpz0kYCqPg4s9rqodFq/az/Rzr6M6wNOSuYDZ1uWdkMkyrxQGbMmZ0bU4lBOwkV2vSbJ\nqMVMWaFzqHRvKyNJHbka+ASwCDgT+HjiMuNz582axDeWzeWxjXu5ee1Wr8sxxvhXh4iUAP8L3CMi\nNwM51XdWH24iWBDg4rnVXpdyXCrGF1BUkJdVM9o79/UQzsCoRbdQRRF7u/sYSFM/cDrUh5uoKi3k\nnJMzJ2rRrSbNR39GcqroWa7vgziHFF/EaSExPnfNeTNojHZx89qtzK0p45IMWb3JGJNWq4A+4IvA\nJ4Fy4P94WlEaJRMUltZNoTjDEhSSRCTrsrQbwlEg86IW3WorgqhCS2cf0yrHe13OCes8OMDjm9v4\n5DknZVTUoltJYT5lwXz/DLRV9S392Illen91rPsllu9dDrSq6vzEZQuB24ASnJNtPqmqXYnrvgZ8\nGifR5G9Udc2ofhMzLBHhpg/OZ1vbAb58X5jS4GLOmzXJ67KMMT6iqu7Z6zs9K8QjT29rZ3/vAKsy\neEAHiSztLEm4UFXqI1GWzKw83H+eidy989kw0F7TmIxazMy2kaR05s4fz8qQPcDMEdzuZ8AlQy77\nEfBVVV0APAj8HTiL4ABXAPMS97lVRDKvw96nggV53H7VIqZOGM/VP3mBXzy/y+uSjDE+ICLdItLl\n+up2/+t1fenSEI5SXlTABXMyL0HBLZTmFe9SaVNzN9taD2R02wi4BtppOvEu1RrCUaZPHM/CqZkV\ntTiUkwbjnx7t1SLSkPh6CNiCM0g+KlX9X+CNIRfPwekBBPg9zgIJ4By2/JWqHlLVHcA2YMkIfwcz\nAtVlQX5z/bmcP3sSX3/wZb790EZidoKkMbluLbAR+A4wX1VLVbUs+a/HtaXFwf4YjzW2sGzBFMbl\nH8/ck3+EKopo6z7EocHMX+ricNTigsyLWnQLlSdntDP/SENrdx/Pbm9n5cJQxkUtDpXOGe2RNKP9\nwPX9ILBTVfcc5/M14gyqfwt8BJiWuLyWt0ZJ7Ulc9jYich1wHcBJJ+XcegonpDRYwI+uXsxNv9vE\nj5/ewY72Hn748TMyblUnY8zYUNXLRKQc+BBwh4gEgXtxJj6GTpRkpbWb99LTH8voPuCkZGxZS2cf\n0ycWe1zN8YvHldWRKOfPnkRlBkYtuhWNy6OyeFxWHGl4OMOjFt1CFUV0Hhyg59Bgys/LGEm835Ou\nr2dOYJAN8JfAZ0VkPVAKjHoJK1W9XVUXq+riqqrMPsznhfy8AN9cMY9vXzafJ19t4/L/fpY9+3u9\nLssY4xFV7VTVnwKXAv+DcxLkX3haVBo1hKNUlxVy9szMTFBwezO2LLMHdS/u2k9Tx8GM7wNOqinP\njpNUGyJR5taUMbu61OtSTlg6s7SPONAepnev60R791R1s6q+T1UXAb8EtieuauLN2W2AqYnLTIpc\ndc50fnbNWTR1HOSyW57hxV37vS7JGOMBEXmniPwnTprUO4EPquq/e1xWWnT2DvDEljZWnBbK2AQF\ntzdPvMvsNoX6cJRgQYCldZkZtTiU06aQ2a/Jrn29vLSrI2Nz5odKZ5b2EQfarl69oV/H3bsnIpMT\n/waAf8BJIAFn5ckrRKRQRGYCs4EXjuc5zMidP7uKBz/7TsaPy+eK25+jIRL1uiRjTBqJyOvArTgT\nG9cBPwF6RORMETnTy9rS4dHGZvpjcVZmyeBhSrkzS5fJs6cDsTgPv9zMxXOrMzZqcajaNPYDp0pD\nxJn7zIYWK0hvlvaI/xcnBsnB5M+qetToChH5JXARMElE9gDfBEpE5IbETR4Afpp4rEYRuQ/npJxB\n4AZVzfyzOTLArMml/PaG8/jru9fzN798idfaDvD5987O+BMdjDEj8jqgwPuB9wHuDV+B93hQU9o0\nRKLMnFTMgtrMTlBIChbkMamkMG1LS6fCM9vaeaOnP2vaRsBpU+g+NEhX3wBlwQKvyxk1VaU+HOWs\nGRMOzwRnuurSQgLik4G2iKwE/g0IAa3AdGATThTfEanqx49w1c1HuP1NwE3HqseMvcricdz9V0v4\n+gOv8B9/2MprbT187/LTCBZYwqIx2UxVL/K6Bq+0dvXx7PZ93Pie7JpYCFUEM3oZ9oZwlLJgPhfM\nyZ71HtxZ2mVTMm+gvbmlm62tB/j2qqMO+zJKfl6AKWXBtJzPMJIso28D5wCvqupMnJUhnzv6XUym\nKczP4wcfOY2/v+RUGiJRPn7Hc7R1H/K6LGOMSYmHNjSjWZKg4JbJWdp9AzHWNLawbEENhfnZM9ET\nSvOS32OtIRIlLwuiFodKV8TfSAbaA6q6DwiISEBVHwcWp7gu4wER4bMXzeK2K89kU3MXl93yDJtb\ncmbNCmNMDqmPRJkXKmPW5BKvSxlTycGDauatk7B2Uys9/bGs+/CTzhPvxlo8rjSEo7xr1iQmlhR6\nXc6YStdJqiMZaHeISAnwFHCPiNyMszqkyVKXzK/h1595J4PxOB++9Vn+uHmv1yUZY1JARM5L/Jtd\n76DH8Hp7D5Hd2ZOg4BaqCNLbH6Pz4IDXpYxafbiJyaWFnH1y5kctulWVFFKQJzRn4Iz2m1GL2bit\nFNHS2Uc8xYv3HS3e7xYReRfOAjO9wBeAR3Ei+VaktCrjuQVTy6m/4V3MrCrmr+5cx0+e3pGRMyTG\nmKP6YeLfP3laRZqtjkQRyZ4EBbdMzdLuPJiIWlyYHVGLboGAUF2WmVnaDZEohfkB3jdviteljLna\niiD9sTjtPaltkz3ayZCvAt8HaoD7gF+q6p0prcb4ypTyIPd95ly+eG+Y//PQRra3HeBbK+dRkJfZ\nyxQbYw4bEJHbgVoR+eHQK1X1bzyoKaVUlfpIlLNmVFJTnh0JCm7uLO15ocxJU1nzSosTtZiFH34g\nM7O0B2NxHt7gRC1m4wrSye0/2tHH5NLgMW59/I6Wo32zqp4LXAjsA34iIptF5J9EZE7KKjK+Mn5c\nPv/9yUVcf9Ep3PP8Lq756Z8z8pCkMWZYy4E/An3A+mG+ss6m5m62tR7IykPh8OZAO9Mi/hoiUWZM\nHM9pUzPnw8Fo1FYUZdxRhme272NfT3/W5MwPla6TVI/5EUVVdwLfBb4rImfgLGjwTSB7Tgk2RxUI\nCF+55B2cPKmYrz/4Mh+69Rl+/KmzmDGp2OvSjDEnQFXbgV+JyCZVjXhdTzrUR5rIDwjL5mdXgkLS\nxOJxjMsLZNSgrrW7j2e3t/O5d8/KqqhFt1BFkJauPmJxzZjWmPpwE6XBfC46tcrrUlKiNk0D7WP2\nAIhIvoisEJF7gEeALcCHUlqV8aWPLJ7Gzz99Nvt6+rns1md4/rV9XpdkjBkb+0TkQRFpTXzdLyJT\nvS5qrMXjykORZi6YU8WE4nFel5MSgYBQUxHMqDaFhzc0E1eyduYUnNnTWFxp7c6M16VvIMZjjXu5\ndP6UrIpadCsryqd4XF7KP5Qe7WTIpSLyE2APcC3wMHCKql6hqvUprcr41tknT6T+hvOYWDyOK3/8\nPL9et9vrkowxJ+6nQAPOwmQhYHXisqyyPosTFNwyLUu7PpyMWiz1upSUybQs7T9ubuXAocGsWqFz\nKBFJS5b20Wa0vwY8C8xV1ZWq+gtVtVg/w/SJxTzw2fM4e+ZE/u43G/jXRzanPB7HGJNSk1X1p6o6\nmPj6GZB1x4vrw00ECwJcPLfa61JSKl0LcYyFnft6CO/uyNqTIJNqXSepZoL6cBNVpYWck2VRi0OF\nKopo7kzta3K0kyHfo6o/UtX9Ka3AZKTyogJ+es1ZfPLsk7jtye1cf896evsHvS7LGHN82kXkShHJ\nS3xdiXMSfNYYiMX53cstLK2bQnEWJii41VYE2dvVx0As7nUpx7Q6EgWyM2rRrabcSbXIhA9AnQcH\neHxLG8tPq8mYfvLj5fWMtjFHVZAX4DuXzeebK+r4/ca9fOS2P9GS4k+GxpiU+Evgo0AL0AxcDlzj\naUVj7Olt7bzR05/1M6fgDB7iCnu7/L0/VlXqw1GWzKg83FqRrUqDBZQG8zNioL2msYX+weyNWnQL\nlQdpP9BP30AsZc9hA21zQkSEa86byY8/dRY79/Wy6paneXlPp9dlGWNGQVV3JloEq1R1sqpepqq7\nvK5rLK0ORykvKuDCOVnXEfM2b0b8+Xugvbmlm62tB7L6JEg3J+LP368JOEcZTqocz+nTKrwuJeXS\nsa3YQNuMiXe/YzK/uf5c8gMBPvI/z/LoK81el2SMMQAc7I+xprGFS+dPYVx+9r/thSoyo02hPhx1\nohYXZGfU4lCZ0Dvf2t3HM9vaWbkwlLVRi27pOEk1+/c4Jm3eMaWM395wHnNryvjrn7/IrU9ss2Xb\njTGeW7t5Lz39sZyZOU2ueOfnLO14XFkdiXL+7ElUZmnU4lChiiBRny8klIxazPZknqTkSaqp3FZs\noG3GVFVpIb+89hxWLgzxvUe38Le/3sChwdT1PhljzLE0hKNUlxVy9szsTlBIKi7Mp2J8ga9nT188\nHLWYvfFxQ4UqiujoHfB1cEBDJMrcmjJmV2dv1KJbdXkhIjajbTJMsCCPm684nS9ePIf7X9zDVT96\ngTd6+r0uyxhzBCJSLSI/FpFHEj/Xicinva5rLHQeHOCJLW0sPy2U9QkKbk6Wtn/7gevDUYIFAZbW\nZXfUopvfI/527evlpV3ZH7XoVpifR1VJIc0pfE1soG1SQkT4/MWz+eHHzyC8p4PLbnmGba3dXpdl\njBnez4A1OIvVALwKfMGzasbQmlda6I/Fc+ZQeJKf+4GdqMVmLp5bnfVRi27Jlh6/vi6rNySjFnOj\nZz4pVFGU0pYeG2iblFq5MMSvrjuH3v4YH7z1WZ7a2uZ1ScaYt5ukqvcBcQBVHQSyouerPtLEjInj\nWVBb7nUpaVVbEfRtj/Yz29rZlyNRi25+P0m1PtzE4ukTmDphvNelpFUoxduKDbRNyp150gR+e8M7\nqa0o4i9++mfufm6n1yUZY96qR0QmAgogIucAGZ/T2drVx5+272Pl6bU5kaDgFqooortvkO6+Aa9L\neZuGSJSyYD4Xnpr9UYtu1WVBAinuBz5em1u6eHXvgZw78gPJNquDKQtvsIG2SYupE8bzm+vfyYVz\nqvjH377CtxoaGcyAVcuMyRFfAhqAU0TkGeAu4EZvSzpxDyUSFHJt5hSgxqdZ2n0DMda80sKyBTUU\n5ud5XU5aFeQFqC4L+jJLuz4cJS+HohbdQhVF9A3E2d+bmg+lNtA2aVNSmM8dVy/m0++ayc+efZ2/\numudL2dbjMk1qvoicCHwTuAzwDxV3eBtVSeuPhJlXqiMWZNLvC4l7WoTbQp+ax9Zu6nViVrMwQ8/\n4M/eeVWlIRzlXbMmMbGk0Oty0i7VWdo20DZplRcQ/nF5Hf/ywQU8vbWdD//3s+x+o9frsozJaSLy\nIWAlcCowB1ghIu8VkcneVnb8du7rIbK7IycPhUN6FuI4Hg2RJiaXFnL2ybkRtThUqk+8Ox5vRi3m\n5iQ4oeQAACAASURBVLaS6ixtG2gbT3zi7JO48y+X0NLZx2W3PMP6nW94XZIxuezTwI+ATya+7gC+\nAjwjIld5Wdjxagg7CQrLT8vNwcPk0iB5AfHVQLvz4ACPb869qEW3UEWQ5o4+4nH/LOZWH45SmB/g\nffOmeF2KJ1J9kqoNtI1nzps1iQdvOI/SYD4fv+N56sNNXpdkTK7KB+aq6odV9cNAHc6JkWfjDLgz\niqpSH4myZGbl4ZndXJMXEKaUBX2V2bymMTejFt1qK4roj8XZ55O1JQZjcR7e4EQtluRQ1KJbZfE4\nCvMDKTufwQbaxlOnVJXw4GfP44xpFXz+V2H+/bEtvvqkb0yOmKaqe10/tyYuewPIuBMpNjV3s631\nQM72ASfVVhT5qke7IRxl+sTxnDY1t6IW3fyWpf3M9n3s6+lnRQ5vKyJCKIXbig20jecmFI/j7k+f\nzUcXT+WHf9zGjb96ib6BrIjwNSZTPCEiD4nIp0TkUzgJJE+KSDHQ4XFto1YfaSI/RxMU3EIVQZp9\n0g/c2t3Hs9vbWbUwlHNRi25+y9KuDzdRGsznohyLWhwqVBHMvNYREfmJiLSKyCuuy04XkedEJCwi\n60Rkieu6r4nINhHZIiLvT1Vdxp/G5Qf47odP42uXvoPfvdzMx25/jtZu/xzyNCbL3QD8FDg98XWn\nql6vqj2q+u4j3UlEponI4yKyUUQaReTz6Sr4SOJx5aFIMxfMqaKyeJzX5XiqpqKIls4+Yj44Svhw\nMmoxh9tGIPUn3o1G30CMxxr3cun8KQQLcitqcahklnYqpHJG+2fAJUMu+x7wz6p6OvBPiZ8RkTrg\nCmBe4j63ikhuv+o5SET4zIWncNuVi3i1pZvL/usZNka7vC7LmKynjvtV9Yuq+kVgr4jcMoK7DgJf\nVtU64BzghsT+3DPrEwkKud42Ak7CxUBMaT9wyOtSqA9HqaspY9bkUq9L8VR5UQHjx+X5onf+j5tb\nOXBokJULa70uxXOhiiJauw/RPzj263ukbKCtqv8LDI2SUKAs8X05EE18vwr4laoeUtUdwDZgCSYn\nvX/eFH791+cSV7j8tmf5w8a9x76TMeaEiMgZIvI9EXkd+D/A5mPdR1WbExncqGo3sAnw9F27IRwl\nWBBgaV21l2X4gl+ytHft6yWcw1GLbsl+YD+0jjSEo0wqKeTcU3IzatGttqIIVdjbNfYfgNLdo/0F\n4Psishv4AfC1xOW1wG7X7fZwhJ21iFyXaDtZ19bWltJijXfm15ZT/7nzmDW5hGvvXsePnnotZcuj\nGpOrRGSOiHxTRDYD/4mzHxZVfbeq/ucoH2sGcAbw/DDXpWW/PRCL8/DLToJCcY4mKLj5JUu7IeIk\nSi23owyAP7K0u/oG+OOWVpafVpOzUYtuoRS29KR7oH098EVVnQZ8EfjxaB9AVW9X1cWquriqKreb\n97NddVmQe687l0vnT+E7D2/i6w++zIAt227MWNoMvAdYrqrvSgyuR30msoiUAPcDX1DVt/V7pWu/\n/cy2dt7o6WfV6XYoHPwx0FZV6sNRlsyoPNyfnOtqK7yPXVzzSgv9g7kdteiWPEk1FScPp3ug/Sng\ngcT3v+bN9pAmYJrrdlMTl5kcVzQuj//6+Jl87t2z+OULu/nUT16gszfj0saM8asPAc3A4yJyh4i8\nFxjV9JaI/P/27j0+rvK+8/jnJ42kGcmSxpZsSSNfCTZgG9uEWwwhF24BAjj3QNk0NKTZbGjabZtu\nm922u+kubZpN82qbhDa0za1hISQlSA4UhxgnaQwJATPyBWQw8QVrJMuSLVv367N/zBkhjGTdZubM\n5ft+vfyydGbmzG9kzfFvznme71NEvMm+3zn38HT3T6XGaIzKUBFvX6OTMAAVwSLKSwK+NnXNbd28\n3N7DLWroxtVVhujoGfQ1XauxKcbyRaVsWhb2rYZM8lrsYvYPHYkBb/e+vhp42fu6EbjNzErMbBWw\nGngmzbVJhiooMD7zrvP40oc28uyhk7z33p0c7Oj1uyyRrOece8Q5dxtwPrCD+PC+JWb2D2Z2/XSP\nt3hO278ALzrnvpTaas+uf2iUbfvauHF9LcUBJdcm+D0euCEaI1BgvDvPoxYnSlxpaEvRAinTae8e\nYOeBDm7N86jFiULFhSwqK86uoSNm9gDwNHCemR01s7uA3wb+xsyagL8EPgHgnNsHPAS8ADwO3O2c\nU5CyvM773ryU+3/7crr6h3nPV3fy9CudfpckkhO8GL//55y7hfgVxeeZ2YqQVwIfAa72YlujZnZT\nKmudypPN7fQOjeZ9fNyZ6sJB38YDj405tjbFuGp1dd5HLU7kd5b2Y17UooaNvF6qsrRTNlvEOXf7\nFDddPMX97wHuSVU9khsuXbmIRz51JR/71q/4yL/8knveu54PX7rc77JEcoZz7iRwn/dnuvv+nFkO\nNUmVhmgLS8pLuHyVEhQmioRD7D56ypfn3uVFLX7mXWt8ef5M5XeWdkNTjPNry1ldk99Ri2eKVIY4\n1Jn8q+W6viZZZ3lVKQ9/6go2v6mKP/63PfzVYy9mxIIMIuKPU/3D/GT/cW7ZGFGCwhnqwyFO9A7R\nP5T+i8SNTYmoxdq0P3cmq61MnNFO/9CRI519PH+kSxOGJxEJh2g52Z/0hDM12pKVKoJFfOPOS/nN\nzSv42s9+zSe/8xy9gyN+lyUiPti2t42h0TEtUjOJ8WEKaR4+Mjw6xqO7W7nmghoWKGrxdUoChSwu\nL/Fl6MjW3fHlS27ZqDHzZ6oPh+gdGuX0QHJ7CTXakrUChQX8xZb1fO7WdWx/8Rgf/MenUxLNIyKZ\nraGphZVVpWxYWul3KRknUulPxN/OAx109g6xRR9+JuVXlnZjNMYlKxaydGFp2p870yUmqSa7j1Cj\nLVnvo1es5Ot3XsqRE31s+cpOml7t8rskEUmT9tMDPP1KJ7duqleCwiT8ytJubIpREQzw9vMUtTiZ\nSGVqJt6dTXPbafYf69YkyCnUpWiSqhptyQnvOG8JD3/qCooDBXzoa0/z2J5Wv0sSkTT4oZegoGEj\nk6utDGKW3vHAA8OjbNvbxo3r6ygJFKbtebNJPHZxIK0rHjdEYxQWGDcpanFSr01STe57RY225Iw1\nNeU8cveVrK+v5FP37+IrT76sZdtFclxjU4x1kQrOXbLA71IyUlFhAUvSPB44EbWoM6dTi4RD9A+P\n0pWmBdicczRGY7z13GqqFpSk5TmzzeIFJRQVms5oi5xN9YIS7v/45bz3onq++KOX+IOHmhgcUSS7\nSC463NlL9NUunc2eRrrHA49HLZ6jqMWp1HvDFNIV8ZeIWtR7ZWoFBUZtCob0qNGWnBMsKuRLH9rI\nH163hh8838Id//RLOnsG/S5LRJKsMZpIUFDzcDaJYQrpcKp/mB3Nx7l5g6IWzybdY+cbozFKAgVc\nv64mLc+XrSKVyV9JVY225CQz49PXrOarv/Fm9rSc4j337uSlY91+lyUiSeKco6EpxmWrFo03LTK5\n+nCIlq7k5wNPZts+L2pRw0bOKp2N9sjoGI/uaeXaC2ooDxal/PmyWX0KPpSq0Zac9u4NdXz3P29m\nYHiM99/7FD996bjfJYlIErzY2s2B9h5dCp+BSGWQoZExOnuHUv5cjdEYK6pK2aioxbOqKiumOFBA\n7FTqrzQ89UonHT1DuvIzA5FwiLbTA0ldBE+NtuS8TcvCNNx9JUsXlfJb33iGbz11yO+SRGSeGpti\nBJSgMCPpOnva3j3AU690cOvGiKIWp2Fm3tnT1J/RbojGKA8GeIeiFqdVFw4yOuZo707eByA12pIX\nIuEQ3//kZq4+v4b/2biPP2/Yy8jomN9licgcjI05tjbFuGp1NYvKiv0uJ+O91min9uzpo17UotJG\nZqYuDVnaA8OjbNvXxg3ragkWKWpxOqn4UKpGW/JGWUmAr33kYj7xtnP49tOH+di3nuX0QHqilUQk\neRIJCls21ftdSlZI1xntxqYYa+sqOHdJeUqfJ1ekY5LqjuZ2egZH9F6ZoVRkaavRlrxSWGD895su\n4K/ffyFPHejg/fc+xZHOPr/LEpFZaIjGCBYVcN1aJSjMxMLSIoJFBSlttI909vH8kS5NgpyFSDjE\nse4BhlN4dbUhGqN6QQmb36SoxZmoq0z+6pBqtCUvffjS5Xz7rsto7x7kPffu5FeHTvhdkojMwPCE\nBIWykoDf5WQFM0t5lnZjUwugqMXZqA8HcQ7aUjQh8vTAME/ub+fmDXWKWpyh8mARFcGAGm2RZLji\nTdU8cveVVIaKuOOffsnDu476XZKITGPngQ5O9A7pUvgsxSP+UtPQOedoiMa4dOXC8UvvMr1UD+nZ\ntreNoZExjZmfpUiSJ6mq0Za8tqq6jB986gouXrGQP3ioiS9u289YEmN9RCS5GqMxKoIB3ram2u9S\nskoqFuJIaG7r5uX2Hm7Vh59ZGW+0U3SlobEpxvJFpWxaFk7J/nNVsj+UqtGWvBcuLebbd13GbZcu\n4ys7DvA7D+yif0jLtotkmkSCwk0X1lESUILCbETCIY53DzI4kvxjW2NTjMIC46b1tUnfdy6LVKYu\nDeZ49yA7DyhqcS7qwkFak/jhR422CFBUWMBfve9C/vTdF/Dve9v48H1P0346PUsWi8jMbH+xnd6h\nUS1SMweRcHySV7LHA4+NORqj8ajFqgUlSd13rgsVF7KwtCglVxoe3R1jzKHJqXMQCYfo6humd3Ak\nKfvTTBIRj5nx8avOYWVVGb/74PPc/OWf8/Y1i1lZXcbKqjJWVpeysqpME7BEfNIQbWFJeQmXn6ME\nhdmqn5ClvaKqLGn7TUQtfuZda5K2z3yS7PHACY1NMc6vLWdNjaIWZyvxXmk91Z+UqEp1DCJnuHZt\nDd//5BXc89gL/PSl43zvuddPklxSXvJa451owr3vS4v1lhJJhVP9w/xk/3E+snmFEhTmoC5FE+8a\nm2KUBAq4bq2GjcxFJBxKesTsqyf62HWkiz++4fyk7jdfRCZkaavRFkmRtZEK7v/4WwDoHRzhUGcv\nhzv7ONjRy6GO+Nc79h/n+LOTNOHVZayqKmNFdSmrqspYWV3Giio14SLzsW1vG0OjYxo2MkepyAce\nGR3j0d2tXLu2hgW60jcn9eEQv3ilM6n7bGyKAXDLxrqk7jdfJDsNRu8MkWmUlQRYF6lkXaTyDbf1\nDI5wuLOXQx19HOrs5WBHL4c7e9ne3E5Hz+Dr7ltTUTLh7HcZq7wz4isWlREq1sQukbNpbIqxsqqU\nDUvf+D6U6QWLCqleUJzUhIudr3TS2TukDz/zEAkH6R4c4fTAMBXBoqTsszEa45IVC1m6sDQp+8s3\nNeUlFJgabZGMsOAsTXj3wDCHO+MN+KGOXg519nGoo5ftzcfo6Bl63X1rK4LjY8AnjglXEy4C7acH\neOqVDn7nnecqQWEeIkmOLWuItlAeDPCO8xYnbZ/5ZuLZ04ra+TfazW2n2X+sm7/Ysm7e+8pXgcIC\naiuCtKjRFsls5cEi1tdXsr5+6iY8MRTlkNeQP/HCMTp7X9+E11UGWVFVyiqvAV9RVcYqbzhKsEhN\nuOS+H+5uVYJCEkQqQxw43pOUfQ0Mj7Jtbxvv3qCoxflINNqtXQOcX1sx7/01Rr2oxQs1bGQ+6sIh\nWpP0oVSNtogPztaEnx4Y5nBHHwc7eznc0ctB74z4j/a9sQmPVAZZMWEoSqIJX75ITbjkjsamGGvr\nKpIyMSmfRcIhfvbycZxz874y8GRzPGpRK3TOTyJLOxlnT51zNDbFuPLcaqoVtTgvkXCI3Ue7krIv\nNdoiGaYiWMSFSyu5cJKxqKf6hzk8PhY8PhTlYGcv2/a1cWJCE24GdRXB+DCU6jJWVsWHpayqLmOZ\nmnDJIoc7e4m+2sVnb1SCwnxFwkH6hkY53T9CZen8hik0RFtYXF7CWxS1OC+Ly0sIFFhSxgPvOtLF\n0ZP9/P61ilqcr0g4yLa9A4yNOQrmmXKUskbbzL4O3Ay0O+fWe9u+C5zn3SUMdDnnNnm3fRa4CxgF\nftc5ty1VtYlkq8pQERuWhtmw9I1L6p7qG46PBz9jcua/72nlZN/w+P3M4mdRxseETzgjvmxRqS4D\nS0bZOp6goGEj8/VabFn/vBrtU/3D7Nh/nDsuX66oxXkqLDBqK4NJabQboy2UBAq4fl1NEirLb/Xh\nEEOjY3T0DrKkPDivfaXyjPY3ga8A305scM59OPG1mf0NcMr7ei1wG7AOiAA/NrM1zjmtgy0yQ5Wl\nRWwsDbNx2eRN+MHO3vGz4Ylx4Y/uaaVrkiY8MQZ81YSJmWrCJd2cczwSjXHZykXjTaLM3cSJd2sj\ncx8PvG1fG0MjYxo2kiTxRWvmNx54ZHSMR/e0cs0FSyhPUnpJPksM6Yl1DWRuo+2c+5mZrZzsNosP\nDvsQcLW3aQvwoHNuEDhoZgeAy4CnU1WfSD6pLC1iU2mYTZM04V19Q+OJKAc7vDPinX38cHcrp/pf\na8ILLP4fQqIJXzk+KTM+Jrw4UJDOlyR54MXWbg609/B/3rPe71JyQmIZ9vlG/G1tirGiqpSNilpM\nivpwiGcOnpjXPp56pZOOniFu3agPP8kw8UPpZP9vzoZfY7SvAo455172vq8HfjHh9qPeNhFJsXBp\nMZtKiyc9mJzsHRofjnKwo8/LDO+lMRrj9MDI+P0KDOoqQ5QUqdmW5GlsihFQgkLSVJeVUFxYMK+J\nd+3dA+w80MHdilpMmkg4SNvpAUbH3JyH4jREY5SXKGoxWeqTuGiNX4327cADc3mgmX0C+ATA8uXL\nk1mTiJxhYVkxC8uKuWj5wtdtd87R5Q1HSQxDefVEH8OjYz5Vmp12+F1ABhsbc2xtinHV6moWlRX7\nXU5OKCgw6sLBeQ1TeDQRtagx80kTCYcYHXO0dw9QVzn7IVIDw6Ns29fGjetrNdE9SSpCAUqLC5OS\nBpP2RtvMAsD7gIsnbG4Blk34fqm37Q2cc/cB9wFccsklLkVlishZmNl4E/7mM5pwmbmv3uF3BZlr\n15GTtHT180fvOm/6O8uMRSpD8zpL19gU44K6ClbXKGoxWV4bpjC3RntHczs9gyMaM59EZkYkSVna\nflznvRZods4dnbCtEbjNzErMbBWwGnjGh9pERCQDNERjBIsKuG6tEhSSKd48zK3RPtLZx/NHutii\nhYOS6rWJd3P7d2lsilG9oITNb1LUYjJFwqF5z2eAFDbaZvYA8cmM55nZUTO7y7vpNs4YNuKc2wc8\nBLwAPA7crcQREZH8NOwlKFx7QQ1lJVruIZkS44FH5jDMa+tuRS2mwvgk1Tk02qcHhtne3M7NG+oU\ntZhk9eHkxC6mMnXk9im23znF9nuAe1JVj4iIZIedBzo40TukccApEAmHGHNwrHtwfMLXTDjneOT5\nFi5duXBWj5PplQeLKA8G5tTU/WjfMYZGxrhVVxmSLlIZoqNniIHh0XmNfVdEgIiIZJTGaIyKYIC3\nK0Eh6SJzTFNobuvm5fYeffhJkfpwiJY5jAduiLawbFGIi+YZQSdvlHivtJ6a3zhtNdoiIpIxEgkK\nN11YpwWSUqB+jsMUGptiFCpqMWXii9bM7t/kePcgOw90sGVjvaIWU2CuH0rPpEZbREQyxvYX2+kd\nGtWZ0xRJpFrMJrbMOUdjNMZbz62makFJqkrLa5FwcNYT7x7b40UtathISiTGzs834k+NtoiIZIzG\nphaWlJdw+TlKUEiFspIA4dKiWZ2lS0QtKm0kdSLhEF19w/QNjUx/Z09DtIXza8tZo6jFlKitjDfa\n8434U6MtIiIZ4VT/MDuaj3PzhogSFFIoUjm7fOCGaIySQAHXr6tNYVX57bWIv5n9u7x6oo9dR7p0\nNjuFSgKFLC4v0dARERHJDdv2tjE0OqYzpykWCQdnfDl8ZHSMR3fHoxYXKGoxZWY7HrixyYta3KD3\nSiolI0tbjbaIiGSExqYYK6pK2bC00u9SctpsJt7tfKWTzt4hnTlNsdlmaW9tinHxioUsW1SayrLy\nXv0sPpRORY22iIj4rr17gKde6WDLxogSFFIsEg5xemCE7oHhae/bEG2hPBjgHYpaTKmaiiAFNrNG\nu7ntNM1t3brykwaRyviHUufcnPehRltERHz36G4lKKTLTPOBB4ZH+dG+Y9y4vlZRiylWVFhATUVw\nRlnajVFFLaZLJBxiYHiMk33TfyidihptERHxXUM0xtq6Cs5dogSFVKufYWzZk83t9AyOcOvG+nSU\nlfdmMqTHOUdjU4wrz62mWlGLKTfbIT2TUaMtIiK+OtzZS/TVLl0KT5OZTrxrjMaoXlDC5jcpajEd\nIuEQrdNMvNt1pIujJ/vZopz5tEjGojVqtEVExFdbvQSFm9U8pMWS8iCFBXbWiL9T/cM8ub+dWzbW\nKWoxTSKVQWKnBhgbm3o88NamRNRiTRory19qtEVEJKs552iIxrhs5SLqvf/UJLUKC4zaiuBZm4dt\n+9oYGhnTCp1pFAmHGBoZo7N3aNLbR0bH+OHuGNdcsITyYFGaq8tPVWXFFAcKiE0zn+Fs1GiLiIhv\nmtu6ebm9R5Mg02y6LO2tTTGWLypl07JwGqvKb9OdPX3615109AxpzHwamRn14dC8Iv7UaIuIiG8a\nojECSlBIu7MtxNHePcDOAx3cqqjFtJpu4l1DNEZ5iaIW0y0SPvvVn+mo0RYREV+MjTm2NsW4anU1\ni8qK/S4nr0TCIdpODTA6yXjgx7yoRU1OTa/E0KnJzp4ODI+ybW8bN6yvJVikqMV0SmRpz5UabRER\n8cWuIydp6erXsBEfRMIhhkcdHT2Db7itoSnG+bXlrK5R1GI6VYaKKC0uJDbJJNWf7G+ne3BE7xUf\n1IVDtHcPMjQyNqfHq9EWERFfNERjBIsKuG5trd+l5J2psrSPdPbx/JEutmzSOOB0M7Mps7QbElGL\n5yhqMd3qw0Gcg2On5zYhUo22iIik3fDoGI/taeWaC2pYUBLwu5y8M7465BlnT7fujkct3rJRY+b9\nMFmWdvfAMNub27l5Qx2BQrVt6TbfiD/9i4mISNrtPNBBZ++QFt7wSV3l5M1DQ7SFS1YsZOnCUj/K\nynuRyjcuw75t37F41KKGjfhivNGeZjGhqajRFhGRtGuMxqgIBni7EhR8UREMsKAk8LqhI81tp3np\nWI8mQfooEg7R0TPIwPDo+LbGphjLFoW4SFGLvoiMfyjV0BEREckCA8OjbNvXxo3r6ygJKEHBD/Hx\nwK+PLWuIxihU1KKvEmdP27wFUo53Dypq0Weh4kIWlRXPOUtbjbaIiKTV9hfb6R0a1ZlTn03M0nbO\n0RiN8dZzq6laUOJzZfnrzCztx/a0MjrmNDnVZ/PJ0lajLSIiadXY1MKS8hIuV4KCr+IJF/Ezp+NR\nixoz76szs7QbvajFNYpa9FXdPLK01WiLiEjajI45djQf5+YNEQoLdCncT/XhECd6h+gfGqUhGqMk\nUMD162r8Liuv1VYmzmgP8OqJPp47fFKTIDNA/YQPpbOlTCUREUmb0wPDjI6OadhIBkgMUzh6so9H\nd7dy7QU1lAeLfK4qv5UECllcXkLrqf7XohY36L3it0g4SM/gyJweq0ZbRETSpqtvmPVVpWxYWul3\nKXkvEfH3veeO0tk7xC0aNpIR4hF//URf7eLiFQtZtkhRi35LTFKdCw0dERGRtOkZHGGLEhQyQmI8\n8P2/OEx5MMA7FLWYESLhELsOn6S5rVtXfjJERjbaZvZ1M2s3s71nbP+0mTWb2T4z+8KE7Z81swNm\ntt/M3pWqukREJDmmOs5PR2NOM0NNRRAz6B0a5YZ1tQSLFLWYCSLhEL1Do4pazCD1mdhoA98Ebpi4\nwczeCWwBNjrn1gFf9LavBW4D1nmPudfM9I4XEcls3+SM4/x0gkWFnLtECQqZoDhQwJLyeJSf4uMy\nR+Ls6ZXnVlOtqMWMsHhBCUWFc7sKl7JG2zn3M+DEGZv/C/B559ygd592b/sW4EHn3KBz7iBwALgs\nVbWJiMj8TXGcP6twSJPtMkl9OET1ghI2v0lRi5kicfZUUYuZo6DAxhNhZivdkyHXAFeZ2T3AAPAZ\n59yvgHrgFxPud9Tb9gZm9gngE963g7O9ZJnnqoEOv4vIMvqZzY5+XrNznt8FpEOOHrdz6Xe9OvBn\nufNayI1/l+oP/nVOvA7InX8TmMMxO92NdgBYBLwFuBR4yMzOmc0OnHP3AfcBmNmzzrlLkl5ljtLP\na/b0M5sd/bxmx8ye9buGdMjF43auvA7Qa8lEufI6IPdey2wfk+7UkaPAwy7uGWCM+CedFmDZhPst\n9baJiIiIiGSldDfajwDvBDCzNUAx8csJjcBtZlZiZquA1cAzaa5NRERERCRpUhnv9wDwNHCemR01\ns7uArwPneOPzHgQ+6p3d3gc8BLwAPA7c7ZwbncHT3Jei8nOVfl6zp5/Z7OjnNTtZ/fOa4jg/nax+\nzRPkyusAvZZMlCuvA/L8tZhzLhWFiIiIiIjkNa0MKSIiIiKSAmq0RURERERSICsb7bku+5uvzGyZ\nme0wsxfMbJ+Z/Z7fNWUyMwua2TNm1uT9vD7nd03ZwMwKzex5M/uh37VkOjM7ZGZ7zCyaLxF/ZnaD\nme03swNm9id+1zNXuXY8zZX3rZmFzez7ZtZsZi+a2Wa/a5orM/t973drr5k9YGZzWynFB5P1Z2a2\nyMyeMLOXvb8X+lnjTE3xWv6v9zu228x+YGbh6faTlY02c1j2N8+NAH/onFtLPMP8bm/Ze5ncIHC1\nc24jsAm4wcze4nNN2eD3gBf9LiKLvNM5tylX8mXPxswKga8CNwJrgduz+BiUa8fTXHnf/h3wuHPu\nfGAjWfqazKwe+F3gEufceqAQuM3fqmblm7yxP/sTYLtzbjWw3fs+G3yTN76WJ4D1zrkNwEvAZ6fb\nSVY22nNZ9jefOedanXO7vK+7iR+AJl15U8BLwunxvi3y/mjW8FmY2VLg3cA/+12LZKTLgAPO+gpJ\nRgAAB8BJREFUuV8754aIp05t8bmmOcml42muvG/NrBJ4G/AvAM65Iedcl79VzUsACJlZACgFYj7X\nM2NT9GdbgG95X38LeE9ai5qjyV6Lc+5HzrkR79tfEF/35ayystGWuTOzlcBFwC/9rSSzeZdTo0A7\n8IRzTj+vs/tb4L8RX4RKpueAH5vZc97y5LmuHnh1wvdHydLmdKIcOJ7myvt2FXAc+IY3DOafzazM\n76LmwjnXAnwROAK0Aqeccz/yt6p5q3HOtXpftwE1fhaTRB8D/n26O6nRziNmtgD4N+C/OudO+11P\nJnPOjTrnNhH/tHqZma33u6ZMZWY3A+3Ouef8riWLvNX7/bqR+NCDt/ldkMxOth9Pc+x9GwDeDPyD\nc+4ioJfsGZ7wOt745S3EPzxEgDIz+0/+VpU8Lp4pnfVXiM3sfxAfRnb/dPdVo50nzKyI+H8K9zvn\nHva7nmzhXX7cgeYEnM2VwK1mdoj4kICrzew7/paU2byzVjjn2oEfEB9akctagGUTvl/qbctKOXI8\nzaX37VHg6IQrj98n3nhno2uBg8654865YeBh4Aqfa5qvY2ZWB+D93e5zPfNiZncCNwN3uBksRqNG\nOw+YmREfu/aic+5LfteT6cxscWImsZmFgOuAZn+rylzOuc8655Y651YSn7TzpHMuZ87AJJuZlZlZ\neeJr4Hog1xOUfgWsNrNVZlZM/Pek0eea5iRXjqe59L51zrUBr5rZed6ma4ivNJ2NjgBvMbNS73ft\nGrJ0YucEjcBHva8/CjT4WMu8mNkNxIdb3eqc65vJY7Ky0Z7jsr/57ErgI8TPWES9Pzf5XVQGqwN2\nmNlu4g3CE865rI6+koxSA/zczJqAZ4BHnXOP+1xTSnmTh34H2Ea8aXjIObfP36rmTMfTzPRp4H7v\nuL0J+Euf65kT76z894FdwB7ifVrWLGE+RX/2eeA6M3uZ+Bn7z/tZ40xN8Vq+ApQDT3jv/X+cdj9a\ngl1EREREJPmy8oy2iIiIiEimU6MtIiIiIpICarRFRERERFJAjbaIiIiISAqo0RYRERERSQE12pIx\nzOw9ZubM7Pw0PNdiM/ult1zvVWfc9hMzO+JlmCa2PWJmPXN8rm+a2Qcm2R4xs+/PZZ8iIvnA4n5u\nZjdO2PZBM8vpSEzJHWq0JZPcDvzc+zvVrgH2OOcucs79xyS3dxHPy8VbvKYu2QU452LOuTc04CIi\nEuetvPdJ4EtmFjSzBcQzsu+ez37NLJCM+kSmo0ZbMoJ38HwrcBfxVcoS2wvM7F4zazazJ8zsscTZ\nYTO72Mx+ambPmdm2xBKvZ+x3pZk9aWa7zWy7mS03s03AF4AtXuB8aJKSHpxQx/uIL4M7Xqu3r11m\ntsfMtky47Te952oys3+dsL+3mdlTZvbrCfWvNLO93td3mtnDZva4mb1sZl+YsM/rzexp7/m+5/2s\nRETygnNuL7AV+GPgz4FvO+deMbOPmtkz3nH8XjMrADCz+8zsWTPbZ2Z/ntiPt+jI583seeC9vrwY\nyTtqtCVTbAEed869BHSa2cXe9vcBK4G1xFdj2wxgZkXAl4EPOOcuBr4O3DPJfr8MfMs5twG4H/h7\n51yU+MH6u865Tc65/kket514c1xIvOH+7oTbBoD3OufeDLwT+Bvv8uY64E+Bq51zG4Hfm/CYOuIf\nJG5m6lWxNgEfBi4EPmxmy8ys2tvntd7zPQv8wRSPFxHJVZ8DfgO4EfiCma0n3ixf4ZzbBAR47eTI\nnzjnLgE2El+RcO2E/bR7VzK/l8baJY/p0olkituBv/O+ftD7/jnizen3nHNjQJuZ7fDucx6wnvgy\nqACFQOsk+91MvFkH+FfiZ7JnYpT4MJbbgJBz7tDEIdvAX5rZ24AxoJ74stpXe7V2ADjnTkzY3yPe\na3jBzGqmeM7tzrlTAGb2ArACCBP/kLHTe/5i4kvCiojkDedcr5l9F+hxzg2a2bXApcCz3rExBLzq\n3f12b7nsABAhfgx9wbvtu4ikkRpt8Z2ZLSLepF5oZo540+zM7I/O9jBgn3NucwpLexD4AfC/zth+\nB7AYuNg5N2xmh4DgNPsanPC1zeA+o8TfnwY84ZxLx7h1EZFMNub9gfix8evOuT+beAczW038auJl\nzrkuM/sOrz8+96alUhGPho5IJvgA8K/OuRXOuZXOuWXAQeAqYCfwfm+sdg3wDu8x+4HFZjY+lMQb\nunGmp3jtcuIdwGQTH6fyH8BfAQ+csb2S+OXHYTN7J/EzzwBPAh80syqvpkWzeK6p/AK40szO9fZZ\nZmZrkrBfEZFs9mPgQ97wOsysysyWAxVAN3Dam7fzLh9rFNEZbckItwN/fca2f/O23008IeQF4pcF\ndwGnnHND3qTCvzezSuK/y38L7DtjP58GvuGdHT8O/NZMi/Jmu39xkpvuB7aa2R7iY6abvfvvM7N7\ngJ+a2SjwPHDnTJ9vihqOm9mdwANmVuJt/lPgpfnsV0Qkmznn9pjZ54Afe5Mgh4mnkzxL/P+LZuAw\n8ZM1Ir6xeC8hkrnMbIFzrsc7U/wMcKVzrs3vukRERETORme0JRv80MuyLgb+t5psERERyQY6oy0i\nIiIikgKaDCkiIiIikgJqtEVEREREUkCNtoiIiIhICqjRFhERERFJATXaIiIiIiIp8P8BCvUlgSN8\nQjAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(1, 2, figsize=(12, 4))\n", "axes[0].plot(np.arange(n)+1, res.v)\n", "axes[0].set_xlim(1, 5)\n", "axes[0].set_ylim(160, 220)\n", "axes[0].set_xticks(np.linspace(1, 5, 5, endpoint=True))\n", "axes[0].set_xlabel('Age of Machine')\n", "axes[0].set_ylabel('Value')\n", "axes[0].set_title('Optimal Value Function')\n", "\n", "axes[1].plot(spath)\n", "axes[1].set_xlim(0, nyrs)\n", "axes[1].set_ylim(1, 4)\n", "axes[1].set_yticks(np.linspace(1, 4, 4, endpoint=True))\n", "axes[1].set_xlabel('Year')\n", "axes[1].set_ylabel('Age of Machine')\n", "axes[1].set_title('Optimal State Path')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 1 }