{ "cells": [ { "cell_type": "markdown", "id": "c915ebcb-0688-41fb-98d1-02b34f29c9e4", "metadata": {}, "source": [ "# Two Ways to use R with Studio Lab\n", "\n", "\n", "[![Open In Studio Lab](https://studiolab.sagemaker.aws/studiolab.svg)](https://studiolab.sagemaker.aws/import/github/aws/studio-lab-examples/blob/main/custom-environments/R/1.InstallR.ipynb)\n", "\n", "1. Install the R kernel so an entire notebook can start with that.\n", "2. Use the `rpy2` package to run R jointly with Python in the same notebook.\n", "\n", "This notebook will demonstrate both approaches and also show how to use Python and R namespaces together. Some basic R code is also provided. " ] }, { "cell_type": "markdown", "id": "d75970f2-5e53-44e6-ac7c-b18b81da420c", "metadata": {}, "source": [ "## 1. Installing the R kernel\n", "\n", "Installing this will enable notebook to use an R kernel. Please run the following command or use `R.yml` to build the environment. " ] }, { "cell_type": "code", "execution_count": 15, "id": "4a0a50a9-7d1b-423a-832a-49fba96e3065", "metadata": { "tags": [] }, "outputs": [], "source": [ "%conda install -c r r-irkernel -y" ] }, { "cell_type": "markdown", "id": "9c1c5943-dd74-4cfd-87f0-4c6858a2ae68", "metadata": {}, "source": [ "After executing this, you will see the R kernel appear in the Launcher page. \n", "\n", "You can open a new notebook with the R kernel and then use R. See the notebook `SampleR_NB.ipynb` for some code examples, also replicated below with the second approach to using R in Studio Lab. \n", "\n", "Or, you can run R in a Python notebook with the following approach. " ] }, { "cell_type": "markdown", "id": "04cc3f3c-7382-4260-8ca8-d16bd34b530a", "metadata": {}, "source": [ "## 2. Using the `rpy2` package\n", "\n", "The benefit of this approach is that you can use Python and R in the same notebook interoperably. " ] }, { "cell_type": "code", "execution_count": 16, "id": "971fc50c-9d23-46ca-88b7-78390ffae102", "metadata": { "tags": [] }, "outputs": [], "source": [ "%conda install -c r rpy2 -y" ] }, { "cell_type": "markdown", "id": "338fd983-1518-4b09-952c-dfd286daa2cf", "metadata": {}, "source": [ "Now you can load up R with the following magic command: " ] }, { "cell_type": "code", "execution_count": 17, "id": "907fe372-b80f-4ce3-9968-1db0a5a30246", "metadata": {}, "outputs": [], "source": [ "%pip install numpy\n", "%pip install pandas\n", "%load_ext rpy2.ipython" ] }, { "cell_type": "code", "execution_count": null, "id": "3de8e37d-a1e3-421a-9df0-3c3e3fa31dfc", "metadata": {}, "outputs": [], "source": [ "# restart your kernel manually to use the new packages" ] }, { "cell_type": "code", "execution_count": 18, "id": "19370fd0-80b6-46f8-a248-f948c99dcce8", "metadata": {}, "outputs": [], "source": [ "%reload_ext rpy2.ipython" ] }, { "cell_type": "markdown", "id": "2b49a4c4-5049-4ac2-ae02-a11d6fc5db30", "metadata": {}, "source": [ "Now, try R to make sure it works. In order to designate a code block as R, use the magic command `%%R` at the top of the code block as follows: " ] }, { "cell_type": "code", "execution_count": 3, "id": "9317aa96-1522-4ae9-a404-60fdb6989f37", "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R\n", "x = rnorm(1000000) # generate a million random normal variates\n", "hist(x,100) # plot a histogram with 100 bins to make sure graphics are also working\n", "grid()" ] }, { "cell_type": "markdown", "id": "32a0c5e3-79a5-4736-a36f-22a387ab5829", "metadata": {}, "source": [ "## Sending data from the R namespace to the Python namespace\n", "\n", "You can even send data from R to Python using the following approach.\n", "\n", "The following blocks of code are in Python. " ] }, { "cell_type": "code", "execution_count": 4, "id": "0dd7f2cb-866f-4a54-a55d-146cb047468a", "metadata": {}, "outputs": [], "source": [ "x = %Rget x" ] }, { "cell_type": "code", "execution_count": 5, "id": "4cb39df1-9381-4174-8a6e-ca0dfcbd7d1a", "metadata": {}, "outputs": [], "source": [ "%%capture\n", "# Install some Python libraries\n", "!pip install matplotlib\n", "%pylab inline\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 6, "id": "9c432aa2-ec76-4849-9eec-3ef844dc7fff", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0011452776011201908\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "print(mean(x))\n", "hist(x,100)\n", "grid()" ] }, { "cell_type": "code", "execution_count": 7, "id": "e81e0398-1580-49df-846f-40c6b0db2575", "metadata": {}, "outputs": [], "source": [ "y = rand(10000) # These are uniform random numbers" ] }, { "cell_type": "markdown", "id": "664d2f2d-f525-4c75-ba21-243d525ece07", "metadata": {}, "source": [ "Send y from the Python namespace to R" ] }, { "cell_type": "code", "execution_count": 8, "id": "36895d6e-d3dc-4af2-b52d-dac01ea655cc", "metadata": { "tags": [] }, "outputs": [], "source": [ "%Rpush y" ] }, { "cell_type": "markdown", "id": "4efee000-0a75-4c15-97a9-80b6dd2758a7", "metadata": {}, "source": [ "Now use R again: " ] }, { "cell_type": "code", "execution_count": 9, "id": "d2d621dd-016e-40ec-be8f-a5d62b5385b8", "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R\n", "hist(y,100)" ] }, { "cell_type": "markdown", "id": "af55753b-b0db-4bd3-91d4-5002ee515a88", "metadata": {}, "source": [ "## Now back to doing everything in R\n", "\n", "Let's install some libraries. \n", "\n", "Remember to add the magic function `%%R` at the top of each code block. " ] }, { "cell_type": "code", "execution_count": 19, "id": "1e865897-288f-4fa2-9427-91388e2d51c6", "metadata": { "scrolled": true, "tags": [] }, "outputs": [], "source": [ "%%R\n", "# this line will prompt you to pick a CRAN mirror. please type in 77 in the selection bar below and hit return\n", "install.packages(c(\"quantmod\", \"magrittr\"))" ] }, { "cell_type": "code", "execution_count": 20, "id": "b9dc1c5e-ef6e-4304-b41e-f625a32e78ac", "metadata": {}, "outputs": [], "source": [ "%%R\n", "library(quantmod)\n", "getSymbols(\"^GSPC\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "107bae08-3cf9-4f67-ba68-b9dc6620f68f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted\n", "2007-01-03 1418.03 1429.42 1407.86 1416.60 3429160000 1416.60\n", "2007-01-04 1416.60 1421.84 1408.43 1418.34 3004460000 1418.34\n", "2007-01-05 1418.34 1418.34 1405.75 1409.71 2919400000 1409.71\n", "2007-01-08 1409.26 1414.98 1403.97 1412.84 2763340000 1412.84\n", "2007-01-09 1412.84 1415.61 1405.42 1412.11 3038380000 1412.11\n", "2007-01-10 1408.70 1415.99 1405.32 1414.85 2764660000 1414.85\n" ] } ], "source": [ "%%R\n", "head(GSPC)" ] }, { "cell_type": "code", "execution_count": 13, "id": "7da46c02-f2c1-4996-8882-b01d9aa828fa", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAIAAADytinCAAAgAElEQVR4nOzdd3wUZeI/8M+2ZNN7J5SEAAERJBRBQAQ8ECkCForCceehYvtZDisqiiLnoXJixcZXQAHpKCBdpYj0FmoIJCE92bTN9vn9MUMSlk12kCS72Xzef9xrM/vMPM/MxQ9PnnnmGYUgCCAiIvejdHUDiIjIMQY0EZGbYkATEbkpBjQRkZtiQBMRuSkGNBGRm2JAExG5KQY0EZGbYkATEbkpBjQRkZtiQBMRuSkGNBGRm2JAExG5KQY0EZGbYkATEbkpBjQRkZtiQBMRuSkGNBGRm2JAExG5KQY0EZGbYkATEbkpBjQRkZtiQBMRuSkGNBGRm2JAExG5KQY0EZGbYkATEbkpBjQRkZtiQBMRuSkGNBGRm2JAExG5KQY0EZGbYkATEbkpBjQRkZtiQBMRuSkGNBGRm2JAExG5KQY0EZGbUru6AZIzZ84cP37cYrG0aNGia9euvr6+4va0tLSjR4+aTKaa29esWVNcXAwgICAgOTm5Y8eOVcdJTU09fvy4UqlMSEjo0qWLUin9C7Rv3z6tVnvzzTc3cr017dq16+zZsyNHjgwNDb322927d1+6dGncuHEAfvzxx8jIyP79+8u/gMuXL4+Oju7Xr5/M8jWrIyL35PqA1uv1r7322o4dO6q2+Pn5vfPOO7fddtuCBQu++OILQRDE7W3btv3hhx8ALF68OC0trar8Qw899PTTT+v1+ldfffXXX3+t2p6QkPDNN9/4+fmdOXNm0aJFPj4+FoulU6dO3t7ejVNvzdMUBGH27Nk5OTkKhWLy5MnXXoedO3du2bJFTMyFCxd27tz5ugL6m2++SUlJkR/QNaujxqTT6d56663U1FQAXbt2ffnll/39/QGcP3/+tdde0+l0LVq0mDVrVkREhMONhYWFDz30kHgog8Hg7e29YcMGuyocHmru3Lnbt2/PyclZtWpVfHz8tQ1zuNeTTz6ZlpYmCELr1q1ffvnlFi1a2O21bNmysrKyf/7zn9d7drWVdNpOhwXq3qu2upyenesJrvbGG2+kpKTMmTPn4sWLpaWlx48fnzlz5rfffqvT6bp37/7444/n5+dXVFQcPHjwyy+/FHe57777xo8fb7FY8vPzp0yZkpKSUlxcLB7nvffey8jIKC4u3rlz59ixY3NzcxcuXJiSktK9e/eePXumpKR8/PHHjVOv3Wn++eefKSkpKSkp9913X83tR44cWbx48a5du/7zn/8MHDhQ3Pj3v//93XffFQRh4cKFf/75p7jxt99++/7778XPRqPxl19+Wbx48c8//5yXl7d169b+/fuPHz/+m2++WblypVgmKytrxYoVa9asuXz5ct3VUWMqLCzcuXOn1Wq1WCyvvPLKe++9J26fNGnSpk2bBEH46quvXn755To2Vpk7d+77779/bRUO9zp06FBubu7AgQMvXbrksGEO98rOzhY/fPvtt88888y1ez3++ONnzpz5C2dXW0mn7XRYoO69aqvL6dm5nIt70MXFxT/99FNKSsr06dPFLZ06derUqZNer8/JyREEoV27duHh4QBuueWWW265pea+KpUqPDy8a9euR48eTUtL++mnn7p16/b888+L3/bv379bt25qtfrbb7+9/fbbIyIiIiIi7rjjjsLCwsap1+5Mf/rpJwB33nnn5s2bT548KQ6P/PDDD//973+VSqXNZtNqtWLXHkBBQUFJSQmA+fPnT5gwoXv37gC2bNny22+/jRs3rrKyctKkSRcuXPD29jYajT179oyLi6usrMzIyFixYkWLFi1Gjx69ffv2l156yWKxKJVKrVb7wQcfpKSk1FYdNabQ0NCqv426deu2e/duADk5ORkZGYMHDwZw7733DhkyxGaz5eXlXbuxavTMYrFs2LDh008/tTu+w0MplcquXbvW0ara9oqOjgYgCILVar12L71ef/ny5aSkpL9wdg5LAqi7nbUVqHuv2uqq++zcgYsD+syZMzabrXfv3uKPq1atEoMpPj5+wIABCQkJ//d//7d3796uXbv279//1ltvrdqxpKRk3bp1Op1uzZo1gYGBFRUVNputT58+NQ8u/hWjVCqLi4s1Gk1ERERCQkJCQkLj1FuTwWDYunXrzTffPGXKlM2bN69fv75jx44VFRWffvppt27d5s2bd/78+YcfflhmYp44ceLChQuzZ8++8847S0pKTpw40adPn127dqWkpLz11ltidbNnz+7QocP777+vUqmmTZv23nvvffXVV3+tOmogVqt1zZo1DzzwAIDc3NyoqCgxfAMDAzUaTWFhocON4sgDgN9++y0mJqZt27Z2h617r9rUsddTTz11+PDh8PDwjz/+2G6v3bt3V/1HdL1nV9WkmiUb2rV11XF27sDFsziMRiNqJNqiRYvmz58/f/78devWqVSqL7/88h//+AeAH3/88YknnnjppZeqdszNzZ05c+a8efNCQ0P/85//CIIAR8kI4Mknn0xNTd2yZcvChQtfeeWVvLy8xqm3ph07duj1+qFDh7Zr1y4hIeGXX36xWCynT5+uqKgYN26cj4/PTTfd1KNHD5kXTfxd/+KLLz799NPMzEy7fx4AnDlzpqioKCEhYfv27Vu2bImLizt37tzhw4f/WnXUEGw228yZM5OSkoYNGwZAEASFQmFXxuHGKuvWrRsxYsS12+veqzZ17PW///1v+/btQ4YM+frrr+2++vXXX2+//fZrd5Fzdg5LNiiHddVxdu7AxQEt/iuakZEh/rhixYr9+/dX5V1gYOC0adOWLFmyZcuWAQMGbN68+cSJE+JXCQkJmzZt2rVr1/Lly7t37253nJpGjRq1du3afv36RUVFiX/4N069NYnjGxUVFatXr46MjNTpdL///nt5eTmA4OBgsUxISMi1O9b8tRau3LSMj49///33w8LCFi5cOHny5Dlz5tjtJf41sHnz5o8++uijjz7at2+fv7+/2Mi6q6PGIQjCrFmzBEF4+eWXxS3R0dE5OTk2mw1AaWmp2WwOCwtzuFEsX1RUtH///iFDhog/rly58p577rnnnnu2bdtWx1525O+lUqlGjx69cePGmrvbbLajR49269btr52dw5JO2+n84tayVx11OTw7N+HigG7fvn1kZOS6desKCgrsviotLRV7uwACAwN79uwpbhS3qNXqsLCwqj/SHR5n06ZNRUVFJSUlERERLVq0GDp06L333nv8+HFBEBqhXpvNJv5GFhQU/PHHHwA+/vjjWbNm7d27F8D69evj4uIAXLp0SdwrPT392usjjqKIn7Ozs8UPRqOxb9++n3322fbt2/v3779ixQqTyaRWq8XqALRq1QrAo48+uuOKrVu3il3muqujRiAIwttvv11ZWTlz5syqAeXo6OgWLVps2bIFwI8//njHHXeI47/XbhTL//zzz3379g0MDBR/HDNmzOrVq1evXj1w4MA69rLjdK/S0lLx98Rms61ZsyYxMbHm7ocPH+7YsaPd7Rb5Z+ewpNN2yr/ONfdyWFfdZ+cmXDwGrVQqp0+fPn369Pvvv3/w4MHh4eGXLl3S6/UqlSonJ2fy5Ml9+vRJTEysrKxcv359YGBgp06d6j7OuHHjBg8e7O/vf/To0YMHD65du/bBBx+85557Lly4YLPZLly4kJSUpFAoFApFg9b7888/P/HEE4cPH969e/eGDRtsNtuMGTOqRutmzJjx+++/z5gxo3PnzgsWLAgMDDx79uzJkyeDgoLsjt+1a9ft27f36NHjwoULBw8eFAts3bp12bJlffr08ff3T09PDw8P9/Lyio6OPnbs2LJly4KDg//2t7/179//448/zsrKiomJuXz58tGjRxcvXuy0OmoEp0+fXr16dVhY2PDhwwGItwoAzJgx4/XXX583b15cXNysWbPEwg43Ali3bt3TTz9dWxUO95ozZ87OnTvLysoefvjh2NjYb775xuleBoPhtddey83NValU7dq1E+9wVHE4viH/7Gor6bSdDgvUvZfDuuo+OzehqPrD2YUOHjz49ddfHz9+3GAwxMbGDhgwYNKkSUqlcsGCBbt3787Ozvb19e3YseNjjz2WnJwM4P7771er1UuWLLE7zv79+7/66qsTJ04oFIo2bdqMGTNm+PDhH3744a+//nr58mWlUtmxY8dXX31VvE/YoPWOGDHi8ccfFwN6/PjxRUVFP/30U1VfY9u2bWKs9+nT54033jhx4kRcXJxWq83Ozt66dSuAESNGdO7c+Z133rl8+bJYID4+XqlU5ubmbt269eTJkx988MHp06cFQejQocOzzz6bnJx88ODBd955JyMjo0WLFitWrNDr9Z9++umOHTsKCwvj4uKGDh36z3/+MzMz02F1RH/B/fff/9VXXwUEBLi6IZ7MLQK6EfznP/8JCwurmk7v5u66667evXu/9tprrm4IEbmS658kbBx1D3K5j6KiolWrVhUUFLjniBgRNabm0oNuKo4dO/bII49079599uzZdg+LE1Fzw4AmInJTTeMPfyKiZogBTUTkphjQRERuigFNROSmGNBERG6KAU1E5KYY0EREbooBTUTkphjQRERuigFNROSmGNBERG6KAU1E5KYY0EREbooBTUTkphjQRERuigFNROSmGNBERG6KAU1E5KYY0EREbooBTUTkphjQRERuypUBffHiRZPJ5LRYdnZ2WVmZ02I2m+3cuXNy6j1z5oycYoWFhYWFhU6LlZeXX758Wc4BL1y4YDabnRZLS0uzWCxOi1mt1vPnzzstJgjC2bNn5TRP5nUuKyvLycmRc0CZ11lmMZnX2WQypaenyzmgzOucmZmp1+vlHLB+z7e0tFTOdbZarWlpafVYb0ZGRmVlpdNi8q+zzF8/mde5uLg4Ly9PzgHPnTtns9mcFqvjspw6heXLIe+yNRRXBnRBQYHRaHRaTKfTVVRUOC1mtVpzc3Pl1CszT0tLS+UEll6vLy4ulnPA/Px8Of8g5efny8lxi8Ui5zfVZrPJzFOZ17miokKn08k5oMzrLLOYXq+XU6/JZMrPz5dzwLy8PDnXubi4WE5gob7PV+Z1NpvN9ftrX1RUZDAYnBaTeZ0FQZBZr8zrXF5eXlpaKueAOTk5cgK6jubNnIn778fnn8upraFwiIOIyIGSEgCQ9wdAQ2FAExE5UFEBHx98/70r28CAJiJyQK+Htzf8/FzZBgY0EZEDRiOCglzcBgY0EZEDBgPeftvFbWBAExE5oNejVSsXt4EBTURkz2JBcTFCQlzcDAY0EZG91FQolejQwcXNYEATEdkrLkZoKFQqFzeDAU1EZK+8HBqNqxvBgCYiutaZMwxoIiK3dOEC1GpXN4IBTUQkqqzEiRPS5wMHMHSoS1sDgAFNRCT6/nsMGiR91ulw++0ubQ0ABjQRkWj3buTmQlxeu7wcAQGubhADmohIdPEiAFy6BAAGA7Ra1zYHYEATEYnEN1uIb60wGuHt7drmAAxoIiIAly5BfIXc+fMQBPagiYjcxowZEF+59d13yMyE2ez6lZIAuMFMPyIiVzt2DEolEhJQUIBLlxAUBB8fV7eJPWgiIgBFRQgOxrBhSE/HBx+4xQA0GNBERNnZyM9HcDC6dAGAQ4cY0ERE7uGTT6DXQ6tFx44AoNe7xXPeYEATUTN3/DhmzQIALy9p5obZ7PqFRkUMaCJq1s6dkz54e0s3BisroXSPaHSPfjwRkYvo9QBw66146CGpB63XswdNRORqBQXekyfD3x9Tp2LatOqpdQxoIiIXS0vzs1jQrRumTAFQ/fQgA5qIyMUyM30BBAVJP1b1oN3hdSpgQBNRc7Z2bQwAPz/pR40GY8YAQJs2rmtTDQxoImq+TCYVAC+v6i0TJwLA88+7qEFXY0ATUfNlNitwdUCLj6hwiIOIyMVMJqVafVUciwHNJwmJiFzMaFSFh181Z6NdOyiVV/WpXYgBTUTNVHY2TCZFmzZXBXTbtti8GQkJrmtWDQxoImqmdu1CmzYVcXH2s54HDnSXR73doxVERI2uoABhYSYfH3d5LOVaDGgiao5ycvDf/0KrtcbGIjzc1a2phXvcqiQialybNuH8ebRpY3v3XVc3pXbsQRNR8zJqFC5dwpYtABAZaXR1c+rCgCai5mXHDqSlYft2APD1tbq6OXVhQBNRM/LhhygtxfnzKC0FAK2WAU1E5B5ycgDgjTdQVgYwoImI3MTmzVi6FAAyM9GlC4KCoNXaXN2oujCgiai52LMH6enS5xdfREgIfHzYgyYicgOVldWfg4MRGYnQUM7iICJyA2YzAHTrBgBRUfjjD3ToUObaJtWNAU1EzUV+PnDlBVchIa5tiywMaCJqLvbsQfv2iIoC3GZJ/roxoImouUhPx+zZCAwE4C4rPteNAU1EzYLNBrMZKSlQKnHHHe67QFJNDGgiahYMBgDQaqFUonVrKBSubpAMDGgiahZ0OgDw94dK5S6vHHSKAU1EzcLx4wgNha8vlMqmcYcQXA+aiJqJkhIkJgJAZKQ0Idr9Oe5Bm83mMWPGvPHGG+KPu3fvHj169MiRI5cvXy5/CxGR+ygpkWZAv/wyXn+9Qaqo9+R03IP+7rvv2rdvL3622Wxz5sz55JNPQkJCJkyYMHDgwJCQEKdbwsLC6vfMiYhuREmJNMGu4dR7cjroQefk5Bw9enTw4MHij6mpqTExMXFxcb6+vv369du1a5ecLQ17GYiIrlNVD7qBNERyOgjoDz/88Iknnqj6MT8/PzIyUvwcGRmZn58vZ0v9njkR0Q2qqIC/fwMevyGS036IY+/evaGhoW3btr148aK4RRAEQRCqPisUCjlb5JxPZWVlWlqat7d33cXy8/PLy8t14hyZ2lmt1vLy8lOnTjmtV6/XyylWVFSkUCgM4uTJ2pWXl1dUVMg5YElJyfnz572cPcBUWlp67tw5jbPbzBaLpayszGm9NptN5mWReZ3LysqcXhORzOsss1h5ebmckiaTqaSkRM4BZV7nwsJCs9ksp89Rv+cr8zrL/DWQX29RUZHNZsvNza27mMzrLAiCzP86ZF7nkpISi8VisVicHrC8vPzMmTNKZXUfND8/SqUSTp3Kq1nM6WUJCwuLiIhwWl0DJad9QB89enTHjh2//fabwWAwGAyBgYFDhgzJy8u7cob5SUlJkZGRTrc4PR8AGo0mMDDQ19e37mJlZWX+/v4hzpY2sVgsubm5TosBUKvVcooZjUaFQuG0pEKhsFqtcg6Ym5sbFBSk1WrlFHP675b42+y0XpvNdvnyZTnNk3mdxV+jerzOMospFAqbzea0ZGVlpU6nk3PAnJwcOddZp9MFBAQEyhi8rN/zlXmdTSaTnF8D+fUWFxcHBgb6O+tqyrzOgiBkZmbKqVfmdbZYLGazWc4Bs7KygoODVSpV1RaVSuvnZ/8r5PSyOA0oUQMlp31AT506derUqQC2bt3622+/PfvsszabLTs7W7zKv/766+TJk0NDQ51ukXNKarU6PDw8ICCg7mJFRUUhISFR4gIntTObzenp6U6LAfDy8pJTTK/XKxQKpyUVCoXFYpFzwIsXL4aHh/v5+dVdLD09PSIiwsfHp+5iRqMxIyPDab1Wq/XcuXNymifzOovBUY/XWWYx8R9CpyXLy8vz8/PlHPDChQtyrnNeXl5oaKicm971e742m03OdTYYDJmZmfVYb05OTmhoqNMElHmdBUE4ffq0nHplXmeTyWQ0GuUc8OzZs5GRkeorT6QcO4aMDPTqhaioq/4DlHlZnGqg5HQ+D1qpVE6fPn3atGlWq3XSpEnh4eEA5GwhInITzz6LrVvRv3/j1VgvyVlrQA8aNGjQoEHi5759+/bt27fmt3K2EBG5iXPnACA6usErqt/k5KPeROThBEF6mfewYa5uynViQBORxzIa0bo1liyRlrKrccuwaWBAE5HHKizExYuouvfGgCYichc7dgCA1Sr9yIAmInIXdg/cOHsIwe0woInIY+XmSmvzK5Xw84O8h07cCAOaiDyWToeEBAAID0d2dtN4zVVNDGgi8lglJRAnGXt5wdkzy+6IAU1Enumll5Q//CCNOzeVlxDaYUATkWc6dEgBQFwOiwFNROQu0tN9s7IAQFwOiwFNROQuli6NPXVKASA+HgCa6Dv4GNBE5IEMBumhlJAQxMSga1fXNucvYkATkQcym6UpdVot/va3pvcMoYgBTUQeyGqVAlqthlrNgCYichueEdBN89YmEVHtjEbk5Xm3by+cPq3w9cXo0XD27kk3xR40EXmakydx/rzfoEECAD8/DBmCAQNc3aa/hAFNRJ5GXMSuTRsATW+BpJoY0ETkUcrLMX8+AGnxDT+/uou7NQY0EXmU48fx008A4O8vAE1yjaQqDGgi8hwmE+bMkT5HR2PPHgQHu7RBN4azOIjIc5w/j9WrAWDQoIJbbgkODXV1g24Me9BE5DmMRgCIisLUqemBga5uzQ1jQBOR5ygqAoBOnRAba3B1W+oBA5qIPEdmJtBkFxe9FgOaiDyH0QiFomnP3KiJAU1EHkKvx8cf4847sXChq5tSTxjQROQhPv4YR47Ax6dpP5xSEwOaiDyEeIdw0iRXt6P+MKCJyEMUFwNAy5aubkf9YUATUVMlztmoUloKoKku/ewQA5qImqqUFBw7Vv1jSQkAaDSuak79Y0ATUVNlMEiPDoouXACAmBhXNaf+MaCJqKmyWGCzVf9YXo6kJISFua5B9c1THrghoubHYoEgAEBREYKDkZWFBQtc3aZ6xR40ETVVYg/aYkFsLE6fhs2GTp1c3aZ6xYAmoiZJTGebDeXlMBpx8SIUCvTo4epm1SsGNBE1SUePAoAgoKICAM6eRWgolJ4VaZ51NkTUbKSnA4DNJgV0YaFH3R4UMaCJqEnS64EaAZ2Z6VGPqIgY0ETUJOXnAzUC+tQpz1kGugoDmoiaJPERFUGQPuza5YE9aI/7F4eImgeTCQAsFlit0hYGNBGRW6isBACjkQFNRORmxMVFDQZPDmiOQRNRk1RYCACVlTAa0aEDwIAmInITYkB//z2OHpVWsGNAExE1IKv1qiWeayMISE+HWo1Nm3DoELy94e/vaY8RggFNRG7l7bcxaJDzYj//jAsXEB0NAMePQ6WCry970EREDWnbNuh0zosdO4bISHTpAgAFBVCroVR6YEBzFgcRuZGKCpjNsNmcjFecO4chQxAYKP0oLpPkeQHNHjQRuYuCApw6BVx5CKUO27ZBrYaPj/TjoEFQKDzwUW+POyEiaprOnFFlZqK8HABMJmi1dRUuLoaXV3VAp6RAqfTAgGYPmojcwvvv+0yYIOWy0x60Xo/x43HPPYiLg0qF9u0Z0EREDaa0VGGxSBMz6g5oiwUmExIT0a0bOnSAvz8UCo5BExE1GKNRAcDPDwDM5rpKlpUBgL8/AISESB+USmlfT8KAJiK3kJurBODlBY3GSQ+6oABeXtIUjpAQeHsDgFKJ4OBGaGajYkATkeuVlqrOnVMB0Gjg5eUkoKdPR0yMNA8vJgYaDQAoFAxoIqIGcOaM1maTpsrVHdAWi2L1akRFST+Gh0v3Brt0kZZM8iQed9eTiJqghQvDW7a0FhSoNBpoNHWNQZeWKoHqCXYqlRTQy5Y1QjMbGwOaiFysqAinTvmEhwsWC/z8nPSgc3PVAEJDpR+VSmkM2iNxiIOIXOzPP5Gbq+nRwzJ4MOLiHAd0Whr69weAy5fVACIipO3JyRgypDEb26jYgyYiF1uzBgCmTDGkpmqDg7FzJywW+zLp6Th4EACOHfMGpBuDAG6/Hbff3nhNbWQMaCJysfR0PPlkbqdOarGPPHNm9Vusquh0MBgAwGhUdOiAqVMbu5EuwSEOInKx4mLExFQPaiiVsNkclLFaYTAoTCbFXXfh5psbtYWuwoAmIleyWnHgAFq3dhLQ4ju8KyoUx49rvbwasX0uxYAmIlfKyYHFgqSkyqotDgNaHPQ4fVpz8KC2agDa4zGgiciVTpxAbCy8vYWqLSqVgzFoMbJ1OhXggavW1YYBTUQus3YtRoyofjGKyGEP+kpAKwG0bt0ojXMDDGgicpmsLJhM8PW9amMdQxyZmaqYGMuDDzZS81yOAU1ELiNObe7c+aqNKhVefNG+pDgzev78wM6djZ637nNtGNBE5Br79+PLLwFg4MCrtgcEoLjYvnBurvTB3/+a8WnPxYAmItcQ190HqpemE3l5ORjiqFo+yd//mu88FwOaiFxj1SokJSE0VHolShWFwkFAV63O4esr2H/nuRjQROQav/yCCROwbRt69bpqu8ObhFU9aLW6GQV0s5lPSETuJC0N58/joYeQmGj/lcOANhqlD81nEjTYgyYil8jIQFycg3RGLUMclVeeNGxWPWj7gDaZTA8++OCwYcOGDx++ZMkScePu3btHjx49cuTI5cuXy99CRFSbwkJotY6/ctiDPn9e+lDzmUP30UDJaf/XglqtnjdvXlhYWFlZ2cSJEwcMGBAdHT1nzpxPPvkkJCRkwoQJAwcODAkJcbolLCyswS4FETV5+/bZP0BY5doetMGAs2elz+45i6OBktO+B61UKsUSgiD9M5WamhoTExMXF+fr69uvX79du3bJ2dI4F4WI3N/q1Rg2zH5jairGj3dc/toedGlp9SwO9wzoBkpOB+PtZrP5gQceyM7Onjp1amxs7JkzZyIjI8WvIiMj8/PzAwMDnW5piEtARE3O7t1hb70FgwFmMzQafPEF+vTBTTdJY9AOKZUAYLWi6onBmu+QDQhwx4BGwySng4DWaDQrV64sLCx87rnnhg0bJghC1b8JgiAoFAo5W+Scj16vP336tJeztV0LCwt1Ol1eXl7dxWw2W0lJydGjR53WW15eLqdYSUkJgNLS0rqL6fV6vV5vvXb1rWsUFxefOnVK42ypxOLi4tTUVLWze9VWq1Wn0zk9EUEQysrK5JyvzOtcUVFhMBhMdbzU8wqZ11A35RQAACAASURBVFlmMfE6W659FdLVTCZTUVGRnAPqdDo51zk/P1+v12dlZTk9YP2eb3l5udFodHqdLRaLnF8D+fXm5+cbjUZtbcPDV8i/zr/9FiTe39u//4Sfn3X69E4JCYY338w4dKhDZeX5o0crquqtus4lJS2B4EOHjnl5Saly+bIX0MHbWxg+PCc4OP3o0QKn9ZaWlh4/flypdDIPwulliYyMjI6OdlodGiY5a/3tDAsLa9++/YEDB1q1alX1H21+fn5SUlJkZKTTLXLOx9vbOyYmxtduoZRrWCyWwMBAp4Pa4m9qfHy803rz8vLkFFOpVABiY2PrLlZUVCSz3tLS0piYGJ+q98XXoqSkJDY21tvZm4pNJlNpaanTem02W2FhoZzmybzOhYWFZWVl9XidZRaTeZ31er3RaJRzQJ1OJ+c6G43GiIiIoKAgpwes3/MtKCgoLy93WtJkMtXv/x2VlZVRUVGBtQ0PXyHzOhcXY8OGEPFzeHhceLhQUaE6dcp3+/bWPj5Cv35hISHS27lrXmd/f18A0dHxfn7ClW9V3t7Yt6/Uy6vEZPKXcyKFhYUtWrRQOVu2w+llcfofrJ36TU77gC4oKLDZbJGRkQUFBX/88cfIkSOTk5Ozs7MzMzNDQkJ+/fXXyZMnh4aGOt0i50xUKlVgYGBAQEDdxXJycvz9/UNCQuouZjabNRqN02IA1Gq1nGI6nU6hUMip12AwyDmgl5dXUFCQn5+fnGJOfy2MRqOXl5fTeq1Wq8zLIvM6G41Gi8VSj9dZZjGz2Ww0Gp2W1Gg0ci4LZF9nrVYbEBDQ+OdrMBisVqvTkgaDQeb5yqxXq9UGBgbW13WuqKieceHjE5yaCosFFoti9Wrt4MFISAiuWW/VdRa77/7+wcFXvi8vR3g4br45KCOjVOaJaDSa4OBgp38hyTyaUw2UnPatLykpeemll8rKyry8vMaNG9epUycA06dPnzZtmtVqnTRpUnh4uMwtRNTMlZTAy8v22WfKf/0LBgOOHUO/fti1C2lpuOuuWvcS/6qpOZq1ciXkDTO4TAMlp31AJyYmLlu2zG5j3759+/bte71biKiZe+45RXi4YcoUn6eegsEAkwnBwbj3Xixbhj59at1LHPWseVunqMjdA7qBkpNPEhJRfbrzTjz9NACYTNi0CZGRRgA+PkhPlyZytG8PwH6BpJoeewy48goVqxWLFiE7G23bNnzT3Q8Dmojq8vzz2L5dbuETJ7BlC8TpvAYDAAQGmgH4+GDuXGRmwssL4jymOuaJiM9/iz3orCw89BCOH0fzHDdlQBORYzodcnPxzTcYOBCpqbJ2yckBAHFuqrjcs5+fFYBWix078MEH8PaWArqOHrQ480IMaPF/8/PhbDKBZ2pOC0MR0fWYOxf796O8HID0v3Wz2fDhh8CV+3s6HZRKJCWVo0Z/2dtbWo6ujukzCgWUyqsCGnC8rJLHYw+aiBzLy8PGjdJLXfV65+UPHMD69Rg6VHrwT6dDcDDGjMnClYkZAIYOlQK67kdhVCr7gHY2Yd0zMaCJyDFxATl/f7RpU71WUR0WLYJGg1deQWUlrFbMn1899aIqXjt1gq8v2rZFixZ1HUqlkkZIqgLa2bONnokBTdRcFBfjhReuo3xmJgC8+ir+9jf8+afz8vn56NIFcXEoLMQ77+C33/D449KDKlXx6uuLKVOwf7+TMWWVCsePA8Cjj0pb2IMmIk+Wlob33pMmV9TNZsMPPyAjA9Om4e9/h58fnC42YzDg0CG8+CJatoSvLxYtQkFB9eu6xXj190dEBDQaOH1yvmpBu99/v+oIzQ0Dmqi5MJkgCMjIcF5y0SKMHw+NBjNmICqqekS4Dk8+iVOn0LIlVCoEBuLsWZhM1akqfoiPl5uzKhUEQWqwKDi4zh08FAOaqLnIzQXg/HafTqcQ14S44w5pENnhK06u2QuANFvZxweCAEGoHtno3BlKJSZMkNtUlQo2G2ouM+dsUTXPxGl2RM2FmHdOhzgqK6VFL6umKjsNaEGQHk4JDQVqTKGrWhnsjTcwfrz0DKEcYg+65nIczpYl9kzsQRM1F+LgxqlTTort3Cn126pGilUqVFTgzBmsWuV4l7w8ZGcDVxL52oAGriOdcaUHLY6rjBiBkBD2oInIo128CABO37WwZo0XgJdfrp7yoVRi1SrExeHQIYwebV/eaMS0aQAQHCzNcR4xArm5KCiAs+XyayX2oMVue2wsCgsh7y0gnoY9aKLmIi2t+gk9cTzaTlYWiovVmzdrpkzBgw9Wv9RVzFmdDmVlOHoUdm/O++ILrFwJb2/cfbe05fXX0afPDQ1KiIMq4lr2gYHNNJ3BgCZqJs6f9z9/HgEBsFgwezbi45GWdlWBzZvRsSNOnfKx2fDee0hOrv5KXBzDYIDBgIUL8fXXV+24YgUAdOuGRYuqNwYGwtla+XURe9A7dkiHarYY0ETNQmmp2scHiYmwWvHmmzCbkZ5+VYHVq1FaimXLwnx8BLuVjMSALi9HRQXy86+acpeVhZ07odXC7rUksbFw9rapulRNswNuKOibOgY0UbNgMKgSE9GmDXQ6aSKH+Cx1FfGN0nv3BvTvb7GbrSxG5IEDKC9Hfv5VMzrKy+HlhUGD7OcpazQ32oO22aSAvpGgb+oY0ETNQlqaX0AANBppugWAQ4euKiCubVRZqfT3F+z2FaM2Px8VFSgtvSqg09Oh1cLPzz6gQ0LqYYhDXHSJAU1EHu7w4ZAHHoCXV/XTH2KXGYDRiAULsG8f7r8fAHx8HAc0AIsFBw9eNcTx3nto2xajRmHw4Kt2ufdePPPMX29tQkL1NLvmOQNa1IxHd4iak8pKVUQEvLywZ4+0pbhY+vD223jrLQDo3BkAAgPtAzoiAmq19NiIwXBVD/rECbRv7+ARwagoPPNM9YPa10ujkabZPfYYHnzwLx7EA7AHTdQslJWpQ0Kkt5mITp+GyYRffqlenaN1awAIC7OP1ZEjMXNm9Y9VAV1Ziby8BunhKhTQ62GzITGxma7CIWJAEzULFRWqoKDqMO3QAQUF2LEDDzwAgwEtW0KjQVISAIwb5+BRlpqPnIhDw4C0SPRddzVIg7OyYLX+9UddPEPzPnuiZsBiwahRKC3VhIZWB3RcHKxW6PUoK0NlJbp1Q2goEhMxY0ZmTIyDdTfEO3W33w5cWcgfQHEx4uNvaKy5NgoFbDbYbAxoIvJoZ85g7VrYbIqEBGmIQ6FAeDgsFhgMsFpRUoJBg7BiBdRqjB1b6PAgYlDGxgI1etCFhXW9WvBGiAFttTbrKRxgQBN5vLNnERyMu+7K9vKSetBvvYWJE2EyYeNGANixA61b47bb6jqIGNDiikXi3cLLl73vvfeqQe16JAa0xdLce9CcxUHk4dauRYsWeO65M0CsGNB33gmNBsXFWLhQKnPrrU4OIgax2F8uK0NZmaKiQiUIDRvQBQVXrYfXDDXvf56IPN3atfj66+pJypGRABARYT904PRFJ+IRxIDOy8Mvv6jMZgXQ4D1opy/H8mwMaCJPVlgIAEOGSD+K79IODa1+9kQcQ3Aa0O3aYdYs9O0r/Wg2w2RSANVvHax3+/cjK6u5j0FziIPIk2VmIjkZPXrg2DEAUKmkdwZWLTe6cCEyMpzPZVYq8corMJmwezeeeAJWq8JsVsXHXzU/uh4pFDhxAmjeKyWBAU3k2fR69O+PsDDpR6USvr5QKKqDr02b63hUz8sLvXsjLAxmM3Q6VVxcAw5xiJp5QHOIg8hj/fADlixBRET1FqVS6iyLwRcVhe7dr/uwGg3MZqSm+jfcSs1VAc0hDiLyQGvXYvx4AHj88eqNVQGt1UKhQNu2zkefr+XrC71eceSIf2JiPbX1GuxBi5r32RN5qIMHMXEiALRogfDw6u3x8bjzTgCIjMSGDTh48K8c3N8fFRUoKVFX3TOsdwxoUfM+eyIP9eefKC9H374ID78q49q0qZ77PGRI9eyO6+Lvj4oKhV6v6N+/HppaNw5xEJFH2boVzz2H1q3x5ZcICKj/4/v7Iy8PRqOygZ7zBnvQVzTvsyfyRH/+CT8/nDzZUAtlhIdj1y6lXq+qefuxfjGgRZzFQeRpzp3DlCkNlc4AgoJw7pzSy8sWHd1QVXAWh4gBTeRp/vgDvXo14PE1GlRUwMtLqIrRescetIgBTeRR3ngDx4+jffsGrEKjQVmZQqn8q++zkoEBLWJAE3mOoiLMng21Gi1bNmAtXl4QBDRoQFdp5kMczfufJyKPkJaGVaswdCgyM+Hjg/Pn4e/fgNWJj3c36ErNYg9aqURoaAPW4v4Y0ERNm06nHjwYej327MG2bYiJqV55o4GIzyI2aA9afL+4RsPlRomoabJakZWlOHIkUKHA4MFYsQLFxYiLa/B6G6EHHRICAP/6VwNW0SQwoImaqnXrMHy41/HjAffcg5QUaeO77zZ4veKNO5WqAXvQYvqL/ejmjAFN1CTNnYuJE3HqlOL772OSkqS3Bfbr91dWp7teYkBPnJjTcFWIAd3Mp3CAAU3URKWmwmyGvz9sNkVQEJ55Br6+mDy5MaoWhziSkiobrgoxoBtunnVT0ez/hSJqgoqKsGoVZs3C5cuWefPUw4cjIADbt6Nbt8aoXezYNuhNQga0iAFN5O4sFuTkSK8TBLBnD2bNgsGAUaMQF2dJTy9s1SoKQM+ejdQe8SHyRhiDZkBziIPI3f38M4YOxcmTAJCZialT8fPP6NgR7dtDrcYLL6Q10HunaiOOdzOgGwEDmsjdVVTgxAkMHgyrFbt3IysLCQm45RaXtedKQDdgFW3aAAxoBjSR+9u2DQCyszF6NIqK0LMnEhPRcEt9OtUIPehWrQAGNAOayM2Vl+PbbzF0KHx9sW4dZsxATAy0WlcGtDgGzZuEjYA3CYnc2qZNiIvDhg1ITMTFiygoQJs2eO21Bn+euw4qFUaOtISFWRquCga0iD1oIreWnY2bbgKAuXMxbRoA9OyJNm0QGOjKVi1ebAgIYEA3OPagidzahQvS2qH33IN+/WCxYOhQV7ep4TGgRexBE7m1Eyeql6QIC8Mnn7i0NY2FAS1iQBO5r+eew8GDiIpydTsanfiwIgOaAU3kvr7/HmVluPlmV7ej0Wk0UKsbdkXTJoFj0ERuZ+VK5Of7fPJJSFERevdG27aubpAr+PiwB82AJnIzpaUYOxZAsEIBQcA337i6QS7i68uA5hAHkZvZvl36MHhw2YYNaN3alY1xIfagwR40kbvJzUWvXigpsXTpUjl0aICrm+My7EGDAU3kbnQ6tGqFgQPLExPLgEhXN8dlJk2SntBpzhjQRG6kvBxHjsDbGyNHVpaUmF3dHFd64QVXt8ANcAyayI0sW4YlS+Dv7+p2kHtgQBO5xvHjKCqy37h3LwAkJTV+c8gdMaCJXGDrVvTtizZtEBEhvSpF9Msv6NMHI0e6rmXkThjQRI3tlVcwbBhMJpSWoqAAnTrh228B4NIlXLyIRYuQmOjiFpKb4E1CokZVXq6eOxdWK55+GgEBePNNWCyYMgVGI0pLERAgrV1HBAY0USPLyvLx8sL8+ejSBT164N13YbEAwAsvwM8P99/fsO/6o6aFAU3kQHEx/Pzg5dUQR/Zq0QIPPyz9qFbDywtdu2LfPpSUSK/7IxJxDJroKoIAoxGdOuGFF3DsGJYuDfvuO+3o0fVw5JISmM04fTqgS5fqjVot/vEPPPec9GN4eD1URB6DPWhq7ioqMGAABg3CE0+gRQtMnIg9e5CdjU8/xYYNqKwM79FD2LMHOh2Cg6/a8fx5eHujRQu5FU2YALMZGRlhgwdXb9yyBT4+SEjAqlUYPdrFL7Iid8OApuZu9Wrs34/MTPzvf3j6aXz/vbTdaMTp0/D3V124IOTmokMHTJmC2bOrd3z9dYSGol8/CALuv9/xwc+cwcKFePttHDiAbdtgMAAIGDasukDV21L+9jcADGi6Coc4qDnKyMD777cWP8+fjxYtkJODykp88YVUYPRoKTHLy1WpqSoAubn46qvqI9hs2LcP69djzhwsWVJrRRs34p138O23eP99mEzSxkhHC2z4+kKrZUDTVRjQ1LwYjdi2De+/j+XLo8vKACAvDxMnSt8WFcHbG35+GDsWAwdCo4FCgcpKaVE1sbwoOxtnz+LCBRw4gN278dNP2LMnzK6uigqsWwcAU6Zg2TLceisAKJXCiBGO2zZ4MGdA01U4xEHNy7Rp+PpraSrbqVPKvDwUFVWPI/v5YccOKJVo1w7l5ejTB8OHW0tLVYGB6NED27ZVH0dMXlF+PoYPx513Rr700lV1/etf2LIFWi0MBlgsGDgQu3fD29vWsaPjmXQ1j0mEa3vQ2dnZjzzyyJAhQ0aPHr1lyxZx4+7du0ePHj1y5Mjly5fL30LkbgQBa9YAgNUKAAMGeN98M3Q6jB4tvaX0llvQvTu6dYO/P6Kj0a8fAgOtAJYswQcfQBCkOcsAKiqQkgK1unrNYr3+qtgtLJQW1hCHSgDcdhseewwaja2hT5MaXwMlp31AC4Lw6KOPbty48X//+9/s2bMrKyttNtucOXPmz5//ww8/LF68uLCwUM6WBrsORH/dkSMoLkZyMgBotTZBgCAAQEAAvLwwfTqu/W/k2Wez/fyEu++WBo7NV1YANRjQoQO0WuloACorrwroRx/FhQsAMHo0goIAICgIPj7QaISGOTlypQZKTvuAjo2NveWWWxQKRXx8fEBAQFlZWWpqakxMTFxcnK+vb79+/Xbt2iVnS2NdFqLr8NhjGDYM4hBwcLCUtePGITAQY8di6lRER9vvMmhQ6datJYDUxa7qQe/aBW9v+PjgpZekt1KVlGhq7piVBYUCDzyAUaNw4ACGD0fv3lCroVazB+2BGig5a71JeOTIEV9f38jIyPz8/Mgrd53FH+VsaYArQHRDMjOxdy8+/1yaKRESIgW0GMr/93+Ob9ApFGjb1oqrA9psxvbt8PKCnx+ioqDRAEB+vnfVXnl5SE3FokX44QeEhCAxURpfDgpiD9rD1W9yOg7ogoKCWbNmvfHGGwAEQRAE6VdKEASFQiFnSz2dLNENOXIEzz6Lzz8HgB9/hFqNqChpsCIoSOoMh4TIOpR4X1EcvP74YxgMuP12rFqF22+HVgtvb5SWajIypMLp6SgvR/fu9gcJDWUP2pPVe3I6mMWh1+ufeeaZp556ql27dgAiIyPz8vLEr/Lz85OSkuRskXMyFRUVx48f12g0dRfT6XT5+fmZmZl1F7PZbMXFxfv373dab2lpqZxiZWVlAAoKCuouVllZaTAYKisrnR6woKDg2LFjarWTmTOFhYVHjhxxWsxqtRYVFTk9EUEQSkpK5JyvzOus1+tNJlN5ebnTA8q8zjKLiddZr9fXXcxsNut0OvGAFy9qJ0zoZDIpEhMrU1JOnDsX07+/76FD53Nzw4A2gYFlQDAAo/Hi/v21/s1XVFRUUlKi1WpNJiXQbf/+I6mpvocOBQDRoaFHLBbz0aN4/PGALVtC164N++OPk7m5BgDz5sWHhYWUlh61OzOdLkStDpNzvjKvs8xfA8i+zoWFheXl5d7e3nUXq3md66Xequtcd7Hy8nKbzabT6ZweUKfTHTx4UKl0MpPYafPEIQin1aFhktM+BSwWy/PPPz9mzJh+/fqJW5KTk7OzszMzM0NCQn799dfJkyeHhoY63SLnfHx8fFq1auXn51d3sXPnzgUFBUVERNRdzGKxGAyG5KpbNrUrLS2VUywjI0OhULRw9iRvYWFhUVGRnH+TTCZTYmKir7PlcIxGY1JSktPfVJPJZDabnZ6I1WqtqKiQc74yr3N+fn5paWmijPm6Mq+zzGKFhYXFxcVt27atu1hBQeWKFWW+vnFdutjWr1cHBSE/H+fP+7Rtm+zl5dWypSI5OdloVAKYNi27tDQ6JkYxalRkcnKtS2CcPn06KioqODhYvD24bFmnb75R33WXtU0bW/fubcUcS07Ggw8iOtoWF5eYnGwDcPKkT2Agrj2vhATExR1NTr7Z6fnm5eWVlZU5vc5Go1HOrwFkX+fU1NTY2Ngg8bZm7fR6/blz55weUBAEmfVWXee6i2VnZ5tMplatWjk9YEVFRYcOHVTO1gZ02jwveStmNVBy2gf0/v379+/fn56evmDBAgDz5s1LSkqaPn36tGnTrFbrpEmTwsPDAcjZ4pRSqfTx8XEa0F5eXlqt1mkxs9msUqmcFhPrlVPM29tboVA4LVlRUaHRaOQcUK1W+/r6Oi0pFvPx8XFaTM75Wq1WmZdF5nUuKyszGAz1eJ1lFpN5nf/4Qzl3bjiAu+9GaSnefhtHj2L+fGzf7peZiY4d4eenFu/p+fkpt22z+Pj41P00gEajES+LzQYAa9eqAZw4oXrqKYSGXtUYtdqsVvuIDczJQa9euLa1fn6IjzfKOV+tVms0Oi+pUqnq99deo9HI+a9SEAS1Wi2nmMzmVV3nuouJXXs5B1SpVL6+vk7/EpV5WZxqoOS0b/2tt966b98+u419+/bt27fv9W4hamSVlfjgA2nE7MABaLVITMS4cZg/HxMmICkJYucmMhKPPw5fX+t1HVyphEoFcR5UVhbat7cvoFIJVXM8KisxY8aNnAo1MQ2UnHzUmzyExYIXXsD69epevUqio1FUhIwMdOiAgACMGgWDAceOQVznU6PB/PlQKq97NkXVsJPVitBQ+29VKps4DJKZCb0ezv4EInKOj3qTh0hNxUcfISJCePnli23b3typE0JCEBsLAO3aSWVu8G3ZWi0qKqTPAQH236pUwr592LQJWi3MZji7+U3kHHvQ5CGyswHgvvssMTFG8b5O1b33adOkDzfYqxV70L16VX+uydvb9v77eOcdbN9eD3URgQFNHuPzzzFwIJ57zgSgRQtER+Ouu6SvxJk4/v43upinmLniQPa1hwoKMotzMnfswPDh17GQP1FtGNDkCWw27NqFJ59EZKQAQKvFXXdVZ6j43j8/PzibFOuEVot+/dC1KwD7t6sA6N27UByDFgQ8//wNVUQk4hg0NWH796NLF2g06NcP5eUYPlx8ZQkAfPjhVaPAQUEObutdL60Wo0ZJo8/Xzo5VqarvOjqbRkwkCwOamqTLlxEaiqFDMXcudu/G7t3o1Ak157zaDUFERCAh4UYr9fGBUiktfXftcgZVqy+B736lesKApiape3dERKCoCC+8gNxcwFkmRkfXQ69Wq4VKhS5d8O67Dr7t1KlEpYLNBpUKMTE3WhcRGNDUFGVkIDtbmraRmwtfX4wYgWefrWuXG5xgJ7rtNiQnIzQUzzzj4NuYGENgIAIDYTbD2QPGRLIwoKlp2LzZa+/eiE6d8MgjWLv2qq+WLsXw4U52nznzRu8QAnj9dScF3n0Xp07ZN4/oL2NAUxNgteKJJ4J0OgWAiAi8+iratoXZjMGD8dVXaNnS+RGiohq8kQCmTsWSJdi4sTHqouaA0+yoCTh7FmI6A9i+HTodli7FsWMYMwYAwuzfpu1KQUHw93d1I8hTsAdN7s5mw8aNSEkxBwUZtm0LOHkSo0ejWzcAEMd8xee53cRdd0mPGhLdOPagya0tWoTAQDzzDNq3t370UUbr1sjLq54w16sXfvnFwYw3F1IqOceO6g0DmtyXIGDqVGl9oqAgGwAvL5w8Wb3Up0bD7ip5MgY0ua/iYlRWSk8AarUCgLZtIQho08bFDSNqHAxoclNpaWjXDmo1jh3DnXdizBgjgBEjAMDZW8OIPAQDmtzU6tUoLMQddyA2Fr/8gnbtLIC0UBEDmpoJBjS5qe++g1Jpv4CGuIacsxfbEnkITrMjd2Q04vBhbN1q/+q/+Hg8+KB7zasjajjsQZN7ychA587IzweA226rfiuKyM8P333nXvPqiBoOA5rcwtat2LYNAHJycPw4zp6Ftze8vV3dLCKX4hAHuV5REV59FQYD/vwTJSUAMH26g5f+ETU3DGhyvX//G3v3AsCqVdizBwD278fo0a5tFJHrcYiDXMNqlT7k53t/9x0GDkS7digowN69GDkSANq1c2HriNwCA5pc4Px5hIRg924AyMvz9vPDihW46SZs3IjLl/Hkk+jVy8FL/4iaGw5xkAv88QfKyvDvf+Mf/0BurjY0FMHBCAvDggUA0L49QkPh5+fqVhK5GgOaXCA7G1otDhzA/v3o2zdcXHG/f38sWIDYWMTH47PP3GuVZyKX4BAHucCaNejYEUYjTCacOBHYqRMAPPAA2rdH9+4A0LIle9BE7EFTozObsX8/fv4Z48YhNxe5uVoxoDUafPYZkpNd3T4it8EeNDW2vXvh54fbbqte2L5nT+nDgAGN9PJAoiaBAU2Nau1a/PEHoqKg0eD779GzJ+Lj9Skprm4WkVviEAc1qscfR3Exbr4ZADp3RmQkDAazqxtF5KbYg6bGs3MnCgpQUYGJE6UtPXrAz8/i0kYRua+mGtAff4y773Z1I+h6PPAAhg+HwQAAY8ZIG6dMwaRJ6a5rFJFbaxoBPX58yCOPXLXl66+xaRNmzsSlSy5qE12PvXuxbBnKywEgJgbR0dL2+Hh06FDmwoYRuTO3DugZM7BwIYqLVQcOeK1aVb29oAAHD8JqxcyZOHrUde0j2X79FYmJeP55fPMNWrXigs5EsrjvTcJly/Duu7BYkJDQuqxMUVYGsxkaDQCMH4/gYLRpg0OHYDS6uqHkzL//jQ8/xP/7f3jvPdhsGDXK1Q0iaiLctAd96BD+/ndYLACQliatmlNYKH37++/o1w+BgQDw3XcA8OijyM11QTvJqXnzMG8eLBaIT6MolQgJcXWbiJoIdwxoQcDYsaisrP5DOCHBqtEgPV360WjEjBnSamdlZTh1Cp9/jmPHFDabS9pLtTpxAtOnQxAA4PbbXd0aoqbGHQP61Vdx4QJ698b06dKW9esLfX3Rpw/S0vDjjxAExMRg+HA8apCyCwAAIABJREFU9BDMZuTkAMDIkept28LrOCw1vu+/h8mEu+4CgKAgV7eGqKlxxzHoBQsQHIz33oO3N9q3h9mcERKi8fKCIGD+fHzwAQCo1XjqKXz/PZ56Cj/+CAAWC0pLNa5tOdn59lv88AMGDcJDD3Fkg+i6uV1AnzmD/Hxs347bbgOA7t2RmloOhIhvqBPTOT4ewcEAEByMggJpEWEAJ0/6u6TNzdymTRgyxMH2xYtbZWfjjjsQHo4NGxq9WURNn1sMcSxdinHjpM979qBXLwwYYF+m5uKTQ4ZIbxQNDQUAkwlKJQBkZvo0dFPJzqVLGDoUbdqgZUt8/XX19ooKfPNN64ceQmSk6xpH1MS5PqDffBMTJ2LpUhw4AJsNS5eic2cHxf7+d+mDVouEBOlz1ZrufftCrUZBAd+S1NjEl3CnpyMjAydOVG+cPBlWq+LZZ13YNKImz5UBLQj48EOv11+X3h+amoqUFGzYgPbtHRRu3Vr6cN99eOkl6XObNlIn+sEHMXeutbiYY9CNbfny6s8ZGVJep6VhxQqo1YK4KBIR/TWuDOhjx/xee80bwMSJaNkS587h8GG0aweH3a5bb0XPnoiKuuoxB5VKGpVOSsKQIYLZrKyaimdnwQLHHXOqg9mMP/6oq8Dhwzh5EoMGYfZsRERg+XJ07gybDXPnAoCPD1dBIrohrgzoJUuiYmOFJ57Af/+LiAikp0OpxCOPSAPKdlq1wvDh6NABY8detV3sWfv6wtsbNhueeMLBvitWYOpUnDwJTpSWT5we17s3dDoUFDgocOwYbrkFGzdi1Ci8+CJWrACA0lI88ggWLwaA0FBTo7aYyOO4MqCHDCn63/8MH32E6GhoNFi4EMnJjrvPoo4d0aeP/cb+/TFqFOLjERMjREaaioqQmmpfZs0aALDZEBeH2rrYZGflSmzdCkHA6tWIicGpU/YFXnwRACoqpEc6b7oJ99yDykp8/TVuvhn//jciI/kYPtENceU0uzvu0LVrJ93j79ABe/ciKamu8mPH2nefRatXA4DZjMBAc16eV8eOyMpCbKz07U8/YckS6XNODoqK6qn1nm7vXgAIDMQzz8BiQUYGOnSo/nbPHmzbhvXrkZ0tLe4cEoL338fq1VAqsXgx2rRBjx6ngd6uaT2RR3D9LA6ReGOwf/8bOsh992WLK3IsWSLN9DCZsH49rFa8+KI0ddrM13fIkJWFw4fx/PO4917odABQUSF9VVCg3L7d/+9/h1KJu+/Gww9DfeVfeX9/AEhOxk03wc8PERHsQRPdEHcJ6OHD8f/+HyZPvqGDtGqlF1ccnjsXFy7AbMY//oHPPsPgwZg9G3PmIDQUWVn10l63tnYtMjP/+u4GAyZNws6daN26+vlssUMNYPlyn2nTWpw5I01FrykiAn37Vv/tQkQ3yF0C+qab8MEH0py5v0yjEcQP4uoc+fn480/gykujp05FcjImTPD8W4X//Ce6dEFxsfTjTz9FXbhwHbs/8wy2bQOAgQMREYF778Wzz+L33wFgyRK89VaAWGz8eAf7tmmDmJgbaDoR1eAuAV0v1Gqh5o8bNuDMGQDVfb1bb4XRiMJC70ZvWsN65pnq1VbFSRdFRRgyBG++icpKLFzYctAgacUSpzZuxGefYdgwAIiIwIsv4ocfMHEiDh+GzYY//pCWpgPQq5eD3R9/HI89duMnRESAxwW01Dfu0gUA/vtfabvPlSfAw8MBID/fowL62DF8+CEefhhlZRg7tvp9JX/+iRMncOCAIidHe+ECli6VdbTff8ctt+C99/DzzwgPh0IBlQqdOkGvx7Bh2LwZAJRKtG3r+I5ur1649db6Ozei5s2jAjoszKxQICkJM2diwABpZtjAgRg4UCowfTpatsTevWF1HKTJmTMHANavx8cfY+VKlJbiwQelmcgGg/QaQNR43UEdsrNVb7+NlBR07CitESry9kZUFDZtkqYwzpuXdfo0g5iowXlUQPv7Wzp0wDvvYNQoqX8XH49Fi9Ctm1RAqcQddyAryweAIGDlSte1tZ6UlWHTJrRtCwBvvgmNBmFhCA7G/fdjwAAUFEjPXgPS67TrtnChj0IhHc2OONkZQHS0tXPnSocPExFR/fK0/842bsTIkcCV1e/+9S/7e1adO8NiUQA4ehRjxyI2Fjt3Nn4z60dente//oXycnz2GXr2RGUlxozBBx/g7ruhVuOVV5CdjZ9/VnTpUjJ2LPLznRxNELBvn9f06fj3vx18KwZ09+44cCA/KorPcBM1Bk8L6JYtpVdhRUUBNZZYqqLRIC3NLy0N77wDANnZuHy5UVtYj378MWbpUoSEYNAgaaCjb1889JC0OnNyMtLTsWSJIjzcNG8eLl60f23jypXSM5aiEyd89uzx6t3b8aP2zz2HhATExDj+logagsf+11a1Rse12zMzfceOxbJl0hbxQcQm5/JlxapVUd7eEFeM69gRALp2rS4QF4eEBAgCgoPNcXHw8bEP6DVrMHmyNKMOwJIlIT16mGt75fa4cejSBa1a1f+JEFFt3O6NKvVlyBAsXYpr42bECCgUwuHDCgAaDcxmLF+ODz5oYo9XWK348EOVUils2CCt0ifOVBH/bqgydiw+/RQ9exYDsd7e0Ouv+tZsRkkJfvkFBgPWr8e6dYFfflkCBNdW6dKlUKmQl1f/p0NEDnlsDzokBPffX/0UchWFAl27SjfOpk3Dd99BENCvX2M37wYdOIDPP1dNmpQlvlAKgK8vune3D+i330Z6urV37yIAfn72PejTpwHgu+/w/PP49FNYrYouXep6EF6j4fgGUaNqjv/B9e8v3S8bPlzqeIpPHjYVViseewz/v72zD4uqTP/4d5gBFBQFpwEERFBBBUsaXxbT1lRESfGCltDNpLxM01Cz1NXqV7upXetWblba1ZaW16q5627Zy2WaWIqKtAykFIgoyYuAOIi8DS/DzJzfH2cCZcY5DzNnXpT789f4eM/5Pvd9zrk585znuZ+4OMMTT3QNn0ulyMnpmmvBI5N1rdUeNAi6W97t6XT45RcAqKoyTp6Li2sKDNTbue8EQfSAe3aIwwJRUQ0AlEpMnYrycshkaGmBTmfmcdvVOHsWej08PXH+PF59tWfJVCa7LUGfOwft7eWaJ0zQgCAIV6I3PkEHBrYB+PJLyGQID8e4cQBQVuaczty8iaef7trNzzI7d2LxYnz8MR55BLNm9aykiFQKvR4LF+K553DsGD75BMBtBY86K5kQBOEiuPxDox3o10+3bVvXcO348cjOxpEjeO45J3Rm2zZ8+imamphqZTQ34/JlDBmCmTN7LCST4cMPce4cGhtx4wZ0OgQHIyMDSiUMBnh7w8ODAyRWuEAQhJ3ojQkawJo1XZ/5JS3tzqhdzHHGWW6ffw6OM9bQsEB9PTgOx48jKanHWgMG4OuvjZ+LiuDmhrlzERmJ4GA0NuLQIRgMzYCPxWMQBOFQeuMQRzdCQgB0H5B1DCdOICsLo0eD4wT+QrS2Yvx4nDhhnEdhWotZkIG3TJ9rbUVlJRYtAoAhQxAUhAkTMGAAvSEkCNeilz5B34qnJ3DLjiEOo7AQ8fGYPRs7dyIsDO+9Z36NNU9GBlQqvPwy+vRBUxOmT++x3K05na/C6usLAF5eNHmOIFwUStCQSgHgzBlH6777LgYMwCuvYOhQyGQ4c8ZSgt6+HUOHIiXFWEkVPR+TMX3o5p+pfXyMgzwEQbga9OyEiRMRFdVVltN+FBV5T5rU94svAECnwxdf4P/+z7hPuYcHmpru+MWtW3HmDHbs6MrOVsAn6AceQEwMAPTrZ1zh8sorWLvW+sMSBGE/KEFj1CjExTliM9m9ewPz89349Xv//jfa2ro2H3F3x8WLXZuV3ArH4fXX0dZm635gfIIOCMCuXQDg62v86RARYUzZBEG4GpSgAcDD47ZFHPZgyxZkZPgFBXH8YPevv2LOHLi7d3WgshLNzWhpMabp/fvh64uqKqhUaGnBc88Z52tbDZ+gPTwgl8Pbm4Y1COIugBI0AHh42GsWR00N3nwTb72Ft9+GRIIpU/QtLXyZZowa1WXWrx8A1NYiIgL//a9/Rwc2bkR9PSoq8J//YMYMvPqqrQsdo6KQmooXX0RICNav79oGjCAIl4VeEgJAQID4Y9CXLqG+Ht9+i9deM7bs3FlUXDzsk09w5AgKC/Huu13G69ZhzRo8+igqK1FS4nXihLS8HACKivDee3jzTSgUtvZn3ryu2n5yOSVogrgLoAQNAA8/jD/9SeRjLlmC6uquYeXRoxET01hZyd28iZs3MXjwbUMWy5fj5ZeNRYvq62ULF3qEhECnQ3o6WlsRGSly32bMoCEOgrgLoCEOABg4EBqNaMPQBgM0GtTUoLQUpaX48EPk5eGnn+DmhsWLjRqfftr9W53j0SUlXk1NCAxERASamzF8eNemt2IREYG0NJGPSRCE6FCCBmCsydm5v6qNpKRgzBiUlAAAx2HRIsTEdG7ExUVFQSLB+PHdv8XXBlEoUF7eB4CPD15/HRIJfH1pIQlB9FLM3Prr16+fNm3aypUrO1uysrKSkpISExMPHjzI3nIX0b8/3NzQ2CjO0fLycOUKIiIQEQE/v+4rRFauRGjobQuveb7/HuPGQakEgJAQ7u9/x8MPY+BA40JHgiBcHHtkTjMJOjU1ddOmTZ3/NBgMW7duff/99w8cOLBv374bN26wtIjpt/2RSODhIU69pCtXUFkJACEh8PY2k4gXL+4qWnQrcjnS0pCcDDc3REcboqMBYORIhIWJ0CuCIOyNPTKnmQStVCq9b3mFdOHChcDAwKCgIC8vrylTppw5c4alxU4hsB98uWQbKS/HunUYMQL334+AANx/v5myc+7u4JOvKenpWLIEffroO5+ajx0zM1pNEIQLYo/MKTyLQ61WK36b5KVQKNRqtY+Pj2CLCO46FlES9PLlOHwYSUnw8YFSieXLrRk+DglpCw83Zmiaa0EQdymiZE7hBM1xHPfbZDGO4yQSCUuLba45AZkMGg1++AETJ8LLy5ojvPACjhwBgEceQXq6cHHnO/HGG5emTo2kGZAEcVcjSuYUzgIKheL69ev8Z7VaPWLECJYWFgeamppycnKkfEmIO6PRaK5evXqRr2FxZziOa2hoOHnypKBufX29qZnBMOmll+ovXuy/bt3FBx+sB9Da2gqgTGgvLK1W29HRUVZWv337QwYDANTVFWZmmvkN0djY2NzcLOivTNZw/vxNN6Fnb4PB0NTUJOgve1gY48z7W9Nth3BzmI2z1Wa8ruCPM71er9FoWA7Y0NCQnZ0tGOfm5uaamhr3zlmQd0Zcf9vb23U6nWCcGS8Ddt2mpia1Wi3oL3ucb968yWLGGOe2tjaDwVDJv+exSH19/enTpwUfFgXDMnTo0NDQUEE5U0TJnMIJetSoUdXV1VevXvX19c3MzExLS/Pz8xNsYXGgX79+4eHh/fhlznemuLh44MCBCqG1dB0dHXl5eRMnThTUPX36dGxsbLfGAQNkV67I29okERFRsbEGAGVlZRKJZMiQIZaPplarb9y4UVU1WiaDVovkZMMTT4wYMmS4qWVeXt7IkSO9hJ7Pc3Nzo6Ki+gjV5G9vb8/Pzx9vOl/vdvR6/f/+9z9Tf01hjPP169cbGhpY/gabjbPVZmq1uq6uLlJo0Y5GoykuLo5hqP+kUqmio6MF41xYWBgQEODHUKpKXH9ramoaGxsF48x4GbDr/vLLL8HBwQNN327fDmOcOY7Lyspi0WWMc2VlZXt7e3h4uOABs7Ozx40bJxOqkCAYFpa/zWYRJXOa6f3q1asLCws1Gk1CQsKmTZuUSuX69etXrFih1+sXLVokl8sBsLQIIpFI3N3dPfgZwndGKpXKZDJBM4lE4ubmJmgGwKxZv36dO7fK+P+UyWQSiUTwgO7u7lKpdPNm2YQJKCvDhx+6yeXmH8rc3NxY/GU04ziOxV+9Xs8YFsY4y2QyqVRqdZytNuPjLGip1WrZdRkvPxYziO0vY5wNBoO4uoz+MsaZ8Spl15XJZHq9nt1fwQTN2D0W7JE5zfR++/bt3VomT548efLknrbcXXQOPFi3nrCqCq+/joULRewRQRB3E/bInLRGzUhngmYvDK3TobQUej10OolajZEj7dQ1giB6KZSgjZg+QRsMqK629Pto7VqEheHYMc9z5/rKZHjwQTt3kSCIXgbN5TLSmaCvXTN+2Llz4Jdf9rt82YxxTg6OHUNREQAcPNgH8Js4kSpmEAQhMpSgjXQm6B9/BACVCkVFHi0t5ufoZGRg715IpQgMxDffeAKef/iDozpKEESvgZ76jHS+7M3MxIEDGD8eR49619VJze4TePkyLlzAL79gyhRji9BkLYIgiB5DCdrIiBHGiqA3bhh3udbr0d4uaW01Y9y5eOXJJ40fgoIc0EeCIHoXlKCNfPwxZs0CgPZ23LpMyWxhPn7tT0wMpk/HX/7SDEBoOQtBEESPoQTdhdklfo8+ivnzcet67x078Ouv+NvfkJmJvn3x7LMtjz9+s3OsgyAIQizoJWEXCkVXTbshQ6DV6nx8uJ9/dv/5ZyQng1+Of+kS1qxBRweefRada9RffbUqKsrXaf0mCOIehZ6guwgIwKBBxs8rVuDYscrAQOOkaK3W2L57Nzo6MGwYFQIlCMLuUILuYvFifP89xowBgLAweHsbAgKMCZrfrrC8HDt3AsD8+TTrmSAIu0NDHF34+8Pf37i7Nl+0JCrK+OScnw8A27ahsRGDB+P3v3dWHwmC6EVQgu4OPyGaH1/29TX4+SEhAXxV3p9+AoBlyxAX57z+EQTRa6Af6t2RybB0Kfj6ugqFXi7Ho48aE3RzMwCkpzuzewRB9B4oQXdHJkNwsHHDqgkT2rKy4O+P6mrU1aGgAN7eYCjdThAEIQKUoLsjk+HWLRQGDcLw4SgvR1kZ2tsxf77zekYQRC+DEnR3ZDJ024QhMBASCXbsAIBVq5zSKYIgeiOUoLtjmqBlMsjlyMyEXI6oKCd1iyCI3gcl6O7MmAGlsntjQAAuXUJsLIS25CYIghANmmbXnTVrzDROnYr8fAw3s1U3QRCEvaAnaCb41ExFnwmCcCSUoJngp9YpFM7uB0EQvQlK0EzwK7/5iv4EQRCOgRI0E/ffD+C2+dEEQRD2xskJWiIxvytrNxsWM8aj9cis0/K++zBlCgICbO2eUxxhhL177AcU0YxdVPTTwS4trplT7g5G7hldcbsnOhLO7K6oDqGjo8Od4aFUp9NJpVKWODIekNHMYDAAcBOqK8pxnF6vl8mE58OI2z3RD8gYZ47jDAaDlGG+objdc1acnXX5OSvOOp2OJcj20GWJs8Fg4DjO8WFxFs5M0ARBEIQFaAyaIAjCRaEETRAE4aJQgiYIgnBRKEETBEG4KJSgCYIgXBRK0ARBEC4KJWiCIAgXhRI0QRCEi0IJmiAIwkWhBE0QBOGiUIImCIJwUShBEwRBuCiUoAmCIFwUZ24ae+TIEXd39/79+1s2Ky0t7d+//6BBgyybtbe3FxcXjxkzRlBXpVIplUrBwoZVVVUSiSQwMNCyWV1dXX19fXh4uKDuhQsXQkNDvby8LJsVFBSEhYUJmrW1tZWUlERFRVk202q1Fy9eZAkLY5xra2ubm5uHDh0qeEDGOJ8/f3706NGCJR/r6uoaGhrCwsIsm2k0moqKipEjRwp2r6CgIDw8vG/fvpbNSkpKBg0aNHDgQMtmHMfl5uaOGzdOUDc3NzcmJkawjC1jnBkvAzDH+dKlSwqFYsCAAZbNGOOs0+kKCgoeeOABwe4xxrmmpkar1YaEhAgeMD8/PzIy0tPT07JZQUHBokWLWOqXOgVnJuhdu3ZFRkaOGDHCstmRI0cUCsWDDz5o2ayysjIjIyMtLc2yWUdHx+7du6VSaR+hLWBPnToFYMqUKZbNzp07V1VVlZCQYNkMwGeffTZx4kTBVP7ZZ59Nnjw5NDTUsllFRcWJEyeefPJJy2bXrl07fPjw4sWLBbvHGOfc3Fy1Wj1r1izLZuxx3rNnT1JSkpzfVezOMMa5pKREpVKlpqZaNgNznL/66qvw8PDo6GjLZq2trbt37/b09LRcTFmv1+/atWvJkiWCfxhyc3Nra2vj4+Mtm5WXl588eVLwMgBznA8dOhQZGTlq1CjLZoxxvn79+ldffbVkyRLB7jHG+ezZs62trdOmTRM84N69e+Pj4wcPHmzZ7IMPPoiLiwsODhY8oHPgnEdaWtrRo0cFzTZs2LBnzx5BM5VKNXfuXEGz5uZmpVLZ0NAgaPnWW2+9/fbbgmb79u1bu3atoBnHcQsWLPjhhx8EzVJSUk6dOiVodvbs2aSkJEGz8+fPx8fHs3SPMc6ffPLJxo0bBc3Y4/zII48UFRUJmu3du3fdunWCZsePH1+4cKGgGcdxKSkpp0+fFjRbuXLlwYMHBc3q6uqUSmVLS4tls/b2dqVSWVtbK3jA3bt3v/TSS4JmWVlZycnJgmYcc5yXL19+6NAhQTPGOBcUFEyfPp2le4xx3rFjx+bNm1kOmJCQkJeXJ2g2YcKE8vJylgM6BRqDJgiCcFEoQRMEQbgolKAJgiBcFGe+JIyIiAgwu1H27YSFhbEM4cvl8tGjRwuaeXh4jB07VvDNFYDQ0FCWrUKDg4MbGhoEzQCMHDnS39+fxUyhUAiaKRQKwTc5AORyueCLFx7GOIeEhOh0OkEz9jiPGTPG19dX0Cw4OLipqUnQzN/fPzIyUtAMzHEePnx4UFCQoFnfvn3Hjh3r4eFh2Uwmk40dO1Zwig6AkJAQfttiyzBeBmCO8/DhwwVfrIE5zn5+fiwziMAc5yFDhgjOMOGJiooSfCMKICYmxsfHh+WAToE2jSUIgnBRaIiDIAjCRaEETRAE4aJQgiYIgnBRxE/QLS0tM2fOtOKLWVlZSUlJiYmJBw8eBKDVahcuXJiQkDBnzpz9+/fbKF1fX//UU09ZVgSwfv36adOmrVy5kr3bYvnL09HRkZyc/Oc//9lGadf3t7q6etmyZfHx8UlJSRkZGTZK28lfJ55cy+os/op7B1nG9pNrWd1+17OrI/rSF41GExcX19Nv6fX6xMTEq1evajSaefPm1dbW6vV6fsFVY2Pj3LlzKysrbZG+efNmWlqaZUWO41Qq1enTp9PT09l7Lpa/fPuuXbs2bNjw2muv2Sjt+v5WVlbm5eUZDIby8vJp06YJrsGzLG0nf514ci2rs/gr7h1kAVFOrmV1+13PLo4dhzj0ev2KFSueeOKJBQsWZGVlAaiqqvrjH/+4devW1atXd3uOuHDhQmBgYFBQkJeX15QpU86cOePm5sYX7uF6Ps+kpKTk+eef5z+/8cYbvHo3TBUBKJVKb2/vnvsK2OwvgGvXruXn58+YMaOn0nejv4MHD46JiZFIJCEhIf3792eZQudEf514cmGtv7bcQU48uVb7C9uuZ9fEjvOg3dzctm7d2r9//8bGxmeffXbSpEkAKioq3n//fT8/v+eff/7ixYudUynVanXnpFSFQqFWqwF0dHSkpqZWV1cvXbqUZW5mjzCraAu2+/vOO++kp6eXlZXZ2BOzuKC/POfPn/fy8mKZktwjxPXXxU/unUStvoNc/ORaFr2XsO9ClX/+858qlUomk129erWlpQVAeHi4n58fgNDQ0Kqqqs5zzD/Pd37mV4i4u7t//vnnN27cePHFFxMSElhWebBjVtFGbPE3Ozvbz89v+PDhdrqHXc1f/nNtbe3mzZu3bNlie2e6Ibq/rnxyzYrCtjvIlU+uBdF7DDsm6NOnT5eVlX300UdSqfSxxx7TarUAOosxSiSSWxdKKRSK69ev85/VavWtNUgHDRoUGRmZm5vLUtKTRyqVdp68Oy17s6BoHTb6m5+ff+LEiVOnTrW1tbW1tfn4+LzwwguM0nejvwBaWlrWrFmzatWqiIiIHkk73l8nnlzY7K8Vd5ATTy6cdD27JnYcg25qagoODpZKpVeuXKmoqLBsPGrUqOrqan7IPzMzc9KkSbW1tfwJqK2t/fHHHwXr9t7KfffdV11dzXGcVqs9d+4coyL78c1io79Lly49fPjw119/vWHDhunTp/foBr4b/dXpdGvXrk1OThasuG2K4/114smFtf7acgc58eTCSdezayL+E7Rer+crEkydOvXw4cMvvfSSj4+P4MYQbm5u69evX7FihV6vX7RokVwuLykp2bhxY1NTk4eHx/z581n2jOiU9vb2njlz5vLlyxUKxZ02XzBVBLB69erCwkKNRpOQkLBp0yalUukwfwWFLEjfjf5mZ2erVKrS0tKPPvoIwPbt2wUfghzvrxNPLmz215Y7yPEn13Z/YdX17OqIMRXkNrKzs5955hnRD+uy0uTvPSztRGedot7b/HV9RE7Qe/fuTUxMzMnJEfewLitN/t7D0k501inqvc3fuwKqZkcQBOGiUC0OgiAIF8WOCdrsenzT5fPdWi5dupTwG7/73e8yMzMdowtg//79jz32WHJy8ubNm1lqpVuna1ouwGzdBnuL2l61wDppKwpEiOIvel4KQxTd69evr1ixIi4uLjk5mXFjB9t1HXYTmfq7Z88e/iY6fPhwT0UZdRn7do9gv9ET0/X4ZssFmK1awHFcS0vLjBkzGFfx265bV1c3e/Zs3viZZ545c+aMPXQ5k3IBFiJgP1GzLQ7zt6cFIkTxl+t5KQxRdNPT0//1r38ZDAa1Wt3e3u4wXR673kSmukVFRSkpKW1tbRqNJiUlpbGx0R66jH27N7DjE7TpenzT5fNmF9TznDp1avz48X379nWYrsFg0Gq1Op1Op9PxRQxE14VJuQALEbCfqNkWx/hrS4EIW/y1pRSG1brV1dWlpaUpKSkSiUQulwtuiCWivzx2vYlMda9cuTJmzBhPT08vL69hw4adPXvWHrqMfbs3cMQYdOd6fNPc/MshAAAC4klEQVTl8xYW1B89ejQuLs5hur6+vk899dScOXNmzZoVHR3NuK9dT3VNjcUqKdAjUXHpqTQ/1MD/RLW6xEpPRflSGNZpWa1bUVERGBi4bt26xx9//J133rFi3Mw63U7sehOZGg8bNuynn35qamqqr6/Pz8/vXOlnJ10nXvMOw+4Jml+Pzw/88Q/tfDvHcRKJxLSF/6zRaPLz8x966CGH6TY3Nx87duzLL7/89ttvi4qKVCqVPXRN7VlsRBcVESuk+QIR33zzzcmTJ2tqahwg2lkKwwotW3R1Ol1+fv7SpUv37dtXUlLy3XffOUaXx943kan9iBEjUlNTly1btnHjxujoaKlUaj9dJ17zjsS+Cbrbevxuy+flcrlpC//5xIkTsbGxVvwktFo3Ly9PoVD4+fl5enrGxsbm5+fbQ9f0Kyw2oouKhS3SnQUiHCDKl8KYO3fuX//61+PHj2/btq2notbp+vv7BwUFRUREuLu7T548ubi42DG6PPa+icx+KzU1df/+/R988EFbW9udFgHaruvEa97B2DFBm67HN10+f6cF9d999118fLwjdQMCAgoKCpqbm3U6XU5OTo8KF7Drmn7LxpIC1omKgnXSthSIsFrUxlIYVuuGh4fz1eAMBkNubm54eLhjdHnsfROZ/WJVVRWAnJyc0tLS2NhYe+g68Zp3Aja8YBTg7Nmz48ePn/0bxcXFHMedOnVq7ty5CQkJBw4c4M1MWxoaGuLi4jo6Ohys+49//CMxMXHevHlbtmzR6/V20l21atWMGTNiY2Nnz56tUqnM2jhA1LTFMdKXL19OSUmZNWtWYmLi/v37HeYvT0ZGhnWzOKzWzc3NTUlJSUpK2rx5syMvKsfcRKa6Tz/9dFxc3IIFCwoLC+2ky9i3ewNaSUgQBOGi0EpCgiAIF4USNEEQhItCCZogCMJFoQRNEATholCCJgiCcFEoQRMEQbgolKAJgiBcFErQBEEQLsr/A+mEW4ljjvyAAAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R\n", "plot(GSPC$GSPC.Adjusted, type='l', col='blue', lwd=1.5)" ] }, { "cell_type": "markdown", "id": "475263a7-11fd-4ecf-ba0d-0f5c2a87272b", "metadata": {}, "source": [ "Spectacular growth in the stock price!" ] }, { "cell_type": "markdown", "id": "2a578418-f7da-4bcf-8c6f-aefd846e2f7f", "metadata": {}, "source": [ "We can invoke the same functionality in R using pipes with the `magrittr` package. Can you see why the package is so named? " ] }, { "cell_type": "code", "execution_count": 14, "id": "2556a6c4-bc88-4e9c-9501-59049aad7192", "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R\n", "library(magrittr)\n", "GSPC$GSPC.Adjusted %>% plot()" ] }, { "cell_type": "markdown", "id": "aa8f496f-f9db-4c05-b521-392372aa66ce", "metadata": {}, "source": [ "---\n", "# Using R in SageMaker Studio\n", "Did you know you can bring your own RStudio License to SageMaker Studio on AWS? Check out the announcement blog post here.\n", "https://aws.amazon.com/blogs/machine-learning/get-started-with-rstudio-on-amazon-sagemaker/ " ] } ], "metadata": { "kernelspec": { "display_name": "default:Python", "language": "python", "name": "conda-env-default-py" }, "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" } }, "nbformat": 4, "nbformat_minor": 5 }