Repository: emolter/pylanetary (language: python)

Issue:
Planet fact sheet-like infomation
Adding the first capability for someone to initiate a planet class by the name and load attributes from a yaml file that has information like the equatorial and polar radii for use with astropy units. This snippet of code is to get the ball rolling for future additions and serve as an example for new contributors to pylanetary wanting to utilize yaml file loading as python dictionaries. 

--- submitted code 
class Planet:
    def __init__(self, name):
        self.name = name
        with importlib.resources.open_binary(planet_info, f"{self.name}.yaml") as file:
            yaml_bytes = file.read()
            data = yaml.safe_load(yaml_bytes)

            # basic information and rewrite name
            self.name = data['planet']['name']
            self.mass = data['planet']['mass'] * u.kg
            self.Re = data['planet']['Re'] * u.km
            self.Rp = data['planet']['Rp'] * u.km
            self.Ravg = (self.Re + self.Rp) / 2
            self.Rvol = data['planet']['Rvol'] * u.km
            self.accel_g = data['planet']['accel_g'] * u.m / u.s**2
            self.num_moons = data['planet']['num_moons']

            # orbital information
            self.semi_major_axis = data['orbit']['semi_major_axis'] * u.au
            self.t_rot_hrs = data['orbit']['t_rot'] * u.hr

            # observational information
            self.app_dia_max = data['observational']['app_dia_max'] * u.arcsec
            self.app_dia_min = data['observational']['app_dia_min'] * u.arcsec
restructure and rename of planetnav
Based on tester feedback (thanks Chris), PlanetNav should be restructured to permit planet modeling with an ephemeris, but without data to compare.  A new intermediate class called ModelBody that inherits from ModelPlanetEllipsoid should be created, and Nav should inherit from that class.  All the names should be changed to remove the word "planet" because these methods work for any roughly ellipsoidal solar system body.
Active dev
Re-doing the namespace of navigation, changing the way limb darkening works.

Chris, can you ensure all your changes are in there?  The new options in limb_darkening() are definitely there, but it doesn't look like any of the changes we discussed about how to convolve with beam are there.
restructure and rename of planetnav
Based on tester feedback (thanks Chris), PlanetNav should be restructured to permit planet modeling with an ephemeris, but without data to compare.  A new intermediate class called ModelBody that inherits from ModelPlanetEllipsoid should be created, and Nav should inherit from that class.  All the names should be changed to remove the word "planet" because these methods work for any roughly ellipsoidal solar system body.
Higher-order expansion limb-darkening 
Currently the model only includes single expansion. Higher-order expansions are needed for high-resolution imaging.
Active dev
Re-doing the namespace of navigation, changing the way limb darkening works.

Chris, can you ensure all your changes are in there?  The new options in limb_darkening() are definitely there, but it doesn't look like any of the changes we discussed about how to convolve with beam are there.
Planet fact sheet-like infomation
Adding the first capability for someone to initiate a planet class by the name and load attributes from a yaml file that has information like the equatorial and polar radii for use with astropy units. This snippet of code is to get the ball rolling for future additions and serve as an example for new contributors to pylanetary wanting to utilize yaml file loading as python dictionaries. 

--- submitted code 
class Planet:
    def __init__(self, name):
        self.name = name
        with importlib.resources.open_binary(planet_info, f"{self.name}.yaml") as file:
            yaml_bytes = file.read()
            data = yaml.safe_load(yaml_bytes)

            # basic information and rewrite name
            self.name = data['planet']['name']
            self.mass = data['planet']['mass'] * u.kg
            self.Re = data['planet']['Re'] * u.km
            self.Rp = data['planet']['Rp'] * u.km
            self.Ravg = (self.Re + self.Rp) / 2
            self.Rvol = data['planet']['Rvol'] * u.km
            self.accel_g = data['planet']['accel_g'] * u.m / u.s**2
            self.num_moons = data['planet']['num_moons']

            # orbital information
            self.semi_major_axis = data['orbit']['semi_major_axis'] * u.au
            self.t_rot_hrs = data['orbit']['t_rot'] * u.hr

            # observational information
            self.app_dia_max = data['observational']['app_dia_max'] * u.arcsec
            self.app_dia_min = data['observational']['app_dia_min'] * u.arcsec
Planet fact sheet-like infomation
Adding the first capability for someone to initiate a planet class by the name and load attributes from a yaml file that has information like the equatorial and polar radii for use with astropy units. This snippet of code is to get the ball rolling for future additions and serve as an example for new contributors to pylanetary wanting to utilize yaml file loading as python dictionaries. 

--- submitted code 
class Planet:
    def __init__(self, name):
        self.name = name
        with importlib.resources.open_binary(planet_info, f"{self.name}.yaml") as file:
            yaml_bytes = file.read()
            data = yaml.safe_load(yaml_bytes)

            # basic information and rewrite name
            self.name = data['planet']['name']
            self.mass = data['planet']['mass'] * u.kg
            self.Re = data['planet']['Re'] * u.km
            self.Rp = data['planet']['Rp'] * u.km
            self.Ravg = (self.Re + self.Rp) / 2
            self.Rvol = data['planet']['Rvol'] * u.km
            self.accel_g = data['planet']['accel_g'] * u.m / u.s**2
            self.num_moons = data['planet']['num_moons']

            # orbital information
            self.semi_major_axis = data['orbit']['semi_major_axis'] * u.au
            self.t_rot_hrs = data['orbit']['t_rot'] * u.hr

            # observational information
            self.app_dia_max = data['observational']['app_dia_max'] * u.arcsec
            self.app_dia_min = data['observational']['app_dia_min'] * u.arcsec
Planet fact sheet-like infomation
Adding the first capability for someone to initiate a planet class by the name and load attributes from a yaml file that has information like the equatorial and polar radii for use with astropy units. This snippet of code is to get the ball rolling for future additions and serve as an example for new contributors to pylanetary wanting to utilize yaml file loading as python dictionaries. 

--- submitted code 
class Planet:
    def __init__(self, name):
        self.name = name
        with importlib.resources.open_binary(planet_info, f"{self.name}.yaml") as file:
            yaml_bytes = file.read()
            data = yaml.safe_load(yaml_bytes)

            # basic information and rewrite name
            self.name = data['planet']['name']
            self.mass = data['planet']['mass'] * u.kg
            self.Re = data['planet']['Re'] * u.km
            self.Rp = data['planet']['Rp'] * u.km
            self.Ravg = (self.Re + self.Rp) / 2
            self.Rvol = data['planet']['Rvol'] * u.km
            self.accel_g = data['planet']['accel_g'] * u.m / u.s**2
            self.num_moons = data['planet']['num_moons']

            # orbital information
            self.semi_major_axis = data['orbit']['semi_major_axis'] * u.au
            self.t_rot_hrs = data['orbit']['t_rot'] * u.hr

            # observational information
            self.app_dia_max = data['observational']['app_dia_max'] * u.arcsec
            self.app_dia_min = data['observational']['app_dia_min'] * u.arcsec


Discussion / hints:

Fix patch:
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 832af2b..b099868 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -2,12 +2,21 @@ Contributing to Pylanetary
 ==========================
 Please see `astropy's contributing guildelines
 <http://www.astropy.org/contribute.html>`__ for a general guide to the
-workflow involving git, etc.  Everything below is astroquery-specific.
+workflow involving git, etc.  Everything below is pylanetary-specific.
+
+
+Contribution Workflow
+---------------------
+If you are considering making a contribution, please follow these steps:
+
+ * Open an issue describing the problem you intend to solve or the new feature you intend to build
+ 
+ * Make a fork the main branch of the repository and do your development there
+ 
+ * Open a draft pull request. We strongly encourage you to do this early in development
+ 
+ * When you are ready, request a review!
 
-We strongly encourage draft pull requests to be opened early in development.
-If you are thinking of contributing a new module, please open an issue marked "enhancement"
-describing your feature idea, and please open a pull request
-as soon as you start developing code and mark it as a Draft PR on github.
 
 New Features
 ------------
@@ -42,17 +51,18 @@ The minimum requirements for a new feature are:
 
 Important Guidelines
 --------------------
- Pylanetary intends to provide *generic* tools for solar system data processing and modeling.
- As such, all functions and classes should remain agnostic to planet, observatory, 
- wavelength band, etc. Defaults for a given planet, observatory, wavelength band, etc.
- may be provided as .yaml (preferred) or another text file format, and should go in the ``pylanetary/feature/data`` subdirectory. See ``pylanetary/rings/data`` for an example.
- 
- Features that are primarily relevant to a single observatory, planet, wavelength band, etc.
- should be placed in separate GitHub repositories and import pylanetary. Again, if portions 
- of that functionality are generic, they can be included in pylanetary 
- 
- Docstrings should be written for every function and should adhere to the same
- format as shown in the functions in ``pylanetary/feature/planetnav/core.py``
+Pylanetary intends to provide *generic* tools for solar system data processing and modeling.
+As such, all functions and classes should remain agnostic to planet, observatory, 
+wavelength band, etc. Defaults for a given planet, observatory, wavelength band, etc.
+may be provided as .yaml (preferred) or another text file format, and should go in the ``pylanetary/feature/data`` subdirectory. See ``pylanetary/rings/data`` for an example.
+
+Features that are primarily relevant to a single observatory, planet, wavelength band, etc.
+should be placed in separate GitHub repositories and import pylanetary. Again, if portions 
+of that functionality are generic, they can be included in pylanetary 
+
+Docstrings should be written for every function and should adhere to the same
+format as shown in the functions in ``pylanetary/navigation/core.py``
+At time of writing, the navigation.Nav docstring is known to adhere to proper style.
 
 
 Dependencies
diff --git a/README.rst b/README.rst
index afdeb4f..e529d68 100644
--- a/README.rst
+++ b/README.rst
@@ -1,6 +1,9 @@
 data processing and modeling tools for ring, moon, and planet observations
 --------------------------------------------------------------------------
 
+.. image:: https://zenodo.org/badge/459414964.svg
+   :target: https://zenodo.org/badge/latestdoi/459414964
+
 .. image:: http://img.shields.io/badge/powered%20by-AstroPy-orange.svg?style=flat
     :target: http://www.astropy.org
     :alt: Powered by Astropy Badge
@@ -8,13 +11,32 @@ data processing and modeling tools for ring, moon, and planet observations
 .. image:: https://zenodo.org/badge/459414964.svg
    :target: https://zenodo.org/badge/latestdoi/459414964
 
+Installation
+------------
+Pylanetary and its dependencies are pip installable (tested in a blank Conda environment)::
+
+	conda create -n pylanetary-tester python=3.9
+	source activate pylanetary-tester
+	pip install pylanetary
+	
+Some of the ring modeling modules rely on a pre-release (at time of writing) version of ``astroquery``, so you may need to download that package via ``git`` as shown in ``requirements.txt``
+
+To install the development branch, run::
+
+	conda create -n pylanetary-tester python=3.9
+	source activate pylanetary-tester
+	git clone -b active-dev https://github.com/emolter/pylanetary.git
+	cd pylanetary
+	pip install -r requirements.txt
+	python setup.py install
+
 Scope and Goal
 --------------
-The idea behind pylanetary is to bring solar system science tools into the open-source Python 3 / Astropy ecosystem. We, and many of our colleagues, rely heavily on useful code snippets passed down from other solar system scientists. But these pieces of code are untested, in multiple languages (IDL, Python 2, etc.), closed-source, and have many untracked dependencies.
+The idea behind pylanetary is to bring solar system science tools into the open-source Python 3 / Astropy ecosystem. We, and many of our colleagues, rely heavily on useful code snippets passed down from other solar system scientists. But these pieces of code are untested, in multiple languages (IDL, Python 2, etc.), closed-source, and have many untracked dependencies. We want to fix that.
 
 At present, we are working on two main packages:
-1. model planet/moon ellipsoids with latitude-longitude grids, projecting those into arbitrary observing geometries and pixel scales, comparing those models with observational data, and projecting observational data onto lat-lon grids;
-2. model ring systems, projecting those into arbitrary observing geometries and pixel scales, and comparing those models with observational data
+1. planetnav: Tools to make and use ellipsoidal models of planets/large moons. This subpackage projects planet models into arbitrary observing geometries and pixel scales, compares those models with observational data, assigns latitudes, longitudes, and emission angles to observational data, and projects images onto latitude-longitude grids.
+2. rings: Tools to model planetary ring systems.  This subpackage projects ring models into arbitrary observing geometries and pixel scales, compares those models with observational data, and makes radial and azimuthal profiles of observed rings.
 
 The eventual goal is to become Astropy-affiliated, but that is a long way off.
 At present, this repository is just a skeleton. We would love your help developing it!  See Contributing.
@@ -34,6 +56,7 @@ Contributing
 
 We love contributions! pylanetary is open source,
 built on open source, and we'd love to have you hang out in our community.
+Please read ``CONTRIBUTING.rst`` before you start.
 
 **Imposter syndrome disclaimer**: We want your help. No, really.
 
diff --git a/notebooks/nav-tutorial.ipynb b/notebooks/nav-tutorial.ipynb
index a1f9e41..6e258cc 100644
--- a/notebooks/nav-tutorial.ipynb
+++ b/notebooks/nav-tutorial.ipynb
@@ -6,7 +6,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from pylanetary.planetnav import *\n",
+    "from pylanetary.navigation import *\n",
     "import matplotlib.pyplot as plt\n",
     "import numpy as np\n",
     "import astropy.units as u"
@@ -18,7 +18,7 @@
    "source": [
     "# Overview\n",
     "\n",
-    "This tutorial showcases the utilities contained in the planetnav subpackage of pylanetary. Learn how to use the ModelPlanetEllipsoid and PlanetNav classes"
+    "This tutorial showcases the utilities contained in the navigation subpackage of pylanetary. Learn how to use the ModelEllipsoid and Nav classes"
    ]
   },
   {
@@ -88,6 +88,43 @@
     "plt.close()"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Make a beam-convolved limb-darkened disk model"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "from pylanetary.utils import convolve_with_beam\n",
+    "\n",
+    "tb = 99.\n",
+    "a = [0.4, 0.1]\n",
+    "beam = (10., 5., 30.) #FWHM_X, FWHM_Y, THETA_DEG\n",
+    "lddisk = ellipsoid.ldmodel(tb, a, law='quadratic')\n",
+    "lddisk = convolve_with_beam(np.pad(lddisk,10), beam)\n",
+    "plt.imshow(lddisk, origin='lower')\n",
+    "plt.show()"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -99,7 +136,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [
     {
@@ -148,10 +185,10 @@
     "\n",
     "# save ephemeris as astropy Table for testing suite - delete later\n",
     "from astropy import io\n",
-    "io.misc.hdf5.write_table_hdf5(ephem, '/Users/emolter/Python/pylanetary/pylanetary/planetnav/tests/data/ephem.hdf5', \n",
+    "io.misc.hdf5.write_table_hdf5(ephem, '/Users/emolter/Python/pylanetary/pylanetary/navigation/tests/data/ephem.hdf5', \n",
     "    serialize_meta=True,\n",
     "    overwrite=True)\n",
-    "np.save('/Users/emolter/Python/pylanetary/pylanetary/planetnav/tests/data/keck_uranus.npy', data)"
+    "np.save('/Users/emolter/Python/pylanetary/pylanetary/navigation/tests/data/keck_uranus.npy', data)"
    ]
   },
   {
@@ -166,6 +203,13 @@
    "execution_count": 5,
    "metadata": {},
    "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.1\n"
+     ]
+    },
     {
      "data": {
       "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmUAAADTCAYAAADAg2RmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAACIWUlEQVR4nO39edwsSVknin+fyMyqepfznqV3ultodhrFDVB0dLiXGUF0BmZhLs7FwWUuLtxx+YkD6PxcZnSG688FvTrjMFfv4B0BW1xARwcVZbwOOwpKs3UDTdPdp/t091nfpaoyM57fHxGRFRUVudVe74nv+dR5qzIjIiMjMzK++X2eeIKYGQEBAQEBAQEBAauFWHUFAgICAgICAgICAikLCAgICAgICFgLBFIWEBAQEBAQELAGCKQsICAgICAgIGANEEhZQEBAQEBAQMAaIJCygICAgICAgIA1QCBlxwRE9J+J6CdWXY+A9QARfQ0RfXLKvI8jIiaieIbj30NEf2eG/ExET5w2/zxARO8ion/eMO1zieg+6/edRPTcmjwzt/O80LS93fMMWH/M8ixYR7TpN0T0LUT0F8uo17wQSNlVhjYDTcD6o4z8MPP/y8xPWUWdAgBmfjozv2vV9QiYP3SfOyKiK0R0kYjeTUTfSUSNxtNlk/HwLNgsBFIWEBCwNlgH1SggoAH+HjOfAPBYAK8D8GoAv7LaKgUcBwRStqEgoi8lor/Ub2u/AaCnt58mot8nooeJ6IL+fove95MAvgbALxLRPhH9ot7+80T0eSK6TEQfIqKvWdmJBcwFHnPaPUT0g0T010R0QES/QkQ3ENEf6nvoT4jotFPMtxHRA0R0loh+oOZ430xEnyOiR4noh519zyai92hV4SwR/SIRdaz9TESvJKK7ANzlKftv6fvzf9K/v42IPq7v73cQ0WOdsr6TiO7S+3+JiMjaX5X37xLRJ4joku4bhBIQ0ZZ2GbhARB8D8Cxnf6Fg6vP/oO5fDxHRz5aU+Y90vi/07HsuEd1HRP+SiM7pdnwxEb2QiD5FROeJ6Ies9F0ier2+fg/o711r/w/qMh4gom9zjtUlop8mont1fX+ZiLbK2uJqBjNfYua3A/hfALzcXDsi+gYi+it9zT9PRD9mZftz/feifg4/h4ieQER/qvvPI0T060R0quy4+j7/bn2fXyGif6PLeI8+5h2mj5U8C16lnwWXiOg3iMiMHxPmPrJM2/p++5g+5v1E9KqS+n0LEf0PIvo53e8/Q0Rfpbd/Xt/DL7fSnySiXyM1bn2OiP4VaeWRiCJ9Pz5CRJ8B8A3OsU6Sep6d1XX6CSKKKi/cOoOZw2fDPgA6AD4H4PsBJAD+MYAUwE8AuAbAPwKwDeAEgN8E8LtW3ncB+OdOeS/T+WIAPwDgQQC9VZ9n+DS6F+4B8Hc8258L4D4n3XsB3ADgZgDnAPwlgC8F0AXwpwB+VKd9HAAG8GYAOwC+CMDDvuPo9LcD2AfwtbqsnwWQmfQAvhzAV+r763EAPg7g+6z8DOCPAZwBsGVteyKA5wP4PIBn6+0vBnA3gKfp8v4VgHc7Zf0+gFMAvkDX+wV1eQFcC+Cy7kuJ7luZ21es47wOwP+r63wrgI962tuc/3sAfLP+vgvgK512jgF8q67bE0uO91xdnx/R9fvf9Lm9CaqfPx1AH8Djdfp/ra/39QCuA/BuAP9G73sBgIcAfKG+vm8y7a33vx7A2/W5nQDwewD+ne++uho/KO9z9wL4LqudvghK+HiGbu8Xu9fdyvtEAH8Xqv9cB0XcXl9RB9bXaE9f+wGAdwJ4PICTAD4G4OUVz4L3A3iMvsYfB/Cdet+3APgLz7HMvXEWwNfo76cBfFlJ/b5F36/fCiCCGpvuBfBL+hy/DsAVALs6/a8BeJu+3x4H4FMAvl3v+04An4DqZ2cA/JndfgB+F8B/1Pfy9frcvqPsfNb9s/IKhM8UF00Nfg8AIGvbuwH8hCftlwC4YP1+F0oGGivNBQBfvOrzDJ9G90LZAOF7EP+v1u/fAvAfrN//Apq8W4PGU639PwXgV0rq8CMA3mL93gEw9NVL7/8+AL9j/WYA/7OThgG8Furl44us7X9oHtb6twBwCOCxVr6/Ze2/A8Br6vIC+GcA3mvtIwD3lfUVAJ+BJnv69ys87W1I2Z8D+HEA1zplmHZ+FdQgekvFdX4ugCMAkf59Quf9CivNhzAa+D8N4IXWvucDuEd//1UAr7P2PRkjEkwADgA8wdr/HACf9d1XV+Onos+9F8APl+R5PYCfc657XHGMFwP4q4r9DOCrnWv/auv3z0CTOvea6fq/zPr9UwB+WX//FlSTsnsBfAeAvZo2+hYAd1m/v0iXc4O17VGo8SmCIpW3W/u+A8C79Pc/hSaN+vfXYfQyc4POu2Xt/yYAf1Z2Puv+CebLzcRjANzP+q7T+BwAENE2Ef1HLQFfhhoQTlXJuUT0A9qkc4mILkK9aV27wPoHrAYPWd+PPL93nfSft75/Duq+gza5mM8X6O1FWmY+gHrgQqd/Mikz+oP6nvy3mLy/Po9JfB+AO5j5b6xtjwXw89okchHAeSgicbOV5kHr+6F1XlV53XPgkjoZPAaT7VOGb4ciPp8gog8Q0Tc6+38QwC8xc92sxkeZOdffj/Tfsmv4GKdOxfWrqft1UCr7h6x2+m96e0A1boa6p0BEX0FEf6bNcZeg1J7SZyoRXU9Eb9Hmt8sA/ktVeo22/dlGWR+pwz8C8EIAnyOi/05Ez2lRPzCzr47XYmT9MfgcRn266n59LJRyfNa6X/8jlGK2kQikbDNxFsDNRCNfGShTDaDMj0+BeoPeg1LVgJF/jE3kQMp/7NUA/gmA08x8CsAlK33A1Ytbre9fAKXOgpl3rc+9UPdjkZaItqHM4Qb/Acr88CR9T/4QJu8vxiReAuDFRPR91rbPQ5kmTlmfLWZ+d4PzqcrrngM55+/iLCbbxwtmvouZvwlqoPg/ALyViHasJF8H4F8R0T9qcA5N8QDUgGXX7wH9varuj0ANlk+32ugkMzcdtK9KENGzoEiE8cd6E5R58VZmPgngl1HyDNb4d3r7M3QfeRlW8ww+gCLlAAAiutHeycwfYOYXQd3LvwulRM+KR6Dcb9z79X79vep+/TyUUnatdb/uMfPT51CvlSCQss3Ee6Ds9d9DRDER/UMAz9b7TkA9VC8S0RkAP+rkfQjK7wBW+gzKPyUmoh+B8lMI2BwkRNSzPvOawfj/1crr06F8Q36jJN1bAXwjKYf8DpQ/k/1sOQHlr7VPRE8F8F0Nj/8AgOdB3effrbf9MoDX6joZJ9+XNCyvKu9/BfB0IvqHuv2+B8CNJeUAajB6LamJNbdAmX+9IKKXEdF1zCwBXNSbcyvJnVB+Xr9ERH+/4bnU4c1QRO86IroWysT8X6y6fwsR3a4JdPGM0HX8TwB+joiu1/W/mYieP6d6HSsQ0Z5WPt8C4L9Yqu4JAOeZuU9EzwbwT61sDwOQmHwO70M9t2+GUk9XgY9A9YMvIeX8/2NmBxF1iOh/JaKTzJxC9em8pJzG0OrvHQB+kohOkJp88//B+P36PUR0C6nJSK+x8p4F8EcAfkZfC0FqwsPfnrVeq0IgZRsIZh4C+IdQ9vILUDN/flvvfj2ALai3j/dCmR5s/DyAf0xq1tgvAHgHlK/Np6Bk4T6qzTYB64c/gCLi5vNjcyr3v0M5n78TwE8z8x/5EjHznQBeCaUOnIW6J21T3KugBqUrUAN+GbnzlX0vFDF7NRH9c2b+HSi16S3azPNRAF/fsKzSvMz8CJQy9zoo0+uTAPyPiuJ+HKq/fBZqUPh/KtK+AMCdRLQP1f9eysx9p24fAfCNAP4TETU6nxr8BIAPAvhrAH8DNanjJ/Sx/hDqOfGnUNf3T528r9bb36vb6U+g1PeAEX6PiK5APSt/GGpyy7da+78bwL/WaX4ElqLEzIcAfhLA/9Amt6+Eup++DMpK8V8xep4vFcz8KaiXqj+BmgntBl79ZgD36PviO6EUvXngX0CpdJ/Rx3wTlO8joJ4Z74AijH+Jybb5Z1Dmz49BPXveCuCmOdVr6aBxt6SAgICAgICAgIBVIChlAQEBAQEBAQFrgEDKAgICAgICAgLWAIGUBQQEBAQEBASsAQIpCwgICAgICAhYAwRSFhAQEBAQEBCwBqiNZ0REvwo1VfscM5vFVs9ATWt/HNSSDf+EmS/ofa+FimCdA/geZn6H3v7lAP4zVLiGPwDwvdxg6mcn2uKtSIfNIvjD7s0KO0TfOk1GrQo1OG1ZPjQpf15hDHmOZVUdYxb46qfLPMovI5X9/xur7BPU5R526pIFBCwFfRwgxXClfWL31Ck+fVNVWLmAgOXh/k9/5lAOh1M9pGtDYhDR10IFtfs1q7P9FFRgvNcR0WugIsG/mohuhwpa+GyopRH+BMCTmTknovcD+F6o2Fl/AOAXdLycSpzs3MBfdeM3lVVO/Z0mrIedd5ZyFgWi+dbHDv5fVq45JnlYSdn2dUab9qtqb2vfux98My6n5/42Vtgn9ugMfwU9r/m5BQQsEO/jd+IKLqy0T9z6tKfyD/znX232wjevl9BpH8+zvCDbwkTVS7tJ5woZVcLGhj3e54pZ7wlbbGDgVS944QPZhYs3V+QoRa35kpn/HHo9LwsvAvBG/f2NUIunmu1vYeYBM38WKgDhs4noJqgFTN+j33p+zcqzfJhB1gzC8yI/RNMRlzISVJemDZqcY1WaaY5vlzdtG9vXybe9rs5Nr4kpx5fHOcax7BMBATNgLfuE79Ew7eBbRnzK0peVW1a2+dTlt9P48hDGCZnvWGVlV8E91hrpF3MBofz6GFRdI6rZ3wLTLsdyg17eAMx81izHAbX213utdPfpbSnGI3yb7V4Q0SsAvAIAetGJ8gFyloHeN1DPqk758jZRqGYlTFXwqV9VJMUlOrOQwabHbAKbNDUtbxp1r+wa1rf/8vrEaGm6gIB1xtL6xOkbb5gcUGd1d7GJTdljZB4uNWVlu+X6CFgV8WxC8pqiqm2Pm8LmnpurNFblmwPm7ehfxs3bcHYw8xuY+ZnM/MyO2BpXRdxBdpbB3iV4izJfLrLsJscuq4vdrj6laN4m1Gkwa31mrb9Naomm6Xhz7xMJuq0rERCwRph7n9g5dcpPRqjkU1YLO39VbbgmXRXKlDGu2OeCnO/T+B/bx6nLV6XKHSdUKYJuG89JGXMxLSl7SEvN0H/P6e33YXw191ugFhW+T393tzeHq7rYg/QsprUyZaSN6avJccrQtPxpzaLuOfh+G7hkbdrjLhJlpt6qdm5KzGwVzmfCZK7qhMvvEwEB643l9okqsuUbaKseC3UDrktImpC9uuP4SE4VmXTPo4x8NkFd2uNIwNrCJeG+NpkDUZuWlL0dwMv195cDeJu1/aVE1CWi26AW9X2/lrCvENFXEhFBLSD6NrfQSvhUrXn6hNmDsE9BapJ/GlSZPN06TVN21cdX7rpOfKhCGYFqi9nup+X3iYCA9cZy+0RTtWcWglE2CNtlu+l9BK6szCbqmY8cuGhDDpqqc8cZ7vUru451hH4O5LVJSIw3A3gugGuJ6D4APwrgdQDuIKJvB3AvgJcAADPfSUR3QK3WngF4JTPnuqjvwmiq8x/qT3tM7/Mznr6uzLYoc8xfJDloc95V9Snzr2sKH5FblMLma+cqn7lpZ2BW5Fu7PhEQsGKsTZ8oM4I2fRzZKlQrY2qL+kxr9qyrRxWpqMpncDUrYYZwVZkr7W329rLrO21VGoSAWSm8ITHswdMelJucS13oA6B84G8ClyTM0r4uuZiFbJShKUlbd7htPk1bNcjz7gffjEvDh1baQCEkRsA64X38Tlzm8yvtE0VIDKAZufB1bzMwu8TMt61t2fYxyvLYSkxV3jKSME2dNvBRvxS41xxodV8tNCTGWsI3A7PpwFsXi6os/ELbuq3Sud/ARwzLFL11cu6fBj71s+oaVIUhWVd/uoCAgHK0MR35FCX2fHcfH3XmS3sAb+PjVadw2ccqq0tVPrtO7nc7zdUI33WvS1eGOQwZ04bEWB+0VaRmmRzQFtMqW2V5Zpl5WEY05j2jdR2w6jAkAQEB648qZaqNGuaSmzrFq0n506JKyasjH01UwOMI19/PbYe2bbJon7K1Q9lswaYoIyqz+Kr5zKlt69XkGAYuwao6Th0Jdet+3DCNGXlT1cKAgKsZTUlFFRFziYtvkIbnd1X5ZWVU1cU9jkv2fMSvTI3zmT19+wMUqvzG6khvE0Jeg80jZbP4VrnlAOPmO7f8aUyiTQhSU9QRvHlMejB5jhNmIVR2TLJ5lRkQELAclPmB2SgjOj6TZZNu38YfzFfutH5hTdQ8n+JTRTavNpSR3Srzdlm7zaktN4+UAeVkpGp/m7LK/K7cNG0JUBvVzS3bdyzftrLfVY7w6wJBgJwD+am7LlXqYB3BXsNmCwgIsNBUEZrGzOgqJ1Vpm8BX/ixmVbscX3mEyfKrzum4o80516mjTfwCG2AzSVkTB/ZZynUxrV/SNObPKmWsTSyuKtK1joQMmA8hM2hKtqrCaXhJ7/yqGBAQMGc0IUttFC1fvjpTZtPymxCyOpNl07J9dZsTiTgWKFNP3f1V+ec0NmwOKXMDuy6ibBvzjF1WF6qhbkZoG1PauhKuVaGtQ7+rom1aIN2AgKsVdT5bNgkp8/uqGozb+JGVleHzWfPVz5e/jLTVYRpT6dUI3zV074uq9rvqzJeLGBTtMBjzcO6uI0TTxDur21d2zHmZAjcZbU2YLuE/zhMgAgKOG9ooYK6/2bTExRClKh+tWU1bZeStKeqIxFU+TBQoI2BtVEd3+xTYHFI2C8oITpP4XWXp69JWpW+CJqbRsvSR0Puvot5WpUrOK/ZcQEDAZqFKPWtq7qtSp5qUMes7nUsOfObNefizBUznY+ZTWGfA1UHKmvp1NclXR/CqHPTbTEZoE4XfnS0onbvkalB8ytrWvRZmW5uVIIIJMyBg/VHn29WWjFWVPQ+0dbBvQgzL8tWZdq9GzGuCwyzE2IOrg5SVYRpfsiaK2zyCsVapck3L8xGSZUI4RNH8XrRZtYkyatLZf00aN38gYwEB6w9fN60yHboD6awmzLZ1m/UYtoo3D1+nORKLjUAViZ/GRDyn9jsepGxaf7A25sgmaetCTVTFRitDWwJWNpNwERAtyrfTLoOcVcWfM7/L0gcSFhCw2ZiGiJT5mbnby/zTqsqflwnT3TZPIrVMQraO3jVtz7+MKM+I40HKyhShtoFam5Rft7/KVOgjTE0JWRXhWzSJ8JGvNoSvrH6LnIxQF5fNF16kaSy4gICA9YXP98reXvbbzjOLsjWrY39duTY5XEdlq65O1MBuuAmPXN/9FEiZxiwR/uvUk2kcxusISxsft1n94aZRy8pImP6woLHfpYqZ5ILwUC5H5Mc+p0WpZr6JEGVtURWbLBCygIDNRVOzYtmAOg3pqfPfmlaRmbcyNk+M+bjxaBs528bSskWCySHE7vN7bjWtRtv2dfnlVW2+LAsgW6ZsNPEz8sUFa0tq2jiO++riCyTbpA5NZo82gSFJljmPIwEIoWZ1AmNkC1KCUv/52uSNu8kor5SgLB8naPNWzezyyhz87W02gmN/QMDmoqkDtz0Au+TMp7ZNO+A2rU8ZqOT7quESMUPCbAJmyBabZ2pJfvPblMMMSCtvmfo5b7Rt32C+tDARab2CyNQFnG1DwspMimWBYNsSKrvMNsRqVv8xm4wZIhVHiohpEkaDdLItK3ztSE7WzxA87nVUuXk+ImjuxIBZYYhZFdGuUtQCOQsI2BxUKUm+7S7Zsbt5nemzbb2OE2z1yyViTONkqgpVyqQpN+IRQZNLJGfTYg4mzM0lZS7qyFEdmsxU9Jk628Yua5q2KpTDPOGQsUIVI1KK1iAFpJysUx18pJlIETDko2NFETiJgTQbkTO7XsB0BM2Xx6eENq1/QdTaVyUgIGCJaGOGdJUbHxmblQBU5Z/H82RWJa4pyshYGyJWB1dRk/o4gtXHJmfrTMxmwGaTsrbEp4xUtA0dUedHNk9lZZGzKQ3xEaIgSACUemV8wIB6X7s2sMqiLAdyqQhaEoOjCJRmigSuqg3rJlOs64MgIOBqxyzqFjl/2fnrHqNp2YsmTMvyMbNNi0KflCFIsxKxKhTmT/jJGbAez+R5mLk1NpuUtQn6OUuw1qrjGYJSogy1xjICvdrqmBDKTEk0TsbqiOq09SuZ9UiDITjWqhnziJzZ9Z3WpDnNtfCZNQMCAjYDZWauKhOmL72bps1jZBkK1rLUMcEjYjYvVawNfOSMoJQ00OqJ2RybYrNJmQ2fiW8Wc5uv7DIzY5tYZXXHXqSpEhhXx+JImSqlVCTIVsZmCRHios4crMszyhnHEbjXGZlOZ50MMIvZMiAgYPPQxoRZls6nQpltTRSqeT++2xx7HjAkTGBExhatjNXBJmcCyudMYjWqWZX/4gzYXFLmG2in9SerOoaLsokEZts0RMpV9BalkpnZkEJMKlJ1EwzatGldWImq2Y7MajZnLlUdXcI4CzFrm65qNm9AQMD6ogl58e1v4ntWlX+RcE2siz6OMRUyAfmKyZgLJiCHIma2OXWZvmZNVNYpsHmkzDUXNnG0nzbWl40m5slZwlK4ZG8R/mPad6tQx7J8ZCKclYi5+Zoqbb4YYSbUxjBVvmadBDRMJycBLGO5JrteAQEB64+2ipgLLvne1oy5bNI2D7i+Y6swVbaBqZ9RzfIlEzMbZSbzltg8UlZFfGYN+tk0bEZV+mlMl9MqbE0hLHWMaNKZfhH+U1VtU2XudU2aaabMmZ1k3M9smVikehkQEDAfmMHYJVV1XbfOSbvMhNmkPnb56/4IKTNXzhvzbg/W1hPbnLlKP7MZz0vMdGyi7yeiO4noo0T0ZiLqEdEZIvpjIrpL/z1tpX8tEd1NRJ8koufPVnVvher9l8rgmiDdj0lTNSNxGkVl0WTMxAVLFP+mYTpurqyK5zbvulVNuCgj25b5kjuJUvkM2qy9OS1aErK16xMBASvG0vqEz6m/jWrWxnTZFptEyAClOM1CyNj5TBxr+qL9xyNFxhiKmBm1bwMxNSkjopsBfA+AZzLzFwKIALwUwGsAvJOZnwTgnfo3iOh2vf/pAF4A4N8TUTTlwUffXaLUdND3ldVk8LWJl2vecusxbx+3phA07j/WScr9xwx8dVxUve32KWtDA72d0gzI85H51WDRxGzC/60q6Qr7REDAGmKpfYLQfMC3yUJd+qZ+Z03zrxsMIYuMbxZmN1cS2l2PecDES5M0UvvWve09mEkpgzJ/bhFRDGAbwAMAXgTgjXr/GwG8WH9/EYC3MPOAmT8L4G4Az57qqPMiEPZkgTJS4Ka3/1aRLluFWqbpyw13YTvL+/zH7HNehYnOd/wyYqZ94IwZdk2xmj4RELC+WF6fsMmWq9b4FJu6NPPGurmmGt+xyJgrsb7+Y01h+5kBG0fMpiZlzHw/gJ8GcC+AswAuMfMfAbiBmc/qNGcBXK+z3Azg81YR9+ltq4OrbE0TSsNV2hbtH9YEPkJm18+gjgwtE02IGVBE/R8jZotWy8ZUz6pkx6BPBATMEUvtE2VmMrJ+2+lcXzI37SIeK+tEEAwhW4RD/zKJbtXxjfq3Tu1eg1nMl6eh3mpuA/AYADtE9LKqLJ5t3stFRK8gog8S0QeH8miayk2fp03oBDtPWb5lER3XZOkLJ+HWax0IpI2GoUUo08s0xUuy9I1d66pky+kTKQbN6h0QsGIsq08cXLw4XoKrgtm/3XQ+86RPcTtOWCQhM+Uv23xpw8QzA0YhMzYEs5gv/w6AzzLzw8ycAvhtAF8F4CEiugkA9N9zOv19AG618t8CJWNPgJnfwMzPZOZndsRW+5pNG8B1Gj8wO988ZmO2hSFjxW8PIfPVoW3IkGWhSV3MuQlraahlOP3XYyl9IkF3YScQEDBnLKVP7Jw6Na6EuY8RQ8yAaqJgk7hVE4tFwfiQbULIi1lgnP8NAd2QU5yFlN0L4CuJaJuICMDzAHwcwNsBvFyneTmAt+nvbwfwUiLqEtFtAJ4E4P0zHL8aVaEzmjr0V5Xtm6m4CtXJjtVlovSbGGSmXmWo86FbFZr49mkfs2JVAmAdiNl694mAgOVjeX2i7JHhM2GWoQlh22TlrCBkGKlJx42QkXVxzDmSs32NMXWcMmZ+HxG9FcBfAsgA/BWANwDYBXAHEX07VId8iU5/JxHdAeBjOv0rmTmfsf7l8M2SHFW+Ol+TstcF9rJJJuyF9rtqhEUERi2L6dbkWG3826QEpDJjUqqJ3LQR/+eAte8TAQFLxlr0Cd/joMkj3OQz5sw1euxPBZuQAcfDqd8HJnWe5twkaVMtNoJQE6+jUmLhZOcG/qobv2n5B3YJRJMI9fZszmXAmmlpQkU0CrBaVcdpJzlMg1nNvcwFGVXrZlrP7gURs3c/+CZcGjy00ifZHp3hr6DnrbIKAQEF3sfvxGU+v9I+cevTnso/8MZfrR9w62pp+581zbMJMITMmPLWbdmkRcAmZmSRMmOyXSBe9fwXPpBduDjVpK3Ni+g/DaZRg5osFeSbHLAKQqZNeDMTMl3e0jDrsYgKUy3HEchdvBxYmWoWEBCwZExDyNjZ5zNz2iqZm34TYJ9T4Ue2SScwJexztKP+rzk2oIozYFo/rybR+VdpwhQOCYwipRI1WYJonUyv84AmZpByebMxAwICNg+uT5jt0F+VHg3TrzNsx/5FLJ00TX2Mj9cifb3s4xj/sjV3+j/+Stm818Bskm9papk10zJfwZqQBm1NjouoQi7HFlsvsEIfs4CAgCXCVbOq0pX5iLmzNN1tmwafY//S61AlbtQQs1kVPeNfVvzGKNr/KtfHrMDxJmV1PmFNnc7rjrHMyP222TISAFE7x/62mPc5TXMdmoC5UMsKp3+DQMwCAo4/mnRx11/Mt78sj+/vJsDUc96O/cuYzeg7RttzcM2YzJPXco1wPElZE6f8afPPknZWOPHIWpktm2AR591k1uWciBrl2oTpO57ddoGgBQRcnWhKpnyPiE1z/i9Usjn6ka1DWAm3Dq1JGkZq2Rr61h1PUuYjAr6BugkZaGuSXMbsS+PcP6vZsq6eFfu5YUwwMtVrS7zahMaw1y1l9qtlQCBjAQHHHdMoHy7Z2jTyVYZ5mC3bkLB5t1XTQ9s+Y3XpmCbVsjXD+pOyaS90k8G8LM0sJslFETJ3tuUsZsuyOjrbK4lXw/Nkz1QSkh6iW3YeTciZta9WLQvELCDg+GKaGZiuOdI385KdtFXlrQPMhASaQSWr9AWbsk5tHr/udahNb/uOlY1xPCKptm9Z02MsAetPyqZBmxhjvrxVWLYzvwu9tuXUZku33nVErEm4jypy5SFVNlGbG0Fz1bJIgHwrAwRiFhBw9cKnivlmVLqPCCr5vo4wZIww3WzLMjJWV0ztfqNO1Y2xNWU3JWh2jDKjkI3NxHTUsjVRztaflM3SSPZA3fh4JQO+7/sy4IS/4EgxmqnMliWEjN0QG+53e1tZWoMyk2GJX1klQWtLrM3yS2YmJkn/9QzELCDg+KHJoOo+RqrI2LqTryqYuo+dz5Q+VFVZxsiq+0JelseZDVl3wCqCPM1j3KeWrWpmqgfrT8qmgb2ouDvAt/VVWifYMcnami1LiCULh3jZf0v2sfntmiYtnkhFe1vXApoM+Qgac1GXSnJmtvt8/+z05nfZJINAzK5eiAjkKMKcZSuqTMDcUNad2zzG69L6VJV1GiaMSuY69zchZD6FrMzc6+aZUBLHt/s44shk7BIixwzpzezUxbvPUchctcyug22+9lRjmTiepMzAN6g3WOh6LO+6wPiSaSWoTT7fby8ZK8gWFb+ZSL9NEFiI4vtEuTYRlhhXKPU2Yh4naSUEzahnVKWyuUtaOfspl8qEWWXiDcTseIMI0alTkI9/DC49+QSuPFbg8CaJ6Lo+elvDIlmeC/Qf2kFyUeDEPcDpT/XRufsh5A+dC2RtU2EP1lVdvMlj3qee+QbxdYExEdr1rvKxKiujbJtLxDQRNPyK9H4y5kobrKul68PFf3ofQz/brWMVVSTATu/WrYqYlX1fh9mkDo43KQPGSVadulRH3lYV/gJQfmTGl6zNYuPO71Iy5hKxSJOwWEAmApwI5In+HhNkQqP7WyoCJVKGGEpEqQSlEpRJRawMUTPLINkEzVbQnPYfU87Krp8729U1Wddd90DMjheIEH/BLXj0a27GuecwvvALP4evPP1B3NJ5FD2RokM5hJZ0I5LI9RuAhEDOAn1OcD7bxYev3Io//8wXYvsD23jMn10E33k3OB1WHTlg1bAH5qqBe15qmKuyrJqo1alktj9VGyd+HxkzREyTMBKMSEjEkUQs1IfAyFkg1/WQTJCSEAmGZAIzkLOAlASWBDb11UTaJm+jHU4FXcJcRsx8303+svAYZeUtGJtPymylxB2AXdWriTN51TGWBY+zPUeinUrmMVeOETKzXwegVccgcBSBEwHZjZFtR+rTI2Q9guwAMlLKGQunb7NNzoBoACRHEsm+RHyUgYYSIpM6jAeDDXFyCZpLkDQ5K4iZ3lach/vdUfFKHf7d9g7EbKNB3S7yZz0Nn/0HPXzNV9+Jl5x6H05Fh0goQ4JckTEdnyXCZB/KtS1essCN8UU8qfsgXnTNX+Lwy7v46MtvwW987Mtx3dt6OPVHn0R+4cJSzy2gIarMW2W/Tb4J85vzvYyo2XnXQTnzqWQGbhDVJuZKm5BpMmZImIgUCevFGWKR4yhLcHDYBe3HiI+AqA+IDKCcC74YESBjgoyAvAvkW4DczhF3c0RxDpakCJuZnGAI2piCZpNLYIKYAf7znzhXUw4my1khNp+UValbVWSqiXLmK3cagtY2dpnkyUCxrkpWVv8m5kpbHRNCkbEk0kQsRnoiRrpNyLsEmehOFAMcYaQgE8Y7sKmWfiAQA4M8AmUR4n6MzhWJzuUc8UEGMcwVycpV52YpAUnaD01iYsy0iZl77mWTMIzDvyGdelvA8QLFMdKv/WLc820S3/6Md+M7e2exIwaKjFGOCBIJ5QCACIyo4smbQz3kcxAkCwwRYU/0cWr3EM981mfx4JecxJu+7dk4+o2n4trf/CjklSvLOs2AJvApW2UDrk2omihnVaRt1QqZqUedL1mdyc53jh4yFsc5ekmGXpziYn8Llx84ge4FIDlinJQMpmrhQKTq+FR0H4KMEqTbhOEpACdTxHFekDO2YosxME7OfMTM1L/N49603xqoZZtBytoQqCryU+f4XxdyYVq0zeubcemqZLMSskiAYzEiY7sJhnsR0m2BvAPIBOBIkzGtjEGMkzFfX7dfZEi/5eRbhOFehOhagc6VGL3zOZIrGUSaAzkDGRXkjCD8qplLzOpQ5YcWcCwQPeWJ+MR3X4uXP/fP8d1b9+GEOEKHcouQKRImaETGRMUTVuobW5GzHD3OMCSBHqcYIsI2DfCqx78DD/7gKfzCN/5PuP6Xt5D8yV8BMl/K+Qa0AJd8B9orW1Xp1sF0aZ+PrZL5zHbTEDLBEIIRJzm2kxSRkHj0wi6GD+xi67IEyVy5vNAoe5NJnkUaIhADnX2J7hVAPhBjuJcgu1Yi2UkB5pF6ZpMz2IOOpazZ59HkcV937ZZMzDaDlE0T0sJHvqp8j8qOswamSxCN/LHMtoaKGVu+YmPqWCwgtxJkOwmGJ2MMdywypuVljkbqmDFXqrLVH9sFYGICjYGppgTyHiHdIQxOCXQvRth6JEe8n0JEBGQSyEkn5FLVjAX8pswKcCRUoN0qmHYPZsy1ByUdXPimL8dt3/FJvO66P8ae6KNHKXqUFmTMEDEBRqQHIlclM5OH7VssByEBlB8MAQkkUghlAhU5elDH+Ykvehs+8v/7Arzp7X8bT/iFu5E//PBSzj2gAnVd16PsNyZSZSZLX9mrQBEDDM0Y0Vhe57shbgIjZayTYitOce78HnbuETi9LwHkelwYETIYkc4zblZWi9R/5qW+e4nRvQgMd7voPyZHZzsFk/JJM8qZcoGxJNEyc2YbYuY1+zbIP0dsBilz0VTx8JkNXVNkFRFbhapimy7JWnS8zJeswoznI2QcReBuhHwrwfBUB8M9gaxL4BiQsTJVcgzICGO+Y4aYqfKdDkbWNt2hfR2QJCnO1QXSHYHBSYHthyP0HkkRDXJQmgO5ksknVDPr/AtiZs616jq1NR0H/7K1RnTtNbjrXz4Zr/yGP8TjO+ewJ/pIKEOPMkRgJCQLIjZSx3Tektsgsr4LfS8lxFDDDkGAIUFISCJhRc46nOMrdj6N215yDj/19Ofj1h+/FvIjH1/YeQe0QJ2y1QY+E6f7fV3Ml8CkSmaHg6jzITPPb/1XRIxOJ8Net4+LR1tIP7GL049mAOdqbLIJmUPGygjYmNtLMY5YEluRkEFMSA4Zyd0Cg9M95DcNEccSMheQhpBJc8r6QsxCzAB4TZhLxmaSsjqy1NSxv4yguerZqmZdklK1xiL3l5nlnO8ThMyYK7sJ0hMdDE7HhamS43G/seJjkzGyOpStlBFPpCtUM/M9UmlIMihXxEykgOwQsm2B4W4HO2czJPsEyvSEgMxSzaRUExLGiJnHx8zTNiQZHNF4GqD8HgqEbG0RPenx+NSP7+FHvuw3cX18BdtigB6l6EBOkDGBEQmzw+lFvoI1cliCqU4rWJWZgyCYRuWTRMIZRCzx41/4e3jzLz4bj/7ks9B5xweDiXxV8Clhvv3zeJyvyyW2iZR3fwNzpVuOYESxxHZ3iO04xbn7T2PvHolokKoXe0PIxCQhm+Az9lgBJ91YXoxPHmM1TlCkhoHuBUZyOcHBrUBvr69mbeZ6zGECS0vqmpaYlaVxCe+CsZmkrA5NzJC+4KO+PMt8wJaYLr1rXPqIYg0hk70Ew9NdDE7FajZl7BAyTcqkZbL0KmQuERP6fhXWfrM9YXAvR/fEAMyE4eUu6EhApASRAnkHyDuEbCvBifsJnYsZQHodXQkQJBhikpj5nP/dtmhCun3XIBCztUP0tCfh/M8w/u0TfwenxCF2xAA9ypR6BTlBxgp1zPxt8GJl0ubMiDAiaRIOOTNmUTAiwYhI4mU3vhfv+smL+ODOs7Hz2+8PxGwVqGpye8Bto2zVDearVsgM6ta4rAuBoQkZCUaU5DjRG4AAXPzEaZw+mxUvtI0JmY+MCSrit47lFWrMkV0g21I+YvGRGh8oU6RMxgSRMU7cAxxev4X4xj4oYuRS6A6qzZlySmK2DmqnxvEkZS5cxcyQlRJ1pWpG38JUM18YDKHrVuY/5qlPKSHb7mBwuovBqQh5pxkhG1O+SlQxJpUPgsc7W8TghIGOhOjo2W+RRLyTIhMx8lRApgRK9QzPDkF2Ypz4PKF7ngDKQak+7abErKyNYJS1BtfBlBXI2dogetqTcOFnJX7wCX+MU9EBdmiIhHL0KIcAo0PSS8ZsIuYuPlEJnS+CImjAJDkDY8xEGgnG/7z3MUQ/JPE+PBs7v/W+Gc86oDVcpcwlYnD2l+WtKncdQUCpg39Zevu7RcjiJMfeVh9HaQL66DZ2LuiHsCBrTKgnZGOWEkIRhNy84NvjSDEWRSish3mXwUQQWimjHDpkE7B9jjEY9IAv6COKJCSENiYRWMyBmK34sb/+pGweHcLnd2X/domXj6y5EwXqjteWvLlhMGzTZZnC45DHiTUsBY0I2ZkuBic9hCwZmSvHCJn57pCxMad/AbDgEXmD2c/giFUPywlyEGEwjEDCEB4GYqneuuLxj4wj7AlC7xGtXJgAsjYxc66Xl5iZv74YZU0U0EDI1gLxzY/BA6+L8Non/FFByAqFjOSEOmaTsRFBa9cXlUo2embY5Mw8tDsk1SxNAEBWxED723ufwOV/uYV7HvoSiL/48LSnHTANXLWjSRc2g/AaKSWNYRGqCQf/JtHqPYTs5NYRDtMOog9voXN5WPiMjfzHaFz98hEyd781XhTbi+Prr9qlBZll2sRorCECyPg4C0LnMiP9bA/8eEXMoCcBQIpJYuY7b6D8/ijzK1sSYVt/UjbPRqgjS9OYMG0C5yN5TVFmuvSpQGXk0spnnPplL1EK2clIReEvCNjIh2ws7IVWvlhHOfba/m11zCZk0Gn0JAHjn0CxhIgZIsoRRQyzDIeUhCyLIIcR8oGA7AhwJHCZBIAEvUcBMRgNrgUxA8b8yxqFy7DV0SoEhWxtIHZ28LEfuRn/7qlvxTXR/gQhS8CNyJho2R8ls0XkJsmZrZoV8itD3awAvuHMR/DzP3ottr7rNuR3f3bKsw9ojbrB1gd2vm8qMWvqnE7OX6DwIdvb6o8I2aV0lEZYY4p5GXcJma2OwSFktk+yBduUyRiJASwAaD9kldCoZQSRAZwpYpYcMtLP9EBPOEKkO72EVMSMbNmL/PeEtXtidq0PwadMYx6dxHbuLnP2dgdt+2/VQ30WIlZRptd0WXGcMbNlpILNci9GeqqLoSZkdpgLtp36bTNlFSHTnVF1Hh51zqLeelvEQCJBiUSc5Eg6GTpxjm6SoRPl2E6G6EQ5hnmEK8MujoYJjgYdDPsx0k4CGalKUB6je0EVLTRRIkh1UDMyWqS4jJiRZHDsGLCqCFoIj7F6EOH+7/hivPZrfxdnon0d8qKakFWRsVZqmVdt8bgQEPT9NyJmklKcEEf4rse+C69+7Uvw1O85B3lw0OrUA6aEPbDav5tg08iYDZ/pslG0fvW8FpHEbm8AMCD+Zgudi0MY/zH17LfUroJI1RAy4z9WRsiM6hVZ5suYgZiBiEERI46kMk+al/eMIDMBSgmRjqOZ7DP692+he+sBCAIZ9MxM4Tj/lxGzNliSUtbK1cIFEZ0iorcS0SeI6ONE9BwiOkNEf0xEd+m/p630ryWiu4nok0T0/BYHmo30uGTMV26ZidPOv0i4ipgQzY7rU8lI+WdlJzoYnIqRJzTqAJEOe6GJmetDNjUhEwyOGZxIoJsj3sqwtTPAid0jXLN7iOt393H9zj6u376CM91D7CV9nOke4qady7jxxBXccPIKTp06QPfMEfJrUhzdKHHlCyKke2rZJ04icCTAegUCtcqBdf3sSQ6+9pnFH1DQ6FODpfWJYw7+qi/G81/2HtycnB936q8gZBEIEQiC1Mf8LkhazT+DsTxWWaoMdbyo+A4kOhRHQhI9ytCjFKfEIV79nD/EuZc9Y5nNtpZY3jiB9uRqmjwujPlzmTAK2ZjK07ASVl4RSWx1U+wkA+x/4iS6jw6tNOp56oa+cE2WY2Kjtd9LyMyLvw7BlHcB2WXIngR6OUQvQ9LL0O2k6HZSdOIM3STDVm+IznaKaDsF7+TIdiTSXWC4R+idZxw+sq1InA50S3pdzgn/OV9b+E5khZhVKft5AP+Nmf8xEXUAbAP4IQDvZObXEdFrALwGwKuJ6HYALwXwdACPAfAnRPRkZm4WDntWUtRE0VplzDJP1P0i4GlZnW0iYtIUfmQJBqcT5InqHCOVjEa/rdmVIz+ySf+xwmSpCZlJN6oHwPothzo5kl6GXjfFbm+A3WSInWSAXpRhK0qxFaWIRV4sfSOZcCQ72M86uNzdwvnONi4kOQ6iHg64g+gowt6QEbMyF6np0jqOmY9U6/ZoHPm/7ppIHnf+r8fy+sQxRbS3h3u+P8N3n7ircOq3fcjKCBkwUsdsItYUdloJWZSRg1W5tmrmKGbSUsx6yJALgVs7j+IZ3/pRPPQXT0F+5yenbY7jgCWOE/pv1WA8y6PBzTsPUjcLjOmyzoeMJv8aP7LT3SPc//lrceZ+Q8iMSkbawX9EyAqTo69cQ8jKTJZmDDExMRNAdpRVRcQScZwXC5onIkckJCJrdlYqI2RJhGEeYTCMkUcRUlKxm3buZxzudtDrplrLEOocTF8t8y+zz6OJCXMJatnUpIyI9gB8LYBvAQBmHgIYEtGLADxXJ3sjgHcBeDWAFwF4CzMPAHyWiO4G8GwA72l4wHE1a1qS1CRfGQla1OxLZ7CfMF1WYDJArIpFNjyZIOtRQcJgES/bbGkvoVQQMneGTENCJnoZulspdnpD7HYHONEZYDceYCceYi8+wlaUoidU1HVBEpIFchYY8AA7UQe78RDb8VBFjhYSlwDsD7tIDmJs6yj/kgEhpV5jU6tXebP7ovEMTBstTJlL7xPHFA/+06fj+57+NmyTFYcMUgeH9ROyOjLWJCSGQc5c5DfkzBCzkb/ZODFLCAAzcq2a9ZBCksDXn/lrvOY7b8eTvz8GZ9mMLbN5WP44UfLdwO3GdX5k9n4f4VsFbCJkmy7r0he/tUoWS5zs9fHI4Q5O3Z2rtYILcQBj5Mo2W9rlFmZLi7CNmTnttBYhy7sM1oQs1oQsiXL04gwdkSHWhMzMbmYAGQtkMsIgihELiX4cYyiAlARETujcm4CePEQkJJgJXPiXoRnhgp2ugsQtmJjNopQ9HsDDAP5vIvpiAB8C8L0AbmDmswDAzGeJ6Hqd/mYA77Xy36e3NcesqpXrQ1aVblkKGeCfednGbGl+C7WweLabYHgiKvwARkrYyIw51uHMLErrrc92wDQO+4a4jY5pKWTdHN2tFCd3jnCy28d2PMRuMsCp5Ah7cR8noj66mpAZlcwg5QiHUQeHeVd3yLyYDHAxE9i/0kHnIILIGCJntcqBhPI9MFNzgGq1zEfo25D7ZirZ8vvEMUN84w248X/5HG6MLxYEPiEVh8y8O7QhZD4y5hI26azlZfLY5KxYjIlQSsyUOZMhmdGBREoZ9kQf3/y1f4H3POuZoPd8ZIaW2Vistk80VTzKCFcdyfMda1mkbaxuTcSG0V8SjF4nRVdkOPjkKURH/SKZ/aI/8ivDuNnSHhtgvus3Jte1BSgmh8lYxabkLkN0ckSRRBIrMtaLU3REho7IEZMiZQQuqp2zQCYIHY6RiASRUAGj+0gwlDF6DwOHD29j9/oDRco4giwsP5ZaNiupWlelTOf9MgD/gpnfR0Q/DyVBl6HJe4tKSPQKAK8AgF50Yj7EqEzlKotV1iQA7SJgFC8TCqPimGMqGQAIAdmLMTwZK+dJGqlk0iZkDiljN8aY/dcQtkj9HfObjFgRo06OTi/FVneIvc4Au8kAJ5IBziQHOJ0cYjfSaxMKtW6gIImOJmY5C+Qg9GWCQ9HVaxeOVLQ0j3D4mAiHjwpERwKUMzhnRbikUQe1WlZHznxt2YSYNTdfLqdPYLuuHhuLB/7xE/D9N92h/cjSCT+ypoTMJWNVZswykhYRjeKUQYxMmh5ilrOqn3H8V2to5uhRimdsfR6/9s1fjad84KpUy5bSJ07feINf9arqsm0IV1WNyPm7DBTLKNWl8+QjRhTnONnt475zZ3DNOWW2ZGssmTBB+vzIxl7gaVwpgyU2WQ79MgG4oyaBRbFEEuXYStLCtSXRri0xKWImtFrGACQIKUdIpUoj9MlLEIaSMDwZYftBQnomghAMwWocIVP3eZGpBStlszj63wfgPmY2URLfCtX5HiKimwBA/z1npb/Vyn8LgAd8BTPzG5j5mcz8zE60pTbaJjr7U4eytJ4Ao5VlmHRtCGLTY7gqGTUI7+Apg5MI2U6CrCfG5Gc3/tjIXImxWTU2IRuTpIVFyIo66DISibibYaub4kRXmR5PJn1c29nHNckBTscHOBUdjn/EIU6Io+KzJ/rYi/o4FR3iTLyP6ztXcEP3Mq7pHeDMziHENQMcPoaQ7go9SYG0A6oYLaHkmfAw4fTvQ5Pr2UwlA5bUJxJ0m9ZnoxCdPo0zL74Pp6LDCbOlHRjW9iEDqgmZ68TfBK7SNgq1IYrjuWE2bMf/CIwEUi//lGFHDPBPnvN+0O1PbFWPY4Kl9ImdU6eaKVm+T1PY6e3n5KrQ1LF/LA9AAtjqqKCwJz5jratszscspWRe6j1luL+5oj2KSWYJIBMGElYKmZ6JvxMPsBMP0ItSbIkhtqMBdqMBtsUA2zRETwyxJYboUYotSrEdDbAdpTrfEFtJiriXIdthyAQYPryFWEgIGjn922t6lp5LG3K9wOs+NSlj5gcBfJ6InqI3PQ/AxwC8HcDL9baXA3ib/v52AC8loi4R3QbgSQDe3+hgs8yINOnK0peRPfuYsyh1VbM6PXUpiEQb/zXtSyY7EdLdSDnxm9kyrjP/2CxL+Ds2ecyW7n4dADbq5uh2M+x0h9jr9rHXOcKp5BDXJvs4E+9r4tUfI2N7oo8dGmKHhtgTfWyLgUoXHeFUdIiT0SFOJ4e4tnOAM71DnDxxiP6NGfpndCyzWMUzg03IxByvmQ8NiNlS+8QxxJXnPhkvecyHsCMG2u+QC7Ml4InST1RLyGwIUOVnPK2YIGdumeb49oxMlUaZMQWxXnkgxZdufw73fsOZ6RtnQ7HyPlFHvtoMrlUkbAleLmMw9ag6rks4NDGJ4hwnOgM8cO60Cn9hjVFsVKVifKAJlWzyGDQiZmazqZelknHM2qk/RxJn2IpT5UMcKTPqlkixLYaKiBnLikjRpQxdytDT+9W+IbYjlX8nGaKXZKCtHMM9YOthYJhHiCJFzCZmYtprhU573dbUpwwA/gWAX9czaj4D4FuhLucdRPTtAO4F8BIAYOY7iegOqA6ZAXjl3GZeTuP4b6tfZfnbmCvLSFRbk2fdubgzLo0vWUTIt0cq2TgRG82I8U5VdlUymPxcrpJFDOpIJEmOrU6K3c5AhbnoHOKa5AC7kSJbe1Ef2zQoBtoIZkFnLT2zMvOkiJRTZwTkEEg5RtqJcJQnONju4MqpHo6u38XWIwLRQCq1LFdkFMRqJqbt49P0nmiarvlszuX0ieMGEeG+5zOui6+M3Sdjsy09ZktgkpD5yFijKuh00nriGrOlC+P8P1mGWjPT1N34lm2LAa557lmIXzwBeeVKo/ocIyy/T7iXxncLsPO36aN6laZL+3hNA8ba2QWjEyvz4M69BMqkftbTqNwalWzSlwxjY0hhWdVjjdQO/pwwKGYksUQvUaSsF2Xoigw9kaGriVisXVgiaEIFBoPATMi1nxkA5ZbDhCwSSJMIaR5hsC0gLwkMLvRw4toD5MTay8XyLbOv97Tkapa8NZiJlDHzhwE807PreSXpfxLAT051sFn9udzBt8602ER1cU1mNspio7nwmC5bEUzzJpNEyLYjSH1FC7Oj6TCWP5k9Zk1Mb6bJjuY+cDhiIFZRoDtJhp2OcurfS/o4HR/iRNRXipj+OxbWQC8ebZCDIEHFLBsAyIVAGkXoc4xTySGudLs4v7OFC9dtYbgrkBwIiEyCI6Gk90g/DeyZmHZ9206i8KGhCXOpfeIYIX7MjXjul3wcO2KADnK9fNLoOkWePGMmzJJ+1pSQuXl8xMz4mNlEbRQqY/QiIEnP3dEvHxEzepTi79381/ijL/6aq275pZX0iaaKFjvfy8ib+5ysStukHlb61vyqiT+ZW1/9l4TETmeIs/snsXfeLC48/nwcmSJrKmURMZ9jfzHmmMCwkfJl68SGkKUFIdsSQ3QoQ4cyxJCIKYft5G/KFBAFKWMQchEpP7MoxSCOMezGSHcFeg8TcC2U+ZJZd8+WvmV1KyUsiJjN4lO2PJQRniqzpJuvjIRVmSyblN1A1aqEq8BUqXa2SmaXTzpY7Jb2JTNvOfoNyJ6BOd5ZjWw9Sc5cp017HwSDEomkk2G7q+TjE8kAp+JDnIwPcSI6wo4YFoRMBdTM9Uc5bZtPzzhyW4E3e5Rqk2Yfu/EAJ+IBTm31gVMpBqdJrdkZCR3QVRRvdm47lWJWgh8wd+x/yc14zslPIyG1jqRtunR9yXwqme+3j5BFJLwfFz6TpspvEcGSEbeYJUpGFVYTW25NzuPcs47vJI2NgK00+T5VecrgM5FWleeUPYXghdb+ZMZ0GTG24yH4bBeUjguQZqww4ZOK7fawCOe78yy1q1XEw4yhQiZpx/5enKEXpUodEym6lKJDSilTL+8qUHRMjJhk8YnAmrAp0pZQrvIZpS3OkHQy5FuMaMg46Hcc86W+SISxsW9qLEgp2wxSBtSTJMBP3nzltEnvO0YTtaXpRARXxQH8Tv7u8UzZ2nQpe2oppdF+y0zpzqSx5GX3jWrCl8zp/MqXTKlk3SRDL86wHQ9xIu7jZHxU2PxHs+dyTbhy9EjFmepZn4SgyZkJEJqjo/1weiLFbtTHiaSPE8kAWzsDDM4w8t5o2Q/WJFTV1WnvsvZfRpiTgFY492UxTkUHXtMlMKmE+VSyKkJWRr6a7q8kf45vmSoPhfpriFlPpLjypX1A+HS/gIXDECdyfvs+deW4SpRL9haJKcsnYnTiDLkU2H6YrXHAGqvsF9yJMcf6a1QyjMYRb1yyCJDGshJJdOIcvUiRMDPTsluYLBkxcsSkVPIYEjG4+ET6RW2cmGVFWV2hlvHjrkTWJfBFRcoKYta27aZiy7NjM0iZj0iVOf+XoUwRM/lsU2NZOkPGzHHmGUzWdfL31b8EHEXIelHxdmMTlsJ0WfX24zxU3CCAYxAAxWpNy26SKZUsHuB0cqgJ2RDbmpDZCpkiX0BHz2YrPtDEjGApZqn1ybAtlHn0xNYAw5OMdEvPuoxo5PBv2sijIs4FYR3MxUFEyJ92gB6lhS9JnekSKA9z4SNkTeGmtcvyTSbwqWV2fUVBMNVMzC+77V5Ep082rk9AC1R1UZdI+VStOsXMTt+k/CYEbxY0KdsmUoLRizKc728juaJNlyZav07jfeZXFW6ld1WyYpWYiEEmHpn2IUuEegHvanNlB4pgGUKmngGq6EgfxihlipjlmsDJIvZlInJ0ohwikci3gOQyLFKmKtiYmNlqWmWapm3VHJtBygzsgbaNUmWTKZ+vl5vWoCp2WVMlrC1qzmvCP4oIiAVk13LMtN9kyjpaMUV4lGfkS8bjf82xdVwyETPiWHWAXpTiRNIvHPtNLLJtMRjFmNKEzDhqJyAkGJ+1prarUAKFWiZSdEWK7UjN0NlKUvBOhmwbRViMUf2ddvGhjKgFc+ZKEZ0+iWfccj86+m25znRZp5KNld2CkLXNUxdqw56FqcJk5Hj63lngxuta1ymgAZoOtuZv2aA6LZkqM2MuAm1UHE0uhGD04hSHl3rKwX8sDfR4UnFIkw7WmGL/NuksQsZC+5LpEBjdKC1ikCkzpYlJphQyo47pd27EhpDRiJwZ0mbUsphyJEIrbyJHHOfIu0DcZwzzSJsvbULmmDCnxYJI92aQsmkIkKtoNUnbxE/NzjNvVJ1jGSEkgoxV/C4AoynNhMK3rHD4Lz2udZiqhxVBkbJo5Ky5HQ/VNGYxRGJ8wsQoxpQiWkBCioglJIpFnhMSettIMesURM74lw3RFSm2IhUDLdrOkO7oWGWO+snTEuVgzlwtrr8GT987CwEVLHIWTOPYv4gy3Qer0BHKb+5cwOEX7M2nYgH1MF27qYplFK8ml9wup6nKNg9Mo+SRImWJyJFcEhPKv5mh71O9ysovmnDihd8iZTFAESMWEp0oR0fkhUrWoWwUJFar4ybWn3oJG/8U5My8uEFqtSwfmTSFWj9TdtQ6yf1hrJQyU8+SEFDrhPUnZQw/SSozMZbBZ750Y4i1HdRnHcxnnXkJTbwigozI2Q7zWuHvNGWky81v7yMo02WsfAO6sVpkfDtSsyuNSmYisXe0ShYZnxv9NwIhQTS+zTZlQjn9Jzo2jfI7UM6hnU6GbAvKf85SAtm+bu5KB7PCLIMVTJgLQXZ6G9fG+8Xiw5EzWjZZKsmHaVSyurylJlPLr2yiLOt8ejRE/5rgU7Y0uGTMhbutzSPDJmJlj4Z5PjJsUtG6XEYkVP/qXHbLteVDJ1dpe5DXdFlYZoy7jGCQ0EqZyBFpAqZMlYpURRg58hvjRxEmDWrCDWFEzGKC8jMzEwEsH7OIpDrPiCEjguzHuhweVXdsXJvhAi2IzM0ap2zxKO4XmzFwPYHxzaQ02+t8tsocHcvSu/VqCt+al9KjFFSVKQBOhNd0OcpfktciZ8WZmnguBvabZsQQWoruatNlV8+gUdOZldmxA1m89XS0ydKNgK6qLgCoODmJbooIQE4SqWXGND4DnUhJ04Me6wC5um1MG+ri5g5DyJpH9g9ogaMbejgRHY1ts53869A2Yv88YC/BVBazbCy9Nrl0KMfRtQLBq2wFKOce84FPlVsE6kI1ePMAkZBIZYT4aPSQ5KbjlTWm1M6DKHyYGRAMEUnEwpAmLtSxCFK7KKi+4RMai+rpGWrF6wwBzBIZqDBhmokAETEQSchYQPQFaCyaf8n5lhHradp6Rqy/UmZQZlas8gfzpa+afVmVz5fOTl9W3jxQVhdNEsZ8q1DhR2btH4P7sPLIvKyXqiBSUnSipeitKNWmSzOVOSt8goqZcxgpZAICCY0rBa6vkJGoVafVnVe/FSVRrtZPi2icJBWk1HPSddelar/koJAtGCygrzNPqGSbCN8MTANBcu3MJccG7q3T5lZq65jPJd+nPf6CQVD+jYM8hkirXvw94gQ8p1Lxol9YMLRSFgk1ZsRCmfALhUyvbWkm9ZhhTPkYTy5lZlQzASpUs5EKxuoZosPpkDafRgM7jVX1Ne6D66+UFW8fNEl+XEWr6RqW3uOUkLWqMmedfVkWDsNXbsWKAWxJCu6sSm+ssbH8DeuqNWURScRailbxYdJiZlmCvAhpYHzJbJVMQFQsFK2Cc4IlhhjNwAGgSZ5enLZYHH0kk8+MpibjQM4Wg4p7MBj6AhqjUFWc3zbm1YXrLBFGlKkQZ5YKUs/RYR4jNgG2afzDdvs1qXPJi3/xXBYACaXQFeZJHR5GEI+9cJuiyt6t3d+CaRQHkJXaZpz5jWM/RwDl5ndJ/WtlvyrOUJN3Sqw/KStuFKsFfGpZE5NmExNm0zU17TLnrZC1nB04Qbzc7/OoHgEk1AKvsVbJupFak8zMLotoPJxBRP6Zcu53dRIqSroxA8lCNTMyNxcz2SDYIZ+0mOdeIGHLQUUzqyWLNhM5qxUrAtYMPvLmKl91l81OYxOwsjTzwkwaAEOOLVDpKGFtXtBLMBazTDBIKB+vSMhisos9Rti8cFT86JeZZGO2MRgSrP46Q/XIg0dZdSauyTRtF8yXLVDm6N9kAkBZTLJpHPeb+J+VoemgP1W9ptzvI3GF7qveQCJidKIMHZEhESp4n+lsBmYGzcgB2hc1fXzbiJBhLE5V+Tk06CxlYTAC1gbEgIRADpqKxPjWplwl8or+KlmAsiVW5mpE1Yto2Qtr29vOTW8TPB/TmDfm+L444VdW9vy3vpdaep3zF4ILPzKh17GM9PqVxp9MWA7+SulyiySraIJeNUltKx7vPPbXrs9YcbOGwVgC1l8pM7DVMBt1a1ja+Zsep66sWcq34XMcLztuhSJHFW8DRQR/KstQgomOyUUnMwH5uiLTsyTzIpxBhFGMKR/MuoECQvsHRJBg5FBLflQNrzmTetOTpNcza3mN2qYPMy6Xgq2HBriSb6lgdho5CIJ57eZWGAJoE686J3+VRhHOPifYPXt1rjm/cpRdplnNjHY+9xirvH+dY8s6xaeqDRqchz1pTClmymwYkXH0V4FfSZsaBckiNJoxXRoCZitkZG1n68W9qBqNWBoXlSD/9W6qepm8K4jqv1lKmc/XqykZKnPMdx372wz2s6ov1oDP044+rBzRC57lvii4/hVjZj87Yf39Z2z1xkdgW6gYYhHkyMxI9c7ak0vWUOmC0jkLKMqn9ueSIHLADmdFIc7YRiO+cIhHsl3kegqxq5b5lKcm6ljO0ytobfNKZuRgb63M+eQscCXfQu+RdOp6BcyAMvWq5NnpRdVkAt/L8To8mjTpZCgTptsG9vOzGQeh8rYs5C79Ek+MJFK+xmYhcSpiknGxrTi+9dslZDbsEYSZwEyQMAqe+k259j2GHtKnuRYrUNY2h5T5FDGXQJXNxPSVYefxfW9bpxlBroF8IkF53YR23Gw8vbkG7BA4Flx0NiMPJyLHmfgA10T73oCf40vN+Jeukdo/QBofNIzHecpBav4lE1IZIZMR0jyCGCpSRoz6EBh1C8oHrB4PPYKPX7lRX2v/I8m+zFXKlJzDKOgSsmnKNCXkujNJFpAQuKd/Dbr3np+1igGzwDUx2h+2PmV5q34bGNVpEY+Z1mqP+ppLge1kCNkRzsv5ZHlli5BXVsfz4k+kFkDfjQaFSua6poxrAzTSTIrjj/75zJsSygdZ9TFlTWEJiAzIe5Z61gTmHqjDArna5pAyG2V+Y1VR/KtCZ5SV7RK2eQ/kljrGYrryKWdQxpqkeO6UpjcPj14KJszynps6Z0JXqIXH7YWXbUQF+aoe5CQkcktpyBlIIZByjJz1XwgMZYQ0jRH1CSJTCqFRCotDlC3c7k7iaEKog+lyKZCXLuOjD96EIUeKiDMpUzUmyZh0rptR0cqUs7aKV1V613RZeswivf7LVJgvP/DIYyEferhVnQLmAJ8axp7tNkFrC5fgLQrTqDcMZFIgETnyzviwTy4LMllKz6HMxcZD0BiISaIjsglVbKwORXKjptEEN1bv4Kwe+fq3ek6oF56c1Qt8LgWQC4gMkF2pSJp79MbjYjBfVqPtUki+vOa7gU22fKZMN79LzpZlOtPHIZso6O+UyTFznrmbJ/ruhGw9TTVGb/6PpCfwaL6LlJUuNmF2qrjzUzY+ZIqQpciRssSQGSkIKSvH75QjpBxhIGP08wTpMEZ8pMmoe46+MXIa37OApYKzDPzRPfQ5Qa4d/qV1L5V5YJWRIpf05ywbkTNfmjqVzCWKhrCZmZcShpAJ9GUH933qesjDw9q6BMwAn9JVpYC0MV9uLBRZEWCkO5MCQBX1aENLyFEaGYT9rIv9vFe4J7hwL5ddtdzqgQxGzsa6YvUv1oRMf8+kADIC5QyxlWnzpfLPGTvWml7vzSBlTWZUmnSzHsOgScyzpnHP2qJp4Fr9XWQSItUEbULlanvskm1Oz8lYYD/v4kreUwOp7nAjVQD69/iAJfW/iKggZBISkrlQRnJdRsoxhhyhLxMMZYyDtIP8MEZ8yCr+jFbKFDmbzvQbsB64/kMZLuY7SLVaBmjneH1ZXb8ym/D7lCsfmSojZ2Xb7TLqVLIqfzLzcnEgO7jmL0V4SVg0bFOkga/JbUVrFh+wuuMsGyXPcCkJGQsMfUuvmud7nd+dm74GkgnDXL1UqzmXikhJ68XLXCrb2JHrwBcCBBMGY4yQMfQLj/I5zlh/pPqIofJ72+qmyucM60/GDDaDlNkoMy8C0ylnPtWt7hj2p2zAb0IE5mUeyySiwWhIKBSkMsXMnpni61weEgbtTMlaHs6kwEDG2sRIOqTB6HayTU9qwBoNauaTcg4JiZRVfLIhc9HZ+pygzwkOZRcDjrGfdXCUJhD7UaGUjeppyJmucIl/HgVz5Npi98MP4H2XHo+UY0gWSil1TJjq7XhcmZo0jVcTM2BEwqoUNB8hmyjHR/wwuvfNbGGpTfB3Ht2C694f/MmWBnK+28TLfr5RSZppjmPnbUhclgUpCf08AU4PwVHJ0D9rfYu2VWOM8i5RhGnkjG+57YDgGnkATcx4RMZy1rHJME7eMhaFNSWV6pOlEaIBkPUInShX5kvWvmquOXJincGGWKCJejNIWRMC1RQu2fKpY3Ukralyt0hYbUF5jqivTZhc8QHGbz4fGZs4znheKc1AQxjIBH2OC3u+UTlyVgpH4SdW+IuN/8vBxcCWaqXMmC5TjjDkCCnHOMw7OMw6uHLUReeSQNxniJy1CdO5VmXEvEkaG4HALRXZ/Wfxpx95GvqcYIiokQnTp5YBzYhZFcoImVeRG/OFZJ1u3HQ5RIQ+J/jdTz0D8lOfbV2fgDnC5/flI1F1j/ay28pV39ZBpDfEQxKO0gTX7h4g7zkhmZnLq+oZJ3ynZvskkyZAzIRUv8TnelZkbgha8eJF6j0axldM/dPVgj0jk6H6VwZCBoGMo+JjiJlMBeJDYLgHi4xZ7VB3UZo8MhZIuDeDlBm4BGpa3zK3vDKiNU35U6KRilNSD8oZ0VEGoYNS2r5WZN88FYcoztqoaBNvFABLgpSKdGXaz2sgEww51mRMkSmp336MagCMBi9XXZDMSMHIAfRZEbI+KwXuUHZxKDs4yjvYT7s4OuiicwmIhlIrZTxy8vddpybXrSzNugXIOu6QOW7+I4Fz2d6I3JsPoyA9VWpZFTGzZ/l6D+9JU0XIvJMOMK6S2abLi/k29t6xA06HLRsmYCZUvaAaGPuZz+xZBvvxsCpFrMkSQNZfZmCYRdiOh+ifjkazLuvGB/dcKzAWmql4RKvxQmqLCmuzo09DAFQ/yjFOxiQYGSxCxpqQwXqBlxEGWQwaCERDBk4PkVsWnkbn2pSQLRCbQcp8MyHb5HMJl8+B33Xud4+3RIJWh7HwGfq7GGaIDy0hmLWflUXQVGanrCrlzKQ3PSYnyFwgyyOtlCl/r4FMkHKMFBGGiJCywJBFMZAaMiZZfYy5siBkzEgZSFnggGMccAcHsosDqXzWLmddXOxvARcTdC4xxJBB0vowl4fGKFM/myAQs6Vi71134Tcf+HIcyK4i99YsTEA/rI0aZSmwQD0xG21j72cyXTUhK/ZVqGRG8e1zgj945Itw/Ts+N13DBEyPsi7sEinX1Nn2GJvwqGBClkXo5wn6N8rx5xsX/+nArw1OyPc4ZYzCFemXe+PukmtlzPh/GZcX44dcvF9bxRvNLMdISZNMSBFhwLEeezQhy2MM0wjRISHvEE5sDQqrjnr8k32ak5gwQ5e5JtU3zSzYDFJWRpya5HNRZXYsM3HZRG3RJss25Vt1pDRHcpCpmGW6Q5Ac/5ibccznDBh7QJl93rAYkiClwDDTHUDGOMoTrWwpU2PKEYY62GvKqjMZ06QhZzkUMSsIGYA+C/T1ANbnBAeyg0PZwX7excXhNi7ub6H3cITOPlthQEb3RWHG9PmTTXPNJAcT5pKRP3oe595+Ky7m29qMKZCa5Zcs3m1TrSbErM0yTG76MkLmmi3LVLI+J7iY7+DO//oUZPc/0KY5AuYF12RZZr7cBMxYV5aEK8Murr/2ErIdZ0Ef/SI/ERqJPTzEUZzG+Isee5Ary4qUpGJMGlPjWAgLbdbURRkzpiFiI9XMqGQCQ0RjvmRDGSurTRZD9mMk+0D/WrXqjJQlSpld6TW7/ptByoD2fmMGPp+jOn+xWY8/DaYlmoVfGSM6SBH39WxEWxuWFtkqtk/ekAQrj/smKaFIWU7IcoGjNEE/S3AkOzjMlarVN4oZj9QyQ8yM6UlCkbSUWYe/0GZLLUP3ZYID2VWmy7yLS+kWzh9tY3B+C71HGPGRmmlKUp1zYbr0tZNF4gvzcNN2DirZSnDLHZ/BHQ8+q1DLUu30n2piZt9LrmIFjBMzHzmr+1eUZ+UvI2Q2zIwwWyUzLxh/+OgX4XFvuX/eTRVQB/dZ5j7TTJpN6eptycPYS7c6SWZgMEzQjTIc3CTGxrWxcBYVz0kyhbrkTW82Qb0pJyBXSlkqhXLCZ4Gc1d+sWO92pJbZxCxnIGPdr9iYLUkTshjD4qPVv2GC6FBAZIzuNX1kUpG+cUJG7dvRbdMFk7iZSRkRRUT0V0T0+/r3GSL6YyK6S/89baV9LRHdTUSfJKLntzjI6G/TBcfr0GTyQFUMs3lghoHfb8LMkVzORjG8pPXmY8iYUc4stWxSNXP8ykw1JcCZQJoq230/V7MijW+ZGYRSjguVI7UUs6FFxFIAKdt+ZEolO2RFyC7l27iQbePRwQ4evbKD7rkI3UtcEDJzziTliJjJkmtZhgWZopfSJ44psrMP4v47bsPD2V5BzMzkkUKJwqR/mauYlZGzOvjIHOAnZLZKNvJ7s8yWMsHD2R7++rduR/bZq9t0uZI+4VPFgHKCVoZpydC8MYuJFRiZE3OBS4MtbN26j7xrOfzzSKYiTcxK3Vt4chtb40RhndFqWZaLYnZkKpVVxTjoG7XMTIxhKDJm+rty6tdmT0TItOlyyDH6MsGhnpmf9WMkl4H+tYTtJEUuhTZfYtzh366sj6TXYQPMl98L4OPW79cAeCczPwnAO/VvENHtAF4K4OkAXgDg3xORMwWkBD4CxdxMvZpYcr6C2JURtUXNuPSYx4o1MF1TbdnAYu/PJJL9FMkRT5guySJjhXG+xPnRa8JkgCQBGUHmEQZZhH6mOsTlbAuHcuQHdsAdTdAi9DlCCsKAof3GRp++VkEMITO+ZBfzbVzKtvDIYBcPH+6g/+gWth4kJAcSIlUfyqUaCdkzA9PXRm0J2Gymy8X3iWOMm950J37u48/DIXeL+8iYMVP2EzNgcjKJj5zVfQx8M4TLCJmp05DVi8gQonjB+D/vei5ueeMnl9Nw643l9ImqbltlwqyCbeb0ETr3mIsatKvOrUXkeWbgcJjgZKeP/ZsjgFCEEypbQ9l3vr7mK8aO3HwInCk/5GFuCNnI9JhB6E9UzMTMLIKWQRQvOoVTv4wx4BhHMsFRnuAoS3A4SBDtC0QDRnLjEVIpkEsBljQSGepUsrFzrPAnW2eljIhuAfANAP4va/OLALxRf38jgBdb29/CzANm/iyAuwE8u+GB/NubKCJ1pMYNj1G1dNMi0YRoOmZYcpQhYoboZ+hczNQyRFotU1LyuElzjHh5/nofQAxlwkwFhsMYh2mC/bSLy1kXlzQxs82PNjFTH4G+Nmv2OcKAo8Kx/4rs4Uq+hYv5Ni5kO3h4eAIPHZ3AIxdOYOu+GFvnJaKBCpSLwsm/QiWz/e3ami5nIGRL6xPHGPnFS7jp5zp4z/4TccCdMTPm2GxM+IkZAC85q/It85kx7TJtHzKvHxmMCV4ULxgfPLgNp15/Avkjjy6imTYGS+0TE87aQCWJatPVq/zRljBEqONQKwJWZgHJswiXhj3sPO4Ksu1YzcRkjF5yMVLLDCaEOl/b6u1kxpxMmzBz5Yvcz5X/VypHjvpD4/KiJ4llYxMCSE8ei9V4Yiwyelb+QdbBwbADeZigexE4uoGwNY1K1rRJl3CdZ1XKXg/gX2Lc9/YGZj4LAPrv9Xr7zQA+b6W7T2+rhn1jTGuKcmddlqlu9vdVxCOrIw2+2aPmtyElmURyZYjOFQmhRw1FYCyzpWXKBJOXmJF0TJjQ+3ICpwJZGqOfxjhMO5qY9bCf93BF9nAou7is/6oAsAkOOMZAEzFDxvo67IVLyB4d7uLs0R4evHwCfLaH7bOMZF9CDCUo08SsqUo2bVtPj9dj0X3iKoD4iw/jD379q3B/ekb5K3I84V/mI2a2ORPWNh9B8/qSWeltMjbm1G8RMmWap6JufW1SeTA9hd/5ja9B/GcfXm7DrSdej1X1CZ/Z0v4+62DcRnGbJwpSOMWBGWAJHA462IpTXHoCFeX5yJYb5mL0ncde8u3qEANCEzNkBJkJpPlogthA6r+aaA1ZqV8DaxZ/ptc/zlgoc6VUxEz5MSc4yDs4SDvoH3XQuUSQEbBz476a6SlF4eTvVck8RHJpxLoGU5MyIvpGAOeY+UNNs3i2eZuBiF5BRB8kog8O5VE5GWkKN19VANlVL8njO75LJn3gEUmhYYbu+aFy+nfNlzoK57hfmeeG5VGe0ZsFqVEwI+RDgcEgwVGa4Eraw6V0C48Od3Ep28aVfKsgWRfz7cKceZm7ONB/DXG7KLfxaLaLR/NdPJKdwLnhCTxwtIezV05g/6Fd7Nwr0LsoEQ0ts6WU9b5kTru0wpS+fsvqEykGU9Vvo8CMW/7DR/Dv/vs34ny+q1XXcWLmmjLdWb6GVPkIWtnHzmOTsTFzJUYmeJuQqaWUujif7+In3vONeOwvfRSQZSt3Xh1YVp84uHhxModvoG2ipDWt1apg6upbQ8+npPnUMqjwRheOtvGYm87j8PqkMM1NxrksV8smZvIbFEoZIIxalkVIswhHWYK+VC8vfRnjSBOtoV4hpm/5Jw84xhF3cKRdW/bzHvbzLvazLq4Muzg86iK6EiG5whg+NkVEjCzXhEybLr0qWWX7llnd6rPOA3F9klJ8NYC/T0QvBNADsEdE/wXAQ0R0EzOfJaKbAJzT6e8DcKuV/xYA3jnizPwGAG8AgJPdG6ZrCqN8lW0rI2RNVLl5QrIiAYY8COGvuw+sSFexzqvUPSRniMMUvUcj5EkCFgQSDMoJJDDKI6H8CQSKtycitU9NDiDd6/R9SqyUtRzgoUAWRziME8RRjkTkiEkiFmoQymM1q8ZE5U8oQ0TGv0dNiTamziuyV5gsz/V38cD+SVw4v4vte2Nsn5PKl2yoCBllOnBsrs2XPtJlX8M687XvekyPpfSJPTqzJu90i4U8OMDt/+Y+/NsbX4B/dfsfANG+3mOiJKvrL6BuVQGMlG4AY0/RFi1m+40Bdmy00SxL40OmlgRT/jEH3MFFuY2fuevv4vYffRDZ5ctTnPWxw1L6xK1Pe+r4FfbcAsXvskd7W+VslUSNPBVoadZkCaRphCvDLpKn7iM72EF8mFsKmKWgsS6+IIT6u9nBVhqTJFfDGTKAUwILwlBEEEKFqxhVhcBEyEggoRwRSRAzWAckl6DC1HmUJzjIlHXmoN8BDiJ0LwCHNwKnd47Qz+IxlYxtIrqmITBcTK2UMfNrmfkWZn4clGPmnzLzywC8HcDLdbKXA3ib/v52AC8loi4R3QbgSQDe3/iAbUmS62/WKBge+9Muyq9M0JgqMxHVv865393GDORKRaI0R3JpgN75HFEKCP3WUjhgjilhylxZmC+NNKDDYCgTqPUGZmbVDCIMBgkOBh1cHvRwcaic8x9Nd3AhU59L+Q4ezXfxcLaHh7M9PJrt4ny+i3PZnqWO7eGB/incd3gK914+jYcfPYHkvi527md0L+cQw5GDvxoR5XhcMrtNnLbxrpSwINPl0vvEVYDs/gdwyw/l+PnPPA8X8x2tusaaCNlBikeq2ZB5TDlzY+RVfVJXGfOoYymocOpXvpLKL/LRfBc/9+m/g+t+kJF9/r6Vtdk6YaV9oqybc8n+NkPMKglZ1ePLtSO6eRySIiXhsN9BR+TYvz1D3hHjymGhhDlqmaWklaplbKllKQGpgEwjDNMYR6maJHaYdZQZMtdKmOzhSt7DgexhX08c2897ShnLuric9nB52MPBURe8n6BzgZDuAidv2McwjzQhEyOz5TTm3RVjFqWsDK8DcAcRfTuAewG8BACY+U4iugPAx6BedV/JzPXavnNDTAX77bnOFOoqZctUznwKT1VanU4pX+OqEDEDwwzdR/vgaAtH10ZgwUCm3n4kAYhQLCrIEZQKBi5egMBmv95q5kAxgTKASSDvx+jTaN00qR00BzLGXtxHV2ToiRQJ5RBaKZPa1HOYq5mb54fbOD/Yxrn9XVy8sIPkvi72Pg1snVdreophDkrzerOlcVCVPGqPaUyX8w8aO98+cZUh/9incPIHnoKf/um/i+9/wp8gF4fYEcqEm5AEGIhImRwFgGjMj2ikckUN+rCtigG2WmY59OsJB4VCpk2Wr//083DmBwj5x++ax2kfdyymT/i6rk/hmUbpmoXELQLFubQVLKzMrMyYl/o9XHtiH+eefBKnPkn6ZV2pVeZYY2rZmBKpLShcfB1VUQIiU9uEIEgSyAxfYkAmOu6YiBBLiUSYoBhaQTMhk/IEgzzG0TDBYJBohYzABPQeu68mBuQCuQ5WO77mpdVGtUR91RcVIF6cw/NccLJzA3/Vjd/ULLHP/Gg78Tc1C/rKXSSMWkYE7iSKVKVZ83rpvyxoZP7U3zkWkFsJjm7o4ehMhLyrOoJMAI4BFvoTjb6DWN2bZh/p/RGrbaY5BIMTBjoSyVaK3tYQO90htpMUO8kQu/EAW1GKbpQhphwJ5UWgwIGMcaDffM4fbePCwRYOL26he3+CE58Fth/JER8alUyRMtIO/oXZMpdehcyQMnd2aoG6e6CClL37wTfh0uChlfbcPTrDX0HPW2UVVoL48Y/DJ/71afzoM38P18dXsC0G6FGKDiQSUqvqRcSIwIUJIKJJc4AvvoI96ttEzPw2sdJSff/2OcYQEQ5lFw9mJ/FvPvANeOqPnL8q45G9j9+Jy3x+pX3i1qc9lX/gjb862lBFzuZRU7v8ZZ85AYhY1UE69kWfx72b1/zVrikgBgkgjnOc3j7Eww+ewsm7uRgz1Zigx4FirLK4Hcw4odPaYwTUbxkBMgFkB5AdBhIJEUvEcY44kkiiHLGQiEkWL+/GfJlJgUEWY5DGyPsxxJFA56IqVzzxELGQSiXTpIylUI94d7Ja1WO/CbltQR1e9fwXPpBduDjVBJVFKGXzRXETOYSrzIQ3kd8iLj4fM5PPp4y5hG4RcJ3K3WNVEUlf/dgaSYx/WT9D79wAJLs4vDbSnVGvKei5A1hoxczENStGNaWYkfmdq5ueWSDlREVlzgWGnQj9LMaVqItulKET5YgpV8temMXMsxgHaQdX+l0cHHaRX+pg64EYu/cyts5rQjbIITLLj8yebVlCnGoXdm9CyhejlgXMiOwz9+Ap33sZP/Gql+A7/9478MTug9jRxCxBrsiZji1myJlkjBE0YHwKoI3cuuSGiKntIzI2NCtPsPKH/OTgJvxfb/s6POWnP4HswoVFnXpAW1Q9rtsQqjISt2pBpaxeNjHz/bbzWyyVJSPLIlw42sa1N17CwziJk5/Rz1NNVozZckwt039JAhAMSKVzkU3MWLnPFMdlgmTl9zXMCVnEGEYjXzPjbyZ5FHhWphEwFIiPCMklgBNFyCIPIRuf0GCfb0Vb1mGJw8H6k7JCVrRvtBLyVUXUyvzKfL5IvoCzy4DP2b+FsqcUImtDLlW/yYDoKEXvYQblXRxeFyPbZhWbxnA5UvZ/08kYWo4mLq4BAUoWjkbHIUnAUNlD85xwNIyQdmP0OxniSCISEpFgREI7+UuBTMesGQ4SZIcxoksxdh8U2HlAoncxR3SkTJYFIcv0jEvtT1YVkwzAeADetspoIGNrjfzR83j8j3wIb/3I1+Ha77oH//TG9+FUdIgepZCUYgiJDrRqBi7UM0D5g0UVT1ebhAEoAljaZMzES3o038Wbzz4bF/79Y3Hbb38AedZA2Q5YLByiMLbNYMzs1gBu+nmqbbPCKF21Co+toME5J4eYpREu8hauuf4yHu3t4MRdEcTQyssMAo0OaZmGmxIzFVyWIBMCxwQZMaQQqizBepzR9c4JyAgiJcRHULMsTxJ6j1OTftJM+ZHlVvgLtgmZS86q2qh0X4P8c8T6k7Km8JknXdXJTdN0YfJFkjJDAjSRoFyCo6i5qbVKLQPGiJk4StF9hCEyRcyGJ/TbCHRWq4MVdwaT7iSs/c7UNggo86XhdUxALoBUIB0IpEkCiiVExCBSH7MwrMwI3I8gjiJ0LwlsPQTsnMuR7EtEA2WypDRX8dVaEDJbJatVzAI2FpwOceIt70X+vsfiR77jpfgHz38Pnr3zmUI1SylDghyRRcwARchSoPhtQxpCpv+atfjMMk+GjF2WPXxg//F423/7SjzpDfdj9573rvtkrqsH9mPap5L4yNk0Za8DIXNJ4kzlTCpml462cPLEEfpflIDu7qF7WVpkThEzQHMZzfmYx4kZAGXKtI4lGMoCY3zNIoKMSZs8uTiGiZWpJgkAcR+I+oyDxxBO3GB8yKIxHzLYccnMODUPtCXyM+L4kDLAb/qz4SNtTcv1lTdPOKExOBLKd8oct6quVU7/ej9JCYaAGGTonGdEgwRH13bQPy2Qbek3jAhjDji26kbmZhfKfMkRVBwY7YMG/fbDGUBpBB4wICLkwupokoAcEENCdEToXCJsn2P0LuSIjnJEqQSlxlw5ImJ1hKx0hmUbX7JA4jYO2Wc/h9t+6D781du/GHe8/Fn4J8/+AL5857MFOYvAKhQLMwTJMZXM/p5bo6xSxkRBxIY60viVfAsfOngc3vq+Z+HJb+zjtve9F9ma++NetSgbRH1K2ibCEKkx4mmYEfnJSJlaZu+3iFkOgf2jLrqdDJ2nXcHlsyewc5bVsxgYETMrJJNRuMi4zpg6Wj5p0PuLsEyadClyR6Pro5U1kSoylvcIB0/JsbvdR5qLYpal9ClkNiGr66JNyFtQyhqiKrp9WVrz3SZZUpaTrWUGkrV9y3wKX1P4iFmuzrFQtJgR5YztoUSyn6B/TYzBHiHvEWQ8euspHP81inIJ4JxHkwNMZyK7rzttJ00nI8QHQPc8Y+tCjvggRzQYBYZ1nfnbErLCwb8tgh/ZZkLmoHd/BE95f4y//sLb8bZ/+Bw88WvvwTde/9c4E++riQCUK3IGLpyIJ4rRN7pNxvqsFhT/vQefgXv/9LF47NvP48kf/dBVHxB2bWGTLgPfI7zMtFkBy4ujvNxloy25rDRjAq5iJlmgP0iQxhFO3HQFh9d0gPu66F0YLVSu4lmOspJdNjMg1Au9mThmTfocBTJ3tRMdeDZKlZvMwc3A9nUH2AYwzGLIsRmWUxCyNSflm0vKXB+wJmZGH4ETwr/PbFskMfMRAWZlwuwmzU2YHoyFhTDIJSAIBAEgR3SkliyKDzJ09xL0T0cY7hHyLjmzMUf3eRFclpQqZmbasFHE7I5uJGgJiCEQHwGdS4zeJYn4UJkqKVVKmFLGpI6JpokZT6GQmf1tFdFAyDYanGXgD38Mj/0wIK+7Dm/+im/Ag8+JsPuMR/E1j/kMnrT1EE5FhwU5iyxyllvK2MV8G588vBF/8cDjcfjhM7jxPRm2P/AZ3PrIuytWzgxYW1QNwGXbPXnYJTCu+XBVg7ztVzZNaIwJk69FzABAAlkmsJ93kcQ5uo+/gssHW4jPxeheYLWUkiFDphiL+yEf1ZEkjcydNN6EhTomGZQDMgYObyBE1/WxHefKkZ/VAuNmPctRtP4pCVkTlWwF2BxSVjcL0f7r5rP3NTFhlk0ImDdBqyIVUpsws4Zv5a5PGZGfmEn1HzHpyP2MKFMEKbkcIdtNMNyLMDhByLd06AzjsKk/bP81GFP2dD/MFRlLDhnJPqOzLxEd5RAZq0CwUpMxyZPqmD3Lsgkhs855WiIbcDyQP/wwer//MB73+4Do9XDXjY/B3zz+i3Hptg4G1xAOb5TgDhfjDw0J2w8KbD/I2L1viN5nHsb1Z+8BDz6pylvt6QQ0BVl/bdXM9zioepRPmPacssu2LRP2ebnqYGU+mzGhhpiNFCgpCMOUkOYRup0Uncf1cXhTB/JCB93zUEv62eqZLsvwRbI22IcwhMyMVekOoX8do7fXR1cwcikwzOKCjGFMHcOIkJlzK85hTljBULI5pGyagbZpaImyYy1zTUzjU2aOL6VW8VoMCZ5wHoa8jM/K5HFzJqnjjciZwFY3QtaLkO0IpFtCxzcDOKIRSbNQrBCQs1LFBoxowIiPWK1bOdS+YpLVpzBLYhR3TGIU8qKCkHnPm9QyHpTLyX0BVy1kvw95z72I77kX1zTME+ZRbijcrm7/donLmExTgwnS0jDfosE0Mh3OVA78xIwB4xvG0gwVhKFU5CwSEp3rD4Hrgf1BAlyJkewT4kNlejQBaIW0y9VfBcCCkHcI6Q6Q7gHxbookztBjNeM5ywTspZLGyJipXxNCVrZtzXzJDDaHlE2DqhAZwKSK5ku7LL8yx6dsHiZMm6RNhMsARuZMonFylhLEIEO8LyAvCkXEEgGZCMiI1O8YypcMikhRhoJsiYy1SVIRsEIRY10nY5osyFcJGTPnUOfQrzGhkgWzZUBAAFBCPJztbhof1oGMuWgaGsPAF7vM1z5FmVzk42Ko0DHEsggkGHEsEV3Th7hWxaIcZip2GA+FCmuhyyQA3JGgmBHHOaJIIoL2O2NF9saImKmvS8ZMHZtG6i/aqlkTrXJK9fEmZU1nLdrp7X2+dIuaiemExjC+VK1MmDXwEzN9bhY5Y9LLbJAiaEykQ2AI7bBJBSFz30BJk6qRhF1GvKz0Nhmz87iEqwITKllQyAICri64/l0+5azKB8wlZ2VEZV3AUKEnjD/vrI+8MuJqq2YMZZWwTLfMBKlnbIJYhwRVpAvJaNkkVeSIRDGALFPzoAtTJFR5dpqJ2aZN1LG67WvoS2ZwvEmZbzJAVRqbcJWRtUU7/tt1yXMgioC2pKzsvF1zpk02XXKmg5exMXMKACTVPoxUsjKQR+kqiJldR58y5pxD7ULt0/qSBZUsIOD4wB20yflelqYMvn1cs38VMMRMtqiQTUpcHzOgnJyZDYacWURO+Y7ZhI0rm6go1iVhxc4KIjZWQFXhFsz9sKZmS4PjTcpseAby0nQ+E+cyYPuVAaNAskIogjZNXUpUvolFu21yptMAAAlNUOVoW0HUgMmFBR2XLi8JM+fq216njtVN9qhKExAQcPWAPd+bKGBlj9l1IWEuinPj6RSgYmp9S3Jmq2c6HhI7edzf/uNb5fqumV1Hd7u3nCmxJsPG8SNlLnEpU43qBu5ZfLlmgcfhn+NoFEjWhzrfN9fk6kwCACzlzKQzZeZO2cIiZIasVR3TPTd3X8n3MUJWdR3s5agCGQsIuLrRxIznPiqbKGJNlLVVwFaUWs4La1y+e85j7ethbTbJampW9aVxCWZbZcxGE5VsHibgOeD4kDLfWpGzmh2b5FnEZAAruj9lObhT4/DfJk6bb3LDmFnTIa4TIUSmbNO2RMxNV1d2G0IWzJYBAccTbteedqCd1i9tFWCol+OI0crhf6Icj2JmyjdoTNCs/b4F0cuO7ctfma++6CLdGq1vWYXjQ8qa+osBfmJioynJscsy5c2boNlqWZqVH8M3SaEs3lpF+skI+Z78Ze1XdbySbZUBYMtg6tBGzXRMwwEBAccQZb5jsH67acizzy3PJXfr9igplsHD7GpZGTkDWhA0p7w27TWtslaGMmK+RkTMxvEhZT60WYqpKm9TojVPQmarZbkEJ3E9CbHJSh1851XmQD+ZWSlqVWXWtPFUZMze39ZsWcxqXdOeGBAQMBuaPH6rfMe8/lOe/eukktmYh1pmo4qcAX5VsrSs2aszdRmuSrbmQ8DxJmUuSZnG52iZjv4uDDGTUqllSQwapuXp3XU968J31E1oqFDCykiVq6w1WoeyjZnSrkcdIQsELCDg6kFbXzKTx7fdZ75c58fJIn3LymZqeuvgYB7D5zTtPrbO5zoy6HIcH1LmmhybOvT74MvjU5XsYy5yxqbxLet1ms/ErJqN2NTM6KZt0C5zJWFleUgT1UDIAgICDKbxH3PVsTLTpg9N0iwT8/ItqzxGQ4Jm16kKderkNDCEzHc/bMCwcHxImeucXhWXrIrQ+MyWVWTE/Ttv2GpZliu1zBCSMt8yn1rm1rsp6vLPc8ZjVb0NhKhWyAIZCwi4emEPxO6gXOcTZhGyImuVqXJdyJgNs/RSxEC24Ar6SF8TojZWxpzq4VPFNsxsaeC6cR8P+AbtpuTJZ/LzqW+zKHFtoYkGpWpVPo4jz6xIj1JXRkrdTxvMmr+qTPu3D1XnpZdzCggIuErB8JMw8vx109ogPZaTk3YTHi92PcUKKmzWYbI/iyjf/u1+dwnaplw7jeOjlLkoIy1N/MvKZihWETvXnDlvSAaEImbcTdS6lTZmOXaZ03/TsprMYm0xCaC0rCZmy4CAgAAbPoWszWPSNmlWKWfrAqOWCZ5Ui1ZVHxetFTXHbFr225gtpUXINgzHj5TVDfxVA3rTEAtVBG1RZkx7TUwdu4wGw8m6NDEB+lAVumLac3LVxGnJVB0hCwpZQEBAHeoIle8x4ppA152QAdq3jFRdl2HGnAbTEsVjTsiA42i+nMWkVuWsXxeIdtGzNI15jnlkxvSFyZhFjSrDIkyWbeALDAwEk2VAQMAkbNOj73eZOdJOY367aTblccMYrbYyqxlznc55Isq/Q8jWqa5TYmpSRkS3EtGfEdHHiehOIvpevf0MEf0xEd2l/5628ryWiO4mok8S0fPncQIzwUe8moTQ8JGUZREWQ8yGKRDrdTEXPfvTh2URM+PYby8ztaZk7Fj0iYCAOWKpfaKMdLnfXX8xXx5Y3wmTxG4TIAnISZGyNsTMbYdNOOfC9482zofMxSxKWQbgB5j5aQC+EsArieh2AK8B8E5mfhKAd+rf0PteCuDpAF4A4N8TUTRL5ScwzczCspAPdU79dWtNLpK0SEVSaJAq/7KSpZMWjkUTUh8hW2+sX58ICFgtltsnXAJlPwZ95su2PmZlj7i6R59LDJvmmxVMipwJbu7HZZNbb5lYL+Jj+86tS51mwNSkjJnPMvNf6u9XAHwcwM0AXgTgjTrZGwG8WH9/EYC3MPOAmT8L4G4Az572+GOKlvu9LL3/RKrLL4uQX+Vv1TSq/qyQEkgztTamEOP1KqvbojEvYlZGyNZQITNYeZ8ICFgzLLVP+JQxoFrl8qWrKtfNY+ctq5OtzrlpF/2INv5lknT8shbErFCfSvatg4J2zAgZMCefMiJ6HIAvBfA+ADcw81lAdUgA1+tkNwP4vJXtPr1tOhhlpumswaZkoUr18ZFAlwQtiwhJBnIJynIV7X9diJkbbX8akrZBJssyrKRPBASsMZbeJ5qoOb7Ho09Nc4lV00fROpCXaYkZMGkSXhcQH0tCBsyBlBHRLoDfAvB9zHy5Kqlnm7cpiegVRPRBIvrgUB5VV8Ad/NvOOjR5fJ+yY5QRQrPP/tsWU8QNozRbH2LmXou2qweUEbJ1QYOqLLpPpBg0qWlAwNpg0X3i4OLF8ZSuKtXmEeKmLVOK2mKVjzFDzHhKYuYqZ6s8F9up/5gRMmBGUkZECVRH+3Vm/m29+SEiuknvvwnAOb39PgC3WtlvAfCAr1xmfgMzP5OZn9kRW80r1IQQVOXz+Uc18Tuz4ZpR24alaEug7BmZPmI2a1iLaeBr+zqSaK/CsG6ErAXRXkafSNCd4iQCAlaDZfSJnVOnPAcu+d6q8vYB0ZwAtDFxLgsM5fg/jWJmsGrT5TEnZMBssy8JwK8A+Dgz/6y16+0AXq6/vxzA26ztLyWiLhHdBuBJAN4/7fGdylT7f5Xlsf/64MYAa7IagDtwt83TVmkTI/JHaQbkeo3MKJokhnV1mYf5ta1PHzCaQaoXXi+wKkLmm+RhUHEaa9UnAgLWACvrE9MqOraZ0lbbXLWoDqsmYGVwTZmriPo/LYQmZEbx26Cqt8EswWO/GsA3A/gbIvqw3vZDAF4H4A4i+nYA9wJ4CQAw851EdAeAj0HNyHklM89nLXs3WrwdQb7MnOmqUmXKjl3eIuESs6YR+m3iIqAWLgfUrMwsV0StTDFzz6nuHH3BaasmUNTts0mgHRh21epYVWDg6qqtT58ICFgPrL5PuCbNunQ+c2XV72nqM635kzzfpynHBFg1pEzOelILxFWgjtmYmpQx81+g/LZ4XkmenwTwk9MecwxVpKCp2uRTqJooaHXwqWVldS2r/zQkUKpXQ2IGcmXK5E5SmDbH6lZFWMvQVNGr8iUz+2wT6zqoY2WYuC+qkq64TwQErBlW2ifmxTMMAWpK7ux8vrr4/NyalFlWxrQET2qCExkFClj5kkwurjJCBmzyMks+JWseflO+CQPTllu3CsAiISVoMAQnsfIzy3M1U9NttyrfrzZocn76eBwJkI61pkjZgnraPPzpVhFWJCAgoD1c02JTwlL3+CHnb9Oy7fq4xM4tb1qYMqclZiC1DJNgRc4k1kM1s8mYvDrImMHmkjIbs8x49KlFZYqWayZtWq9pQnTMQgYkK18z42dGpMhZNxqpZmX+b257TFsPj/JoyNgYOVwEFjG5objH5ldkQEDAnOHz+apTuFwVzJd/WhNmFWlqq7yV1WeWx5ypgyE+AkAsR35ny4YhY6ZOdh0XgVnMwFVlzoDNJWU+/yZ3P9DOhGnKcR387XTTkAkfyany7SrL0wZGfRKqLBqmgBBqvUzmIr5Z6WzStsd081of1pMRKC8hg/NGnVm2DWlbdF0DAgLmA5dYVZn7fPtdFctV3exymtbHNVXax/b5sDU1Y86bTBjVLIcaM4xTve1/tijYRMzUZVmmykWc2oxlbi4ps+Fzxm86mNr5ynymZjVf2vWbhdTNSs7yHCSlImdxBFCszJy5nPQ5m1Z1BFT5YqS6lZKxRfqP2cpmW3/BWfzuAgICVguXePnImY+k2b/t9FVKV90juUy1s+vQJK+P3M0btmpWLM2EkXJmyNK8UEbGVolFKGctsbmkrGygnNZ5vUpZm3ZQrjKLLtJ86YOPnBGB40ipZ6ZOhqS1OWdbETNETDIg81G5vrrMGz7zchNS7ZtR6iqmAQEBm4Ey368yM2QVcap6VNUdp8os2oRcueW7dVzUo8kmZ6YeBOVzBsbEot9NiJSJieYmdctY9vvvPE3BdpkzYHNJmY0ytcvsM2hq0mpC1Nzyq0ypvmM0SbsIQjBh1pQjUhWpeGGcxO2UR03CxsicL/0iyJhPJQXGCVZZPpPOnZDR5FoGBASsJ8q6bJnqVaaCufnK0rpll6WfxezoI3iLVM1glc+EIj6YUbeKDzcnIbYa6RK5VT1mZ2k737WcA1k+HqSsCdnywTfotjWB+vKXzWhsO9NxHg73ZSjI2UgVMuqZ95g+gtrG1DlvQua2c1WcORtNZur6TM1FvtmqHRAQsEL4yI1PLasibm4e2yTqDsq+x16bgds+lo/g2cdY5LOpOA9yzolQuzKAT0k7Du+6vvaewzXYXFLmmyU47exIX3mzYFYTaFMH9HkQtbHgswTkcvS9aZ3NbM9lxhir8g8rU7qaqKZ1seSOw8MkIOA4ounjsIm5qoqk+b6XmUmrnhdt1Tg3/SpeEL0k0zJzNkm/TmirbC3SbKyxuaSsTOGal/+XwSpMWFUmWN+2eYWAsEmVS9bqCNcqgr42URqrTNsGdabaYMIMCFh/+MhQmcLlqk91JMqnrlWRuzrlzT2mW1/3eL76NCFyy8SmPSanUTGrCHPZtWqJzSVly0AbQlbli9ZGvfPBl2+ZgWnXJcp+HVktc/T3oUxpLWvrQMwCAtYfbjd11SXzt2oQ9RE014/Lt8/nT9bExFj1+C4jd6Yubr3qygsYoYyINyW6djqX3M+AQMoMqnymmqBJvlkH9zLCcVxnCDaZYNEmT1m6NqbMgICA9UQb81mVqlFGxurUsLrfZWWb7776+erpyzMnlWajMY1psYqU+9I0MX3PiEDKDGyVZd7KyDx91ezZgq66c9xIhE999GEe7evGlJtXuQEBAcuBb1D2mQhdlCkmLtFxyVATv7Eq+Mq2y3XrUpbHR86O2VDQCE3Ouewa2vubELWysudAjgMps1E3Y29ZaBNWw85j73e3byqazFidx/WZViENCAhYH/hMh2VO8T5TpG+/W16d71pVOWUoI49l5lLfMerqsOFDQWtUkXQ7jbu/bVvVEb2WCKSsCVbt6A/UO6ObbT7FZ1PRNpzJPBHUsoCAzUKdwjStitTEF63uMVHlv+YjXFXllSlkVWVeDQqa75ybpPVtr1O9ytp+DsPF5pKyq8n5umy9TJs4HKe2qDuXqjhw7vdp75Pj1J4BAVcjylSRtl27joA1MVm56lrVxIGyssu+m99uvrKyjhsxc8+pyfmVpSkzKTcp+6o3X15Ng6bPZFlGNlw1rUlk+3VT1OpUqrrZqHaaed0nV9NLQEDAJqLKrNjW/8tVP+rMXk1QZSprosC538tMnlWPc5cYHgfUmQ2bmHabHqfsOtnK3IztKmbLHrBQuEsA2WgS7d9HyI6bz5nBotXCQMgCAtYbPkLGmCQtTeDmc783NVnV+bO56lXTx7GrDNmfsmOV5T8uaHKt7P12uiZKm4/42m0+rRLrIJCyRWFeZMeecVmm/lQpR2UTAtYdyyZBpo03pX0CAgLGYQ+wPnNenWLSpOtPS+7cY1T5gNnbq4hWnV+U/d1HMo8LzHm5RMl3rj4C3FQFda+FT329qn3KrgaUqVpNlgtqsrzQcSUg0zjpByUsIGDzUUdUynyyzD7Xb6us7FkeF1X+XmXHm7b8skf8cTJjNiFVPnOj/beuret8xebkTwYEUrY4TDvIV60MMGtdqtaJdOuwarQ59yYzU2epRyBsAQGbg7qBtmrwLCNePjNVm/qUEYVpBvK6x3MZASlT7MpI6KahjRl4GsXThY8MzqENN4OUlQURPQ6DZRWhcAPauvublF23rWrR7lWgaRT/ZcUVOw73WEDA1QCfyRLw+5hNizoCU6fSuPl9BKrqGFWk0f1eZ6o0JGKTyZhrsq4iRmX+Y7OQ7Db+hQ2xGaTMNwCvmjzMC00W1W6Srs3xmhK8dZuZ2SZURiBTAQFXF6pIyjzMjXXmyzaPyjJy1sREapMpn8m1rB3m7Pu0UvgIZZu2mGVYq1I4r0qlzGCeoQ7mXWbZcZZFFKqIVNVC5psY78ydYbpp9Q8ICJgP6nyLpnk0lA3kTfyWfGWVKStV+3zwKUI+IlpmypwHVumP1oRsNjHLTjtclB1nDsPP0mdfEtELiOiTRHQ3Eb2mUaZFm6cWQfB8x5ml3DaKlTknW2Ur++3uM8ez/84Di7qG7jltIKbqEwEBxxgz9wlbSZnFROcjNtOQkTpfJ1spc49Zdg7TqEAM/zHq4Cp5qyRkBk3r7zvfWc3Yvmsyp+FnqaSMiCIAvwTg6wHcDuCbiOj2KQubY80wnwHdDl8xb0IzbXwxt05l5+nWucmak23QpL6zEtcNxFz7REDAMcDUfWIastGoQp5y2x6jrF5NCKOd1yVfdt3sdD7zXh2xqzq+SypX/bitMiGWwdcW05JrU4eyfTNg2UrZswHczcyfYeYhgLcAeFFljuImqCEJ6zIo+5QnoFn92sQUqyNXVUsRuekMWStT0prWvylcH8FZVa5FmoYXf1+17xMBAccb0/WJMvWCK/Y3KdPO635vCx958tXPR37cdGXn5Su76lh18NVhUQS4KcrIoU8xLLsnpqm/Tymc5X7wYNmk7GYAn7d+36e3VcNHJFysu+mqiUI1D7+5pmSqzHRZVrd5wlXkZlUXN3v25XR9IiDg+GL2PlE3YLoEqOxTd4y6fGXbAL9ZtIn50uwvO68m26ZU+ggAucRuXeG2kY+UwvoNNDufsjLnNFQs29G/0e1BRK8A8Ar9c/Df7n39Rxdaq9lwLYBHVl2JCoT6zQa3fo+dc/lT9Yk/4beGPjE9Qv1mw1r2ie//iq8OfWJ6hPrNhrn1iWWTsvsA3Gr9vgXAA24iZn4DgDcAABF9kJmfuZzqtUeo32wI9Qt9YtkI9ZsNoU+0R6jfbLia6rds8+UHADyJiG4jog6AlwJ4+5LrEBCwTgh9IiBgHKFPBFy1WKpSxswZEf3vAN4BIALwq8x85zLrEBCwTgh9IiBgHKFPBFzNWHrwWGb+AwB/0CLLGxZVlzkh1G82XPX1C31i6Qj1mw2hT7RHqN9suGrqR7zusxYDAgICAgICAq4CLD2if0BAQEBAQEBAwCTWlpStw9IzRHQrEf0ZEX2ciO4kou/V23+MiO4nog/rzwutPK/Vdf4kET1/CXW8h4j+Rtfjg3rbGSL6YyK6S/89vYr6EdFTrDb6MBFdJqLvW2X7EdGvEtE5Ivqota11exHRl+t2v5uIfoFo8VFmQ59oXMfQJ9rVKfSJ2eoQ+sRsdQt9wgYzr90Hyrnz0wAeD6AD4CMAbl9BPW4C8GX6+wkAn4Ja9uPHALzKk/52XdcugNv0OUQLruM9AK51tv0UgNfo768B8H+sqn7ONX0QKn7LytoPwNcC+DIAH52lvQC8H8BzoGIq/SGAr19C+4U+0ayOoU+0q0foE7PVI/SJ+V7Tq7pPrKtSthZLzzDzWWb+S/39CoCPozqy9IsAvIWZB8z8WQB3Q53LsvEiAG/U398I4MXW9lXV73kAPs3Mn6tIs/D6MfOfAzjvOW7j9iKimwDsMfN7WPW8X7PyLAqhT8yG0CdKEPrEbAh9Yq646vvEupKytVt6hogeB+BLAbxPb/rfieivtcxpZMxV1JsB/BERfYhUhGsAuIGZzwLqgQHg+hXWz+ClAN5s/V6X9gPat9fN+vsy6xn6RHOEPjE7Qp+YAqFPzIyrvk+sKymbx2pdcwMR7QL4LQDfx8yXAfwHAE8A8CUAzgL4GZPUk33R9f5qZv4yAF8P4JVE9LUVaVfSrqQCQP59AL+pN61T+1WhrD6rqOdatU3oE7Mh9ImF1mUlCH1iNoQ+obCupKzRMhvLABElUB3t15n5twGAmR9i5pyZJYD/hJF0uvR6M/MD+u85AL+j6/KQlk6h/55bVf00vh7AXzLzQ7qua9N+Gm3b6z79fZn1DH2iIUKfmAtCn2iB0CfmgtAnsL6kbC2W2dAzJX4FwMeZ+Wet7TdZyf4BADND4+0AXkpEXSK6DcCToBz9FlW/HSI6Yb4D+Dpdl7cDeLlO9nIAb1tF/Sx8EyxJel3az0Kr9tLS9RUi+kp9j/wzK8+iEPpEs/qFPjEfhD7REKFPzA2hTwDrOftS+cThhVCzWD4N4IdXVIe/BSU3/jWAD+vPCwH8PwD+Rm9/O4CbrDw/rOv8SSx+9tHjoWZ9fATAnaadAFwD4J0A7tJ/z6yifvp42wAeBXDS2ray9oPq9GcBpFBvMt8+TXsBeCbUQ+LTAH4ROhDzgtsy9In6+oU+0b4+oU/MVofQJ2avY+gT+hMi+gcEBAQEBAQErAHW1XwZEBAQEBAQEHBVIZCygICAgICAgIA1QCBlAQEBAQEBAQFrgEDKAgICAgICAgLWAIGUBQQEBAQEBASsAQIpCwgICAgICAhYAwRSFhAQEBAQEBCwBgikLCAgICAgICBgDfD/B278WcycXTHEAAAAAElFTkSuQmCC\n",
@@ -223,23 +267,24 @@
     "flux = 2000 # surface brightness in whatever units are in the fits file\n",
     "a = 0.1 # exponential limb-darkening law exponent\n",
     "fwhm_keck = 0.1 # approximate FWHM of the point-spread function in arcsec\n",
-    "ldmodel = nav.ldmodel(flux, a, beam = fwhm_keck, law='exp')\n",
+    "ldmodel = nav.ldmodel(flux, a, law='exp')\n",
     "\n",
     "# save ldmodel as numpy file for testing suite - delete later\n",
-    "np.save('/Users/emolter/Python/pylanetary/pylanetary/planetnav/tests/data/ldmodel.npy', ldmodel)\n",
+    "np.save('/Users/emolter/Python/pylanetary/pylanetary/navigation/tests/data/ldmodel.npy', ldmodel)\n",
     "\n",
     "# center the lat, lon, and mu grids. \n",
     "# note it is not necessary to make the ldmodel separately (as shown above) in order to run centering\n",
     "# err should be the RMS noise of the image\n",
     "rms_noise = np.std(data[600:900,50:250]) * 10 #for some reason, error returns zero if true RMS is used\n",
     "# wonder if this should truly be per-pixel error, or per-beam error\n",
-    "dx, dy, dxerr, dyerr = nav.colocate(mode='disk', tb = flux, a = a, beamsize = fwhm_keck, err=rms_noise)\n",
+    "print(fwhm_keck)\n",
+    "dx, dy, dxerr, dyerr = nav.colocate(mode='disk', tb = flux, a = a, beam = fwhm_keck, err=rms_noise)\n",
     "print('suggested x,y shift is ', dx, dy)\n",
     "print('x,y uncertainty is ', dxerr, dyerr)\n",
     "\n",
     "# we could also use an edge-detection algorithm. this is useful if \n",
     "# the planet disk is faint and the clouds are bright, e.g., for Neptune in K-band\n",
-    "dx_canny, dy_canny, _, _ = nav.colocate(mode='canny', tb = flux, a = a, low_thresh=1e-5, high_thresh=0.01, sigma=5)\n",
+    "dx_canny, dy_canny, _, _ = nav.colocate(mode='canny', tb = flux, a = a, beam = fwhm_keck, low_thresh=1e-5, high_thresh=0.01, sigma=5)\n",
     "print('Canny x,y shift is', dx_canny, dy_canny)\n",
     "\n",
     "nav.xy_shift_model(dx, dy)\n",
@@ -268,7 +313,7 @@
     "plt.show()\n",
     "\n",
     "# save one of these as np array for testing suite - delete later\n",
-    "np.save('/Users/emolter/Python/pylanetary/pylanetary/planetnav/tests/data/lat_g_keck.npy', nav.lat_g)"
+    "np.save('/Users/emolter/Python/pylanetary/pylanetary/navigation/tests/data/lat_g_keck.npy', nav.lat_g)"
    ]
   },
   {
@@ -338,8 +383,8 @@
     "plt.show()\n",
     "\n",
     "# save these as np array for testing suite - delete later\n",
-    "np.save('/Users/emolter/Python/pylanetary/pylanetary/planetnav/tests/data/projected.npy', projected)\n",
-    "np.save('/Users/emolter/Python/pylanetary/pylanetary/planetnav/tests/data/mu_projected.npy', mu_projected)"
+    "np.save('/Users/emolter/Python/pylanetary/pylanetary/navigation/tests/data/projected.npy', projected)\n",
+    "np.save('/Users/emolter/Python/pylanetary/pylanetary/navigation/tests/data/mu_projected.npy', mu_projected)"
    ]
   },
   {
@@ -368,9 +413,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "metadata": {
-    "collapsed": true
-   },
+   "metadata": {},
    "outputs": [],
    "source": []
   }
diff --git a/pylanetary/planetnav/__init__.py b/pylanetary/navigation/__init__.py
similarity index 100%
rename from pylanetary/planetnav/__init__.py
rename to pylanetary/navigation/__init__.py
diff --git a/pylanetary/planetnav/core.py b/pylanetary/navigation/core.py
similarity index 76%
rename from pylanetary/planetnav/core.py
rename to pylanetary/navigation/core.py
index a7f4bc0..3a506bf 100755
--- a/pylanetary/planetnav/core.py
+++ b/pylanetary/navigation/core.py
@@ -16,10 +16,12 @@
 ------------
 * make lat_lon accept either east or west longitudes with a flag
     * test on Jupiter (GRS), Io (Loki), and others
-* function to write ModelEllipsoid and PlanetNav.reproject() outputs to fits
+* function to write ModelEllipsoid and Nav.reproject() outputs to fits
 * test support for 2-D Gaussian beams and measured PSFs
 * implement quadratic limb darkening
 * why are there two functions for surface normal and sun normal? should surface normal also account for latitude?
+* make better docstrings for everything (Nav is done)
+* make the tests run
 '''
 
 def lat_lon(x,y,ob_lon,ob_lat,pixscale_km,np_ang,req,rpol):
@@ -155,15 +157,17 @@ def emission_angle(ob_lat, surf_n):
     return np.dot(surf_n.T, ob).T
     
     
+    
 def limb_darkening(mu, a, law='exp', mu0=None):
     '''
     Parameters
     ----------
     mu: float or array-like, required. cosine of emission angle
     a: float or array-like, required. limb-darkening parameter(s)
+        if law=="disc", flat disk a will be ignored 
         if law=="exp", "linear", or "minnaert", a must have length 1
-        if law=="quadratic", a must have length 2 such that [a0, a1] are 
-            the free parameters in the ??? and ??? terms, respectively.
+        if law=="quadratic", "square-root", a must have length 2 such that [a0, a1] are 
+            the free parameters in the first and second terms, respectively.
     law: str, optional. default "exp".
         what type of limb darkening law to use. options are:
         linear:
@@ -176,31 +180,43 @@ def limb_darkening(mu, a, law='exp', mu0=None):
     Returns
     -------
     ld: limb-darkening value at each input mu value
+
+    References
+    -------
+    Overview of published limb darkening laws: https://www.astro.keele.ac.uk/jkt/codes/jktld.html 
     
     To-do list
     ----------
-    add quadratic fits, e.g. Equation 12 of https://doi.org/10.1029/2020EA001254
-    support for nonzero solar incidence angles - see JWST Io model
-    what should be done when mu > 1 or mu < 0 is passed?
+
     '''
-    
+    # Input check 
+    if np.any(mu <0) or np.any(mu>1): 
+        raise ValueError('Cosine of emission angle range [0,1]')
+
     mu = np.array(mu) #necessary so when floats are passed in, the line mu[bad] = 0 doesnt complain about indexing a float
-    bad = np.isnan(mu)
-    mu[bad] = 0.0
+    idnan = np.isnan(mu)
+    mu[idnan] = 0.0
+
+    if law.lower() == 'disc': 
+        ld = mu[mu>0] = 1  
     if law.lower() == 'exp' or law.lower() == 'exponential':
         ld = mu**a
     elif law.lower() == 'linear':
         ld = 1 - a * (1 - mu)
     elif law.lower() == 'quadratic':
-        raise NotImplementedError()
+        ld = 1 - a[0]*(1-mu) - a[1]*(1-mu)**2  
+    elif law.lower() == 'square-root':
+        ld = 1 - a[0]*(1-mu) - a[1]*(1-np.sqrt(mu))   
     elif law.lower() == 'minnaert':
         if mu0 is None:
             raise ValueError('mu0 must be specified if law == minnaert')
         ld = mu0**a * mu**(a-1)
     else:
-        raise ValueError('limb darkening laws accepted: "linear", "exp"')
+        raise ValueError('limb darkening laws accepted: "disc", "linear", "exp", "quadratic", "square-root" ')
+    
     ld = np.array(ld)
-    ld[bad] = np.nan
+    ld[idnan] = np.nan
+
     return ld
 
 
@@ -216,11 +232,14 @@ def __init__(self, ob_lon, ob_lat, pixscale_km, np_ang, req, rpol, center=(0.0,
         ob_lon, ob_lat, np_ang : float, required. 
             sub-observer longitude, latitude, np_ang in degrees
             see JPL Horizons ephemeris tool for detailed descriptions
-        pixscale_km : float, required. pixel scale in km
-        req, rpol : float, required. planet equatorial, polar radius in km
+        pixscale_km : float, required.
+            pixel scale in km
+        req, rpol : float, required.
+            planet equatorial, polar radius in km
         center : 2-element array-like, optional. default (0,0). 
             pixel location of center of planet
-        shape: 2-element tuple, optional. shape of output arrays.
+        shape: 2-element tuple, optional. 
+            shape of output arrays.
             if None, shape is just larger than diameter / pixscale
         
         Attributes
@@ -272,6 +291,28 @@ def __str__(self):
         return f'ModelEllipsoid instance; req={self.req}, rpol={self.rpol}'
         
         
+    def ldmodel(self, tb, a, law='exp'):
+        '''
+        Make a limb-darkened model disk convolved with the beam
+        
+        Parameters
+        ----------
+        tb : float. brightness temperature of disk at mu=1
+        a : float, required. limb darkening parameter
+        law : str, optional. options 'exp' or 'linear'. type of limb darkening law to use
+        '''
+        ## TO DO: make this allow a 2-D Gaussian beam!
+        
+        ldmodel = limb_darkening(np.copy(self.mu), a, law=law)
+        ldmodel[np.isnan(ldmodel)] = 0.0
+        ldmodel = tb*ldmodel
+        return ldmodel   
+        
+        
+    def zonalmodel():
+        raise NotImplementedError()
+        return        
+
     def write(self, outstem):
         '''
         writes latitudes, longitudes, 
@@ -325,91 +366,70 @@ def __init__(self, ephem, req, rpol, pixscale, shape=None):
     def __str__(self):
         return f'ModelBody instance; req={self.req}, rpol={self.rpol}, pixscale={self.pixscale}'
     
-        
-    def ldmodel(self, tb, a, beam = None, law='exp'):
-        '''
-        Make a limb-darkened model disk convolved with the beam
-        
-        Parameters
-        ----------
-        tb : float. brightness temperature of disk at mu=1
-        a : float, required. limb darkening parameter
-        beam : float/int, 3-element array-like, or 2-D psf array, optional.
-            FWHM of Gaussian beam with which to convolve the observation
-            units of fwhm are number of pixels.
-            - if 3-element array-like, has form (FWHM_X, FWHM_Y, POSITION_ANGLE)
-            units of position angle are assumed degrees unless astropy Angle is passed
-            - if float/int, this is FWHM of assumed circular beam
-            - if 2-D array, assumes beam is set to the full PSF
-            - if no beamsize is specified, will make infinite-resolution
-        law : str, optional. options 'exp' or 'linear'. type of limb darkening law to use
-        '''
-        ## TO DO: make this allow a 2-D Gaussian beam!
-        
-        ldmodel = limb_darkening(np.copy(self.mu), a, law=law)
-        ldmodel[np.isnan(ldmodel)] = 0.0
-        ldmodel = tb*ldmodel
-        if beam is None:
-            return ldmodel
-        elif np.array(beam).size == 1: #FWHM
-            fwhm = beam / self.pixscale_arcsec
-            return convolve_with_beam(ldmodel, fwhm)
-            
-        elif np.array(beam).size == 3: #bmaj, bmin, theta
-            beam = (beam[0]/self.pixscale_arcsec, beam[1]/self.pixscale_arcsec, beam[2])
-            return convolve_with_beam(ldmodel, beam)
-            
-        elif len(np.array(beam).shape) == 2: #full PSF
-            return convolve_with_beam(ldmodel, beam)
-        else:
-            raise ValueError("beam must be a positive float, 3-element array-like (fwhm_x, fwhm_y, theta_deg), or 2-D array representing the PSF.")    
-        
-        
-    def zonalmodel():
-        raise NotImplementedError()
-        return  
+
         
 
 class Nav(ModelBody):
     '''
-    use model planet ellipsoid to navigate image data for a planetary body
-    
+    functions for comparing a model ellipsoid with data for navigation and analysis
     '''    
     
     def __init__(self, data, ephem, req, rpol, pixscale):
         '''
-        Build the planet model according to the observation parameters
-        Model (i.e. self.lat_g, self.lon_w, self.mu) are same shape as data and
-             initially at center of array. 
+        Description
+        -----------
+        Build the model body according to the input ephemeris
         
         Parameters
         ----------
-        data : 2-D np array, required. 
-        ephem : Astropy QTable, required. one line from an astroquery.horizons ephemeris. needs to at least have
-            the 'PDObsLon', 'PDObsLat', 'delta', and 'NPole_ang' fields
-            it's ok to pass multiple lines, but will extract relevant fields from the 0th line
-        req : float or Quantity object, required. equatorial radius of planet
-        rpol : float or Quantity object, required. polar radius of planet
-        pixscale : float or Quantity object, required. pixel scale of the images.
-            if float, assumes units of arcsec
+        data : np.array, required.
+            [-] 2-D image data
+        ephem : QTable, required. 
+            [-] astroquery.horizons ephemeris 
+                must have 'PDObsLon', 'PDObsLat', 'delta', and 'NPole_ang' fields
+                it's ok to pass multiple lines, but relevant fields will be read 
+                from the 0th line
+        req : float or Quantity, required. 
+            [km] equatorial radius of planet
+        rpol : float or Quantity, required. 
+            [km] polar radius of planet
+        pixscale : float or Quantity, required. 
+            [arcsec] pixel scale of the input image
         
         Attributes
         ----------
-        data : see parameters
-        req, rpol : see parameters
-        pixscale_arcsec : pixel scale of image in arcsec
-        pixscale_km : pixel scale of image in km based on data in ephem
-        ephem : see parameters
-        deg_per_px : approximate size of pixel on planet, in degrees, at sub-observer point
-        lat_g : 2-D array, same shape as data. planetographic latitudes. NaN where off planet disk
-        lon_w : 2-D array, same shape as data. west longitudes. NaN where off planet disk
-        mu : 2-D array, same shape as data. cosines of the emission angle. NaN where off planet disk
-        surf_n : 3-D array, shape (3,x,y) CHECK THIS. Normal vector to the surface 
-            of the planet at each pixel. NaN where off planet disk
+        data : np.array
+            [-] see Parameters
+        req : float
+            [km] see Parameters
+        rpol : float
+            [km] see Parameters
+        pixscale_arcsec : float
+            [arcsec] pixel scale of image
+        pixscale_km : float
+            [km] pixel scale of image
+        ephem : QTable
+            [-] see parameters
+        deg_per_px : float
+            [deg] approximate size of one pixel at the sub-observer point
+        lat_g : np.array
+            [deg] planetographic latitudes. NaN where off planet disk
+        lon_w : np.array
+            [deg] west longitudes. NaN where off planet disk
+        mu : np.array
+            [-] cosines of the emission angle. NaN where off planet disk
+        surf_n : np.array,  
+            [-] Normal vector to the surface of the planet, shape (3,x,y).
+            NaN where off planet disk
         
         Examples
         --------
         see notebooks/nav-tutorial.ipynb
+        
+        To Do
+        -----
+        - Test astropy quantity handling, ensure docstring reflects what really happens
+        - Update tests
         '''
         
         # TO DO: fix these all to accept Astropy quantities
@@ -423,42 +443,56 @@ def __str__(self):
             
     def colocate(self, mode = 'convolution', diagnostic_plot=True, save_plot=None, **kwargs):
         '''
+        Description
+        -----------
         Co-locate the model planet with the observed planet
-            using any of several different methods
         
         Parameters
         ----------
-        mode : str, optional. Which method should be used to overlay
-            planet model and data. Choices are:
-            'canny': uses the Canny edge detection algorithm...
-                kwargs: {'low_thresh':float, ;high_thresh':float, 'sigma':float}
-                    see documentation of skimage.feature.canny for explanation
-                    To find edges of planet disk, typical "good" values are:
+        mode : str, optional. Default 'convolution'.
+            [-] Which method should be used to overlay planet model and data. Choices are:
+        
+            'canny': uses the Canny edge detection algorithm.
+                kwargs: 
+                    tb : float, required.
+                        [same flux unit as data] brightness temperature of disk at mu=1 
+                    a : float, required.
+                        [-] exponential limb darkening param
+                    beam : float, tuple, or np.array, optional. default None.
+                    low_thresh : float, required.
+                    high_thresh : float, required.
+                    sigma : int, required.
+                see documentation of skimage.feature.canny for explanation of kwargs
+                To find edges of planet disk, typical "good" values are:
                     low_thresh : RMS noise in image
                     high_thresh : approximate flux value of background disk (i.e., cloud-free, volcano-free region)
                     sigma : 5
-            'manual': shift by a user-defined number of pixels in x and y
-                kwargs: shift_x, shift_y
+        
             'convolution': takes the shift that maximizes the convolution of model and planet
-                kwargs: {'tb':float, 'a':float, 'beamsize':float}
-                    tb : brightness temperature of disk at mu=1, 
-                    a : limb darkening param, beam in arcsec
-                    beam : see ldmodel docstring
-                    err : per-pixel error in input image
+                kwargs:
+                    tb : float, required.
+                        [same flux unit as data] brightness temperature of disk at mu=1 
+                    a : float, required.
+                        [-] exponential limb darkening param
+                    beam : float, tuple, or np.array, optional. default None.
+                        see ldmodel docstring
+                    err : float, per-pixel error in input image
+        
             'disk': same as convolution
-            default 'convolution'
+
         diagnostic_plot: bool, optional. default True
             do you want the diagnostic plots to be shown
-        save_plot: str or None, optional. 
-            if str, file path to save the diagnostic plot. if None, does not save.
-            does nothing if diagnostic_plot == False
+        save_plot: str, optional. default None.
+            file path to save the diagnostic plot. if None, does not save.
         
         Returns
         -------
-            dx, dy: best-fit difference in position between model and data, in pixel units
+            dx, dy: float
+                [pixels] best-fit difference in position between model and data
                 To shift data to center (i.e., colocated with model), apply a shift of -dx, -dy
                 To shift model to data, apply a shift of dx, dy
-            dxerr, dyerr: uncertainty in the shift based on the cross-correlation 
+            dxerr, dyerr: float
+                [pixels] uncertainty in the shift based on the cross-correlation 
                 from image_registration.chi2_shift
         
         Examples
@@ -467,19 +501,19 @@ def colocate(self, mode = 'convolution', diagnostic_plot=True, save_plot=None, *
         
         To Do
         -----
-        * improve the Canny edge-detection according to the skimage tutorial
-        * make dxerr, dyerr realistic, or remove this option
-            * play with adding per-pixel error to chi2_shift call
+        - sometimes dxerr, dyerr give unrealistic or undefined behavior
         '''
         defaultKwargs={'err':None,'beam':None}
         kwargs = { **defaultKwargs, **kwargs }
 
         if (mode == 'convolution') or (mode == 'disk'):
-            model = self.ldmodel(kwargs['tb'], kwargs['a'], beam=kwargs['beam'], law='exp')
+            model = self.ldmodel(kwargs['tb'], kwargs['a'], law='exp')
+            model = convolve_with_beam(model, kwargs['beam'])
             data_to_compare = self.data 
         elif mode == 'canny':
             #model_planet = ~np.isnan(self.mu) #flat disk model
-            model_planet = self.ldmodel(kwargs['tb'], kwargs['a'], beam=kwargs['beam'], law='exp')
+            model_planet = self.ldmodel(kwargs['tb'], kwargs['a'], law='exp')
+            model_planet = convolve_with_beam(model_planet, kwargs['beam'])
             
             edges = feature.canny(self.data, sigma=kwargs['sigma'], low_threshold = kwargs['low_thresh'], high_threshold = kwargs['high_thresh'])
             model = feature.canny(model_planet, sigma=kwargs['sigma'], low_threshold = kwargs['low_thresh'], high_threshold = kwargs['high_thresh'])
@@ -518,25 +552,31 @@ def colocate(self, mode = 'convolution', diagnostic_plot=True, save_plot=None, *
     
     def xy_shift_data(self, dx, dy):
         '''
+        Description
+        -----------
         simple function to FFTshift data by a user-defined amount
         for example, to apply the suggested shift from colocate()
         
         Parameters
         ----------
-        dx, dy : floats, required. x,y shift in units of pixels
+        dx, dy : floats, required. 
+            [pixels] x,y shift
         '''
         self.data = shift2d(self.data,dx,dy)
 
 
     def xy_shift_model(self, dx, dy):
         '''
+        Description
+        -----------
         simple function to FFTshift model (i.e., lat_g, lon_w, and mu) 
             by a user-defined amount
         for example, to apply the suggested shift from colocate()
         
         Parameters
         ----------
-        dx, dy : floats, required. x,y shift in units of pixels
+        dx, dy : floats, required. 
+            [pixels] x,y shift
         '''
         
         good = ~np.isnan(self.mu)
@@ -555,6 +595,8 @@ def xy_shift_model(self, dx, dy):
     
     def reproject(self, pixscale_arcsec = None, interp = 'cubic'):
         '''
+        Description
+        -----------
         Projects the data onto a flat x-y grid according to self.lat_g, self.lon_w
         This function only works properly if self.lat_g and self.lon_w 
             are centered with respect to self.data; for instance, 
@@ -563,22 +605,25 @@ def reproject(self, pixscale_arcsec = None, interp = 'cubic'):
         
         Parameters
         ----------
-        outstem: str, optional. stem of output filenames. if not set, will not save
-        pixscale_arcsec: float, optional. Pixel scale of output in arcseconds. 
+        outstem: str, optional. 
+            [-] stem of output filenames. if not set, will not save
+        pixscale_arcsec: float, optional. default self.pixscale_arcsec.
+            [arcsec] Pixel scale of output
             If not set, output data will have the same pixel scale as the input data 
             at the sub-observer point. 
             Note that everywhere else will be super-sampled.
-        interp: str, optional. type of interpolation to do between pixels in the projection.
-            default "cubic"
+        interp: str, optional. default 'cubic'
+            type of interpolation to do between pixels in the projection.
         
         Returns
         -------
-        projected: 2-D numpy array. the projected data 
-        mu_projected: 2-D numpy array. the cosine of the emission angle (mu) 
-            at each pixel in the projection
+        projected: np.array
+            the projected data 
+        mu_projected: np.array
+            cosine of the emission angle (mu) at each pixel in the projection
         
-        Outputs
-        -------
+        Writes
+        ------
         outstem+"_proj.fits" : fits file containing projected data
         outstem+:_mu_proj.fits" : fits file containing mu values of projected data
         
diff --git a/pylanetary/utils/core.py b/pylanetary/utils/core.py
index c31af1e..9a55df8 100644
--- a/pylanetary/utils/core.py
+++ b/pylanetary/utils/core.py
@@ -3,17 +3,22 @@
 from astropy import convolution
 from astropy.coordinates import Angle
 import astropy.units as u
+from astropy.units import Quantity
 import importlib, yaml, importlib.resources
 from scipy.interpolate import interp1d
-import pylanetary.utils.data as planet_info
+import pylanetary.utils.data as body_info
+from astropy.time import Time
+from astroquery.jplhorizons import Horizons
+from datetime import timedelta
 
 '''
 To do:
-* write tests for convolve_with_beam (although this is somewhat tested in test_planetnav)
+* write tests for convolve_with_beam, especially for arbitrary PSF image
+* make convolve_with_beam accept Astropy PSFs and super-resolution PSFs as the kernel
 * make these accept astropy units
-* add I/F calculations... or maybe that goes somewhere else
 '''
 
+
 def beam_area(beamx, beamy):
     '''
     beamx, beamy: FWHM of Gaussian beam in arcsec
@@ -181,13 +186,21 @@ def rebin(arr, z):
     
 def convolve_with_beam(data, beam):
     '''
+    Convolves input 2-D image with a Gaussian beam or an input PSF image
+    
     Parameters
     ----------
-    data : 2-D numpy array, required.
-    beam : float/int, 3-element array-like, or array representing psf required.
-        if float/int, circular beam assumed, and this sets the fwhm in pixels
-        if 3-element array-like, those are (fwhm_x, fwhm_y, theta_deg) 
-        in units (pixels, pixels, degrees)
+    data : np.array, required.
+    beam : float/int, 3-element array-like, or np.array, required.
+        if float/int, circular Gaussian beam assumed, and this sets the fwhm 
+            [pixels]
+        if 3-element array-like, those are (fwhm_x, fwhm_y, theta_deg) for a 2-D Gaussian
+            [pixels, pixels, degrees]
+        if np.array of size > 3, assumes input PSF image
+    
+    Returns
+    -------
+    np.array of same shape as data
     '''
     
     if np.array(beam).size == 1:
@@ -207,40 +220,76 @@ def convolve_with_beam(data, beam):
     return convolution.convolve_fft(data, psf)
 
 
-class Planet:
+class Body:
     """
-    Class will instantiate planet object with attributes from yaml file of matching
+    Class will instantiate object with attributes from yaml file of matching
     string name.
+
+    Example usage:
+    from pylanetary.utils import Body
+    jup = Body('Jupiter')
+
+    jup.app_dia_max, jup.app_dia_min
+    output> (<Quantity 50.1 arcsec>, <Quantity 30.5 arcsec>)
+
+    print('Jupiter is currently', jup.distance, ' AU from the Earth with apparent size ', jup.app_dia, ' today = ',
+    jup.epoch_datetime)
+    output> Jupiter is currently 5.93796102228318 AU  AU from the Earth with apparent size  33.2009 arcsec
+    today = 2023-04-26 16:32:54
     """
-    def __init__(self, name):
+    def __init__(self, name, epoch=None):
         """
-        Input string of planet name to initiaite object and find yaml file of same
-        matching string. Optional input of paameters from
+        Input string instantiates object using file name of string to
+        populate attributes. Astropy quantity objects utilized for data
+        with astropy units.
 
         Parameters
         ----------
         name: str
-            Planet name string, example "Jupiter' will load Jupiter.yaml
+            Body name string, example "Jupiter" will load Jupiter.yaml
+        epoch: astropy.time.Time or None
+            The epoch at which to retrieve the ephemeris of the body. If None,
+            the current time will be used with a delta time of 1 minute.
         """
         self.name = name
-        with importlib.resources.open_binary(planet_info, f"{self.name}.yaml") as file:
+        with importlib.resources.open_binary(body_info, f"{self.name}.yaml") as file:
             yaml_bytes = file.read()
             data = yaml.safe_load(yaml_bytes)
 
             # basic information and rewrite name
-            self.name = data['planet']['name']
-            self.mass = data['planet']['mass'] * u.kg
-            self.Re = data['planet']['Re'] * u.km
-            self.Rp = data['planet']['Rp'] * u.km
-            self.Ravg = (self.Re + self.Rp) / 2
-            self.Rvol = data['planet']['Rvol'] * u.km
-            self.accel_g = data['planet']['accel_g'] * u.m / u.s**2
-            self.num_moons = data['planet']['num_moons']
+            self.name = data['body']['name']
+            self.jpl_hor_id = data['body']['jpl_hor_id']
+            self.mass = Quantity(data['body']['mass'], unit=u.kg)
+            self.r_eq = Quantity(data['body']['r_eq'], unit=u.km)
+            self.r_pol = Quantity(data['body']['r_pol'], unit=u.km)
+            self.r_avg = (self.r_eq + self.r_pol) / 2
+            self.r_vol = Quantity(data['body']['r_vol'], unit=u.km)
+            self.accel_g = Quantity(data['body']['accel_g'], unit=u.m / u.s**2)
+            self.num_moons = data['body']['num_moons']
 
             # orbital information
-            self.semi_major_axis = data['orbit']['semi_major_axis'] * u.au
-            self.t_rot_hrs = data['orbit']['t_rot'] * u.hr
+            self.semi_major_axis = Quantity(data['orbit']['semi_major_axis'], unit=u.au)
+            self.t_rot_hrs = Quantity(data['orbit']['t_rot'], unit=u.hr)
+
+            # static observational information
+            self.app_dia_max = Quantity(data['observational']['app_dia_max'], unit=u.arcsec)
+            self.app_dia_min = Quantity(data['observational']['app_dia_min'], unit=u.arcsec)
+
+            # use datetime Time.now() or epoch to astroquery for ephemeris
+            if epoch is None:
+                start_time = Time.now()
+            else:
+                start_time = Time(epoch)
+            end_time = start_time + timedelta(minutes=1)
+            epochs = {'start': start_time.strftime('%Y-%m-%d %H:%M:%S'),
+                      'stop': end_time.strftime('%Y-%m-%d %H:%M:%S'), 'step': '1m'}
+            self.epoch_datetime = start_time.strftime('%Y-%m-%d %H:%M:%S')
+            obj = Horizons(id=self.jpl_hor_id, location='500', epochs=epochs)
 
-            # observational information
-            self.app_dia_max = data['observational']['app_dia_max'] * u.arcsec
-            self.app_dia_min = data['observational']['app_dia_min'] * u.arcsec
+            self.eph = obj.ephemerides()
+            # see self.eph.columns for all columns available in astropy table
+            # dynamic observational information
+            self.ra = self.eph['RA'][0] * u.deg
+            self.dec = self.eph['DEC'][0] * u.deg
+            self.distance = self.eph['delta'][0] * u.au
+            self.app_dia = self.eph['ang_width'][0] * u.arcsec
diff --git a/pylanetary/utils/data/Jupiter.yaml b/pylanetary/utils/data/Jupiter.yaml
index a9c00f7..900046e 100644
--- a/pylanetary/utils/data/Jupiter.yaml
+++ b/pylanetary/utils/data/Jupiter.yaml
@@ -1,9 +1,10 @@
-planet:
+body:
   name: Jupiter
+  jpl_hor_id: 599
   mass: 1898.13  # kg
-  Re: 71492.  # km equatorial radius at 1 bar level
-  Rp: 66854.  # km polar radius
-  Rvol: 69911.  # km volumetric mean radius
+  r_eq: 71492.  # km equatorial radius at 1 bar level
+  r_pol: 66854.  # km polar radius
+  r_vol: 69911.  # km volumetric mean radius
   accel_g: 24.79  # m/s^2 Gravity at 1 bar level
   num_moons: 92  # number of natural satellites
 orbit:
diff --git a/setup.cfg b/setup.cfg
index 234f2bd..1705726 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -17,7 +17,21 @@ packages = find:
 python_requires = >=3.7
 setup_requires = setuptools_scm
 install_requires =
-    astropy
+	astropy>=5.0.4
+	astroquery
+	beautifulsoup4>=4.11.1
+	extension_helpers>=1.0.0
+	image_registration>=0.2.6
+	matplotlib>=3.4.3
+	numpy>=1.23.4
+	photutils>=1.4.0
+	pytest>=6.2.4
+	pytest_astropy_header>=0.2.2
+	scikit-image>=0.18.3
+	scipy>=1.9.1
+	setuptools>=57.0.0
+	setuptools_scm>=7.0.5
+	sphinx_astropy>=1.7.0
 
 [options.entry_points]
 console_scripts =


Test patch:
diff --git a/pylanetary/planetnav/tests/__init__.py b/pylanetary/navigation/tests/__init__.py
similarity index 100%
rename from pylanetary/planetnav/tests/__init__.py
rename to pylanetary/navigation/tests/__init__.py
diff --git a/pylanetary/planetnav/tests/data/__init__.py b/pylanetary/navigation/tests/data/__init__.py
similarity index 100%
rename from pylanetary/planetnav/tests/data/__init__.py
rename to pylanetary/navigation/tests/data/__init__.py
diff --git a/pylanetary/planetnav/tests/data/ephem.hdf5 b/pylanetary/navigation/tests/data/ephem.hdf5
similarity index 99%
rename from pylanetary/planetnav/tests/data/ephem.hdf5
rename to pylanetary/navigation/tests/data/ephem.hdf5
index d5f2e4f..4465746 100644
Binary files a/pylanetary/planetnav/tests/data/ephem.hdf5 and b/pylanetary/navigation/tests/data/ephem.hdf5 differ
diff --git a/pylanetary/planetnav/tests/data/hlsp_wfcj_hst_wfc3-uvis_jupiter-2017-pj07_f631n_v2_0711ut0947-nav.fits b/pylanetary/navigation/tests/data/hlsp_wfcj_hst_wfc3-uvis_jupiter-2017-pj07_f631n_v2_0711ut0947-nav.fits
similarity index 100%
rename from pylanetary/planetnav/tests/data/hlsp_wfcj_hst_wfc3-uvis_jupiter-2017-pj07_f631n_v2_0711ut0947-nav.fits
rename to pylanetary/navigation/tests/data/hlsp_wfcj_hst_wfc3-uvis_jupiter-2017-pj07_f631n_v2_0711ut0947-nav.fits
diff --git a/pylanetary/planetnav/tests/data/keck_uranus.npy b/pylanetary/navigation/tests/data/keck_uranus.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/keck_uranus.npy
rename to pylanetary/navigation/tests/data/keck_uranus.npy
diff --git a/pylanetary/planetnav/tests/data/lat_g.npy b/pylanetary/navigation/tests/data/lat_g.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/lat_g.npy
rename to pylanetary/navigation/tests/data/lat_g.npy
diff --git a/pylanetary/planetnav/tests/data/lat_g_keck.npy b/pylanetary/navigation/tests/data/lat_g_keck.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/lat_g_keck.npy
rename to pylanetary/navigation/tests/data/lat_g_keck.npy
diff --git a/pylanetary/navigation/tests/data/ldmodel.npy b/pylanetary/navigation/tests/data/ldmodel.npy
new file mode 100644
index 0000000..61731f7
Binary files /dev/null and b/pylanetary/navigation/tests/data/ldmodel.npy differ
diff --git a/pylanetary/planetnav/tests/data/lon_w.npy b/pylanetary/navigation/tests/data/lon_w.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/lon_w.npy
rename to pylanetary/navigation/tests/data/lon_w.npy
diff --git a/pylanetary/planetnav/tests/data/mu.npy b/pylanetary/navigation/tests/data/mu.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/mu.npy
rename to pylanetary/navigation/tests/data/mu.npy
diff --git a/pylanetary/planetnav/tests/data/mu_projected.npy b/pylanetary/navigation/tests/data/mu_projected.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/mu_projected.npy
rename to pylanetary/navigation/tests/data/mu_projected.npy
diff --git a/pylanetary/planetnav/tests/data/projected.npy b/pylanetary/navigation/tests/data/projected.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/projected.npy
rename to pylanetary/navigation/tests/data/projected.npy
diff --git a/pylanetary/planetnav/tests/data/surf_n.npy b/pylanetary/navigation/tests/data/surf_n.npy
similarity index 100%
rename from pylanetary/planetnav/tests/data/surf_n.npy
rename to pylanetary/navigation/tests/data/surf_n.npy
diff --git a/pylanetary/planetnav/tests/test_planetnav.py b/pylanetary/navigation/tests/test_planetnav.py
similarity index 100%
rename from pylanetary/planetnav/tests/test_planetnav.py
rename to pylanetary/navigation/tests/test_planetnav.py
diff --git a/pylanetary/planetnav/tests/data/ldmodel.npy b/pylanetary/planetnav/tests/data/ldmodel.npy
deleted file mode 100644
index d812840..0000000
Binary files a/pylanetary/planetnav/tests/data/ldmodel.npy and /dev/null differ