{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "ffdbda4b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:17:17.281520Z",
     "start_time": "2023-10-04T14:17:16.419711Z"
    }
   },
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"1\"\n",
    "\n",
    "import random\n",
    "import json\n",
    "import numpy as np\n",
    "import tqdm\n",
    "import torch\n",
    "import funcy\n",
    "import time\n",
    "import gc\n",
    "from scipy.io import wavfile\n",
    "import tempfile\n",
    "import collections\n",
    "from collections import defaultdict\n",
    "from joblib import Parallel, delayed\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from suno_utils.utils.s3 import _apply_mp\n",
    "from suno_utils.audio import Audio\n",
    "from suno_utils.tasks.data_loader import load_audio_mp\n",
    "from suno_utils.utils.text import write_jsonl, read_jsonl, write_json, read_json\n",
    "from suno_utils.utils.s3 import read_from_s3, check_s3_file_exists, open_from_s3\n",
    "from suno_utils.audio.conversion import convert_audio_files\n",
    "from suno_utils.tasks import demucs\n",
    "from suno_utils.audio import Audio\n",
    "from suno_utils.tasks import dac\n",
    "\n",
    "SAMPLE_RATE = 24_000\n",
    "EMBEDDING_RATE = 25\n",
    "N_CODEBOOKS = 8\n",
    "\n",
    "OUT_DATA_DIR = \"/app/suno/data/mert_25hz_short\"\n",
    "OUT_AUDIO_DIR = os.path.join(OUT_DATA_DIR, \"audio\")\n",
    "OUT_AUDIO_DEMUC_DIR = os.path.join(OUT_DATA_DIR, \"audio_demuc\")\n",
    "OUT_TSV_DIR = os.path.join(OUT_DATA_DIR, \"audio_tsv\")\n",
    "OUT_LABEL_DIR = os.path.join(OUT_DATA_DIR, \"label\")\n",
    "OUT_TEMP_DIR = os.path.join(OUT_DATA_DIR, \"temp\")\n",
    "\n",
    "os.makedirs(OUT_DATA_DIR, exist_ok=True)\n",
    "os.makedirs(OUT_AUDIO_DIR, exist_ok=True)\n",
    "os.makedirs(OUT_TSV_DIR, exist_ok=True)\n",
    "os.makedirs(OUT_LABEL_DIR, exist_ok=True)\n",
    "os.makedirs(OUT_TEMP_DIR, exist_ok=True)\n",
    "\n",
    "MIN_SIZE = SAMPLE_RATE * 5\n",
    "MAX_SIZE = SAMPLE_RATE * 12"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c729d86d",
   "metadata": {},
   "source": [
    "# File loading"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "66631638",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T05:57:23.005376Z",
     "start_time": "2023-10-04T05:57:12.922041Z"
    }
   },
   "outputs": [],
   "source": [
    "# load current data\n",
    "tsv_info = []\n",
    "with open(os.path.join(OUT_TSV_DIR, \"train.tsv\"), \"r\") as f:\n",
    "    for line in f.read().strip().split(\"\\n\"):\n",
    "        if len(line.strip()) == 0:\n",
    "            continue\n",
    "        tsv_info.append(line.strip().split(\"\\t\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cad52faa",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T05:57:23.009052Z",
     "start_time": "2023-10-04T05:57:23.007101Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7085919\n"
     ]
    }
   ],
   "source": [
    "print(len(tsv_info))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "741d5c23",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T05:57:23.129258Z",
     "start_time": "2023-10-04T05:57:23.010504Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7085918\n"
     ]
    }
   ],
   "source": [
    "tsv_data_path = tsv_info[0]\n",
    "tsv_data = tsv_info[1:]\n",
    "print(len(tsv_data))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6bd58f17",
   "metadata": {},
   "source": [
    "## Generate the split audios"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "a4131de4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-03T16:46:02.605491Z",
     "start_time": "2023-10-03T16:46:02.560132Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[['0_0.wav', '288000'],\n",
       " ['0_1.wav', '288000'],\n",
       " ['0_2.wav', '288000'],\n",
       " ['0_3.wav', '288000'],\n",
       " ['0_4.wav', '288000'],\n",
       " ['0_5.wav', '288000'],\n",
       " ['0_6.wav', '288000'],\n",
       " ['0_7.wav', '288000'],\n",
       " ['0_8.wav', '288000'],\n",
       " ['0_9.wav', '288000']]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tsv_data[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f589ac16",
   "metadata": {},
   "source": [
    "# Test MERT Encode"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "0e44e559",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T16:32:33.128488Z",
     "start_time": "2023-10-02T16:32:31.681547Z"
    }
   },
   "outputs": [],
   "source": [
    "from suno_utils.tasks.mert_25 import preload_models, encode"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e34deea1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T16:32:37.408157Z",
     "start_time": "2023-10-02T16:32:33.133041Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WTF 0\n",
      "WTF 0\n",
      "WTF 0\n"
     ]
    }
   ],
   "source": [
    "_ = preload_models(\n",
    "    checkpoint_filepath=\"/home/tony/Data/MERT/mert_test_8x_400k.pt\",\n",
    "    centroids_filepath=\"/home/tony/Data/MERT/cluster_centers/default.npy\",\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "2734eec9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T16:32:37.412537Z",
     "start_time": "2023-10-02T16:32:37.409800Z"
    }
   },
   "outputs": [],
   "source": [
    "input_audio_file = \"0.wav\"\n",
    "input_audio_path = os.path.join(OUT_AUDIO_DIR, input_audio_file)\n",
    "audio = (\n",
    "    Audio.from_file(input_audio_path)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "931fa5d9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T16:32:37.458920Z",
     "start_time": "2023-10-02T16:32:37.413882Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12.0"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "audio.duration_s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "55c60f7b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T17:53:42.363600Z",
     "start_time": "2023-10-02T17:53:42.281443Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WTF 0\n",
      "WTF 1\n",
      "WTF 2\n"
     ]
    }
   ],
   "source": [
    "out = encode(\n",
    "    audio,\n",
    "    do_clustering=True,\n",
    "    n_codebooks=1,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "20f0a56f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T17:53:42.476976Z",
     "start_time": "2023-10-02T17:53:42.474877Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "e4cfc126",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T17:53:42.636441Z",
     "start_time": "2023-10-02T17:53:42.633117Z"
    }
   },
   "outputs": [],
   "source": [
    "test_out = np.load(\"/app/suno/data/mert_25hz_short/audio_mert_label/valid_0.npy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "a8ba1092",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T17:53:44.625451Z",
     "start_time": "2023-10-02T17:53:44.623377Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((299, 1), (299, 1))"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out.shape, test_out.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "2616e325",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T17:54:01.088694Z",
     "start_time": "2023-10-02T17:54:01.086497Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array_equal(out, test_out)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a2b810b",
   "metadata": {},
   "source": [
    "# Kick off jobs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "073644f5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-09-27T13:48:29.533961Z",
     "start_time": "2023-09-27T13:48:29.531818Z"
    }
   },
   "outputs": [],
   "source": [
    "# last job: python mert_encode_audio.py --start_index 3542958 --end_index 4133451"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b631efe3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-03T16:43:48.169954Z",
     "start_time": "2023-10-03T16:43:48.167327Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "python mert_encode_audio.py --start_index 0 --end_index 590493\n",
      "python mert_encode_audio.py --start_index 590493 --end_index 1180986\n",
      "python mert_encode_audio.py --start_index 1180986 --end_index 1771479\n",
      "python mert_encode_audio.py --start_index 1771479 --end_index 2361972\n",
      "python mert_encode_audio.py --start_index 2361972 --end_index 2952465\n",
      "python mert_encode_audio.py --start_index 2952465 --end_index 3542958\n",
      "python mert_encode_audio.py --start_index 3542958 --end_index 4133451\n",
      "python mert_encode_audio.py --start_index 4133451 --end_index 4723944\n",
      "python mert_encode_audio.py --start_index 4723944 --end_index 5314437\n",
      "python mert_encode_audio.py --start_index 5314437 --end_index 5904930\n",
      "python mert_encode_audio.py --start_index 5904930 --end_index 6495423\n",
      "python mert_encode_audio.py --start_index 6495423 --end_index 7085916\n",
      "python mert_encode_audio.py --start_index 7085916 --end_index 7085918\n"
     ]
    }
   ],
   "source": [
    "x = 7085918\n",
    "# x = 7085918, 374220\n",
    "n_steps = 12\n",
    "for i in range(0, x, x // n_steps):\n",
    "    print(\n",
    "        f\"python mert_encode_audio.py --start_index {i} --end_index {min(i + x//n_steps, x)}\"\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7fe54094",
   "metadata": {},
   "outputs": [],
   "source": [
    "# killed: python mert_encode_audio.py --start_index 2952465 --end_index 3542958"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "883ef335",
   "metadata": {},
   "outputs": [],
   "source": [
    "python mert_encode_audio.py --start_index 0 --end_index 7085918"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "d642c71a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-02T19:48:52.457592Z",
     "start_time": "2023-10-02T19:48:52.452948Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "python mert_encode_audio.py --start_index 4133451 --end_index 4920775\n",
      "python mert_encode_audio.py --start_index 4920775 --end_index 5708099\n",
      "python mert_encode_audio.py --start_index 5708099 --end_index 6495423\n",
      "python mert_encode_audio.py --start_index 6495423 --end_index 7085918\n"
     ]
    }
   ],
   "source": [
    "x = 7085918\n",
    "# x = 7085918, 374220\n",
    "n_steps = 9\n",
    "for i in range(4133451, x, x // n_steps):\n",
    "    print(\n",
    "        f\"python mert_encode_audio.py --start_index {i} --end_index {min(i + x//n_steps, x)}\"\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "148662e1",
   "metadata": {},
   "source": [
    "# Merge the demuc codec labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "198f5b49",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-03T15:38:39.614167Z",
     "start_time": "2023-10-03T15:38:39.609084Z"
    }
   },
   "outputs": [],
   "source": [
    "test_output = np.load(f\"/app/suno/data/mert_25hz_short/audio_mert_label/valid_0.npy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "7e81ec70",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-03T15:38:39.797637Z",
     "start_time": "2023-10-03T15:38:39.796002Z"
    }
   },
   "outputs": [],
   "source": [
    "test_output = test_output.reshape(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "08fe016d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-03T15:38:40.034775Z",
     "start_time": "2023-10-03T15:38:40.030980Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(300,)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.pad(\n",
    "    test_output,\n",
    "    (0, max_shape - test_output.shape[0]),\n",
    "    \"constant\",\n",
    "    constant_values=-1,\n",
    ").shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d853286a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T05:57:30.300948Z",
     "start_time": "2023-10-04T05:57:30.299288Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7085918\n"
     ]
    }
   ],
   "source": [
    "total_rows = len(tsv_data)\n",
    "print(total_rows)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "1f74771b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T05:07:42.887353Z",
     "start_time": "2023-10-04T05:07:42.885894Z"
    }
   },
   "outputs": [],
   "source": [
    "total_rows = 1008"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e64bdc31",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:14:29.691161Z",
     "start_time": "2023-10-04T14:14:10.901783Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  0%|                                                                                                                     | 0/7085918 [01:23<?, ?it/s]\n",
      "  0%|                                                                                                         | 10/7085918 [00:00<49:02:10, 40.14it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100000\n",
      "200000\n",
      "300000\n",
      "400000\n",
      "500000\n",
      "600000\n",
      "700000\n",
      "800000\n",
      "900000\n",
      "1000000\n",
      "1100000\n",
      "1200000\n",
      "1300000\n",
      "1400000\n",
      "1500000\n",
      "1600000\n",
      "1700000\n",
      "1800000\n",
      "1900000\n",
      "2000000\n",
      "2100000\n",
      "2200000\n",
      "2300000\n",
      "2400000\n",
      "2500000\n",
      "2600000\n",
      "2700000\n",
      "2800000\n",
      "2900000\n",
      "3000000\n",
      "3100000\n",
      "3200000\n",
      "3300000\n",
      "3400000\n",
      "3500000\n",
      "3600000\n",
      "3700000\n",
      "3800000\n",
      "3900000\n",
      "4000000\n",
      "4100000\n",
      "4200000\n",
      "4300000\n",
      "4400000\n",
      "4500000\n",
      "4600000\n",
      "4700000\n",
      "4800000\n",
      "4900000\n",
      "5000000\n",
      "5100000\n",
      "5200000\n",
      "5300000\n",
      "5400000\n",
      "5500000\n",
      "5600000\n",
      "5700000\n",
      "5800000\n",
      "5900000\n",
      "6000000\n",
      "6100000\n",
      "6200000\n",
      "6300000\n",
      "6400000\n",
      "6500000\n",
      "6600000\n",
      "6700000\n",
      "6800000\n",
      "6900000\n",
      "7000000\n",
      "7085918\n"
     ]
    }
   ],
   "source": [
    "# training data will take 3 hrs x.X\n",
    "i = 0\n",
    "max_shape = 300\n",
    "data_split = \"train\"\n",
    "output_array = np.zeros((total_rows, max_shape), dtype=np.int16)\n",
    "pbar = tqdm.tqdm(total=total_rows)\n",
    "while i < total_rows:\n",
    "    test_file_name = tsv_data[i][0]\n",
    "    test_id = test_file_name\n",
    "    file_to_fetch = (\n",
    "        f\"/app/suno/data/mert_25hz_short/label/{data_split}.mert_{test_id}.npy\"\n",
    "    )\n",
    "    test_outputs = np.load(file_to_fetch)\n",
    "    output_array[i: i + test_outputs.shape[0], :] = test_outputs\n",
    "    i += test_outputs.shape[0]\n",
    "    pbar.update(10)\n",
    "    pbar.close()\n",
    "    # print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "5decb1f3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:08:30.798952Z",
     "start_time": "2023-10-04T14:08:30.796980Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# # training data will take 3 hrs x.X\n",
    "# i = 0\n",
    "# max_shape = 300\n",
    "# data_split = \"train\"\n",
    "# output_array = np.zeros((total_rows, max_shape), dtype=np.int16)\n",
    "# for i in tqdm.tqdm(range(total_rows)):\n",
    "#     test_file_name = tsv_data[i][0]\n",
    "#     test_id = test_file_name.replace(\".wav\", \"\")\n",
    "#     file_to_fetch = (\n",
    "#         f\"/app/suno/data/mert_25hz_short/audio_mert_label/{data_split}_{test_id}.npy\"\n",
    "#     )\n",
    "#     if not os.path.exists(file_to_fetch):\n",
    "#         print(\"WTF\", file_to_fetch)\n",
    "#         break\n",
    "#     try:\n",
    "#         test_outputs = np.load(file_to_fetch, allow_pickle=True)\n",
    "#         test_outputs = test_outputs.reshape(-1)\n",
    "#         if test_outputs.shape[0] < max_shape:\n",
    "#             test_outputs = np.pad(\n",
    "#                 test_outputs,\n",
    "#                 (0, max_shape - test_outputs.shape[0]),\n",
    "#                 \"constant\",\n",
    "#                 constant_values=-1,\n",
    "#             )\n",
    "#         output_array[i, :] = test_outputs\n",
    "#     except Exception as E:\n",
    "#         print(i, test_id, E)\n",
    "#         output_array[i, :] = np.ones(300) * -1\n",
    "#     # pbar.update(10)\n",
    "# # pbar.close()\n",
    "# print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "03396cb1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:23:54.613659Z",
     "start_time": "2023-10-04T14:23:40.852533Z"
    }
   },
   "outputs": [],
   "source": [
    "# output_array = output_array.astype(np.int16)\n",
    "# np.save(os.path.join(OUT_LABEL_DIR, f\"{data_split}.mert_0.npy\"), output_array)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77a33083",
   "metadata": {},
   "source": [
    "# Check train distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "604ef73a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:14:37.295818Z",
     "start_time": "2023-10-04T14:14:37.292742Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7085918, 300)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output_array.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "3f476796",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:14:41.437059Z",
     "start_time": "2023-10-04T14:14:40.296857Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "493.31794282970816"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(output_array) #, np.std(output_array)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "59658329",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:16:42.609540Z",
     "start_time": "2023-10-04T14:15:00.197856Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(74, 440), (551, 510), (3435, 883), (6107, 655), (29131, 849), (44080, 304), (570156, 928), (727921, 870), (738654, 851), (759390, 521), (811039, 707), (826003, 126), (953314, 26), (955470, 546), (979925, 958), (997544, 959), (1002011, 46), (1007579, 58), (1031580, 609), (1042162, 919), (1058448, 647), (1064699, 543), (1071999, 392), (1075085, 989), (1092931, 820), (1093843, 185), (1112162, 815), (1132432, 109), (1138710, 261), (1141002, 712), (1151107, 441), (1151328, 943), (1153737, 537), (1159058, 506), (1172828, 824), (1180968, 19), (1195456, 689), (1205468, 923), (1209094, 258), (1212801, 195), (1220362, 179), (1225441, 300), (1228908, 434), (1230781, 327), (1234812, 419), (1238466, 600), (1247631, 242), (1249373, 642), (1251721, 889), (1256936, 10), (1258722, 231), (1263298, 736), (1263389, 391), (1264161, 602), (1267512, 869), (1274865, 260), (1280167, 37), (1281298, 302), (1282814, 94), (1286176, 867), (1290298, 202), (1295840, 643), (1297760, 988), (1299813, 735), (1313581, 492), (1317973, 428), (1319808, 694), (1320753, 513), (1322277, 409), (1322934, 797), (1327339, 294), (1328086, 100), (1329349, 771), (1329880, 479), (1332527, 298), (1334456, 522), (1334717, 396), (1344418, 563), (1349254, 197), (1350904, 332), (1353722, 706), (1356445, 575), (1358715, 404), (1361397, 360), (1361709, 819), (1362394, 150), (1363747, 827), (1364950, 359), (1366497, 219), (1366899, 118), (1367961, 234), (1368567, 675), (1370101, 265), (1371087, 356), (1371815, 515), (1378454, 115), (1384104, 832), (1387408, 876), (1390750, 494), (1394940, 545), (1396959, 7), (1397911, 313), (1400611, 754), (1406979, 803), (1410763, 461), (1412257, 794), (1414715, 473), (1418914, 256), (1422221, 281), (1423500, 749), (1426001, 637), (1427166, 713), (1429138, 947), (1432106, 123), (1437050, 246), (1441040, 646), (1444176, 690), (1445776, 981), (1447292, 167), (1453081, 705), (1455944, 70), (1458282, 84), (1459418, 413), (1460347, 673), (1461755, 809), (1464737, 353), (1465826, 415), (1469810, 580), (1471413, 194), (1472296, 330), (1476853, 72), (1477572, 326), (1478435, 842), (1479144, 23), (1479728, 556), (1480175, 247), (1482183, 190), (1484746, 799), (1486065, 949), (1490840, 890), (1491249, 21), (1494594, 888), (1497382, 661), (1505841, 763), (1509258, 222), (1510540, 588), (1513815, 984), (1516596, 9), (1522390, 882), (1528153, 585), (1528433, 812), (1528571, 648), (1529327, 192), (1532132, 586), (1533932, 210), (1534725, 32), (1537973, 738), (1541735, 83), (1541864, 311), (1542450, 795), (1545120, 569), (1547595, 582), (1547730, 813), (1549196, 634), (1552216, 933), (1552518, 249), (1552919, 911), (1558217, 818), (1558919, 726), (1559459, 284), (1560214, 491), (1562612, 328), (1563364, 373), (1565326, 936), (1569061, 596), (1572379, 872), (1572455, 50), (1573991, 196), (1578597, 346), (1579753, 822), (1580284, 165), (1581158, 158), (1582605, 20), (1585497, 979), (1586401, 312), (1588444, 758), (1589102, 309), (1589898, 638), (1589933, 120), (1593438, 458), (1594228, 962), (1598704, 907), (1599654, 862), (1601129, 178), (1601169, 129), (1601346, 139), (1601990, 110), (1605585, 753), (1608126, 541), (1608854, 730), (1613320, 747), (1617101, 438), (1617942, 844), (1618841, 171), (1619100, 841), (1619764, 975), (1623964, 846), (1625302, 379), (1627268, 235), (1628993, 397), (1630978, 751), (1631550, 437), (1632083, 659), (1634256, 151), (1636964, 808), (1638691, 149), (1639998, 184), (1640388, 145), (1641173, 308), (1643235, 893), (1644632, 112), (1644641, 121), (1645141, 565), (1646131, 534), (1646731, 432), (1647948, 622), (1648666, 731), (1648867, 400), (1657057, 613), (1659060, 200), (1661188, 617), (1661655, 529), (1663148, 587), (1668317, 393), (1668958, 664), (1669604, 963), (1670220, 931), (1671442, 660), (1675017, 445), (1675486, 728), (1676026, 368), (1676932, 501), (1677040, 182), (1682459, 558), (1682859, 929), (1683361, 636), (1683704, 164), (1684890, 768), (1686091, 207), (1686580, 683), (1687121, 666), (1689895, 334), (1690999, 161), (1694751, 877), (1695380, 297), (1702098, 451), (1703357, 168), (1703876, 257), (1704379, 526), (1705032, 711), (1706984, 663), (1709157, 608), (1709196, 682), (1709322, 474), (1709598, 275), (1711556, 896), (1713672, 412), (1715663, 5), (1716926, 790), (1719395, 477), (1720063, 75), (1723529, 765), (1724421, 716), (1724481, 940), (1724767, 691), (1725714, 658), (1725982, 594), (1726259, 930), (1727293, 672), (1728916, 453), (1730990, 102), (1732135, 547), (1732416, 321), (1732687, 787), (1733918, 741), (1734566, 137), (1736218, 786), (1736648, 288), (1737368, 462), (1737943, 821), (1739078, 998), (1739223, 374), (1740181, 886), (1740840, 385), (1744114, 230), (1745125, 220), (1746043, 336), (1747292, 211), (1748088, 868), (1748284, 132), (1753022, 891), (1757153, 191), (1757289, 598), (1760644, 914), (1760944, 564), (1762287, 314), (1762314, 901), (1763602, 671), (1764159, 363), (1769989, 348), (1770732, 443), (1772133, 15), (1776472, 387), (1776566, 531), (1778284, 518), (1779221, 855), (1779297, 892), (1780691, 696), (1781189, 500), (1784655, 783), (1786035, 532), (1786226, 702), (1787118, 635), (1788613, 303), (1788727, 389), (1788899, 693), (1792730, 55), (1795056, 857), (1796077, 119), (1796670, 427), (1796763, 700), (1798482, 401), (1800475, 770), (1800531, 493), (1803139, 612), (1806336, 226), (1806440, 752), (1808750, 599), (1808954, 343), (1810706, 117), (1812953, 388), (1813701, 904), (1814851, 590), (1815954, 632), (1816109, 698), (1817364, 937), (1817428, 325), (1817592, 232), (1825162, 316), (1826983, 201), (1827885, 244), (1830112, 848), (1830240, 530), (1830851, 554), (1831950, 85), (1832069, 42), (1832080, 859), (1832639, 24), (1832691, 968), (1833117, 254), (1834180, 472), (1834802, 301), (1836370, 486), (1837420, 79), (1839785, 447), (1840123, 945), (1841046, 836), (1843870, 544), (1844356, 785), (1847255, 774), (1848146, 845), (1848192, 825), (1849001, 69), (1849101, 96), (1852631, 727), (1855178, 44), (1855278, 920), (1856208, 91), (1858124, 488), (1859007, 874), (1860231, 990), (1864893, 917), (1866037, 335), (1869289, 18), (1870895, 420), (1873398, 791), (1873765, 221), (1874224, 350), (1875382, 811), (1878661, 810), (1878672, 216), (1880568, 255), (1881410, 455), (1882268, 902), (1883754, 370), (1884239, 454), (1886513, 732), (1887991, 73), (1889862, 383), (1890519, 16), (1890923, 124), (1890975, 750), (1892523, 446), (1894513, 81), (1895179, 71), (1895229, 616), (1895327, 856), (1896710, 688), (1897491, 777), (1897949, 503), (1900197, 903), (1900821, 806), (1900873, 253), (1901815, 424), (1905482, 950), (1906968, 329), (1907462, 386), (1907655, 723), (1910081, 225), (1910298, 406), (1911395, 614), (1911740, 805), (1912662, 589), (1914055, 718), (1917640, 610), (1923505, 355), (1924442, 995), (1927109, 802), (1927356, 319), (1927855, 82), (1929056, 377), (1929343, 290), (1930369, 807), (1931791, 644), (1932615, 578), (1932816, 562), (1933758, 233), (1935220, 206), (1936644, 33), (1936926, 131), (1937318, 725), (1937717, 135), (1939387, 744), (1940366, 755), (1942283, 155), (1942989, 338), (1943004, 985), (1943880, 915), (1944915, 279), (1946135, 971), (1948219, 166), (1949643, 756), (1950115, 601), (1950630, 875), (1951315, 528), (1951796, 652), (1951882, 31), (1953114, 59), (1954527, 2), (1955113, 95), (1955259, 539), (1955517, 553), (1957009, 422), (1960075, 431), (1965409, 670), (1971381, 746), (1971814, 508), (1972270, 721), (1972701, 433), (1973128, 629), (1973536, 699), (1974144, 685), (1974807, 107), (1977093, 54), (1977641, 737), (1981278, 88), (1983681, 829), (1984057, 487), (1985996, 357), (1986648, 656), (1989090, 405), (1990008, 423), (1990827, 318), (1991234, 134), (1995832, 925), (1997764, 64), (1998640, 223), (2000583, 153), (2003142, 626), (2003536, 519), (2005801, 163), (2010633, 4), (2013403, 380), (2014926, 56), (2017478, 885), (2017483, 978), (2018254, 505), (2018424, 251), (2018495, 996), (2019921, 817), (2019924, 147), (2021548, 686), (2022680, 764), (2025460, 467), (2026451, 798), (2027471, 187), (2028036, 212), (2028685, 724), (2034235, 133), (2036891, 128), (2038572, 624), (2038639, 30), (2039579, 733), (2040040, 271), (2041959, 170), (2042204, 263), (2042778, 918), (2043219, 619), (2043631, 0), (2044210, 789), (2045588, 228), (2046617, 939), (2047255, 291), (2049808, 773), (2050291, 347), (2051144, 241), (2051250, 169), (2051574, 465), (2054805, 274), (2055805, 676), (2058749, 955), (2059967, 525), (2061831, 172), (2062701, 559), (2062849, 49), (2064526, 141), (2068811, 320), (2069874, 826), (2070009, 464), (2070186, 709), (2070896, 605), (2071713, 952), (2071879, 429), (2074028, 148), (2074871, 514), (2075421, 504), (2078865, 186), (2079857, 835), (2081938, 444), (2085789, 618), (2085969, 858), (2087396, 103), (2088170, 456), (2089026, 957), (2092588, 717), (2097842, 175), (2101454, 25), (2103306, 410), (2103847, 720), (2104460, 146), (2106466, 426), (2106873, 620), (2107869, 550), (2109040, 568), (2109742, 560), (2110232, 748), (2110378, 384), (2110795, 533), (2111215, 485), (2112031, 687), (2113101, 154), (2113848, 908), (2114588, 435), (2116194, 484), (2118544, 3), (2120513, 411), (2125328, 280), (2126596, 382), (2126783, 969), (2127768, 878), (2128232, 345), (2128511, 961), (2130743, 884), (2130973, 603), (2131585, 395), (2133225, 573), (2133864, 152), (2135391, 371), (2135883, 895), (2137238, 376), (2140241, 189), (2141064, 769), (2142106, 289), (2145093, 430), (2145150, 459), (2147356, 52), (2148568, 323), (2149140, 468), (2150407, 681), (2151745, 607), (2153492, 954), (2153573, 570), (2154190, 272), (2154874, 779), (2158753, 8), (2161028, 425), (2161416, 778), (2162216, 352), (2162828, 358), (2163558, 606), (2166194, 863), (2170958, 349), (2172126, 218), (2173056, 972), (2173857, 224), (2175201, 466), (2177326, 986), (2177635, 442), (2178909, 125), (2183282, 367), (2186637, 927), (2187241, 734), (2188758, 843), (2190132, 476), (2191233, 40), (2191522, 278), (2192464, 105), (2192642, 523), (2195045, 439), (2197383, 285), (2200449, 760), (2200727, 266), (2203188, 511), (2206593, 97), (2213089, 65), (2218449, 283), (2219100, 788), (2219515, 66), (2228811, 364), (2229354, 17), (2231379, 80), (2231453, 767), (2232555, 203), (2233463, 51), (2233666, 333), (2234297, 111), (2241614, 208), (2242173, 887), (2243387, 35), (2244187, 101), (2244758, 457), (2246312, 710), (2246626, 248), (2246997, 847), (2247590, 193), (2248122, 402), (2250404, 173), (2250858, 540), (2252588, 236), (2261561, 715), (2265823, 854), (2268284, 292), (2270790, 229), (2275211, 946), (2277797, 127), (2280348, 557), (2280479, 509), (2280793, 994), (2281117, 366), (2283057, 604), (2283855, 899), (2285776, 268), (2289080, 11), (2289118, 804), (2290381, 953), (2292895, 517), (2295135, 739), (2300147, 407), (2301116, 861), (2302669, 460), (2303405, 217), (2303467, 828), (2306263, 183), (2307428, 13), (2308748, 535), (2309121, 665), (2312024, 398), (2313033, 743), (2313176, 28), (2315036, 966), (2316654, 864), (2323207, 695), (2325118, 932), (2326364, 838), (2326909, 305), (2327497, 237), (2329969, 823), (2331545, 480), (2332517, 299), (2332530, 365), (2333024, 41), (2337761, 340), (2338414, 322), (2340888, 361), (2343371, 277), (2343690, 478), (2346423, 538), (2346552, 204), (2347428, 481), (2350269, 331), (2350877, 941), (2351391, 27), (2352367, 273), (2357340, 143), (2358868, 677), (2359546, 317), (2362400, 999), (2364880, 499), (2369196, 156), (2369700, 680), (2375178, 209), (2383158, 12), (2383538, 549), (2387296, 974), (2387381, 935), (2389583, 286), (2390492, 781), (2391534, 87), (2392395, 649), (2394623, 104), (2396829, 39), (2400716, 512), (2401557, 742), (2403496, 830), (2403522, 502), (2405972, 668), (2407976, 583), (2411153, 584), (2413011, 14), (2413856, 654), (2414065, 871), (2415243, 238), (2415414, 772), (2417971, 351), (2420401, 469), (2420880, 122), (2421685, 157), (2421745, 199), (2426514, 592), (2427348, 894), (2427530, 381), (2430999, 631), (2435970, 881), (2437206, 625), (2441679, 960), (2444406, 89), (2444521, 369), (2446582, 403), (2448691, 240), (2449590, 48), (2457220, 906), (2457654, 840), (2458465, 621), (2461315, 344), (2462720, 597), (2463277, 816), (2463821, 213), (2465285, 482), (2469335, 418), (2470816, 967), (2474287, 948), (2476741, 144), (2479412, 414), (2481005, 130), (2481132, 452), (2481491, 674), (2482652, 463), (2483972, 181), (2488942, 611), (2490476, 667), (2493363, 63), (2494162, 579), (2495766, 548), (2497589, 628), (2498494, 67), (2503841, 577), (2505027, 483), (2505889, 552), (2505891, 489), (2507447, 970), (2508713, 640), (2512992, 729), (2515845, 913), (2517172, 416), (2523303, 496), (2524505, 703), (2525851, 860), (2529267, 198), (2532764, 262), (2536386, 174), (2537025, 38), (2540299, 792), (2542110, 341), (2552083, 116), (2552242, 697), (2553823, 852), (2559912, 572), (2560716, 6), (2563665, 375), (2576259, 99), (2576928, 276), (2578105, 880), (2583284, 421), (2587332, 177), (2589239, 475), (2603028, 942), (2603216, 793), (2604084, 92), (2605819, 342), (2613412, 757), (2615633, 269), (2616062, 354), (2618904, 973), (2629823, 561), (2630907, 853), (2632883, 944), (2640205, 378), (2641130, 516), (2643573, 1), (2645517, 615), (2649508, 714), (2653711, 722), (2658451, 176), (2661204, 833), (2663439, 267), (2665839, 78), (2667069, 951), (2668736, 704), (2675805, 36), (2677241, 581), (2680741, 997), (2680840, 900), (2680867, 188), (2683292, 180), (2685238, 160), (2686788, 108), (2686998, 310), (2688718, 926), (2692632, 719), (2693543, 921), (2702983, 215), (2704290, 678), (2708733, 831), (2713815, 159), (2714031, 227), (2714843, 980), (2717916, 566), (2725019, 839), (2725281, 287), (2726926, 47), (2728087, 987), (2730456, 45), (2735230, 976), (2737844, 866), (2738141, 909), (2738145, 595), (2740148, 43), (2745730, 259), (2748925, 708), (2749776, 645), (2752485, 800), (2754607, 701), (2769220, 780), (2771829, 591), (2783564, 555), (2787915, 527), (2799756, 490), (2804562, 408), (2804874, 60), (2813513, 29), (2815967, 22), (2819186, 57), (2825386, 307), (2826892, 983), (2828131, 113), (2838018, 394), (2839363, 470), (2840368, 669), (2846064, 898), (2847384, 162), (2847539, 916), (2860683, 140), (2861941, 662), (2862294, 993), (2868921, 106), (2869730, 142), (2876076, 850), (2876081, 796), (2877314, 623), (2878776, 627), (2879194, 339), (2882831, 684), (2892034, 745), (2892845, 337), (2895753, 295), (2896662, 814), (2897761, 536), (2908507, 905), (2910213, 524), (2911840, 136), (2914070, 270), (2917588, 991), (2919646, 912), (2923552, 296), (2932216, 245), (2940448, 498), (2951148, 34), (2952908, 938), (2953248, 761), (2955450, 324), (2971483, 639), (2971746, 775), (2989969, 264), (2999362, 436), (3000353, 520), (3006778, 679), (3009403, 282), (3016166, 293), (3027423, 837), (3029438, 576), (3047943, 471), (3054653, 759), (3062777, 205), (3069669, 834), (3078161, 897), (3079975, 776), (3083588, 692), (3091971, 53), (3094402, 62), (3099925, 138), (3103038, 399), (3105819, 93), (3114557, 98), (3117346, 782), (3132544, 801), (3139869, 865), (3143159, 390), (3145347, 239), (3153435, 448), (3158301, 250), (3162437, 551), (3184395, 542), (3209922, 372), (3225180, 977), (3250443, 214), (3257505, 315), (3260752, 982), (3263555, 417), (3266401, 571), (3268831, 766), (3276378, 74), (3287419, 784), (3287876, 86), (3293992, 650), (3318375, 924), (3332879, 114), (3341169, 450), (3368585, 965), (3382923, 879), (3390054, 497), (3401565, 922), (3404548, 306), (3412500, 507), (3496996, 77), (3502046, 657), (3503092, 76), (3513638, 593), (3523235, 910), (3786999, 574), (3802123, 762), (3863362, 495), (3896578, 630), (3899617, 90), (3916684, 873), (4067487, 61), (4073139, 567), (4079906, 964), (4080453, 651), (4106063, 956), (4137629, 68), (4149809, 243), (4258054, 641), (4364007, 633), (4477828, 449), (4510031, 992), (4643673, 252), (4676982, 653), (4686420, 934), (4715624, 740), (5531174, 362), (29572684, -1)]\n"
     ]
    }
   ],
   "source": [
    "unique, counts = np.unique(output_array, return_counts=True)\n",
    "print(sorted([(b, a) for (a, b) in zip(unique, counts)]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "7b08a48c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:22:23.763242Z",
     "start_time": "2023-10-04T14:22:23.659522Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGsCAYAAACB/u5dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACOaklEQVR4nO2deXxU1d3/PzNZJgvJJCHCDMoSWZQQdkEwaCuGRwQR9bF9RG1dWq0KfRRbi2ip8qMWfbRVWyhaq/j4IFBtxQWVlk0pNAglbDFWIQRQTKAkIQnZmbm/P8Id7ty5yzl3mbkz+b5fL16tkzszZ84995zP+Z7v4hIEQQBBEARBEIQFuGPdAIIgCIIgEgcSFgRBEARBWAYJC4IgCIIgLIOEBUEQBEEQlkHCgiAIgiAIyyBhQRAEQRCEZZCwIAiCIAjCMkhYEARBEARhGSQsCIIgCIKwDBIWBEEQBEFYRsyExZYtWzBjxgz06dMHLpcL77zzDvdnCIKAZ599FkOGDIHH48H555+PJ5980vrGEgRBEATBRHKsvri5uRkjR47EXXfdhRtvvNHQZzzwwAP429/+hmeffRbDhw9HXV0d6urqLG4pQRAEQRCsuJxQhMzlcmHNmjW4/vrrQ6+1t7fjsccew6pVq3Dq1CkUFRXh6aefxre//W0AwOeff44RI0agvLwcF110UWwaThAEQRBEGI71sZgzZw5KS0uxevVq7Nu3D9/5zncwdepUHDhwAADw/vvv48ILL8TatWtRUFCAAQMG4Ic//CFZLAiCIAgihjhSWBw9ehTLly/HW2+9hcsvvxwDBw7ET3/6U0yaNAnLly8HABw6dAhHjhzBW2+9hddffx2vvfYadu3ahZtuuinGrScIgiCI7kvMfCy02L9/PwKBAIYMGRL2ent7O3r27AkACAaDaG9vx+uvvx667pVXXsHYsWPxxRdf0PEIQRAEQcQARwqL06dPIykpCbt27UJSUlLY33r06AEA8Pv9SE5ODhMfQ4cOBdBl8SBhQRAEQRDRx5HCYvTo0QgEAjhx4gQuv/xyxWuKi4tx5swZVFZWYuDAgQCAL7/8EgDQv3//qLWVIAiCIIhzxCwq5PTp0zh48CCALiHxm9/8BldeeSXy8vLQr18/3Hbbbdi2bRt+/etfY/To0fj3v/+NjRs3YsSIEZg+fTqCwSDGjRuHHj164Pnnn0cwGMTs2bORnZ2Nv/3tb7H4SQRBEATR7YmZsPj4449x5ZVXRrx+++2347XXXkNnZyd++ctf4vXXX8exY8eQn5+PCRMmYOHChRg+fDgA4JtvvsGPf/xj/O1vf0NmZiauueYa/PrXv0ZeXl60fw5BEARBEHBIHguCIAiCIBIDR4abEgRBEAQRn5CwIAiCIAjCMqIeFRIMBvHNN98gKysLLpcr2l9PEARBEIQBBEFAU1MT+vTpA7db3S4RdWHxzTffoG/fvtH+WoIgCIIgLOCrr77CBRdcoPr3qAuLrKwsAF0Ny87OjvbXEwRBEARhgMbGRvTt2ze0jqsRdWEhHn9kZ2eTsCAIgiCIOEPPjYGcNwmCIAiCsAwSFgRBEARBWAYJC4IgCIIgLIOEBUEQBEEQlkHCgiAIgiAIyyBhQRAEQRCEZZCwIAiCIAjCMkhYEARBEARhGVFPkEUQiU4gKGBHVR1ONLWhV1YaxhfkIclNdXEIgugekLAgCAtZV16Nhe9XoLqhLfSa35uGx2cUYmqRP4YtIwiCiA50FEIQFrGuvBr3rSgLExUAUNPQhvtWlGFdeXWMWkYQBBE9SFgQhAUEggIWvl8BQeFv4msL369AIKh0BUEQROJAwoIgLGBHVV2EpUKKAKC6oQ07quqi1yiCIIgYQMKCICzgRJO6qDByHUEQRLxCwoIgLKBXVpql1xEEQcQrJCwIwgLGF+TB702DWlCpC13RIeML8qLZLIIgiKhDwoIgLCDJ7cLjMwoBIEJciP/9+IxCymdBEETCQ8KCICxiapEfy24bA583/LjD503DstvGUB4LgiC6BZQgiyAsZGqRH1MKfZR5kyCIbgsJC4KwmCS3CxMH9ox1MwiCIGICHYUQBEEQBGEZJCwIgiAIgrAMEhYEQRAEQVgGCQuCIAiCICyDhAVBEARBEJZBwoIgCIIgCMsgYUEQBEEQhGWQsCAIgiAIwjJIWBAEQRAEYRkkLAiCIAiCsAwSFgRBEARBWAYJC4IgCIIgLIOEBUEQBEEQlkHCgiAIgiAIyyBhQRAEQRCEZZCwIAiCIAjCMkhYEARBEARhGSQsCIIgCIKwDBIWBEEQBEFYBgkLgiAIgiAsg4QFQRAEQRCWQcKCIAiCIAjL4BIWTzzxBFwuV9i/iy++2K62EQRBEAQRZyTzvmHYsGHYsGHDuQ9I5v4IgiAIgiASFG5VkJycDJ/PZ0dbCIIgCIKIc7h9LA4cOIA+ffrgwgsvxK233oqjR49qXt/e3o7GxsawfwRBEARBJCZcwuLSSy/Fa6+9hnXr1mHZsmWoqqrC5ZdfjqamJtX3LF68GF6vN/Svb9++phtNEARBEIQzcQmCIBh986lTp9C/f3/85je/wQ9+8APFa9rb29He3h7678bGRvTt2xcNDQ3Izs42+tUEQRAEQUSRxsZGeL1e3fXblOdlTk4OhgwZgoMHD6pe4/F44PF4zHwNQRAEQRBxgqk8FqdPn0ZlZSX8fr9V7SEIgiAIIo7hEhY//elP8cknn+Dw4cP4xz/+gRtuuAFJSUmYNWuWXe0jCIIgCCKO4DoK+frrrzFr1izU1tbivPPOw6RJk7B9+3acd955drWPIAiCIIg4gktYrF692q52EARBEASRAFCtEIIgCIIgLIOEBUEQBEEQlkHCgiAIgiAIyyBhQRAEQRCEZZCwIAiCIAjCMqjmOUEQRDckEBSwo6oOJ5ra0CsrDeML8pDkdsW6WUQCQMKCIAiim7GuvBoL369AdUNb6DW/Nw2PzyjE1CLKpEyYg45CCIIgbCIQFFBaWYt39xxDaWUtAkHDNR8tY115Ne5bURYmKgCgpqEN960ow7ry6hi1LLFw4r2PFmSxIAiCsAEnWgUCQQEL36+A0hInAHABWPh+BaYU+uhYxAROvPfRhCwWhGPozgqfSCycahXYUVUX0SYpAoDqhjbsqKqLXqMSDKfe+2hCFgvCEXR3hU8kDk62CpxoUhcVRq4jwnHyvY8mZLEgYg4pfCKRcLJVoFdWmqXXEeE4+d5HExIWREzRU/hAl8KnYxEiXnCyVWB8QR783jSo7ZVd6LIUji/Ii2azEgYn3/toQsKCiCmk8IlEw8lWgSS3C4/PKASACHEh/vfjMwoT2kxvJ06+99GEhAURU0jhE4mG060CU4v8WHbbGPi84Yubz5uGZbeNIZ8mEzj93kcLct4kYgopfCLREK0C960ogwsIO+ZzilVgapEfUwp9lHnTYuLh3kcDslgQMYUUPpGIxINVIMntwsSBPTFz1PmYOLBnwi920SIe7r3duARBiKpXXGNjI7xeLxoaGpCdnR3NryYcihgVAigr/O7yMBKJB9Xj6L4k4r1nXb9JWBCOgPJYEARB8BNNAcO6fpOPBeEI6Mw3OiTiLooguitO3ZCRxYIguglOnYQIguBHPEKWL+B2HiGzrt/kvEkQ3QDKbkoQiYPTEwuSsCCIBMfpkxBBEHw4PbEgCQuCSHCcPgkRBMGH0xMLkrAgiATH6ZMQQRB8OD2xIAkLgkhwnD4JEQTBh9MTC5KwIIgEx+mTULwSCAoorazFu3uOobSylnxUiKjh9GJylMeCIBIcql9gPRS6S8QaMXW4fBz6HDAOKY8FQXQTaDG0hljkDyAINZyYeZOEBUF0IyjzpjkCQQGTnt6kGmXjQteOceu8ydSvRMJBKb0JgohArGhJGIMndJf6meiukPMmQRAEIxS6SxD6kLAgCIJghEJ3CUIfEhYEQRCM6IXuAkDPzFSM7Z8btTYRhNMgYUEQBMGIVv4AkdrmDnzrmc1U2I3otpCwIAiC4EDMH+Dzqh93UNVYojtDwoIgCIKTqUV+fPLwlcjLTFH8O1WNJbozJCwIgiAMsOtIPeqaO1X/TlVjie4KCQuCIAgDUOgpQShDCbKImEFZIIl4hkJPCUIZEhYmocXRGFS3goh3xNDTmoa2iLohwLn03lQ1luhukLAwAS2OxlAr4iR60lMRJyIeoKqxBKEM+VgYRFwc5XUDKMxMm0BQwML3KxR3eORJT8QbaqGnPm8aCWSCiUBQQGllLd7dcwyllbUJMfeRxcIAeoujC12L45RCH+1WZFARJyLRmFrkx5RCHx2JEtwkqtWbhIUBth+qpcXRIORJT1iNE/yclKrGOqFdhHNROxKubmjDvSvKMLdkCOZMHhSXY4aEBSfryqvxyF/2M11Li2Mk5ElPWIlTd3xObRfhDLSs3iLPbfgSq3YcwRPXDYu7MUM+FhyICvNUq3pSHCm0OEaiV8TJha4JmDzpCT2c6ufk1HYRzkHvSFikprE9LscMCQtGWBSmCC2O6mgVcSJPeoIVpzoBO7VdhLPgtWbH25ghYcEIq8IUocVRHfKkJ8zC4wQcTZzaLsJZ8Fiz43HMmPKxeOqppzB//nw88MADeP755y1qkjNhVZg5GSl46sbhtDjqQJ70hBmc6gTs1HYRzkIvuZoS8TRmDAuLnTt34qWXXsKIESOsbI9jYVWYS2eNQfHgfJtbkxgoedITBAtOdQJ2arsIZyFNrsZKPI0ZQ0chp0+fxq233oqXX34Zubm5VrfJkbA6HU6ghZIgbMepTsBObRfhPEJHwtnagiEex4whYTF79mxMnz4dJSUlute2t7ejsbEx7F88Qk6HBOEcnPo8OrVdhDOZWuTHtkcmY27JYMW/x+uY4RYWq1evRllZGRYvXsx0/eLFi+H1ekP/+vbty91Ip0BOhwThHJz6PDq1XYQzSXK78EDJELx42xj4E2TMuARBYI5h+eqrr3DJJZdg/fr1Id+Kb3/72xg1apSq82Z7ezva29tD/93Y2Ii+ffuioaEB2dnZ5lofIyijHkE4B6c+j05tV3clHu6H09vY2NgIr9eru35zCYt33nkHN9xwA5KSkkKvBQIBuFwuuN1utLe3h/3NTMMSDacPGIIg2KBnOf6gTKjWYIuwaGpqwpEjR8Jeu/POO3HxxRdj3rx5KCoqsqxhiQQNaoJIDOhZjj/UanKIUjAejxpiBev6zeVjkZWVhaKiorB/mZmZ6NmzJ5Oo6I5Qel8i0UnEss9K0LMcf1Am1NhARchshMqrE4lOd9nB07Mcn/BkQqWcOtZhOqX3xx9/nPBZN41C6X2JRKY77eDpWY5PKBNqbKBaITZCg5pIVLqbiZme5fiEMqHGBjoKsREa1ESi4lQTs10RG935WY7nKBi9mhwudOWKiKeslvEACQsboUFNJCpO3MHb6e/RXZ/lePehkdbkcAFh9y5es1rGA3QUYiOU3pdIVJy2g7fb36M7PsuJ4kNDmVCjD1ceCyugPBZdxJPqJwg5gaCASU9v0t3Bb5032fbFVmyL2tGMlW3pLs9yNPs0WsTzkY5TYF2/6SgkCkwt8mNKoY8GNZEwOMnEHE1/j+7yLDvVh8YMSW5X3LQ13iFhESVoUBOJhmhilu/gfVHewUfb36M7PMtO9KEh4gcSFgRBGMYJO3in+XskAtSnhBlIWBAEYYpY7+C7a8SGnVCfEmagqBCCIOKa7hixYTfUp4QZSFgQBBH3UEih9VCfEkahcFOCIBIGCim0HupTQoTCTQmC6HbE2t8jEaE+JXihoxCCIAiCICyDhAVBEARBEJZBwoIgCIIgCMsgYUEQBEEQhGWQ8yZBEARBMEARMmyQsCAIoltBiwNhhO5S2dYKSFhYSCAoYPuhWpRW1gIQMPHCfEwY2JMmLYJwCLFaHEjMxDfryqtx34qyiPTmNQ1tuG9FGSUMk0EJsixiXXk1Hnl7P061dIa9npORgqduHE6DjiBijNriIC7vdi0OtNONbwJBAZOe3qRaRl6sm7J13uSEF4us6zc5b1rAuvJq3LuiLEJUAMCplk7cu6IM68qrY9AygiCArsVh4fsVigW1xNcWvl+BQNDafZYoZuSLkrjTpXnB+eyoqlMVFUDX+KluaMOOqrroNcrhkLAwSSAo4In3KnSve+K9zyyftAiCYCMWi0OsxAxhLSea1MeNkeu6AyQsTLKjqg41jfoDqqaxnRQtQcSIWCwOtNNNDHplpelfxHFdd4CcN03CMxGRoiW6C05zVozF4kA73cRgfEEe/N401DS0KVqfRB+L8QV50W6aYyFhYRKeiYgUbWxx2mKXqDjRWTEWiwPtdBODJLcLj88oxH0ryuACwsaPOHvcPK4f1u77huaVs5CwMMn4gjz4stN0j0N82R5StDHEiYtdoiAVbIdPtuD5DV86LiyPZXF4fEahpQsC7XSdC+8mY2qRH8tuGxMxh+RkpEAA8NyGL0Ov0bxC4aaWIEaFaPEixTnHjFiFGXYHlASbGk4Iy4u2wBTHHqAsZmjsRR8zYyBcRDfjuQ0HIq4xe2+dbFllXb9JWFgE5bFwJhSDbh9qgk2PVXdPwMSBPW1pEwvRnrjJWuYcrNpk2DWvOH2ssK7fdBRiEVOL/JhS6LMk86aTFWu8weOZH8vFLlpYNba0Qin1iLWzYpLbFdV7Lc4N9EzHFr3wXxe6wn+nFPp0740d80oiZfckYWEhSW4Xigflo3hQvuHPcLpijTfIM/8cVo4tvYlVi+7orBhtMUNEYqUYsHpesVL0OAHKY+EgKEuf9ZBnfhdWjy0jQsyFLiHTXZwVA0EBpZW1eHfPMZRW1lIirBhjpRiwel5JtJwnZLGwECUzMwAmE2iiKVanQJ759owtXiFmV+SFU+mOlkenH+FaKQbEeUXPalff3M70nYlmWSVhYRFKE0lORgoAhDl0qk0u5AtgD7EIM7Qb3gncjrGlJ9jk+LpRBdFEOiuXotW/8SCkrNxkJLldWDC9EPev1I4GXPTB57i6yK87DllFT34PD0ora2M+xvUgYWEBahOJUlEytckl3hWrUyZ1JdRi0H3eNNw8rh/azwRRWlnrqDarYWQCt2Ns6Qk2AcDcksEYkJ/ZrSIvEtXyqNW/AOJCSFm9ycjNTNW9hlWws4ienIwU/OTNPahpPGcFcZp4EyFhYRJe73i1ySWefQGcMqlrIffMP3yyGat2HI2rxDZGd8J2jS0twRbNfnSShSARLY9a/XvvirJQkig5ThRSVo5ZKwU7i1Cv59ioxhoSFiYx4h2vNLnEqy+AkyZ1PUTP/HXl1Xh+w4GotdkKa46ZnbCdYyvWoZROsxDEu+VRDkuFViXLrPQapwkpq8as1YJdS/S0dgRwqjWyn50o3gASFqYxM0FI3xuPvgBOm9RZiHabrbLmmNkJ2z22YhlK6TQLQTxbHpUwE1YsxWlCyooxa4dgVxI92w+dxAsbD6q+x4nijcJNTWJmgpC/V1SsPm/46z5vmqN2/iLxGCIVzTZbGeJpdiccb2OLNVTTaRYCcbFRk2jxFnJrVb/Fi5DiQRTsACLutxnBLoqemaPOR0Nrh6aokOIk8UYWC5PwescD2ko21qZlHpw2qbMQrTZbbRmxYiccL2NLycrjy07DrPH9MCA/I6zdTrMQxKPlUQuz/ebUI1yrsNPPSJxDWHGSeCNhYRKtiUQJlsklXrL0GZ3UzeT7iFWbebHaRG+F2dXJkTsiqj47jW2KjrZTCn2O801yilOrFbCMO29GChrO+lnEu5Aygl2CnecYymlWMBIWFqBVUhcId26Kx8lFDSOLndl8H7FosxF4LCMsC77ZnXA8RO7wRFhJHW2daCGIF+uQHizj7qkbhwOArpCKhbCN1nfasRnksZo6TbxRdVMLYd2JK73mpEHBA09ZaJ5qmHaWlY5GKevSylrMenm77nVzSwZj9c6vmBd8IwIhXsrGs/aZiLSC5PqKGscLp3hGb9wFggK2V9ai9NBJAF2L7IQLzxVgjIWwjQcxrQX7HDIED5QMjkKLqGy6IwkEBSzZdBDLt1WFhQ4ZHexOMW2zPMB6ZYaVsLOkud2Tjvh79RLeKMWmizvDu4oHYEqhL+K+8tz3eCob/+6eY3hg9R7u94ll2J3yPCQqav2r9yzFQtjGi5jWQm8OAQBftgfbHrkqauOchIWFyB+osf1zsetIPdcEtq68Go+8vV8x5tvIYHeaGteb1Hl3o1LEhcNq7F6I9Cwj3owUzRwAImbuK2u/29XHPBgdIy/cPAozR51vQ4ucgVMFk7hRkvq+iIitW3rLaCz64POoClsrxLRT+jwa1lUeWNdv8rHQQWkBd7sAafQbiyn63hXqOeV5owSckJRK6cHTWpisyvdhJXY7yeqlEleakJUwc1/jKXLHSIQV4CxveKtx2gZC2q4n3vssLL20FHFO+/m75ahrNp9Ai2ehN+s47aQ+j1dHYBIWGqgt4PKQeq2JnzVkiOcBi3VSKiMPnpX5PuIJNSe+tfu+Yf4MM/fVysgdu3dsRiKsEjmU0akbiPUVNUy+UgKgKSqkaAlb3vnGjJh2Qp/LiUdHYBIWKvB4qGtN/LyZ6/QeilhnGjT64Fmd7yOeULKM8Iolo/fVqsidaO3Y1HZocrQiPpxixjaDUzcQvmwP2s4EuSxKLKg9D0bmGzNiOtZ9rka8pCAQocybKvAKArWMjbwmZr2HIpambZa6AQvfr1DMkqiVpU4JM6GCrFkbY4lehkY1eO8rb3ZAK7OFGmVqkR9b503Gqrsn4IWbR2FuyWD4sj1h16hlDF1XXo1JT2/CrJe344HVezDr5e2Y9PSmqLTbSmKd1VZ1HDS2M/kFScnLTDWUidTofGM0+2ms+zyRIIuFCkYXZvn7eHamLElOYplp0Ky1xI58H/LdaX1zBxZ94IzzUS14zf4irPdV3i9LbxkT0S9KeQbs3rGxWhPkO7Q5kwfrvs+JZmxexP75iFEIRXsDwYNoDVswvRCzV/LnGTE63xjN+RJP/khOh0tYLFu2DMuWLcPhw4cBAMOGDcMvfvELXHPNNXa0LaYYXZjl72M9AnCBbXceyyqoVjx4aueFgHJuD62FSMlUq4RTFxZWsz/Ad1/VjjIWTB+K3EyP6uJs9zGbmSMWPVOwk83YrLCOZymx2EDwIN7bZW5+B0TW+WZDRU3E2DDi9Oi09PDxDJewuOCCC/DUU09h8ODBEAQB//u//4uZM2di9+7dGDZsmF1tjAm8PgFqEz/LzjQ3IwWLbxzOtOjFshaBVQ+e2iIhf01rIQLAnGzLyQuLVGhtqKjBK9sOR1zDc1+1du2zV+7GstvGqIZm2rljs9uaEGvfI7N+HTzJ4wBnbCC0kAtGIw6IrPPNmj3H8Oj0yGeD9ztjuWlLNLiExYwZM8L++8knn8SyZcuwffv2uBUWahMCj6lab+JXPQJIT8GdxQMwZ/JgrkkoViFI0XzwtBaie1eUIScjhctUy7KwxMrpTxRaEwf2xLiCPMP31eyu3a4dWzSsCbE0Y5t1duU9enDKBkKNuSWDFec0XgfE8QV5yMtMRV1zh+Z1dc2dqs81z3fatWlLBGdiXgz7WAQCAbz11ltobm7GxIkTVa9rb29He/u5WOfGxkajX2k5ehOC2gIuz2PBMvFbHTIUixAkOx48tTToek5bvA5kImoLi1Ni183cV7O7djPCUWvyjIY1IVZmbCssMbxHD7HeQOhxkS/Lknkoye3C9aP64FUFK54cqwSj1Zs2p8wr0YZbWOzfvx8TJ05EW1sbevTogTVr1qCwsFD1+sWLF2PhwoWmGmkHrBOC0kRvJPMmYH3IUCxCkKx88NQeupvH9bXsjFeO0sLiNKc/o/fV7K7dqHDUmzyjYU2IhRnbKksM6+/+/sT+uKbIH7UNhFZSPzWsPnKcUuhjEhZWCkY9cc9qgYjGvOJUawi3sLjooouwZ88eNDQ04M9//jNuv/12fPLJJ6riYv78+XjooYdC/93Y2Ii+ffsab7EF8E4IShO9E2KKYzWorLCWaD10z204YG2Dz+J2AfXN4ZkCE8HpT8SKXTuvcGSZPFnbld/Dg9LKWkNjKha+R1ZZYlj755oif9TmnSmFPuQwppyXYrUviygY9dJzW+33IJ/zxRD29RU1eGfPN2HHM0oWiGjMK062hnALi9TUVAwaNAgAMHbsWOzcuRMvvPACXnrpJcXrPR4PPB6P4t9iRawdvawg1oPKjLWEJT7dDoICuhwY3a5QH7GOhde2VSE/y+OoXYEcq3btrMKRdfL85OErdU3rLhdw/xu70NB6JvQa73iOtu+RVZYYlqMHllB0oyhtUHZU1Rk+bgT4rE9aGySpYASi66wuoheto2SBiEaElZOsrHJM57EIBoNhPhTxgNPilXktD2qDqvqsY+PvbxmDaSOce35nZTibEaQ7BdZ7vOiDz0P/Py8zFb+cWeS4PrZy184iHFknz11H6sMWB8VrBYSJCsDYJGmX75H4jNY0tKKuuQN5PTyoO80277FESek5ird2BrC+osaWKqBKG5RpRT5Tnyv+Zr25jWWDpCcYpxT6DFu69GCJ1lGyQNi5xsSDlZVLWMyfPx/XXHMN+vXrh6amJqxcuRIff/wx/vrXv9rVPltwUrwyr+WBxYN8zqoyLMFoTBvRx4YWm8dOwdbDk4zT7WdU/y7fKRi5x3XNHbh/ZRl+9HUB5k9T9y+KBdHctfNMnjNHnY+lt4zBnFVlEbV21DA6SVrte6S1Y5U7cktRshCpLbTifVOrgNzQ0mn5TlRr16sU9syC9DcbLaeuJCjVBOP6ipqISqZWWW55yzoYmVeMzD/xYHHnEhYnTpzA97//fVRXV8Pr9WLEiBH461//iilTptjVPltwSryyEXMWy24/KAD3r9yNFyUmfyc5+bA+THNLhmD5tiqcatU3yX5/Yn9cPcyH+1fsYvpscVE04wH/0pYqjLwgxzIBZ9U9MrtrZ20H7+SZm5nKLCpEYj1J6u1YtUQFEJkuXb7Q5mWm4vpRfTCl0IfJF/dGWvJnip9n9U6U5TjS7eqyJBkJg1UrVCbObWI5dZ5dt1ww2nkcEAgKeG1bFbdllXVeMbPGOM3irgSXsHjllVfsakdUkE6YN4/rh+c3fMllMrZycWZ5sB9bU47JF/dGavK5ki48g0V8MNdX1DjKyYf1oZszeRAu6Z+LW1/5VPczrzn7Oxra1K0VUg4cb0JpZS3GF+QZSq0t8vN3y3F1kd/0RG+1z4zRXTtPO3gnTzMTXSwmSZ4dq14IutoiWNfcgVe3Hcar2w4jLzPFkhLjLLBuUAAozpECEOHcKT2amPT0Jk3RYLacup3HAUYyoIocPtkMwF5n4vwebD6LYltiQbepFaI0WHp4khEUBLR0BEKvaXm/K+02jJ61szzYtc0dmLB4A351w7msnDyms+qGNizZdADPbzjgKCcfnoduwsCezIsXTynyJZsrsWRzZWjRZE2tLUcrOQ8rejuvpbeMQW5mqu3WJp4doCiyrynqCgdkmTzNHC3GIo0yjy9QUAAWTB+q6ODLKlCsKDHOCutn3FU8AB+V16j6NihttEora3VN9WZ/q13HAbwZUOU8t+EALvJlaeZBMnMsua68Gk+8p2zVkrNqx1Hu5ItW0S2EhdpgkZ7Fa2XB1NptGD1rZ32w65rDz1ZZs9GJLN922JFOPqwPHY8IMbL4SBfNrfMmhybKk03tYQ6bWpiZ6FksV3K/BDusTTw7QCULmOus2VxEafI0cuwkt3pE80iP977mZ3kU06Vb7axshchi/YwphT48Nr1Qtc+VFm0rrUtq7bTjOMCK4mvyOdVKZ2Je0VPT2B6zI8SEFxasg+VUayeel6hNnvcbOWvnnRykg5U1Gx0ATf+EWJ9fsz50rCLEyMIlXzTFfggEBSz9uJJJwJmZ6HlM0iJ2WJtYd4BqFjCxjT8oHoCSQp/ifZSHDuohF45WHBfxCBPe+2p2EdTDSt8vnmMslgJw0j5lNdXnZaaivrnDkA+CHc6RVghApTnVCmdio6InVn4WCS8seAeLfAfP+n7es3aeRVA+WFmz0fXwJOF0e0D3ulg6+bA+dCwihKe+ixS1yeCXM4tw/0rtRdBsfgEjfW+HtYm1HWoWMJxt04flNYoFoUSmFvlxzxUFeGlLle53SYWjFY56vMJELzmTiHQRVBIuVlgY5CJL+j35PTyAAJxsbmfeEVvlA6DUp75sD3IyUtDQ0qmZl8NoOXXAHudIK+dBq+dUo6InVpVYE15Y8NxgcYHZfqgWbldXLPKB46eZ3st71s67ewMiPY71BtoPJ12I5zfqZ7F0YhlgtZ2lXv/ylCKXIx8r00b48aOv1RdBF8wn5zHa91Zbm1jbYdYCFggKeG9vteZ35KSnYOmtYzDhwp6hRdSso56R3C/SZ1RPpIqREGrl6nktafLjTrnI0hrfrFYcsz4Aan16vLE99JpWXg63G4a/n1UYAWDOcWHlPGj1nFrTyDeXRSuyUY2EFxZGbvD9b5ShgSHEUQ6vShUf7EfXlHOZ3FkmvB9dUYAfXzUYf/rnVzEPq+XFqMlbFCPtZ4J49qaRgAs4ebqd2V9CaazMn1aIkRfkRHixW+XnYLbgk1U7I5YdoJcxxbNWm1h2XqdaO+F2ubiLmD23/gsUDzovYvEwk/tFT6iK4wCAZrn6e64owB+2VDFVSvZ50/DJw1cq1iNiOWfnseIY9QFgEXvejBQAygUDpXk5pL5Net8v33AsvWUMFn2gLEwAcOW4MPssAvbMqevKq7FoLZvDptgGwP6MpFokvLAwMliMiArAmIiZWuTH5It7Y8LiDaqe0kqDVW3Cy8tMORup0jVBqllFrB58ahYGq7KK6k2WWmLkjuIC/HFrlWGBNW1EH1xd5LfFadDo8Y2IVTsjlh3gnZcV4LkNX5pqkxGnO9b3yCN9WNMrA8q5X0Ski68086Yv+9yY0QuvfG9vteIiKEXs92uKfNh1pN6QQJJ+J+tRmREfABaxd6qlE7kZykuMmm+THOn8cfhkC1btOBq2exctQrmZnojEWbzziNln0Y4F3UiUit3Vb1lIeGFhdrCwYuasPTXZjV/OHK54nq81WFl3G970lAgTdk5GChbfeC6M1Yy3vdqift1IP97bW21JVlGtyZJFjOiNAb3JwM5KsmoikTero13tkIYXrt551JQFzIjTHa94ki8eRnK/KDmeqt1/lvDK6oY25GamhnbnGypqsGbPsbDNhBhZI+a1MCKQ5N+pZsUxC2uf1rewZ8GVw5JPQrQILbttTCgix8zRmZmjVG96CkqG9kJrRyCUI8dMnxt12FwwfWj8FSGLR8wMFhbMnrWvK6/Gog8qFP+mpz61Jrx15dWqpY/rJeZJZQesNMwa3w8D8jMMlQaubmhT9E0wk1VUaSJinUS2zpusmjJZNNnGEiWRWN/cjtkrdwOIXvElPbFq1uHPiNMdr9VRet+zPCk4cLyJ4V1dGPFb4bHCiM/rxIE98ejZMM4NFTV4Zdth3egfI8dealYcs1jpQ6D0u1h36kpCwWyOC/EZ2H6oFn/+51dYs4ctP86p1k78uewY/lx2DID+JkpvI2fUYfPRd8rhTU/FhIE96SjEbqQTptJuwSjywWOV6V/EqPoMBAU88vZ+zWvmv70fwaCA2St3R+72G9vCzN68pYHV0NoxsE6c2w6eDPUrzyQC6J/3xlLpK4nEZW5X1Kp1arVDxKzDn5FoBCNWR/G+s2RtlcO7gBsNfUxyuzC+IA8PvblH8Xr5s2JmMa+2OESZRSDmZaai1kC4Nu+8IhcKVuS4UHLE5UWtz1l9yIz6T51q6cStr3wa0+zKCSMsWBZ0+W5hyaYDeG6DftSEnDlXDsTg3lkR32N1QTEXuqpqGkkZvf1Qra6jXX1LJx7+816mB9hIaWA11HYMrBPnks0H8Zeyr/H4jEK0nwkyvaemsQ3/s+5fqu2JVrIwXuFpV7VOMxhpE4/TndKzYrfVUQprZU4RM6GPPMKYNRpM67Pmv73fkjHOIhAXzSzCog8quPvF6LwiLsRmc1yYzb4pRUD4vMLjQ2bWKhTL7MoJISyMRhGs3vmVoe8rHnRexI7OjoJiZkIKSytrma5r7mBbmJUWX7MRCfL385i8xX59sGQw03fVnW6PeUVAo+PUTv8Oo/C0Se13KzndsYqsrQf/jaWbK03/DinShY7nXpnJCcF7jLJgeqFubhUt6ls6sWTTATxQMsTwZ4iwWK/cbnD3i9F55WRTO97dcwz5mV2Otccb+YWeFdk35Yjzytj+uXh0TTmz78f4gjx401MMBxNEc8Mkx61/ibMRF3T5oiEuPOvKlWPmjapiX7YnYkCypGVe+H4FOs4EUVpZi3f3HENpZS1zbLKxB816N1X5sYJZRa1kGhbDxPQeAfHXrdpxFL7sNNXrXehaEPIyU5napNfXgaAQdg8DQUHxNTlGx2m8o/W7Z6/cjYbWDswcdT4mMp4HJ7ldaGjtwF92fW1pO6ULnRhRwHOvxEXW5w0f0z5vmuaO0UiFWLMs33ZYcYzKYRnXU4v82DpvMlbdPQEv3DwKq+6egK3zJmNqkR+BoABveiruLB4Q0W6tfjEyr7hdXdbdB1bvwa2vfIq2M4HQwipFT+hZnX5d5G+f1WDsL9drphWQz6/rK2oQCLJt/Fg/M1rEtcXCjPevUVX8xHXDuJ1sxJsrDynNy2RzGjTyoE28MB9LLN7RiZgtOa61Y+AxeQvoyoc/t2SIbqVabzrbhKzV10q72ByFWH0lvxu7KjHajZloITt+t1Vm6hxZpBRPZU6tiALeI6JoVogVOdWqn8yP12KjZMFVCoW/YdT5qinfRXjrIQGR0VMNZ59Hee4VPV8gu7IQL//HYeZrTzS1WXocI35mNIlrYWHmKIF3sc7JSMFTkvBMKTwFxbT+W46ZkMIJA3tGlDW2CqVEXaxOdSzRA+IE/dz6L5jE0b9qGnXP7ANBwVQKYLUHXal/5cdfdh152V2Qy2xtDqt/t5Vm6qW3jIH77HEeb2VOrTbzHlvxHqNYFY2hNWeZTZ+u9v765k68uu0wxumMU556SGrzjigC05LdeOOHl+Lk6fB052rPDmv/PjZtKF7Zeigsy6hV5Pfw4Kdvsfm+sRLt7MpxLSzMeP+y7LYzPUm447IBuOzCfM3QHTtumjRZjui4xbNoJLldeOrG4arhpkbbxJqoSy2PBU/0QPGg85iExUflNdh9tB6/uLZQ9czezDm4ES916c7WjkqMVhTk0vt8s7U5rP7drGbqzFS3qu+QOIbVnmc77pUePJE2Y/vncu/mlVCbs8xamayyUrHWQ9J6JkWLptvlCqs6q/XsTCn0MW1A7ppUgL556VwlGfQQPxsCmMZ5XkYKvj9xAF77x2HVVPt25LthIa6FBeuCfvhkc8RrerttF4Bff2ck0yRtRSpYOXrJcliYWuTHi7eNwRPvfYaaxvbQ675sDx6bXogHVu9WTcAU0Z6z/8ubqOtnU4ca3lXzmERrGtsjEuXIMRoqaeTcVbqzVRp/SrCOZysWfS2sWhysrkDJuphriQpA21pmR9VMFliOUcQF0Yyo0FtozFqZrLJS6UXAuGAsxbyZZHry8aN3bNuTMdxWyuMzCnGyuV3/QgALri3EDWMuwMX+rJDAiVa+Gz3iWliwLujPKZRDB84tNGaTJlmZ3TMzNQnNHQHLSmWrTVg7quqYRQXQNRktmN7lq/DunmOKFgErTMNyLi3Iw0flNczX6y14Rs7BzexOxeRHWvDsKqLhr8G7OKiZla2uQGl2MWexltlRNZMVvWR3Zs/cWRYasxYbqyw+0jkVMJdiXizjzptMj2UDEpbuvbENdafbkZeZCp83HTUNrZj75l7d9gFdIuTJG4owtcjPHNHn86aH2mAmt4wdxLWwkA8+NfQmWyuSJqndXF7V2tyhXObczKKhNGFtqGBbrL8/sT+uKfKjvrk9wofBzgQsLOl85bDuhnjFDqvFQYk1e44xXce6q7AzRFmEdXHYevDfWF9Rg3f2fBO2i5aOCytKcwNdi0IwKEQ4XbLQw5OEZbeOxWWD8pnqZhhps53+Llb5luRlpmLmqD7wpqciEBQU22fWYmOlxUdvwZx8cW+8sPFL3Q3SQ3/ajYUzi+BNT2V+drQ2IEr3WulZYxUI2WnJKJ1/FVKTu4I0jYhbp+W7iWthAXR16IMlQzSVq9pkKz6wau/RWsgDQQHbK2tReugkgK6FakqhL+Lmju2fi289s9mSYxKrci0EggLzgndNkR8NrR3K2TltSsBidndm5fl3IChg1Y6j3O9zgT3z4IMlQ5j7j1UQmukD1sVBLY+EfFyY2U0FggKWbDqI5duquAWFyOn2AP579e6w2jhaTCn04cGSIRHfKY0ckZbirm/u4BbdPELETGj8rPH90NjaiTV7jqG2uUP3aNWsxWZs/1zNGjdAV2jo2P65TL9Ba8Esraxlsroeb+rAfSvKcFfxAKbvFJ8d1mgXvb7Uu3dP3TgiJCrE771upF+xJIKIkrh1Ur6buBcWADAgP4PpOvlka3T3t668OuL4ZMnmg6qRIyxWFR62HTxpqorojqo6pnTmeZmpIWEUrVBJK3ZnVp5/d5k42c48RcRemMno2c46fteVV+seq4ho9YHSWAEQek0vwZAe8nFhdDel9JwZpb6lE/euKMOLDBENESHF6Sm4s3gA5kwejPUVNRGluJXQEt3KoZipuH5UH0xRCMXkEYl5mSlYcO2wUOVV3iqfZpycAWDXkXrdxT4odF3HugiqLZi84pl1M8WbkZOlL9W65NoRflxd5Iv4nj9oiIp7riiIeZExPRJCWBg1vxk5D9Qq7HVKZfISd21PvFfBnBRLiyWbD4b+v5Eqoqy/u60zgGUfH2QSX69tq0J+lse0Cc5Mgho7zr+N7PzFna03PZVJWLCMX5baLwBb2CxLLo6cjJSQQDAqLqSinHc3pfWcScn0JKG5Xfn4UAlpSmu5wKpv7sDslZGLQENrJ57bcAB7vz6FTf/6N9P3qIlutcWpTsOawCOU65o74ctOC/m+GPHHMWNlMjKn8myKpNeebGIX/AK6+iYvMxX1zR3c1piOM0GurJkieg6ea/dVY9eR+rCw+Efe3q/5zL23txo/mzrUcTlvpCSEsDBqvmN9YA8cb0JpZS3G9s/FE+99pnu9fICJGejmTb0I2w7W4s9lkVkDxSHizUhBQ0sn82RupIoo6+9u6Qgw11JZ9MHnof9vxgxs1IRvlwc0a18tmD40QlgFggJ82WmqYlJPBEj76e9fnmTauQtQ7wOeXBxigqFMTzJOt6uXvtbDyP3UOqKU09we0Fws5NS3dGL7oVo0tXUqlqlXWzgAMIsK6fvkTq4s1jh58SreGiFin5vxxzFqZeLd5PEcLShdq3fsIuf6UX2wfNthLmvMuvJqPLpmv6aVl6Uv1WpTnStPMAT/qmnQfc7tLj1gBQkhLIya71ijSsTSw3mZKUxHCNIbz7pDFHcDgHJufV6kKjrLk4KTzecSxNgRHiuF1wwsnUhYJyZ5GKpdHtCsk7rfm4ZpI/qEvba+ogZtZ9R30wKAm8f1U/ybEedVAMhITcKUQl/E60ZycQCAIJhLKWzkWIrXaiUuFqy8sOEAdhyOTHHMs0DxwLrQy5FuUB6fUcick0bsc7MRGkbO7Hk2eTxHC2rX8t4z8ahJ6Shq0cyikNVAFFSHT7bg+Q1fMj83Wn2uVptK/GyWCBeW73ECCSEsAHWTk5YnNG+YKE+Zda20rKJFYm7JYAzIz4zYDVhVxVFU0dLS0eIibrXfh/x7eczA0omENUHNJw9fiV1H6m33gGYt/PToO+XwpqeGEi+xOqA+t+FLrN55NEwUmXFebekIKO5mjB4xsRapU6LnWR8dXngnTXGx+Olbe3Ga4VhESVTYiVgc68Dx08zvke+Apxb58ftbxmDOqjLVxVRuAbMzJ4ea1ZF1kweA6Zhm8sW9sbOqDo/8Rft4QM9yITpT1zS0wudNx2PXDMUv3i8Pzem1Zx1w935dH3GszINaX1pdgyTamTR5cQmCYJNOV6axsRFerxcNDQ3Izs62/PPFAb+hogZr9hwLEwM8JjazvPHDS/HTt/ZqJnjRWiA/3PcN7l+527L2SL8X6BIvAPDIX/Yb9rZnYdXdE0JmYD2nN783DVvnTQ45nAHKE5OSJcTOcL/SylrMenk707Vi1c5FH3zOPJ6kv0usVWFmLL5w86iIJGHv7jmGB1bvMfyZRvFlp2HW+H4YkJ/BfF94+3vrvMlIcrvw9y/+je8t32FFsy3DrOVRfi/V5gWlZ0N85vRE+rM3jQyzaLI41Ub4X8jus16kDOs9ZrUSA8BNYy5QPGaOBmJfimMRCJ+TDhw/HeYbZ4ac9BTsWjAlJj4WrOt3wlgsRMTqh69uO8zsvTu1yI9gUMDP3y3nskqo4WdIyyruSOSFyaQLkx3IE8FkeVLCLBpWw2MGlsaQ8ziP2Z3emmcHXdPQxi0Iw46t0lJMC1yl3Uysdjg1jW1hJl6W+8J6VOdC+BHnZYPzbauPYxSzuzb5fZs2og9edLuYng0964EAoLUzoGjRVLs/qlZHhfu8YPpQ1RT7RusraXH5kHyUFPayfJPIinQs2rFZFTkTDGJ9RY2jI0MSTliwljCXm+iV8jQY5fEZhdj0r+NM18ofHCMLEy9SM+uEgT1t9bcQJ0bWaBjxOlbnMbPprVksHTyLstE+FO8Ja1IdNfwqzqB2+9WwwnJfWBLfZXqSIlLu21EfJ5bkqRwl8ThWqon0nIwU1Ld0RogwrfvD46dT09CmmWLfDqHbKystlE9IzIS5aO1nlmwWtZBmzQSsq8Crxun2gOY9ckKSrIQTFqw7YzE8Mj/Tgyfe48+b0EPBWz43IwWLbxyOKYU+PLpGPzRQiWhO+iea2ph2NUaQn/fWnWYLDZNep+Q8Jj44NY1tONnUhiWbKw3n2FDPWVCAOZMHATibx6KhlSvywBzGv0G+g5diZdp5OWkpbrR1svlisCSe21FVh/YzQUwf4cfafdWKn6MWYjq1yI+5Ognz9OCNNLCLuuYOjP/VBsXcODyOlXIhkt/Dg5+8uUfxWq37w+MnoHefrRS68rlG7JvSylrbRUVeZkpY1kwrK/DqobRBttNyy0PCCQvWnbHRowapb8TOqrqwzJsTLuwZyghn94AWyT278zCCuGvQOnq4eVw/w5O0dJHLy0xleo/WdbzmRXmOjfweHkAATja3q3p7n2rtxHMbvsRLWyqRmuyOull94oX5+EvZMe4Jl2UC0dq9ngkIhsNKWUWFiFbiOdb7q7VosSYcU/vcJbNGIzfTw1TnxW6kuXHMpGyWCpHSylrNpG9q94fXqVYrBNMqoasV9Wdn5IT4Tb+6YXhY1kyrnTTVkPet3YUJeUk4YcG6MzaCdBCnJrtRPDgfxYPzI66LRihQTnoKfjdrNB7+815D75en1RV3NdsP1Z41xwuYeGE+xhXkYfXOo9wLnTxNtVgwRw+168yYF42IyJaOAFpU6rbYgShYJwzsqRqFIk7Ac0sGo1/PzLCCR6yLjJoZPRAUIvx9WMhITTLcTyxVJ9XQWrSMmtnl4mziwJ4YV5BnWfZPM8x/e39ElWKju1GjYahG+1Xt+9SErljZmYWcs1ZipT4Qi4/ZgZq/F+/cP2OED+/vqzEsrk40tUWlMCEvCScsWHfGRmDNlWDl+aFayNZT/zkcyUlu7nTTIkppdddX1IQ95Es2V4Yye2qlmFWiMxAMC++tZygFrOYfEE3zYiyQCtb1FTVY9IFycihvRgruvKzrmMbMBCE3oweCAnYdqcf1o87HqwrJg7QwI77E54Ql26AaShP5+II8+LI9XM/G3JLBmDN5cES/SpMbLd92WDWCyurjJTlKVkmju1GjYahGjy+knyP3AZDWVxItRDxximrW2g/3VeOxd4wdR8uRCnql9ABSeAoWugD8o7IOd17WH+/urQ7Ly8NKr6y0qBQm5MWtf0l8wboz5iU3IwWfPHwl0wMsPoBaU7/bBdW/u9C1yP7+ljHwecMfbm9GCh4sGYIphT7TlhGlHaN8gNY0tOEPW6owfQTfrmjJ5oOY9PQmrCuvRiAoMFkNFkxX9g+IlnkxGnjTk+HLDr+nPm9aKPxX6R6InGrpOqYR+9UK1pVXY9LTmzDr5e2h9OOuKGxq3K5zYnPJpgOGLQInm9oRkDlEJLldeOK6YUzv93vT8OJtYzBn8mDsqKrDu3uOobSyNuwzk9wuPFAyBLsWTMGquyfgB8UDkJeZEvY5vrPPq95zbyVSZ3R5H2gxviAvlKRPC/lmQDy+ANTnLiniPCZuFqRj7YHVezDr5e2Y9PQmrK+owfiCPHxYXsP8G6TfIf/9iz+swP0ry7iPiP3eNPzoioKuqD4J3owUzC0ZgjmTB2PmqPNDKerl8BYsFNCVP2P5P46grrkDmZ4k5vdK+9aqUvVWknAWi1qbOq++pZO5cA5Lkpi7Ly/AH7ZUaSaRmVrUVaBGulsSF5fVO4/i5nF9Tf0m6Y5Rz5S29cBJ7s8Xd1QPXDWYSRjkqlibWCt6xgMNrWfw+1vGwu12RRQBm/T0JmaPeyvOTa3KZmiEoADMXrkbSwGurJlyFn3wOf64tSrCkji1yI8XbxujeIzRw5OE/7qkL0rOJtZSKiymdMwgWnomDuyJR6cXKvo7uN3WZM5lRSltuJ4fxvqKGiYht+iDz3F1kZ+r9oWI3PdBzwfgwRK2OUKO9PePL8jDbzce0KwKKqIVDvuzqUNV51wti7WRgoVSWGveyPuW1UoSzZDzhEqQFQgKGPfketscJ5USD2mh56X74b7qs7kzOhT/Ln6G0gMpTlw5nLVFxPdKk3NtO/hvLFEpgW0FrJPs9yf2xzVnayNIPZ0TJXxQRGkc8SSFApQT8vAQCAoofmqTJUXxjOICkMuRAEnrcwD1xGnbK2sVnawB7edL7TP1UHrue3iSmLKCGuW5/xqFo7UtEaXe5fMJS6I6KWKCOznhaa+bsWrHUVX/D73vdAHwpqeYStR3TZEPZUfqcZyxMNkbP7g05B/HWoxOb0xEKwmdtG9Z5kezc4WUbpkgi7UcuFFEs6vezZGGzD1700jABZw8HZ7Zbl15NRZ9UBEmKnIzUvDdS/qi/UwwVPRMz5Igwrp4i++5bqQf33pmc9Q8mFl4vfQIXi89EnpwphT6mItRxQoXgN7ZHgAu5kVayanMSo97FpZsOmCpqDCyQxfAlwBJ63PUHNSS3C5VJ2u7nN6UHGRrGlox901jjtYs/Pyd/Yo7Xrl1i/dYkbUKqXiUpPQ3Fh8As9l/P+I8Rjl59phHrbCZkTERDYvAnCsHYu6Ui0JFDlnnR6uLM+qRUMLC7jMkqdl1SqFPcSckd4AEzilMcQH4cF+1otd/fUsnXth4rvqdXjpbAV3n7nNLhmD1zqMR36lUTt0nccZ0qjOkWfNotBAfU/E8n9myotDxVnvca7GuvJq5aq0eORkp+NX1wyPSN0cbI0LLTqc3uYOs0cRnuWfL1+tZJdXM6PLFkHe8sFYhlf5euQBhFbA5Jq0WPPTKSjN0FKg1JqKRhK540HnMgk1EHqEXDRJKWERDMdY0tOHeFWURYXZLNh9UDb2T7hqCQQFzVrFl1mTdzQ3Iz8DWeZMVdww/mzo07PWx/XPxrWc2O1ZUAOcmQzNn7yyIu+wZI3z4+4Fa7klNHiV01cXnYSNDae2TChEyVnjcy1HaYQLgsgJdO9yPtfvVHUXF5E1XF3Xt0D8qr8brpUfYfwBgafIxnoUzmk5vLFU/e2d78MxNI/FpVS3kmxUzCeykiyHPHOn3ds0XL2w4oJjLRq0KaWQhSH1HUQC4s7jAVGIzVsTieGbmQaUxYWcSOnkSMLU2KGEmr4tREkpYsJa4NoM4WJQEhFronbhQzn97v+FkVlr0ykpTzcSntHNyshVAxArzqB4+2TkwaxrgnPQULL11TNhZfSAoYPdXp5i+V2ly5y2NDaiH5wLqWUVLhvZmvv+5GSn45xHlSqC+bA+euG5YaEGRjjNeYREMBi2bhHkWTjurf8phceh+4rphuHzIebh8yHlh79Wq3FzLEaJ4oqkN1xT5kZeZqhva6ELXcekV/7NJ1SFRbg0RBZD8XuptkMRFc87kQRjcq4dmBVcrWDSzCLuO1JuaB9XGxJRCHx4sGRLh62IWAcDN4/qF/jsQFHCS0Z8kFnWCEkpYSB9ep+3IBajHXJtBa3FRIpohR07ksWkXo1d2WsQ5ME8a4FOtnXCfjcncdvAkSitr8XV9C5OFqYcnWfV+TS3y467iAaGwTz3Ec1NW57NTrZ1c1R+1xusvrlX2jjci7htajWX8lKK0o9ODxYrA+5la8BbXk7/XrN/G4ZPN+NYzm3VFRZev1wVMx6WiNeQ3f/sCq3Z+pXu9VhRcktuFaSP8WILRttVL+tEVBZg2wo939xwz9H6tMaEm5u+4rD9W7/wKxxvbdYvqiQ75SlE7YmSK0hE3b1vtJqGEhYjXYRUO7eS6kX4up5xYVbmMNeJDdtekC1X7KxAUsO0gW1jthooa3PfGLu5xdrr9jGZlwimFPiZhMffsuanSZGZ3qKMLyqGIQJdAU8scqgZvW9UWp5vH9cPafd8wp7vWK3YmgP/50oOlgJiak6QZv43cjBRdv5quOjkDcN+3B3EfEyz9mC2qLFdmLVESVWoVXMWjGbX6MXp405Mxul9XtmEj86BW+nA1f42G1k68sPEg7rlCOb2AlLzMVCyaWRRKMaB0v6ob2pjCabXaGg0SSljYXVXOiby3txo/mzpUtZiTfHJi2aWJijnR+lHrIeOtQ2KmhsQjf9mPzNRkuF0unGxuD/N/CAYFXSc2X7YHcyYPUh3vdt83PadGtXwkZhCF4YLphRGOojlnHRyl5/PSYnJaE+vUIj9+eHkBXv678mT90pYqjO6Xa6nzm1YBMZ5CUjzl5fXGRF5mCrbPL0FqstvW49IF04fC501nqsoqF2Bj++fiiv/ZZPi7G1vP4L4VZVh6yxh401N0nzN5anE1yxJLdNF7e6ux9JYxEWNXem9qmzvw83fLseNwLd7bay4BHmuWaLtIGGHRcSaIR9eUM0+qLiSGZYO1mFNeZip+ObMI00b4dauZ2nFkw4MdO+57rihQfciiLUhPtXbie6/uCHstJz0FcEFzPIr9Mm24H9sraw1V5bWSN3cexdj+uWFFmADrj9vE331NkQ+5maldBQAP16G0shaV/27CR+XHI94jFpNb/o8qxeqgIh/u+wZ/3Kq9A5z/9n5keVLCRKAdu0C1cVh91mH897eMwbQR4Qm79JwFczNScMdl+k6Rdc2d2Hm4Dm6XCx9ZlNVVCZ83nTnCRslCYyYBldg/rD4coqiQWnJ2HanHu3uOhY0D1uii3MzUkJN9KH257Nq65g689g8+HyU5C6YPxR3FBTGxVIgkRIKsdeXVeHTNfu6Y+LklQyAIAp7faE3onRri7fUaSGbFgphwKRAUsGTTQc1J5EdXFGD+tEJV8REMClEL+QLOhdNJF1S/yaqqSvhVEsTwJgyKJTzFmaKF29WVRXb+tMLQa7zJvli+Q7oQiOmoeTYFLyokNTKafM2OUtQs49Dt6qq8Om1En7DXlZ7lTE8ShvmzccmAPLhcwFKGBHh2hntakaQpWgmo5Kj5PojjoP1MkKld0nnazjmHN5EjD90mQZaZ3eZzG76EL9sDb3qyJQ5kIvIBKJqlAL50v/IJVQ0xJlte/VCJl7ZUYeQFOZg2og+CQeFs5s+utrIWwZF7lfNWuFwwfSjyszxhRwBKYZFGqqqqoWa650kYxHo/rMaT7EL7GcFxogLo6g/xzFcUF2P75zJFHvB8hxQjVkZ5UiOe5EJy7ChFzTIOgwJw/8rdeNHtikhfLi3ktfqfX6G5PYAdh+ux43A9cxvsFBWAufN+nigIqxGHn3zcSfPtsCD6ddhd+8gJfnRxLSysqHop9dQ1a4LPPVvCV8s5iyXPvshv/2s0nvzoc12v9dqmdsxZze5F/fN3ywF01Wow8nvl56TBoIBbX/mU6b1+b5qimU7JPKrlWGcEJRM9q9n++lF98M6ebyxrCw/tZxyoKGS8/Pcq/OQ/Lsamfx3HwvcrLBMVViEXlmYmdzNZOdXgOT5SEkk7quqwvqKGOaIomhg57w9PGd5yNmW4fh9F06onjoNVO47Cl52G441s0UV2RebFMgpETlwLCyuUnzg4vBkpSEtO4k5zfP2oPrggNyOiBoHaOaK0DLOWl/aPrijAtaP6IDnZpRn7fu0IP/77T3yhWXXNnXjorb2GRZT8nDQQFJiTO4kVTFmKJU0t8mPpLWMw7+19aGozb1FSUvKs6v6CXHuq5iYKQQF49O19+EvZMcc6/UondLOTu9mU6nKU0ryrIf1eXqfjaPO9Cf2w4NphEX44Wpj5TdG26gkAahrbcdOY8/GXsmNMEUs895qVWEeByIlrYWGV8hPP+P/vrtFITnKHHGu0ENXhr787ytCNXL3zK82/i9EearHvWWnJGNs/V9WbXY+2zqCh96nlzWD1iVj0QQX2fl0fEYetdG4t1lOxQlSotVteGlrtvRMvzLe1UFsi8OH+GseKCiBcRFplLrZiDhKPMXm/1wqnY1a/ioyUJLR08hdR+7/tR7G+4gRmje+HAfkZus6vRn9TrI4pRf5cdkzR90cpYsmbbn7ZlR81xjoKRE5cCwvWcrGslQV/vGo3fnVDET5kLGhjVB2yWFqku5KpRf4If4jGtjPY/IV++miruXlcv7DfzLu7UIvDFlOl31U8AFMKfapJnoyilI8gEBSw6IPPdd+7YHohJgzsyZ34ye58Ek7DyMITLeTCcnxBHnzZ7HUs1GCdg9QwupDm9/DgpyasjiIuF9sn3HPFhYad3Gsa28IWVqVNhFiF9pG/7Of+Td+b0A//t/2o7nV2H5OIjvlzSwZjQH4mDp9sVrRKm/Xny8lIwQvfHQV3kiusuCXQ5TitF8obDdjtUw4jEBSwaof+YOrhScKyW8Yyfeap1k7cv3I30+KRkZqEL2pO4909x1BaWYsAh1zmrVGwrrwas1futrVyKyuNredUsjgpWmGGFXvv1W2HMevl7Zizytrwz/f2VkfcI9ajtNzM1FDiJ91rM1Lw3H+Nwqq7J2DpLaMRe6OkNej9DpeDf6gLkZuAJLcLs8b3U38TI89tOIB1BsMzjfqI+b1pgABLnrv6Fu1FzoWuMb16p/5cy4ro9Cj227ryakx6ehNufeVTQw6kLsbBd/vE/nBBfywbRbyPy/9xGHnpqVi1Q9sqbZRTLZ343vId+Olbe+FJdmPiwK56MpOe3oRZL2/HA6v3YNbL2zHp6U2Gx6ZZuITF4sWLMW7cOGRlZaFXr164/vrr8cUXX9jVNk266jrom7FPtwfQ1N4JvzfN0gHV3BHAcxu+ZLqJgaCA0srakAhhPWPrlZVmiYOqlazZcwyBoGB7u6w2a4oWICm8Ao8l8VN9SyfqTrdjfEEepo3og2W3jelaCAzg96Z15bdwAHo7n+nDrTXBulT+Py+5GSmq0RtWFWea//Z+zY2F/PkXrzXqI3bdSL9iITuzyPtZmtfGTP4IOWJPLXy/Ah/u+8b05qR/Htt9vHpY17Gyj/N5zD17xME6DsWF36w1TA9RoC3+sEKxD+UCLppwHYV88sknmD17NsaNG4czZ87g0UcfxX/8x3+goqICmZmZdrVREZ6zzUUffI4F0wsxmyPNMC9qIWhKRwW+bA9yNHJaSL177Q5N4qWuuTO0QDupXSzIxwxvESrWMbfog8/xx61VIXPvlEIfth+qxf0rdqFBw1/Em56M3986NmTerG9ux6PvlDN9p92cCQq4doQfH+yvjjAnZ6QmYWphb3y4v9oyQSgN0TbiyCcmNZozebCqKLLKz6K+pRNLNh3AAyVDIv6mlUmz/YwxP6f39lYjv4f1IYVpKUlolRxn+bxpaO0M2JJEUHR+/fm77EkN5Yjz5PcmDsAft1Yx1XxJcrtCz+PsN8o0LSTSYoPrK2qi7iSbm56M384agx+v2q3YTvG3vvx35ZoudkQvscJlsVi3bh3uuOMODBs2DCNHjsRrr72Go0ePYteuXXa1TxWeSUHMerbstjG27QClKlzckagdFdQ0tmumzJbWKHBi0bATTW2ObJce8jHD6rg5viCPO45eultIcrvgdrk0RQXQdfbqdrkwc9T5aGjtwOyVu1Un9bSU6J9i9s7yKJ5Rt3YEMGf1HktERU56Ch6bNhQ/u/oieNNTMaXQh63zJuONH14Kr86zm5d57hhq14IpeKBkiOZkKvpZWMEfthyKsFp8uK8rAZfaTnJDBZsvl5zqhjY8+aG+bxAvUlGRm5GCyy7saXtmYqPHu9IoiNRkd0iEKlldxOuk0WillSd1j13EYoNJZ/OGbJ03GQumDzXUXiP8v+uH48vjTbrt1HrupNFL0cSU82ZDQwMAIC9PPW62vb0d7e3nJuTGxkYzXxmCt4riiaY2zBx1PrI8Kcw5F3iR3sSx/XO5UozL+cPZGgVOSHYip1dWGoJOzNakglJ8N4/jppHdiny3wHPswnLM1G4wqkfESPbKNSoVIa0cCR2BYNii6ZdYLvSO0n85c3go5bV4/KDlyLa+ogZtZ5QdTnkdb5s7Aliy6QDmTB6MHVV1+Otn1fhflfLx4ue+v8+YsIgG9S2d+MtuYxVAo4E8CoKlcqyRMFbpc5vkduGO4gL8bvNB2wXXlMJe+NWHn1tmIYn2RtCwsAgGg3jwwQdRXFyMoqIi1esWL16MhQsXGv0aVcQ8+awpecUFesLAnqplaUUyPUl45j9HGs6fsKGiBrNX7jLtbLnw/Qp88vCVzDkirEAri6a4QNc3t+P/rTWWtTAWCIh03mM9YjpwognPbzhgqO+lQpM1eqBXVhpT24y0Jy8zBQuuHQZfdnjG0799VoPl/zis+d6emamojULSK/nYE6OFWFj0QQXcZw05SscPC6YXIjczNZR06fkNX6r2Y0ZqEkac70Upx07vD1sOnU3kFJsMkSKxCL2UCrFoREM9e9NIFA/OD3tNq3Ks0egb+cZufUWNaVEh9k9mahKaZeM905OEW8b3xR//HllHxAzR3qAaFhazZ89GeXk5tm7dqnnd/Pnz8dBDD4X+u7GxEX379jX6tWFMKfQhJz0Zp3TCd9RyGKjR3B4AIOCJawvxkz/v426XmcqXIuKitOtIPZeAMsOSm0eHEnKJbRARl+TrRvoNZ+w0gl2TJKuCf+mTQ6Z/K0teFODcOF27z54Mn3XNnfBlp4UldJo4sCcmDuyJ1GSXajlmF4CZo/rEJKsjT99riZDqhjauUu7NHQEuUSG+R75QRJsrBudjy4GTUf9eb0YK7rysAIN79Yio4GkHPM6rRhzNpVZO8fikpqGVycqph1il15uegn9UnsQ3p1rRJzcdl12Yj3EFedwl67WIVTZOQ8Jizpw5WLt2LbZs2YILLrhA81qPxwOPx/pMY0DXbktPVABA8cCeoaxnQUFgUpw/f7ccv5s1xopmmuJEUxuuKfKjhycZp9utq2eiRM8sDyYO7KlqUhRLVlu5zuvVGbmzeABKhvqwoaIGa/YcM2QFUnJgYo3MsSI3w5u7vma6rrUzgPUVNbbuLsTKlWP754YqhAICrhjcC8P75OAX75eH9bF4FOFNT3Vkumgp8XM4Zx/RFhXi83uqpauabJdlaChyMz040dSGqn8344WNxix+Wig9I2qOsjeP68udfwbosnL+tbzmbP4gY9Y6F4De2R78+rujwpyy5eLL703D8PO92HWk3lJRpmStjQZcwkIQBPz4xz/GmjVr8PHHH6OgoMCudjHBuuv8c9kx/Lms67ww05PE9J665k5AAHdSJKs5fLIZExZvsF1UAOf6U82kaEeESktHANeO8GPtPuWQqFe2Hkay24UFM4bh0emFeG79F9wZMBXTL0dpFXK5wHycdqqlE/etKMPvbh5lm6Xm9dIjeL30SESyoCWbK5GTkYJfXV8UWhSkpmSetO1E4pObkYL6lk7Fo6vZK3dj6S1j0CsrDQeON1k6XtR24GpHHTUNbZqlE5QQ/TJ2H61XteKxthUAnrhuGIoH5YfaqWTxFR167yoeYPj7lMjJSMGUQp+ln8kCl2v57NmzsWLFCqxcuRJZWVmoqalBTU0NWltb7WqfJkZ2ds0MGThF/lpRg5vHmU+iYwQxMc1zGw5ELTGWtD+T3C5MHNgTM0edj4kDe9oaobJVZ5f10pYqfLjvGyS5XSgedJ7h75G23448AErw+rgKAH7x/me2n5ErtetUS1eCuIbWjrD7DpzzaQLUPe+J7sH1o/ogNUl56RDO/pu9qgyzXt5uKA3+jBHKC6FShEdpZS3WlH2t6ijP8xjNuXIQVt09AVvnTUYwKJgSFUCXQJGmH9A6khFfU3OQNsqpls6oR4QAnBaLZcuWAQC+/e1vh72+fPly3HHHHVa1iRkxMsSuXdTrZ726c9KT0dB2JmoFbsQHyOjX8ZasZj2Hs8tEz5Jt7+fvluPqIr+pe37geBNKK2sxviDPkdE2IrHOsPrEe59h8sW9setIfZjlYmqRH/dcUdAVNy93wGG8GQ9eNRiv/eOwbSW64wG3C/jBpAL88WydH9NpuS34DB6SXMBxndBrM3Plpi/+reg7l+lJxncvuQDe9FR8uK/aUl8OvzcNc6cMCQkWsQK0Ea68KB/3XDEoIhJJz+IroOvZz8tMRX1zh2X3NBapAbiPQpyEuItSqv5pJSx+HFbi86bhvy7py52bXxQI0mRgen3CUxWvvrk9ZsV+xMRcEwf2NHzPl2yuxJLNlaFzYDLtK1PT2I4JizdE+FpcN9KvuItjnRbuKh6AB6cMwcX+LNPFs5xEXmYqgkEBDa3quWmkLJk1GtNG9MHY/rmKPgFD/VnY9C/2OkA+bxpzEUCzZKYm4S+77XEuFlGzKp9uP4NXtx22xddHWktoR1WdKXG/+YuT+M7YvhFVnNcx1qAa3deLjRz3X49YbKLiuggZoB6/bAc5BkursyANBaxvbseja4wpZjFme5k7sk+UchewVsVTOxuMJlIfEDP3XDwHLins5djsobxWJ6uRT6xqxeN4EM96RcuH2c+TE82Qx6y0JDS1dS2Adc0doSqWWt8rL76l5cvEKiyy0pLx2DVDcc0IP1bvPGr7eE5JdgMxjnyxA7GatFVHvqLFY9EH/LkotETFj64oQEZqCrOI5I2ItIq4FxZA5AN6sqndkrAgOadaOnH/t/uiqe0MUzU9HsRQQDHjopHCRCyTFgDFOG8tnFKvRBrJofT7uryt9R9k8XesrzhhY2vN0dZp3koWjUgiFkRL2tj+uSitrEVNQyve2mV98iWzacB5EEWFiCjWvbIcOXmZKbhh1PkoKfQpPmuiL5MUnuO+prYzmLN6N+4+dipkybPrOb1pzPkhJ/hEQ3TuHl+Qx5VhV4265i5/JR5c6HL21rIIdwmgi5k/MxYRIUCCCAsg/AENBAUs/bjSlh3f7z8+ZPlnitQ0tuF/1v2LeWLISkvCwhlF8OekM09aABRf08Ix9UpkHaP0+64u8mNHVR22HTyJJZsPRrFx4aSluNFmIjtmS4fye3nEwun2M44RF9eN9ONbz2y2bRwtmD4UdxQXhJ4BUXTWNLZh0drPoua30tDSiQevGoSC83owCXepqVx6Pe9x38t/rwIgYNltY/DI2/u5kzixfE9dlByeY8WGiho89OaemM11AvSPFasb2lB3mu0+zC0ZomuJtou4LZuuRZLbhV/OVM8G6lTqTrdzDervjO2rKiqsQPS6/ihGpXflsERyiGJjcO8eUWiRMi7AlKjQIjPVDV82W6VeF4DOgD3t4KGksBf+sKXK1gn7SF0LdlTVhep1iOPAl51mmahgqc4tAHh+48FQOWut51IsF65U6lo87vNmsNc2evnvhxEMCtj18ym4aYx2fiEpLgA/vFw/dcDmL8zlyHAB8KaxhfvHgle2HY7pBupbQ9gi3vIyU3WrdfuyPZgzeZA1DTNAQgoLAKHUvvFCz8xU5GTol+WW8uq2w5j18naMXbQeL2w4oFm6mRfppPe6Ss2DaKPnhCQtT22FOdMoWnchJyMFo/vmGP7s400dmDWeLQRaALgqaKbbVNhs4+cnbD9Ge730SNjCLGKlRzyP77q0GKESqgUKJcXrphT64FEJ61RDPNt/+qYR8GXrJ4Hze9PwYMkQeJL1v8fMPRQXwadvGonf3zLaxCdZjwvOCJm+QpaiXA2fN1039HvacH+Y0I42LiHKoR6NjY3wer1oaGhAdna2pZ8tT73KehTCcrYVDfIyU0ztrnIyUvDUjcNNm7+M5tW3C/GMfuu8yao7QKWse/IkUInC9yf2R89MD17dVoWGbhy2qYQ4OsT8AaWVtZj18vaYtGXV3RPCjmfFI4/8TA9+8tZeVSdwcbw/+52RuPWP/AUTF0wfivwsT6geCqAsCmaM8GHn4fqo1DbJy0zFr24oCs1N68qr8cR7n4V9d056MjoCgmYm3kREvN+fPHwlvvXMZt3y7+I8qDTnyaP25L53ZmFdvxNGWBipXAecm4juuaIAf9iiXNc+3nhRkpRFCbVzXfFvk57e5AyfirO4gIhEM+FOmx2YvdI5Qiha5GYko74l9v4TTkM6AQPApKc3WRZWzBOt88LNozBz1PmG56b/KOyFv5l0MFaKBBNDh6M536W4gd/dEj4vSZ/jwyebuTNkOhGXC8j2dOU9Yrr+7P+K85u4qQOUazUtu025D9XqEam9zyis63dCOG+a2WFLwy1H94uMK2eBx1vam56M9jNB287ggci6GEDXANx+qBYrth/B3w/8G6clseJSVRtLR82cjBR0nglGFHKSnjOrqfTuJioAkKhQQZ7CXXSENIM0RwxrMbNeWWmm5iazogLociYVAMwtGYwB+ZnoldUVnWNloSsWOoPAvSvKwjY9oh+MuJnRQu5c6vem4doRPqze+bWhCtR2IQhgFhWAsfLvUpLcLowvyMNDb+5Rbg+UayXZTdwLCzOhkHJPcnkIY34PD37y5h4cb2zXNk0d1HZqys1Ixi9mFMGXnYZgUMCtr/CbN3mQ18VYV16t6SkunusuvWUMKqobbW2bHNFsK4aLKoVoNZytoaFmVYr1EZYTiHb2xUxPElN6/FgeM0rznvx21mj89+rdho/GxGJOU4v8+D3GYM6qMs3f5PfGZgGXIy4sq3d+hWdvGokTTW34v9LYOSkqLXAsmxkB4XOFaGV9+OqhEcnc4oW8zBR88vCVSJX4twSCArzpqfjZ1RehrrkDeT088GVrRxexZPSMqJVkM3EvLIzssEVBIBUVIvIQxieuG6YY9iW+iyXjXX3LmVC56ncZc8HfcVl/vLf3G8MPjDipriuv1i25Lv4uvcnSDvKzPJg56nzNXYvYpJf/nhhHVXaQKzPR56Sn4ExQQHP7GVv6rLk9gLklQ3STMgkA7rm8SxCK/x0tRGffdeXVePy9clP+NhmpSfiqrgVryr6Gz5uOO4sH4JWth1Wvv26k3/JKlUYRFxa7NzQsKC1wrA624lwhJTXZjV/dMNxRPmGs1DV3YteR+rANoFImVr1cFKz9F83U3nEvLHg7iyeFNaBvmmL1uhfbyZpetYcnGb+7eQyCgoBPq+ogCAJW7jiKesb49Dd3foXPqxvw5k72hDax2FWK/cEiEJ1smYi2xUDOgulDcbSuBcu3ddXhiEYtjgH5Gdg6bzKWbDqgeT4+ul8ult1m7JjRCNLaN1Y5Ird0BPDkh/8K/bfe1PHe3mpc7Pea/NbYckn/HPzzyCnLP/dEU1uYfwVrBJfa3Kk2R8f6mWRBugFUq85634oyTR8J1jUlmqm9415Y8HYWawprKWpZLJPcLpRW1nK1kzWrnljXwmhtjm2VtdjG2LZYIU03G4tCOVYijqtgMDaWn6N1LXh+w4GYWARW7/xK9RrxfHfrvMmYUugzVPaeF/HYAme/244+0bu/PImMnIodogIADp9sjnAQ15rn5EUSRX+xbQdP4ptTrTg/Jx2XDcrHJw9fGVY4r765HbPPHq1aPQasEi29stJ0q566ADy2phytHQH4vJF5i/TWFNYik1YS98KCZaGW1uEwmkxKLYsl703lzarn5F26WVo7A1hfUYOpRX5HVxtVY86VAzG4d1aE0IzmPRPH16odR6MqKnpmpobqWvCc7xYPOs92YSES64yxeZmpttV8cZ39/NoY1pPhxYUuB20l65aWqADOWZjV/MWWflwZCrcXj1Z3VNXhzuIBeGfPN5beg2uKeuPTqnpTnyldF1ieodrmDsx9cy+AyBBSrTWF10JvFXGWRioSsVMB5WQhLgC/umE4rhvZBwCwdt83KK2stSxxiN73A5E3VTTd+bzxt5iyMufKQVh19wT8/pbRoZA3OaJT5rry6pBA0xr6bpd2Ihszz42R9xYPOg8zR50flmExmpYXqZ9PNHIRSFk0s4irYJN43fiCPORl8iWC40W0kthRLJAHnzcdM0f1sfxzxfu+aGaR7jMTTa4d4VfNTiq+rDfryp9DnzctLBTz3hVlqk7op1o6ce+KMiz+sCKU3O/VbYdR19yBLAszfn5UfrzLsTIzBT8oHoAF04dyvV++LvDOGdUNbbh3RRk+3HcuEZzamiLtv2gS9xYLQN8PAkCE6Y01cYhWzgfW71f6Dunxyuulh/ERY0ldpyMq8blThoTKBv+/tRWK18pDofRU991nnQDV/r5k1mjkZnpUY7q1CApdYcOXDzmPKRooLzMVNQ2tKK2sDRsT0bS88Pr5sJCTnoLLB/fE+/vUx+OPrijAtBFdY5r3fDfJ7cL1o/oYKn3NGokiWklYjyKy05LxX+P6nq23YQ25GSkYX5CHim8aLPtMEem84naDq6aIHYjP/As3j8ZvvjsKj769Dx/ur0FL57l7xVraPSgA35vQDy6XC/3zMvC9iQOQmuxGICjgifeU5xE5SlVz5UXjrKC+uROvbjuMpbeM5rJMydcFo3PGnFVlWILRmDaiS7xqHdlHm4QQFoB6p66vqDHsFKPlpSt/j5GbKsYg37dil+Hf7SSULDRdhaDUJ3hxEdh+qBbe9FRF06VerhFx0uo8a4V6dHohxhXkcTsL/rnsGEoKe2PChT0xa3x/1UlQyzTJU5nSKHOuHITiQfncfj4sNLR2Yu2+GvzoigK8t7c6rP/yMlPwy5lFoYksEBQQDArISU9RdRZVOt+dUujjFhYuAClJbrgQYO7XvMxU+LLTdC0XjW1nsHZfNa4d4cfafdbUxalv6cT6ihpLrTM/KB4QUSVVbVOTk56COy4bgP8tPczs8G0E+TOf5Hbh2e+OwtM3RW7I1u77hukzpZWj/7i1Co/PKIQ3PTXmFig54sZo0QefY+F1w/DjVfrVTHMzUrBg+tCw9aPeYHG3oADcv3I3XnS7InKDxJqEybyphF4WyVDq3JtG4mRze5gYUPPS5clkxmLtiGXKYavpmZmKRTOLQrtZAHh3zzE8sHqP7nvli5NWuWl5xr5VO46GiRdxoReFHk+l05z0ZKSlJHEdLbBmz7MCv0Jqc6uzpUpTDEud4aT3gSWbpFa2QKPtnVsyBP9bephpdzi3ZDCW/+MwU6VPccfvTU9GQ6v5hEtG0nL/6IoCjO6XG5Hq2pftwRPXDTOUTXf2G7vwwX77rKF6ll959MeiDz7n+nxxDN1VPIDbCsmKFRWAV909AR9/cVzRWiJF/kxY8ewqzQl20a0yb8oRB/O2g/9mciyTxnf7vWlYMH0oFn3wuaaXrl4mM1ZrR7xHQ0ipbe7Aog8q4HaD28wn3/GKZsZxGuXg15VXK0ZCyK1R4wvysHLHUabF6FTrGUBlYVEzxcvHhNou0gqUnLCkzltWCBnxuZDG2EthDeHUyhZotL0D8jOwff5VukmRXC5wpYgW76HL5bLkWEHsw20H/61rJncB+N3No3HtWX8MI+ZspZ3quvJq20SF3GqmBEstCz3E+7KGMf+PEdwuAXmZqahv7jB83zdU1GDBjGEICgJe/vth1evkc4UVDsbRTn7FQtw7b8qRVuU04n1e09CG+1fuZvZ0V2uDXuVCkXiMhtBC/I0vbDiAd/ccQzAoMJf5liI+4GpVIvVCtKTvFc/1zaJ1vi8fE1OL/Pjk4SuRl8lW9lpvs+F2Ab+/Rd1KJooZNUdZKZkeNkc2JdHLkuk2Jz0Fb/zwUmydN1m3vX5OB+ZeWWmhpEhaXWbEDiugywHwwZIh3O1S4/cfH9IVtEtvOScqgHMiQe4YzIN4n+xiYK8emm1TmwON+MwL6EomZZfTb2NbAHUmRAXQJXw6zgSxVsM3SUQ6V1i1sXTaBjWhLBZWJMPheS/vxKtk7YjGmXw0EX+D1D8hJyMl9Nt5fqNWKlreMEcj5/pGkI6JXUfqmTOn3q2TnXLJrNFhR0xKiH4+D64uU3W+dAG45/KBuk50gLLoZdlhnWrthNvl0l0QpX5J1ada8fj75apOdnJfjalFfiy9RT+1thHExF9ipeS65g7kZqSivqUDtc0d+P3H1oTLWl15UordobaL1n6G9BS3YtvNlFnQwqjTrxn83jQ0tZ3RPSqpa+7kTpX+UXk1+udlmG0igK7cIE4iYSwWdg1mLaQTbyAooLSyFs+t/4LL2qEVrmqGFAfd2YazZ9xe2W6aZXcNKAs4J4Y5AuFjgrWNdxUPwPxphYrhYn5vGl68bUyYw2RpZS3e3XNMMWw6ye3C724Zi9/fMjrCWuI/G3o2Z/IgzTBFF8KTl0mxOn2wuDu/cewFeOamkaEQcXl7gHNJr8TfX93QakvOkF5ZaaF23TDmAvzg8gtx49iu/73Il2XZ99jp3mb3DrauuTPC+ipil6iZUujDixpWudyMFPzoigLFMWSETE8SFkwfiu9ecgHT9UfqWrg+//XSI1j0weemwuRFnttwQPFexIqEsVhEMxmOfPf04b5q/Pzdcq6EKdIH3+iZvFpJZHECNupAaIUzkxTRWpGW7MYbP7wUJ093OcqyFmRT2jlHM8yRlZ6ZqRjbPzfiu/WYUugDoB9ZtK68Gk+8F56fwZedhieui9z1ThvRB1efrVar9FlGE+rYmT7YSNi4lbBkKLTy6PJ4Y3uo+F9uZip3iKCWc7iZdnqS3cwhzEq+ZnaIGlHorq+oQVpy+K4pM9WNuy+/ED++qivE3WiVajnN7QHcv3I35pYMZrreqPVBLznYDy8foOm3IV4b7QqmWiSMsLBLoetNvIs/rND1BFZC/uDLFxWlaAdvejKmDPWheHB+KIsoANXJRWmSljtP9cxMxcIZw9AzyxOq6Hq/DeGvAoCaxna4Xa5QIaEPGcLP1HbORtLYWnUconakU9vcgW89s5k59FSpjWrhYmrF5Goa2yLKUet9FmAs9wpgf/pg3rBxq9HLUGjl0aX4fvlxjvyIRElArK+o0XQON9POV28fh38eqcMf/n6I2a9IOs6s9htzoeu+qI2Blo4gXth4EBf7szG1yK84lz634YBhp9yVnx7RDFsWx/z3Jg7AH7dWGR4b8rlZ+iz28KRqHl9qHRvHgoQRFlYOZnGgLJheiEUfqE+8H+77xpCoEJPnyJEvBHMmD8aSTQdChaUaWs/gz2VfY1vlybAJUGvxkE/StU1t+MX7n4XO/mubO/DkR5/j8RmFmDnqfJRW1qKhzTprhRxRAAaCAh59p1z3+v+6pK/i69LIAjlqu25xsjWzk8nJSEFacpLqJCOPSLEi1W4gKOCRt/drXjP/7f3cuxWjuVfsTh8sfw6iccwppoPW83fgTcnPgnzHKh1DACJzVGSkKIbQ1pzNyHhX8QBMKfRhwfRCzF7J3k4x8duJpjaML+iJC3Iz8JO39uq+T76ps+I5E8nNSMHiG4djSqEPk57exOy7Jh9DF/myDFsxjjd1YG7JEDx/dmFXG/OpyW5TYyMoKJeGB7r8flhwihOng07izcGSEpoF6UCZNsKPrfMmY9XdE/DCzaOw6u4JIU/3QFDAz9/VXxiVYB1w6ytq8PyGAxGhmErRJWpIPcwbWjvw49V7IhwKpZ9n98AUBeCSTQeY8gs8v/EAJj29SfW3yv02gK6JVynPiLgomDmDPdXSiWduGqEa7SGPSLEi1e72Q7W6fVXf0onth/gTZYkOxL2y0nCiqWvHI/ptqPlzRDt9cDSOOZfOYm+33Sn5xTE0/+39uFchskJtLIjve3XbYcx6eTsWfVCBe64oYG6nNPHbrJe34xeM85t8Uyf1GzOKC8CDVw3GP38+BVPPHumZidSbWtQ1l7/xw0uRk87m2yVlQH4G05hXGxsZqWyRWGJpeHnEDatzplOiDBPGYqG1g+VBbgpWMyfvqKpj9viXc6qlU9dkxRtdogfr5z37nZFsP+IsWlkXpUhN5IGggOUcRxJKWVK1IoC0Mg2KD77cV4GHT3XuvdwsaTbVLmtmzdLKWhQPyme6VkQt38p1I/0RmTelpnbxN20/VHu2fQImXpiPCRaaYcUjgI9sdEoTxyVvu6cW+REMCrh/pX62RSMI0B7HLNQ0tOEPW6qw9JauVPfSqp+LPvhcV6w1d2inwdY69ppa5DeVyXTpLaPDHJa3HTzJ9D6tjVGS24XiQfn41Q3Dcf9KvnWiV1ZaKLqMpcSD/Doz/mSBoIBVO44qXB2O2rFxLEgYYSHiVTATspqlFkwfijuKC5gmfLM7e633B4ICXt1axRVOqQer4ocALjPm0lvGwH22kI54lilH7M0F0wtDictYxIi0bQDwyNv7keVJCaXrVrunbKLL/qBk6T02l2qXta18v0lNnFU3tCke8ckFnvycf8nmStUQSpYstPK28ZquF0wfivqWTuYsq2aObgJBgTuLZLSRppyWZ2YUHXtrGtuwaO1n3Jskvb5bV15tWFTcVTwgJCp4x4Hejn1deTUWfcCX38OX7QmrTs3yHMuv6zgT1E0O5nYhzPlbRK8sgsjN4/o5wnETSCBhobWDZZlu/d40ZlEBmDc5qb1frSywGmq5NOSTOKsQOtnczpQVUbrTk0YtKJ3/5mSk4LuXXBDhr8LLqZZO3PrKp8jLTOGyGEgxm+vE703DxAvzmZKvbfny37h2RB/DD7t4H4OMYYkTL2S3VhjxW5BatoJBAbNX7maqwcNTc0e8nuceiWPxjuICAMCfd33NZI3Sc1TVItYl2VlRexbEha+0staQ5VWr78wm58pITcK2Ayex83Adnt/Ilj2VxWnY6LP/xHXDTC/Yu47U64ZGBwUoZrtlnbtZ/TCiQUIIC71J0gUgPTUJLSqmPdHrmGfwGHVQ0noA1Dz/tZALFLVJ/OZxyk6QSp83cWBPLLttjK7AkfaZ3tGEESdXNVgnQvkDaYUT4HUj/ZgwsCeTx/1fyo7ho/Ia/Oa7I5kXL1FMrK+oiSjGpkVORgqXOd/owiguVD9/t5zpmE7Nk18s/Ty3ZAjmTB4UGkdGBc/N4/oB6PJLajujbcJXKubFixW+SLzprc2g1l7e38GSytus6FqyuZIrazKL5cnIuGJ16GXBTP4XO0O87SIhhAWLmb+lI4AHrhqM/9t+OGxhMpr9zki9A6VEP6JVYWz/XOaywOJnyQWK2uJe09CG5zYcQE5GChpaOpnCBMVzwiWbDuClLYciRJnUaTIWyclYONnUjjVlX6OuuQN5PTyoO91uepf5hy1VGN0vl9mfp6UjoBoOKseI+V/kV9cP5zpqMLswsliMth+q1R0Xz234Eqt2HAkV2TK6KD234Uss/0eVphAWIwysWCh4J3EXgN7ZHvz6u6NCeVxqm9oxZ7U9Phpy1NrL+zsG9+6B8QV5mmMt2pEJLJYn1nF1w6g+OD83PeQvZNXRghlxYHeItx0khLBgHcgXnpeJnY9NsaxevVougLzMFPznmPOxdl8Nc6IfPfO+ElKFzuKcKcIaJpjkduEiX5aipaehpTNk8vampzrOLOx2wfAZeGZqkqbj2sL3K7B13mQ8WDKEKTU2ADzx3me6ReuMmGl92R7MHNUn4phJTzBHY3dTWlnLNC5qziaKWnbbGObETEroHR96kt2hZGRm4ckTId7xJ64bFuZca2W5e63v1lp0eC2vh082R8xd8rEWzZ3znCsHYu6Ui3TncNY14tsX9wrl2bESM+IgGiHeVpMQ4aY8atCKAj9SxDAmaUjqzsem4LHpwxRDVQEoFufhERVK4ZQsVhuxwBJrmKDWWalw9t/C941HV9iJGROzlqiQnlnznGnWNLarhsKZsfjMGOnHH7ZEOvrqhSRbFZ6txaF/N3Fdv/D9CuT38NjUGu17wAtPKn615ytaO3v5oiMNI95RVYcF0wt1f4MLXRaf5zYc0B1r4tiKBsWDztOcw8XfeuA421i0SxRpjRcWcaAWxpqXmYo7iwfAm56qWKwxViSExcIKUxGv17oUNU9hpUQ/T7xn/shg6awxKB4c7qjH4+AjFljS+60s5sPqhjZsO/Bv9sarIJ7dsobCichLUps5t3ZBOapICbHveFC7R0bN/y4Ar2w9bCgk2Y5ET1L83jSUcuTVkEcl2VWUz8rFXC8Vf056Cu4sHoA5kwebSo9uFCUfATUfrHuuKMCf/vm14tgXW652P5TG2oLphdwhnTywOmuyHi1G4zjBaLZb6fvFMNYNFTVYs+cYaps78Oq2w3h122Fbi9rxkhDCQm+SFNAV6qhlhubxWjfKkk0HTO/ufdkeRSc9I1YbPVgn4T+XHdP039BCfKDnThkSdn8ee6dcM45ffN8nD1+JXUfqcaKpDSeb2g0ff4jffOdlBcyVP8XCZqwOlmr3yOhiJ0C7PLheSLLaROf3dvn8GA0XBLoyprJ69EuRRiUpmX3Nig21PAFGNxVa+SwaWjvx/IYDuMiXpTiP2F3ZWL4B0fLBEvNdHDhxOpTpV8TnTcPN4/pxpZTOZSz4l52WjEaDmX61dvg8R4viJ9w8rh/W7vvG9BG5FmZz2iS5XWho7RITLBFZsSIhhAWgv3tY9EEF3G5EdLjWw2blTVpXXq2Y44EXtdAnOxx8jOyoeCd/qUc/0NVPSmGM8u8AzqXRFRfNd/cc42ztOcRdw5RCH1bvPMrUj0luF345s4hpZyaNhZdjd8ljLeGiNtGt3feNKWFxxqDZSBqVpLSz01vg1FAb/0oFBHk2FVr5LMxYjcyIKKWkX3o+WMC5fBdzJg9WHA8siGONVSw/fm0hnl3/JZe40rs/vEeLORkpEICwcWXn7t9MThurEyfaRUL4WIhMLfJjwfShin9TOnNmedjE1Mxm4I3r7uGJ1Hs5GSmakQVmz/CU0jfznJWq+W+w8NyGLzHp6U34cN83TBOC2pk1rxDKSkvCc/8VnqpdNOOqiQogvB+njfDjR1cU6H6XmiC0SnBqoee3oOR3ZN5Mz/fMuBCeOVDJd6lr0dMu+a722UDk+F/8YQXuX1kWYXGq5kiZb0WqabVU0XNLhuh+vxy138p6rLmjqs7UeBCvY72+T24Gs68KAMwtGRx6VtVgPVrM9CThwasGob6lM+IIiKdsQjQxO96iRcJYLAD+3QPPTTJTMY7nDN1/1ry/83BdRKpkPQVq9AxP6yjo8RmFzLk1pP4bvBn9ahramNMjP3vTyAgfE4Dfw72pLQBfdlrYvdXKzKfWj/OnFWLkBTl4+C/7IqpBasXCm00kxMpP3twTCudkxayZfuKF+fhL2TGuqAmlqCSl505vly9P0qZ03/QKCIqOyXo7PzP5CUTUrEYANK1ngHZFTCmsR7Bq1/FaRHmuT3K7NK3NAJ8FgfWeNLcH8Pr2I4p/4939mzlO48GK8RYNEkpY8AqFaN0knveL5v3iQfncdR8A/jM8vaOge64oQA9PEk5rlE8Wkfpv8Gb041m8TjYrp7c1kltEem/0zmUXTB+qOrFNG9EHVxf5FWtn2JVIiJXjknBOVnFh1LlTaoZnfT9vBkw9Aa03/lkLCLJsKlijWFitRnLUnCDFX7NkVngdELVnve60fkporet4Qx55r5fPW/mZHsCFUM4PnoWax9pmNIOvlGj56AHxkywroYQF6wK+7eDJUEVHFuxK3y1nbskQSwYi6xkey1EQS8ZMpfNrOxWzVn+Ki86ja8qZnCrFCZ8le+uiDz7H1WePS5QQixyxCkLWPrqreAA+Kq8xLEKMnr2qLeC5GSmob+nUXTBUBUC2B7PG98OA/EzDuzs9Aa01/nkKCOreI1bFZcDsY8R6pkYeozOl1nW8FlHe68V5y+zun9epWg+tMRAtHz2ReEmWlVDCgnUBX7L5IP5S9jUWTB8alZvEYlb2ZXswZ/IgU9/DixU7ZjUztl2KWa1Qj5SpRX5kpiTje8t36H/g2RsSrWMxKax9NKXQh8emF+K59V9wpTqWYrT9agu4vAAZEL5giItD+5kgnr1pJPPuk2dRMeoExyN69e6RmvXM6HUiZqxnSvi86ZZcx2sRNWJBNbv7Z3Wq7pmZiloG8aE2BmLhSBkvybISSljwnAvXNLRh9srduOeKAvxhS5WtN4llMFhR6IYXK6wKeZmpePKGooiH3q5QOrVCPXLqWtl2K+KEH4uzS95z6OJB5xkWFiJGwp2VFnCtBUNrcXCCSZlV0PXMTNXdVNhh9TRqPdMSZSz+R6xlt3kFHev1Vu7+p43w40dfF6haXF0AFs0swqIPKgxvLHk3I1b5YZjNhxENEkpY8JwLi4ryvb3VWHrLmIiUyFbfJJZzYWntELucf6RYYVX4ucrOyc4ETCyLu11e7FZaYnh3H1aItUVrP0N6itu2Izeji0M0TcqsTr6LZhbpPoN2mKaNWM/0RJme/5ELsd3p2rH7F52qu8KJletDud0wvPvn2YxYLZrN5sOwm4QSFoB+Pgsp4gOam5nKnI3SbNvUzMp6+fftwIqFSst0ynMveMQHS94HO73YrYRn92FF3oO65k5bzn4B44tDtE3KLE6+P7qiANNG6PePHaZpXusZqyjTSogWy51uICjgtW2RaemlGD3KE52q1eZ2M7t/1k3G4ZPNeH7DActFs5l8GHbjEgSt3H3W09jYCK/Xi4aGBmRnZ9v2PYGgwHwm/cLNo2wpPMOC2qQgTkN2Z1ETvx/gsyqIC+3WeZO5Q7GU0nb7vWlYML0Q/2+tfu0RX7YH2x65Svd71X6bWt/yXm8lPGZStd3PdWfrhsjbL4fn3vFQWlmLWS9v171u1d0TwiZEo+8zi1I/5mWm4JczizBtRB/Tn2V0webpj/EFeRGbEilK9zpaoZEs8Fb0tWuuNtIngaCASU9v0t2MCIKAmkZlHxu7nkW7YF2/E85iIcJzJh2r0BwnZFHjsSqI8O7ElJS12i7iwInTupkVxWJSeouM3V7ssULLDDq6X65uRIwdjqiAcT+VWMXmW2lOtvKzeKxnRo5NnLLTNVLR184iYbx9wmKt4k2FzouTRKKUhBUWgPNDc2IRiaCEOCku2XSAKQukFQut2oPMWjGUdZGx24vdCozsdtX6b2qRH60dAcx9c6/u91q9UBv1U4llbL6Vi6w8XNJo3Qme45V4SZgkhzftdqznajX0NiPtZ4JMn2Pk/kQzfwYvCS0snB6a47RJYfXOrzT/npOegqW3jsGEC82Xm1fDjkXGLi92K7DDaZE1tNDqhdqokGfx9XG7gHrOkM1YYNVkz2o9i5eESXKMhLo7IYxSTiAowJueip9dfRHqmjuQ18MDX/Y5MdmVLE8f3vsT7fwZvCS0sACcbd520qTA8qCfau2E2+Wy9eF2upXJSuw6CotVHxoV8tL3qREUgNkrd2PZ2cRbdmHGtGz1ZM9iPYvX54V3s/SgRckDrURLRLJGchm5P044QtcjoYqQqaFW0Ih3oCoV6jKDOOjUbr0L7LHlZnGK9cRsMbV4wq6CQrHsQ62iWloL69QiP5beMgZ6TbKiKKAa68qrMenpTZj18nY8sHoPZr28HZOe3sRUiMqugoZKBcHkf4/H54V3s8R6RBotRBEpf37lxcvsuD/xUIgs4S0WIrzm7chIho6IXBdmz7OcdFTjJOuJk61MVmKnmItlHxr1U8nNTIXWumunz5FZa0Ms/aXi8XnhLRjopKMcXosBy/3hsZQ5ZROoBbew2LJlC5555hns2rUL1dXVWLNmDa6//nobmhY7WEOgrDjPcsqk4DSTqtMTwFiB3WIuln1oxE8lVhOmFablWE/28fa8sBYMdOJRjhERqZep9on3wsPsfdlpeOI65fnfSZtANbiFRXNzM0aOHIm77roLN954ox1tiik8IVBWnWc5YVJwkvVE2iYnhMXZRTTEXDz1YawmTCusDU6Y7OPpXgPnNlWPvL0/rMy9iFOPcoyKSLVMtfcq+BbVNLbh3hVleFFh0+q0TaAS3D4W11xzDX75y1/ihhtusKM9UUHNV4I3BAqw7jxL7yw1Ghg9HyeMEa/n43ah53ME2BMdYoW1wUn+UvHE1CI/dv18CuaWDEZOekrY35w671glIgNBAY+8vV/zmvlv74/wy4mHecN2H4v29na0t5+bCBobG+3+Sk20PHm96amGq306LU7cKE6wnnQnnHIU5gRiFR1ixULhRItfvJDkduGBkiGYM3lwXMw7VlkMth+qVbTUSKlv6cT2Q7UoHpQf9rrT5w3bhcXixYuxcOFCu7+GCT0HrbuKBxj+bCc5F5kl3kyq8Q6JuXOI0SFzVpVpOnJaGU5n1ULh9Mne6cTLvGOViGTNcVFaGSksAGfPG7YLi/nz5+Ohhx4K/XdjYyP69u1r99dGwOKgtWbPMe7PdcJ5FhH/xMukGg2iHR1ipbXByZM9YR3WiEjWQ3f165w6b9guLDweDzwej91fowuLg1ZdcyfyMlNR39zBdMvJxEkQ1hOLCAsrrQ1OnewJazErIidemM9Uy2rihZHWCqfTbfJYsE5C14/qg+XbDjOVoSYTJ0FYT6wiLMjaQPBiRkROGNgTORkpmn4WORkpmBCHIpVbWJw+fRoHDx4M/XdVVRX27NmDvLw89OvXz9LGWQnrJDSl0IfxBXmKDp4Lpg9FbqaHJh2CsJFYhtORtYGIFkluF566cbhiuKnIUzcOj8s1xiUIAleO2Y8//hhXXnllxOu33347XnvtNd33s9Zzt5pAUMCkpzfpTlZb501GktvluHK0TmsPQdiJ6GgNKPs8ODEMkSCM0JUg6zPUNJ6LnvRle/DEdcMcN8ZZ129uYWGWWAkLIH4nKyeXxyUIu6Bxrw9tOBKDeLmPJCxUiLfJSi1E1uliiCCsIF4m3FgQb3MZEf+QsNAgXiYr8fhGLZpFfnxDEET3gDYcRCxgXb+7TVSIlHhx0IplxUSCsIN4EfVOxoqiaQRhJ91SWMQLsa6YSBBWQqZ7a6ANB+F0uIuQEdHDCRUTCcIKRNO9fEEU0+mvK6+OUcviD9pwhKNWVJL3GsI6yGLhYOKhPC5B6EGme2uhDcc5WKxgZCmLPmSxcDDxUB6XIPTgMd0T+lCJ9i5YrGBkKYsNJCwcjljDwOcN3334vGnk+U3EBWS6txbacOhbwYAuK9gT732mew0di1gPHYXEAVTDgIhnyHRvPd29RDurFUwLcnK1DxIWcUK8hMgShBzyFbKH7rzhsNK6RZYy6yFhQRCErYim+/tWlEVUDe4upnu76K4bDiutW2Qpsx7ysSAIwnbIV4iwElYHVl+2p9s7ucYCslgQBBEVurPpnrAWVisYALKUxYBuWSuEIAiCiH8oj0V0oSJkBEEQRMLDUn8mWjVqEr0WDhUhIwiCIBIeFgfWaDi5kmXkHOS8SRAEQRAmoAyf4ZCwIAiCIAiDsGYB7U4ZPklYEARBEIRBqBZOJCQsCIIgCMIgVAsnEhIWBEEQBGEQqoUTCQkLgiAIgjAIlbGPhIQFQRAEQRiEythHQsKCIAiCIExAtXDCoQRZBEEQBGESqoVzDhIWBEEQBGEB3bWMvRw6CiEIgiAIwjJIWBAEQRAEYRkkLAiCIAiCsAwSFgRBEARBWAYJC4IgCIIgLIOEBUEQBEEQlkHCgiAIgiAIyyBhQRAEQRCEZZCwIAiCIAjCMkhYEARBEARhGSQsCIIgCIKwDBIWBEEQBEFYBgkLgiAIgiAsg4QFQRAEQRCWQcKCIAiCIAjLIGFBEARBEIRlkLAgCIIgCMIySFgQBEEQBGEZJCwIgiAIgrAMEhYEQRAEQVhGcqwbQBDRIBAUsKOqDiea2tArKw3jC/KQ5HbFulkEQRAJBwkLIuFZV16Nhe9XoLqhLfSa35uGx2cUYmqRP4YtIwjCDLRhcCYkLIiEZl15Ne5bUQZB9npNQxvuW1GGZbeNSWhxEcuJlyb9Lqgf7MGKDQPdG3swJCyWLl2KZ555BjU1NRg5ciR+97vfYfz48Va3jSBMEQgKWPh+RYSoAAABgAvAwvcrMKXQl5CTSSwtNWQl6oL6wR6s2DDQvbEPbufNP/3pT3jooYfw+OOPo6ysDCNHjsTVV1+NEydO2NE+gjDMjqq6sElDjgCguqENO6rqoteoKCFOvPLfL06868qrE/K7nQT1gz3obRiArg1DIKh0RRd0b+yFW1j85je/wd13340777wThYWFePHFF5GRkYFXX33VjvYRhGFONKmLCiPXxQtWTLzx+N1OgvrBPsxuGOje2A+XsOjo6MCuXbtQUlJy7gPcbpSUlKC0tFTxPe3t7WhsbAz7RxDRoFdWmqXXxQuxtNR0ZyuRFOoH+zC7YaB7Yz9cwuLkyZMIBALo3bt32Ou9e/dGTU2N4nsWL14Mr9cb+te3b1/jrSUIDsYX5MHvTYOa94QLXWeq4wvyotks24mlpaa7WonkUD/Yh9kNA90b+7E9Qdb8+fPR0NAQ+vfVV1/Z/ZUEAQBIcrvw+IxCAIgQF+J/Pz6jMOEcN2NpqemuViI51A/2YXbDQPfGfriERX5+PpKSknD8+PGw148fPw6fz6f4Ho/Hg+zs7LB/BBEtphb5sey2MfB5wycJnzctYUNNY2mp6a5WIjnUD/ZhdsNA98Z+uIRFamoqxo4di40bN4ZeCwaD2LhxIyZOnGh54wjCCqYW+bF13mSsunsCXrh5FFbdPQFb501OSFEBxNZS012tRHKoH+zFzIaB7o39uARB4HJ9/dOf/oTbb78dL730EsaPH4/nn38eb775Jv71r39F+F4o0djYCK/Xi4aGBrJeEISNUB6L2EP9YC9mElzRveGHdf3mFhYAsGTJklCCrFGjRuG3v/0tLr30UksbRhCEeSjzZuyhfnAudG/4sFVYmIGEBUEQBEHEH6zrN5VNJwiCIAjCMkhYEARBEARhGSQsCIIgCIKwDBIWBEEQBEFYBgkLgiAIgiAsg4QFQRAEQRCWQcKCIAiCIAjLIGFBEARBEIRlkLAgCIIgCMIykqP9hWKiz8bGxmh/NUEQBEEQBhHXbb2E3VEXFk1NTQCAvn37RvurCYIgCIIwSVNTE7xer+rfo14rJBgM4ptvvkFWVhZcLuuKvTQ2NqJv37746quvqAaJjVA/Rw/q6+hA/RwdqJ+jh119LQgCmpqa0KdPH7jd6p4UUbdYuN1uXHDBBbZ9fnZ2Ng3aKED9HD2or6MD9XN0oH6OHnb0tZalQoScNwmCIAiCsAwSFgRBEARBWEbCCAuPx4PHH38cHo8n1k1JaKifowf1dXSgfo4O1M/RI9Z9HXXnTYIgCIIgEpeEsVgQBEEQBBF7SFgQBEEQBGEZJCwIgiAIgrAMEhYEQRAEQVhGwgiLpUuXYsCAAUhLS8Oll16KHTt2xLpJccPixYsxbtw4ZGVloVevXrj++uvxxRdfhF3T1taG2bNno2fPnujRowf+8z//E8ePHw+75ujRo5g+fToyMjLQq1cvPPzwwzhz5kw0f0pc8dRTT8HlcuHBBx8MvUb9bB3Hjh3Dbbfdhp49eyI9PR3Dhw/HP//5z9DfBUHAL37xC/j9fqSnp6OkpAQHDhwI+4y6ujrceuutyM7ORk5ODn7wgx/g9OnT0f4pjiUQCGDBggUoKChAeno6Bg4ciEWLFoXVkqB+NsaWLVswY8YM9OnTBy6XC++8807Y363q13379uHyyy9HWloa+vbti//5n/8x33ghAVi9erWQmpoqvPrqq8Jnn30m3H333UJOTo5w/PjxWDctLrj66quF5cuXC+Xl5cKePXuEadOmCf369RNOnz4duubee+8V+vbtK2zcuFH45z//KUyYMEG47LLLQn8/c+aMUFRUJJSUlAi7d+8WPvzwQyE/P1+YP39+LH6S49mxY4cwYMAAYcSIEcIDDzwQep362Rrq6uqE/v37C3fccYfw6aefCocOHRL++te/CgcPHgxd89RTTwler1d45513hL179wrXXXedUFBQILS2toaumTp1qjBy5Ehh+/btwt///ndh0KBBwqxZs2LxkxzJk08+KfTs2VNYu3atUFVVJbz11ltCjx49hBdeeCF0DfWzMT788EPhscceE95++20BgLBmzZqwv1vRrw0NDULv3r2FW2+9VSgvLxdWrVolpKenCy+99JKptieEsBg/frwwe/bs0H8HAgGhT58+wuLFi2PYqvjlxIkTAgDhk08+EQRBEE6dOiWkpKQIb731Vuiazz//XAAglJaWCoLQ9RC43W6hpqYmdM2yZcuE7Oxsob29Pbo/wOE0NTUJgwcPFtavXy9861vfCgkL6mfrmDdvnjBp0iTVvweDQcHn8wnPPPNM6LVTp04JHo9HWLVqlSAIglBRUSEAEHbu3Bm65qOPPhJcLpdw7Ngx+xofR0yfPl246667wl678cYbhVtvvVUQBOpnq5ALC6v69fe//72Qm5sbNnfMmzdPuOiii0y1N+6PQjo6OrBr1y6UlJSEXnO73SgpKUFpaWkMWxa/NDQ0AADy8vIAALt27UJnZ2dYH1988cXo169fqI9L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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.clf()\n",
    "xs = []\n",
    "ys = []\n",
    "for y, x in sorted([(y, x) for (x, y) in zip(unique, counts)]):\n",
    "    if x >= 0:\n",
    "        xs.append(x)\n",
    "        ys.append(y)\n",
    "plt.scatter(xs, ys)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92bad321",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T09:11:09.659411Z",
     "start_time": "2023-10-04T09:11:09.659403Z"
    }
   },
   "source": [
    "# Check validation distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "7fbc3beb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:22:49.802352Z",
     "start_time": "2023-10-04T14:22:49.723747Z"
    }
   },
   "outputs": [],
   "source": [
    "out_val = np.load(os.path.join(OUT_LABEL_DIR, f\"valid.mert_0.npy\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "185c72bc",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:23:01.492993Z",
     "start_time": "2023-10-04T14:22:55.200225Z"
    }
   },
   "outputs": [],
   "source": [
    "unique_v, counts_v = np.unique(out_val, return_counts=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "4acaa81f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T14:23:05.498830Z",
     "start_time": "2023-10-04T14:23:05.395868Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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JCwIgiAIgrAMEhYEQRAEQVhGwgiLpUuXYsCAAUhLS8Oll16KHTt2xLpJccPixYsxbtw4ZGVloVevXrj++uvxxRdfhF3T1taG2bNno2fPnujRowf+8z//E8ePHw+75ujRo5g+fToyMjLQq1cvPPzwwzhz5kw0f0pc8dRTT8HlcuHBBx8MvUb9bB3Hjh3Dbbfdhp49eyI9PR3Dhw/HP//5z9DfBUHAL37xC/j9fqSnp6OkpAQHDhwI+4y6ujrceuutyM7ORk5ODn7wgx/g9OnT0f4pjiUQCGDBggUoKChAeno6Bg4ciEWLFoXVkqB+NsaWLVswY8YM9OnTBy6XC++8807Y363q13379uHyyy9HWloa+vbti//5n/8x33ghAVi9erWQmpoqvPrqq8Jnn30m3H333UJOTo5w/PjxWDctLrj66quF5cuXC+Xl5cKePXuEadOmCf369RNOnz4duubee+8V+vbtK2zcuFH45z//KUyYMEG47LLLQn8/c+aMUFRUJJSUlAi7d+8WPvzwQyE/P1+YP39+LH6S49mxY4cwYMAAYcSIEcIDDzwQep362Rrq6uqE/v37C3fccYfw6aefCocOHRL++te/CgcPHgxd89RTTwler1d45513hL179wrXXXedUFBQILS2toaumTp1qjBy5Ehh+/btwt///ndh0KBBwqxZs2LxkxzJk08+KfTs2VNYu3atUFVVJbz11ltCjx49hBdeeCF0DfWzMT788EPhscceE95++20BgLBmzZqwv1vRrw0NDULv3r2FW2+9VSgvLxdWrVolpKenCy+99JKptieEsBg/frwwe/bs0H8HAgGhT58+wuLFi2PYqvjlxIkTAgDhk08+EQRBEE6dOiWkpKQIb731Vuiazz//XAAglJaWCoLQ9RC43W6hpqYmdM2yZcuE7Oxsob29Pbo/wOE0NTUJgwcPFtavXy9861vfCgkL6mfrmDdvnjBp0iTVvweDQcHn8wnPPPNM6LVTp04JHo9HWLVqlSAIglBRUSEAEHbu3Bm65qOPPhJcLpdw7Ngx+xofR0yfPl246667wl678cYbhVtvvVUQBOpnq5ALC6v69fe//72Qm5sbNnfMmzdPuOiii0y1N+6PQjo6OrBr1y6UlJSEXnO73SgpKUFpaWkMWxa/NDQ0AADy8vIAALt27UJnZ2dYH1988cXo169fqI9L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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.clf()\n",
    "xs = []\n",
    "ys = []\n",
    "for y, x in sorted([(y, x) for (x, y) in zip(unique, counts)]):\n",
    "    if x >= 0:\n",
    "        xs.append(x)\n",
    "        ys.append(y)\n",
    "plt.scatter(xs, ys)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "2ed16629",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-04T04:56:39.518428Z",
     "start_time": "2023-10-04T04:56:39.501408Z"
    }
   },
   "outputs": [],
   "source": [
    "# with open(os.path.join(OUT_LABEL_DIR, f\"dict.mert_{0}.txt\"), \"w\") as f:\n",
    "#     for n in range(1000):\n",
    "#         f.write(f\"{n} {1}\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e51d8228",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "id": "9b4e4810",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-09-27T17:45:57.832098Z",
     "start_time": "2023-09-27T17:45:57.829980Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7085918"
      ]
     },
     "execution_count": 171,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total_rows"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "id": "eb25afea",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-09-27T15:45:25.251985Z",
     "start_time": "2023-09-27T15:45:25.249686Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'/app/suno/data/mert_25hz_short/audio_demuc_label/valid_374217.npy'"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "file_to_fetch"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "826f2ca8",
   "metadata": {},
   "source": [
    "# Errands"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4a1df19e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-09-27T20:19:48.415071Z",
     "start_time": "2023-09-27T20:19:48.413576Z"
    }
   },
   "outputs": [],
   "source": [
    "# import os\n",
    "# OUT_DATA_DIR = \"/app/suno/data/mert_25hz_short\"\n",
    "# OUT_AUDIO_DIR = os.path.join(OUT_DATA_DIR, \"audio\")\n",
    "# OUT_AUDIO_DEMUC_DIR = os.path.join(OUT_DATA_DIR, \"audio_demuc\")\n",
    "# OUT_TSV_DIR = os.path.join(OUT_DATA_DIR, \"audio_tsv\")\n",
    "# OUT_LABEL_DIR = os.path.join(OUT_DATA_DIR, \"label\")\n",
    "# for codebook in range(8):\n",
    "#     with open(os.path.join(OUT_LABEL_DIR, f\"dict.codec_demuc_{codebook}.txt\"), \"w\") as f:\n",
    "#         print(os.path.join(OUT_LABEL_DIR, f\"dict.codec_demuc_{codebook}.txt\"))\n",
    "#         for n in range(4097):\n",
    "#             f.write(f\"{n} {1}\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f827fb11",
   "metadata": {},
   "source": [
    "# train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "85bcb62c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# validation run\n",
    "OMP_NUM_THREADS=6 python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M_mert' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter' \\\n",
    "    distributed_training.distributed_rank=0 \\\n",
    "    distributed_training.distributed_world_size=4  \\\n",
    "    distributed_training.nprocs_per_node=4 \\\n",
    "    optimization.update_freq='[4]' \\\n",
    "    distributed_training.distributed_init_method=\"tcp://127.0.0.1:39683\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"mert_0\"]' \\\n",
    "    task.do_valid_set_test=true \\\n",
    "    dataset.num_workers=6 \\\n",
    "    dataset.max_tokens=6000000 \\\n",
    "    dataset.disable_validation=true \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "40d6cc49",
   "metadata": {},
   "outputs": [],
   "source": [
    "# validation run\n",
    "OMP_NUM_THREADS=6 python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M_mert_var' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter_varmask' \\\n",
    "    distributed_training.distributed_rank=0 \\\n",
    "    distributed_training.distributed_world_size=4  \\\n",
    "    distributed_training.nprocs_per_node=4 \\\n",
    "    optimization.update_freq='[4]' \\\n",
    "    distributed_training.distributed_init_method=\"tcp://127.0.0.1:39683\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"mert_0\"]' \\\n",
    "    task.do_valid_set_test=true \\\n",
    "    dataset.num_workers=6 \\\n",
    "    dataset.max_tokens=1800000 \\\n",
    "    dataset.disable_validation=true \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "49a2d9d4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# # on two GPUs\n",
    "# OMP_NUM_THREADS=6 NCCL_DEBUG=WARN NCCL_IB_SL=0 NCCL_IB_TC=41 NCCL_IB_QPS_PER_CONNECTION=4 UCX_TLS=ud,self,sm \\\n",
    "# HCOLL_ENABLE_MCAST_ALL=0 NCCL_IB_GID_INDEX=3 UCX_NET_DEVICES=\"mlx5_0:1\" coll_hcoll_enable=0 \\\n",
    "# NCCL_IB_HCA=\"=mlx5_5,mlx5_6,mlx5_7,mlx5_8,mlx5_1,mlx5_2,mlx5_3,mlx5_4,mlx5_14,mlx5_15,mlx5_16,mlx5_17,\\\n",
    "# mlx5_9,mlx5_10,mlx5_11,mlx5_12\" \\\n",
    "# python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "#     --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "#     --config-name 'custom_95M_mert' \\\n",
    "#     common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "#     common.wandb_project='mert_test' \\\n",
    "#     checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter_2gpu' \\\n",
    "#     distributed_training.distributed_rank=$NODE_RANK \\\n",
    "#     distributed_training.distributed_world_size=8  \\\n",
    "#     distributed_training.nprocs_per_node=4 \\\n",
    "#     distributed_training.distributed_init_method=\"tcp://a10compute-ad3-node-876:2349\" \\\n",
    "#     optimization.update_freq='[2]' \\\n",
    "#     task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "#     task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "#     task.labels='[\"mert_0\"]' \\\n",
    "#     task.do_valid_set_test=true \\\n",
    "#     dataset.num_workers=6 \\\n",
    "#     dataset.max_tokens=3200000 \\\n",
    "#     dataset.disable_validation=true \\\n",
    "#     model.label_rate=25"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ea05e16",
   "metadata": {},
   "source": [
    "# Big run"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "88c6a3a3",
   "metadata": {
    "ExecuteTime": {
     "start_time": "2023-09-30T14:08:07.061Z"
    }
   },
   "outputs": [],
   "source": [
    "OMP_NUM_THREADS=6 python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_demuc_6x' \\\n",
    "    distributed_training.distributed_rank=0 \\\n",
    "    distributed_training.distributed_world_size=4  \\\n",
    "    distributed_training.nprocs_per_node=4 \\\n",
    "    distributed_training.distributed_init_method=\"tcp://127.0.0.1:39683\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"codec_0\",\"codec_1\",\"codec_2\",\"codec_3\",\"codec_demuc_0\",\"codec_demuc_1\"]' \\\n",
    "    dataset.num_workers=6 \\\n",
    "    dataset.max_tokens=1800000 \\\n",
    "    dataset.disable_validation=false \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "47a644a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "OMP_NUM_THREADS=6 NCCL_DEBUG=WARN NCCL_IB_SL=0 NCCL_IB_TC=41 NCCL_IB_QPS_PER_CONNECTION=4 UCX_TLS=ud,self,sm \\\n",
    "HCOLL_ENABLE_MCAST_ALL=0 NCCL_IB_GID_INDEX=3 UCX_NET_DEVICES=\"mlx5_0:1\" coll_hcoll_enable=0 \\\n",
    "NCCL_IB_HCA=\"=mlx5_5,mlx5_6,mlx5_7,mlx5_8,mlx5_1,mlx5_2,mlx5_3,mlx5_4,mlx5_14,mlx5_15,mlx5_16,mlx5_17,\\\n",
    "mlx5_9,mlx5_10,mlx5_11,mlx5_12\" \\\n",
    "python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M_mert' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter_1x' \\\n",
    "    distributed_training.distributed_rank=$NODE_RANK \\\n",
    "    distributed_training.distributed_world_size=16  \\\n",
    "    distributed_training.nprocs_per_node=8 \\\n",
    "    distributed_training.distributed_init_method=\"tcp://compute-hpc-node-750:2345\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"mert_0\"]' \\\n",
    "    dataset.num_workers=6 \\\n",
    "    dataset.max_tokens=5000000 \\\n",
    "    dataset.disable_validation=false \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "525d391f",
   "metadata": {},
   "outputs": [],
   "source": [
    "OMP_NUM_THREADS=12 python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M_mert' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter_1x' \\\n",
    "    distributed_training.distributed_rank=0 \\\n",
    "    distributed_training.distributed_world_size=8  \\\n",
    "    distributed_training.nprocs_per_node=4 \\\n",
    "    optimization.update_freq='[1]' \\\n",
    "    distributed_training.distributed_init_method=\"tcp://127.0.0.1:39683\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"mert_0\"]' \\\n",
    "    task.do_valid_set_test=false \\\n",
    "    dataset.num_workers=12 \\\n",
    "    dataset.max_tokens=10000000 \\\n",
    "    dataset.disable_validation=false \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "03be0e62",
   "metadata": {},
   "outputs": [],
   "source": [
    "OMP_NUM_THREADS=6 NCCL_DEBUG=WARN NCCL_IB_SL=0 NCCL_IB_TC=41 NCCL_IB_QPS_PER_CONNECTION=4 UCX_TLS=ud,self,sm \\\n",
    "HCOLL_ENABLE_MCAST_ALL=0 NCCL_IB_GID_INDEX=3 UCX_NET_DEVICES=\"mlx5_0:1\" coll_hcoll_enable=0 \\\n",
    "NCCL_IB_HCA=\"=mlx5_5,mlx5_6,mlx5_7,mlx5_8,mlx5_1,mlx5_2,mlx5_3,mlx5_4,mlx5_14,mlx5_15,mlx5_16,mlx5_17,\\\n",
    "mlx5_9,mlx5_10,mlx5_11,mlx5_12\" \\\n",
    "python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M_mert' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter_10sec_2nd' \\\n",
    "    distributed_training.distributed_rank=$NODE_RANK \\\n",
    "    distributed_training.distributed_world_size=16  \\\n",
    "    distributed_training.nprocs_per_node=8 \\\n",
    "    distributed_training.distributed_init_method=\"tcp://compute-hpc-node-750:2345\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"mert_0\"]' \\\n",
    "    dataset.num_workers=6 \\\n",
    "    dataset.max_tokens=6000000 \\\n",
    "    dataset.disable_validation=false \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "21ded75f",
   "metadata": {},
   "outputs": [],
   "source": [
    "OMP_NUM_THREADS=6 python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M_mert' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter_12sec' \\\n",
    "    distributed_training.distributed_rank=0 \\\n",
    "    distributed_training.distributed_world_size=4  \\\n",
    "    distributed_training.nprocs_per_node=4 \\\n",
    "    distributed_training.distributed_init_method=\"tcp://127.0.0.1:39683\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"mert_0\"]' \\\n",
    "    dataset.num_workers=6 \\\n",
    "    dataset.max_tokens=3000000 \\\n",
    "    dataset.disable_validation=false \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "94dcdefd",
   "metadata": {},
   "outputs": [],
   "source": [
    "OMP_NUM_THREADS=6 python -u /home/tony/Work/glockenspiel/mert_training/src/fairseq/fairseq_cli/hydra_train.py \\\n",
    "    --config-dir '/home/tony/Work/glockenspiel/mert_training/mert_fairseq/config/pretrain' \\\n",
    "    --config-name 'custom_95M_mert' \\\n",
    "    common.user_dir='/home/tony/Work/glockenspiel/mert_training/mert_fairseq' \\\n",
    "    common.wandb_project='mert_test' \\\n",
    "    checkpoint.save_dir='/app/suno/checkpoints/mert_25hz_2nd_iter_12sec' \\\n",
    "    distributed_training.distributed_rank=0 \\\n",
    "    distributed_training.distributed_world_size=4  \\\n",
    "    distributed_training.nprocs_per_node=4 \\\n",
    "    distributed_training.distributed_init_method=\"tcp://127.0.0.1:39683\" \\\n",
    "    task.data='/app/suno/data/mert_25hz_short/audio_tsv' \\\n",
    "    task.label_dir='/app/suno/data/mert_25hz_short/label' \\\n",
    "    task.labels='[\"mert_0\"]' \\\n",
    "    dataset.num_workers=6 \\\n",
    "    dataset.max_tokens=3000000 \\\n",
    "    dataset.disable_validation=false \\\n",
    "    model.label_rate=25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "cab87d3a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-06T15:43:40.316284Z",
     "start_time": "2023-10-06T15:43:40.313921Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "dc0a1ce1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-06T15:43:59.175228Z",
     "start_time": "2023-10-06T15:43:59.163585Z"
    }
   },
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "file must have 'read' and 'readline' attributes",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[60], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[43mpickle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/home/victor/data/hubert/labels_d2v2.npy\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "\u001b[0;31mTypeError\u001b[0m: file must have 'read' and 'readline' attributes"
     ]
    }
   ],
   "source": [
    "x = pickle.load(\"/home/victor/data/hubert/labels_d2v2.npy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "fad3a9d8",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-06T15:48:24.319572Z",
     "start_time": "2023-10-06T15:48:24.316354Z"
    }
   },
   "outputs": [],
   "source": [
    "labels = np.memmap(\"/home/victor/data/hubert/labels_d2v2.npy\", dtype=\"int16\", mode=\"r\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "4804bfcf",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-06T15:51:18.359600Z",
     "start_time": "2023-10-06T15:51:18.356982Z"
    }
   },
   "outputs": [],
   "source": [
    "sr = 16000\n",
    "duration = 10.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "f989bb5e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-06T15:48:32.212711Z",
     "start_time": "2023-10-06T15:48:32.209792Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1535443484,)"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "label = np.array(labels[offset : offset + dur])\n",
    "        label = torch.from_numpy(label).long()\n",
    "\n",
    "        return label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cb02a0c2",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
