diff --git a/Aimbot-PPO-Python/GAIL-Main.ipynb b/Aimbot-PPO-Python/GAIL-Main.ipynb new file mode 100644 index 0000000..ef7f6df --- /dev/null +++ b/Aimbot-PPO-Python/GAIL-Main.ipynb @@ -0,0 +1,293 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import tensorflow as tf\n", + "import time\n", + "import datetime\n", + "import aimBotEnv\n", + "\n", + "from GAIL import GAIL\n", + "from GAILConfig import GAILConfig\n", + "from PPOConfig import PPOConfig\n", + "from GAILMem import GAILMem\n", + "from GAILHistory import GAILHistory\n", + "from IPython.display import clear_output\n", + "from tqdm.notebook import tqdm as tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Attempts to allocate only the GPU memory needed for allocation\n", + "physical_devices = tf.config.list_physical_devices(\"GPU\")\n", + "tf.config.experimental.set_memory_growth(physical_devices[0], True)\n", + "tf.random.set_seed(9331)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "√√√√√Enviroment Initialized Success√√√√√\n", + "√√√√√Buffer Initialized Success√√√√√\n", + "√√√√√Buffer Initialized Success√√√√√\n", + "---------thisPPO Params---------\n", + "self.stateSize = 90\n", + "self.disActShape = [3, 3, 2]\n", + "self.disActSize 3\n", + "self.disOutputSize 8\n", + "self.conActSize = 1\n", + "self.conActRange = 10\n", + "self.conOutputSize = 2\n", + "---------thisPPO config---------\n", + "self.NNShape = [512, 256, 128]\n", + "self.criticLR = 0.002\n", + "self.actorLR = 0.002\n", + "self.gamma = 0.99\n", + "self.lmbda = 0.95\n", + "self.clipRange = 0.2\n", + "self.entropyWeight = 0.01\n", + "self.trainEpochs = 10\n", + "self.saveDir = GAIL-Model/1015-0101/\n", + "self.loadModelDir = None\n", + "---------Actor Model Create Success---------\n", + "Model: \"model_1\"\n", + "__________________________________________________________________________________________________\n", + " Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + " stateInput (InputLayer) [(None, 90)] 0 [] \n", + " \n", + " dense0 (Dense) (None, 512) 46592 ['stateInput[0][0]'] \n", + " \n", + " dense1 (Dense) (None, 256) 131328 ['dense0[0][0]'] \n", + " \n", + " dense2 (Dense) (None, 128) 32896 ['dense1[0][0]'] \n", + " \n", + " muOut (Dense) (None, 1) 129 ['dense2[0][0]'] \n", + " \n", + " sigmaOut (Dense) (None, 1) 129 ['dense2[0][0]'] \n", + " \n", + " disAct0 (Dense) (None, 3) 387 ['dense2[0][0]'] \n", + " \n", + " disAct1 (Dense) (None, 3) 387 ['dense2[0][0]'] \n", + " \n", + " disAct2 (Dense) (None, 2) 258 ['dense2[0][0]'] \n", + " \n", + " tf.math.multiply (TFOpLambda) (None, 1) 0 ['muOut[0][0]'] \n", + " \n", + " tf.math.add (TFOpLambda) (None, 1) 0 ['sigmaOut[0][0]'] \n", + " \n", + " totalOut (Concatenate) (None, 10) 0 ['disAct0[0][0]', \n", + " 'disAct1[0][0]', \n", + " 'disAct2[0][0]', \n", + " 'tf.math.multiply[0][0]', \n", + " 'tf.math.add[0][0]'] \n", + " \n", + "==================================================================================================\n", + "Total params: 212,106\n", + "Trainable params: 212,106\n", + "Non-trainable params: 0\n", + "__________________________________________________________________________________________________\n", + "---------Critic Model Create Success---------\n", + "Model: \"model\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " stateInput (InputLayer) [(None, 90)] 0 \n", + " \n", + " dense0 (Dense) (None, 512) 46592 \n", + " \n", + " dense1 (Dense) (None, 256) 131328 \n", + " \n", + " dense2 (Dense) (None, 128) 32896 \n", + " \n", + " dense (Dense) (None, 1) 129 \n", + " \n", + "=================================================================\n", + "Total params: 210,945\n", + "Trainable params: 210,945\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "ENV_PATH = \"./Build-CloseEnemyCut/Aimbot-PPO\"\n", + "EXPERT_DIR = \"GAIL-Expert-Data/1014-1302/pack-24957-RE.npz\"\n", + "WORKER_ID = 1\n", + "BASE_PORT = 200\n", + "MAX_BUFFER_SIZE = 2048\n", + "\n", + "MAX_EP = 1000000000\n", + "STACKSTATESSIZE = 3\n", + "STACKINTERCE = 29\n", + "\n", + "env = aimBotEnv.makeEnv(\n", + " envPath=ENV_PATH,\n", + " workerID=WORKER_ID,\n", + " basePort=BASE_PORT,\n", + " stackSize=STACKSTATESSIZE,\n", + " stackIntercal=STACKINTERCE,\n", + ")\n", + "\n", + "STATE_SIZE = env.STATE_SIZE\n", + "DISACT_SHAPE = env.DISCRETE_SHAPE\n", + "CONACT_SIZE = env.CONTINUOUS_SIZE\n", + "CONACT_RANGE = 10\n", + "\n", + "ppoConf = PPOConfig(\n", + " NNShape=[512, 256, 128],\n", + " actorLR=2e-3,\n", + " criticLR=2e-3,\n", + " gamma=0.99,\n", + " lmbda=0.95,\n", + " clipRange=0.20,\n", + " entropyWeight=1e-2,\n", + " trainEpochs=10,\n", + " saveDir=\"GAIL-Model/\" + datetime.datetime.now().strftime(\"%m%d-%H%M\") + \"/\",\n", + " loadModelDir=None,\n", + ")\n", + "gailConf = GAILConfig(\n", + " discrimNNShape=[256, 128],\n", + " discrimLR=1e-3,\n", + " discrimTrainEpochs=10,\n", + " discrimSaveDir=\"GAIL-Model/\" + datetime.datetime.now().strftime(\"%m%d-%H%M\") + \"/\",\n", + " ppoConfig=ppoConf\n", + ")\n", + "\n", + "agentMem = GAILMem()\n", + "expertMem = GAILMem()\n", + "expertMem.loadMemFile(EXPERT_DIR)\n", + "gailHis = GAILHistory()\n", + "gail = GAIL(\n", + " stateSize=STATE_SIZE,\n", + " disActShape=DISACT_SHAPE,\n", + " conActSize=CONACT_SIZE,\n", + " conActRange=CONACT_RANGE,\n", + " gailConfig=gailConf,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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jaODA46OjuScOIHZbKZnt65079L5H7/X1l93kpGZyfDrw/j94EEKi4q469abcapXD5PJxBUtA2gbdBVQ9lfJA4dj+U/EDbaBCvbs289NN4Szc/dfxZmLswu5uXmcKinh6qCrGDpo4N9mWLFmLbfcNBwfb28aurpy12232OZ5enjQt1cP6td34lRJCYVFRVjOOJtOREREpLra8/t+zBYzt9w0HHt7ewb06c3VbYLOWq6Fvz9dru2Io6Mjp06dovhUMRZr2fFOZFQ0D91zN82bNQWgVWAgbm6X736vDvb21HN0tH3Ym0wsW7WGe++4HQ93d9zd3Lj/rjuIXrESgN7dr8O/aRMA8gsKsFgsWCyWv92m+YsW8/B999DY1xcAD3d3+vbqAZQNmnBlYEtMJhMFhQWUlppt64lI9aQzzkSkyqWlZzDmtTcZ9cD9vPXSC1gsZn4/eIgJH31MYVERH0ydxthXX8LR0ZH1m7awbtPmSr3f9z/9zOiHH2T+oiU888prjH7oQX6Z9Q2Ojo4kJiXx+Yxvbcvu3L2Hq1pdabs/x87duxncvy+7zijOJk75hNEPP8Azjz/Kzt17WLFmLQ1dXc/5/gsWR9HcvxmzvviUgoJCvv9pHt06dwLAzmTi9n//i9efLxud6fAfR5jw0SeV2l4RERGRqlBaWsoLb7zNi08/wUP33s2mrdtYvX7DWcvVc3Tk0ZH30bJFc0pLzez5/Xfe/bDsyoM5P/9CPUdHPnp3HO7ubiQcTeL5198C8s56nUvhw/HvlHs+4/s5zJg1mwYuLsz64jMAVq5dx4xZswFo7t+MZx8fhYe7O3n5ecyLXMSvv+2mVWDgObfph1/+ix12fPTeOLy9PMnOyWH56rWs27gZL09Pnn9yNL7e3hSdLGL56rVEL1txWbZVRC4NOzvfoMt/7quIiIiIiIiIiEgNo0s1RUREREREREREKqDiTEREREREREREpAIqzkRERERERERERCqg4kxERERERERERKQCKs5EREREREREREQq4GB0gEspet4PpBxPNTqGiIiI1HBNGvsR+u9bjY4h56FjPxEREbkU/u7Yr1YVZynHU7l31GijY4iIiEgNN2PqFKMjyAXQsZ+IiIhcCn937KdLNUVERERERERERCqg4kxERERERERERKQCKs5EREREREREREQqoOJMRERERERERESkAirOREREREREREREKqDiTEREREREREREpAIqzkRERKRGad6sKV6enkbHkFrOZDLRskVzPBs1MjqKiIiIGEjFmYiIiFR7TvXqETp4EJ++P4GfZk7n1n8NNzqS1HKurg2YO/1LQgYNNDqKiIiIGMjB6AAiIiIi53JVqyuJCAslZPBAGrq6cjTpGFO//Joly1YYHU1qudzcPLKyswkMaGF0FBERETGQijMRERGpVlwbNGDooAFEhIXS5qrWnCwuZtXa9URGRbNz9x6j40kdEpeQSEsVZyIiInWaijMRERGpFjq2b0dEeCiD+/Wlfv36HIr9g4lTprJ05Sry8vONjid1UFxCIiGDdammiIhIXVap4mzkiDuJCA8lJ+cEAJ9N/4ZNW7cB0CowkOefGk0DFxcsVgv3PTqaUyUl5dZ/7MGR9OnRndLSUpKSk3ln4gfkFxTQxM+POdO/IPFoEgB79x9gwkcfVyaqiIiIVEOeHh6EDw1mWFgoAc39yS8oYMmy5SxYEs3Bw7FGx5M6Li4hkYaurnh7eZKRmWV0HBERETFApc84mztvPrN/mldumr3JxBsvjuGNdycQeyQON7eGlJrNZ627dcevfPbVdMwWC6NG3sfdt9/K1K+mA3AsOYURD4+qbDwRERGpZkwmE927dmF4WCh9enbHwcGBnbv38M3sOaxcu57i4mKjI4oAEJeQAMAVAQEqzkREROqoy3Kp5nVduxB7JI7YI3FA2c1VK7J1x6+2x3v3H2BQvz6XI46IiIhUA038/LghdCg3hAzFz9eHrOwc5s6bz8LoGBJOn2UuUp3EJyQC0DKgBVt/3WlwGhERETFCpYuzm4dHED4kmP2HDjFl2pfk5efTwr8ZVquVye+OpZG7O8tWrWbWjz//7esMCx3K8tVrbc+bNm7MzGmfUFBQyOczZvLb3n2VjSoiIiJVzNHRkX69ehARFkq3zp0A2LxtOx9+Oo31m7dQWlpqcEKRc8vKyeFEbi6BAQFGRxERERGDnLc4+3jCeDwbNTpr+rQZ3/BL5CKmz5qN1WrloXtGMPrhBxg76UPs7e3p2L4d944azcniYj6Z+C4HDseyfeeuCt/jnv+7jVKzmegVKwHIyMpi+B13kZubR1DrVkx483VuH/kQhYWFZ607/PowbgwPA8DDw/1itl1EREQuk8CAACLCQwgLHoyHuzspx1P56ttZLIpZSlp6htHxRC7YkfgEAjWypoiISJ113uLs8TEvXtALLVgSzaR33gQgLT2DnXv2cCI3F4CNW7YR1LpVhcXZ9UOH0LtHdx577gXbtJKSEkpODyRw8HAsx1JSaOHfjAOHDp/9voujWLA4CoAZU6dcUFYRERG59Jzr1yd4QH8iwkPpcHVbSkpKWLNhI5FLotm2cxdWq9XoiCIXLS4hkcH9+xkdQ0RERAxSqUs1vTw9ycwqu1Fq/z69OBIfD8CW7Tu469abcXJyorSkhM4dOzBn3vyz1u/RrQt33vofHnl6TLkbAXu4u5Obl4fFYqFpk8b4N2tKckpKZaKKiIjIZdKuTRAR4aEED+hPAxcXjsQnMPmzz4levpKcEyeMjidSKfEJibi7NcTTw4OsnByj44iIiEgVq1Rx9tgD99O61RVghZTjqbw7ueyMr7z8fOb8/Aszpk7BarWyaes2Nm7ZCsBLTz/JL4sWc+DQYZ55bBT1HB2Z8t44oGyAgAkffUyna9rzwN0jKC0txWq1MmHyx+Tm5VdyU0VERORScXNrSOjgQUSEh9IqMJCiopMsW72GyCXR7N2/3+h4IpdMXOJfAwSoOBMREal7KlWcvfnexHPOi16x0nbPsjON+2Cy7fHNd99X4bqr1m1g1boNlYkmIiIil5idnR1dO11LRFgI/Xv3ol69euzbf4DxH0xm2eq1Fd6LVKSmi0tIAMru2/frb7sNTiMiIiJVrdKjaoqIiEjt5uPtzQ0hQxgWGkLTJo05kZvLLwsXszA6hj/i4o2OJzVEj25deOrRRzCZTERGRfPd3B/PWmZw/76MHHEnViscPnKE18e9Z0DS8jIys8jLz+eKlhogQEREpC5ScSYiIiJnsbe3p3f364gID6Vnt67Y29uz7dedfPr1DNZu2Mip04P4iFwIk8nEs4+PYvTzL5GWnsGMqVNYt3Ez8acvgwRo3qwpI26/lQefeIa8/HwaVaPR0uMSEgkMCDA6hoiIiBhAxZmIiIjYNG/WlGFhIVw/dAhenp6kZWTw7dwfWRgdQ3LKcaPjSQ11dVAQSckptn9Dy1avoV/vnuWKs+HhYcxbsIi8/LL72mbnVJ+BJeITEunTs4fRMURERMQAKs5ERETqOCcnJwb27UNEWAidO15DqdnMhs1biFwSzeZt2zFbLEZHlBrOx9uLtLR02/O09AzatQkqt0xz/2YAfDH5fUz2Jr76dhabt+2o0pznciQhgYjwUDzc3TVSrIiISB2j4kxERKSOuqrVlUSEhRIyeCANXV05mnSMqV9+zZJlK8jMyjI6ntQx9vb2+DdryiPPjMHXx5tpH0zijgceJr+goNxyw68P48bwMAA8quhyzriE0yNrtmjOrj0qzkREROoSFWciIiJ1iGuDBgwdNICIsFDaXNWak8XFrFq7nsioaHbu3mN0PKml0jMy8fX1sT339fEmPTOz3DJp6RnsO3AAs9lMyvFUEpOSaO7fjP0HD5VbbsHiKBYsjgJgxtQplz88Z46s2YJde/ZWyXuKiIhI9aDiTEREpA7o2L4dEeGhDO7Xl/r163Mo9g8mTpnK0pWrbPeUErlc9h88SPNmTWnS2I/0jEyGDOjPa/8zYubajRsZMnAAi2OW4e7mRgt/f46lpBgT+H+kpWdQUFioAQJERETqIBVnIiIitZSnhwfhQ4MZFhZKQHN/8gsKWLJsOQuWRHPwcKzR8aQOMVssTPr4Uz56dywmk4lF0UuJS0jggbvv4sChw6zbtJnN23bQvUsX5nz9OWaLhY+/+Irc3Dyjo9vEJyQSGNDC6BgiIiJSxVSciYiI1CImk4nuXbswPCyUPj274+DgwM7de/hm9hxWrl1PcXGx0RGljtq0dRubtm4rN+3Lmd+Ve/7RtC/4aFpVprpwcQmJdO/axegYIiIiUsVUnImIiNQCTfz8uCF0KDeEDMXP14es7BzmzpvPwugYEo4mGR1PpMaLS0zkhtChNHR11eXNIiIidYiKMxERkRrK0dGRfr16EBEWSrfOnQDYvG07H346jfWbt1BaWmpwQpHa48+RNQMDWrB73+8GpxEREZGqouJMRESkhgkMCCAiPISw4MF4uLuTcjyVr76dxaKYpaSlZxgdT6RWiov/a2RNFWciIiJ1h4ozERGRGsC5fn2CB/QnIjyUDle3paSkhDUbNhK5JJptO3dhtVqNjihSqx1PS6Oo6CQtNUCAiIhInaLiTEREpBpr17YNEWEhBA/oTwMXF47EJzD5s8+JXr6SnBMnjI4nUmdYrVbiExMJDAgwOoqIiIhUIRVnIiIi1Yy7mxuhwYOICAvlysCWFBWdZNnqNUQuiWbv/v1GxxOps+ISE+nSsaPRMURERKQKqTgTERGpBuzs7Oja6VoiwkLo37sX9erVY9/+A4z/YDLLVq+lsLDQ6IgidV5cQiLhQ4JxcXHR96SIiEgdUanibOSIO4kIDyUnp+xSkc+mf8OmrdsAaBUYyPNPjaaBiwsWq4X7Hh3NqZKSC15/xO23Miw0BIvFwgdTP2PL9h2ViSoiIlIt+Xh7c0PIEIaFhtC0SWNO5Obyy8LFLIyO4Y+4eKPjicgZ4v8cWbNFc/YdOGhwGhEREakKlT7jbO68+cz+aV65afYmE2+8OIY33p1A7JE43NwaUmo2X/D6LVu0YMiA/vzfyIfw9vLk4wnjueWekVgslsrGFRERMZy9vT19enRnWFgIPbt1xd7enm2/7uTTr2ewdsPGs/7QJCLVQ1zC6ZE1WwaoOBMREakjLsulmtd17ULskThij8QBkJubd1Hr9+vdk2Wr11BSUkLK8VSSklO4OihI93UREZEarXmzZkSEhRA+NBgvT0/SMjL4du6PLIyOITnluNHxROQ8ko+ncrK4mMAWGllTRESkrqh0cXbz8AjChwSz/9Ahpkz7krz8fFr4N8NqtTL53bE0cndn2arVzPrx5wte38fLi337D9iWSUvPwMfbq7JRRUREqpyTkxMD+/YhIiyEzh2vodRsZsPmLUQuiWbztu2YdTa1SI1hsVhIOHqUwAAVZyIiInXFeYuzjyeMx7NRo7OmT5vxDb9ELmL6rNlYrVYeumcEox9+gLGTPsTe3p6O7dtx76jRnCwu5pOJ73LgcCzbd+4q9xrnWv9iDL8+jBvDwwDw8HC/qHVFREQul6taXUlEWCghgwfS0NWVo0nHmPrl1yxZtoLMrCyj44nIPxSfkMg17doZHUNERESqyHmLs8fHvHhBL7RgSTST3nkTKDtDbOeePZzIzQVg45ZtBLVudVZxlpWTU+H66ZmZ+Pr62Ob5+niTnpFZ8fsujmLB4igAZkydckFZRURELgfXBg0IGTyQYaEhtLmqNSeLi1m1dj2RUdHs3L3H6HgicgnEJSQSMngQzvXrU3TypNFxRERE5DIzVWZlL09P2+P+fXpxJD4egC3bd9AqMBAnJyfsTSY6d+xA3OlRiC5k/XUbNzNkQH8cHR1p0tiP5s2a8vtB3YBVRESqp2s7tOe1559l0Y+zeW70Y9iZ7Jg45RNuuOX/ePO9iSrNRGqRP49pA1o0NziJiIiIVIVK3ePssQfup3WrK8AKKcdTeXdy2Rlfefn5zPn5F2ZMnYLVamXT1m1s3LIVgJeefpJfFi3mwKHD51w/LiGBFWvWMufrzzGbLUyaMlUjaoqISLXi6eFB+NBghoWFEtDcn/yCAhbHLCVySQwHY2ONjicil8mfxVlgQAsOHDpscBoRERG53CpVnL353sRzzotesZLoFSvPmj7ug8kXtP43s+fyzey5lYknIiJySZlMJrp37cLwsFD69OyOg4MDO3fv4ZvZc1i5dj3FxcVGRxSRy+xYcjIlJSUaIEBERKSOqPSomiIiIrVdk8Z+3BAylGGhQ/H18SErO5u58+YTGRVDYlKS0fFEpAqZLRYSkpK4IiDA6CgiIiJSBVSciYiIVMDR0ZH+vXsSERbKdV06Yzab2bx9Bx9Mncb6zVsoLS01OqKIGCQ+IZE2V7U2OoaIiIhUARVnIiIiZ7iiZQDDwkIICx6Mh7s7KcdT+XzGtyxeupS09Ayj44lINXAkPoFB/fri5OSkS7RFRERqORVnIiJS5znXr0/wgP5EhIfS4eq2lJSUsGbDRiKXRLNt5y6sVqvREUWkGolLSMRkMhHQ3J9DsX8YHUdEREQuIxVnIiJSZ7Vr24aIsBCCB/SngYsLR+ITmPzZ50QtW8GJ3Fyj44nUKj26deGpRx/BZDIRGRXNd3N/LDf/+qFDeOzB+0nPyATg5wULiYyKNiLqedlG1mzRQsWZiIhILafiTERE6hR3NzdCgwcRERbKlYEtKSwqYvmqNURGxbB3/36j44nUSiaTiWcfH8Xo518iLT2DGVOnsG7jZuITE8stt3z1Wt7/5FODUl64pORkSktLNbKmiIhIHaDiTEREaj07Ozu6drqWiLAQ+vfuRb169di7fz/j3p/M8tVrKCwqMjqiSK12dVAQSckpJKccB2DZ6jX0693zrOKspigtLeXosWO0VHEmIiJS66k4ExGRWsvH25sbQoYwLDSEpk0acyI3l18WLmZhdAx/xMUbHU+kzvDx9iItLd32PC09g3Ztgs5abmDfPnS6pgOJSUlM/uzzaj0gR1xCIlcGBhodQ0RERC4zFWciIlKr2Nvb06dHd4aFhdCzW1fs7e3Z9utOPv16Bms3bORUSYnREUWkAus2b2bpqtWUlJRw4/XhvDbmWR577oWzlht+fRg3hocB4OHhXtUxbeISEsvOYHV01M8VERGRWkzFmYiI1ArNmzUjIiyE8KHBeHl6kpaRwcw5P7AoZqnt8jARMUZ6Ria+vj62574+3qRnZpZbJjc3z/Y4Miqaxx68v8LXWrA4igWLowCYMXXKZUh7YeISErG3t6eFvz+xcXGG5RAREZHLS8WZiIjUWE5OTgzs24eIsBA6d7yGUrOZ9Zs2ExkVw5Zt2zFbLEZHFBFg/8GDNG/WlCaN/UjPyGTIgP68Nu69cst4eXqSmZUFQN+ePar9/c/iEhIAaBnQQsWZiIhILabiTEREapyrWl1JRFgoIYMH0tDVlaNJx5j65dcsXrqcrOxso+OJyP8wWyxM+vhTPnp3LCaTiUXRS4lLSOCBu+/iwKHDrNu0mVtuGk7fnj0wm83k5uXx9oT3jY79txKTjmE2mzWypoiISC2n4kxERGoE1wYNCBk8kGGhIbS5qjUni4tZtXY9kVHR7Ny9x+h4InIem7ZuY9PWbeWmfTnzO9vjz76ewWdfz6jqWP9YSUkJSckpKs5ERERqORVnIiJSrV3boT0R4aEM6teX+k5OHIyNZeKUT4hZsYr8ggKj44lIHRaXkKDiTEREpJZTcSYiItWOZ6NGhA8ZTER4KC38/ckvKGBxzFIil8RwMDbW6HgiIgDEJyTSp0d3HBwcKC0tNTqOiIiIXAYqzkREpFqwN5no3q0rEWEhtl9Ed+7ew4zv57By7XqKi4uNjigiUk5cQiIODg74N21a7QczEBERkX+mUsXZyBF3EhEeSk7OCQA+m/6N7d4VrQIDef6p0TRwccFitXDfo6M5VVJSbv13XnmRFv7+ADR0dSUvP58RD4+iiZ8fc6Z/QeLRJAD27j/AhI8+rkxUERGpppo09mNYaAg3hAzB18eHrOxs5s6bT2RUDIlJSUbHExE5p7jTZVlgQAsVZyIiIrVUpc84mztvPrN/mldumr3JxBsvjuGNdycQeyQON7eGlJrNZ637yjvjbY9HP/RAuXvVHEtOYcTDoyobT0REqiFHR0f69+5JRFgo13XpjNlsZvP2HXwwdRrrN2/RJU8iUiMkHE3CYrFwRcsAVq1bb3QcERERuQwuy6Wa13XtQuyROGKPxAGQm5t33nUG9+/HY889fzniiIhINXFFywCGhYUQPiQYdzc3Uo6n8vmMb1m8dClp6RlGxxMRuSjFxcUcSzmuAQJERERqsUoXZzcPjyB8SDD7Dx1iyrQvycvPp4V/M6xWK5PfHUsjd3eWrVrNrB9/PudrXNuhPVnZ2Rw9lmyb1rRxY2ZO+4SCgkI+nzGT3/buq2xUERExgIuzM8ED+hMRHkL7tm0pKSlhzYaNRC6JZtvOXVitVqMjioj8Y/EJibRUcSYiIlJrnbc4+3jCeDwbNTpr+rQZ3/BL5CKmz5qN1WrloXtGMPrhBxg76UPs7e3p2L4d944azcniYj6Z+C4HDseyfeeuCt9j6KABLFu12vY8IyuL4XfcRW5uHkGtWzHhzde5feRDFBYWnrXu8OvDuDE8DAAPD/cL3GwREbnc2rVtw/CwUIIH9sfF2Zkj8QlM/uxzopat4ERurtHxREQuibjEBHp064K9yYTZYjE6joiIiFxi5y3OHh/z4gW90IIl0Ux6500A0tIz2Llnj+0Xo41bthHUulWFxZm9ycSAPr25+5HHbdNKSkooOT2QwMHDsRxLSaGFfzMOHDp89vsujmLB4igAZkydckFZRUTk8nB3cyM0eBARYaFcGdiSwqIilq9aQ2RUDHv37zc6nojIJReXkIijoyPNmjbVgCYiIiK1UKUu1fTy9CQzKwuA/n16cSQ+HoAt23dw16034+TkRGlJCZ07dmDOvPkVvka3Lp2ITzxKesZf97bxcHcnNy8Pi8VC0yaN8W/WlOSUlMpEFRGRy8TOzo6una4lIiyE/r17Ua9ePfbu38+49yezfPUaCouKjI4oInLZxCX8NbKmijMREZHap1LF2WMP3E/rVleAFVKOp/Lu5LIzvvLy85nz8y/MmDoFq9XKpq3b2LhlKwAvPf0kvyxabDt7bMiA8pdpAnS6pj0P3D2C0tJSrFYrEyZ/TG5efmWiiojIJebj7c0NIUMZFjqUpk0acyI3l18WLmZhdAx/xMUbHU9EpEokJB4FyoqzNRs2GpxGRERELrVKFWdvvjfxnPOiV6wkesXKs6aP+2ByuedvT3z/rGVWrdvAqnUbKhNNREQuA3t7e/r06E5EeCg9unbB3t6ebb/u5NOvZ7B2w0ZOnb7MXkSkrig6eZKU46kaWVNERKSWqvSomiIiUvs1b9aMiLAQrg8ZgmejRqRlZDBzzg8sillKcspxo+OJiBgqLiGBwIAAo2OIiIjIZaDiTEREKuTk5MTAvn2ICAuhc8drKDWbWb9pM5FRMWzZtl2jx4mInBaXkEiXTtdiMpmw6GejiIhIraLiTEREyglq1YqI8BBCBg/CtUEDjiYdY+qXX7N46XKysrONjiciUu0cSUjAqV49mjb2IylZA1qJiIjUJirOREQE1wYNCBk8kIiwUIJat+JkcTGr1q4nMiqanbv3GB1PRKRai7eNrBmg4kxERKSWUXEmIlKHXduhPRHhoQzq15f6Tk4cjI1l4pRPiFmxivyCAqPjiYjUCHGnR9ZsGdCCdZs2G5xGRERELiUVZyIidYxno0aEDxlMRHgoLfz9yS8oYHHMUiKXxHAwNtboeCIiNU5hYSGpaekaWVNERKQWUnEmIlIH2JtMdO/WlYiwEPr06I6DgwM7d+9hxvdzWLl2PcXFxUZHFBGp0eISEwlsoeJMRESktlFxJiJSizVp7Mew0BBuCBmCr48PWdnZzJ03n8ioGBKTkoyOJyJSa8QlJHBjeDh2dnZYrVaj44iIiMglouJMRKSWcXR0pH/vnkSEhXJdl86YzWY2b9/BB1OnsX7zFkpLS42OKCJ1UI9uXXjq0UcwmUxERkXz3dwfK1xuYN/ejH/9Ve559HEOHDpcxSn/ufiERJyd69PYz5eU46lGxxEREZFLRMWZiEgtcUXLAIaFhRA+JBh3NzdSjqfy+YxvWbx0KWnpGUbHE5E6zGQy8ezjoxj9/EukpWcwY+oU1m3cTHxiYrnlXJydueWmG9m7f79BSf+5uDNG1lRxJiIiUnuoOBMRqcFcnJ0JHtCfiPAQ2rdty6lTp1i7cRORS6LZtnOXLhcSkWrh6qAgkpJTSE45DsCy1Wvo17vnWcXZg/eM4LsffuLOW/5jRMxK+as4a8HGLVsNTiMiIiKXioozEZEaqF3bNgwPCyV4YH9cnJ05Ep/Ah59OI3r5Sk7k5hodT0SkHB9vL9LS0m3P09IzaNcmqNwyQa1a4efrw8YtW2tkcZaXn096RqYGCBAREallVJyJiNQQ7m5uhAYPIiIslCsDW1JYVMTyVWtYEBXNvv0HjI4nIvKP2dnZ8cQjD/L2hPfPu+zw68O4MTwMAA8P98sd7aLEJyYSGKDiTEREpDZRcSYiUo3Z2dnRrdO1RISH0q9XT+rVq8fe/fsZ9/5klq9eQ2FRkdERRUTOKz0jE19fH9tzXx9v0jMzbc9dXJy5omUAn74/AQBPz0ZMfOsNnnvtjbMGCFiwOIoFi6MAmDF1yuUPfxHiEhK5PmSI0TFERETkElJxJiJSDfl4e3NDyFCGhQ6laZPGnMjN5ZeFi1kYHcMfcfFGxxMRuSj7Dx6kebOmNGnsR3pGJkMG9Oe1ce/Z5hcUFBL671ttzz99fwJTPv+yRo2qCRCXkEADFxd8fbw1KIuIiEgtoeJMRKSasLe3p0+P7kSEh9Kjaxfs7e3ZuuNXPv16Oms3bOJUSYnREUVE/hGzxcKkjz/lo3fHYjKZWBS9lLiEBB64+y4OHDrMuk2bjY54SZw5sqaKMxERkdpBxZmIiMFa+PsTERZC+NBgPBs1Ii0jg5lzfmBRzFLbCHQiIjXdpq3b2LR1W7lpX878rsJlH31mTFVEuuTOHFlzy/YdBqcRERGRS6HSxdnIEXcSER5KTs4JAD6b/g2btm4jZNBA7jhjRKRWVwRy9yOPcfiPI+XWd2voyjuvvEQTPz9SUlN5+e1x5OXnA/D0qEfoeV03iouLeXvC+xyMja1sXBGRasHJyYlB/foQERZKp2s6UGo2s37TZiKjYtiybTtmi8XoiCIicpFO5OaSlZ3DFQEBRkcRERGRS+SSnHE2d958Zv80r9y0mJWriFm5CoArA1vy3puvnVWaAYy47Va27dzFd3N/5K7bbmHEbbcw9avp9LyuG82bNeXmu++jXds2jHniMe5//MlLEVdExDBBrVoRER5CyOBBuDZoQGJSElO//JrFS5eTlZ1tdDwREamkuIQEWmpkTRERkVqjSi7VHDJwAMtXralwXt9ePW2n4y9ZupxP35/A1K+m069XT5YsWwHAvv0HcHV1xcvTk8ysrKqILCJyybg2aEDI4IFEhIUS1LoVJ4uLWbl2HZFLotm1Z6/R8URE5BKKS0gkZPBAo2OIiIjIJXJJirObh0cQPiSY/YcOMWXal7ZLLf8UPKAfY157s8J1PRt52MqwzKwsPBt5AODj7UVaerptubT0dHy8vc4qzoZfH8aN4WEAeHi4X4rNERG5JDpd04FhYSEM6teX+k5OHIyNZeKUT4hZsYr8ggKj44mIyGUQl5BIQ1dXvL08ycjUH3xFRERqugsqzj6eMB7PRo3Omj5txjf8ErmI6bNmY7VaeeieEYx++AHGTvrQtky7NkGcLC7mSHzCBQWyWq0XGL3MgsVRLFgcBcCMqVMual0RkUvNs1Ejrh8azLCwEFr4+5NfUMDimKVELonRfRpFROqAuISyY97AgAAVZyIiIrXABRVnj4958YJebMGSaCa9U/7MsuCB/Vm2cvU518nKzrFdgunl6Un26UEG0jMy8fXxsS3n6+NDekbmBeUQEalK9iYT3bt1JSIshD49e+Bgb8/O3XuY8f0cVq5dT3FxsdERRUSkisT/ObJmixZs+3WnwWlERESksip9qeaZ9x3r36cXR+LjbfPs7OwY3L8fDz/17DnXX7dpM+FDg/lu7o+EDw1m3cZNtuk3Dx/GslWrade2DfkFBbq/mYhUK00a+zEsNIQbQobg6+NDVnY2c36ax8LopSQmJRkdT0REDJCVk8OJ3FwNECAiIlJLVLo4e+yB+2nd6gqwQsrxVN6d/Nflkp2u6UBaejrJKcfLrfPS00/yy6LFHDh0mG/n/sDYV14iIjSE42lpvPz2WAA2btlKr+u68fO30zlZXMw7Ez+obFQRkUqr5+hIv969iAgL4bounTGbzWzevoP3P/mM9Zu3YDabjY4oIiIGi0tIJFDFmYiISK1Q6eLszfcmnnPer7/tZuTjT501fdwHk22Pc3Pzznkp6KSPp1Y2nojIJXFFywAiwkIJGzIYdzc3Uo6n8vmMb1m8dClp6RlGxxMRkWokLiGRQf36GB1DRERELoFLMqqmiEht5OLsTPCA/kSEh9C+bVtOnTrF2o2biFwSzbaduy56MBMREakb4uITcL8hHE8PD7JycoyOIyIiIpWg4kxE5H+0a9uG4WGhBA/sj4uzM0fiE/jw02lEL1/Jidxco+OJiEg1F5dYNkBAy4AWKs5ERERqOBVnIiKAu5sbYUMGMyw0hCsDW1JYVMTyVWtYEBXNvv0HjI4nIiI1SFxCAgCBAQH8+ttug9OIiIhIZag4E5E6y87Ojm6driUiPJR+vXpSr1499u7fz7j3J7N89RoKi4qMjigiIjVQRmYWefn5GiBARESkFlBxJiJ1jo+3NzeEDGVY6FCaNmnMidxcflm4mIXRMfwRF290PBERqQU0sqaIiEjtoOJMROoEe3t7+vToTkR4KD26dsHe3p6tO37l06+ns3bDJk6VlBgdUUREapH4hET69OxudAwRERGpJBVnIlKrtfD3JyIshPChwXg2akRaRgYz5/zAopilJKccNzqeiIjUUnEJiUSEh+Lu5qaBZURERGowFWciUus4OTkxqF8fIsJC6XRNB0rNZtZv2kxkVAxbtm3HbLEYHVFERGq5uMQ/Bwhowa49ew1OIyIiIv+UijMRqTWCWrUiIjyEkMGDcG3QgMSkJKZ++TWLly4nKzvb6HgiIlKHHIlXcSYiIlIbqDgTkRrNtUEDQgYPJCIslKDWrThZXMzKteuIXBKtX1RERMQwaekZFBQWEhgQYHQUERERqQQVZyJSI3W6pgPDwkIY1K8v9Z2cOBgby8QpnxCzYhX5BQVGxxMRkf/Ro1sXnnr0EUwmE5FR0Xw398dy82+6IZx/Dx+GxWyh6ORJxn/wEfGJiQalvTTiNbKmiIhIjafiTERqDM9Gjbh+aDDDwkJo4e9PfkEBi2OWErkkhoOxsUbHExGRczCZTDz7+ChGP/8SaekZzJg6hXUbN5crxmJWrmb+oiUA9O3ZgyceeZCnXnzFqMiXRFxCIt27djE6hoiIiFSCijMRqdbsTSa6d+tKRFgIfXr2wMHenp279zDj+zmsXLue4uJioyOKiMh5XB0URFJyim0042Wr19Cvd89yxVlhYaHtcf369cFqrfKcl1pcYiI3hA6loasrefn5RscRERGRf0DFmYhUS02bNGZYaAjXhwzB19ubrOxs5vw0j4XRS0lMSjI6noiIXAQfby/S0tJtz9PSM2jXJuis5f4dMYzb/3MTjg6OPPbc81UZ8bKISygrBlu2aM6e3/cbnEZERET+CRVnIlJt1HN0pF/vXgwPD6Vb506YzWY2b9/B+x9/yvrNWzCbzUZHFBGRy2he5ELmRS5k6KAB3HPH7bw94f2zlhl+fRg3hocB4OHhXtURL0pcwp8jawaoOBMREamhVJyJiOGuDGzJsNAQwoYMxt3NjZTjqXw+41sWL11KWnqG0fFERKSS0jMy8fX1sT339fEmPTPznMsvW7WGMU88ztucXZwtWBzFgsVRAMyYOuXSh72EjqemUVR0ksCWGiBARESkpqpUcTZyxJ1EhIeSk3MCgM+mf8OmrdsIGTSQO275j225VlcEcvcjj3H4jyPl1n/swZH06dGd0tJSkpKTeWfiB+QXFNDEz485078g8WjZ5Vh79x9gwkcfVyaqiFQzLs7OBA/oT0R4CO3btuXUqVOs3biJyCXRbNu5C2stuLeNiIiU2X/wIM2bNaVJYz/SMzIZMqA/r417r9wyzZs15eixZAB6d7+Oo0nHjIh6SVmtVuITEwkMCDA6ioiIiPxDlT7jbO68+cz+aV65aTErVxGzchVQdibJe2++dlZpBrB1x6989tV0zBYLo0bex92338rUr6YDcCw5hREPj6psPBGpZtq3bUtEeCjBA/rh4uzMkfgEPvx0GtHLV3IiN9foeCIichmYLRYmffwpH707FpPJxKLopcQlJPDA3Xdx4NBh1m3azH+GR9CtcydKS0vJy8/nrQou06yJ4hIT6dKxo9ExRERE5B+67JdqDhk4gOWr1lQ4b+uOX22P9+4/wKB+fS53HBExgLubG2FDBhMRFsoVLQMoLCpi+ao1LIiKZt/+A0bHExGRKrBp6zY2bd1WbtqXM7+zPf7w02lVHalKxCUkEj4kGBcXl3Ijh4qIiEjNUOni7ObhEYQPCWb/oUNMmfblWUNtBw/ox5jX3jzv6wwLHcry1Wttz5s2bszMaZ9QUFDI5zNm8tvefZWNKiJVyM7Ojm6driUiPJT+vXvh6OjI3v37Gff+ZJavXkNhUZHREUVERC67+NMjawa2aM6+AwcNTiMiIiIX67zF2ccTxuPZqNFZ06fN+IZfIhcxfdZsrFYrD90zgtEPP8DYSR/almnXJoiTxcUciU/42/e45/9uo9RsJnrFSgAysrIYfsdd5ObmEdS6FRPefJ3bRz5U4V/patLISiJ1ga+PN9cPHUpEWAhNGvtxIjeXnyMXsjAq5rw/C0RERGqbP0fWbBnQQsWZiIhIDXTe4uzxMS9e0AstWBLNpHfKn1kWPLA/y1au/tv1rh86hN49uvPYcy/YppWUlFBSUgLAwcOxHEtJoYV/Mw4cOnz2+9agkZVEait7e3v69uxBRFgI3bt2wd7enq07fmXqV1+zZsMm2/eziIhIXZN8PJXiU6c0QICIiEgNValLNb08PcnMygKgf59eHImPt82zs7NjcP9+PPzUs+dcv0e3Ltx563945OkxFBcX26Z7uLuTm5eHxWKhaZPG+DdrSnJKSmWiishl0MLfn4iwEMKHBuPZqBFp6enMnPMDC6NjSDmeanQ8ERERw1ksFhISjxIY0MLoKCIiIvIPVKo4e+yB+2nd6gqwQsrxVN6d/NcZX52u6UBaejrJKcfLrfPS00/yy6LFHDh0mGceG0U9R0emvDcOKBsgYMJHH9PpmvY8cPcISktLsVqtTJj8Mbl55e+dJiLGcHJyYlC/PkSEhdLpmg6UlpayftMWFkRFs2X7DiwWi9ERRUREqpW4xEQ6tG1rdAwRERH5BypVnL353sRzzvv1t92MfPyps6aP+2Cy7fHNd99X4bqr1m1g1boNlYkmIpdYUKtWRISHEDJ4EK4NGpCYlMQnX3zFkmUryMrONjqeiIhItRUXn0DIoIE4169P0cmTRscRERGRi1DpUTVFpPZq6OrK0EEDiQgPIahVK04WF7Ny7Toil0Sza89eo+OJiIjUCHGnR9YMaNG8wnv2ioiISPWl4kxEztLpmg5EhIUysF8f6js5cfBwLBOnfELMilXkFxQYHU9ERKRG+bM4CwxooeJMRESkhlFxJiIAeDZqxPVDgxkWFkILf3/y8vNZFL2UhVExHIyNNTqeiIhIjXUsOZmSkhINECAiIlIDqTgTqcPsTSa6d+tKRFgIfXr2wMHenl9/2830WXNYtW59udFuRURE5J8xWywkJCUR2CLA6CgiIiJykVScidRBTZs0ZlhoCNeHDMHX25us7Gzm/DSPhdFLSUxKMjqeiIhIrROfkEhQ69ZGxxAREZGLpOJMpI6o5+hIv969GB4eSrfOnTCbzWzevoP3P/6U9Zu3YDabjY4oIiJSa8UlJDKoX1+c6tWj+NQpo+OIiIjIBVJxJlLLXRnYkmGhIYQNGYy7mxvJKcf5fMZMFsUsIz0jw+h4IiIidUJcQiImk4kWzf05/McRo+OIiIjIBVJxJlILuTg7EzygPxHhIbRv25ZTp06xZsNGIqNi2L5zF1ar1eiIIiIidcqfI2teERCg4kxERKQGUXEmUou0b9uWiPBQggf0w8XZmT/i4vnw02lEL1/Jidxco+OJiIjUWUePHaO0tFQja4qIiNQwKs5Eajh3NzfChgwmIiyUK1oGUFhUxPJVa1gQFc2+/QeMjiciIiJAaWkpR48do6WKMxERkRpFxZlIDWRnZ0e3TtcSER5K/969cHR0ZM/v+xk76UNWrFlLYVGR0RFFRETkf8QlJHJlYKDRMUREROQiqDgTqUF8fby5fuhQIsJCaNLYjxO5ufwcuZCFUTEciU8wOp6IiIj8jbiERNsfvEpKSoyOIyIiIhdAxZlINefg4ECfHt2JCAuhe9cu2Nvbs3XHr0z96mvWbNikA28REZEaIi4hEXt7e1r4N+OPuHij44iIiMgFUHEmUk218PcnIiyE8KHBeDZqRFp6OjPn/MDC6BhSjqcaHU9EREQuUvzpkTUDA1qoOBMREakhVJyJVCNOTk4M7teXYWEhdLqmA6WlpazftIUFUdFs2b4Di8VidEQREZF/pEe3Ljz16COYTCYio6L5bu6P5ebf/u9/EREegtlsITsnh7GTPuR4WppBaS+PxKQkzGYzLVtogAAREZGaQsWZSDUQ1LoVw8NDGTpoIK4NGpCYlMQnX3zFkmUryMrONjqeiIhIpZhMJp59fBSjn3+JtPQMZkydwrqNm4lPTLQtczA2lnseXUxxcTH/GnY9jz14P6+8M97A1JfeqZISjqWkcEXLAKOjiIiIyAWqVHE2csSdRISHkpNzAoDPpn/Dpq3bCBk0kDtu+Y9tuVZXBHL3I49x+I8jF7Q+wIjbb2VYaAgWi4UPpn7Glu07KhNVpNpp6OrK0EEDiQgPIahVK04WF7Ny7Toil0Sza89eo+OJiIhcMlcHBZGUnEJyynEAlq1eQ7/ePcsVZ7/+ttv2eO/+A4QOHlTlOavCkfgEAgN0xpmIiEhNUekzzubOm8/sn+aVmxazchUxK1cBcGVgS95787WzSrO/W79lixYMGdCf/xv5EN5ennw8YTy33DNSl6lJrdDpmg5EhIUysF8f6js5cfBwLBOnfELMilXkFxQYHU9EROSS8/H2Ii0t3fY8LT2Ddm2Czrn8sNAQNm3bXhXRqlx8QiJ9enTHwcGB0tJSo+OIiIjIeVz2SzWHDBzA8lVrLmqdfr17smz1GkpKSkg5nkpScgpXBwWxd//+yxNS5DLz8vQkfGgwEaEhNPdvRl5+Pouil7IwKoaDsbFGxxMREak2QgcPom1Qax55ekyF84dfH8aN4WEAeHi4V2W0SyIuIREHBwf8mzYtd8adiIiIVE+VLs5uHh5B+JBg9h86xJRpX5KXn19ufvCAfox57c2LWt/Hy4t9+w/YlklLz8DH26uyUUWqlL3JRI9uXYkID6V3j+442Nvz62+7+XrWbFatW09xcbHREUVERKpEekYmvr4+tue+Pt6kZ2aetVy3zp245/9u45FnnqOkpKTC11qwOIoFi6MAmDF1yuUJfBnFJf41sqaKMxERkervvMXZxxPG49mo0VnTp834hl8iFzF91mysVisP3TOC0Q8/wNhJH9qWadcmiJPFxRyJT6jwtc+3/oWo6X91lNqnaZPGDAsN4fqQIfh6e5OVnc2cn+axMHopiUlJRscTERGpcvsPHqR5s6Y0aexHekYmQwb057Vx75Vb5qpWV/L8k4/z1IuvkH36/re1UcLRJCwWC4EBLVi1zug0IiIicj7nLc4eH/PiBb3QgiXRTHqn/JllwQP7s2zl6nOuk5WTU+H66ZkV/FUy4+y/SkLN/6uj1A71HB3p17sXw8ND6da5E2azmc3bd/D+x5+yfvMWzGaz0RFFREQMY7ZYmPTxp3z07lhMJhOLopcSl5DAA3ffxYFDh1m3aTOPPzgSF2dnxr76MgCpaek899obxga/DIqLi0k+flwDBIiIiNQQlbpU08vTk8ysLAD69+nFkfh42zw7OzsG9+/Hw089e9Hrr9u4mbdeep45P/+Ct5cnzZs15feDBysTVeSyuDKwJRFhoYQGD8LdzY3klON8PmMmi2KWkZ6RYXQ8ERGRamPT1m220dP/9OXM72yPL/SPtbVBfEIigQEBRscQERGRC1Cp4uyxB+6ndasrwAopx1N5d/JfZ3x1uqYDaenptmHH//TS00/yy6LFHDh0+JzrxyUksGLNWuZ8/Tlms4VJU6ZqRE2pNlycnRkysD8RYaG0a9uGU6dOsWbDRiKjYti+cxdWq9XoiCIiIlKNxSUkcl2XztibTJh1jCsiIlKtVao4e/O9ieec9+tvuxn5+FNnTR/3weQLWv+b2XP5ZvbcysQTuaTat21LRHgowQP64eLszB9x8Xz46TSil6/kRG6u0fFERESkhjiSkEC9evVo1rSp7n8qIiJSzVV6VE2R2szdzY2wIYOJCAvlipYBFBYVsXzVGhZERZcb+VVERETkQsUl/DWypoozERGR6k3Fmcj/sLOzo1vnTkSEh9K/V08cHR3Z8/t+xk76kBVr1lJYVGR0RBEREanBEhKPAmXF2ZoNGw1OIyIiIn9HxZnIab4+3twQMpRhoSE0aezHidxcfo5cyMKoGI7EJxgdT0RERGqJopMnSTmeqpE1RUREagAVZ1KnOTg40KdHdyLCQujRrSsmk4mtO35l6ldfs2bDJkpKSoyOKCIiIrVQXEICLVWciYiIVHsqzqROauHvT0RYCOFDg/Fs1Ii09HS+mT2XhdExpBxPNTqeiIiI1HJxCYl0vrYjJpNJo8eLiIhUYyrOpM5wcnJicL++DAsLodM1HSgtLWX9pi0siIpmy/YdOmgVERGRKhOXmEh9Jyea+PlxLCXF6DgiIiJyDirOpNYLat2K4eGhDB00ENcGDUhMSuKTL75iybIVZGVnGx1PRERE6qAzR9ZUcSYiIlJ9qTiTWqmhqytDBw0kIjyEoFatOFlczMq164hcEs2uPXuNjiciIiJ1nK04axnA+s1bDE4jIiIi56LiTGqVTtd0ICIslIH9+lDfyYkDhw4zcconxKxYRX5BgdHxRERERAAoLCwkNS1dI2uKiIhUcyrOpMbz8vQkfGgwEaEhNPdvRl5+Pouil7IwKoaDsbFGxxMRERGpUFxiIoEtVJyJiIhUZyrOpEayN5no0a0rEeGh9O7RHQd7e379bTdfz5rNqnXrKS4uNjqiiIiIyN+KS0jgxvBw7OzssFqtRscRERGRCqg4kxqlaZPGDAsN4fqQIfh6e5OZlcWcn+YRGRXD0WPHjI4nIiIicsHiExJxdq5PY19fUlJTjY4jIiIiFVBxJtVePUdH+vfpTURYCN06d8JsNrNp23YmTZnKhi1bMZvNRkcUERERuWh/DhDQMqCFijMREZFqSsWZVFtXBrYkIiyU0ODBuLs1JDnlOJ/PmMmimGWkZ2QYHU9ERESkUuITT4+sGdCCTVu3GZxGREREKqLiTKoVF2dnhgzsT0RYKO3atuHUqVOs2bCRyKgYtu/cpft/iIiISK2Rm5dPRmaWRtYUERGpxlScSbXQ4eq2DAsLJXhAP1ycnfkjLp4PP51G9PKVnMjNNTqeiIiIyGURl5DAFQEBRscQERGRc6hUcTZyxJ1EhIeSk3MCgM+mf8OmrdsIGTSQO275j225VlcEcvcjj3H4jyPl1n/nlRdp4e8PQENXV/Ly8xnx8Cia+PkxZ/oXJB5NAmDv/gNM+OjjykSVasjD3Z2w4MFEhIcQGBBAYVERy1atJnJJNPsOHDQ6noiIiMhldzD2D277900ED+jH8tVrjY4jIiIi/6PSZ5zNnTef2T/NKzctZuUqYlauAsruU/Xem6+dVZoBvPLOeNvj0Q89QH5Bge35seQURjw8qrLxpJqxs7OjW+dORISH0r9XTxwdHdnz+37GTvqQFWvWUlhUZHREERERkSoz4/vZtGsTxFsvvUADFxcWLIk2OpKIiIic4bJfqjlk4ACWr1pz3uUG9+/HY889f7njiEF8fby5IWQow0JDaNLYjxO5ufwcuZCFUTEciU8wOp6IiIhcZj26deGpRx/BZDIRGRXNd3N/LDf/2g7teerRh7nyikBefWc8q9atNyhp1SooKOTJF19h/Gsv8+LTT+Lq6sr3P/5sdCwRERE5rdLF2c3DIwgfEsz+Q4eYMu1L8vLzy80PHtCPMa+9+bevcW2H9mRlZ3P0WLJtWtPGjZk57RMKCgr5fMZMftu7r7JRpYo5ODjQp0d3IsJC6NGtKyaTiS3bdzD1q69Zs2ETJSUlRkcUERGRKmAymXj28VGMfv4l0tIzmDF1Cus2braNKgmQmpbO2xPe5/9u+beBSY1RXFzMmNff4vXnn+XxB0fSsEEDps2YaXQsERER4QKKs48njMezUaOzpk+b8Q2/RC5i+qzZWK1WHrpnBKMffoCxkz60LdOuTRAni4vPe0bR0EEDWLZqte15RlYWw++4i9zcPIJat2LCm69z+8iHKCwsPGvd4deHcWN4GAAeHu7n2xypAgHN/RkWFkr4kGA8G3mQlp7OjO/nsChmKSnHU42OJyIiIlXs6qAgkpJTSE45DsCy1Wvo17tnueIsJbXsGMFqqZsjaJeWlvL6+AkUFBZyzx234+rqyvuffKoRxUVERAx23uLs8TEvXtALLVgSzaR3yp9ZFjywP8tWrv7b9exNJgb06c3djzxum1ZSUmI7G+ng4ViOpaTQwr8ZBw4dPvt9F0exYHEUADOmTrmgrHLp1a/vxKC+fYkID+XaDu0pLS1l/aYtLIiKZsv2HVgsFqMjioiIiEF8vL1IS0u3PU9Lz6BdmyADE1VPFouFdz+cQn5+AXfeejMNXFx4Z9IHmM1mo6OJiIjUWZW6VNPL05PMrCwA+vfpxZH4eNs8Ozs7Bvfvx8NPPfu3r9GtSyfiE4+SnpFhm+bh7k5uXh4Wi4WmTRrj36wpySkplYkql0lQ61YMDw9l6KCBuDZoQGJSEp988RVLlq0gKzvb6HgiIiJSy9SFqw0++fJrcvPzefT+e2nQwIVX3h7HKd3iQkRExBCVKs4ee+B+Wre6AqyQcjyVdyf/dcZXp2s6kJaebjsl/08vPf0kvyxabDt7bMiA8pdplq3bngfuHkFpaSlWq5UJkz8mN6/8vdPEOA1dXRk6aCAR4SEEtWrFyeJiVq5dR+SSaHbt2Wt0PBEREalm0jMy8fX1sT339fEmPTPzH71WXbna4Ns5P1BQUMBzox/jg3FvM+a1NzX6uIiIiAEqVZy9+d7Ec8779bfdjHz8qbOmj/tgcrnnb098/6xlVq3bwKp1GyoTTS6Dzh2vISIslAF9e1PfyYkDhw4z4aOPWbpyNfkFBUbHExERkWpq/8GDNG/WlCaN/UjPyGTIgP68Nu49o2NVe/MiF1FQUMgrY57h4wnjeeqlV/THZBERkSpW6VE1pXbz8vQkfGgwEaEhNPdvRl5+Pouil7IwKoaDsbFGxxMREZEawGyxMOnjT/no3bGYTCYWRS8lLiGBB+6+iwOHDrNu02baBl3Fe2+8SkPXhvTp2Z0H7r6L/xv5kNHRDRe9YiUFRYW888pLfPrBRJ54/mXbrVJERETk8lNxJmexN5no0a0rEeGh9O7RHQd7e379bTdfz5rNqnXrKS4uNjqiiIiI1DCbtm5j09Zt5aZ9OfM72+P9Bw8RcftdVR2rRli3cTNPv/QqE99+g88nT+LxMS9qpHIREZEqouJMbJo2acyw0BCuDxmCr7c3mVlZzPlpHpFRMRw9dszoeCIiIiJ11o5dv/H4cy/wwbh3+Hzy+4we8xLxiYlGxxIREan1VJzVcfUcHenfpzcRYSF069wJs9nMpm3bmTRlKhu2bNXw5yIiIiLVxL4DB3nk6WeZ8t54pn04kSdffMU24JaIiIhcHirO6qgrA1sSERZKaPBg3N0akpxynM9nzGRRzDLSMzKMjiciIiIiFTgSn8BDTz7DlAnjmDrxXZ599Q127t5jdCwREZFaS8VZHeLi7MyQgf2JCAulXds2nDp1ijUbNhIZFcP2nbuwWq1GRxQRERGR8ziWksLDTz7LR++N48Px7/DyW2PZsGWr0bFERERqJRVndUCHq9syLCyU4AH9cHF25o+4eD78dBrRy1dyIjfX6HgiIiIicpHSMzN55Onn+HD8O7z35mu8+d4klq1abXQsERGRWkfFWS3l4e5OWPBgIsJDCAwIoLCoiGWrVhO5JJp9Bw4aHU9EREREKulEbi6PPfcCk95+gzdfHINrAxfmL1pidCwREZFaRcVZLWJnZ0e3zp2ICA+lf6+eODo6suf3/Yyd9CEr1qylsKjI6IgiIiIicgkVFhby1IuvMPa1l3n+ydG4NmjAdz/8ZHQsERGRWkPFWS3g6+PNDSFDGRYaQpPGfpzIzeXnyIUsjIrhSHyC0fFERERE5DIqPnWK519/i9eef5ZRD9yPq6srn309w+hYIiIitYKKsxrKwcGBPj26ExEWQo9uXTGZTGzZvoOpX33Nmg2bKCkpMTqiiIiIiFQRs9nMm+9OpKCggLtvv5WGrg2YOGWqBn8SERGpJBVnNUxAc3+GhYUSPiQYz0YepKWnM+P7OSyKWUrK8VSj44mIiIiIQSwWCxM++oT8ggJG3HYrDVxceGvC+5jNZqOjiYiI1FgqzmqA+vWdGNS3LxHhoVzboT2lpaWs37SFBVHRbNm+A4vFYnREEREREakmPv1qBnn5BYwaeR8NXFx4+e1xFJ86ZXQsERGRGknFWTXW5qrWRISFMnTQAFwbNCAxKYlPvviKJctWkJWdbXQ8EREREammvpv7I/n5+Tw3+jE+GPc2z736hgaKEhER+QdUnFUzDV1dCRk8kIiwUK5qdSUni4tZuXYdkUui2bVnr9HxRERERKSGmL9oCQWFhbz2/HN8Muk9vvhmJn/EJZCekWF0NBERkRpDxVk10bnjNUSEhTKwXx+c6tXjwKHDTPjoY5auXE1+QYHR8URERESkBlq6cjUFBYWMffUlJo8fC0Befj5x8Qn8EZ9w+nM8R+Ljyc45YXBaERGR6qfSxdnIEXcSER5Kzun/aD+b/g2btm7D3t6el555kqDWrXAw2bNk+Qq+nfPDWes3aezHOy+/iJubGwcPH+aNdydSWlqKo6Mjrz//LEGtW5Obm8sr74wnJbV23fzey9OT8KHBRISG0Ny/GXn5+SyMimFhVAwHY2ONjiciIiIitcCGLVu54dY7aHVFIFcGtuSKlgEEBgQwqF8f3G8Ity2XnZPDkfiE0x/xtsd5+fkGphcRETHWJTnjbO68+cz+aV65aYP796WeoyN3PvAITk5OzP36C5atXH1W+TXqgfuZM28+y1evYcwTjxMRFsIvCxcTERZCbl4+N999H8ED+jPqgft45Z3xlyKuoexNJnpe142I8FB6db8OB3t7fv1tN1/Pms2qdespLi42OqKIiIiI1DL5BQXs2rP3rFt/eDZqZCvTyj5aEj5kMA0aNLAtk5aRQZytUCsr1eISEnXPNBERqRMu26WaVis416+PvcmEk1M9SkpLKCg8+5LDrtd25PWx7wKwZOlyRt59J78sXEzfXj35auYsAFatXcezjz96uaJWiWZNmjAsdCjXhwzFx9uLzKws5vw0j8ioGI4eO2Z0PBERERGpg7Kys8nKzmbbrzvLTffz9eGKgACu+LNUCwjgphvCqV+/vm2ZlOOp/BEfX+6yz4Sko5w8qT8Ei4hI7XFJirObh0cQPiSY/YcOMWXal+Tl57Ny7Tr69erBoh9nU9+pPpOnfU5uXvnTvN3d3MjLL8BssQCQlpGOj5cXAD5eXqSmpwNgtljILyjA3c2NE7m5lyJylajn6Ej/Pr2JCAuhW+dOmM1mNm3bzsQpn7Bhy1bMZrPREUVEREREzpKalk5qWjqbtm23TTOZTDTx8+OKwACubNmSwJZln7t36Yyjo6NtuYLCQrKyssnKySEzK4vMrGyysnPIyv7zcTaZ2WXTSkpKjNg8ERGRC3ZBxdnHE8bj2ajRWdOnzfiGXyIXMX3WbKxWKw/dM4LRDz/A2Ekf0q5NEBaLhRtuvQO3hq5M+/B9tv26k+SU45d0A4ZfH8aN4WEAeHi4X9LX/qdaBQYyLCyE0ODBuLs1JDnlOJ/PmMmimGUaxUhEREREaiSLxcKxlBSOpaSwbuNm23R7e3uaN2tKYEAA/s2a4tnIA69Gnng28iAwoAVdrr0Wd7eGFb7midw8sk8XaeVKtaxsMrOzyMrOITMrm5ycHNsf20VERKrSBRVnj4958YJebMGSaCa98yYAQwcNZNO2HZjNZrJzTrB73z7aXtW6XHF2IjeXhq4NsDeZMFss+Hr7kJ6ZCUB6ZiZ+Pj6kZ2RgbzLh2qBBhWebLVgcxYLFUQDMmDrlgnJeDi4uLgwZ2J+IsFDatQni1KlTrNmwkcioGLbv3IXVajUsm4iIiIjI5WI2m4lPPEp84tFzLuPo6EgjD3e8PD3xatQIz0aN8PIs+/zn47ZXtcazkUe5+6v9yWKxkHMi13Zpac6JXHLz8v76yM07+3l+PqWlpZdz00VEpA6o9KWaXp6eZGZlAdC/Ty+OxMcDkJqWRtdrOxK9fAX16zvRvm0bfpj337PW37FrNwP79WX56jWEDw1m3cZNAKzbuJnwocHs3b+fgf36sn3Xb5WNell0uLotEeGhBPfvj7Nzff6Ii+eDqZ8RvWIlubl5RscTERERqRZ6dOvCU48+gslkIjIqmu/m/lhufl0YUb0uKykpIS09g7T08199Ub++U1mZdo6CzcuzEY39fHFr2JCGrq7Y29uf87UKCgv/p1zLP3/hlpdH8alTl3LzpZpwc2uIVyPPsn9HjRrh5VVW5Hp5etr+nXl5NsKtYUNO5OaSnpFJWkbZv9uyx+mkp2eQdnp6YWGh0ZskIlWg0sXZYw/cT+tWV4C17Aah704uO+vr5wULeeW5Z5j91efY2cGimGXExsUB8MHYtxj3wWQyMrOY+tXXvP3yizx0790civ2DyKgYABZGRfP6C2P4aeZ0cvPyeHVs9RlR08PdnbDgwUSEhxAYEEBhURFLV60ickk0+w4cNDqeiIiISLViMpl49vFRjH7+JdLSM5gxdQrrNm4mPjHRtkxtHVFdLt7Jk8Ukpxy/oFu82NnZ0cDFBTe3hrg1/OvD/X+euzVsSMOGrgQGtLDNP/O+bGdlKC6msLCIkpISSkpLKC0ppaS07KO0pOTsxyWltmVLSkopLS0t//j0cqWnlz1VUkJpaQmlpWZKS0sxWyyYzWbbh+X089IzHts+bM8tp5c1U2p7/NfnusLJyemvIszT01aC/TnN03aWo0eF+/xkcbHtXnxHk46xa88ecvPycXdriK+3Nz4+3lwdFIRnI4+z1i0oKCAt43Splp5x+nGG7XFaekaNuke3iFSs0sXZm+9NrHB60cmTvPz22ArnPf3ya7bHySnHuf+xJ85a5lRJyTnXN4KdnR3dOnciIjyU/r164ujoyJ7f9zN20oesWLNWw3GLiIiInMPVQUEkJafYipBlq9fQr3fPcsVZbRtRXaqG1Wolv6CA/IKCi76Xcv36Tn9btjVo4IKDvQMOjg44Ojjg6OhY9uHggIODAw1cXMoeOzrg6OB4xjIOp6c74lSv3mXa8vM7s5CzWCxYLBasVuvpz2C1WrBYrGWfrVasVitWixWL1XL68+lptuVOr4v1r/mWM9a1vXbZLWr+fGybV/am5d7LSvnHlj+nnZHRaqUsk9UKVnCq73S6JCsrxiq6tPfP2wVlZmeRlZXNkbh4MrKybPfOy8wqu6deZnb2BZ81Vs/REW9vL3y8vPD18cHXx7usWPP2wtfHm+u6dMLL0/OsMyCLT52ylWnpmZllZ6ylZ5CemUFefsFF39Knqm4B9E/epyqy6RZIF6c2fb1O5OaScDTJkPe+JKNq1gXdOl3LlPfGkXPiBD8vWEhkVAxxCQlGxxIRERGp9ny8vUhLS7c9T0vPoF2boPLL1IIR1aVmOXmymJMniy/o8tHKsDeZcDhduNVzdPyraHMsK9pMJhMO9vaYTCbs7e3/+vif538uZ3/WsibsTac//82ydnZ2mEx22NmZMJnsgLLnJjsTdqc/Ywem0/Nty9nZYbIrv5ydHdiZTJjs7P76fPrDZDKVbffp97ajbFk7O7CzM5Utc8by//thsjv9niY77LDDzvTn9LJ8xcWnyMrO5uDh2L/KsKw/B5goe56Tm3vJz7o7VVJy3jMh7U0mPBs1KivVfLzx8Tr92ccbHy8v2rUJwrdPb+oZWKiK1FTL16zllbfHGfLeKs4u0PZdv/Him2+zfvNWDZstIiIiYpDqOKK6yN8xWyyYi4spLi42OopcZmaLpeyssszMv72Fj7ubG36+Prg4O1/U69vZ2V10pn+yzj9RFe9TW96jqtSeLSmTlZ1j2HurOLtAFouFVes2GB1DREREpMZJz8jE19fH9tzXx9s2krptmRo2orqIyD91IjdXZ9OK1CAmowOIiIiISO22/+BBmjdrSpPGfjg4ODBkQH/Wbdxcbpk/R1QHqvWI6iIiIlK3qDgTERERkcvKbLEw6eNP+ejdscyd/gUr1qwlLiGBB+6+i749ewBlI6q7u7nx08zp3P6ff/HpV9MNTi0iIiKiSzVFREREpAps2rqNTVu3lZv25czvbI+r24jqIiIiIqAzzkRERERERERERCqk4kxERERERERERKQCKs5EREREREREREQqoOJMRERERERERESkArVqcIAmjf2YMXXKZX0PDw93cnJOXNb3kHPT19942gfG0z4wnvaB8S73PmjS2O+yvbZcOjr2u7zq8raDtl/bX3e3vy5vO2j76+r2/92xn52db5C1CrPUeDOmTuHeUaONjlFn6etvPO0D42kfGE/7wHjaB1JV6vK/tbq87aDt1/bX3e2vy9sO2v66vv0V0aWaIiIiIiIiIiIiFVBxJiIiIiIiIiIiUgEVZxfpv0uijI5Qp+nrbzztA+NpHxhP+8B42gdSVeryv7W6vO2g7df2193tr8vbDtr+ur79FdE9zkRERERERERERCqgM85EREREREREREQq4GB0gOqoR7cuPPXoI5hMJiKjovlu7o/l5js6OvL6888S1Lo1ubm5vPLOeFJSUw1KWzudbx/c/u9/EREegtlsITsnh7GTPuR4WppBaWun8+2DPw3s25vxr7/KPY8+zoFDh6s4Ze12IftgcP++jBxxJ1YrHD5yhNfHvWdA0trrfPvAz9eH18Y8i6trA+xN9kz9ajqbtm4zKG3t8/KzT9G7e3eyc3K444GHK1zm6VGP0PO6bhQXF/P2hPc5GBtbxSmlNqjLx36+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63QZnG8fFBQUEvrvW7npzru56c672bf/AM+99oZG1byELuT7YO3GjXTueA0A7m5utPD351hKihFxa6UL2QepaWl069QJgJYtmlPPsZ5+JlWhdZs2Ez5kMADt2rYhv6DAdqmNyIXSsV/ZSGvxCYnMmfdLhfM9GzWyPb466CrsTHa1pjisX98JF2dn2+PrunTmSHx8uWXqws+aoQMHnPMyzdq8//+0btNf3+PhQ4NZt3HTWcts2b6d7l0609DVlYaurnTv0pkt22v+7WJ6dOvCnbf+h+defcN2D+n/dSHfJzXVmfcr7N+nV4XbdSH/T9Rk3bp0Ij7xKOkZGRXOr837/0LZ2fkG1b3zUM+j53XdeOrRhzCZTCyKXso3s+fywN13ceDQYdZt2kw9R0def2EMV7W6kty8PF4dO942PLNcGufbBx9PGM+VgS3JyCw7aElNS+e5194wNnQtc759cKZP35/AlM+/VHF2iV3IPnji4Qfp0a0LZouFb76fy/LVawxOXbucbx+0bNGCl55+AmdnZ6xWK598+TVbd/xqdOxa462XXqBzx2vwcHcjKzubL2fOwsHBHoD5i5YA8Ozjo+jRrQsni4t5Z+IH+jkk/0hdPvbr2L4dn09+n9gjcVhO3yD8s+nf0Pj02RXzFy3hP8OH8a9hN2A2myk+VcxHn33Bnt9rx4jaTZs05r03XgPKzrxbunIV38yey003hAN142dN/fpOLJj9Hf+66x4KCsou0z1z+2vb/q/o/5Y1Gzcy9pWXaOzry/G0NF5+eyy5efm0uao1/7rhesZ9MBmAG0KHcvfttwHwzew5LI5ZZuCWXLyKtn3E7bdSz9HRVobu3X+ACR99jLeXJy89/SRPv/zaOb9PapqKtr9zx2to3eoKsELK8VTenTyFzKysctsPFf8/UdNUtP0Lo2N49bln2Lt/v+3nHVAr939lqDgTERERERERERGpgC7VFBERERERERERqYCKMxERERERERERkQqoOBMREREREREREamAijMREREREREREZEKqDgTERERERERERGpgIozERERERERERGRCqg4ExERERERERERqYCKMxERERERERERkQqoOBMREREREREREamAijMREREREREREZEKqDgTkWrl1eee4aF77zY6hoiIiIiIiIiKMxGRP336/gSWzv8JR0dHo6OIiIiI1EnzZ82k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5VW7OIGIiIiIiIg0DMXFJTwz82WjY4hIHWIyOoCIiIiIiIiIiEhdpOJMRERERERERESkGirOREREREREREREqqHiTEREREREREREpBoqzkRERERERERERKqh4kxERERERERERKQaKs5ERERERERERESq4Wx0gNoU0LoVixfMu6yv4ePjTU5O7mV9Dfl5+vobT+fAeDoHxtM5MN7lPgcBrVtdtueW2qP3fpdXYx47aPwaf+Mdf2MeO2j8jXX8v/Tez8nJP6TiCmap9xYvmMcdk+8zOkajpa+/8XQOjKdzYDydA+PpHMiV0pj/X2vMYweNX+NvvONvzGMHjb+xj786ulRTRERERERERESkGirOREREREREREREqqHi7BJ9GRNrdIRGTV9/4+kcGE/nwHg6B8bTOZArpTH/v9aYxw4av8bfeMffmMcOGn9jH391dI8zERERERERERGRamjGmYiIiIiIiIiISDWcjQ5QF/XrE8rUSfdgMpmIjo1jybLlVR53cXHhyenTCLn2WvLy8nj82RdIO3PGoLQN06+dg1v+/CeiIiOw2x2czcnhudlzOJ2eblDahunXzsGPhg8eyAtPPsHtk6Zw8PvDVzhlw1aTczBy6GDuuu3/qKiAw0eP8uTzLxmQtOH6tXPQyt+PGQ9Pw9PTA7PJzIK332Vb4k6D0jY8j02bysCwMM7m5HDrhLur3eeByffQv28fSkpKeGbmyxw6cuQKp5SGoDG/9/P38+XJ6Q/RorkPFRXw5eoYln+xoso+vbp3Y+Z/nsSWdhqADVu+5t0PlxoR97L44sP3KSw6h8PuwG63V7uaXEP9WdM2OJhnH/935edBAa156/0lfPL5l5XbGtr5r+7fFq9mnjz7+KMEtGpF2pkzPPbM8+QXFFx0bGT4KO649RYAFn/0MTEJa69o9t+rurHf+8+7GNQvjPLyclJsNp6d9QoFhYUXHVuT75O6rrrx33Xb/xEVaSEnJxeA1999r9r3cjX93aguq278zz7+b9oGBwPQzNOT/IICbrt78kXHNoTz/3uoOPv/mEwmpk2ZzH3THyU9I5PFC+axeet2jp88WblPlDWCvPwCbhr/D0YNG8rkCf/g8WdfMDB1w1KTc3DoyBFun7SakpIS/jR2DPf+806dg1pUk3MA0LRJE/76xz9wIDnZoKQNV03OQZugQG675Wb++a8HyS8o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TcuZ9AwemvGUsaEbmF87Bz+18OWZzHtzkYqzWlaTc/Cvu/9Jvz6h2B0O3vtoGWs3bDQ4dcPya+fgqrZtefSBf9GkSRMqKip4bdE7JCbtNjp2g/GfRx+hV/du+Hh7kX32LIve/xBnZzMAX6yKAWDalMn06xNKcUkJz856RT+H5DdpzO/9ul/XlTdffZkjR4/huHCD8NfffY/WF2ZXfLEqhr/cOJY/jb0Bu91OSWkJc19/i/3fNYwVtQMDWvPSUzOA8zPv1ny1nveWLuOPN0QCjeNnjbu7GyuWLuFP426nsPD8Zbo/HX9DO//V/duycetWnnv8UVr7+3M6PZ3HnnmOvPwCOnW8lj/dMIbnX3kVgBssoxl/y98AeG/px6yOTzBwJJeuurHfdsvNuLq4VJahB5IPMnPufHxbtuDRB+7ngcdm/Oz3SX1T3fh7de/GtR2uhgpIO32GF1+dR1Z2dpXxQ/X/TtQ31Y1/ZVw8Tzz0IAeSkyt/3gEN8vz/HirOREREREREREREqqFLNUVERERERERERKqh4kxERERERERERKQaKs5ERERERERERESqoeJMRERERERERESkGirOREREREREREREqqHiTEREREREREREpBoqzkRERERERERERKqh4kxERERERERERKQaKs5ERERERERERESqoeJMRERERERERESkGirORERERERExFARI4Yz98Xnfvbx7td15ZPFb1/BRCIi5zk5+YdUGB1CRORKWfjyTOLWfkV0bNxFj322ZDGlpaXccudEA5KJiIiIyI+2r43jL7fdQYot7ZKOGzM6nKhICxPvf/AyJRORxkYzzkREgJ7drqe5jw+BAQF0DulodBwRERGRRsNs0q+lIlJ3ORsdQEQar3F/+ys3Rlpo7uNDekYGb7z7Phu/3orJZOLeCXcSOXoU584VsfTTz5g2ZTIDR0didzjw8GjKv+6eyIC+fXBUOFgdn8Ci95fgcDgq/8p44LtkxlojKCgoZNa819i2cxd33zGe7td1pWvnTtw/aSKr4xN4+bWFAESOHsXmrdtwc3UjMnwUyYe+r8zZvl07pk6aSMi112K3l/PJ51/y/sefYDKZGHfzTYy1RtDcx4dTKak8/OTTpGdk8q97/knEiBG4ubqQlp7OjOde5OjxE0Z9qUVEREQM4e/nywOT7qH79V0xmUys+WoDB78/zI2R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BLvN98GYmNEM6t+P5yZMPOuYc/2cuKrcY8dwOBw4nU7mJyRyZZea21XX16euymwyMXzwIJauWHXWMe66/+tKxdkZUnfvpn1EOGHt2uLp6cno4cNYvW5DtTGr120gLiYagBFDh7B5+w9GRHVbddkHl3e+lMcfeoBHn31en+vUAM61DwoKCon9fzfyuz/fxu/+fBs/pu7i0Wef16ya9aguPwer1q2jV/duAAQGBNAhMpJ0m82IuG6pLvvgSGYmUT17AtCxQ3taeLXQ76RGtHr9BuJGjwLgqq5XcKKgoOpUG5G60nO/ipnW9h84yBdff1Pr+tZBQVWXr+xyOR4mD7cpDn18vGnp61t1uW/vXuzbv7/amObwuyZmxPCznqbpzvv/pNXrT/2Mx8VEs3rd+hpjvt+8mX69e3GRvz8X+fvTr3cvvt/s+h8X0z+qN3++8f949Jnnqz5D+kx1+TlxVad/XuGwwQNr3a66/J1wZVG9e7L/4CGysrNrXe/O+7+uPDxCuzS/41DPYUDfKB6+7x5MJhOLEpOZPWcud992C7t+2sPq9Rto4eXFc088xuWdLyX/+HGeeXlC1fTMUj/OtQ/emziBSzt1JDun4knLkcwsHn32eWNDu5lz7YPTTXlzIpOmTVdxVs/qsg/+/re/0j+qN3aHg9mfz2XZipUGp3Yv59oHHTt04Ml//B1fX1+cTifvT/+IjVu2Gh3bbfzrySfo1b0brQIDyD16lOkff4anpxmAeYsSABj/wDj6R/WmuKSEl15/S7+H5Ddpzs/9ul99FdPeeZO9+37BUfkB4VNnzqZd5dEV8xYl8H/XjeX3Y6/FbrdTUlrCu1M/ZOf/3GNG7fCwdrz2/LNAxZF3yd8tZ/acufzu2jigefyu8fHxZv6cT/n9LbdTUFBxmu7p2+9u+7+2vy0r163j5aefpF1oKIczM3nqxZfJP36CKy6/jN9fO4ZX3noHgGtjY7jtpj8CMHvOFyxOWmrglpy/2rb91ptupIWXV1UZmpK6i4nvvkdwm9Y8+Y+H+MdTz57158TV1Lb9vbp347LOl4ATbIeP8Oo7k8jJza22/VD73wlXU9v2L0xM4plHHyElNbXq9x3glvv/Qqg4ExERERERERERqYVO1RQREREREREREamFijMREREREREREZFaqDgTERERERERERGphYozERERERERERGRWqg4ExERERERERERqYWKMxERERERERERkVqoOBMREREREREREamFijMREREREREREZFa/H9DcoZvsCVZ9QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fb112ad158f248a68f0950ef142f1951", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/2048 [00:00=bestReward:\n", + " bestReward = np.mean(totalRewards)\n", + " gail.saveWeights(np.mean(totalRewards))\n", + " agentMem.clearMem()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.7 64-bit", + "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.9.7" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "86e2db13b09bd6be22cb599ea60c1572b9ef36ebeaa27a4c8e961d6df315ac32" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Aimbot-PPO-Python/GAIL.py b/Aimbot-PPO-Python/GAIL.py index 0bb51aa..514d994 100644 --- a/Aimbot-PPO-Python/GAIL.py +++ b/Aimbot-PPO-Python/GAIL.py @@ -9,7 +9,7 @@ from tensorflow.keras import optimizers from GAILConfig import GAILConfig -EPS = 1e-8 +EPS = 1e-6 class GAIL(object): @@ -32,6 +32,7 @@ class GAIL(object): self.discriminatorNNShape = gailConfig.discrimNNShape self.discrimLR = gailConfig.discrimLR self.discrimTrainEpochs = gailConfig.discrimTrainEpochs + self.discrimSaveDir = gailConfig.discrimSaveDir self.ppoConfig = gailConfig.ppoConfig self.ppo = PPO(stateSize, disActShape, conActSize, conActRange, self.ppoConfig) @@ -103,7 +104,7 @@ class GAIL(object): actionsNum = int(len(actions) / self.totalActSize) actions = actions.reshape([actionsNum, self.totalActSize]) - thisTrajectory = tf.concat([states, actions], axis=1) + thisTrajectory = np.append(states, actions, axis=1) discrimPredict = self.discriminator(thisTrajectory) return discrimPredict @@ -136,8 +137,8 @@ class GAIL(object): """ if epochs == None: epochs = self.discrimTrainEpochs - demoTrajectory = tf.concat([demoStates, demoActions], axis=1) - agentTrajectory = tf.concat([agentStates, agentActions], axis=1) + demoTrajectory = np.append(demoStates, demoActions, axis=1) + agentTrajectory = np.append(agentStates, agentActions, axis=1) his = self.discriminator.fit(x=agentTrajectory, y=demoTrajectory, epochs=epochs, verbose=0) demoAcc = np.mean(self.inference(demoStates, demoActions)) @@ -145,6 +146,18 @@ class GAIL(object): return his.history["loss"], demoAcc, 1 - agentAcc def getActions(self, state: ndarray): + """Agent choose action to take + + Args: + state (ndarray): enviroment state + + Returns: + np.array: + actions, + actions list,2dims like [[0],[1],[1.5]] + predictResult, + actor NN predict Result output + """ actions, predictResult = self.ppo.chooseAction(state) return actions, predictResult @@ -165,6 +178,12 @@ class GAIL(object): actorLosses = self.ppo.trainActor(states, oldActorResult, actions, advantage, epochs) return actorLosses, criticLosses + def saveWeights(self, score: float): + saveDir = self.discrimSaveDir + "discriminator/discriminator.ckpt" + self.discriminator.save_weights(saveDir, save_format="tf") + print("GAIL Model's Weights Saved") + self.ppo.saveWeights(score=score) + def generateAction(self, states: ndarray): act, actorP = self.ppo.chooseAction(states) return act, actorP diff --git a/Aimbot-PPO-Python/GAILHistory.py b/Aimbot-PPO-Python/GAILHistory.py new file mode 100644 index 0000000..6b1cd8a --- /dev/null +++ b/Aimbot-PPO-Python/GAILHistory.py @@ -0,0 +1,45 @@ +import matplotlib.pyplot as plt + +DarkBlue = "#011627" +DarkWhite = "#c9d2df" + + +class GAILHistory(object): + def __init__(self): + self.meanRewards = [] + self.discrimLosses = [] + self.actorLosses = [] + self.criticLosses = [] + self.demoAccs = [] + self.agentAccs = [] + + def saveHis(self, rewards, dLosses, aLosses, cLosses, demoAcc, agentAcc): + self.meanRewards.extend([rewards]) + self.discrimLosses.extend(dLosses) + self.actorLosses.extend(aLosses) + self.criticLosses.extend(cLosses) + self.demoAccs.extend([demoAcc]) + self.agentAccs.extend([agentAcc]) + + def drawHis(self): + def setSubFig(subFig, data, title): + subFig.set_facecolor(DarkBlue) + subFig.tick_params(colors=DarkWhite) + subFig.spines["top"].set_color(DarkWhite) + subFig.spines["bottom"].set_color(DarkWhite) + subFig.spines["left"].set_color(DarkWhite) + subFig.spines["right"].set_color(DarkWhite) + subFig.plot(range(len(data)), data, color=DarkWhite, label=title) + subFig.set_title(title, color=DarkWhite) + + fig, ((ax1, ax2), (ax3, ax4), (ax5, ax6)) = plt.subplots( + 3, 2, figsize=(21, 13), facecolor=DarkBlue + ) + plt.tick_params() + setSubFig(ax1, self.meanRewards, "meanRewards") + setSubFig(ax2, self.discrimLosses, "discrimLosses") + setSubFig(ax3, self.demoAccs, "demoAccs") + setSubFig(ax4, self.actorLosses, "actorLosses") + setSubFig(ax5, self.agentAccs, "agentAccs") + setSubFig(ax6, self.criticLosses, "criticLosses") + plt.show() diff --git a/Aimbot-PPO-Python/GAILMem.py b/Aimbot-PPO-Python/GAILMem.py index f730273..84ae398 100644 --- a/Aimbot-PPO-Python/GAILMem.py +++ b/Aimbot-PPO-Python/GAILMem.py @@ -61,7 +61,7 @@ class GAILMem(object): dir (str): file direction """ self.clearMem() - memFile = np.load(dir) + memFile = np.load(dir, allow_pickle=True) self.states = memFile["states"].tolist() self.actorProbs = memFile["actorProbs"].tolist() self.actions = memFile["actions"].tolist() diff --git a/Aimbot-PPO-Python/PPO-mian.ipynb b/Aimbot-PPO-Python/PPO-mian.ipynb index c5f2bda..0b4344a 100644 --- a/Aimbot-PPO-Python/PPO-mian.ipynb +++ b/Aimbot-PPO-Python/PPO-mian.ipynb @@ -68,7 +68,28 @@ "cell_type": "code", "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "√√√√√Enviroment Initialized Success√√√√√\n", + "√√√√√Buffer Initialized Success√√√√√\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "module 'numpy' has no attribute 'aa'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_40408/576030716.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mACTSPEC\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mACTION_SPEC\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mloadDir\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetSteps\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 12\u001b[1;33m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maa\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m agent = PPO(\n", + "\u001b[1;32mc:\\Users\\UCUNI\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\numpy\\__init__.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(attr)\u001b[0m\n\u001b[0;32m 313\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mTester\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 314\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 315\u001b[1;33m raise AttributeError(\"module {!r} has no attribute \"\n\u001b[0m\u001b[0;32m 316\u001b[0m \"{!r}\".format(__name__, attr))\n\u001b[0;32m 317\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: module 'numpy' has no attribute 'aa'" + ] + } + ], "source": [ "# initialize enviroment & buffer class\n", "env = aimBotEnv.makeEnv(envPath=ENV_PATH, workerID=WORKER_ID, basePort=BASE_PORT)\n", @@ -81,6 +102,7 @@ "CONTINUOUS_SIZE = env.CONTINUOUS_SIZE\n", "ACTSPEC = env.ACTION_SPEC\n", "_, _, _, loadDir, _ = env.getSteps()\n", + "np.aa\n", "\n", "agent = PPO(\n", " stateSize=STATE_SIZE,\n", diff --git a/Aimbot-PPO-Python/PPO.py b/Aimbot-PPO-Python/PPO.py index fb952e3..0360beb 100644 --- a/Aimbot-PPO-Python/PPO.py +++ b/Aimbot-PPO-Python/PPO.py @@ -343,8 +343,8 @@ class PPO(object): totalALoss += continuousAloss totalActionNum += 1.0 lastConAct += self.muSigSize - loss = tf.divide(totalALoss, totalActionNum) - return loss + # loss = tf.divide(totalALoss, totalActionNum) + return totalALoss return loss @@ -358,7 +358,7 @@ class PPO(object): Returns: np.array: actions, - actions list,2dims like [[0],[1],[1.5]] + actions list,1dims like [0,1,1.5] predictResult, actor NN predict Result output """ @@ -392,8 +392,9 @@ class PPO(object): if math.isnan(thisMu) or math.isnan(thisSig): # check mu or sigma is nan print("chooseAction:mu or sigma is nan") + print(predictResult) thisDist = np.random.normal(loc=thisMu, scale=thisSig) - actions.append(np.clip(thisDist, -self.conActRange, self.conActRange)) + actions.append(np.clip(thisDist, -self.conActRange, self.conActRange)[0]) lastConAct += 2 return actions, predictResult @@ -534,7 +535,7 @@ class PPO(object): ) scorefile = open(score_dir, "w") scorefile.close() - print("Model's Weights Saved") + print("PPO Model's Weights Saved") def loadWeightToModels(self, loadDir: str): """load NN Model. Use "models.load_weights()" method. diff --git a/Aimbot-PPO-Python/aimBotEnv.py b/Aimbot-PPO-Python/aimBotEnv.py index b55ec7e..a78e050 100644 --- a/Aimbot-PPO-Python/aimBotEnv.py +++ b/Aimbot-PPO-Python/aimBotEnv.py @@ -74,7 +74,7 @@ class makeEnv(object): continuousActions = np.asanyarray([[0.0]]) else: # create continuous actions from actions list - continuousActions = np.asanyarray(actions[self.DISCRETE_SIZE :]) + continuousActions = np.asanyarray([actions[self.DISCRETE_SIZE :]]) if behaviorName is None: behaviorName = self.BEHA_NAME @@ -154,7 +154,7 @@ class makeEnv(object): self.statesBuffer[-1] = state # return stacked states - return self.statesBuffer[self.STACK_INDEX] + return np.reshape(self.statesBuffer[self.STACK_INDEX], (self.STATE_SIZE)) def render(self): """render enviroment""" diff --git a/Aimbot-PPO-Python/testarea.ipynb b/Aimbot-PPO-Python/testarea.ipynb index ba25b81..aa4369e 100644 --- a/Aimbot-PPO-Python/testarea.ipynb +++ b/Aimbot-PPO-Python/testarea.ipynb @@ -431,32 +431,178 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 54, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "[0]\n" - ] + "data": { + "text/plain": [ + "array([0, 1, 2, 0, 1, 2, 0, 1, 2])" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ "from collections import deque\n", "import numpy as np\n", "\n", - "ss = 1\n", - "si = 0\n", - "buffersize = ss + ((ss-1)*si)\n", - "print(buffersize)\n", - "stackedStates = deque([[0.0] * 10]*6, maxlen=3)\n", - "stackedStates.append([1.0]*10)\n", - "ssnp = stackedStates\n", + "aa = np.array([range(0,3)]*5)\n", + "np.reshape(aa[[0,1,2]],(9))" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "300\n", + "256.1\n", + "[300, 256.1]\n", + "300\n", + "256.1\n" + ] + } + ], + "source": [ + "# 変数を設定\n", + "ringo_int = 300\n", + "ringo_float = 256.1\n", + "ringo_list = [ringo_int, ringo_float]\n", "\n", - "aa = list(range(0,buffersize,si+1))\n", - "print(aa)" + "# 型を確認\n", + "print(type(ringo_int))\n", + "print(type(ringo_float))\n", + "print(type(ringo_list))\n", + "\n", + "# 値を表示\n", + "print(ringo_int)\n", + "print(ringo_float)\n", + "print(ringo_list)\n", + "\n", + "# 配列から要素を取り出す\n", + "print(ringo_list[0]) # ここでエラーになるという。どぼじで???\n", + "print(ringo_list[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "dirrr = \"GAIL-Expert-Data/1014-1302/pack-24957.npz\"\n", + "\n", + "memFile = np.load(dirrr, allow_pickle=True)\n", + "states = memFile[\"states\"].tolist()\n", + "actorProbs = memFile[\"actorProbs\"].tolist()\n", + "actions = memFile[\"actions\"].tolist()\n", + "rewards = memFile[\"rewards\"].tolist()\n", + "dones = memFile[\"dones\"].tolist()\n", + "memNum = len(states)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\UCUNI\\AppData\\Local\\Temp/ipykernel_39608/3742051961.py:3: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n", + " npact = np.array(actions)\n" + ] + } + ], + "source": [ + "states = np.reshape(states, (24957, 90))\n", + "\n", + "npact = np.array(actions)\n", + "\n", + "last = npact[:,3]\n", + "newlast = []\n", + "last[2][0]\n", + "for i in range(len(last)):\n", + " newlast.append(last[i][0])\n", + "\n", + "#print(newlast)\n", + "npact[:,3] = newlast\n", + "\n", + "statesNP = np.asarray(states)\n", + "actorProbsNP = np.asarray(actorProbs)\n", + "actionsNP = np.asarray(npact)\n", + "rewardsNP = np.asarray(rewards)\n", + "donesNP = np.asarray(dones)\n", + "thisSaveDir = \"GAIL-Expert-Data/1014-1302/pack-24957-RE.npz\"\n", + "\n", + "np.savez(\n", + " thisSaveDir,\n", + " states=statesNP,\n", + " actorProbs=actorProbsNP,\n", + " actions=actionsNP,\n", + " rewards=rewardsNP,\n", + " dones=donesNP,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(actions)\n", + "npact = np.array(actions)\n", + "\n", + "last = npact[:,3]\n", + "newlast = []\n", + "last[2][0]\n", + "for i in range(len(last)):\n", + " newlast.append(last[i][0])\n", + "\n", + "#print(newlast)\n", + "npact[:,3] = newlast\n", + "print(npact)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1. 2. 3. 1. 2. 1.]\n", + " [2. 2. 3. 2. 2. 1.]]\n", + "tf.Tensor(\n", + "[[1 2 3 1 2 1]\n", + " [2 2 3 2 2 1]], shape=(2, 6), dtype=int32)\n" + ] + } + ], + "source": [ + "from matplotlib.pyplot import axis\n", + "import tensorflow as tf\n", + "import numpy as np\n", + "\n", + "aa = np.array([[1,2,3],[2,2,3]])\n", + "bb = np.array([[1,2,1.],[2,2,1.]])\n", + "print(np.append(aa,bb,axis=1))\n", + "print(tf.concat([aa,bb],axis=1))" ] } ],