{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "import keras\n", "from keras.models import Sequential, Model, load_model\n", "\n", "from keras.layers import Dense, Dropout, Activation, Flatten, Input, Lambda\n", "from keras.layers import Conv2D, MaxPooling2D, Conv1D, MaxPooling1D, LSTM, ConvLSTM2D, GRU, BatchNormalization, LocallyConnected2D, Permute\n", "from keras.layers import Concatenate, Reshape, Softmax, Conv2DTranspose, Embedding, Multiply\n", "from keras.callbacks import ModelCheckpoint, EarlyStopping, Callback\n", "from keras import regularizers\n", "from keras import backend as K\n", "import keras.losses\n", "\n", "import tensorflow as tf\n", "from tensorflow.python.framework import ops\n", "\n", "import isolearn.keras as iso\n", "\n", "import numpy as np\n", "\n", "import tensorflow as tf\n", "import logging\n", "logging.getLogger('tensorflow').setLevel(logging.ERROR)\n", "\n", "import pandas as pd\n", "\n", "import os\n", "import pickle\n", "import numpy as np\n", "\n", "import scipy.sparse as sp\n", "import scipy.io as spio\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "import isolearn.keras as iso\n", "\n", "from seqprop.visualization import *\n", "from seqprop.generator import *\n", "from seqprop.predictor import *\n", "from seqprop.optimizer import *\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "\n", "def load_dummy_predictor() :\n", "\n", " def _initialize_predictor_weights(predictor_model) :\n", " #Load pre-trained model\n", " print(\"I am a placeholder function.\")\n", "\n", " def _load_predictor_func(sequence_input) :\n", " \n", " def score_motif(pwm) :\n", " #Score GTT motifs in the first 30nt of input sequence (placeholder example of a predictor network)\n", " motif_score = K.sum(pwm[..., :30-2, 2, :] * pwm[..., 1:30-1, 3, :] * pwm[..., 2:30, 3, :], axis=-2)\n", " \n", " return motif_score\n", " \n", " counting_layer = Lambda(lambda x: score_motif(x))\n", " pred_score = counting_layer(sequence_input)\n", "\n", " predictor_inputs = []\n", " predictor_outputs = [pred_score]\n", "\n", " return predictor_inputs, predictor_outputs, _initialize_predictor_weights\n", "\n", " return _load_predictor_func\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "\n", "#Define target isoform loss function\n", "def get_example_loss(target_score=10, opt_start=0, opt_end=30, opt_target_bits=1.8, entropy_weight=0.0) :\n", " \n", " opt_entropy_mse = get_target_entropy_sme(pwm_start=opt_start, pwm_end=opt_end, target_bits=opt_target_bits)\n", "\n", " def loss_func(predictor_outputs) :\n", " pwm_logits, pwm, sampled_pwm, pred_score = predictor_outputs\n", "\n", " #Specify costs\n", " score_loss = 1.0 * K.mean((pred_score - target_score)**2, axis=0)\n", " \n", " seq_loss = 0.0\n", " \n", " entropy_loss = entropy_weight * opt_entropy_mse(pwm)\n", " \n", " #Compute total loss\n", " total_loss = score_loss + seq_loss + entropy_loss\n", "\n", " return K.sum(total_loss, axis=0)\n", " \n", " return loss_func\n", "\n", "\n", "def get_revcomp_transform() :\n", " \n", " def transform_func(pwm) :\n", " \n", " pwm_opt = pwm[..., :30, :, :]\n", " \n", " a_band = K.expand_dims(pwm_opt[..., :, 0, :], axis=-2)\n", " c_band = K.expand_dims(pwm_opt[..., :, 1, :], axis=-2)\n", " g_band = K.expand_dims(pwm_opt[..., :, 2, :], axis=-2)\n", " t_band = K.expand_dims(pwm_opt[..., :, 3, :], axis=-2)\n", " \n", " rev_comp_pwm = K.concatenate([\n", " t_band,\n", " g_band,\n", " c_band,\n", " a_band\n", " ], axis=-2)[..., ::-1, :, :]\n", " \n", " return K.concatenate([pwm_opt, rev_comp_pwm], axis=-3)\n", " \n", " return transform_func\n", "\n", "def get_revcomp_transform_opt() :\n", " \n", " def transform_func(pwm) :\n", " \n", " return K.concatenate([pwm[..., :30, :, :], pwm[..., :30, :, :][..., ::-1, ::-1, :]], axis=-3)\n", " \n", " return transform_func\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "\n", "#Function for running SeqProp on a set of objectives to optimize\n", "def run_seqprop(sequence_templates, loss_funcs, transform_funcs, n_sequences=1, n_samples=1, eval_mode='pwm', n_epochs=10, steps_per_epoch=100) :\n", " \n", " n_objectives = len(sequence_templates)\n", " \n", " optimized_pwms = []\n", " optimized_scores = []\n", " \n", " for obj_ix in range(n_objectives) :\n", " print(\"Optimizing objective \" + str(obj_ix) + '...')\n", " \n", " sequence_template = sequence_templates[obj_ix]\n", " loss_func = loss_funcs[obj_ix]\n", " transform_func = transform_funcs[obj_ix]\n", " \n", " #Build Generator Network\n", " _, seqprop_generator = build_generator(seq_length=60, n_sequences=n_sequences, n_samples=n_samples, sequence_templates=[sequence_template * n_sequences], batch_normalize_pwm=True, pwm_transform_func=transform_func)\n", " \n", " #Build Predictor Network and hook it on the generator PWM output tensor\n", " _, seqprop_predictor = build_predictor(seqprop_generator, load_dummy_predictor(), n_sequences=n_sequences, n_samples=n_samples, eval_mode=eval_mode)\n", " \n", " #Build Loss Model (In: Generator seed, Out: Loss function)\n", " _, loss_model = build_loss_model(seqprop_predictor, loss_func)\n", " \n", " #Specify Optimizer to use\n", " #opt = keras.optimizers.SGD(lr=0.1)\n", " opt = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999)\n", "\n", " #Compile Loss Model (Minimize self)\n", " loss_model.compile(loss=lambda true, pred: pred, optimizer=opt)\n", "\n", " measure_func = lambda pred_outs: pred_outs[0][0, :, :] if len(pred_outs[0].shape) > 2 else pred_outs[0]\n", " \n", " #Specify callback entities\n", " callbacks =[\n", " EarlyStopping(monitor='loss', min_delta=0.001, patience=5, verbose=0, mode='auto'),\n", " FlexibleSeqPropMonitor(predictor=seqprop_predictor, plot_every_epoch=False, track_every_step=True, measure_func=measure_func, measure_name='Motif Score', plot_pwm_start=0, plot_pwm_end=60, sequence_template=sequence_template, plot_pwm_indices=[0])\n", " ]\n", "\n", " #Fit Loss Model\n", " train_history = loss_model.fit(\n", " [], np.ones((1, 1)), #Dummy training example\n", " epochs=n_epochs,\n", " steps_per_epoch=steps_per_epoch,\n", " callbacks=callbacks\n", " )\n", " \n", " #Retrieve optimized PWMs and predicted cleavage distributionns\n", " _, optimized_pwm, _, pred_score = seqprop_predictor.predict(x=None, steps=1)\n", " \n", " optimized_pwms.append(optimized_pwm)\n", " optimized_scores.append(pred_score)\n", "\n", " return optimized_pwms, optimized_scores\n", "\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running optimization experiment\n", "Optimizing objective 0...\n", "I am a placeholder function.\n", "Epoch 1/1\n", "2000/2000 [==============================] - 9s 4ms/step - loss: 120.5265\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAACsCAYAAADrPB1HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydd3xcxbX4v+febVp1WbLcsI1tjLEx1RhDKCaBBAKBQCAhj4RQQnrvPSSBVPLCLy+VhIQSeJS8BAdCC2CTgIkDprlicLcl25Ksvn3v+f0xd6XVeiWt7JXkcr/67Gfvzsyde3Z1Z+bcM2fOiKri4eHh4eHh4eFx6GCNtgAeHh4eHh4eHh4ji6cAenh4eHh4eHgcYngKoIeHh4eHh4fHIYanAHp4eHh4eHh4HGJ4CqCHh4eHh4eHxyGGpwB6eHh4eHh4eBxieArgfo6IXC8iK/Ok7RQRFZGrRkk0Dw+PUUZEqt2+YLr7eaHbL9QOcM6gZQq47idE5G97e77H/k++sWcYr7VJRL4wSJkub7wrLp4CuJeIyG1uJ/r7PHk/dvMeGkJ9U91z5uVk3QScmVXuaODbwEeA8cC9/dR3pog8KSLNIhIRkfUicpeIVBQqk4dHPrLufRWRpIhsEJGbRKTUzW8Uka/nnPNNt/y7ctLvEpF/uscZxaRdRMI55Y7KuuZAyk22bNmvfw/h+/XXFvdHvgY8rKrrh3DOUkzf0QIgIleJSNcQr/s7YJ6InD7E8zz2gaz7+xs56fus1I8EAyiVJwG/GoHrHysii0Rkh4jERGSLiPyfiEwZ7mvvj3gK4L6xFXhPZuADEBEf8H5gSzEuoKpdqtqSlTTDfX9AVXeoajT3HBGZDTwKvAqcBRwNfBRoB4LFkCsfIuIfrro99juewCgR04BvAB/DPKwALMbcd9ksxLSJfOmLc9Lagcty0q6l8DaVkS379fYCzy0YEQkUu84hXj8MfBC4dSjnqWrC7Tv2ehcAVY0DdwOf2ts6PPaaGPAlEakbbUGKhao2qWpkOK/h/l5PAl3A+cAszFi9HjgkDSOeArhvvAq8Drw7K+18TANdkl1QRCzXCrJVROIiskJELsoqstF9f959klvintfzxCQi1wN/dcs5ItJfB/5WoEVVP6uqK1R1g6o+rqofU9WmLJlmicjfXItLl4g8JyJzC5E3y0ryXhF5SkSiwIfdvFNF5GnX8rhdRH59qFkeRSQkImeJyNUi8jERuUzcabqDhLirRGxV1buBu4B3unmLgVNFJAjgvp8C/IAsBVBEZgITgKdy6r4NuCarnB/TUd82RNmyX7uz6lMR+ZCI3C8i3a4F831Z5/fXFm8TkYdE5Msisg3Y5qZXi8jtItIqIlEReUJE5mRd7yq3fb1DRNa5lofFIjLNzZ8qIulci6OIXCfGgt+fovl2wAGezZO3QERedq+1XEROzKq3x1okIguBPwKlWdbS691yl4jIq+532u226fqsa/wNuFByrLUew85iYBPwzf4K5LMISh7L9kBjQD/1Xi0iq937ap2IfFZErKz8ySLyVxHpdF9/EZFJbt5VmNmrOVn32lVuXp8pYBGZISJL3Ou8JiIX5JFloojc47a7VhH5u4gcMcDv9iagGrhaVZer6iZVfVpVv6SqK9w67xWRX2dd40ZXzpOz0raJyBXu8Uki8rjbTjtE5BkROSVHThXjMvF3d0zcnNPfICLfctPjYqyTdwzwPYqGpwDuO7eSNVi5x38EcpWzTwNfBL4MzMUocn8RkePc/Pnu+7kYi8Ulea51E3Cde5yxbORjB1AnIrnWlh5EZALwjCvnOcAJwC8Bu0B5M/wAY7qfDTzgdh6PYwaHY93vcRzwh/5kOZgQkTeJyH1AK/APzP/sa8DtwDoReV1Evigi5aMp5zAQBTIW4MVACZDpNBdgphvvAGZkKRFnueflTs/+CZgvvQrzBZin9iVFlPdbwCLMPXov8AfpnQYaqC2eCRzj5r3FTbsN810vcs+NAI+KSEnWeUHM4Hc1Rhm2gb+KiKjqJozVMrsfwf18p6om+vkOpwPL+7Hk3YRpu/OADcDf+1HUlgKfcWXO9Ck3icg44B7MfXsUcAZwZ865LwA+9/t4jBwO8BXgI7IPD5UFjAG55a8Dvo9pO0cBn8fcYx9z8wV4AKgH3oxp3xMw44Jg2tlPgdfovdf2cGFyFcq/YvSTUzDt4HqyZq/ce3kxxthypluuEXhigAeSHW6dl7ry5GMJfWcpFgLNmTRXwZxIb19UjmkXp2Pa/svAw7LnVPx3MGPiccAtwB0ZRVyMW8wXML/jEZj+7j/9yFdcVNV77cUL0+k/hHmiiLr/uHFAHJicyc8qvx34Vk4dS4A/ucdTMQ1xXk6Z64GVWZ8vNf+2AWWz6VVCdwIPAp8D6rLK3AhsBgL91FGovJ/PKXMHcGtO2nFu2bGj/X8b5ntikfu7/QTTIZTk5E8DPoCZnm8Ezhltmffye+be2/MxneS9WWlbgW+7x9djFBkwCsd73ON7gCeyzlno3ie1mIHhRjf9Icw0c0/+ILKlMApj9utHWWUU+EHWZx9GAXqf+7m/tngb0AQEs9KOcMuekZVWiZnG/qD7+Sq3zJuyykwB0sDZ7udLMQ8NIffzUe45Rw/wXR8Abs9Jy/xGV2SllQFtWfL0+R1d+bpy6jnBLTNlkHthN3DtaN+Th8oru+1hFKB7+vmf7tFWcu9rBh8Drqfv2LMFeH9Omc8Aq93jc9x7empW/jSMwnp2vjqzym0CvuAev9WtZ3JW/mmu7Fe5n6/BzL5JVhkb86D57gF+vxuBpNvWHsc8nE/Jys+0u/FAGDOefwV4zM2/Dnh9gPoF07e/LytNgd/llHuC3rH0cxil2D/S95NnAdxHVLUV87RyDWZwX6KqfXyVxEx/TmDPqZpnMJazYsuUVtWrgUmYJ4stGGveWumdmjoeeEbzWBeGKO8LOZ9PBN7nTid0iXEuz9RzME2B5uNx4HBV/aKq/ktz/DPVTMXfrqrnAmePjohF41z3/xsDngP+CXwyKz/bD/Asep+Yl2SlL2TP6d8MtwIfEJHDMAPLbUOQ7Z+Yh47s109yyryaOVDVFEaxG1tA3SvV+L9lOAozwD2XVV87sIK+bcUh66leVTcDDVllFgEJeq2N1wD/UdWBVmGWYCwg+ciWpyuPPIPxCmaQWinGSf6jkt/nLOrK4THyfAm4TPZ+sVK/Y0Au7v/+MOC3OX37D+nt148CGtRYtAHT59H3Pi+Eo4DtOePoMkwbynAicDjQmSVLO8Yg0+84o6pfxxhqPoRpE9cCq0XkLW7+GozRZCFmyng95kH1TWJcURaSNRMhImNF5LfudHg70InpRybnXPq5PJ8zv8n9QAjYKCK3inEXGjZf/Ww8BbA4/AG4EtNpDzTVmW+qZq8dsQdDVber6p2q+nHMzeZgFEEwTyqDVlFAWnfOZwv4PX0H32MxlpKXCxT9gERVf1lIZ+qWXaWq/xhumYaRjJJ1JMZqdYmq7srKfwrjh1aNmR5d4qY/DSwUkaMwU0W5C0AyPIGxAtwBPKWq24YgW0RV38h5NeeUSeZ8VgrrD3Pv94HaUcFtW1WTmO96jfQuJBtscUczZsArOqqaxlhi3opRlq8FXheRY3OK1mCU51FBREpE5Gw5BFdxqurzwP8BP8qTnVGWsu/P3EV6hYwBGTJt4yP07duPBjJGBaH/e34o41whclmY8ST3QW8m8NuBTlTVFlW9X1U/j1E2N9HXn/JpzEPqQmCxq9A2Y1Yqn0lfV5Tb3fTPAqe6MmwDCl4gpqpbMf3oh4EOzDT5cslaXDpceApgcXgS8/Rei5mW6YOqdmCegk7LyToNWO0eZxSHvP4X+4prqWzETAcBvAicJnkczAuUtz9eBObkGYDfyLWIHcyISF22xURE5orIDSLy3tGUq4hklKzNrvKSy2KMz87ngSbtDVPyDGZa6ArM1Ozz+SpXVQdj9VvIEFe5FoGhtMXV9PoqAT0W9Ln0bSsWZqDIlJmMsbKvySrzO8zA8zGMb9E9g1z7Jfq3rCzIulYpZqBe00/ZBHm+qxqeU9XvuLI3AO/Jqnc6xnLx4iByFg0xC3EyPmcBjFX1ceA1ETlvpOTYj/gaxt3k3Jz0jFKe7See67/d7xiQi6ruxLi3TM/Xt7vFVgMTRWRq5jwxC50m0HecG6xdZeo5LCttPn31lRcxETGa88izmwJxH9jX0zsuQu8sxUL6Prh+iL7+f2DGxP9R1b+r6iqMBTCfb/6CPJ972qOqxtw6Potpa3MwFshhxVMAi4CaifxjMNN/8X6K/QT4gphVszNF5LuYhvtTN38XZjrlbSJSLyKVeyuPiHxYzMrbt4rIdBGZIyI/wgxKGQX1V5ib/j53JdMMV7ZMJzGYvP3xI4wD/29E5Hi33gtEZMCnsoOQ+4B3ALgOwf8ELgZ+IyKfH03BRgJ3inMjJkzIkqz0bkzn/SngX+70a3/cANQBfxni5YMiMi7nNZSQGQW3RVV9HTN9+1sROd1dBPUnzJP83VlFU8DNInKK28ZuB1ZhLJ2ZutZhFOSfAH92H8QG4jHgKBEZkyfvGyJyjuvy8QfMwHt3nnJgLCAht3ytiIRFZIGIfMPtGyYDF2KmALOV2tOBDe5vMFK8jd5FQxdiFOVxGN+y60dQjv0CV/m6BbNoL5s3MH6417v991sxfrTZDDYG5HI9JvzMZ0XkSBE5WkSuFJGvuvlPYFwH7hKRE92p6bsw7T3j6rEJmCIiJ7j3Wr6pzieAtZiFEseJWVX7M0wbynAXZqp2kZiYt4eLyBki8lPpZyWwOw79yX2f6X6HL2BW0/81q+gSjHI5n76uK+8D3lDV7Vll12FcnmaLyEmYh7Z8s0CXiFnVf4T7e70FuNmV6yoR+aBrJDgcs1AsifFxHF5G2unwYHmR4wg/WD5G2f4mplEmMP4H78w554MYf700xpcQ9m4RyPGYAWY9ZiBrwXSauQ68c4CHMZaYToyD/tGFyEs/jvJu3jzMQocOzJTZCuC7o/0/G+H7owWY7R5/BHjePb4IWDfa8u3jdxvw3s8qd6t7j1ybk/5DN/0LOekLGWCRx2D5WbJpnte2rDIKXJpz3qZsefppi3m/N2Ya9naMY3kUM4DNycq/ym1jF2E69TjGojAjT11XkrOoZJDf+Dng43l+owsxU7dxzAB80kC/I/BrzDSXYvqco4BHMINsHKNQfCnn2o8BXxnhey8GTHKPfw/81D2eCnSOdtsYge+/xz2I8TnrzPM/PRUzTRp175PzyemzGXgMuJ6cBRvAe937Kebe788Al2flT8YYGTrd118z/y83Pwj82T03e1FHbvub6baRuNtmLnRlvCqrTD1mseMut9xGzMNOf/3HNOA3GOWyG+Mz+DJmIYvklG2k77g7lfyLOY7F+CdGMePt+4GVwPVZZRT4BGZMjGL6lQ9k5b/T/f+0uXI9D1wwEveTuAJ4eHgUERGJALNUdYuI/Bl4RVW/505rrFNVz3H+EEFMrLNfqGpZAWW/jFGYZxZY97nA/8M8bKT3SdAhIGZHoieBmWoWvYzUdTdhHqj+gVEaPqSqj7jy/FNVa0ZKFg+PQhATr/cyVf3zaMuSizcF7OExPLyOMfsfhnGkf9xNr8c86Xl49CAiZe6U2acxCl1BqOqjmNhtk4ZLtn6YAFw5ksqfyx8wIYJWYqyzT7rpJ2MsOx4eHgXiG20BPDwOUr4D/C/GZ/JJVV3mpr8N47zv4ZHNLzDTa39jkFWMuajqz4dFooGv+fjgpYblut8VkVWYqcb7tXfVfYr8q2E9PDz6wZsC9vAYJsTseDEBM/3ruGknA+2q6lkrPDw8PDxGDW8K2MNjGBCRb2Gc0l/KKH8ur9J372gPD48h4K4gvUNEXnBfd4rICaMtl4fHgcYBYQGsra3VqVOnjrYYHgcpy5cvb1bVoYQJGRQRSQPjtW9wZNyQHbtUdVjiPe4LXjvzGE6K0c5E5Arc4OD07q6wALP37FWq+qd9k3Jk8Nqax3AxlHZ2QPgATp06lRdeyN1xbHiIRCI8++yzRNq6SO2MUEwFWaMx0p2dA5ZJpNM4fQxGHsPN1cuXbx6GavuLin88Zv/U/Y6RbGceBxbpVIp4dxfRrk5inZ3EI9046TSKgiooKEqsq5Pu1lZSiTipRIJ0KgliISKcfW1R2tmNwDdV9fvZiW5stRswMRj3e7y25pFhXes67n/tftJFWsS//NTC29kBoQCOJCtWrODZZ3O3wC0ig9l99ju7kMdQEJFMPC4FNrghADLYmJ0TfjMasnkcGqgqqWSCZCxGKh4nGY+TjMdIJeLEurvpaNrZo5w5qRTprFci0k13exvRzg6cVAonnSbS0UasuxssG7V95uUz747Pb9JFwH2pWD3HfT4XhzpMkPVc7qfvdl4eHgcEv3jpFyze2t+OmMOLpwDmkEiYRWWTw+M4rL2SwJQK7KpQUeruevppnM5OgjNnIME964wnEmzf1YDP9lFVsdcbgXiMLp/AWP/+AHwdE2w0QwLYpKq5G4N7ePRLOpUi1tVJpKOdjqZdNG/ZRHd7K/GuLmLdXcTc93h3F4lYjGQ8ZqxyLgpGEbN9qGWDbaOWD7Vt87J8YFmoZaOWhdo+sP2oP4SGbLS8Diy7mErcvrAYE8j6jZz0hZjAwR4eI0Z7vJ1PPfUpmqJ7vx32zu6dAHxw7gcZX5pvF7mh8Z7e3RoHxVMAc3AcM/06NljNUekJ1CyYRfiY4riHrb/tv0ls2MC0bz9EcPr0PfJ3vLGO1V//HPXTjuCd13+7KNf0KIDvfLZoVanq7QAishFYqvn3yfXwQB2HVDJBIhol1tVJR3MTbTsbad+5g5btW2nesoloZwfpZO8tpID6Azj+oGuNcxU420ZD5Wi4yihwPh/YPtTy4VjFscD51SakAUL4CaqfEgKE1BxbCBYWduZdLSwEG6sn7zv7LAFgdif5gRszMbMl3ALgEsy2Z5dkCqrqULcQ9PAYkKZIE/F0726vzzU+x4u79n0r7PJAOVcffTUVgYp9rstTAPeBjM+f4HaYxXzqTbtz/Fb+xdcZ5dPqJ99j/0ZEarR3I/IVQLn0c//oEDYs99i/6WxpprOliVQiiZNKkk6nSMRixLu7ibS30t3aSlfbbrpbd9Pd3kYyFjVTsMmka52zXEXORv0B1Oc3x3YAqsaitg8rGIJAkITtN9OtQ8RSIag+AvgJ4iOgmXcfAffdh41ffQTx4cfnlnfz0g6SjIKmQBSxANtCbEFsCyxBfAKWhfgsxLYRnwU+GyvoQ0JF8235H/f9Q+4rm19kHSueQ41HEbl37b3csOyGvHnnTj2XTx7/yb2ue0zJGEr9pXt9/t7iKYA5ZJQwUdPJilU8BVBdBVB8+X92x3Hzba/fOkBpEpHMyt/Mvqq5ZBaHeP/kA5B0Kukqdm1seuVFVj+zhKZNG/KWVcvCCYTcl2uxC1agpTWo7e/xoxvqQ2Y4bVPuBCkhSEBCBPETcBW3XMUuqH4CGOUOQNNJnO4mNNEOOKARxEqDrYhPsMIB7IowdlUZvtpyfPWV+MfX4p9Yj6980J3sBuaqfTsdQFW9p2OPYWPt7rWsaF6RN+/BDQ8CUBOqocTXu5Nn0A5y2czLmFwxeURkLCaeAphDjxUuk1DE7kYzCl4/Fj71LIAHOm+md4XvWaMpiMfek4hG2PDSC+zc8AbtO3fQtmsHHU07SUSjqOOgYhmFzl0UYY+dSLCqBsf24YhFCkgopChMsbPVwo9NQH2UapBSQgTVWOH8auPHJqh+gvipccoIE8ypIQl2CsuvSEiwgjYSsrFKfNilAazKEL4xYfx1ZdhjyrFKSvbog1SViOMQSTv4RAhYQlAsfO4DcCTt0BRPEEm7D8i9cyRmrQeQcJSOVJq21IhtSezhUTTSTpprHr2GzuTAkTp+dMaPWDB+wQhJNbx4CmAOPRZAim8BJNMx9mcBdC2Elu0pgAciqvp0vmOPAwN1HF5+/O88e9+fiEUiPb52jj+IhqtwKsfihMI4gdAeVrvunkp602y1qNAwVRqmQkso0QAhDfT4zpVogCB+bCw00YE6EcRWJCBYJX5jjSsPGWtcTTl2bRV2WQgr5EOCNlbYh1XiR+yB+6jOVJrNsQTbYgm2tEZYs7WFNd0xOlNpulIOXek03WmHfMGnLDWDRGK/WP9hEJEa4FzMdnCB7DxV/e6oCOWxX/Kn1X8q2Ecv5aToTHYSskOcP+38vGXqw/XMq59XTBFHFU8BzKHHB9CdAqaYU8AZ5XIQC6BY3uzgwYCIhID/Ama7SauB/1XV6OhJ5ZEhlUrR0tJCU1MTLS0trH1+GbsaG3DGTUP9gX6nZkWFCqeEoLsYIqwBwgQo0aCr5Pkp1SBljmLZivhAAikkkMIqsbDLQ/hqK/HVVmLXVhGYOAa7NJD3WoWSseC1J9Nsi8TZ3BHjP23dLO3sZn2qsHVIvpQSSCmOBSlLSNngiJAA7LRSklD8Ke0b4FJ6jy0HgimlJK5IHu+Hnfv0Dd3LiSwA/g7EMSFhtgPj3c+bAE8B9ACgK9HFj54f+vbQs2pmcf2p1xdfoP2QEVMARcQGrgfeh2mwjcBdwPWqmhopOQajZwp4GBRAUu7XHMQH0JsCPvBxt6Z6CCjBLAgBuAa4UUTOV9V9XzrmMSjt7e1s376dtrY2Ojo66Ozs7Hm1tbXtGei9vAowSl6pE6RcSyjXEOVaQpmGqNQwVZE0drQVNIUEbCQg2JUh/BOrCc2YSPCoKfhrS80iiCzSjtLcFaclkqQ9miSeShNPOsTXt5BIm+NE2iGedGjqirG5I87OZJJOx6HbceiyIRa2cfxm0YXagmMJadsoa/0prHZaqep2qOpOU9ntMKYzzfjWNCVxJZhS/Kk4wXQMmwS2xAlZ7ZRYHdiSREVJWDa+tIMiOJi4fmIpljhYksInDkErSZkVIUSEkHTjkwQ+SWFLCluS2JJmSnH+pT/BjBufBjowbhfdwP8CtxbnEh4HOm+0vsHFf7sYgLqSOr48/8sFnScIJ9QfOrsKjqQF8MvAx4EPYAbEY4DbMU9u3xtBOQYkowBmHmD7W8W5NxRuAfQUwIOAW4BngKtVtRtAREox8QFvAQ6eeYT9BMdx2LVrF5s3b2bjxo1s2bKFSCTS/wkK5RqiWsuo0lJKNUhYg1RpKeWxJLRtx4nsBKcDOwy+cZUEp08kdOQMgkechG/8+D79g6oSSzrsjibZ0djBjvYYG5u7Wbezk9d2dPJGUxdxn+CEfWiZDy3345T50aC7ctb1pQMgAOl6i5wZzgHxpZRQUimPpqmMJZjU3sXRTbuY07aVatlFla+BoHS7X10QcagqaaTWt2H4Q/wVb0OlY4BrVVXd7RaDqrpBRL4M3I1RDj0OQdrj7Wzt3ArAwxsf7kl/8+Q387apbxstsfaKZDLJrl27Bi+4j4ykAngq8KCqPuh+3iQifwNOLtYFEokEixYtYuzYscycOZOuri6aGnaSbOjmhUCAnbYNKE5nF046ZTqlVLQnaGrK8dMqSbonTqc9HeLFsJ8dix4krt0DXrcQHFWccy8HlPQd/0c+//BUMkZ87im86qvgqdv/ts/X9BhV5gBXZpQ/AFXtFpHvAt4eUEUgFovR0NDA1q1be17xeLxPmYA/wMSqesqTIUo6LEpiPsIECWuAMg3hw6Y72U5zfBuloRiTZk8hdMRYAtPH4as+G6vErPZLpR1iKYeOaJJ1zd1sb4jSsPoNGtujbG+L0tAWpbE9RiSRxkeKen87lUHQ8jAd1WXsnlpO19H1JiZfHjJbx2TjTyqVkTSlcTOtWhZzmLA7RXU0ypj0bqqdZuq0kXGymQnWZsr9bQTtKH47hWX7ENsHFT6o8iGWiQsolg2Wz7yCFVDzFvBfAP4w+EMQKIPSOgjXmDQE0gn3lex73LPbhw12wJwTrAB/CfTZ/cMt953DivFvT2Qd7wSmAGuALmBCMS7gceCRclJcvOjiPQIyX3v0tXzmxM+MklR7zz333MP69euH/TojqQA+A3xMRGap6loRmY0x3/+gWBe45ZZbaG5uZtWqVSxZsqRneqetpJR75p/TW7By8F02lvYcHV0s8TwOLdZiBqTVOenjgXUjL86BT1dXFw0NDTQ3N7N69Wq2bdu2R5lyf5jxwVomSA3jusop7fQjnb1PW060lXTTGjS2Dfu0WTz2+nLadu9iyoIzmfCOq1nSHmN7a5TtS5vY3raF7a1GsYulHLAF8SlVvgiV/gjjfHFK/BYaDFFVU4I1vpyWkgpaSkOs9+ef8CyLOlR3pantSDO2Pc3YtjSVEYea1G7G+jZSG26iqjRGMBykLBzEX1qOXV2Pr7wKfzhMsLwMX+k4JDgDguUQKAXfnotSDmJeBE7CtKElwA0iUo9xLXq10EpE5AzgC8CJmHZ6tarelpUvwLcxsQargWXAx1V1VVaZIHAT8F6Mq8eTwMdUdc8b02OfWdm8kuca8m+iFElFaIo24bN8HFl9JABlgTLedcS7RlLEfWb9+vVs376drVuNJXPcuHHD6hI2JAVQRGqB6cDLqhofrHwOPwLKgdWu6d4H3Kiqv+rnWj2BPidPLiy+TnNzc89xRvkLWQEmiHnyrEilOLGpGae7CyzbrJ5zzGbljvhIEkQAvzqUJJVkOkp3qgNb9l1PTjnmGV9sCwZc5Sv4g2XY1r45hXsUzr1FqsddnZjhG8DPXYtf9o4F3wC+MoQ6Bxyo8pSfCmzMk3Weqj5a6HX3J1avXs3SpUv3UPgsFcZoOXVOBfVOJeOcKkpjIciK4iAhH8HplTidm9j9hx+jXTvZcelVLD3mCtJP3UFp6y52BWr5ZeNMUv+7HKcmQDDoEAqmsCrAqfORDlSQDJT0WO92uK/XBpA5kHSoiSQZF4kxq6ODmZFupsWjlPosfAEbOxikcnKA2lPClNZVEaqdChXvANtf7J/vYOPrmHEETFu6AxMceh1w9RDqKQNWuuffkSf/S8DnMdELXwO+BfxDRI5U1cwddjNwEUYBbAH+G3hIRE5UVS8WTpH53JLP0djdOGCZo2qO4u7z7x4hiYpLIpHg7rvvJu1GA/H5fFx33XXYQ4wL/OEPf7jgsgXPI3kAACAASURBVAVpNiJSjnGwvRQzU3EEZqP73wA7VPX6Aqp5D3AlZlXkKuA44P+JyEZV3cN5V1VvwfhKMW/evL32ICn1lXC4YxTII2sq+U2skYbvfpOKCy5g4oVj4akb4LTPsWPaZ/i/Hy+n/vAKLv3yPO7/3tfYsvJVLv3GDUyZe9zeXr6H+Tc+wa7OOP/+6lsYV1mcvYU9isO9VxWtqtzgz4LxS9KszwCLKDwQ9GADVX+cC7yS9fmA23kklUrx6KOP8sILZsbch0WtU0GVU8o4p4qpTh3BmlJ8tSXYFYGelxX2Y5X68deVYJUHaH/scRq+/0VEHX4990J27I5x2JI/sLuunh2zj6Gjvp5A5RgiQRPoOEVWWJcs/EmzaCKQUkriDuWpFJWaYiwO9T5hUnmIGWOrmDVxHOPryrC9cE49qOYLMrM39egLWcdNwHl7Wc/DwMMAInJbdp5r/fsM8ENV/T837QPALsz49VsRqQSuxTyQ/cMt835gM3A28NjeyHWocfuq23l6W2ERsxq7GxGEa46+Jq9vviCcM+WcPGfu37zyyiu89NJLpFIp0uk0oVCIefPmMWXKlCErf0OlUNPWj4CJwAmYqdwMDwE3Ylb3DsZPgJtU9R738woRmQJ8lWFcvWVhkXbvFVtAU5ndNizILPiwfDiOGaMtd9Wvky5uUOa0W79dzFXFHvsbRQ/+PNBANQgtqrqj2PKMFK2trdx///00NDRgYTE/OZ0j0xMJj6ug5Ng6ApPKCEwswwrnt5h1JFOsaNrOkr89Q+eyl2l89/vZPnEsu6pq2VE9npRvz/NKow6H70wyptP43ZVFHUrjDnXpOIeXp6ifUkvt9AmMmVJFVV0Y27//KXiqSirVQTy+g3h8J8lkK8lkK44Tx7JL8Nnl+PwVWe+lWFYI2w4h4gMsLMuPiPluqVQ3qgksK4SIHxGbXV2baOlYRTK2nWhsK4l4I6lUJ+l0FCcdw3HiOBrHSUcRUtiaxk9xAj2IyHuBxcN8bx8OjAMezySoalRE/onxZf8txiLvzymzVUTWuGX2UAD3ZlbrQEdVSfdjDHXU4eblN5MaQhCQ6VXTR9Wnz3GcPSMH7COLFy+mra2t5/PkyZM5++yzCz4/ld77h6tCFcALgYtV9WURyf72a4BpBdYRBnLvhDRF3WtjTwSyFEABN9QKtg8c98azbDTtxv/LKICZFblF0sDT6imABzv7WfDnv7hxCF8Hfqaqf85XaH8clNra2vjjH/9IR0cH5U6ItyTnMjY8hoqzJ1M6f/wegY/T6RSrtr/Os43b+HdXkpVOmO0+E86FiXPgkjl7XKOqM874VhjXlqauI83EdIIZfpuKugrKJ9dSPiZERW0JYyaWEa4YGXcMVSWRaCYW24aIjW2XEgjU4PNV9ihkAIlEC93db5BINJFINJNMttPZuZKu7nUkErtwnMQAVykME7ULcmcyVft3N7TopzMvbpf3Y2CCiLyB8QFcAixR1YHnBofGOPc9N3ThTowhJFMmjbH655YZRx6KNat1oJByUlzx8BWsbsl1g+5Lub+cm8+6uaA6j6w5shii7RUrVqzggQce6JmiLTZXXHEFPp+PiRMnDl7Y5et/XcFdy7bs9TULVQCrMT4OuZSzp1LXHw8CXxGRjZgp4OOBzzG0aa0hYyE4bgfkE+lrAcx0bpaNo30VwMy+vUWzAKY9BfBgR0QOV9V8/nf5ygowSVW3FlmMLozP4LOY2cwLgXtF5AOq+qfcwvvboNTd3c2dd95JR0cH46xqzonNZcybplB57lTEZ6Et61mzdTUPN3fwr1iYTVYFTaFq0pYN1PVoIXYqyZi2Jqrad1Pe3U5ZJEVFLEhlsorZFVM5csYYxh9TRdW4MJV1Jdi+4bfmdXauYueuh4nHdpBOd5NOR0inI6TSXaSSHSSSLeQLiSpi4/fXYNthVFPEYg0MFFfFtksJBusJBscR8Nfg91dj2UHS6RipVAepVCfJZDvJVDuJZCdpJ4Y6cbc/dBCcHsUvpRB3IGAZnwVLzDZ37U6IVidAN2FilKJWGL8vjN9XRtBXRsBXRn3pJMpCNfjsMD67Ajh9n39DVT1MRI4AFgJn0lchXKyqH9nni2RdLuez5EnLpZAy+yXxdJyXdr1EyimOtbY11tqj/NnSvyHlvMPPY/74+UW55nCyatWqHuWvmOHhAKZPn86MGTN66u2Kp3hxc2uPXtIfD68wzz2W7J1MhSqAz2MGkoyanpHqw2QvmB2YT2Li/f0KGIsJBP07hjlyuyCksmM691gA7V4LoPRaADP6Xk9A6CLtyuFZAA8JnhORvwO/V9W8y9VEpBq4HPgU8EvgF8UUQFWbgZ9mJb3gLt76ErCHArg/EY/Hueuuu2hpaaE2XM05u+dSNq6S8FHbWfzgH3ggXsVTlSfQXDLZ9FxlvedWduzmsIaNTN6+kXFN26jpsgjIWMpKxjFp/qmMO2Y81fWljD28gmBJcYMfqKaJRrfQ1b2OaHRrj5Jl3rvcKdmdRKObB63L9lXgC4zH0TTqREkn21Cnm0QiK7yF+JHgFBy7gqSUkJIACauaLquOhliEXbF2drfuZndsNy3R9XQlu8xp0ruD757Tcja9bqnaY8lzgEllh3Hy+JOZVD6Jo8fM4Yz6E/Hbo7dITVVfB14XkT8A8zEW7PcBM4BiKICZ6eVxQPYD2lh6rYI7MD9YLdCUU+afRZBhxLnp+Zu457V7Bi84ROaMmcM9FxS/3pEmszL38ssvZ9asWcN6rS/c9wqPrirMy0EE1n7vPALuQ6wMIa5KoT3h14DHRGSOe87n3OP5wBmFVOCunPqM+xox+rUAWrZZAQx9fAAzQZgzu3IUKyhzyq3f5ymABzOzMKsU/+6udF+OedCJYazos4GjgP8An1HVkXIUX8bQVkiOOKlUinvvvZeGhgYqyys5uXMuT44v4dUJK3h8w3Q6qi/rKRuOdjF902tM37KZ2q4AVbEKAk4YnyNUdYaoafVR5u/mmK+eR8XCM/dJLseJE4/vJBZrJB7f0fOeSO4mlWwnnthFNLoZxxk8KIJKCW3BWWxP+mhNRGlNRGiJddGaiBJToT3lENcUfXUOsCmhzFYC7rZrrSkhTQPQMKTvku27JAghX4ix4bGMLx1PfbieUn8pfstPwA4Q8oU4vPJwZo+ZzYTSCUW3eOwtInISxtf2LOBNmCnYfwLXAYuLdJmNGAXvHIzxI7Ot4+nAF90yy4GkW+Zut8wkTPsu1Cgy4kQiEZYtW0YikWB3bDcb2jf03BdbOrYwNzmX2pJagnZwwHoUpSuW6jFs9IcgVHVO4Tu/PjBX5majMeNacf+KNuSNgae195VlG82E6/ypNYQCAxuhzjiitkf5GyoFKYCqulRETsHc/OuBt2DiMZ2iqisGPHmUEYS023nZ2RZAn917bNmo09cCmNmVwyqSD2DPIpP9pCP1KD6q2gZ8UUS+BZwPnIYJVFuCGahuBx5T1ZUjLNpxGEV0vySVSnH//ffzr90dvDZ3AfFwHTcFLNKWYESH2t07mbl+FTO3tjO+qxbbPxlbJ1DV9gbVbetIahuVpxzNtNNPpf7YD+EbW1eQ0uI4SWKxBuKJXXR1rSUS2Ug83ugqeo0kErkuXvmxfGOIWNVsT6RoikXYGeukO50mqhB1hK600JyC1IDBY6AiUEGZv4yQL4TP8uG3/FSFqghYAeLpOLFUjOmWH5/tI2gFCfvDBO0gATtAwApQF65jXOk4akI1VAerqSmpoTJg4p6q+wfgE99+o9QNkWUYi9tPgQ+r6l45QIlIGcZiCMZxYLKIHAfsVtUtInIz8HURWYsJMfMNjHvF3QCq2i4itwI/EZFd9IaBeRV4Yq+/3TCzfPlynn46v6vyhEwc7Y7C6iobvIhLO0p7waX3Z1Iq3Lm8iXRej7ji4reF3181j4rQ8IWGGlQBFLM07EPAA6r6gWGTZJgwCqA5tnMtgD0+gD4yUQp6FoGkPQugx96hqlHgz+5rnyhgoPoBMF9V3+KW/wDGMvESZgbvHZgtGAvbDHOESSaT3PyXRdznr2brsUf1pNuOMm3bBiZtW8eMTa8zNjoRX/AEyqKd1LaswIn8m00BH2umz+L0T1zH286YO6hCo6rEYltpb3+JtvYXaW19jkhkI+Zn6g+LYHAsweB4xFdDXEqJEKA5kWBzdzPr2newsn0HUY0C0azzhOpgHWNKxlAeKKfeH2auL8yk8kkcXnE49eF6akqMklYRrMASC0ss/JYXB3AQfoDx/fsucKWILKZ3IchQRuV59LUYfsd93Y6J/fdjzIPbL+kNBP3WrBiAAJ/F+NneS28g6Cv3txiALS0tLFq0iFgsRmenET9SE2GjbCStaU4edzIlPrPjTVWwihnVM/qc39AW5bFVO0ile6198ZRDezTJ2IogcycOvrHCwUKgvJavVNePyLXmTKgYVuUPClAAVTUlIj8B/j6skhTArniSV9s72L7mETq7mkAEVSWaSKHA7sP2tNal6CZa0gJMorXhVVY3Pol14hga7A28uHkzVM2FrauJOwnC9Q5tqVYefuLPaNkmyg+L8lLj/xKMVgDQGUvR1DnU+NeGYyaaILbPvDG4H5CHRxaDDVTjMcHZs/kGxvKYxlgvrsm3AGS0Wdu8m88ufZGX6qaDCOF0mis3pDi9KUXj+gfZ2b0SsccTCp3N5KaXiMbv5fH6mTQseBNvP2MO7zxmApPHhPvUqarGH69rLclkK6lUB8lkG5HIBto7Xspj0ROCwfHgq6JLQ+xIBWlKpohoiC71055W2iNdbOnYQlcyv/XOJz5mVk9jVs0sFoxfwMzqmUwqn0Spv3SYfrlDF1X9OoCIlGCmgBdi3IruFpG1qnpsgfUsYYD1yWrmRa9ngBBnqhrD+LZ/siDhR4F4JMkrL61gy5a+htJXrJW0BtuoDFbyobM/StDXf2za+/+6gmebYnnz3n7MDK5+0+FFldmjl0jHvq/oH4hCfQD/jYl7NKraywUvvs6WWAI42gSVyZA5rhr4fMu3kcSp/zZRmmjM2mb9IQJAeZa70JSF7kHX73B9qAkBe7ub5afdSBTJbQ/tZQ0ehyIFDFRX5Xy+HaMc7re0JVN879V13NMWJV1ei+U4vGNDC5/YHKI6qbzcvs4of1Ylc6eezqQF9Vyx7HR2py3OmV3Pve85jrKg6bocJ05Hxwra2l6grf152ttfJpVq6/faKSmh06qjWSvYlPDzRizF1sZGIqnBu7aKQAWTyydTF65jYtlEjqw5klk1s5hWOY3AKC6KOESpAMYAdUA9JiZf7ahKtJ+x9rlGnrxjDc21z4ENJd2TCEXHIo6fC3f0uu7fvXTgrclnADMoyZ+5aDt/XLS9iFJ7jCSFKoC/A24SkckY59c+gfJV9cViC5aPhrjRho/Wl7HjijpCyvahYiGub4si2Fg9vi62CqKK5UR4c/vTdGkmJpiS9rlfI7P9UrILSXSituD4BMcvJCv9ICb+VWvEXN+/lxH+/bYQ8g9vZG+PvWHDaAtwSOCo8pvNO/jphka6xQLL5ujG7Xzz9TDTo0EiqTj/7OqgsfUBQHjnl77CxLmzedevl7I7bfG2OfX84r3HEo2sZkPD07S0LKGzczWqfZ+Sux2bLXGhPa1EVYikhda0sDlh0ZQC447Z1xI4rnQcc2vnclTNURxWfhiWWNiWTYmvhLAvzOSKyVQHqw9Uv7mDBhH5FcbqdyRmZ46nMb53S1R17SiKtt8QjyRZ8e/1vPqf14gFI4i7eKjMriUYqqQz0UlcOymxQ4T9YZJp7TfcSCSR7tnEoKY0gOfBdHBRqAKYWcLz33nylMK3tdon3PuQL3MjNfcIs7/4Vx5743VefvllLrroIo4//njaH9lI59PbqDh3KhUL+9rrmra+m/tufB4AW5J8pP7dcPUjMOVUAP6z6M/864HbmPeOSzjz8mv6nBtJpJj9rccI+S3Wfm+vdh/y2E95X5Ej1XrsSVqVjyxfw4OdCRCLia1NvH/tTi7pmIw4aTYndvNqrJxk7ElAOf7cdzDt+Ll8/8F/YieWcvnsFi47uo1nn/0P6XRXn7obk8KGuM36uMWGuEVbWgChKlhFXbiOsRVjmVRSx5xAJWF/mMpgJRWBCsaExlBTUkN9uJ7qUPWo/C4eQ6YG+Dmewtcvz9z/Os+s/wtqpXpmxUSED37nPK78x5U9sfk+cdwnmFX2Lv7rd8v6r8xdDOxtYXrgcO1NhZctVAEc9Ul+Ve1x1RYcSNuIbfXu2OE+mWdW8+Z7Us/k9cHyZeX3v/1bumcRx/63/ZPH/oeI+DRfVN9DkLQqVz33Kv+IK750igtXvMTVu8YxXqeAs5XnoxYNybGUVraRTLzOmFkO9Sdt4omnz+Lk0i2cfLypp63VvDenhNdiNquiNhvjFuMrpnPSuJO4tO5YJpVPoq6kjrpw3aChLDwOPFT18tGWYX9EVXnoL4+zdUMDXe0x1JdCsKivmkyiqoOmUBPfff67vN76OgDvOuJdvOWw87noZjP9e3htKcdOyr+Y4+iJlZ7yd5BSaBiYUV+5kK26CSAK2HZWwOZMBGe3ZB5btZNPAcyKUJ5Z+Zsv9Eu6J4zLkEX3ODRpFJHbgVtVdc1oCzNaOKpc/ezL/CMp+NIpPrp8De9vnYk4KUpmrebZhnXExvmZOnEzgcpVHBYwbhk7dm1AgJgjbE4IO5IWDUmL12IWUUo4tu5Yzp66gIuPuJjaEs/162BHRA4DKlR1VVbaWcA3MRFJ/qKqPxwt+UabnTt3snyFG3veHdXr6+v50EeuZP5d84nH4yaAG1ATquHbp3yb+1/YRnfCjHnvOekwPnJm7loyj4OdgkPii8gxmC2mZmP0sdXATSMVB7BHr8ussE8LkkcB7LHy5THUab5oD1kWvR5r4kAWwL30//M45PgaJvjyZ0XkP8DvgXtVtWvg0w4uvrjsVR53lb/PvbSZd7dOJV26na63LGZd59OUTk2SvVY2Fbdo0BJWxhOsi1lsSViEfKUcP/Z4Tq4/kY+Pm8ecMXO8RReHHv+NUWG+AuD6oz8IbHLTvysi3ar6P6Mm4SjgOA733XcfmzcbG42dLOXY2SdQWVfCsfNn87EnPkY8HSfsC/O1k78GwJbGMZz6w6fojJkJisNrS7nq1Kmj9RU8RpGCFEARuRD4C/Av4BE3+TTgRRG5RFUfHCb5enBcG6CVsQUqiG33RDHvsQC62ZLHVJeZ4u1DnyngzP6/A1kAPROgx+Co6u+A34nIUcA1wA3AzSJyP8Yq+OyoCjgCLNnWyN0RBwE++cpWLmuqITLuH+yY9wjJ2G7wQ2z3FJwx41mzbTulz/rZJA6PLtiFpsvxJ4/k+2dfyVsPP8uLj+cxH+P7l+EKTHDz49xQZV/APHAd1Apge3u7sea5dHV1sXZtrytkMFbH2y4+g2DYT1OkiWcbTDczf/x8LppxEbs6Y9zy8PM0tpuwLpbANy84yluceIhSqAXwBuBGVf12dqKIfNfNG34FMKPYqQMCkqbPFHCPz9+AU8B5Ks6eAh7IAqheIGePoeNO/35RRL4CfAz4CfABEXkds7f2Lap5bdMHNNFUmk+v2owGQpy5uYGLd2xg29z7iExqhhR075zFzpcu56kJ/2Jl93MsfLGWqa1BdN4EUtsuJdo5kT9etYCzpo8d7a/isX8wlr5hyBZiNifI+Nn+DbMN40HL2rVrueee/Hvq2skwVbuPwSZAIGSG9f96+L8AKPGV8POzfs6qhnbe8T/P9AyR93/kFGbWl1NZ4j1cHaoUqgDOBO7Mk34nZpP5ghCR8cAPgbcD5Zj4Gx9V1fx702SRdk17mXAvOAw4BZzXApgeeBHIQD6AmSjotqcAegwBEQkAl2CsgG8GngFuBSZg/JcWAgedY/t3XljJzkCI6kgnn2j9M1vf+jTYkFKLnWveSueqi3l53GJWVj/HkeWzmdQcB1I8tuPNRP3lvOPYCZw1y1P+PHpow8T9y0Q0Pgm4JStfGYJL04HIjh07AAiHw5SW9jpORNoTWO31hMOlzD5tAmKZDRKaIk0AzK+8gj88u4lXt7XhKFSEfCw8ciwnTq7GGubxLB7p5rWl/yIZ37sNFEYSX6dNoOOgvoX2oNBvuwsTCPqNnPQTgZ2FVCAiVcCzmAHwfMx+jtPcugclE6YoWwEccBFInqnavLGOsqZ7dQALYOZcTwH0KAQROQGj9L0XszXbHcDHVfX1rDJPYtwqDipWd0a4szsFls1Hnd+RONZMQy3t9JF4/jrGNZ9Ad8Vmxp46kanrv832l9o4JfUArf4qjjlqKufPncB7TtrbkOseBynLMP601wCXAaXAU1n5M4GtoyHYSBGNmq0GTzvtNE499dSe9Lu/s4zWaDdzz5/I/HdMA6A72U1a06gT4KFnZvAQq3vKX3nKVL7wtiNHROblf1/Ec3++e/CC+wEXT/40AfvQWu08lEDQvxWRGcBSzNPWaZhFIT8psI4vAY2qemVW2sZCBc3MkVnuUSpYyeqX19G2ywR03fT8SqLrGindBkGELa+9Rryz79ZNu7cncNJmL0SRJO2JIDs37SDdYpTAlhYTZ6I9lmbr7kifc7e1msbnKYAeBfIf4B+YfbQX9RMSZg2Qf07nACXuOHzwhddIWzZnOE8xp/RZ2mPCXR0BpjRcxvTmEwha7TxbWcHSJ42F76z4KwCc9KZTuOGDC0ZTfI/9l29h9tqNYpb4fV9VW7PyL8fsCVwURGQTZjvFXB5W1fNF5DbgAzl5y1S16DdwKpXikUce4fXXzbNjSUnOrhyucWLSUTU8uP5BHt30KPG0sbhpuoTZ4ys4eVoNAOGAzZWn5vtaxWHHG+tY9sD9OGnT3TVt3gTA1GNPoGbCpCHVFe4qpbKt2kT8GHaEQHcIRxzaq/rfSehgYyg+gF3A54HvuWkNwLfp65g7EO8EHhWRe4Gz3PN/D/xStZ8w5FlkLHAiRgHcdNLbWPXckz35lSstapxe5Wzlkw+ypXvg6Bu/b58PP/7BHuk3P7WeFS8sznOGpwB6FMz0wcInqWo3xnH9oOHGN7azAaFeG/mA3MqanTb/LJ3NdUd9mY1Pt+MA6bKlLO1cyGE1JVxz0gQid91FDJh/9tmjLb7HfoqqvuouqHoTsENVc6MX3wNZZq595yT6bnAwHrML1n1ZaU8A78/6PCwbt27cuJHly5f3fB4zZkyf/HjEKFsVY0r46eM/pSXW0pPnJMZwyQkT+eDp04ZDtD1Y/vAi3nj+uT3ST73sCsYfMTSr485fvESya2SDJoQOq2Tyx84cvOD+zFcKL1poHEAFfgb8TETK3bTOIYo1DeME/zOMH+Bx9K7Y+kVuYRH5EMZ6wuTJk7MsgEYR3NlVCsQIOX7KNUg4IXTTAUAsHaU50YJlle35Xdz4MH7pBitFq/QNfpmwQyTqZzAptOfehyJwuTc15VEAGeVPRN6MCZ0EsEZVn+z/rAObJc3t3LK9BUvTfJyb2dqorB//dt4e+jCv3LqGMq1iSvDfLJ17HrfOm8Mpk8t4/Ff/ze7ODsYfcSTjZswc7a/gsR+jqs3Aon7y/l7kazVlfxaRa4EO4P6s5Liq7ijmdXNZtmwZjzxiAm8cfvjhnH322UyYMKEnP9adJNJh9M6zFp1BTCIIwldP+BHfWLSadGQyV314atHl2r52NYtuuoFEtO9MWdr1oz/t8iupnWyuW1pVzbjpRxRcd/ujG+l8ZjukzFhffelMrNKR8c0LTK4YkesUg3Q6xgvLL6W7e/1e11FoGJg5gK2qr2Yrfm5swJSqFvLkZQEvqOpX3c8vicgRwMfJowCq6i24Tr7z5s3rCe8nODQ3T8JxfGBBye65LDy7kjnv7Ku1H8ulhXw1D49hQUQOx4ROmouxdgNMEJEVwLtU9aDagLglnuCTz6+CUJhLuJfxHS20zPk2O56fTNPqNZySqCIoncx7azlvP/dM3nj+Oe7+6m2079xBqLSMc677hLfPrsd+iZgb81rgT6qarfGcJiK7MAtUnga+rqoF+bQXSnaIl+OPP56JEyf2yd+1uaPnOIYR7dQJp9HYOI10lzGbDEfs2nXLniXa2ZE3r6xmDMeccx4lZeWD1uNEkiR39FUiIy/u6lH+/BNKCR8/FrEPrL4hEtlIPN40eMF9IBrdRFfXvu0xUKhafQvwS+DVnPTZwCcw/oCD0cieJvo1wKcLEaBnChgFtdCevUFMQGgPj/2MWzEWg2mqugV6gtfejnF9ePMoylZUVJVPPbGUpnAVR+pqzos/CpNu4qa/KtOj6zgvNpY0sGDqYjbHF7Dok9fS1WJ8d+umTuPtH/9cj7XAw2M/5BzMdqi/z0p7FPOAtxGYinGTekpETlTVvEtec2e1CiEWM/H6rrnmmrznbHrFtKP1NS/xnlnv4UsnfYlrbnuRn79u1mtee9rw7OK64snHAFh45XUc+9a398mzbTvvQsp87PzFy6R3x/Lmjf/mAqyw74B7MOzqeo1l/3n74AWLRE3N6Rx7zG+zUgpfyFKoAngMxqk9l+cxFo5CeBbIdQKYSd/YTv2SPQWsKj2BoVHJu3evh8cocwqwIKP8AajqFhH5LLCnk8wBzJ1r1vNkuIoS7eZD6V/SveU93LBMmRtbx7ndtXQ6FhX6Z554tYH0i2Zgqh4/kePPvYBjzj4X2+fFIfPYr7kOeF5VX84kqGr24q0VIrIcM5adj1EM9yB3VquQC2eCPofD4fwFXJ/0lJVk9bYE/9OxkVe2tAPwphljePe8XpelZCLOq/94hFjXUL238uAqZRNkGt2Lt+9dHQ5G+bP2nHoNTq/CLh3+fqGr6zV27XoEpXihWLu7TR/n94+hNDy476WqQ2pXE5oe+tbxohYVG8fQ/PRvhnwuFK4ApoF8O0VXY7bmLYSfAUtF5OvAvcDxwKcwW2YNSq8F0EGRHAugpwB67HdsAfZ0JDWPZwdN9W84XgAAIABJREFUuIqt0TjfamgBO8hV+nta1sziqd1Hc0RkO29pK6E1thJNrqHJSYAI0044iePfdgFTjjm+YCuBh8doISJjgYswrkr9oqoNIrINKNzZrQAyFsBgMJg3v6nDWAB3VGxg+ZrZLHWVj5Df4o9XzSfg621j6557hiV3/D5vPXvD2LKppP/ZRif7tmrWN6aEsR85tkhSDY21r32L9vYXhqXuCePfxYwZXx60XNsDD9D4la8OWq4/EjxMy+DF8lKoAvj/27vz8DiqK+HDv9Pd2mXZ8r7vxsYG42BjYwPGLAaSEBLWkCEJMdsAIYRAwiSBYQkJhBmyQD6YAZJgExhIWAcGSAiEHRMwYLANtjHeN0leJEvW0pL6fH/cktRuS+qW1K2uts77PPW4q6qr6gp0Vbdu3XvOa8B1InK2qkvGKyIhXOT11xM5gaq+JyJfA27FBcDd6P17TyLHR4eBUQ009wAKELAGoPGfa4C7RORKXE85uJmFv/X2HRB++Mab1Gb1Y6a+zaDPwpTvnE6wupTjd5RQUf0e7tkRBo0dzwkXXsaQ8d0Tf8wcuEQkFzgVGAfcq6rlIjIO2K2qu5J8ue8AdcQJ1yQi/YFhuKFOSbFz506qq934uNzcltd6H7y4gbUflqGqbNy8k1wKqA+EmdJ3OifOGQzA9FHFzY2/TZsWsr3kGbZtXc2ErynZefnktNWj2AHZDavZUPszJCtIIL/zkzQCeSE2LUnPMK6qKjcqbeTIiwgF95802lmBYC5DBp/R6r6df/gDe158sXm9odSNFcw/4gjyZychitB3231W2Uei/9euxQVwXiMib3rbjgYKgbmJXsybqdWp2VrRYwBVBZWWV8A2BtD40CNADm7oQ8vzi2sRPRw9rkVV25x6JiJzcfE2p+OyhyxQ1YXtXVhEDsVNrJoJ7ALuBW5JJNxSR/xt03Zey+pHrtZwWulrbN5+MDV1Dczb9ga19e4+fPBRxzLjtDMZOLp7wlCYA5sXi/bvuExSfXCzcsuBy7z1i5J4LfHO92jM5MdC4CbgCVyDbzRwGy6pwVPJuv4HSz9q/ly5twERlw/r3WfXouri0uYThFAtFeEhXDCnH+fOHNJ8TEODC6Gybt3vqG8op2BQ055aInS9nVwboiPDzdo5kbekSVawD6P7nEcgkJ3cE1fV00jMJHFVyn73O7R2/2GixWd9jaJT5nf9usluAKrqKm/G7xW48C0CPAzco6pb2z04SVpe+HoNwKgtNgbQ+NAVSTpPIbAcl0nkwXhfFpEi3A3ydVyP40RgIbAX+FWSygTAbcuXQu5gzmh4gu1rxhLSEKM2v0NNfRgJ5PPFyy7n4LnzknlJY36L+/2+DPZ59/gM8ECSrzUP90r3mzHbG3Fj37+Na3RuA14BzulEeLRW/fTJj8la+hYSgPzKUTzy45Zhw8OPvovCocv2+f51ALV/4bW23sepUvTmv9InO/npFYuzfk2WbKVycy47VxaAZtakjWDZXtbsPblbrynBCKOOa3lxG8hSsj9YAB92azESz52oqttIY7LtpjS+ASIQNQlEbBaw8SFVXZSk8zwPPA/gZR+I5zwgHzhfXTfBci+A7tUi8utk9QK+u2ETK3MHU6CVTP+8hs8aCulfucdr/PXlKz+4kQkzxyXjUsZEm4ObXNUYMzt0I66HPGlU9RVaGePu1auUtBjqGyMs/nwn7y/dzuyAGz4h9UU0ZO2lcOBqkEYKBq8AoDYigIIGyQ3lRCUpUIg0eh8j0FBHQUkOQ2rmQA0INUkrb1ZwM33z9lBbVkDDBzlklwWRoLaWidXfQt2SbqRZ0dgG8oa2Pq6z61oPz9OadhuAXld3jqrujNp2MPAjXM/EU6r6SCdL2SEtDT5Fo8PAqCAh6wE0/iMiObgG2WRcJ/YK4JG2wkQkyWzgDW16R+T8DZfBZzQdSL/YnjuXLoaigzg+/Bqfb+8PQE3JGoKB3nzh5Mus8WdSqbXpoSOBiu4uSLI9+u5Gbnp6Bd+rrqfcS/hx1a9OY+WqaygtbRk9VdUI1291c8z+dubfGFoY1fZ9+3fw4vX7nHdt+G4A6qSGcbedlNQyV71xEJsuvrh5feSih8ifMSOp1zAdcF3ire94PYD/hatUV0DzQNc3cGOatgEPiYioasqzPUeiegAVoU5apkwHAtYDaPxFRCbjYoUVAU3vay4GbhaRU1S1axE82zYY2ByzrSRq3z4NwM7EJttSsYdXe40loI0ct2kPqyWfvL21BCK5DBx1FnO/OatrP4ExbXsRuBoXmBlAvWEPN9PJ8eV+8fKnJfzHU59wQm0WtXmb6N9/A8XFJXy+9mfs3u1eATfkTGDF7rV8XBNk5uCZHDH4iH0bfxsWtzT+hhzG5upD2V0yiUIdBAKl2VtI1qOZqrJr0SIqX3oJgKxRI+k1bx5506Yl6Qom1eI1AGcDl0atfwuX7/BgVa0QkdtxjcPUNwCjegDrw27kaaguC9EQ/cZbejbjO3fiRnR8S1X3QPP4vIdw45hSOegk9n2GtLG9U7HJfv/2yzTmjmFm4zvs2doPqEHLd5LT6wxOvvxEgtYjb1LnauAVEVmFm4LwZ2A87iHnnHQWrKt++NhHzKgLcVg4xM7eO5k46U0CgQhbtqwCQCTETWu3UBXJISABXvryLxmQP2Dfk7zwo5bPJ97Mrvt30hfX+GvURvKPSN4YwPCaNZT+8vbm9b7nnUffb387aec3qRevATgEWBO1fhzwhKo2dbUvAi5IRcFiNY1cEiJUbh9B4cr3yS48l6yCIAX9kjd925gkOQo4oqnxB6Cqe7w4mO+k8LrbcT190Zr+6pfQRarKs+IewE4p28l2rYdIhHw5gcOPm8CAkfHTPxnTWV68vWnAN4DDcTPr7wMejhn2kFFuff5TdlfXM6Muj8qi1UyY8g8CgQiBQAETvFhylfSiaqMbhn///Pv3bfxFIuhfLmLHxrNp0O9Bfn94opA+KiBQMaSCrNEFTDmp87NMa1asYNt11xPxQtOoF6Mwe/w4+l9yCb1OSu6rZZN68RqA1UBB1PpM3BNXk1rcgPOUi84EQgREFSFI0GIAGn+qxc0QjNWb1AY9WAzcLiK5qtp0nfm4fMTru3ryD7ZsYnPOEIq0glGfF1HKTrJqQhTk9WXG6VO6enpj4vIaen/0lgPCfa+vdXM3pJ6Gog0MHLgegOLiWQwffh4Ab25xEdim9JvCzCEz3YEVW9DGMI1bNhNesY26yAK3fS+wt5aABKltrGbE12fSa9AAGrZuJdzJeWDljz9OXVRu4ia95s+n92mndeqcJr3iNQA/AhYAPxSRecAA4B9R+8fRkug+pRqjMoE0TzMXQQKZNt3I9BDPAveLyMW09PjNxsXkeybRk3gTscZ7qwFgpNcDsstLLXcbMFNVT/C+8z/AjcBCEfk5Lt3ij4GbkzED+PEViyF7IrPDK1hfF4Yg5IbHM23+KLJzOx8M1pi2iEjC7xVVNW6oJL95b72Lydc3IgRyy5k95y/N+w6b6lJ8Ld+xnMteugyAomwvbOirt8Ort1Je/132Nn6RpqRaOeOKKD79IFYufoO3Hn2Qmsa9XNrrT2y/4UbKH3usy+UdcNVVFH3xFAAkFCI0NKmTr003ivcX+xbgBRE5B9f4W+iFg2lyOi5AdMrtMwmk+TYWsAag8avv44ZIvEFTOgzXgHsGuKoD55mBizHW5GZvWYTLUjAEWsZ1e2Nz5wN3A0uA3bj4f7/uzA8R6w0v8uuRZbWUBCshAkXah0NPtFm/JmXujlnPxs0Ejg6wXo/L2JFxDcCV2/YwpmgDRxWupU9eS+DgsWN+gEiQpaVLeXRVSyKSc3PmUfXYE7BuKzScTK26SVcS2Q1ZIcor1vH5H55lzYa1VDWUkxXKovr/nqPqdRckMDRoEBLq3MNasLiY3l89jawhQ+J/2fheu78FqvqaiEwHTsKNLYp9fFgKvJuisu0jehJIS6DJAAFrABofUtVy4Kte5oKDcRMxPlHVNe0fud95XqWdfNuq+p1Wti2jAxl6ElVaU8ua7FFkaZghm0KUANl1/Zg+f4z1/pmUUdXmgaUi8mVcFo6rgH96m2fhHnBu6fbCJcGemj1ce8SdZAdbIlvUVE9hzJgrqKirYMHfFtAQcfuumPpdJv5lAOWaC5y1z3kq/3oLtZEa/jF5FBoViO+w1RspufGm5vUxTz9FqLg4pT+TyQxx/2p74SpaDVnhzSDsFi2TQDSqB1AQGwJofEZEsoBNwAmquoJ9J1JlrOeWvw30ZXJkNev3VkIWFNT345D5E9JdNNNz3AFcoKqLo7a9JSJX4TLe/F9aStUFS5c/wqRDGmhoyGJH6Rjysov4whFXArDy9VtpiDTQhyCnBfrzlRdDRDQXoZb8gZshpzfhxmIqn3uE5488kuePnE19pJGABMgLZhEMCB9m5yLeM2Swd2+ytlTAlowPmWiSIG2P7SLyU+AXwN2qGjdtVktff6Q5mIVYD6DxIVWtF5F6Wgm7ksne2rENcvsyrXIH5Vn1EBEOmzbBev9MdxqNm+IQqxoXDDqjbNpVzVGD3wMgHM5j08enMXfWfMaMGQ+V21m17GHoV0xxuJYrN1VRFp4IQFZoI8U/uABE2HjBBYQ3LOa31ywinJVAPtuy8vjfMT1CWv5yi8iRuKC4Hyd6TMskkKgeQJsEYvzrd8BPRGSBqjbE/XYGWB50k5qH7ahmF5AdLmbKvEnpLZTpaf4J3CUi56nqFgARGQb8htSGV0qJipp6sgLuz8O2z46hoHIc2Xnebbn0U97LzSEnrNz4/GGUTWzpJ3lhyxL+45lx1IWy4MwL0TMvJJyVTVZ9mNPff5ljv7mAUE6qUo0ZP/taB77b7Q1AEekNPIyL5H5DosdFol4BE2lq9In1ABq/OgY4FtgiIsuJ6bVQ1YyKm1BRV8OG0BCC2kBk214giyLpS/8RFoPTdKsLgaeB9SKyxds2DFhFx+597RKRm3Cz6aOVqOpgb794+y8BinEN0+96Qz4SVlnbQEF2lVupGE1AQwwe04valSvRTz6kuDTAMXuC9OvnYuxtzhN2rP8bz0w9nJ1F+0eZGr3pM/51zkymjIgNBWrM/tpsAHpT7/+cgryl9wGPq+o/RCThBuCyZcuAPC8VXMQb0WCzgI1v7QCeSHchkuWN1YtR6cvoxo1UNIRAYNKUKUjGZX03mUxVPxeRqbjYlpPwJlcBLyUjzFGMVcC8qPXGqM/XAtfgZuKvwnVm/F1EJqpqZaIX2Lp5E30KdwOg9XmMOaw/2c89wLrf/wGAbxAi76jvERpwEEuKg1w6Mx/mntl8/N2jBzCvKI9Na1fz3F13kBOu5eAF/9upH9b0PO31AD4AvACUiUgjMERVS7tyMS8m2nhcSrl4390nR+mKFcth0hEEiBAKN9Io+SA5FA/uljjUxnSIqi5IdxmSafHWdZDdl/HVO9CAEAoXMOmI0ekulumBvIbei96SSg2quj12o9f7dxXwS1V9wtt2PlAK/Asu1mdC9uxaRp/e7nP9rvGExgbZeadr/JUOzuOpWcfSb+yhACwb4HLeD8gOMSQni8HZWZw8YjCFoSB/v+spcsO15OQXEAgEO/8Tmx6lvQZgGS5w7TO4p6wuPV2JyETgVuAYVQ3H+35sjtLoMYBFO/bw1cvPgXGzrQFofElE/gGc4YWDid5eBDytqsenp2Sd8xF5AAzY7YLW5jcOYOj43ukskukhRORq4B5VrfU+t0lVkxLv0jPWe80cxr3i/amqrgXG4NItNjdAVbVGRF4H5tCBBmBRluuta6jPQTRIv171zfu+f/GpbB96xn7HXDZiIJePbMnpW1NVyZaV7s3zUefG7Vsxpll7DcD/Bp4WEcU1/ra39bpHVRN55JgN9AeWR50nCMwVkUuBgvZeN0eiGoCC0m9Ibxhm44+Mb83DBayNlYsbH5gxVCOszhoGQM6OvYAwbsxEApaG0XSP7+ECn9d6n9uiJCngOa7B9x1gJS6X9vXA2yIyhZZc27G5tUtw4xFbFftWC6Cu3o3/K9vqUrvVvHwv9QWF3HnBD6nrNwaAY0obGF8PhbOHUhgMct6Qvs3n3L5mNa893JIRb8rcjHquNGnWZgNQVW8SkceACcCTuFm7XZk//jQuM0G0B4DPcD2D7fYKNnqj/qQpE4h1cxsfEpHDo1anisiuqPUgcDKwhQyyseJz9khv8rSaUCUE67M4ePqYdBfL9BCqOqa1zym+5gvR6yLyDrAWOJ+W2caxb8XafVMW+1YLIBhwfR6VZeNQoHLjKj6ZOoNXJk9sPu6iz+uYPXM4ReP2T7m29MXn2PzJcgAOmn0M2Xn2RswkLl4mkBXAChG5GXhEVas7eyHvVVjs67C9uJymyxM4HmiKAxgBsQag8aUluJtA0zilWDW034vhO+9u+BA4iOH1pQhCdt0gRk7ul+5imR6orcmJIpINnJuqXMCqWiUiK3AdIk97mwfjAr43Gcj+vYLtnZP+vTYCsLc+n3u/0ofK/JYOzJO31XP1ISOYdF4+2cN7tXqOFa+9DMDc8xYw7ZRTE/+BjCHBMDCqenOqCxJPSyBodX2BAQs+a3xpDK4nYC0wEzeWtkkYKFXVxtYO9KtlZWUQPIh+1TsBGNpvJLkFWWkulemhHgD+iptwEa2Xty8lDUARycXNOn4FWIdLjTofeC9q/zHAjxI9Z2OjiwwVQXh7wGQq892QikBEyWuEr22up+jgzWzdLS6jd4xIY8ufkSnzTiQr2+L+mY5pLwzMx8CxqrpbRJbRftf21M5cXFXnJfrdpgagiwMYsVfAxpdUdYP38YAZILe6MQeC0LuqEmmEyV84KN1FMj1XW69ZRwJJy28mIncAzwIbcT17/w4UAItUVUXkt8B1IrISWI0bI1gF/E+i14hE3KinNxuP5e0JQwA46Z03uLViGgCvbf8LT76/Lu55evUbQH6RTcgyHddeN9oTQF3U57SmtYoQNQlEsB5A43siMgLXKzCQmAZhkmcrptT6UH8AisrryK7txehD+6e5RKanieqEUOA1EYnOrhMERgHPJ/GSw4FHcBMXy3Dj/o6MesD7DyAPuJuWQNAndSQGYMQLhvGWzG3edkJFy32ttHYjI6ZMJRhq/143+ZjjEr2kMftobxLIzVGfb+qW0rRDvYnDgnpjAA+YDhZzABKR84A/Ag24G0j0A1QyZyumVE14N5vFTWzsVR4mT4bTd2hBmktleqDHvX8PAZ7D9bY1CQPrSWLgdVU9N85+BW7ylk6pqXE/wjZxkzuu/HAzJ3AIADtqNxPIDnHmT28mGLLhFiY1EupG80NMM/VCxwRUQSLWA2j87mfAr4B/z7Qxf9E+3rKaBsmhf6SM7IYGxkw4yLJ/mG7X1CEhIutxk0Bq01uirivbtYsSBrEzMACAk/b0AZT1fErBnEGcOfVn1vgzKZVoK2oeaYxpVlFRQU2hK6qbBGJjAI3vDQJ+n8mNP4ClG9YBkxgcLiFYF+RQy/5h0khVFwGIyPHAZFxv+gpVfTWd5eqM3bvKWcKs5vUBtUpNQxV1Exs5+pyvprFkpqdotwHol5hme/fuRXq5B75d0oesQCUUDEj1ZY3piueBWbjZwBnrk+oayIMBNbvIri9i+KTidBfJ9GAiMgx4CpgObPU2DxWRJcDpqrq1zYN95oP33qNqoktmcP7aOoLAC5vv57BpFs7FdI94PYC+iWkWFNeRMqG8lG1zvgGFA+McYUxa/R243cscsAyoj96pqk+mpVQd9HnApYArrqqkKK8f2bk29MKk1V1AIzBeVdcBiMhY4CFv31lpLFuH1NRu5598CYBBtcqe8E7y+vdh3PSZaS6Z6Sni/TX3TUyzkJdtLlRTT8PIWXG+bUzaNeUD/Wkr+xTXg54QEbkcF19sCLACuEpV32jju6NxccpifVFV/5roNcEFqt2Q5Xrai8rDjJpkD10m7eYD85oafwCqulZErgReTl+xOqa+vp5tfXtRIi78S3FY2bh3BRff+8c4RxqTPPEygfgmplnEm/UrESVog9CNz6lqUuqMiHwduBO4HHjT+/cFEZmsqhvbOfQU4KOo9V1tfbEt5dt3UxboR0jryduhTD9ndkdPYUx3icT/in80NjZSHurTvD5k7fusrVqWxhKZnijhm5SITBWRB0VkiYi8JyKLROTQVBYuWqR5FnCEYMAagKbHuBpYqKr3q+qnqvo9YBtwWZzjdqrq9qil3Vzbrflw3acADNLt5DTUM2jwkA4X3pgkexm4y4uxCYCIjMQ9JGVMD6CqEvbi+526ZwkrSv/KiImD01wq09Mk1AAUkdOAD4ARwAu4VDwjgQ9E5CupK16LpgagqFoD0PiWiLwtIn2i1m8Tkb5R6/1FpL2eu+hzZeMGu8eOv30RmBPn8CdFpFRE3hKRNsdFicgl3kPdkrKysn32fVTiijk4XEpRXsLxbY1JpSuBfGCtiGzwwsJ87m27Mp0F64hwOExd0IV4yWt0+RZOvCrtGVdND5PoiO6fA79Q1RujN4rIz7x9zya7YLG8DMAEItYDaHztSPYNmfRd4H5aXsEGgWEJnqu/9/3YBPMlwIltHFMF/BB4CxeE+jTgzyJyvqo+FPtlVb0PuA9gxowZ+2T7WY1LttCvdjcjBxYmWGRjUkdVNwGHi8h8XG5eAT5R1ZfSW7KOaYwo9V4DsKDRvb3Os3Ruppsl2gA8CPhTK9v/BFybvOK0raUH0BqAJqMk45c1Ng1jW/lQUdUduADUTZaISH9cPd2vAdjmBesjrM91GT+KK6sYNdFmJhr/UNW/42baZ6SaunqCvWoACIb3MG7oqDSXyPREiY4BLMW9ioo1nf17J1olIj/xxg7uEZEyEXlWRA5JtKDaNAlElZA1AE3PsAMX8iJ2cNBAEqx3nn8CEzpy4fDWKjZku5h/vXdWMPqwozpyuDEpIyKXi8gKEan2QsAgIj8WkXOSeI249ysRWSgiGrO8k8j5IxFlPWMByK0KkpOfn6yiG5OwRBuA9wP3ish1InKciMwTkeuB/8Z7fZSAecA9uLFLx+NeT70UPT6qPdE9gAGbBWz8qyluZuy2jp/ITdx4Hxf6Itp84O0OnGoabuJIwjauKGFXoJgsraNozxZ6FQ/qyOHGpISIXAVcj7vvRN8ItgBXJPFS80jsfvUSLjxT0/KlRE4eUKUk4OpU3fZ6CvpYgHXT/ToyBrAKuAa4xdu2FbgRF3wzLlU9OXpdRL4FVABHEWcMYSDQyMY8F49MIhFCQWsAGt8S4CERqfPWc4H7RaTaW8/p4Pl+DfxJRN7Fjeu7FBiKe/hCRG4DZqrqCd76+big0x/iQmN8BTcO8d86ctF3Nq2Gg4YxTLeQX2jBn41vXApcrKrPicjPo7Z/AExJ1kU6cL+qU9XtHT1/KFRHneQCULBuKYf/5391obTGdE5Cf9lVVYHfAL8RkV7etq5OC+yF64Hc3dpOEbkEuARg7NhCdtHflaVeKMq1BNnGtxbFrLc27u7BRE+mqn8WkX64Xo8hwHLgS1ExOocA42IOux4YhXt9vBq4oLUJIG1eM6IsK3SpF0fVbWTi6G6L9mRMPKNwdSBWPZCXwuu2db86WkRKgXLgNeA6VS2Nd7JAdktioJH9iikcYEHWTffr8KN9Ehp+Te4ElgKL27hO8+zEceMKNY9qasmj73o45RKLl2T8SVUXpOCc9+BeR7W27zsx64vYvxHaIbUb9vBxbzeReVjlVmYfe1FXTmdMMq0FDgc2xGz/EvBJCq/b2v3qr8CTuMw7o3Fvyv4hItNVtS72BNGdGqMPcrPqezXUkW+zf02atNsAFJFnEjmJqp7WkYuKyK+Bo4GjE0olJ9DoZc4aXNiL3KyEs2gZYzqo7N1trOrvhlwMLt1E/qAOzR8xJpXuAP6fiOTjhlvM9l7PXgtckIoLtnW/UtVHo762TETexzVMv4xrGO4julNj1MTeCjCwso78goSGwRuTdPF6AE/F/UK/mqwLishvgHOB41R1bULHABFvvopNADEmtVZuLqdmYC79tZTsvXvA6pzxCVV9QERCwK244M9/wk0AuVJV/5zs63XkfqWqW0VkMwnMuFfvftZYvYsRkxIOhmFMUsVrAN4BfBOYCzyAS0m1ubMXE5E7cZVpnqqu7MixEa8HMCCdmlBpjElAw84alhXuBXIZr5+RP2pSuotkzD5U9X7cxKr+QCCRMXed0dH7lVeeYSQw476pQyMUrqZ40owultSYzmk3DIyqXotL//YDYAbwmYi8ICJniUiHZmKIyN3AAuAbwG4RGewtCaQYUBqbewATTl9sjOmgqg9KeXeAm7A8Yu9m5p6Q9CGNxiSFqu5IYeOv3fuViBSKyB0iMltERovIPNzs4FLgqXjnj3gRbLLDdRR5wy2M6W5xJ4F4Yx6eAZ4RkcHAt3GDXe8RkbGqWpXgtS73/o1N2H0zcFO8g5uemILW/jMmNRT2/HMbH81yg9KHbtvIhP4Hp7lQpqcTkWUkGEtTVacm6bLx7leNwKG4+2EfXK/fK8A5iUyUbLqf5dTXkVNgaRZNenR0FnAB7pe9EBcXMOH3sarapYFETa+ALQ2c8bNEA5ur6q743+peDeW1rAiEKQ8VUaw7ya3YQTBgE65M2j3e3ReMd79S1Rrg5Pa+0+7xBBBcD2Aoy8KamfSI2wAUkTzgHOBC3Gvgp4DzVTX2ySh1pOWJSWxAuvG3sjj7m/L4+q5lFalu4NHRJUAR0xo/pO+sU9JdJGNQ1ZvTXYZkqyGPfCCH+rjfNSZV4oWBuQ/4OvAZ8AfgNFUt746C7UubcwEHAvYO2Pia4GbOL8QFhs2YWUvlgRreGDQUgKnrFzPrzF+kuUTG7EtEpgBBVf04ZvtUoEFVUxkLMGnUGwMYkEiaS2J6sng9gBcBG3HjG74IfLG1HriOxgHsqOqAS5QdVEVsEKDxt8m43vLLcDPom2bPb01iPtl/AAAKgklEQVRrqRKwOz9EQaCAybqM8rw6JhZPTHeRjIl1H3A38HHM9sm4XMBHd3uJOiFMNgXAlIJ0l8T0ZPFaUw/iBrbuAHa2s6RUGS5NTk6jIrkdTaVqTPdR1ZWq+iNgOC447WxgrYg8JyKnp7d07asN5JCvVRy3+Y+cOu/fbLiF8aOpwLutbH8PNykjI4j3YmDYQMsCYtKn3R7A2DRT6VJIFXP0dQ5+r5C5l5yd7uIYE5eqNuDGyz4lIsNxD1OPi8gAP04AaXJM4+sMmHoOxww/Jt1FMaY1jUBrraZiIGOeWJoCQY8dNibNJTE9WUa8Tx1ICd/lTgYv/QsD+/dJd3GMSYiIjBGRW4C3gbHALUBFeksVx54iLp12WbpLYUxbXgOuE5HmSVReZpDrgNfTVqoOiiCIKnNnnJjuopgerKNhYNIqYx7vTI8lIrnA2bhxgDNxMTQvBF5SVd9PCAn4v4imZ7sWeBNYIyJvetuOxoUmm5u2UnVCbn2dTWo0aZUxDUCNWEUxGWEbrpdvIW4SVdPr3uLoMXV+fQ1sDUDjZ6q6ypvxewUwDdcv8DBwTyZMtIqWX1eb7iKYHi5jGoBEgpaT3mSC3t5yA/Dvrez3bRxAgIBaWArjb6q6DffKN6PlWQPQpFnmNAA1iL0ENhnguHQXoCusB9D4mYgc3t5+Vf2gu8rSVXnSkO4imB4uYxqAqgFr/xnfU9XX0l2GrghErAFofG0Jrgc9+m4Q/Uvry5711uRrY7qLYHq4bh9YJyKXi8g6EakVkfdFJLF4E5GAvQI2vicir4rIDSJytIhkXJLPgLX/jL+Nwc2oH+MtBwHnAsuAU9NRoM7e03pZUgOTZt36GygiXwfuBG4FvoALj/GCiIyMe7AGLDCtyQRbgEtwISl2i8iLIvJjEZklIr7/iy/2Ctj4mKpuiFnWqOpjuNnB13d3ebpyT+sdyrjnQ3OA6e4b0tW4tFj3q+qnqvo93KzJuIHHNGJjAI3/qep5qjocmAhcg8uU831gMa5B+H8i8oN0lrE99grYZKh1uFnB3a3T97QjLASMSbNu+w0UkWxgOvBizK4XgTlxT1BXiASsAWgyg6p+pqr3quo3VHUILlfpXcAxwB3pLV3bbBKI8TMR6Ruz9BORQ4DbgFXdXJZO39NyNMy/5Nj9zKSXdFdsWhEZins9dqyqvh61/QbgPFWdGPP9S3Cv0gAOAZZ3S0FNTzRRVXsl+6QiMgCYh5sZPA8YB3wAvKqqP0n29bpKRCrp5puo6VG6XM9EJMK+kz7AvRraBHxdVd/pyvk7WBa7pxk/SriepWMWcGuVd79WqKreB9wHICJLVHVGN5TN9EAisiSJ5zod1+A7HhgPvA+8ClwFvKmq1cm6VgqssnpmUiVJ9Sw2zFIEKAPWePm308HuacY3OlLPurMBuAOXyHtwzPaBQEk3lsOYVHoC2IB7JfWgqlq0V2OSxGdhluyeZjJat40BVNUwrjdkfsyu+biZU8YcCG4EPgd+A6wSkUUiskBExqS5XMZkrFbG/rW6dGeZ7J5mMl13vwL+NfAnEXkXeAu4FBgK/Hec4+5LdcFMj5a03y9VvQW4xRsgPhs39u984B4RKcW9Dn5FVRcm65pJZPXMpFJXfr920Mpr1RiK3dOMSfh3q9smgTRfUORyXMymIbhBsD+IHkBrzIFIRPrgwsJcCRSqasZkLDAm3UTk2HZ2n4ILtdSgqkXdVKRmdk8zmarbG4DG9AReFpBZuEHrxwFHArm4eGWvqOpFaSyeMRnPywt8OzAXuBe4RVXL0lsqYzJHxuQCNiYTiMhPcA2+OUA+sBl4BViEa/htTGPxjMl43njaXwBnA08Ck1X18/SWypjMYz2AxiSRiGzFNfhewTX47MZkTBKISD/gBtw4u7eAa1U1aSGcjOlpfJ+LprOJto1pj4jMFZFnRGSLiKiIfCcZ51XVoV46uN9nUuPP6plJhWTVMxH5KW52/bHAV1X1+Exs/Fk9M6nQ2Xrm6wZgVxJtGxNHIW7A9veBmmSdVETyRORuryKWisj/iEj/ZJ0/FayemRRKVj37OZCFG1JxuXez229JQnlTxuqZSaFO1TNfvwIWkX8CH6vqxVHbPgMe92MqLZOZRKQKuCIZoVlE5D+By4GHgVrgG7jUb2d39dypYvXMdIeu1DMRWUj8MDCo6oKOl6x7WD0z3aEj9cy3k0CiEm3fEbMrbqJtY9LoDOBCVX0UQEQeAt4SkaCqNqa3aPuzemYygap+J91l6AqrZ8aP/PwKuD8QZP+UOiXsn3rHGL8YAbzRtKKq7wINuOCwfmT1zJjUs3pmfMfPDcAmCSXaNsYngkA4ZlsDPu5t91g9Myb1rJ4Z3/DzTckSbZtMJMBDIlIXtS0XuF9Eqps2qOpp3V6y1lk9Myb1rJ4Z3/FtD6Al2jYZahGwFdgZtTwEbIrZ5gtWz4xJPatnxo/83AMInU+0bUy7RKQQGO+tBoCRIjIN2NWVbB1+noXYDqtnJiVSVc8ylNUzkxKdrWe+DgMDlmjbpIaIzMNl64i1KNNnHHaG1TOTClbP9mX1zKRCZ+uZ7xuAxhhjjDEmuXw7BtAYY4wxxqSGNQCNMcYYY3oYawAaY4wxxvQw1gA0xhhjjOlhrAFojDHGGNPDWAPQGGOMMaaHsQagAUBEVETOSnc5jDmQWT0zJvWsniXGGoA+ICILvV/Y2OWddJfNmAOF1TNjUs/qWebweyq4nuQl4Fsx28LpKIgxBzCrZ8akntWzDGA9gP5Rp6rbY5Zd0NydfYWIPCci1SKyQUS+GX2wiBwqIi+JSI2I7PKewnrHfOd8EVkmInUiUiIiC2PK0FdEHhORvSKyNvYaxhwArJ4Zk3pWzzKANQAzx83AM8A04D7gQRGZASAi+cBfgSpgJnA6MAf4Y9PBIvKvwL3AA8BU4EvAiphr3AD8L3AY8GfgjyIyKnU/kjG+Y/XMmNSzeuYHqmpLmhdgIdCA+4WPXm739itwf8wxLwEPeZ8vBiqAXlH753nHjffWNwO/bKcMCtwWtR4CqoFvpvu/jy22JGOxemaLLalfrJ5lzmJjAP3jdeCSmG3lUZ8Xx+xbDHzZ+3ww8LGqVkbtfxuIAJNFZA8wDHg5Thk+bvqgqg0iUgYMTKz4xmQEq2fGpJ7VswxgDUD/qFbVNZ08VnBPPK1Rb38i6ls51oYJmAOJ1TNjUs/qWQaw/xiZ48hW1j/1Pn8CHCYivaL2z8H9//1UVUuALcAJKS+lMZnN6pkxqWf1zAesB9A/ckRkcMy2RlUt8z6fISLvAa8CZ+F++Wd5+x7GDap9UERuAIpxA2SfjHoK+wXwGxEpAZ4D8oETVPVXqfqBjPEhq2fGpJ7VswxgDUD/OBHYFrNtCzDc+3wTcCZwF1AGLFDV9wBUtVpETgZ+C7wL1OJmP32/6USq+l8iEgauAW4HdgHPp+qHMcanrJ4Zk3pWzzKAeDNkjI+JiAJnq+rj6S6LMQcqq2fGpJ7VM/+wMYDGGGOMMT2MNQCNMcYYY3oYewVsjDHGGNPDWA+gMcYYY0wPYw1AY4wxxpgexhqAxhhjjDE9jDUAjTHGGGN6GGsAGmOMMcb0MP8fxnDnI6ngWXEAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "seq_template = 'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTTTTTTTTTXXXXXXXXXXXXXXXXXXXX'\n", "library_context = 'simple'\n", "\n", "#Run SeqProp Optimization\n", "\n", "print(\"Running optimization experiment\")\n", "\n", "#Number of PWMs to generate per objective\n", "n_sequences = 10\n", "#Number of One-hot sequences to sample from the PWM at each grad step\n", "n_samples = 1\n", "#Number of epochs per objective to optimize\n", "n_epochs = 1#10\n", "#Number of steps (grad updates) per epoch\n", "steps_per_epoch = 2000\n", "\n", "#Either 'pwm' for relaxed/continuous pwm input sent to the predictor, or 'sample' for proper sampled onehots\n", "eval_mode='sample'\n", "\n", "sequence_templates = [\n", " seq_template\n", "]\n", "\n", "losses = [\n", " get_example_loss(\n", " target_score=10.,\n", " opt_start=0,\n", " opt_end=30,\n", " opt_target_bits=1.8,\n", " entropy_weight=0.0\n", " )\n", "]\n", "\n", "transforms = [\n", " get_revcomp_transform_opt()\n", "]\n", "\n", "pwms, scores = run_seqprop(sequence_templates, losses, transforms, n_sequences, n_samples, eval_mode, n_epochs, steps_per_epoch)\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:aparent]", "language": "python", "name": "conda-env-aparent-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }