Remove UUID list. 93/151693/10
authorUladzislau Harbuz <u.harbuz@samsung.com>
Thu, 21 Sep 2017 11:25:11 +0000 (13:25 +0200)
committerTomasz Swierczek <t.swierczek@samsung.com>
Fri, 6 Oct 2017 10:13:19 +0000 (10:13 +0000)
Change-Id: Ic4b19d896c962261d4bb3366077459c147babb65

packaging/tef-simulator-helloworld.spec
packaging/tef-simulator.spec
simulatordaemon/CMakeLists.txt
simulatordaemon/src/TABinaryManager/Config.h
simulatordaemon/src/TABinaryManager/TABinaryManager.cpp
simulatordaemon/src/TABinaryManager/TABinaryManager.h
simulatordaemon/src/TABinaryManager/TestMain.cpp
simulatordaemon/src/TAFactory.cpp
simulatordaemon/src/scripts/update_uuid_list.sh [deleted file]
ssflib/src/ssf_storage.cpp

index 8af3ce1..c446ff8 100644 (file)
@@ -44,7 +44,6 @@ make install
 %pre
 
 %post
-tef-simulator-update-uuid-list.sh 00000000000000000000112233445566
 
 %preun
 
index bff2591..521bcbf 100644 (file)
@@ -22,14 +22,12 @@ PreReq: tef-libteec
 %{?systemd_requires}
 
 %define bin_dir %{?TZ_SYS_BIN:%TZ_SYS_BIN}%{!?TZ_SYS_BIN:%_bindir}
-%define sbin_dir %{?TZ_SYS_SBIN:%TZ_SYS_SBIN}%{!?TZ_SYS_SBIN:%_sbindir}
 %define lib_dir %{?TZ_SYS_LIB:%TZ_SYS_LIB}%{!?TZ_SYS_LIB:%_libdir}
 %define data_dir %{?TZ_SYS_RO_SHARE:%TZ_SYS_RO_SHARE}%{!?TZ_SYS_RO_SHARE:%_datadir}
 %define include_dir %{?TZ_SYS_INCLUDE:%TZ_SYS_INCLUDE}%{!?TZ_SYS_INCLUDE:%_includedir}
 %define tastore_dir %{lib_dir}/tastore
 
 %define build_bin_dir %{buildroot}%{bin_dir}
-%define build_sbin_dir %{buildroot}%{sbin_dir}
 %define build_lib_dir %{buildroot}%{lib_dir}
 %define build_data_dir %{buildroot}%{data_dir}
 %define build_include_dir %{buildroot}%{include_dir}
@@ -75,7 +73,6 @@ with TEF Simulator.
 cmake . \
         -DCMAKE_BUILD_TYPE=%{?build_type:%build_type}%{!?build_type:RELEASE} \
         -DBIN_DIR=%{build_bin_dir} \
-        -DSBIN_DIR=%{build_sbin_dir} \
         -DLIB_DIR=%{build_lib_dir} \
         -DDATA_DIR=%{build_data_dir} \
         -DINCLUDE_DIR=%{build_include_dir} \
@@ -103,7 +100,6 @@ tef-update.sh
 %files -n %{name}
 %{bin_dir}/tef-simulator-daemon
 %{lib_dir}/libtef-simulator-ssflib.so
-%{sbin_dir}/tef-simulator-update-uuid-list.sh
 %{_unitdir}/tef-simulator.service
 %{_unitdir}/tef-simulator.socket
 %{_unitdir}/tef-simulator.target
index e5e2897..ad60059 100644 (file)
@@ -102,5 +102,3 @@ TARGET_LINK_LIBRARIES(${TARGET_TEF_SIMULATOR_DAEMON}
     )
 
 INSTALL(TARGETS ${TARGET_TEF_SIMULATOR_DAEMON} DESTINATION ${BIN_DIR})
-INSTALL(PROGRAMS ${DAEMON_PATH}/src/scripts/update_uuid_list.sh DESTINATION ${SBIN_DIR}
-        RENAME ${TARGET_TEF_SIMULATOR}-update-uuid-list.sh)
index fdd3b1b..0bd4c64 100644 (file)
@@ -27,6 +27,5 @@
  *  MACROS
  *-----------------------------------------------------------------------------*/
 #define TA_STORE_PATH "/usr/lib/tastore/"
-#define TA_UUID_LIST_PATH "/usr/lib/tastore/uuidlist.list"
 
 #endif /* CONFIG_H_ */
index 17fff38..77aba5e 100644 (file)
@@ -34,6 +34,7 @@
 #include <sys/types.h>
 #include <sys/file.h>
 #include <algorithm>
+#include <boost/filesystem.hpp>
 /*-----------------------------------------------------------------------------
  *  Globals
  *-----------------------------------------------------------------------------*/
@@ -134,11 +135,6 @@ TABinaryManager::TABinaryManager() {
                        "abcdefghijklmnopqrstuvwxyz"
                        "0123456789+/";
 
-       struct stat attr;
-       if (stat(TA_UUID_LIST_PATH, &attr) == -1) {
-               LOGE(SIM_DAEMON, "stat FAILED %d", errno);
-       }
-       lastModTimeUUIDList = attr.st_mtime;
        pthread_rwlock_init(&binaryMapLock, NULL);
        pthread_mutex_init(&taLock, NULL);
 }
@@ -166,12 +162,11 @@ bool TABinaryManager::initTAatPath(const string &path, const string &uuid) {
        LOGD(SIM_DAEMON, "");
 
        pthread_rwlock_wrlock(&binaryMapLock);
-       map<string, StructBinaryInfo>::iterator it = binaryMap.find(uuid);
        StructBinaryInfo value;
        bool res = false;
        StructBinaryInfo info;
 
-       if (it != binaryMap.end()) {
+       if (boost::filesystem::exists(path + uuid)) {
                pthread_mutex_lock(&taLock);
                try {
                        if (unpackBinary(uuid, path, info)) {
@@ -187,114 +182,6 @@ bool TABinaryManager::initTAatPath(const string &path, const string &uuid) {
        return res;
 }
 
-/**
- * This function reads UUID list file and unpacks files to their respective
- * locations.
- * @return On successful completion of above operations returns true else false.
- * It is very important to check for return value from this function.
- */
-
-bool TABinaryManager::readUUIDList() {
-       LOGD(SIM_DAEMON, "");
-       string line;
-       struct flock fl = {F_RDLCK, SEEK_SET, 0, 0, 0};
-
-       fl.l_pid = getpid();
-
-       // Open file
-       int fd = open(TA_UUID_LIST_PATH, O_RDONLY);
-
-       if (fd == -1) return false;
-       FILE *fp = fdopen(fd, "r");
-       if (fcntl(fd, F_SETLKW, &fl) == -1) {
-               perror("fcntl");
-               fclose(fp);
-               return false;
-       }
-       pthread_rwlock_wrlock(&binaryMapLock);
-
-       //wh
-       std::ifstream uuidFileStream(TA_UUID_LIST_PATH);
-       std::string str;
-       if(uuidFileStream) {
-               getline(uuidFileStream, str);
-               line = line + str;
-       } else {
-               LOGD(SIM_DAEMON, "Failed to open uuid file");
-       }
-
-       /*
-       int ch = fgetc(fp);
-       while ((ch != '\n') && (ch != EOF)) {
-               line = line + ch;
-               ch = fgetc(fp);
-       }*/
-
-       while (line != "") {
-               line = line + "\0";
-               StructBinaryInfo info;
-
-               char* data = (char*)OsaMalloc((strlen(line.c_str()) + 1) * sizeof(char));
-               char* uuid_data;
-               strncpy(data, line.c_str(), (strlen(line.c_str()) + 1) * sizeof(char));
-               uuid_data = strtok(data, ",");
-
-               const string uuid(data);
-               if (uuid_data != NULL) {
-                       char* port_data;
-                       port_data = strtok(NULL, ",");
-                       if (port_data != NULL) {
-                               string port(port_data);
-                               info.port = port;
-                       } else info.port = "";
-               }
-
-               // Open file
-               FILE *fpTA=fopen((string(TA_STORE_PATH) + uuid).c_str(),"r+");
-               if (flock(fileno(fpTA),LOCK_EX) != 0) { // do an exclusive lock
-                   LOGE(SIM_DAEMON, "Failed to lock the file");
-               }
-
-               pthread_mutex_lock(&taLock);
-               if (unpackBinary(uuid, TA_STORE_PATH, info)) {
-                       binaryMap[uuid] = info;
-               }
-               pthread_mutex_unlock(&taLock);
-
-               if (flock(fileno(fpTA),LOCK_UN) != 0) {
-                   LOGE(SIM_DAEMON, "Failed to unlock the file");
-               }
-
-               fclose(fpTA);
-               OsaFree(data);
-
-               line = "";
-
-               if(uuidFileStream) {
-                       getline(uuidFileStream, str);
-                       line = line + str;
-               }
-
-               /*
-               ch = fgetc(fp);
-               while ((ch != '\n') && (ch != EOF)) {
-                       line = line + ch;
-                       ch = fgetc(fp);
-               }*/
-
-       }
-       pthread_rwlock_unlock(&binaryMapLock);
-       fl.l_type = F_UNLCK;
-       if (fcntl(fd, F_SETLKW, &fl) == -1) {
-               perror("fcntl");
-               fclose(fp);
-               return false;
-       }
-       if(uuidFileStream)
-               uuidFileStream.close();
-       fclose(fp);
-       return true;
-}
 
 /**
  * This function decrypts the TA Binary image
@@ -388,18 +275,6 @@ bool TABinaryManager::unpackBinary(const string &uuid, const string &path, Struc
 }
 
 /**
- * This is the main function of TABinaryManger. This function reads UUID list file
- * and unpacks files to their respective locations. It also reads manifest file and
- * keeps it ready for queries on fields in manifest.
- * @return On successful completion of above operations returns true else false.
- * It is very important to check for return value from this function.
- */
-bool TABinaryManager::initBinaryManager() {
-       LOGD(SIM_DAEMON, "");
-       return readUUIDList();
-}
-
-/**
  * Check if TA is single instance
  * @param[in] uuid UUID of TA
  * @param[out] isSingleInstance returns value from this parameter.
@@ -407,7 +282,6 @@ bool TABinaryManager::initBinaryManager() {
  */
 
 int TABinaryManager::isSingleInstance(string uuid, bool &SingleInstance) {
-       checkUUIDUpdate();
        pthread_rwlock_wrlock(&binaryMapLock);
        map<string, StructBinaryInfo>::iterator it = binaryMap.find(uuid);
        StructBinaryInfo value;
@@ -430,7 +304,6 @@ int TABinaryManager::isSingleInstance(string uuid, bool &SingleInstance) {
  */
 
 int TABinaryManager::isKeepAlive(string uuid, bool &KeepAlive) {
-       checkUUIDUpdate();
        pthread_rwlock_wrlock(&binaryMapLock);
        map<string, StructBinaryInfo>::iterator it = binaryMap.find(uuid);
        StructBinaryInfo value;
@@ -452,7 +325,6 @@ int TABinaryManager::isKeepAlive(string uuid, bool &KeepAlive) {
  * @return -1 if uuid is not found else on success 0
  */
 int TABinaryManager::isMultipleSession(string uuid, bool &MultipleSession) {
-       checkUUIDUpdate();
        pthread_rwlock_wrlock(&binaryMapLock);
        map<string, StructBinaryInfo>::iterator it = binaryMap.find(uuid);
        StructBinaryInfo value;
@@ -473,7 +345,6 @@ int TABinaryManager::isMultipleSession(string uuid, bool &MultipleSession) {
  * @return Empty string if UUID doesn't exist, else path to TA
  */
 string TABinaryManager::getImagePath(string uuid) {
-       checkUUIDUpdate();
        pthread_rwlock_wrlock(&binaryMapLock);
        map<string, StructBinaryInfo>::iterator it = binaryMap.find(uuid);
        StructBinaryInfo value;
@@ -493,7 +364,6 @@ string TABinaryManager::getImagePath(string uuid) {
  * @return NULL pointer if
  */
 const TAManifest* TABinaryManager::getManifest(string uuid) {
-       checkUUIDUpdate();
        pthread_rwlock_wrlock(&binaryMapLock);
        map<string, StructBinaryInfo>::iterator it = binaryMap.find(uuid);
        TAManifest *returnValue = NULL;
@@ -526,7 +396,6 @@ string TABinaryManager::getPort(string uuid) {
  * @return string of TEEC_UUID
  */
 string TABinaryManager::getUUIDAsString(TEEC_UUID uuid) {
-       checkUUIDUpdate();
        // E.g. returns a string in the format 79B7778897894a7aA2BEB60155EEF5F3
        std::stringstream strStream;
        strStream << IntToHex(uuid.timeLow);
@@ -538,24 +407,6 @@ string TABinaryManager::getUUIDAsString(TEEC_UUID uuid) {
        return strStream.str();
 }
 
-/**
- * This function checks for UUID update and reads the list in case of update
- */
-void TABinaryManager::checkUUIDUpdate() {
-       struct stat attr;
-       if (stat(TA_UUID_LIST_PATH, &attr) == -1) {
-               LOGE(SIM_DAEMON, "stat FAILED");
-               return;
-       }
-       if (lastModTimeUUIDList != attr.st_mtime) {
-               readUUIDList();
-               if (stat(TA_UUID_LIST_PATH, &attr) == -1) {
-                       LOGE(SIM_DAEMON, "stat FAILED");
-                       return;
-               }
-               lastModTimeUUIDList = attr.st_mtime;
-       }
-}
 
 TABinaryManager::~TABinaryManager() {
        pthread_rwlock_destroy(&binaryMapLock);
index fc60d12..ab852b8 100644 (file)
@@ -65,9 +65,7 @@ private:
        std::string base64_chars;
        // map < string uuid, StructBinaryInfo>
        map<string, StructBinaryInfo> binaryMap;
-       time_t lastModTimeUUIDList;
        TABinaryManager();
-       bool readUUIDList();
        bool unpackBinary(const string &uuid, const string &path, StructBinaryInfo& info);
        template<typename T>
        std::string IntToHex(T i, int width = sizeof(T) * 2) {
@@ -75,7 +73,6 @@ private:
                stream << std::setfill('0') << std::setw(width) << std::hex << i;
                return stream.str();
        }
-       void checkUUIDUpdate();
        void decryptImage(StructBinaryInfo& info);
        string base64_decode(std::string const& encoded_string);
        bool is_base64(unsigned char c);
@@ -90,7 +87,6 @@ public:
         */
        pthread_mutex_t taLock;
        static TABinaryManager* getInstance();
-       bool initBinaryManager();
        bool initTAatPath(const string &path, const string &uuid);
 
        /*
index dc9de89..2d9e1dc 100644 (file)
@@ -69,21 +69,19 @@ int test_main() {
                                        // Test TA Binary Manager
                                case 4: {
                                        TABinaryManager *bm = TABinaryManager::getInstance();
-                                       if (bm->initBinaryManager()) {
-                                               std::cout << "[SIM_DAEMON] Binary Manager successfully initialized"
-                                                   << std::endl;
-                                               std::cout
-                                                   << "[SIM_DAEMON] Image Path of 0000-0000-0000-0000000000c7: "
-                                                   << bm->getImagePath("0000-0000-0000-0000000000c7") << std::endl;
-                                               std::cout
-                                                   << "[SIM_DAEMON] Image Path of 0000-0000-0000-0000001234d5: "
-                                                   << bm->getImagePath("0000-0000-0000-0000001234d5") << std::endl;
-                                               std::cout
-                                                   << "[SIM_DAEMON] Image Path of 0000-0000-0000-0000004567c8: "
-                                                   << bm->getImagePath("0000-0000-0000-0000004567c8") << std::endl;
-                                               bm->getManifest("0000-0000-0000-0000004567c8")->printProcessedData();
+                                       std::cout << "[SIM_DAEMON] Binary Manager successfully initialized"
+                                           << std::endl;
+                                       std::cout
+                                           << "[SIM_DAEMON] Image Path of 0000-0000-0000-0000000000c7: "
+                                           << bm->getImagePath("0000-0000-0000-0000000000c7") << std::endl;
+                                       std::cout
+                                           << "[SIM_DAEMON] Image Path of 0000-0000-0000-0000001234d5: "
+                                           << bm->getImagePath("0000-0000-0000-0000001234d5") << std::endl;
+                                       std::cout
+                                           << "[SIM_DAEMON] Image Path of 0000-0000-0000-0000004567c8: "
+                                           << bm->getImagePath("0000-0000-0000-0000004567c8") << std::endl;
+                                       bm->getManifest("0000-0000-0000-0000004567c8")->printProcessedData();
 
-                                       }
                                        break;
                                }
 
index b744b70..9b71174 100644 (file)
@@ -62,19 +62,9 @@ TAFactory* TAFactory::getInstance() {
 
        LOGD(SIM_DAEMON, "Entry");
        pthread_mutex_lock(&instLock);
-       bool result;
 
        // Check if the instance is not yet craeted
        if (NULL == instance) {
-               // Create a new instance of TA Binary Manager
-               TABinaryManager *TABin = TABinaryManager::getInstance();
-               // Initialize TA Binary Manager
-               result = TABin->initBinaryManager();
-               if (true != result) {
-                       LOGD(SIM_DAEMON, "initBinaryManager FAILED");
-                       pthread_mutex_unlock(&instLock);
-                       return instance;
-               }
                // Create a new instance of TA Factory
                instance = new TAFactory();
        }
diff --git a/simulatordaemon/src/scripts/update_uuid_list.sh b/simulatordaemon/src/scripts/update_uuid_list.sh
deleted file mode 100755 (executable)
index 940bf4f..0000000
+++ /dev/null
@@ -1,1203 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2015-2017 Samsung Electronics Co., Ltd All Rights Reserved
-#
-#    Licensed under the Apache License, Version 2.0 (the "License");
-#    you may not use this file except in compliance with the License.
-#    You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-#
-# @file
-# @author Krishna Raghottam Devale <k.devale@samsung.com>
-#
-# This script creates a uuidlist.list file and populates it with TA UUID packages names.
-# Ths file is populated based on the existing files in directory /tmp/tastore/
-# UUID pattern is: ....-....-....-............
-# This script should be executed once all the TA packages are transferred to /tmp/tastore
-
-
-#uuidfile="./tastore/uuidlist.list";
-uuidfile="/usr/lib/tastore/uuidlist.list";
-
-retval=""
-file="/tmp/fileLock"
-
-S=<<END
-f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAgIQECDQAAAB4xAAAAAAAADQAIAAIACgA
-JQAiAAYAAAA0AAAANIAECDSABAgAAQAAAAEAAAUAAAAEAAAAAwAAADQBAAA0gQQI
-NIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIoAgAAKAIAAAFAAAA
-ABAAAAEAAACgCAAAoJgECKCYBAg4AQAAQAEAAAYAAAAAEAAAAgAAALQIAAC0mAQI
-tJgECOgAAADoAAAABgAAAAQAAAAEAAAASAEAAEiBBAhIgQQIRAAAAEQAAAAEAAAA
-BAAAAFDldGScBwAAnIcECJyHBAg0AAAANAAAAAQAAAAEAAAAUeV0ZAAAAAAAAAAA
-AAAAAAAAAAAAAAAABgAAAAQAAAAvbGliL2xkLWxpbnV4LnNvLjIAAAQAAAAQAAAA
-AQAAAEdOVQAAAAAAAgAAAAYAAAAZAAAABAAAABQAAAADAAAAR05VAHrwVG/z4ZNY
-qrgWlL/85S9LsfKxAwAAAAsAAAAHAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
-AwAAAAIAAAAEAAAABgAAAAUAAAAIAAAACQAAAAAAAAAAAAAAAAAAAAAAAAB+AAAA
-AAAAAAAAAAASAAAAcQAAAAAAAAAAAAAAEgAAABsAAAAAAAAAAAAAACAAAAAqAAAA
-AAAAAAAAAAAgAAAAiQAAAAAAAAAAAAAAEgAAAGUAAAAAAAAAAAAAABIAAAB4AAAA
-AAAAAAAAAAASAAAAbAAAAAAAAAAAAAAAEgAAAIMAAAAAAAAAAAAAABIAAABgAAAA
-AAAAAAAAAAASAAAAAGxpYnJ0LnNvLjEAbGlic3RkYysrLnNvLjYAX19nbW9uX3N0
-YXJ0X18AX0p2X1JlZ2lzdGVyQ2xhc3NlcwBsaWJtLnNvLjYAbGliZ2NjX3Muc28u
-MQBsaWJjLnNvLjYAZXhpdABwZXJyb3IAcHV0cwBnZXRwaWQAY2xvc2UAb3BlbgBm
-Y250bABfX2xpYmNfc3RhcnRfbWFpbgBHTElCQ18yLjAAAAAAAgACAAAAAAACAAIA
-AgACAAIAAgABAAEAVgAAABAAAAAAAAAAEGlpDQAAAgCbAAAAAAAAAJyZBAgGAwAA
-rJkECAcBAACwmQQIBwIAALSZBAgHAwAAuJkECAcFAAC8mQQIBwYAAMCZBAgHBwAA
-xJkECAcIAADImQQIBwkAAMyZBAgHCgAAU4PsCOgAAAAAW4HD7xUAAIuD/P///4XA
-dAXoSQAAAOhEAQAA6D8DAACDxAhbwwAAAAAAAAAAAAD/NaSZBAj/JaiZBAgAAAAA
-/yWsmQQIaAAAAADp4P////8lsJkECGgIAAAA6dD/////JbSZBAhoEAAAAOnA////
-/yW4mQQIaBgAAADpsP////8lvJkECGggAAAA6aD/////JcCZBAhoKAAAAOmQ////
-/yXEmQQIaDAAAADpgP////8lyJkECGg4AAAA6XD/////JcyZBAhoQAAAAOlg////
-Me1eieGD5PBQVFJoAIcECGiQhgQIUVZoNIUECOh/////9JCQkJCQkJCQkJCQkJCQ
-VYnlU4PsBIA92JkECAB1P6HcmQQIu6yYBAiB66iYBAjB+wKD6wE52HMejbYAAAAA
-g8ABo9yZBAj/FIWomAQIodyZBAg52HLoxgXYmQQIAYPEBFtdw410JgCNvCcAAAAA
-VYnlg+wYobCYBAiFwHQSuAAAAACFwHQJxwQksJgECP/QycOQVYnlV1aD5PCD7DBm
-x0QkHAEAZsdEJB4AAMdEJCAAAAAAx0QkJAAAAADHRCQoAAAAAOiW/v//iUQkKIN9
-CAJ0GMcEJGCHBAjo0P7//8cEJAEAAADo5P7//8dEJAQCAAAAxwQkcYcECOhQ/v//
-iUQkLIN8JCz/D5TAhMB0GMcEJIyHBAjodP7//8cEJAEAAADoqP7//4tFDIPABIsA
-icK4kYcECLkCAAAAidaJx/OmD5fCD5LAidEowYnID77AhcB1Po1EJByJRCQIx0Qk
-BAcAAACLRCQsiQQk6E/+//+D+P8PlMCEwHRdxwQkk4cECOgJ/v//xwQkAQAAAOg9
-/v//ZsdEJBwCAI1EJByJRCQIx0QkBAYAAACLRCQsiQQk6Ar+//+D+P8PlMCEwHQY
-xwQkk4cECOjE/f//xwQkAQAAAOj4/f//i0QkLIkEJOi8/f//uAAAAACNZfheX13D
-VVdWU+hpAAAAgcMHEwAAg+wci2wkMI27AP///+j3/P//jYMA////KcfB/wKF/3Qp
-MfaNtgAAAACLRCQ4iSwkiUQkCItEJDSJRCQE/5SzAP///4PGATn+dd+DxBxbXl9d
-w+sNkJCQkJCQkJCQkJCQkPPDixwkw5CQkJCQkJCQkJBVieVTg+wEoaCYBAiD+P90
-E7ugmAQIZpCD6wT/0IsDg/j/dfSDxARbXcOQkFOD7AjoAAAAAFuBw1sSAADoX/3/
-/4PECFvDAAADAAAAAQACAEludmFsaWQgYXJndW1lbnQAL3RtcC90YXN0b3JlL3V1
-aWRsaXN0Lmxpc3QAb3BlbgAwAGZjbnRsAAAAAAEbAzswAAAABQAAAET8//9MAAAA
-mP3//3AAAAD0/v//nAAAAGT////YAAAAZv///+wAAAAUAAAAAAAAAAF6UgABfAgB
-GwwEBIgBAAAgAAAAHAAAAPD7//+gAAAAAA4IRg4MSg8LdAR4AD8aOyoyJCIoAAAA
-QAAAACD9//9cAQAAAEEOCIUCQg0FboYEhwMDKAHGQcdBDAQExQAAADgAAABsAAAA
-UP7//2EAAAAAQQ4IhQJBDgyHA0EOEIYEQQ4UgwVODjACSg4UQQ4Qw0EODMZBDgjH
-QQ4ExRAAAACoAAAAhP7//wIAAAAAAAAAEAAAALwAAABy/v//BAAAAAAAAAAAAAAA
-/////wAAAAD/////AAAAAAAAAAABAAAAAQAAAAEAAAAMAAAAAQAAAD4AAAABAAAA
-SAAAAAEAAABWAAAADAAAAKiDBAgNAAAAPIcECAQAAACMgQQIBQAAAHyCBAgGAAAA
-zIEECAoAAAClAAAACwAAABAAAAAVAAAAAAAAAAMAAACgmQQIAgAAAEgAAAAUAAAA
-EQAAABcAAABggwQIEQAAAFiDBAgSAAAACAAAABMAAAAIAAAA/v//bziDBAj///9v
-AQAAAPD//28igwQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAALSYBAgAAAAAAAAAAPaDBAgGhAQIFoQECCaEBAg2hAQI
-RoQECFaEBAhmhAQIdoQECAAAAAAAAAAAR0NDOiAoTGluYXJvIEdDQyA0LjYtMjAx
-My4wNSkgNC42LjQAHAAAAAIAAAAAAAQAAAAAADSFBAhcAQAAAAAAAAAAAABFAQAA
-AgAAAAAABAGeAAAABA4AAABNAAAANIUECJCGBAgAAAAAAAAAAAIEB0AAAAACAQiH
-AAAAAgIHuwAAAAIEBzsAAAACAQaJAAAAAgIFrAAAAAMEBWludAACCAUAAAAAAggH
-NgAAAAQuAAAAAo1zAAAAAgQFBQAAAATiAAAAAo9TAAAABQSLAAAAAgEGkAAAAAbc
-AAAAEAOY5QAAAAciAAAAA5pMAAAAAiMAB5UAAAADm0wAAAACIwIHzgAAAAOdaAAA
-AAIjBAfWAAAAA55oAAAAAiMIB4EAAAADo3oAAAACIwwACAEpAAAAAQhTAAAANIUE
-CJCGBAgAAAAAQgEAAAm2AAAAAQhTAAAAApEACeoAAAABCEIBAAACkQQKP4UECImG
-BAgLZmwAAQqSAAAAAnQcC2ZkAAELUwAAAAJ0LAAABQSFAAAAAAERASUOEwsDDhsO
-EQESARAGQwYAAAIkAAsLPgsDDgAAAyQACws+CwMIAAAEFgADDjoLOwtJEwAABQ8A
-CwtJEwAABhMBAw4LCzoLOwsBEwAABw0AAw46CzsLSRM4CgAACC4BPwwDDjoLOwtJ
-ExEBEgFABgETAAAJBQADDjoLOwtJEwIKAAAKCwERARIBAAALNAADCDoLOwtJEwIK
-AAAAVAUAAAIAJAUAAAEB+w4NAAEBAQEAAAABAAABLi4vc3JjAEQ6XHNhbXN1bmct
-dHYtc2RrXHBsYXRmb3Jtc1xyb290c3RyYXBzXG1vYmlsZS0yLjMtZW11bGF0b3Iu
-Y29yZS91c3IvaW5jbHVkZS9iaXRzAEQ6XHNhbXN1bmctdHYtc2RrXHBsYXRmb3Jt
-c1xyb290c3RyYXBzXG1vYmlsZS0yLjMtZW11bGF0b3IuY29yZS91c3IvaW5jbHVk
-ZQBEOlxzYW1zdW5nLXR2LXNka1xwbGF0Zm9ybXNccm9vdHN0cmFwc1xtb2JpbGUt
-Mi4zLWVtdWxhdG9yLmNvcmUvdXNyL2luY2x1ZGUvc3lzAEQ6XHNhbXN1bmctdHYt
-c2RrXHBsYXRmb3Jtc1xyb290c3RyYXBzXG1vYmlsZS0yLjMtZW11bGF0b3IuY29y
-ZS91c3IvaW5jbHVkZS9nbnUAZDpcc2Ftc3VuZy10di1zZGtcdG9vbHNcaTM4Ni1s
-aW51eC1nbnVlYWJpLWdjYy00LjZcYmluXC4uL2xpYi9nY2MvaTM4Ni1saW51eC1n
-bnVlYWJpLzQuNi40L2luY2x1ZGUARDpcc2Ftc3VuZy10di1zZGtccGxhdGZvcm1z
-XHJvb3RzdHJhcHNcbW9iaWxlLTIuMy1lbXVsYXRvci5jb3JlL3Vzci9pbmNsdWRl
-L2xpbnV4AEQ6XHNhbXN1bmctdHYtc2RrXHBsYXRmb3Jtc1xyb290c3RyYXBzXG1v
-YmlsZS0yLjMtZW11bGF0b3IuY29yZS91c3IvaW5jbHVkZS9hc20ARDpcc2Ftc3Vu
-Zy10di1zZGtccGxhdGZvcm1zXHJvb3RzdHJhcHNcbW9iaWxlLTIuMy1lbXVsYXRv
-ci5jb3JlL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljAABmaWxlTG9jay5jcHAAAQAA
-dHlwZXMuaAACAABmY250bC5oAAIAAHN0ZGlvLmgAAwAAZmVhdHVyZXMuaAADAABw
-cmVkZWZzLmgAAgAAY2RlZnMuaAAEAAB3b3Jkc2l6ZS5oAAIAAHN0dWJzLmgABQAA
-c3R1YnMtMzIuaAAFAABzdGRkZWYuaAAGAAB0eXBlc2l6ZXMuaAACAABsaWJpby5o
-AAMAAF9HX2NvbmZpZy5oAAMAAHdjaGFyLmgAAwAAc3RkYXJnLmgABgAAc3RkaW9f
-bGltLmgAAgAAc3lzX2Vycmxpc3QuaAACAABzdGRsaWIuaAADAAB3YWl0ZmxhZ3Mu
-aAACAAB3YWl0c3RhdHVzLmgAAgAAZW5kaWFuLmgAAwAAZW5kaWFuLmgAAgAAYnl0
-ZXN3YXAuaAACAAB4bG9jYWxlLmgAAwAAdHlwZXMuaAAEAAB0aW1lLmgAAwAAc2Vs
-ZWN0LmgABAAAc2VsZWN0LmgAAgAAc2lnc2V0LmgAAgAAdGltZS5oAAIAAHN5c21h
-Y3Jvcy5oAAQAAHB0aHJlYWR0eXBlcy5oAAIAAGFsbG9jYS5oAAMAAGVycm5vLmgA
-AwAAZXJybm8uaAACAABlcnJuby5oAAcAAGVycm5vLmgACAAAZXJybm8uaAAJAABl
-cnJuby1iYXNlLmgACQAAZmNudGwuaAADAAB1aW8uaAACAABzdGF0LmgAAgAAdW5p
-c3RkLmgAAwAAcG9zaXhfb3B0LmgAAgAAZW52aXJvbm1lbnRzLmgAAgAAY29uZm5h
-bWUuaAACAABnZXRvcHQuaAADAABzdHJpbmcuaAADAAAAAAUCNIUECBmuAiYVkme7
-vQIkE7u9Ai0TAiYTu752AiYTu728WQIHAAEBbG9uZyBsb25nIGludAAuLi9zcmMv
-ZmlsZUxvY2suY3BwAGxfdHlwZQBtYWluAF9fb2ZmX3QAbG9uZyBsb25nIHVuc2ln
-bmVkIGludABDOlxVc2Vyc1xjaGVyeWwuYlx3b3Jrc3BhY2VTaW11bGF0b3JcZmls
-ZUxvY2tcRGVidWcAbF9waWQAdW5zaWduZWQgY2hhcgBsX3doZW5jZQBHTlUgQysr
-IDQuNi40AHNob3J0IGludABhcmdjAHNob3J0IHVuc2lnbmVkIGludABsX3N0YXJ0
-AGxfbGVuAGZsb2NrAF9fcGlkX3QAYXJndgAAAAAAAQAAAAIAdAQBAAAAAwAAAAIA
-dAgDAAAAWwEAAAIAdQhbAQAAXAEAAAIAdAQAAAAAAAAAAAEAX19TVERDX18gMQAB
-AF9fY3BsdXNwbHVzIDEAAQBfX1NURENfSE9TVEVEX18gMQABAF9fR05VQ19fIDQA
-AQBfX0dOVUNfTUlOT1JfXyA2AAEAX19HTlVDX1BBVENITEVWRUxfXyA0AAEAX19W
-RVJTSU9OX18gIjQuNi40IgABAF9fRklOSVRFX01BVEhfT05MWV9fIDAAAQBfX1NJ
-WkVPRl9JTlRfXyA0AAEAX19TSVpFT0ZfTE9OR19fIDQAAQBfX1NJWkVPRl9MT05H
-X0xPTkdfXyA4AAEAX19TSVpFT0ZfU0hPUlRfXyAyAAEAX19TSVpFT0ZfRkxPQVRf
-XyA0AAEAX19TSVpFT0ZfRE9VQkxFX18gOAABAF9fU0laRU9GX0xPTkdfRE9VQkxF
-X18gMTIAAQBfX1NJWkVPRl9TSVpFX1RfXyA0AAEAX19DSEFSX0JJVF9fIDgAAQBf
-X0JJR0dFU1RfQUxJR05NRU5UX18gMTYAAQBfX09SREVSX0xJVFRMRV9FTkRJQU5f
-XyAxMjM0AAEAX19PUkRFUl9CSUdfRU5ESUFOX18gNDMyMQABAF9fT1JERVJfUERQ
-X0VORElBTl9fIDM0MTIAAQBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9F
-TkRJQU5fXwABAF9fRkxPQVRfV09SRF9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VO
-RElBTl9fAAEAX19TSVpFT0ZfUE9JTlRFUl9fIDQAAQBfX0dOVUdfXyA0AAEAX19T
-SVpFX1RZUEVfXyB1bnNpZ25lZCBpbnQAAQBfX1BUUkRJRkZfVFlQRV9fIGludAAB
-AF9fV0NIQVJfVFlQRV9fIGxvbmcgaW50AAEAX19XSU5UX1RZUEVfXyB1bnNpZ25l
-ZCBpbnQAAQBfX0lOVE1BWF9UWVBFX18gbG9uZyBsb25nIGludAABAF9fVUlOVE1B
-WF9UWVBFX18gbG9uZyBsb25nIHVuc2lnbmVkIGludAABAF9fQ0hBUjE2X1RZUEVf
-XyBzaG9ydCB1bnNpZ25lZCBpbnQAAQBfX0NIQVIzMl9UWVBFX18gdW5zaWduZWQg
-aW50AAEAX19TSUdfQVRPTUlDX1RZUEVfXyBpbnQAAQBfX0lOVDhfVFlQRV9fIHNp
-Z25lZCBjaGFyAAEAX19JTlQxNl9UWVBFX18gc2hvcnQgaW50AAEAX19JTlQzMl9U
-WVBFX18gaW50AAEAX19JTlQ2NF9UWVBFX18gbG9uZyBsb25nIGludAABAF9fVUlO
-VDhfVFlQRV9fIHVuc2lnbmVkIGNoYXIAAQBfX1VJTlQxNl9UWVBFX18gc2hvcnQg
-dW5zaWduZWQgaW50AAEAX19VSU5UMzJfVFlQRV9fIHVuc2lnbmVkIGludAABAF9f
-VUlOVDY0X1RZUEVfXyBsb25nIGxvbmcgdW5zaWduZWQgaW50AAEAX19JTlRfTEVB
-U1Q4X1RZUEVfXyBzaWduZWQgY2hhcgABAF9fSU5UX0xFQVNUMTZfVFlQRV9fIHNo
-b3J0IGludAABAF9fSU5UX0xFQVNUMzJfVFlQRV9fIGludAABAF9fSU5UX0xFQVNU
-NjRfVFlQRV9fIGxvbmcgbG9uZyBpbnQAAQBfX1VJTlRfTEVBU1Q4X1RZUEVfXyB1
-bnNpZ25lZCBjaGFyAAEAX19VSU5UX0xFQVNUMTZfVFlQRV9fIHNob3J0IHVuc2ln
-bmVkIGludAABAF9fVUlOVF9MRUFTVDMyX1RZUEVfXyB1bnNpZ25lZCBpbnQAAQBf
-X1VJTlRfTEVBU1Q2NF9UWVBFX18gbG9uZyBsb25nIHVuc2lnbmVkIGludAABAF9f
-SU5UX0ZBU1Q4X1RZUEVfXyBzaWduZWQgY2hhcgABAF9fSU5UX0ZBU1QxNl9UWVBF
-X18gaW50AAEAX19JTlRfRkFTVDMyX1RZUEVfXyBpbnQAAQBfX0lOVF9GQVNUNjRf
-VFlQRV9fIGxvbmcgbG9uZyBpbnQAAQBfX1VJTlRfRkFTVDhfVFlQRV9fIHVuc2ln
-bmVkIGNoYXIAAQBfX1VJTlRfRkFTVDE2X1RZUEVfXyB1bnNpZ25lZCBpbnQAAQBf
-X1VJTlRfRkFTVDMyX1RZUEVfXyB1bnNpZ25lZCBpbnQAAQBfX1VJTlRfRkFTVDY0
-X1RZUEVfXyBsb25nIGxvbmcgdW5zaWduZWQgaW50AAEAX19JTlRQVFJfVFlQRV9f
-IGludAABAF9fVUlOVFBUUl9UWVBFX18gdW5zaWduZWQgaW50AAEAX19HWFhfV0VB
-S19fIDEAAQBfX0RFUFJFQ0FURUQgMQABAF9fR1hYX1JUVEkgMQABAF9fRVhDRVBU
-SU9OUyAxAAEAX19HWFhfQUJJX1ZFUlNJT04gMTAwMgABAF9fU0NIQVJfTUFYX18g
-MTI3AAEAX19TSFJUX01BWF9fIDMyNzY3AAEAX19JTlRfTUFYX18gMjE0NzQ4MzY0
-NwABAF9fTE9OR19NQVhfXyAyMTQ3NDgzNjQ3TAABAF9fTE9OR19MT05HX01BWF9f
-IDkyMjMzNzIwMzY4NTQ3NzU4MDdMTAABAF9fV0NIQVJfTUFYX18gMjE0NzQ4MzY0
-N0wAAQBfX1dDSEFSX01JTl9fICgtX19XQ0hBUl9NQVhfXyAtIDEpAAEAX19XSU5U
-X01BWF9fIDQyOTQ5NjcyOTVVAAEAX19XSU5UX01JTl9fIDBVAAEAX19QVFJESUZG
-X01BWF9fIDIxNDc0ODM2NDcAAQBfX1NJWkVfTUFYX18gNDI5NDk2NzI5NVUAAQBf
-X0lOVE1BWF9NQVhfXyA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwAAQBfX0lOVE1BWF9D
-KGMpIGMgIyMgTEwAAQBfX1VJTlRNQVhfTUFYX18gMTg0NDY3NDQwNzM3MDk1NTE2
-MTVVTEwAAQBfX1VJTlRNQVhfQyhjKSBjICMjIFVMTAABAF9fU0lHX0FUT01JQ19N
-QVhfXyAyMTQ3NDgzNjQ3AAEAX19TSUdfQVRPTUlDX01JTl9fICgtX19TSUdfQVRP
-TUlDX01BWF9fIC0gMSkAAQBfX0lOVDhfTUFYX18gMTI3AAEAX19JTlQxNl9NQVhf
-XyAzMjc2NwABAF9fSU5UMzJfTUFYX18gMjE0NzQ4MzY0NwABAF9fSU5UNjRfTUFY
-X18gOTIyMzM3MjAzNjg1NDc3NTgwN0xMAAEAX19VSU5UOF9NQVhfXyAyNTUAAQBf
-X1VJTlQxNl9NQVhfXyA2NTUzNQABAF9fVUlOVDMyX01BWF9fIDQyOTQ5NjcyOTVV
-AAEAX19VSU5UNjRfTUFYX18gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwAAQBfX0lO
-VF9MRUFTVDhfTUFYX18gMTI3AAEAX19JTlQ4X0MoYykgYwABAF9fSU5UX0xFQVNU
-MTZfTUFYX18gMzI3NjcAAQBfX0lOVDE2X0MoYykgYwABAF9fSU5UX0xFQVNUMzJf
-TUFYX18gMjE0NzQ4MzY0NwABAF9fSU5UMzJfQyhjKSBjAAEAX19JTlRfTEVBU1Q2
-NF9NQVhfXyA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwAAQBfX0lOVDY0X0MoYykgYyAj
-IyBMTAABAF9fVUlOVF9MRUFTVDhfTUFYX18gMjU1AAEAX19VSU5UOF9DKGMpIGMA
-AQBfX1VJTlRfTEVBU1QxNl9NQVhfXyA2NTUzNQABAF9fVUlOVDE2X0MoYykgYwAB
-AF9fVUlOVF9MRUFTVDMyX01BWF9fIDQyOTQ5NjcyOTVVAAEAX19VSU5UMzJfQyhj
-KSBjICMjIFUAAQBfX1VJTlRfTEVBU1Q2NF9NQVhfXyAxODQ0Njc0NDA3MzcwOTU1
-MTYxNVVMTAABAF9fVUlOVDY0X0MoYykgYyAjIyBVTEwAAQBfX0lOVF9GQVNUOF9N
-QVhfXyAxMjcAAQBfX0lOVF9GQVNUMTZfTUFYX18gMjE0NzQ4MzY0NwABAF9fSU5U
-X0ZBU1QzMl9NQVhfXyAyMTQ3NDgzNjQ3AAEAX19JTlRfRkFTVDY0X01BWF9fIDky
-MjMzNzIwMzY4NTQ3NzU4MDdMTAABAF9fVUlOVF9GQVNUOF9NQVhfXyAyNTUAAQBf
-X1VJTlRfRkFTVDE2X01BWF9fIDQyOTQ5NjcyOTVVAAEAX19VSU5UX0ZBU1QzMl9N
-QVhfXyA0Mjk0OTY3Mjk1VQABAF9fVUlOVF9GQVNUNjRfTUFYX18gMTg0NDY3NDQw
-NzM3MDk1NTE2MTVVTEwAAQBfX0lOVFBUUl9NQVhfXyAyMTQ3NDgzNjQ3AAEAX19V
-SU5UUFRSX01BWF9fIDQyOTQ5NjcyOTVVAAEAX19GTFRfRVZBTF9NRVRIT0RfXyAy
-AAEAX19ERUNfRVZBTF9NRVRIT0RfXyAyAAEAX19GTFRfUkFESVhfXyAyAAEAX19G
-TFRfTUFOVF9ESUdfXyAyNAABAF9fRkxUX0RJR19fIDYAAQBfX0ZMVF9NSU5fRVhQ
-X18gKC0xMjUpAAEAX19GTFRfTUlOXzEwX0VYUF9fICgtMzcpAAEAX19GTFRfTUFY
-X0VYUF9fIDEyOAABAF9fRkxUX01BWF8xMF9FWFBfXyAzOAABAF9fRkxUX0RFQ0lN
-QUxfRElHX18gOQABAF9fRkxUX01BWF9fIDMuNDAyODIzNDY2Mzg1Mjg4NTk4MTJl
-KzM4RgABAF9fRkxUX01JTl9fIDEuMTc1NDk0MzUwODIyMjg3NTA3OTdlLTM4RgAB
-AF9fRkxUX0VQU0lMT05fXyAxLjE5MjA5Mjg5NTUwNzgxMjUwMDAwZS03RgABAF9f
-RkxUX0RFTk9STV9NSU5fXyAxLjQwMTI5ODQ2NDMyNDgxNzA3MDkyZS00NUYAAQBf
-X0ZMVF9IQVNfREVOT1JNX18gMQABAF9fRkxUX0hBU19JTkZJTklUWV9fIDEAAQBf
-X0ZMVF9IQVNfUVVJRVRfTkFOX18gMQABAF9fREJMX01BTlRfRElHX18gNTMAAQBf
-X0RCTF9ESUdfXyAxNQABAF9fREJMX01JTl9FWFBfXyAoLTEwMjEpAAEAX19EQkxf
-TUlOXzEwX0VYUF9fICgtMzA3KQABAF9fREJMX01BWF9FWFBfXyAxMDI0AAEAX19E
-QkxfTUFYXzEwX0VYUF9fIDMwOAABAF9fREJMX0RFQ0lNQUxfRElHX18gMTcAAQBf
-X0RCTF9NQVhfXyBkb3VibGUoMS43OTc2OTMxMzQ4NjIzMTU3MDgxNWUrMzA4TCkA
-AQBfX0RCTF9NSU5fXyBkb3VibGUoMi4yMjUwNzM4NTg1MDcyMDEzODMwOWUtMzA4
-TCkAAQBfX0RCTF9FUFNJTE9OX18gZG91YmxlKDIuMjIwNDQ2MDQ5MjUwMzEzMDgw
-ODVlLTE2TCkAAQBfX0RCTF9ERU5PUk1fTUlOX18gZG91YmxlKDQuOTQwNjU2NDU4
-NDEyNDY1NDQxNzdlLTMyNEwpAAEAX19EQkxfSEFTX0RFTk9STV9fIDEAAQBfX0RC
-TF9IQVNfSU5GSU5JVFlfXyAxAAEAX19EQkxfSEFTX1FVSUVUX05BTl9fIDEAAQBf
-X0xEQkxfTUFOVF9ESUdfXyA2NAABAF9fTERCTF9ESUdfXyAxOAABAF9fTERCTF9N
-SU5fRVhQX18gKC0xNjM4MSkAAQBfX0xEQkxfTUlOXzEwX0VYUF9fICgtNDkzMSkA
-AQBfX0xEQkxfTUFYX0VYUF9fIDE2Mzg0AAEAX19MREJMX01BWF8xMF9FWFBfXyA0
-OTMyAAEAX19ERUNJTUFMX0RJR19fIDIxAAEAX19MREJMX01BWF9fIDEuMTg5NzMx
-NDk1MzU3MjMxNzY1MDJlKzQ5MzJMAAEAX19MREJMX01JTl9fIDMuMzYyMTAzMTQz
-MTEyMDkzNTA2MjZlLTQ5MzJMAAEAX19MREJMX0VQU0lMT05fXyAxLjA4NDIwMjE3
-MjQ4NTUwNDQzNDAxZS0xOUwAAQBfX0xEQkxfREVOT1JNX01JTl9fIDMuNjQ1MTk5
-NTMxODgyNDc0NjAyNTNlLTQ5NTFMAAEAX19MREJMX0hBU19ERU5PUk1fXyAxAAEA
-X19MREJMX0hBU19JTkZJTklUWV9fIDEAAQBfX0xEQkxfSEFTX1FVSUVUX05BTl9f
-IDEAAQBfX0RFQzMyX01BTlRfRElHX18gNwABAF9fREVDMzJfTUlOX0VYUF9fICgt
-OTQpAAEAX19ERUMzMl9NQVhfRVhQX18gOTcAAQBfX0RFQzMyX01JTl9fIDFFLTk1
-REYAAQBfX0RFQzMyX01BWF9fIDkuOTk5OTk5RTk2REYAAQBfX0RFQzMyX0VQU0lM
-T05fXyAxRS02REYAAQBfX0RFQzMyX1NVQk5PUk1BTF9NSU5fXyAwLjAwMDAwMUUt
-OTVERgABAF9fREVDNjRfTUFOVF9ESUdfXyAxNgABAF9fREVDNjRfTUlOX0VYUF9f
-ICgtMzgyKQABAF9fREVDNjRfTUFYX0VYUF9fIDM4NQABAF9fREVDNjRfTUlOX18g
-MUUtMzgzREQAAQBfX0RFQzY0X01BWF9fIDkuOTk5OTk5OTk5OTk5OTk5RTM4NERE
-AAEAX19ERUM2NF9FUFNJTE9OX18gMUUtMTVERAABAF9fREVDNjRfU1VCTk9STUFM
-X01JTl9fIDAuMDAwMDAwMDAwMDAwMDAxRS0zODNERAABAF9fREVDMTI4X01BTlRf
-RElHX18gMzQAAQBfX0RFQzEyOF9NSU5fRVhQX18gKC02MTQyKQABAF9fREVDMTI4
-X01BWF9FWFBfXyA2MTQ1AAEAX19ERUMxMjhfTUlOX18gMUUtNjE0M0RMAAEAX19E
-RUMxMjhfTUFYX18gOS45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTlF
-NjE0NERMAAEAX19ERUMxMjhfRVBTSUxPTl9fIDFFLTMzREwAAQBfX0RFQzEyOF9T
-VUJOT1JNQUxfTUlOX18gMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
-MDFFLTYxNDNETAABAF9fUkVHSVNURVJfUFJFRklYX18gAAEAX19VU0VSX0xBQkVM
-X1BSRUZJWF9fIAABAF9fR05VQ19HTlVfSU5MSU5FX18gMQABAF9fTk9fSU5MSU5F
-X18gMQABAF9fR0NDX0hBVkVfRFdBUkYyX0NGSV9BU00gMQABAF9fUFJBR01BX1JF
-REVGSU5FX0VYVE5BTUUgMQABAF9fU0laRU9GX1dDSEFSX1RfXyA0AAEAX19TSVpF
-T0ZfV0lOVF9UX18gNAABAF9fU0laRU9GX1BUUkRJRkZfVF9fIDQAAQBfX2kzODYg
-MQABAF9faTM4Nl9fIDEAAQBpMzg2IDEAAQBfX2dudV9saW51eF9fIDEAAQBfX2xp
-bnV4IDEAAQBfX2xpbnV4X18gMQABAGxpbnV4IDEAAQBfX3VuaXggMQABAF9fdW5p
-eF9fIDEAAQB1bml4IDEAAQBfX0VMRl9fIDEAAQBfX0RFQ0lNQUxfQklEX0ZPUk1B
-VF9fIDEAAQBfR05VX1NPVVJDRSAxAAMAAQMBBAEbX1NURElPX0ggMQADHAUBFV9G
-RUFUVVJFU19IIDEAAmFfX1VTRV9JU09DOTkAAmJfX1VTRV9JU09DOTUAAmNfX1VT
-RV9QT1NJWAACZF9fVVNFX1BPU0lYMgACZV9fVVNFX1BPU0lYMTk5MzA5AAJmX19V
-U0VfUE9TSVgxOTk1MDYAAmdfX1VTRV9YT1BFTgACaF9fVVNFX1hPUEVOX0VYVEVO
-REVEAAJpX19VU0VfVU5JWDk4AAJqX19VU0VfWE9QRU4ySwACa19fVVNFX1hPUEVO
-MktYU0kAAmxfX1VTRV9YT1BFTjJLOAACbV9fVVNFX1hPUEVOMks4WFNJAAJuX19V
-U0VfTEFSR0VGSUxFAAJvX19VU0VfTEFSR0VGSUxFNjQAAnBfX1VTRV9GSUxFX09G
-RlNFVDY0AAJxX19VU0VfQlNEAAJyX19VU0VfU1ZJRAACc19fVVNFX01JU0MAAnRf
-X1VTRV9BVEZJTEUAAnVfX1VTRV9HTlUAAnZfX1VTRV9SRUVOVFJBTlQAAndfX1VT
-RV9GT1JUSUZZX0xFVkVMAAJ4X19GQVZPUl9CU0QAAnlfX0tFUk5FTF9TVFJJQ1Rf
-TkFNRVMAAX5fX0tFUk5FTF9TVFJJQ1RfTkFNRVMgAAGCAV9fVVNFX0FOU0kgMQAB
-jAFfX0dOVUNfUFJFUkVRKG1haixtaW4pICgoX19HTlVDX18gPDwgMTYpICsgX19H
-TlVDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQACnAFfSVNPQzk1
-X1NPVVJDRQABnQFfSVNPQzk1X1NPVVJDRSAxAAKeAV9JU09DOTlfU09VUkNFAAGf
-AV9JU09DOTlfU09VUkNFIDEAAqABX1BPU0lYX1NPVVJDRQABoQFfUE9TSVhfU09V
-UkNFIDEAAqIBX1BPU0lYX0NfU09VUkNFAAGjAV9QT1NJWF9DX1NPVVJDRSAyMDA4
-MDlMAAKkAV9YT1BFTl9TT1VSQ0UAAaUBX1hPUEVOX1NPVVJDRSA3MDAAAqYBX1hP
-UEVOX1NPVVJDRV9FWFRFTkRFRAABpwFfWE9QRU5fU09VUkNFX0VYVEVOREVEIDEA
-AqgBX0xBUkdFRklMRTY0X1NPVVJDRQABqQFfTEFSR0VGSUxFNjRfU09VUkNFIDEA
-AqoBX0JTRF9TT1VSQ0UAAasBX0JTRF9TT1VSQ0UgMQACrAFfU1ZJRF9TT1VSQ0UA
-Aa0BX1NWSURfU09VUkNFIDEAAq4BX0FURklMRV9TT1VSQ0UAAa8BX0FURklMRV9T
-T1VSQ0UgMQABwQFfX1VTRV9JU09DOTkgMQABxwFfX1VTRV9JU09DOTUgMQAB3AFf
-X1VTRV9QT1NJWCAxAAHgAV9fVVNFX1BPU0lYMiAxAAHkAV9fVVNFX1BPU0lYMTk5
-MzA5IDEAAegBX19VU0VfUE9TSVgxOTk1MDYgMQAB7AFfX1VTRV9YT1BFTjJLIDEA
-Au0BX19VU0VfSVNPQzk1AAHuAV9fVVNFX0lTT0M5NSAxAALvAV9fVVNFX0lTT0M5
-OQAB8AFfX1VTRV9JU09DOTkgMQAB9AFfX1VTRV9YT1BFTjJLOCAxAAL1AV9BVEZJ
-TEVfU09VUkNFAAH2AV9BVEZJTEVfU09VUkNFIDEAAfoBX19VU0VfWE9QRU4gMQAB
-/AFfX1VTRV9YT1BFTl9FWFRFTkRFRCAxAAH9AV9fVVNFX1VOSVg5OCAxAAL+AV9M
-QVJHRUZJTEVfU09VUkNFAAH/AV9MQVJHRUZJTEVfU09VUkNFIDEAAYICX19VU0Vf
-WE9QRU4ySzggMQABgwJfX1VTRV9YT1BFTjJLOFhTSSAxAAGFAl9fVVNFX1hPUEVO
-MksgMQABhgJfX1VTRV9YT1BFTjJLWFNJIDEAAocCX19VU0VfSVNPQzk1AAGIAl9f
-VVNFX0lTT0M5NSAxAAKJAl9fVVNFX0lTT0M5OQABigJfX1VTRV9JU09DOTkgMQAB
-lAJfX1VTRV9MQVJHRUZJTEUgMQABmAJfX1VTRV9MQVJHRUZJTEU2NCAxAAGgAl9f
-VVNFX01JU0MgMQABpAJfX1VTRV9CU0QgMQABqAJfX1VTRV9TVklEIDEAAawCX19V
-U0VfQVRGSUxFIDEAAbACX19VU0VfR05VIDEAAb8CX19VU0VfRk9SVElGWV9MRVZF
-TCAwAAPDAgYBGF9QUkVERUZTX0ggAAEbX19TVERDX0lFQ181NTlfXyAxAAEcX19T
-VERDX0lFQ181NTlfQ09NUExFWF9fIDEABAHGAl9fU1REQ19JU09fMTA2NDZfXyAy
-MDAwMDlMAALOAl9fR05VX0xJQlJBUllfXwABzwJfX0dOVV9MSUJSQVJZX18gNgAB
-0wJfX0dMSUJDX18gMgAB1AJfX0dMSUJDX01JTk9SX18gMTMAAdYCX19HTElCQ19Q
-UkVSRVEobWFqLG1pbikgKChfX0dMSUJDX18gPDwgMTYpICsgX19HTElCQ19NSU5P
-Ul9fID49ICgobWFqKSA8PCAxNikgKyAobWluKSkAAd4CX19HTElCQ19IQVZFX0xP
-TkdfTE9ORyAxAAPkAgcBFV9TWVNfQ0RFRlNfSCAxAAIkX19QAAIlX19QTVQAATNf
-X1RIUk9XIHRocm93ICgpAAE0X19OVEgoZmN0KSBmY3QgdGhyb3cgKCkAAUpfX1Ao
-YXJncykgYXJncwABS19fUE1UKGFyZ3MpIGFyZ3MAAVBfX0NPTkNBVCh4LHkpIHgg
-IyMgeQABUV9fU1RSSU5HKHgpICN4AAFUX19wdHJfdCB2b2lkICoAAVVfX2xvbmdf
-ZG91YmxlX3QgbG9uZyBkb3VibGUAAVpfX0JFR0lOX0RFQ0xTIGV4dGVybiAiQyIg
-ewABW19fRU5EX0RFQ0xTIH0AAXJfX0JFR0lOX05BTUVTUEFDRV9TVEQgAAFzX19F
-TkRfTkFNRVNQQUNFX1NURCAAAXRfX1VTSU5HX05BTUVTUEFDRV9TVEQobmFtZSkg
-AAF1X19CRUdJTl9OQU1FU1BBQ0VfQzk5IAABdl9fRU5EX05BTUVTUEFDRV9DOTkg
-AAF3X19VU0lOR19OQU1FU1BBQ0VfQzk5KG5hbWUpIAABfV9fYm91bmRlZCAAAX5f
-X3VuYm91bmRlZCAAAX9fX3B0cnZhbHVlIAABhAFfX2JvcyhwdHIpIF9fYnVpbHRp
-bl9vYmplY3Rfc2l6ZSAocHRyLCBfX1VTRV9GT1JUSUZZX0xFVkVMID4gMSkAAYUB
-X19ib3MwKHB0cikgX19idWlsdGluX29iamVjdF9zaXplIChwdHIsIDApAAGIAV9f
-d2FybmRlY2wobmFtZSxtc2cpIGV4dGVybiB2b2lkIG5hbWUgKHZvaWQpIF9fYXR0
-cmlidXRlX18oKF9fd2FybmluZ19fIChtc2cpKSkAAYoBX193YXJuYXR0cihtc2cp
-IF9fYXR0cmlidXRlX18oKF9fd2FybmluZ19fIChtc2cpKSkAAYsBX19lcnJvcmRl
-Y2wobmFtZSxtc2cpIGV4dGVybiB2b2lkIG5hbWUgKHZvaWQpIF9fYXR0cmlidXRl
-X18oKF9fZXJyb3JfXyAobXNnKSkpAAGWAV9fZmxleGFyciBbXQABsQFfX1JFRElS
-RUNUKG5hbWUscHJvdG8sYWxpYXMpIG5hbWUgcHJvdG8gX19hc21fXyAoX19BU01O
-QU1FICgjYWxpYXMpKQABswFfX1JFRElSRUNUX05USChuYW1lLHByb3RvLGFsaWFz
-KSBuYW1lIHByb3RvIF9fVEhST1cgX19hc21fXyAoX19BU01OQU1FICgjYWxpYXMp
-KQABuQFfX0FTTU5BTUUoY25hbWUpIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9Q
-UkVGSVhfXywgY25hbWUpAAG6AV9fQVNNTkFNRTIocHJlZml4LGNuYW1lKSBfX1NU
-UklORyAocHJlZml4KSBjbmFtZQABzwFfX2F0dHJpYnV0ZV9tYWxsb2NfXyBfX2F0
-dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpAAHYAV9fYXR0cmlidXRlX3B1cmVfXyBf
-X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQAB4QFfX2F0dHJpYnV0ZV91c2VkX18g
-X19hdHRyaWJ1dGVfXyAoKF9fdXNlZF9fKSkAAeIBX19hdHRyaWJ1dGVfbm9pbmxp
-bmVfXyBfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkAAeoBX19hdHRyaWJ1
-dGVfZGVwcmVjYXRlZF9fIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykp
-AAH2AV9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KSBfX2F0dHJpYnV0ZV9fICgo
-X19mb3JtYXRfYXJnX18gKHgpKSkAAYACX19hdHRyaWJ1dGVfZm9ybWF0X3N0cmZt
-b25fXyhhLGIpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3N0cmZtb25f
-XywgYSwgYikpKQABiQJfX25vbm51bGwocGFyYW1zKSBfX2F0dHJpYnV0ZV9fICgo
-X19ub25udWxsX18gcGFyYW1zKSkAAZECX19hdHRyaWJ1dGVfd2Fybl91bnVzZWRf
-cmVzdWx0X18gX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p
-KQABmgJfX3d1ciAAAZ8CX19hbHdheXNfaW5saW5lIF9faW5saW5lIF9fYXR0cmli
-dXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpAAGoAl9fZXh0ZXJuX2lubGluZSBl
-eHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkA
-AaoCX19leHRlcm5fYWx3YXlzX2lubGluZSBleHRlcm4gX19hbHdheXNfaW5saW5l
-IF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18p
-KQABvgJfX3ZhX2FyZ19wYWNrKCkgX19idWlsdGluX3ZhX2FyZ19wYWNrICgpAAG/
-Al9fdmFfYXJnX3BhY2tfbGVuKCkgX19idWlsdGluX3ZhX2FyZ19wYWNrX2xlbiAo
-KQAB1gJfX3Jlc3RyaWN0X2FyciAAA+ECCAETX19XT1JEU0laRSAzMgAEAfcCX19M
-REJMX1JFRElSMShuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3RvAAH4Al9fTERC
-TF9SRURJUihuYW1lLHByb3RvKSBuYW1lIHByb3RvAAH5Al9fTERCTF9SRURJUjFf
-TlRIKG5hbWUscHJvdG8sYWxpYXMpIG5hbWUgcHJvdG8gX19USFJPVwAB+gJfX0xE
-QkxfUkVESVJfTlRIKG5hbWUscHJvdG8pIG5hbWUgcHJvdG8gX19USFJPVwAB+wJf
-X0xEQkxfUkVESVJfREVDTChuYW1lKSAAAf0CX19SRURJUkVDVF9MREJMKG5hbWUs
-cHJvdG8sYWxpYXMpIF9fUkVESVJFQ1QgKG5hbWUsIHByb3RvLCBhbGlhcykAAf4C
-X19SRURJUkVDVF9OVEhfTERCTChuYW1lLHByb3RvLGFsaWFzKSBfX1JFRElSRUNU
-X05USCAobmFtZSwgcHJvdG8sIGFsaWFzKQAEA4QDCQMECAETX19XT1JEU0laRSAz
-MgAEAwcKAQpfX3N0dWJfX19rZXJuZWxfY29zbCAAAQtfX3N0dWJfX19rZXJuZWxf
-c2lubCAAAQxfX3N0dWJfX19rZXJuZWxfdGFubCAAAQ1fX3N0dWJfY2hmbGFncyAA
-AQ5fX3N0dWJfZmF0dGFjaCAAAQ9fX3N0dWJfZmNoZmxhZ3MgAAEQX19zdHViX2Zk
-ZXRhY2ggAAERX19zdHViX2d0dHkgAAESX19zdHViX2xjaG1vZCAAARNfX3N0dWJf
-cmV2b2tlIAABFF9fc3R1Yl9zZXRsb2dpbiAAARVfX3N0dWJfc2lncmV0dXJuIAAB
-Fl9fc3R1Yl9zc3RrIAABF19fc3R1Yl9zdHR5IAAEBAQBIF9fbmVlZF9zaXplX3Qg
-AAEhX19uZWVkX05VTEwgAAMiCwG7AV9fc2l6ZV90X18gAAG8AV9fU0laRV9UX18g
-AAG9AV9TSVpFX1QgAAG+AV9TWVNfU0laRV9UX0ggAAG/AV9UX1NJWkVfIAABwAFf
-VF9TSVpFIAABwQFfX1NJWkVfVCAAAcIBX1NJWkVfVF8gAAHDAV9CU0RfU0laRV9U
-XyAAAcQBX1NJWkVfVF9ERUZJTkVEXyAAAcUBX1NJWkVfVF9ERUZJTkVEIAABxgFf
-QlNEX1NJWkVfVF9ERUZJTkVEXyAAAccBX1NJWkVfVF9ERUNMQVJFRCAAAcgBX19f
-aW50X3NpemVfdF9oIAAByQFfR0NDX1NJWkVfVCAAAcoBX1NJWkVUXyAAAc4BX19z
-aXplX3QgAALqAV9fbmVlZF9zaXplX3QAAo0DTlVMTAABjwNOVUxMIF9fbnVsbAAC
-mANfX25lZWRfTlVMTAAEAyQCARlfQklUU19UWVBFU19IIDEAAxwIARNfX1dPUkRT
-SVpFIDMyAAQBY19fUzE2X1RZUEUgc2hvcnQgaW50AAFkX19VMTZfVFlQRSB1bnNp
-Z25lZCBzaG9ydCBpbnQAAWVfX1MzMl9UWVBFIGludAABZl9fVTMyX1RZUEUgdW5z
-aWduZWQgaW50AAFnX19TTE9OR1dPUkRfVFlQRSBsb25nIGludAABaF9fVUxPTkdX
-T1JEX1RZUEUgdW5zaWduZWQgbG9uZyBpbnQAAWpfX1NRVUFEX1RZUEUgX19xdWFk
-X3QAAWtfX1VRVUFEX1RZUEUgX191X3F1YWRfdAABbF9fU1dPUkRfVFlQRSBpbnQA
-AW1fX1VXT1JEX1RZUEUgdW5zaWduZWQgaW50AAFuX19TTE9ORzMyX1RZUEUgbG9u
-ZyBpbnQAAW9fX1VMT05HMzJfVFlQRSB1bnNpZ25lZCBsb25nIGludAABcF9fUzY0
-X1RZUEUgX19xdWFkX3QAAXFfX1U2NF9UWVBFIF9fdV9xdWFkX3QAAXRfX1NURF9U
-WVBFIF9fZXh0ZW5zaW9uX18gdHlwZWRlZgADgwEMARlfQklUU19UWVBFU0laRVNf
-SCAxAAEeX19ERVZfVF9UWVBFIF9fVVFVQURfVFlQRQABH19fVUlEX1RfVFlQRSBf
-X1UzMl9UWVBFAAEgX19HSURfVF9UWVBFIF9fVTMyX1RZUEUAASFfX0lOT19UX1RZ
-UEUgX19VTE9OR1dPUkRfVFlQRQABIl9fSU5PNjRfVF9UWVBFIF9fVVFVQURfVFlQ
-RQABI19fTU9ERV9UX1RZUEUgX19VMzJfVFlQRQABJF9fTkxJTktfVF9UWVBFIF9f
-VVdPUkRfVFlQRQABJV9fT0ZGX1RfVFlQRSBfX1NMT05HV09SRF9UWVBFAAEmX19P
-RkY2NF9UX1RZUEUgX19TUVVBRF9UWVBFAAEnX19QSURfVF9UWVBFIF9fUzMyX1RZ
-UEUAAShfX1JMSU1fVF9UWVBFIF9fVUxPTkdXT1JEX1RZUEUAASlfX1JMSU02NF9U
-X1RZUEUgX19VUVVBRF9UWVBFAAEqX19CTEtDTlRfVF9UWVBFIF9fU0xPTkdXT1JE
-X1RZUEUAAStfX0JMS0NOVDY0X1RfVFlQRSBfX1NRVUFEX1RZUEUAASxfX0ZTQkxL
-Q05UX1RfVFlQRSBfX1VMT05HV09SRF9UWVBFAAEtX19GU0JMS0NOVDY0X1RfVFlQ
-RSBfX1VRVUFEX1RZUEUAAS5fX0ZTRklMQ05UX1RfVFlQRSBfX1VMT05HV09SRF9U
-WVBFAAEvX19GU0ZJTENOVDY0X1RfVFlQRSBfX1VRVUFEX1RZUEUAATBfX0lEX1Rf
-VFlQRSBfX1UzMl9UWVBFAAExX19DTE9DS19UX1RZUEUgX19TTE9OR1dPUkRfVFlQ
-RQABMl9fVElNRV9UX1RZUEUgX19TTE9OR1dPUkRfVFlQRQABM19fVVNFQ09ORFNf
-VF9UWVBFIF9fVTMyX1RZUEUAATRfX1NVU0VDT05EU19UX1RZUEUgX19TTE9OR1dP
-UkRfVFlQRQABNV9fREFERFJfVF9UWVBFIF9fUzMyX1RZUEUAATZfX1NXQkxLX1Rf
-VFlQRSBfX1NMT05HV09SRF9UWVBFAAE3X19LRVlfVF9UWVBFIF9fUzMyX1RZUEUA
-AThfX0NMT0NLSURfVF9UWVBFIF9fUzMyX1RZUEUAATlfX1RJTUVSX1RfVFlQRSB2
-b2lkICoAATpfX0JMS1NJWkVfVF9UWVBFIF9fU0xPTkdXT1JEX1RZUEUAATtfX0ZT
-SURfVF9UWVBFIHN0cnVjdCB7IGludCBfX3ZhbFsyXTsgfQABPF9fU1NJWkVfVF9U
-WVBFIF9fU1dPUkRfVFlQRQABP19fRkRfU0VUU0laRSAxMDI0AAQCwwFfX1NURF9U
-WVBFAAQBJV9fbmVlZF9GSUxFIAABJl9fbmVlZF9fX0ZJTEUgAAE5X19GSUxFX2Rl
-ZmluZWQgMQACO19fbmVlZF9GSUxFAAFDX19fX0ZJTEVfZGVmaW5lZCAxAAJFX19u
-ZWVkX19fRklMRQABSV9TVERJT19VU0VTX0lPU1RSRUFNIAADSw0BHl9JT19TVERJ
-T19IIAADIA4BBV9HX2NvbmZpZ19oIDEAAQpfX25lZWRfc2l6ZV90IAABDl9fbmVl
-ZF9OVUxMIAADDwsC6gFfX25lZWRfc2l6ZV90AAKNA05VTEwAAY8DTlVMTCBfX251
-bGwAApgDX19uZWVkX05VTEwABAEQX19uZWVkX21ic3RhdGVfdCAAAxQPAVFfX21i
-c3RhdGVfdF9kZWZpbmVkIDEAAmFfX25lZWRfbWJzdGF0ZV90AAKBB19fbmVlZF9t
-YnN0YXRlX3QAAoIHX19uZWVkX3dpbnRfdAAEARVfR19zaXplX3Qgc2l6ZV90AAEg
-X0dfc3NpemVfdCBfX3NzaXplX3QAASFfR19vZmZfdCBfX29mZl90AAEiX0dfb2Zm
-NjRfdCBfX29mZjY0X3QAASNfR19waWRfdCBfX3BpZF90AAEkX0dfdWlkX3QgX191
-aWRfdAABJV9HX3djaGFyX3Qgd2NoYXJfdAABJl9HX3dpbnRfdCB3aW50X3QAASdf
-R19zdGF0NjQgc3RhdDY0AAE6X0dfSEFWRV9CT09MIDEAAT5fR19IQVZFX0FURVhJ
-VCAxAAE/X0dfSEFWRV9TWVNfQ0RFRlMgMQABQF9HX0hBVkVfU1lTX1dBSVQgMQAB
-QV9HX05FRURfU1REQVJHX0ggMQABQl9HX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3QA
-AURfR19IQVZFX1BSSU5URl9GUCAxAAFFX0dfSEFWRV9NTUFQIDEAAUZfR19IQVZF
-X01SRU1BUCAxAAFHX0dfSEFWRV9MT05HX0RPVUJMRV9JTyAxAAFIX0dfSEFWRV9J
-T19GSUxFX09QRU4gMQABSV9HX0hBVkVfSU9fR0VUTElORV9JTkZPIDEAAUtfR19J
-T19JT19GSUxFX1ZFUlNJT04gMHgyMDAwMQABTV9HX09QRU42NCBfX29wZW42NAAB
-Tl9HX0xTRUVLNjQgX19sc2VlazY0AAFPX0dfTU1BUDY0IF9fbW1hcDY0AAFQX0df
-RlNUQVQ2NChmZCxidWYpIF9fZnhzdGF0NjQgKF9TVEFUX1ZFUiwgZmQsIGJ1ZikA
-AVNfR19IQVZFX1NUX0JMS1NJWkUgZGVmaW5lZCAoX1NUQVRCVUZfU1RfQkxLU0la
-RSkAAVVfR19CVUZTSVogODE5MgABWF9HX05BTUVTX0hBVkVfVU5ERVJTQ09SRSAw
-AAFZX0dfVlRBQkxFX0xBQkVMX0hBU19MRU5HVEggMQABWl9HX1VTSU5HX1RIVU5L
-UyAxAAFbX0dfVlRBQkxFX0xBQkVMX1BSRUZJWCAiX192dF8iAAFcX0dfVlRBQkxF
-X0xBQkVMX1BSRUZJWF9JRCBfX3Z0XwABYF9HX0FSR1MoQVJHTElTVCkgQVJHTElT
-VAAEASJfSU9fcG9zX3QgX0dfZnBvc190AAEjX0lPX2Zwb3NfdCBfR19mcG9zX3QA
-ASRfSU9fZnBvczY0X3QgX0dfZnBvczY0X3QAASVfSU9fc2l6ZV90IF9HX3NpemVf
-dAABJl9JT19zc2l6ZV90IF9HX3NzaXplX3QAASdfSU9fb2ZmX3QgX0dfb2ZmX3QA
-AShfSU9fb2ZmNjRfdCBfR19vZmY2NF90AAEpX0lPX3BpZF90IF9HX3BpZF90AAEq
-X0lPX3VpZF90IF9HX3VpZF90AAErX0lPX2ljb252X3QgX0dfaWNvbnZfdAABLF9J
-T19IQVZFX1NZU19XQUlUIF9HX0hBVkVfU1lTX1dBSVQAAS1fSU9fSEFWRV9TVF9C
-TEtTSVpFIF9HX0hBVkVfU1RfQkxLU0laRQABLl9JT19CVUZTSVogX0dfQlVGU0la
-AAEvX0lPX3ZhX2xpc3QgX0dfdmFfbGlzdAABMF9JT193aW50X3QgX0dfd2ludF90
-AAE0X19uZWVkX19fdmFfbGlzdCAAAzUQAiJfX25lZWRfX192YV9saXN0AAEnX19H
-TlVDX1ZBX0xJU1QgAAQCN19JT192YV9saXN0AAE4X0lPX3ZhX2xpc3QgX19nbnVj
-X3ZhX2xpc3QAAUxfUEFSQU1TKHByb3RvcykgX19QKHByb3RvcykAAVRfSU9fVU5J
-RklFRF9KVU1QVEFCTEVTIDEAAVpFT0YgKC0xKQABaV9JT1NfSU5QVVQgMQABal9J
-T1NfT1VUUFVUIDIAAWtfSU9TX0FURU5EIDQAAWxfSU9TX0FQUEVORCA4AAFtX0lP
-U19UUlVOQyAxNgABbl9JT1NfTk9DUkVBVEUgMzIAAW9fSU9TX05PUkVQTEFDRSA2
-NAABcF9JT1NfQklOIDEyOAABeF9JT19NQUdJQyAweEZCQUQwMDAwAAF5X09MRF9T
-VERJT19NQUdJQyAweEZBQkMwMDAwAAF6X0lPX01BR0lDX01BU0sgMHhGRkZGMDAw
-MAABe19JT19VU0VSX0JVRiAxAAF8X0lPX1VOQlVGRkVSRUQgMgABfV9JT19OT19S
-RUFEUyA0AAF+X0lPX05PX1dSSVRFUyA4AAF/X0lPX0VPRl9TRUVOIDB4MTAAAYAB
-X0lPX0VSUl9TRUVOIDB4MjAAAYEBX0lPX0RFTEVURV9ET05UX0NMT1NFIDB4NDAA
-AYIBX0lPX0xJTktFRCAweDgwAAGDAV9JT19JTl9CQUNLVVAgMHgxMDAAAYQBX0lP
-X0xJTkVfQlVGIDB4MjAwAAGFAV9JT19USUVEX1BVVF9HRVQgMHg0MDAAAYYBX0lP
-X0NVUlJFTlRMWV9QVVRUSU5HIDB4ODAwAAGHAV9JT19JU19BUFBFTkRJTkcgMHgx
-MDAwAAGIAV9JT19JU19GSUxFQlVGIDB4MjAwMAABiQFfSU9fQkFEX1NFRU4gMHg0
-MDAwAAGKAV9JT19VU0VSX0xPQ0sgMHg4MDAwAAGMAV9JT19GTEFHUzJfTU1BUCAx
-AAGNAV9JT19GTEFHUzJfTk9UQ0FOQ0VMIDIAAZEBX0lPX0ZMQUdTMl9VU0VSX1dC
-VUYgOAABlwFfSU9fU0tJUFdTIDAxAAGYAV9JT19MRUZUIDAyAAGZAV9JT19SSUdI
-VCAwNAABmgFfSU9fSU5URVJOQUwgMDEwAAGbAV9JT19ERUMgMDIwAAGcAV9JT19P
-Q1QgMDQwAAGdAV9JT19IRVggMDEwMAABngFfSU9fU0hPV0JBU0UgMDIwMAABnwFf
-SU9fU0hPV1BPSU5UIDA0MDAAAaABX0lPX1VQUEVSQ0FTRSAwMTAwMAABoQFfSU9f
-U0hPV1BPUyAwMjAwMAABogFfSU9fU0NJRU5USUZJQyAwNDAwMAABowFfSU9fRklY
-RUQgMDEwMDAwAAGkAV9JT19VTklUQlVGIDAyMDAwMAABpQFfSU9fU1RESU8gMDQw
-MDAwAAGmAV9JT19ET05UX0NMT1NFIDAxMDAwMDAAAacBX0lPX0JPT0xBTFBIQSAw
-MjAwMDAwAAGRAl9JT19maWxlX2ZsYWdzIF9mbGFncwABrgJfX0hBVkVfQ09MVU1O
-IAAB3gJfSU9fc3RkaW4gKChfSU9fRklMRSopKCZfSU9fMl8xX3N0ZGluXykpAAHf
-Al9JT19zdGRvdXQgKChfSU9fRklMRSopKCZfSU9fMl8xX3N0ZG91dF8pKQAB4AJf
-SU9fc3RkZXJyICgoX0lPX0ZJTEUqKSgmX0lPXzJfMV9zdGRlcnJfKSkAAaoDX0lP
-X0JFKGV4cHIscmVzKSBfX2J1aWx0aW5fZXhwZWN0ICgoZXhwciksIHJlcykAAa8D
-X0lPX2dldGNfdW5sb2NrZWQoX2ZwKSAoX0lPX0JFICgoX2ZwKS0+X0lPX3JlYWRf
-cHRyID49IChfZnApLT5fSU9fcmVhZF9lbmQsIDApID8gX191ZmxvdyAoX2ZwKSA6
-ICoodW5zaWduZWQgY2hhciAqKSAoX2ZwKS0+X0lPX3JlYWRfcHRyKyspAAGyA19J
-T19wZWVrY191bmxvY2tlZChfZnApIChfSU9fQkUgKChfZnApLT5fSU9fcmVhZF9w
-dHIgPj0gKF9mcCktPl9JT19yZWFkX2VuZCwgMCkgJiYgX191bmRlcmZsb3cgKF9m
-cCkgPT0gRU9GID8gRU9GIDogKih1bnNpZ25lZCBjaGFyICopIChfZnApLT5fSU9f
-cmVhZF9wdHIpAAG2A19JT19wdXRjX3VubG9ja2VkKF9jaCxfZnApIChfSU9fQkUg
-KChfZnApLT5fSU9fd3JpdGVfcHRyID49IChfZnApLT5fSU9fd3JpdGVfZW5kLCAw
-KSA/IF9fb3ZlcmZsb3cgKF9mcCwgKHVuc2lnbmVkIGNoYXIpIChfY2gpKSA6ICh1
-bnNpZ25lZCBjaGFyKSAoKihfZnApLT5fSU9fd3JpdGVfcHRyKysgPSAoX2NoKSkp
-AAHJA19JT19mZW9mX3VubG9ja2VkKF9fZnApICgoKF9fZnApLT5fZmxhZ3MgJiBf
-SU9fRU9GX1NFRU4pICE9IDApAAHKA19JT19mZXJyb3JfdW5sb2NrZWQoX19mcCkg
-KCgoX19mcCktPl9mbGFncyAmIF9JT19FUlJfU0VFTikgIT0gMCkAAdQDX0lPX1BF
-TkRJTkdfT1VUUFVUX0NPVU5UKF9mcCkgKChfZnApLT5fSU9fd3JpdGVfcHRyIC0g
-KF9mcCktPl9JT193cml0ZV9iYXNlKQAB4gNfSU9fcGVla2MoX2ZwKSBfSU9fcGVl
-a2NfdW5sb2NrZWQgKF9mcCkAAeMDX0lPX2Zsb2NrZmlsZShfZnApIAAB5ANfSU9f
-ZnVubG9ja2ZpbGUoX2ZwKSAAAeUDX0lPX2Z0cnlsb2NrZmlsZShfZnApIAAB5gNf
-SU9fY2xlYW51cF9yZWdpb25fc3RhcnQoX2ZjdCxfZnApIAAB5wNfSU9fY2xlYW51
-cF9yZWdpb25fZW5kKF9Eb2l0KSAABAFRX1ZBX0xJU1RfREVGSU5FRCAAAV9fX29m
-Zl90X2RlZmluZWQgAAFjX19vZmY2NF90X2RlZmluZWQgAAFoX19zc2l6ZV90X2Rl
-ZmluZWQgAAF5X0lPRkJGIDAAAXpfSU9MQkYgMQABe19JT05CRiAyAAGAAUJVRlNJ
-WiBfSU9fQlVGU0laAAGNAVNFRUtfU0VUIDAAAY4BU0VFS19DVVIgMQABjwFTRUVL
-X0VORCAyAAGUAVBfdG1wZGlyICIvdG1wIgADoQERARhMX3RtcG5hbSAyMAABGVRN
-UF9NQVggMjM4MzI4AAEaRklMRU5BTUVfTUFYIDQwOTYAAR1MX2N0ZXJtaWQgOQAB
-H0xfY3VzZXJpZCA5AAIlRk9QRU5fTUFYAAEmRk9QRU5fTUFYIDE2AAQBqQFzdGRp
-biBzdGRpbgABqgFzdGRvdXQgc3Rkb3V0AAGrAXN0ZGVyciBzdGRlcnIAAaEEZ2V0
-YyhfZnApIF9JT19nZXRjIChfZnApAAHLBHB1dGMoX2NoLF9mcCkgX0lPX3B1dGMg
-KF9jaCwgX2ZwKQADzgYSBAQDAhMBHF9fbmVlZF9zaXplX3QgAAEeX19uZWVkX3dj
-aGFyX3QgAAEfX19uZWVkX05VTEwgAAMhCwLqAV9fbmVlZF9zaXplX3QAAYcCX193
-Y2hhcl90X18gAAGIAl9fV0NIQVJfVF9fIAABiQJfV0NIQVJfVCAAAYoCX1RfV0NI
-QVJfIAABiwJfVF9XQ0hBUiAAAYwCX19XQ0hBUl9UIAABjQJfV0NIQVJfVF8gAAGO
-Al9CU0RfV0NIQVJfVF8gAAGPAl9XQ0hBUl9UX0RFRklORURfIAABkAJfV0NIQVJf
-VF9ERUZJTkVEIAABkQJfV0NIQVJfVF9IIAABkgJfX19pbnRfd2NoYXJfdF9oIAAB
-kwJfX0lOVF9XQ0hBUl9UX0ggAAGUAl9HQ0NfV0NIQVJfVCAAAZUCX1dDSEFSX1Rf
-REVDTEFSRUQgAAKiAl9CU0RfV0NIQVJfVF8AAtcCX19uZWVkX3djaGFyX3QAAo0D
-TlVMTAABjwNOVUxMIF9fbnVsbAACmANfX25lZWRfTlVMTAAEASZfU1RETElCX0gg
-MQADKhQBGldOT0hBTkcgMQABG1dVTlRSQUNFRCAyAAEeV1NUT1BQRUQgMgABH1dF
-WElURUQgNAABIFdDT05USU5VRUQgOAABIVdOT1dBSVQgMHgwMTAwMDAwMAABI19f
-V05PVEhSRUFEIDB4MjAwMDAwMDAAASVfX1dBTEwgMHg0MDAwMDAwMAABJl9fV0NM
-T05FIDB4ODAwMDAwMDAABAMrFQEdX19XRVhJVFNUQVRVUyhzdGF0dXMpICgoKHN0
-YXR1cykgJiAweGZmMDApID4+IDgpAAEgX19XVEVSTVNJRyhzdGF0dXMpICgoc3Rh
-dHVzKSAmIDB4N2YpAAEjX19XU1RPUFNJRyhzdGF0dXMpIF9fV0VYSVRTVEFUVVMo
-c3RhdHVzKQABJl9fV0lGRVhJVEVEKHN0YXR1cykgKF9fV1RFUk1TSUcoc3RhdHVz
-KSA9PSAwKQABKV9fV0lGU0lHTkFMRUQoc3RhdHVzKSAoKChzaWduZWQgY2hhcikg
-KCgoc3RhdHVzKSAmIDB4N2YpICsgMSkgPj4gMSkgPiAwKQABLV9fV0lGU1RPUFBF
-RChzdGF0dXMpICgoKHN0YXR1cykgJiAweGZmKSA9PSAweDdmKQABMl9fV0lGQ09O
-VElOVUVEKHN0YXR1cykgKChzdGF0dXMpID09IF9fV19DT05USU5VRUQpAAE2X19X
-Q09SRURVTVAoc3RhdHVzKSAoKHN0YXR1cykgJiBfX1dDT1JFRkxBRykAATlfX1df
-RVhJVENPREUocmV0LHNpZykgKChyZXQpIDw8IDggfCAoc2lnKSkAATpfX1dfU1RP
-UENPREUoc2lnKSAoKHNpZykgPDwgOCB8IDB4N2YpAAE7X19XX0NPTlRJTlVFRCAw
-eGZmZmYAATxfX1dDT1JFRkxBRyAweDgwAANBFgEUX0VORElBTl9IIDEAASBfX0xJ
-VFRMRV9FTkRJQU4gMTIzNAABIV9fQklHX0VORElBTiA0MzIxAAEiX19QRFBfRU5E
-SUFOIDM0MTIAAyUXAQdfX0JZVEVfT1JERVIgX19MSVRUTEVfRU5ESUFOAAQBKl9f
-RkxPQVRfV09SRF9PUkRFUiBfX0JZVEVfT1JERVIAAS5MSVRUTEVfRU5ESUFOIF9f
-TElUVExFX0VORElBTgABL0JJR19FTkRJQU4gX19CSUdfRU5ESUFOAAEwUERQX0VO
-RElBTiBfX1BEUF9FTkRJQU4AATFCWVRFX09SREVSIF9fQllURV9PUkRFUgABNV9f
-TE9OR19MT05HX1BBSVIoSEksTE8pIExPLCBISQADPRgBGl9CSVRTX0JZVEVTV0FQ
-X0ggMQABHV9fYnN3YXBfY29uc3RhbnRfMTYoeCkgKCh1bnNpZ25lZCBzaG9ydCBp
-bnQpICgoKCh4KSA+PiA4KSAmIDB4ZmYpIHwgKCgoeCkgJiAweGZmKSA8PCA4KSkp
-AAEiX19ic3dhcF8xNih4KSAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciB1bnNp
-Z25lZCBzaG9ydCBpbnQgX192LCBfX3ggPSAodW5zaWduZWQgc2hvcnQgaW50KSAo
-eCk7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX194KSkgX192ID0gX19ic3dh
-cF9jb25zdGFudF8xNiAoX194KTsgZWxzZSBfX2FzbV9fICgicm9ydyAkOCwgJXcw
-IiA6ICI9ciIgKF9fdikgOiAiMCIgKF9feCkgOiAiY2MiKTsgX192OyB9KSkAAT1f
-X2Jzd2FwX2NvbnN0YW50XzMyKHgpICgoKCh4KSAmIDB4ZmYwMDAwMDApID4+IDI0
-KSB8ICgoKHgpICYgMHgwMGZmMDAwMCkgPj4gOCkgfCAoKCh4KSAmIDB4MDAwMGZm
-MDApIDw8IDgpIHwgKCgoeCkgJiAweDAwMDAwMGZmKSA8PCAyNCkpAAFJX19ic3dh
-cF8zMih4KSAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciB1bnNpZ25lZCBpbnQg
-X192LCBfX3ggPSAoeCk7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX194KSkg
-X192ID0gX19ic3dhcF9jb25zdGFudF8zMiAoX194KTsgZWxzZSBfX2FzbV9fICgi
-cm9ydyAkOCwgJXcwOyIgInJvcmwgJDE2LCAlMDsiICJyb3J3ICQ4LCAldzAiIDog
-Ij1yIiAoX192KSA6ICIwIiAoX194KSA6ICJjYyIpOyBfX3Y7IH0pKQABcF9fYnN3
-YXBfY29uc3RhbnRfNjQoeCkgKCgoKHgpICYgMHhmZjAwMDAwMDAwMDAwMDAwdWxs
-KSA+PiA1NikgfCAoKCh4KSAmIDB4MDBmZjAwMDAwMDAwMDAwMHVsbCkgPj4gNDAp
-IHwgKCgoeCkgJiAweDAwMDBmZjAwMDAwMDAwMDB1bGwpID4+IDI0KSB8ICgoKHgp
-ICYgMHgwMDAwMDBmZjAwMDAwMDAwdWxsKSA+PiA4KSB8ICgoKHgpICYgMHgwMDAw
-MDAwMGZmMDAwMDAwdWxsKSA8PCA4KSB8ICgoKHgpICYgMHgwMDAwMDAwMDAwZmYw
-MDAwdWxsKSA8PCAyNCkgfCAoKCh4KSAmIDB4MDAwMDAwMDAwMDAwZmYwMHVsbCkg
-PDwgNDApIHwgKCgoeCkgJiAweDAwMDAwMDAwMDAwMDAwZmZ1bGwpIDw8IDU2KSkA
-AXpfX2Jzd2FwXzY0KHgpIChfX2V4dGVuc2lvbl9fICh7IHVuaW9uIHsgX19leHRl
-bnNpb25fXyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fbGw7IHVuc2lnbmVkIGxv
-bmcgaW50IF9fbFsyXTsgfSBfX3csIF9fcjsgaWYgKF9fYnVpbHRpbl9jb25zdGFu
-dF9wICh4KSkgX19yLl9fbGwgPSBfX2Jzd2FwX2NvbnN0YW50XzY0ICh4KTsgZWxz
-ZSB7IF9fdy5fX2xsID0gKHgpOyBfX3IuX19sWzBdID0gX19ic3dhcF8zMiAoX193
-Ll9fbFsxXSk7IF9fci5fX2xbMV0gPSBfX2Jzd2FwXzMyIChfX3cuX19sWzBdKTsg
-fSBfX3IuX19sbDsgfSkpAAQBQGh0b2JlMTYoeCkgX19ic3dhcF8xNiAoeCkAAUFo
-dG9sZTE2KHgpICh4KQABQmJlMTZ0b2goeCkgX19ic3dhcF8xNiAoeCkAAUNsZTE2
-dG9oKHgpICh4KQABRWh0b2JlMzIoeCkgX19ic3dhcF8zMiAoeCkAAUZodG9sZTMy
-KHgpICh4KQABR2JlMzJ0b2goeCkgX19ic3dhcF8zMiAoeCkAAUhsZTMydG9oKHgp
-ICh4KQABSmh0b2JlNjQoeCkgX19ic3dhcF82NCAoeCkAAUtodG9sZTY0KHgpICh4
-KQABTGJlNjR0b2goeCkgX19ic3dhcF82NCAoeCkAAU1sZTY0dG9oKHgpICh4KQAE
-AWR3X3Rlcm1zaWcgX193YWl0X3Rlcm1pbmF0ZWQuX193X3Rlcm1zaWcAAWV3X2Nv
-cmVkdW1wIF9fd2FpdF90ZXJtaW5hdGVkLl9fd19jb3JlZHVtcAABZndfcmV0Y29k
-ZSBfX3dhaXRfdGVybWluYXRlZC5fX3dfcmV0Y29kZQABZ3dfc3RvcHNpZyBfX3dh
-aXRfc3RvcHBlZC5fX3dfc3RvcHNpZwABaHdfc3RvcHZhbCBfX3dhaXRfc3RvcHBl
-ZC5fX3dfc3RvcHZhbAAEATdfX1dBSVRfSU5UKHN0YXR1cykgKCooaW50ICopICYo
-c3RhdHVzKSkAAUBfX1dBSVRfU1RBVFVTIHZvaWQgKgABQV9fV0FJVF9TVEFUVVNf
-REVGTiB2b2lkICoAAVVXRVhJVFNUQVRVUyhzdGF0dXMpIF9fV0VYSVRTVEFUVVMg
-KF9fV0FJVF9JTlQgKHN0YXR1cykpAAFWV1RFUk1TSUcoc3RhdHVzKSBfX1dURVJN
-U0lHIChfX1dBSVRfSU5UIChzdGF0dXMpKQABV1dTVE9QU0lHKHN0YXR1cykgX19X
-U1RPUFNJRyAoX19XQUlUX0lOVCAoc3RhdHVzKSkAAVhXSUZFWElURUQoc3RhdHVz
-KSBfX1dJRkVYSVRFRCAoX19XQUlUX0lOVCAoc3RhdHVzKSkAAVlXSUZTSUdOQUxF
-RChzdGF0dXMpIF9fV0lGU0lHTkFMRUQgKF9fV0FJVF9JTlQgKHN0YXR1cykpAAFa
-V0lGU1RPUFBFRChzdGF0dXMpIF9fV0lGU1RPUFBFRCAoX19XQUlUX0lOVCAoc3Rh
-dHVzKSkAAVxXSUZDT05USU5VRUQoc3RhdHVzKSBfX1dJRkNPTlRJTlVFRCAoX19X
-QUlUX0lOVCAoc3RhdHVzKSkAAW9fX2xkaXZfdF9kZWZpbmVkIDEAAXtfX2xsZGl2
-X3RfZGVmaW5lZCAxAAGBAVJBTkRfTUFYIDIxNDc0ODM2NDcAAYYBRVhJVF9GQUlM
-VVJFIDEAAYcBRVhJVF9TVUNDRVNTIDAAAYsBTUJfQ1VSX01BWCAoX19jdHlwZV9n
-ZXRfbWJfY3VyX21heCAoKSkAA+wBGQEWX1hMT0NBTEVfSCAxAAQDwAIaARhfU1lT
-X1RZUEVTX0ggMQABKV9fdV9jaGFyX2RlZmluZWQgAAE1X19pbm9fdF9kZWZpbmVk
-IAABOV9faW5vNjRfdF9kZWZpbmVkIAABPl9fZGV2X3RfZGVmaW5lZCAAAUNfX2dp
-ZF90X2RlZmluZWQgAAFIX19tb2RlX3RfZGVmaW5lZCAAAU1fX25saW5rX3RfZGVm
-aW5lZCAAAVJfX3VpZF90X2RlZmluZWQgAAFkX19waWRfdF9kZWZpbmVkIAABal9f
-aWRfdF9kZWZpbmVkIAABdl9fZGFkZHJfdF9kZWZpbmVkIAABfF9fa2V5X3RfZGVm
-aW5lZCAAAYABX19uZWVkX2Nsb2NrX3QgAAGCAV9fbmVlZF90aW1lX3QgAAGDAV9f
-bmVlZF90aW1lcl90IAABhAFfX25lZWRfY2xvY2tpZF90IAADhQEbATZfX2Nsb2Nr
-X3RfZGVmaW5lZCAxAAJDX19uZWVkX2Nsb2NrX3QAAUZfX3RpbWVfdF9kZWZpbmVk
-IDEAAlNfX25lZWRfdGltZV90AAFXX19jbG9ja2lkX3RfZGVmaW5lZCAxAAJfX19j
-bG9ja2lkX3RpbWVfdAABY19fdGltZXJfdF9kZWZpbmVkIDEAAmtfX25lZWRfdGlt
-ZXJfdAACf19fbmVlZF90aW1lc3BlYwAEAYoBX191c2Vjb25kc190X2RlZmluZWQg
-AAGOAV9fc3VzZWNvbmRzX3RfZGVmaW5lZCAAAZIBX19uZWVkX3NpemVfdCAAA5MB
-CwLqAV9fbmVlZF9zaXplX3QAApgDX19uZWVkX05VTEwABAG8AV9faW50Tl90KE4s
-TU9ERSkgdHlwZWRlZiBpbnQgaW50ICMjTiAjI190IF9fYXR0cmlidXRlX18gKChf
-X21vZGVfXyAoTU9ERSkpKQABvgFfX3VfaW50Tl90KE4sTU9ERSkgdHlwZWRlZiB1
-bnNpZ25lZCBpbnQgdV9pbnQgIyNOICMjX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
-ZV9fIChNT0RFKSkpAAHCAV9faW50OF90X2RlZmluZWQgAAHUAV9fQklUX1RZUEVT
-X0RFRklORURfXyAxAAPcARwBF19TWVNfU0VMRUNUX0ggMQADHx0BGV9fRkRfWkVS
-TyhmZHNwKSBkbyB7IGludCBfX2QwLCBfX2QxOyBfX2FzbV9fIF9fdm9sYXRpbGVf
-XyAoImNsZDsgcmVwOyBzdG9zbCIgOiAiPWMiIChfX2QwKSwgIj1EIiAoX19kMSkg
-OiAiYSIgKDApLCAiMCIgKHNpemVvZiAoZmRfc2V0KSAvIHNpemVvZiAoX19mZF9t
-YXNrKSksICIxIiAoJl9fRkRTX0JJVFMgKGZkc3ApWzBdKSA6ICJtZW1vcnkiKTsg
-fSB3aGlsZSAoMCkAATJfX0ZEX1NFVChkLHNldCkgKCh2b2lkKSAoX19GRFNfQklU
-UyAoc2V0KVtfX0ZERUxUIChkKV0gfD0gX19GRE1BU0sgKGQpKSkAATRfX0ZEX0NM
-UihkLHNldCkgKCh2b2lkKSAoX19GRFNfQklUUyAoc2V0KVtfX0ZERUxUIChkKV0g
-Jj0gfl9fRkRNQVNLIChkKSkpAAE2X19GRF9JU1NFVChkLHNldCkgKChfX0ZEU19C
-SVRTIChzZXQpW19fRkRFTFQgKGQpXSAmIF9fRkRNQVNLIChkKSkgIT0gMCkABAMi
-HgEWX1NJR1NFVF9IX3R5cGVzIDEAARxfU0lHU0VUX05XT1JEUyAoMTAyNCAvICg4
-ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKQAEASVfX3NpZ3NldF90X2Rl
-ZmluZWQgAAEqX19uZWVkX3RpbWVfdCAAAStfX25lZWRfdGltZXNwZWMgAAMsGwJD
-X19uZWVkX2Nsb2NrX3QAAlNfX25lZWRfdGltZV90AAJfX19jbG9ja2lkX3RpbWVf
-dAACa19fbmVlZF90aW1lcl90AAFyX190aW1lc3BlY19kZWZpbmVkIDEAAn9fX25l
-ZWRfdGltZXNwZWMABAEtX19uZWVkX3RpbWV2YWwgAAMuHwJEX19uZWVkX3RpbWV2
-YWwAAUZfU1RSVUNUX1RJTUVWQUwgMQAEAjpfX05GREJJVFMAAjtfX0ZERUxUAAI8
-X19GRE1BU0sAAT5fX05GREJJVFMgKDggKiAoaW50KSBzaXplb2YgKF9fZmRfbWFz
-aykpAAE/X19GREVMVChkKSAoKGQpIC8gX19ORkRCSVRTKQABQF9fRkRNQVNLKGQp
-ICgoX19mZF9tYXNrKSAxIDw8ICgoZCkgJSBfX05GREJJVFMpKQABSV9fRkRTX0JJ
-VFMoc2V0KSAoKHNldCktPmZkc19iaXRzKQABUUZEX1NFVFNJWkUgX19GRF9TRVRT
-SVpFAAFYTkZEQklUUyBfX05GREJJVFMAAV1GRF9TRVQoZmQsZmRzZXRwKSBfX0ZE
-X1NFVCAoZmQsIGZkc2V0cCkAAV5GRF9DTFIoZmQsZmRzZXRwKSBfX0ZEX0NMUiAo
-ZmQsIGZkc2V0cCkAAV9GRF9JU1NFVChmZCxmZHNldHApIF9fRkRfSVNTRVQgKGZk
-LCBmZHNldHApAAFgRkRfWkVSTyhmZHNldHApIF9fRkRfWkVSTyAoZmRzZXRwKQAE
-A98BIAEWX1NZU19TWVNNQUNST1NfSCAxAAFBbWFqb3IoZGV2KSBnbnVfZGV2X21h
-am9yIChkZXYpAAFCbWlub3IoZGV2KSBnbnVfZGV2X21pbm9yIChkZXYpAAFDbWFr
-ZWRldihtYWosbWluKSBnbnVfZGV2X21ha2VkZXYgKG1haiwgbWluKQAEAeYBX19i
-bGtzaXplX3RfZGVmaW5lZCAAAe0BX19ibGtjbnRfdF9kZWZpbmVkIAAB8QFfX2Zz
-YmxrY250X3RfZGVmaW5lZCAAAfUBX19mc2ZpbGNudF90X2RlZmluZWQgAAOPAiEB
-FF9CSVRTX1BUSFJFQURUWVBFU19IIDEAARZfX1NJWkVPRl9QVEhSRUFEX0FUVFJf
-VCAzNgABF19fU0laRU9GX1BUSFJFQURfTVVURVhfVCAyNAABGF9fU0laRU9GX1BU
-SFJFQURfTVVURVhBVFRSX1QgNAABGV9fU0laRU9GX1BUSFJFQURfQ09ORF9UIDQ4
-AAEaX19TSVpFT0ZfUFRIUkVBRF9DT05EX0NPTVBBVF9UIDEyAAEbX19TSVpFT0Zf
-UFRIUkVBRF9DT05EQVRUUl9UIDQAARxfX1NJWkVPRl9QVEhSRUFEX1JXTE9DS19U
-IDMyAAEdX19TSVpFT0ZfUFRIUkVBRF9SV0xPQ0tBVFRSX1QgOAABHl9fU0laRU9G
-X1BUSFJFQURfQkFSUklFUl9UIDIwAAEfX19TSVpFT0ZfUFRIUkVBRF9CQVJSSUVS
-QVRUUl9UIDQAAasBX19jbGVhbnVwX2ZjdF9hdHRyaWJ1dGUgX19hdHRyaWJ1dGVf
-XyAoKF9fcmVncGFybV9fICgxKSkpAAQEAdQDX19tYWxsb2NfYW5kX2NhbGxvY19k
-ZWZpbmVkIAAD8QMiARRfQUxMT0NBX0ggMQABGF9fbmVlZF9zaXplX3QgAAMZCwLq
-AV9fbmVlZF9zaXplX3QAApgDX19uZWVkX05VTEwABAIeYWxsb2NhAAEkYWxsb2Nh
-KHNpemUpIF9fYnVpbHRpbl9hbGxvY2EgKHNpemUpAAQB5QVfX0NPTVBBUl9GTl9U
-IAACwgdfX25lZWRfbWFsbG9jX2FuZF9jYWxsb2MABAMDIwEcX0VSUk5PX0ggMQAD
-JCQCFkVET00AAhdFSUxTRVEAAhhFUkFOR0UAAxklAQJfTElOVVhfRVJSTk9fSCAA
-AwQmAwEnAQJfQVNNX0dFTkVSSUNfRVJSTk9fSCAAAwQoAQJfQVNNX0dFTkVSSUNf
-RVJSTk9fQkFTRV9IIAABBEVQRVJNIDEAAQVFTk9FTlQgMgABBkVTUkNIIDMAAQdF
-SU5UUiA0AAEIRUlPIDUAAQlFTlhJTyA2AAEKRTJCSUcgNwABC0VOT0VYRUMgOAAB
-DEVCQURGIDkAAQ1FQ0hJTEQgMTAAAQ5FQUdBSU4gMTEAAQ9FTk9NRU0gMTIAARBF
-QUNDRVMgMTMAARFFRkFVTFQgMTQAARJFTk9UQkxLIDE1AAETRUJVU1kgMTYAARRF
-RVhJU1QgMTcAARVFWERFViAxOAABFkVOT0RFViAxOQABF0VOT1RESVIgMjAAARhF
-SVNESVIgMjEAARlFSU5WQUwgMjIAARpFTkZJTEUgMjMAARtFTUZJTEUgMjQAARxF
-Tk9UVFkgMjUAAR1FVFhUQlNZIDI2AAEeRUZCSUcgMjcAAR9FTk9TUEMgMjgAASBF
-U1BJUEUgMjkAASFFUk9GUyAzMAABIkVNTElOSyAzMQABI0VQSVBFIDMyAAEkRURP
-TSAzMwABJUVSQU5HRSAzNAAEAQZFREVBRExLIDM1AAEHRU5BTUVUT09MT05HIDM2
-AAEIRU5PTENLIDM3AAEJRU5PU1lTIDM4AAEKRU5PVEVNUFRZIDM5AAELRUxPT1Ag
-NDAAAQxFV09VTERCTE9DSyBFQUdBSU4AAQ1FTk9NU0cgNDIAAQ5FSURSTSA0MwAB
-D0VDSFJORyA0NAABEEVMMk5TWU5DIDQ1AAERRUwzSExUIDQ2AAESRUwzUlNUIDQ3
-AAETRUxOUk5HIDQ4AAEURVVOQVRDSCA0OQABFUVOT0NTSSA1MAABFkVMMkhMVCA1
-MQABF0VCQURFIDUyAAEYRUJBRFIgNTMAARlFWEZVTEwgNTQAARpFTk9BTk8gNTUA
-ARtFQkFEUlFDIDU2AAEcRUJBRFNMVCA1NwABHkVERUFETE9DSyBFREVBRExLAAEg
-RUJGT05UIDU5AAEhRU5PU1RSIDYwAAEiRU5PREFUQSA2MQABI0VUSU1FIDYyAAEk
-RU5PU1IgNjMAASVFTk9ORVQgNjQAASZFTk9QS0cgNjUAASdFUkVNT1RFIDY2AAEo
-RU5PTElOSyA2NwABKUVBRFYgNjgAASpFU1JNTlQgNjkAAStFQ09NTSA3MAABLEVQ
-Uk9UTyA3MQABLUVNVUxUSUhPUCA3MgABLkVET1RET1QgNzMAAS9FQkFETVNHIDc0
-AAEwRU9WRVJGTE9XIDc1AAExRU5PVFVOSVEgNzYAATJFQkFERkQgNzcAATNFUkVN
-Q0hHIDc4AAE0RUxJQkFDQyA3OQABNUVMSUJCQUQgODAAATZFTElCU0NOIDgxAAE3
-RUxJQk1BWCA4MgABOEVMSUJFWEVDIDgzAAE5RUlMU0VRIDg0AAE6RVJFU1RBUlQg
-ODUAATtFU1RSUElQRSA4NgABPEVVU0VSUyA4NwABPUVOT1RTT0NLIDg4AAE+RURF
-U1RBRERSUkVRIDg5AAE/RU1TR1NJWkUgOTAAAUBFUFJPVE9UWVBFIDkxAAFBRU5P
-UFJPVE9PUFQgOTIAAUJFUFJPVE9OT1NVUFBPUlQgOTMAAUNFU09DS1ROT1NVUFBP
-UlQgOTQAAURFT1BOT1RTVVBQIDk1AAFFRVBGTk9TVVBQT1JUIDk2AAFGRUFGTk9T
-VVBQT1JUIDk3AAFHRUFERFJJTlVTRSA5OAABSEVBRERSTk9UQVZBSUwgOTkAAUlF
-TkVURE9XTiAxMDAAAUpFTkVUVU5SRUFDSCAxMDEAAUtFTkVUUkVTRVQgMTAyAAFM
-RUNPTk5BQk9SVEVEIDEwMwABTUVDT05OUkVTRVQgMTA0AAFORU5PQlVGUyAxMDUA
-AU9FSVNDT05OIDEwNgABUEVOT1RDT05OIDEwNwABUUVTSFVURE9XTiAxMDgAAVJF
-VE9PTUFOWVJFRlMgMTA5AAFTRVRJTUVET1VUIDExMAABVEVDT05OUkVGVVNFRCAx
-MTEAAVVFSE9TVERPV04gMTEyAAFWRUhPU1RVTlJFQUNIIDExMwABV0VBTFJFQURZ
-IDExNAABWEVJTlBST0dSRVNTIDExNQABWUVTVEFMRSAxMTYAAVpFVUNMRUFOIDEx
-NwABW0VOT1ROQU0gMTE4AAFcRU5BVkFJTCAxMTkAAV1FSVNOQU0gMTIwAAFeRVJF
-TU9URUlPIDEyMQABX0VEUVVPVCAxMjIAAWFFTk9NRURJVU0gMTIzAAFiRU1FRElV
-TVRZUEUgMTI0AAFjRUNBTkNFTEVEIDEyNQABZEVOT0tFWSAxMjYAAWVFS0VZRVhQ
-SVJFRCAxMjcAAWZFS0VZUkVWT0tFRCAxMjgAAWdFS0VZUkVKRUNURUQgMTI5AAFq
-RU9XTkVSREVBRCAxMzAAAWtFTk9UUkVDT1ZFUkFCTEUgMTMxAAFtRVJGS0lMTCAx
-MzIAAW9FSFdQT0lTT04gMTMzAAQEBAEcRU5PVFNVUCBFT1BOT1RTVVBQAAEzZXJy
-bm8gKCpfX2Vycm5vX2xvY2F0aW9uICgpKQAEAiVfX25lZWRfRW1hdGgAAUZfX2Vy
-cm9yX3RfZGVmaW5lZCAxAAJIX19uZWVkX2Vycm9yX3QABAMEKQEZX0ZDTlRMX0gg
-MQADIgMDGyoBGF9CSVRTX1VJT19IIDEAAShVSU9fTUFYSU9WIDEwMjQABAEhT19B
-Q0NNT0RFIDAwMDMAASJPX1JET05MWSAwMAABI09fV1JPTkxZIDAxAAEkT19SRFdS
-IDAyAAElT19DUkVBVCAwMTAwAAEmT19FWENMIDAyMDAAASdPX05PQ1RUWSAwNDAw
-AAEoT19UUlVOQyAwMTAwMAABKU9fQVBQRU5EIDAyMDAwAAEqT19OT05CTE9DSyAw
-NDAwMAABK09fTkRFTEFZIE9fTk9OQkxPQ0sAASxPX1NZTkMgMDQwMTAwMDAAAS1P
-X0ZTWU5DIE9fU1lOQwABLk9fQVNZTkMgMDIwMDAwAAExT19ESVJFQ1RPUlkgMDIw
-MDAwMAABMk9fTk9GT0xMT1cgMDQwMDAwMAABM09fQ0xPRVhFQyAwMjAwMDAwMAAB
-Nk9fRElSRUNUIDA0MDAwMAABN09fTk9BVElNRSAwMTAwMDAwMAABPk9fRFNZTkMg
-MDEwMDAwAAE/T19SU1lOQyBPX1NZTkMAAUNPX0xBUkdFRklMRSAwMTAwMDAwAAFH
-Rl9EVVBGRCAwAAFIRl9HRVRGRCAxAAFJRl9TRVRGRCAyAAFKRl9HRVRGTCAzAAFL
-Rl9TRVRGTCA0AAFNRl9HRVRMSyA1AAFORl9TRVRMSyA2AAFPRl9TRVRMS1cgNwAB
-VUZfR0VUTEs2NCAxMgABVkZfU0VUTEs2NCAxMwABV0ZfU0VUTEtXNjQgMTQAAVpG
-X1NFVE9XTiA4AAFbRl9HRVRPV04gOQABX0ZfU0VUU0lHIDEwAAFgRl9HRVRTSUcg
-MTEAAWFGX1NFVE9XTl9FWCAxNQABYkZfR0VUT1dOX0VYIDE2AAFmRl9TRVRMRUFT
-RSAxMDI0AAFnRl9HRVRMRUFTRSAxMDI1AAFoRl9OT1RJRlkgMTAyNgABaUZfU0VU
-UElQRV9TWiAxMDMxAAFqRl9HRVRQSVBFX1NaIDEwMzIAAW1GX0RVUEZEX0NMT0VY
-RUMgMTAzMAABckZEX0NMT0VYRUMgMQABdUZfUkRMQ0sgMAABdkZfV1JMQ0sgMQAB
-d0ZfVU5MQ0sgMgABekZfRVhMQ0sgNAABe0ZfU0hMQ0sgOAABf0xPQ0tfU0ggMQAB
-gAFMT0NLX0VYIDIAAYEBTE9DS19OQiA0AAGDAUxPQ0tfVU4gOAABhwFMT0NLX01B
-TkQgMzIAAYgBTE9DS19SRUFEIDY0AAGJAUxPQ0tfV1JJVEUgMTI4AAGKAUxPQ0tf
-UlcgMTkyAAGPAUROX0FDQ0VTUyAweDAwMDAwMDAxAAGQAUROX01PRElGWSAweDAw
-MDAwMDAyAAGRAUROX0NSRUFURSAweDAwMDAwMDA0AAGSAUROX0RFTEVURSAweDAw
-MDAwMDA4AAGTAUROX1JFTkFNRSAweDAwMDAwMDEwAAGUAUROX0FUVFJJQiAweDAw
-MDAwMDIwAAGVAUROX01VTFRJU0hPVCAweDgwMDAwMDAwAAHGAUZBUFBFTkQgT19B
-UFBFTkQAAccBRkZTWU5DIE9fRlNZTkMAAcgBRkFTWU5DIE9fQVNZTkMAAckBRk5P
-TkJMT0NLIE9fTk9OQkxPQ0sAAcoBRk5ERUxBWSBPX05ERUxBWQABzwFQT1NJWF9G
-QURWX05PUk1BTCAwAAHQAVBPU0lYX0ZBRFZfUkFORE9NIDEAAdEBUE9TSVhfRkFE
-Vl9TRVFVRU5USUFMIDIAAdIBUE9TSVhfRkFEVl9XSUxMTkVFRCAzAAHTAVBPU0lY
-X0ZBRFZfRE9OVE5FRUQgNAAB1AFQT1NJWF9GQURWX05PUkVVU0UgNQAB2gFTWU5D
-X0ZJTEVfUkFOR0VfV0FJVF9CRUZPUkUgMQAB3QFTWU5DX0ZJTEVfUkFOR0VfV1JJ
-VEUgMgAB4AFTWU5DX0ZJTEVfUkFOR0VfV0FJVF9BRlRFUiA0AAHlAVNQTElDRV9G
-X01PVkUgMQAB5gFTUExJQ0VfRl9OT05CTE9DSyAyAAHpAVNQTElDRV9GX01PUkUg
-NAAB6gFTUExJQ0VfRl9HSUZUIDgAAe8BQVRfRkRDV0QgLTEwMAAB8gFBVF9TWU1M
-SU5LX05PRk9MTE9XIDB4MTAwAAHzAUFUX1JFTU9WRURJUiAweDIwMAAB9QFBVF9T
-WU1MSU5LX0ZPTExPVyAweDQwMAAB9gFBVF9OT19BVVRPTU9VTlQgMHg4MDAAAfgB
-QVRfRUFDQ0VTUyAweDIwMAAEASdfX25lZWRfdGltZXNwZWMgAAMoGwJDX19uZWVk
-X2Nsb2NrX3QAAlNfX25lZWRfdGltZV90AAJfX19jbG9ja2lkX3RpbWVfdAACa19f
-bmVlZF90aW1lcl90AAJ/X19uZWVkX3RpbWVzcGVjAAQDKSsBGF9CSVRTX1NUQVRf
-SCAxAAEbX1NUQVRfVkVSX0xJTlVYX09MRCAxAAEcX1NUQVRfVkVSX0tFUk5FTCAx
-AAEdX1NUQVRfVkVSX1NWUjQgMgABHl9TVEFUX1ZFUl9MSU5VWCAzAAEfX1NUQVRf
-VkVSIF9TVEFUX1ZFUl9MSU5VWAABIl9NS05PRF9WRVJfTElOVVggMQABI19NS05P
-RF9WRVJfU1ZSNCAyAAEkX01LTk9EX1ZFUiBfTUtOT0RfVkVSX0xJTlVYAAFMc3Rf
-YXRpbWUgc3RfYXRpbS50dl9zZWMAAU1zdF9tdGltZSBzdF9tdGltLnR2X3NlYwAB
-TnN0X2N0aW1lIHN0X2N0aW0udHZfc2VjAAGHAV9TVEFUQlVGX1NUX0JMS1NJWkUg
-AAGIAV9TVEFUQlVGX1NUX1JERVYgAAGKAV9TVEFUQlVGX1NUX05TRUMgAAGOAV9f
-U19JRk1UIDAxNzAwMDAAAZEBX19TX0lGRElSIDAwNDAwMDAAAZIBX19TX0lGQ0hS
-IDAwMjAwMDAAAZMBX19TX0lGQkxLIDAwNjAwMDAAAZQBX19TX0lGUkVHIDAxMDAw
-MDAAAZUBX19TX0lGSUZPIDAwMTAwMDAAAZYBX19TX0lGTE5LIDAxMjAwMDAAAZcB
-X19TX0lGU09DSyAwMTQwMDAwAAGbAV9fU19UWVBFSVNNUShidWYpICgoYnVmKS0+
-c3RfbW9kZSAtIChidWYpLT5zdF9tb2RlKQABnAFfX1NfVFlQRUlTU0VNKGJ1Zikg
-KChidWYpLT5zdF9tb2RlIC0gKGJ1ZiktPnN0X21vZGUpAAGdAV9fU19UWVBFSVNT
-SE0oYnVmKSAoKGJ1ZiktPnN0X21vZGUgLSAoYnVmKS0+c3RfbW9kZSkAAaEBX19T
-X0lTVUlEIDA0MDAwAAGiAV9fU19JU0dJRCAwMjAwMAABowFfX1NfSVNWVFggMDEw
-MDAAAaQBX19TX0lSRUFEIDA0MDAAAaUBX19TX0lXUklURSAwMjAwAAGmAV9fU19J
-RVhFQyAwMTAwAAGpAVVUSU1FX05PVyAoKDFsIDw8IDMwKSAtIDFsKQABqgFVVElN
-RV9PTUlUICgoMWwgPDwgMzApIC0gMmwpAAQBK1NfSUZNVCBfX1NfSUZNVAABLFNf
-SUZESVIgX19TX0lGRElSAAEtU19JRkNIUiBfX1NfSUZDSFIAAS5TX0lGQkxLIF9f
-U19JRkJMSwABL1NfSUZSRUcgX19TX0lGUkVHAAExU19JRklGTyBfX1NfSUZJRk8A
-ATRTX0lGTE5LIF9fU19JRkxOSwABN1NfSUZTT0NLIF9fU19JRlNPQ0sAATxTX0lT
-VUlEIF9fU19JU1VJRAABPVNfSVNHSUQgX19TX0lTR0lEAAFBU19JU1ZUWCBfX1Nf
-SVNWVFgAAURTX0lSVVNSIF9fU19JUkVBRAABRVNfSVdVU1IgX19TX0lXUklURQAB
-RlNfSVhVU1IgX19TX0lFWEVDAAFIU19JUldYVSAoX19TX0lSRUFEfF9fU19JV1JJ
-VEV8X19TX0lFWEVDKQABSlNfSVJHUlAgKFNfSVJVU1IgPj4gMykAAUtTX0lXR1JQ
-IChTX0lXVVNSID4+IDMpAAFMU19JWEdSUCAoU19JWFVTUiA+PiAzKQABTlNfSVJX
-WEcgKFNfSVJXWFUgPj4gMykAAVBTX0lST1RIIChTX0lSR1JQID4+IDMpAAFRU19J
-V09USCAoU19JV0dSUCA+PiAzKQABUlNfSVhPVEggKFNfSVhHUlAgPj4gMykAAVRT
-X0lSV1hPIChTX0lSV1hHID4+IDMpAAFbUl9PSyA0AAFcV19PSyAyAAFdWF9PSyAx
-AAFeRl9PSyAwAAFkU0VFS19TRVQgMAABZVNFRUtfQ1VSIDEAAWZTRUVLX0VORCAy
-AAG8AUZfVUxPQ0sgMAABvQFGX0xPQ0sgMQABvgFGX1RMT0NLIDIAAb8BRl9URVNU
-IDMABAMFLAEYX1VOSVNURF9IIDEAASNfUE9TSVhfVkVSU0lPTiAyMDA4MDlMAAE2
-X19QT1NJWDJfVEhJU19WRVJTSU9OIDIwMDgwOUwAAURfUE9TSVgyX1ZFUlNJT04g
-X19QT1NJWDJfVEhJU19WRVJTSU9OAAFIX1BPU0lYMl9DX0JJTkQgX19QT1NJWDJf
-VEhJU19WRVJTSU9OAAFMX1BPU0lYMl9DX0RFViBfX1BPU0lYMl9USElTX1ZFUlNJ
-T04AAVBfUE9TSVgyX1NXX0RFViBfX1BPU0lYMl9USElTX1ZFUlNJT04AAVRfUE9T
-SVgyX0xPQ0FMRURFRiBfX1BPU0lYMl9USElTX1ZFUlNJT04AAVhfWE9QRU5fVkVS
-U0lPTiA3MDAAAWJfWE9QRU5fWENVX1ZFUlNJT04gNAABZV9YT1BFTl9YUEcyIDEA
-AWZfWE9QRU5fWFBHMyAxAAFnX1hPUEVOX1hQRzQgMQABal9YT1BFTl9VTklYIDEA
-AW1fWE9QRU5fQ1JZUFQgMQABcV9YT1BFTl9FTkhfSTE4TiAxAAF0X1hPUEVOX0xF
-R0FDWSAxAAPLAS0BFV9CSVRTX1BPU0lYX09QVF9IIDEAARhfUE9TSVhfSk9CX0NP
-TlRST0wgMQABG19QT1NJWF9TQVZFRF9JRFMgMQABHl9QT1NJWF9QUklPUklUWV9T
-Q0hFRFVMSU5HIDIwMDgwOUwAASFfUE9TSVhfU1lOQ0hST05JWkVEX0lPIDIwMDgw
-OUwAASRfUE9TSVhfRlNZTkMgMjAwODA5TAABJ19QT1NJWF9NQVBQRURfRklMRVMg
-MjAwODA5TAABKl9QT1NJWF9NRU1MT0NLIDIwMDgwOUwAAS1fUE9TSVhfTUVNTE9D
-S19SQU5HRSAyMDA4MDlMAAEwX1BPU0lYX01FTU9SWV9QUk9URUNUSU9OIDIwMDgw
-OUwAATNfUE9TSVhfQ0hPV05fUkVTVFJJQ1RFRCAwAAE3X1BPU0lYX1ZESVNBQkxF
-ICdcMCcAATpfUE9TSVhfTk9fVFJVTkMgMQABPV9YT1BFTl9SRUFMVElNRSAxAAFA
-X1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgMQABQ19YT1BFTl9TSE0gMQABRl9QT1NJ
-WF9USFJFQURTIDIwMDgwOUwAAUlfUE9TSVhfUkVFTlRSQU5UX0ZVTkNUSU9OUyAx
-AAFKX1BPU0lYX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyAyMDA4MDlMAAFNX1BPU0lY
-X1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HIDIwMDgwOUwAAVBfUE9TSVhfVEhS
-RUFEX0FUVFJfU1RBQ0tTSVpFIDIwMDgwOUwAAVNfUE9TSVhfVEhSRUFEX0FUVFJf
-U1RBQ0tBRERSIDIwMDgwOUwAAVZfUE9TSVhfVEhSRUFEX1BSSU9fSU5IRVJJVCAy
-MDA4MDlMAAFaX1BPU0lYX1RIUkVBRF9QUklPX1BST1RFQ1QgMjAwODA5TAABXl9Q
-T1NJWF9USFJFQURfUk9CVVNUX1BSSU9fSU5IRVJJVCAyMDA4MDlMAAFhX1BPU0lY
-X1RIUkVBRF9ST0JVU1RfUFJJT19QUk9URUNUIC0xAAFlX1BPU0lYX1NFTUFQSE9S
-RVMgMjAwODA5TAABaF9QT1NJWF9SRUFMVElNRV9TSUdOQUxTIDIwMDgwOUwAAWtf
-UE9TSVhfQVNZTkNIUk9OT1VTX0lPIDIwMDgwOUwAAWxfUE9TSVhfQVNZTkNfSU8g
-MQABbl9MRlNfQVNZTkNIUk9OT1VTX0lPIDEAAXBfUE9TSVhfUFJJT1JJVElaRURf
-SU8gMjAwODA5TAABc19MRlM2NF9BU1lOQ0hST05PVVNfSU8gMQABdl9MRlNfTEFS
-R0VGSUxFIDEAAXdfTEZTNjRfTEFSR0VGSUxFIDEAAXhfTEZTNjRfU1RESU8gMQAB
-e19QT1NJWF9TSEFSRURfTUVNT1JZX09CSkVDVFMgMjAwODA5TAABfl9QT1NJWF9D
-UFVUSU1FIDAAAYEBX1BPU0lYX1RIUkVBRF9DUFVUSU1FIDAAAYQBX1BPU0lYX1JF
-R0VYUCAxAAGHAV9QT1NJWF9SRUFERVJfV1JJVEVSX0xPQ0tTIDIwMDgwOUwAAYoB
-X1BPU0lYX1NIRUxMIDEAAY0BX1BPU0lYX1RJTUVPVVRTIDIwMDgwOUwAAZABX1BP
-U0lYX1NQSU5fTE9DS1MgMjAwODA5TAABkwFfUE9TSVhfU1BBV04gMjAwODA5TAAB
-lgFfUE9TSVhfVElNRVJTIDIwMDgwOUwAAZkBX1BPU0lYX0JBUlJJRVJTIDIwMDgw
-OUwAAZwBX1BPU0lYX01FU1NBR0VfUEFTU0lORyAyMDA4MDlMAAGfAV9QT1NJWF9U
-SFJFQURfUFJPQ0VTU19TSEFSRUQgMjAwODA5TAABogFfUE9TSVhfTU9OT1RPTklD
-X0NMT0NLIDAAAaUBX1BPU0lYX0NMT0NLX1NFTEVDVElPTiAyMDA4MDlMAAGoAV9Q
-T1NJWF9BRFZJU09SWV9JTkZPIDIwMDgwOUwAAasBX1BPU0lYX0lQVjYgMjAwODA5
-TAABrgFfUE9TSVhfUkFXX1NPQ0tFVFMgMjAwODA5TAABsQFfUE9TSVgyX0NIQVJf
-VEVSTSAyMDA4MDlMAAG0AV9QT1NJWF9TUE9SQURJQ19TRVJWRVIgLTEAAbUBX1BP
-U0lYX1RIUkVBRF9TUE9SQURJQ19TRVJWRVIgLTEAAbgBX1BPU0lYX1RSQUNFIC0x
-AAG5AV9QT1NJWF9UUkFDRV9FVkVOVF9GSUxURVIgLTEAAboBX1BPU0lYX1RSQUNF
-X0lOSEVSSVQgLTEAAbsBX1BPU0lYX1RSQUNFX0xPRyAtMQABvgFfUE9TSVhfVFlQ
-RURfTUVNT1JZX09CSkVDVFMgLTEABAPPAS4BK19QT1NJWF9WN19JTFAzMl9PRkYz
-MiAxAAEsX1BPU0lYX1Y3X0lMUDMyX09GRkJJRyAxAAEtX1BPU0lYX1Y2X0lMUDMy
-X09GRjMyIDEAAS5fUE9TSVhfVjZfSUxQMzJfT0ZGQklHIDEAAS9fWEJTNV9JTFAz
-Ml9PRkYzMiAxAAEwX1hCUzVfSUxQMzJfT0ZGQklHIDEAAT9fX0lMUDMyX09GRjMy
-X0NGTEFHUyAiLW0zMiIAAUBfX0lMUDMyX09GRkJJR19DRkxBR1MgIi1tMzIgLURf
-TEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgABQV9fSUxQ
-MzJfT0ZGMzJfTERGTEFHUyAiLW0zMiIAAUJfX0lMUDMyX09GRkJJR19MREZMQUdT
-ICItbTMyIgABQ19fTFA2NF9PRkY2NF9DRkxBR1MgIi1tNjQiAAFEX19MUDY0X09G
-RjY0X0xERkxBR1MgIi1tNjQiAAQB0wFTVERJTl9GSUxFTk8gMAAB1AFTVERPVVRf
-RklMRU5PIDEAAdUBU1RERVJSX0ZJTEVOTyAyAAHhAV9fbmVlZF9zaXplX3QgAAHi
-AV9fbmVlZF9OVUxMIAAD4wELAuoBX19uZWVkX3NpemVfdAACjQNOVUxMAAGPA05V
-TEwgX19udWxsAAKYA19fbmVlZF9OVUxMAAQBjQJfX2ludHB0cl90X2RlZmluZWQg
-AAGUAl9fc29ja2xlbl90X2RlZmluZWQgAAGaAlJfT0sgNAABmwJXX09LIDIAAZwC
-WF9PSyAxAAGdAkZfT0sgMAABvwJMX1NFVCBTRUVLX1NFVAABwAJMX0lOQ1IgU0VF
-S19DVVIAAcECTF9YVE5EIFNFRUtfRU5EAAPeBC8BHV9QQ19MSU5LX01BWCBfUENf
-TElOS19NQVgAAR9fUENfTUFYX0NBTk9OIF9QQ19NQVhfQ0FOT04AASFfUENfTUFY
-X0lOUFVUIF9QQ19NQVhfSU5QVVQAASNfUENfTkFNRV9NQVggX1BDX05BTUVfTUFY
-AAElX1BDX1BBVEhfTUFYIF9QQ19QQVRIX01BWAABJ19QQ19QSVBFX0JVRiBfUENf
-UElQRV9CVUYAASlfUENfQ0hPV05fUkVTVFJJQ1RFRCBfUENfQ0hPV05fUkVTVFJJ
-Q1RFRAABK19QQ19OT19UUlVOQyBfUENfTk9fVFJVTkMAAS1fUENfVkRJU0FCTEUg
-X1BDX1ZESVNBQkxFAAEvX1BDX1NZTkNfSU8gX1BDX1NZTkNfSU8AATFfUENfQVNZ
-TkNfSU8gX1BDX0FTWU5DX0lPAAEzX1BDX1BSSU9fSU8gX1BDX1BSSU9fSU8AATVf
-UENfU09DS19NQVhCVUYgX1BDX1NPQ0tfTUFYQlVGAAE3X1BDX0ZJTEVTSVpFQklU
-UyBfUENfRklMRVNJWkVCSVRTAAE5X1BDX1JFQ19JTkNSX1hGRVJfU0laRSBfUENf
-UkVDX0lOQ1JfWEZFUl9TSVpFAAE7X1BDX1JFQ19NQVhfWEZFUl9TSVpFIF9QQ19S
-RUNfTUFYX1hGRVJfU0laRQABPV9QQ19SRUNfTUlOX1hGRVJfU0laRSBfUENfUkVD
-X01JTl9YRkVSX1NJWkUAAT9fUENfUkVDX1hGRVJfQUxJR04gX1BDX1JFQ19YRkVS
-X0FMSUdOAAFBX1BDX0FMTE9DX1NJWkVfTUlOIF9QQ19BTExPQ19TSVpFX01JTgAB
-Q19QQ19TWU1MSU5LX01BWCBfUENfU1lNTElOS19NQVgAAUVfUENfMl9TWU1MSU5L
-UyBfUENfMl9TWU1MSU5LUwABTF9TQ19BUkdfTUFYIF9TQ19BUkdfTUFYAAFOX1ND
-X0NISUxEX01BWCBfU0NfQ0hJTERfTUFYAAFQX1NDX0NMS19UQ0sgX1NDX0NMS19U
-Q0sAAVJfU0NfTkdST1VQU19NQVggX1NDX05HUk9VUFNfTUFYAAFUX1NDX09QRU5f
-TUFYIF9TQ19PUEVOX01BWAABVl9TQ19TVFJFQU1fTUFYIF9TQ19TVFJFQU1fTUFY
-AAFYX1NDX1RaTkFNRV9NQVggX1NDX1RaTkFNRV9NQVgAAVpfU0NfSk9CX0NPTlRS
-T0wgX1NDX0pPQl9DT05UUk9MAAFcX1NDX1NBVkVEX0lEUyBfU0NfU0FWRURfSURT
-AAFeX1NDX1JFQUxUSU1FX1NJR05BTFMgX1NDX1JFQUxUSU1FX1NJR05BTFMAAWBf
-U0NfUFJJT1JJVFlfU0NIRURVTElORyBfU0NfUFJJT1JJVFlfU0NIRURVTElORwAB
-Yl9TQ19USU1FUlMgX1NDX1RJTUVSUwABZF9TQ19BU1lOQ0hST05PVVNfSU8gX1ND
-X0FTWU5DSFJPTk9VU19JTwABZl9TQ19QUklPUklUSVpFRF9JTyBfU0NfUFJJT1JJ
-VElaRURfSU8AAWhfU0NfU1lOQ0hST05JWkVEX0lPIF9TQ19TWU5DSFJPTklaRURf
-SU8AAWpfU0NfRlNZTkMgX1NDX0ZTWU5DAAFsX1NDX01BUFBFRF9GSUxFUyBfU0Nf
-TUFQUEVEX0ZJTEVTAAFuX1NDX01FTUxPQ0sgX1NDX01FTUxPQ0sAAXBfU0NfTUVN
-TE9DS19SQU5HRSBfU0NfTUVNTE9DS19SQU5HRQABcl9TQ19NRU1PUllfUFJPVEVD
-VElPTiBfU0NfTUVNT1JZX1BST1RFQ1RJT04AAXRfU0NfTUVTU0FHRV9QQVNTSU5H
-IF9TQ19NRVNTQUdFX1BBU1NJTkcAAXZfU0NfU0VNQVBIT1JFUyBfU0NfU0VNQVBI
-T1JFUwABeF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMgX1NDX1NIQVJFRF9NRU1P
-UllfT0JKRUNUUwABel9TQ19BSU9fTElTVElPX01BWCBfU0NfQUlPX0xJU1RJT19N
-QVgAAXxfU0NfQUlPX01BWCBfU0NfQUlPX01BWAABfl9TQ19BSU9fUFJJT19ERUxU
-QV9NQVggX1NDX0FJT19QUklPX0RFTFRBX01BWAABgAFfU0NfREVMQVlUSU1FUl9N
-QVggX1NDX0RFTEFZVElNRVJfTUFYAAGCAV9TQ19NUV9PUEVOX01BWCBfU0NfTVFf
-T1BFTl9NQVgAAYQBX1NDX01RX1BSSU9fTUFYIF9TQ19NUV9QUklPX01BWAABhgFf
-U0NfVkVSU0lPTiBfU0NfVkVSU0lPTgABiAFfU0NfUEFHRVNJWkUgX1NDX1BBR0VT
-SVpFAAGJAV9TQ19QQUdFX1NJWkUgX1NDX1BBR0VTSVpFAAGLAV9TQ19SVFNJR19N
-QVggX1NDX1JUU0lHX01BWAABjQFfU0NfU0VNX05TRU1TX01BWCBfU0NfU0VNX05T
-RU1TX01BWAABjwFfU0NfU0VNX1ZBTFVFX01BWCBfU0NfU0VNX1ZBTFVFX01BWAAB
-kQFfU0NfU0lHUVVFVUVfTUFYIF9TQ19TSUdRVUVVRV9NQVgAAZMBX1NDX1RJTUVS
-X01BWCBfU0NfVElNRVJfTUFYAAGYAV9TQ19CQ19CQVNFX01BWCBfU0NfQkNfQkFT
-RV9NQVgAAZoBX1NDX0JDX0RJTV9NQVggX1NDX0JDX0RJTV9NQVgAAZwBX1NDX0JD
-X1NDQUxFX01BWCBfU0NfQkNfU0NBTEVfTUFYAAGeAV9TQ19CQ19TVFJJTkdfTUFY
-IF9TQ19CQ19TVFJJTkdfTUFYAAGgAV9TQ19DT0xMX1dFSUdIVFNfTUFYIF9TQ19D
-T0xMX1dFSUdIVFNfTUFYAAGiAV9TQ19FUVVJVl9DTEFTU19NQVggX1NDX0VRVUlW
-X0NMQVNTX01BWAABpAFfU0NfRVhQUl9ORVNUX01BWCBfU0NfRVhQUl9ORVNUX01B
-WAABpgFfU0NfTElORV9NQVggX1NDX0xJTkVfTUFYAAGoAV9TQ19SRV9EVVBfTUFY
-IF9TQ19SRV9EVVBfTUFYAAGqAV9TQ19DSEFSQ0xBU1NfTkFNRV9NQVggX1NDX0NI
-QVJDTEFTU19OQU1FX01BWAABrQFfU0NfMl9WRVJTSU9OIF9TQ18yX1ZFUlNJT04A
-Aa8BX1NDXzJfQ19CSU5EIF9TQ18yX0NfQklORAABsQFfU0NfMl9DX0RFViBfU0Nf
-Ml9DX0RFVgABswFfU0NfMl9GT1JUX0RFViBfU0NfMl9GT1JUX0RFVgABtQFfU0Nf
-Ml9GT1JUX1JVTiBfU0NfMl9GT1JUX1JVTgABtwFfU0NfMl9TV19ERVYgX1NDXzJf
-U1dfREVWAAG5AV9TQ18yX0xPQ0FMRURFRiBfU0NfMl9MT0NBTEVERUYAAbwBX1ND
-X1BJSSBfU0NfUElJAAG+AV9TQ19QSUlfWFRJIF9TQ19QSUlfWFRJAAHAAV9TQ19Q
-SUlfU09DS0VUIF9TQ19QSUlfU09DS0VUAAHCAV9TQ19QSUlfSU5URVJORVQgX1ND
-X1BJSV9JTlRFUk5FVAABxAFfU0NfUElJX09TSSBfU0NfUElJX09TSQABxgFfU0Nf
-UE9MTCBfU0NfUE9MTAAByAFfU0NfU0VMRUNUIF9TQ19TRUxFQ1QAAcoBX1NDX1VJ
-T19NQVhJT1YgX1NDX1VJT19NQVhJT1YAAcwBX1NDX0lPVl9NQVggX1NDX0lPVl9N
-QVgAAc4BX1NDX1BJSV9JTlRFUk5FVF9TVFJFQU0gX1NDX1BJSV9JTlRFUk5FVF9T
-VFJFQU0AAdABX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSBfU0NfUElJX0lOVEVSTkVU
-X0RHUkFNAAHSAV9TQ19QSUlfT1NJX0NPVFMgX1NDX1BJSV9PU0lfQ09UUwAB1AFf
-U0NfUElJX09TSV9DTFRTIF9TQ19QSUlfT1NJX0NMVFMAAdYBX1NDX1BJSV9PU0lf
-TSBfU0NfUElJX09TSV9NAAHYAV9TQ19UX0lPVl9NQVggX1NDX1RfSU9WX01BWAAB
-3AFfU0NfVEhSRUFEUyBfU0NfVEhSRUFEUwAB3gFfU0NfVEhSRUFEX1NBRkVfRlVO
-Q1RJT05TIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMAAeABX1NDX0dFVEdSX1Jf
-U0laRV9NQVggX1NDX0dFVEdSX1JfU0laRV9NQVgAAeIBX1NDX0dFVFBXX1JfU0la
-RV9NQVggX1NDX0dFVFBXX1JfU0laRV9NQVgAAeQBX1NDX0xPR0lOX05BTUVfTUFY
-IF9TQ19MT0dJTl9OQU1FX01BWAAB5gFfU0NfVFRZX05BTUVfTUFYIF9TQ19UVFlf
-TkFNRV9NQVgAAegBX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMgX1ND
-X1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMAAeoBX1NDX1RIUkVBRF9LRVlT
-X01BWCBfU0NfVEhSRUFEX0tFWVNfTUFYAAHsAV9TQ19USFJFQURfU1RBQ0tfTUlO
-IF9TQ19USFJFQURfU1RBQ0tfTUlOAAHuAV9TQ19USFJFQURfVEhSRUFEU19NQVgg
-X1NDX1RIUkVBRF9USFJFQURTX01BWAAB8AFfU0NfVEhSRUFEX0FUVFJfU1RBQ0tB
-RERSIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIAAfIBX1NDX1RIUkVBRF9BVFRS
-X1NUQUNLU0laRSBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFAAH0AV9TQ19USFJF
-QURfUFJJT1JJVFlfU0NIRURVTElORyBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVE
-VUxJTkcAAfYBX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQgX1NDX1RIUkVBRF9QUklP
-X0lOSEVSSVQAAfgBX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgX1NDX1RIUkVBRF9Q
-UklPX1BST1RFQ1QAAfoBX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCBfU0NfVEhS
-RUFEX1BST0NFU1NfU0hBUkVEAAH9AV9TQ19OUFJPQ0VTU09SU19DT05GIF9TQ19O
-UFJPQ0VTU09SU19DT05GAAH/AV9TQ19OUFJPQ0VTU09SU19PTkxOIF9TQ19OUFJP
-Q0VTU09SU19PTkxOAAGBAl9TQ19QSFlTX1BBR0VTIF9TQ19QSFlTX1BBR0VTAAGD
-Al9TQ19BVlBIWVNfUEFHRVMgX1NDX0FWUEhZU19QQUdFUwABhQJfU0NfQVRFWElU
-X01BWCBfU0NfQVRFWElUX01BWAABhwJfU0NfUEFTU19NQVggX1NDX1BBU1NfTUFY
-AAGKAl9TQ19YT1BFTl9WRVJTSU9OIF9TQ19YT1BFTl9WRVJTSU9OAAGMAl9TQ19Y
-T1BFTl9YQ1VfVkVSU0lPTiBfU0NfWE9QRU5fWENVX1ZFUlNJT04AAY4CX1NDX1hP
-UEVOX1VOSVggX1NDX1hPUEVOX1VOSVgAAZACX1NDX1hPUEVOX0NSWVBUIF9TQ19Y
-T1BFTl9DUllQVAABkgJfU0NfWE9QRU5fRU5IX0kxOE4gX1NDX1hPUEVOX0VOSF9J
-MThOAAGUAl9TQ19YT1BFTl9TSE0gX1NDX1hPUEVOX1NITQABlwJfU0NfMl9DSEFS
-X1RFUk0gX1NDXzJfQ0hBUl9URVJNAAGZAl9TQ18yX0NfVkVSU0lPTiBfU0NfMl9D
-X1ZFUlNJT04AAZsCX1NDXzJfVVBFIF9TQ18yX1VQRQABngJfU0NfWE9QRU5fWFBH
-MiBfU0NfWE9QRU5fWFBHMgABoAJfU0NfWE9QRU5fWFBHMyBfU0NfWE9QRU5fWFBH
-MwABogJfU0NfWE9QRU5fWFBHNCBfU0NfWE9QRU5fWFBHNAABpQJfU0NfQ0hBUl9C
-SVQgX1NDX0NIQVJfQklUAAGnAl9TQ19DSEFSX01BWCBfU0NfQ0hBUl9NQVgAAakC
-X1NDX0NIQVJfTUlOIF9TQ19DSEFSX01JTgABqwJfU0NfSU5UX01BWCBfU0NfSU5U
-X01BWAABrQJfU0NfSU5UX01JTiBfU0NfSU5UX01JTgABrwJfU0NfTE9OR19CSVQg
-X1NDX0xPTkdfQklUAAGxAl9TQ19XT1JEX0JJVCBfU0NfV09SRF9CSVQAAbMCX1ND
-X01CX0xFTl9NQVggX1NDX01CX0xFTl9NQVgAAbUCX1NDX05aRVJPIF9TQ19OWkVS
-TwABtwJfU0NfU1NJWkVfTUFYIF9TQ19TU0laRV9NQVgAAbkCX1NDX1NDSEFSX01B
-WCBfU0NfU0NIQVJfTUFYAAG7Al9TQ19TQ0hBUl9NSU4gX1NDX1NDSEFSX01JTgAB
-vQJfU0NfU0hSVF9NQVggX1NDX1NIUlRfTUFYAAG/Al9TQ19TSFJUX01JTiBfU0Nf
-U0hSVF9NSU4AAcECX1NDX1VDSEFSX01BWCBfU0NfVUNIQVJfTUFYAAHDAl9TQ19V
-SU5UX01BWCBfU0NfVUlOVF9NQVgAAcUCX1NDX1VMT05HX01BWCBfU0NfVUxPTkdf
-TUFYAAHHAl9TQ19VU0hSVF9NQVggX1NDX1VTSFJUX01BWAABygJfU0NfTkxfQVJH
-TUFYIF9TQ19OTF9BUkdNQVgAAcwCX1NDX05MX0xBTkdNQVggX1NDX05MX0xBTkdN
-QVgAAc4CX1NDX05MX01TR01BWCBfU0NfTkxfTVNHTUFYAAHQAl9TQ19OTF9OTUFY
-IF9TQ19OTF9OTUFYAAHSAl9TQ19OTF9TRVRNQVggX1NDX05MX1NFVE1BWAAB1AJf
-U0NfTkxfVEVYVE1BWCBfU0NfTkxfVEVYVE1BWAAB1wJfU0NfWEJTNV9JTFAzMl9P
-RkYzMiBfU0NfWEJTNV9JTFAzMl9PRkYzMgAB2QJfU0NfWEJTNV9JTFAzMl9PRkZC
-SUcgX1NDX1hCUzVfSUxQMzJfT0ZGQklHAAHbAl9TQ19YQlM1X0xQNjRfT0ZGNjQg
-X1NDX1hCUzVfTFA2NF9PRkY2NAAB3QJfU0NfWEJTNV9MUEJJR19PRkZCSUcgX1ND
-X1hCUzVfTFBCSUdfT0ZGQklHAAHgAl9TQ19YT1BFTl9MRUdBQ1kgX1NDX1hPUEVO
-X0xFR0FDWQAB4gJfU0NfWE9QRU5fUkVBTFRJTUUgX1NDX1hPUEVOX1JFQUxUSU1F
-AAHkAl9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTIF9TQ19YT1BFTl9SRUFMVElN
-RV9USFJFQURTAAHnAl9TQ19BRFZJU09SWV9JTkZPIF9TQ19BRFZJU09SWV9JTkZP
-AAHpAl9TQ19CQVJSSUVSUyBfU0NfQkFSUklFUlMAAesCX1NDX0JBU0UgX1NDX0JB
-U0UAAe0CX1NDX0NfTEFOR19TVVBQT1JUIF9TQ19DX0xBTkdfU1VQUE9SVAAB7wJf
-U0NfQ19MQU5HX1NVUFBPUlRfUiBfU0NfQ19MQU5HX1NVUFBPUlRfUgAB8QJfU0Nf
-Q0xPQ0tfU0VMRUNUSU9OIF9TQ19DTE9DS19TRUxFQ1RJT04AAfMCX1NDX0NQVVRJ
-TUUgX1NDX0NQVVRJTUUAAfUCX1NDX1RIUkVBRF9DUFVUSU1FIF9TQ19USFJFQURf
-Q1BVVElNRQAB9wJfU0NfREVWSUNFX0lPIF9TQ19ERVZJQ0VfSU8AAfkCX1NDX0RF
-VklDRV9TUEVDSUZJQyBfU0NfREVWSUNFX1NQRUNJRklDAAH7Al9TQ19ERVZJQ0Vf
-U1BFQ0lGSUNfUiBfU0NfREVWSUNFX1NQRUNJRklDX1IAAf0CX1NDX0ZEX01HTVQg
-X1NDX0ZEX01HTVQAAf8CX1NDX0ZJRk8gX1NDX0ZJRk8AAYEDX1NDX1BJUEUgX1ND
-X1BJUEUAAYMDX1NDX0ZJTEVfQVRUUklCVVRFUyBfU0NfRklMRV9BVFRSSUJVVEVT
-AAGFA19TQ19GSUxFX0xPQ0tJTkcgX1NDX0ZJTEVfTE9DS0lORwABhwNfU0NfRklM
-RV9TWVNURU0gX1NDX0ZJTEVfU1lTVEVNAAGJA19TQ19NT05PVE9OSUNfQ0xPQ0sg
-X1NDX01PTk9UT05JQ19DTE9DSwABiwNfU0NfTVVMVElfUFJPQ0VTUyBfU0NfTVVM
-VElfUFJPQ0VTUwABjQNfU0NfU0lOR0xFX1BST0NFU1MgX1NDX1NJTkdMRV9QUk9D
-RVNTAAGPA19TQ19ORVRXT1JLSU5HIF9TQ19ORVRXT1JLSU5HAAGRA19TQ19SRUFE
-RVJfV1JJVEVSX0xPQ0tTIF9TQ19SRUFERVJfV1JJVEVSX0xPQ0tTAAGTA19TQ19T
-UElOX0xPQ0tTIF9TQ19TUElOX0xPQ0tTAAGVA19TQ19SRUdFWFAgX1NDX1JFR0VY
-UAABlwNfU0NfUkVHRVhfVkVSU0lPTiBfU0NfUkVHRVhfVkVSU0lPTgABmQNfU0Nf
-U0hFTEwgX1NDX1NIRUxMAAGbA19TQ19TSUdOQUxTIF9TQ19TSUdOQUxTAAGdA19T
-Q19TUEFXTiBfU0NfU1BBV04AAZ8DX1NDX1NQT1JBRElDX1NFUlZFUiBfU0NfU1BP
-UkFESUNfU0VSVkVSAAGhA19TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSIF9TQ19U
-SFJFQURfU1BPUkFESUNfU0VSVkVSAAGjA19TQ19TWVNURU1fREFUQUJBU0UgX1ND
-X1NZU1RFTV9EQVRBQkFTRQABpQNfU0NfU1lTVEVNX0RBVEFCQVNFX1IgX1NDX1NZ
-U1RFTV9EQVRBQkFTRV9SAAGnA19TQ19USU1FT1VUUyBfU0NfVElNRU9VVFMAAakD
-X1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNU
-UwABqwNfU0NfVVNFUl9HUk9VUFMgX1NDX1VTRVJfR1JPVVBTAAGtA19TQ19VU0VS
-X0dST1VQU19SIF9TQ19VU0VSX0dST1VQU19SAAGvA19TQ18yX1BCUyBfU0NfMl9Q
-QlMAAbEDX1NDXzJfUEJTX0FDQ09VTlRJTkcgX1NDXzJfUEJTX0FDQ09VTlRJTkcA
-AbMDX1NDXzJfUEJTX0xPQ0FURSBfU0NfMl9QQlNfTE9DQVRFAAG1A19TQ18yX1BC
-U19NRVNTQUdFIF9TQ18yX1BCU19NRVNTQUdFAAG3A19TQ18yX1BCU19UUkFDSyBf
-U0NfMl9QQlNfVFJBQ0sAAbkDX1NDX1NZTUxPT1BfTUFYIF9TQ19TWU1MT09QX01B
-WAABuwNfU0NfU1RSRUFNUyBfU0NfU1RSRUFNUwABvQNfU0NfMl9QQlNfQ0hFQ0tQ
-T0lOVCBfU0NfMl9QQlNfQ0hFQ0tQT0lOVAABwANfU0NfVjZfSUxQMzJfT0ZGMzIg
-X1NDX1Y2X0lMUDMyX09GRjMyAAHCA19TQ19WNl9JTFAzMl9PRkZCSUcgX1NDX1Y2
-X0lMUDMyX09GRkJJRwABxANfU0NfVjZfTFA2NF9PRkY2NCBfU0NfVjZfTFA2NF9P
-RkY2NAABxgNfU0NfVjZfTFBCSUdfT0ZGQklHIF9TQ19WNl9MUEJJR19PRkZCSUcA
-AckDX1NDX0hPU1RfTkFNRV9NQVggX1NDX0hPU1RfTkFNRV9NQVgAAcsDX1NDX1RS
-QUNFIF9TQ19UUkFDRQABzQNfU0NfVFJBQ0VfRVZFTlRfRklMVEVSIF9TQ19UUkFD
-RV9FVkVOVF9GSUxURVIAAc8DX1NDX1RSQUNFX0lOSEVSSVQgX1NDX1RSQUNFX0lO
-SEVSSVQAAdEDX1NDX1RSQUNFX0xPRyBfU0NfVFJBQ0VfTE9HAAHUA19TQ19MRVZF
-TDFfSUNBQ0hFX1NJWkUgX1NDX0xFVkVMMV9JQ0FDSEVfU0laRQAB1gNfU0NfTEVW
-RUwxX0lDQUNIRV9BU1NPQyBfU0NfTEVWRUwxX0lDQUNIRV9BU1NPQwAB2ANfU0Nf
-TEVWRUwxX0lDQUNIRV9MSU5FU0laRSBfU0NfTEVWRUwxX0lDQUNIRV9MSU5FU0la
-RQAB2gNfU0NfTEVWRUwxX0RDQUNIRV9TSVpFIF9TQ19MRVZFTDFfRENBQ0hFX1NJ
-WkUAAdwDX1NDX0xFVkVMMV9EQ0FDSEVfQVNTT0MgX1NDX0xFVkVMMV9EQ0FDSEVf
-QVNTT0MAAd4DX1NDX0xFVkVMMV9EQ0FDSEVfTElORVNJWkUgX1NDX0xFVkVMMV9E
-Q0FDSEVfTElORVNJWkUAAeADX1NDX0xFVkVMMl9DQUNIRV9TSVpFIF9TQ19MRVZF
-TDJfQ0FDSEVfU0laRQAB4gNfU0NfTEVWRUwyX0NBQ0hFX0FTU09DIF9TQ19MRVZF
-TDJfQ0FDSEVfQVNTT0MAAeQDX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSBfU0Nf
-TEVWRUwyX0NBQ0hFX0xJTkVTSVpFAAHmA19TQ19MRVZFTDNfQ0FDSEVfU0laRSBf
-U0NfTEVWRUwzX0NBQ0hFX1NJWkUAAegDX1NDX0xFVkVMM19DQUNIRV9BU1NPQyBf
-U0NfTEVWRUwzX0NBQ0hFX0FTU09DAAHqA19TQ19MRVZFTDNfQ0FDSEVfTElORVNJ
-WkUgX1NDX0xFVkVMM19DQUNIRV9MSU5FU0laRQAB7ANfU0NfTEVWRUw0X0NBQ0hF
-X1NJWkUgX1NDX0xFVkVMNF9DQUNIRV9TSVpFAAHuA19TQ19MRVZFTDRfQ0FDSEVf
-QVNTT0MgX1NDX0xFVkVMNF9DQUNIRV9BU1NPQwAB8ANfU0NfTEVWRUw0X0NBQ0hF
-X0xJTkVTSVpFIF9TQ19MRVZFTDRfQ0FDSEVfTElORVNJWkUAAfQDX1NDX0lQVjYg
-X1NDX0lQVjYAAfYDX1NDX1JBV19TT0NLRVRTIF9TQ19SQVdfU09DS0VUUwAB+QNf
-U0NfVjdfSUxQMzJfT0ZGMzIgX1NDX1Y3X0lMUDMyX09GRjMyAAH7A19TQ19WN19J
-TFAzMl9PRkZCSUcgX1NDX1Y3X0lMUDMyX09GRkJJRwAB/QNfU0NfVjdfTFA2NF9P
-RkY2NCBfU0NfVjdfTFA2NF9PRkY2NAAB/wNfU0NfVjdfTFBCSUdfT0ZGQklHIF9T
-Q19WN19MUEJJR19PRkZCSUcAAYIEX1NDX1NTX1JFUExfTUFYIF9TQ19TU19SRVBM
-X01BWAABhQRfU0NfVFJBQ0VfRVZFTlRfTkFNRV9NQVggX1NDX1RSQUNFX0VWRU5U
-X05BTUVfTUFYAAGHBF9TQ19UUkFDRV9OQU1FX01BWCBfU0NfVFJBQ0VfTkFNRV9N
-QVgAAYkEX1NDX1RSQUNFX1NZU19NQVggX1NDX1RSQUNFX1NZU19NQVgAAYsEX1ND
-X1RSQUNFX1VTRVJfRVZFTlRfTUFYIF9TQ19UUkFDRV9VU0VSX0VWRU5UX01BWAAB
-jgRfU0NfWE9QRU5fU1RSRUFNUyBfU0NfWE9QRU5fU1RSRUFNUwABkQRfU0NfVEhS
-RUFEX1JPQlVTVF9QUklPX0lOSEVSSVQgX1NDX1RIUkVBRF9ST0JVU1RfUFJJT19J
-TkhFUklUAAGTBF9TQ19USFJFQURfUk9CVVNUX1BSSU9fUFJPVEVDVCBfU0NfVEhS
-RUFEX1JPQlVTVF9QUklPX1BST1RFQ1QAAZoEX0NTX1BBVEggX0NTX1BBVEgAAZ0E
-X0NTX1Y2X1dJRFRIX1JFU1RSSUNURURfRU5WUyBfQ1NfVjZfV0lEVEhfUkVTVFJJ
-Q1RFRF9FTlZTAAGeBF9DU19QT1NJWF9WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMg
-X0NTX1Y2X1dJRFRIX1JFU1RSSUNURURfRU5WUwABoQRfQ1NfR05VX0xJQkNfVkVS
-U0lPTiBfQ1NfR05VX0xJQkNfVkVSU0lPTgABowRfQ1NfR05VX0xJQlBUSFJFQURf
-VkVSU0lPTiBfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTgABpgRfQ1NfVjVfV0lE
-VEhfUkVTVFJJQ1RFRF9FTlZTIF9DU19WNV9XSURUSF9SRVNUUklDVEVEX0VOVlMA
-AacEX0NTX1BPU0lYX1Y1X1dJRFRIX1JFU1RSSUNURURfRU5WUyBfQ1NfVjVfV0lE
-VEhfUkVTVFJJQ1RFRF9FTlZTAAGqBF9DU19WN19XSURUSF9SRVNUUklDVEVEX0VO
-VlMgX0NTX1Y3X1dJRFRIX1JFU1RSSUNURURfRU5WUwABqwRfQ1NfUE9TSVhfVjdf
-V0lEVEhfUkVTVFJJQ1RFRF9FTlZTIF9DU19WN19XSURUSF9SRVNUUklDVEVEX0VO
-VlMAAa4EX0NTX0xGU19DRkxBR1MgX0NTX0xGU19DRkxBR1MAAbAEX0NTX0xGU19M
-REZMQUdTIF9DU19MRlNfTERGTEFHUwABsgRfQ1NfTEZTX0xJQlMgX0NTX0xGU19M
-SUJTAAG0BF9DU19MRlNfTElOVEZMQUdTIF9DU19MRlNfTElOVEZMQUdTAAG2BF9D
-U19MRlM2NF9DRkxBR1MgX0NTX0xGUzY0X0NGTEFHUwABuARfQ1NfTEZTNjRfTERG
-TEFHUyBfQ1NfTEZTNjRfTERGTEFHUwABugRfQ1NfTEZTNjRfTElCUyBfQ1NfTEZT
-NjRfTElCUwABvARfQ1NfTEZTNjRfTElOVEZMQUdTIF9DU19MRlM2NF9MSU5URkxB
-R1MAAb8EX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTIF9DU19YQlM1X0lMUDMy
-X09GRjMyX0NGTEFHUwABwQRfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTIF9D
-U19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MAAcMEX0NTX1hCUzVfSUxQMzJfT0ZG
-MzJfTElCUyBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTAAHFBF9DU19YQlM1X0lM
-UDMyX09GRjMyX0xJTlRGTEFHUyBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxB
-R1MAAccEX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUyBfQ1NfWEJTNV9JTFAz
-Ml9PRkZCSUdfQ0ZMQUdTAAHJBF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdT
-IF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTAAHLBF9DU19YQlM1X0lMUDMy
-X09GRkJJR19MSUJTIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSUJTAAHNBF9DU19Y
-QlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MgX0NTX1hCUzVfSUxQMzJfT0ZGQklH
-X0xJTlRGTEFHUwABzwRfQ1NfWEJTNV9MUDY0X09GRjY0X0NGTEFHUyBfQ1NfWEJT
-NV9MUDY0X09GRjY0X0NGTEFHUwAB0QRfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxB
-R1MgX0NTX1hCUzVfTFA2NF9PRkY2NF9MREZMQUdTAAHTBF9DU19YQlM1X0xQNjRf
-T0ZGNjRfTElCUyBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJQlMAAdUEX0NTX1hCUzVf
-TFA2NF9PRkY2NF9MSU5URkxBR1MgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxB
-R1MAAdcEX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyBfQ1NfWEJTNV9MUEJJ
-R19PRkZCSUdfQ0ZMQUdTAAHZBF9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdT
-IF9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdTAAHbBF9DU19YQlM1X0xQQklH
-X09GRkJJR19MSUJTIF9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTAAHdBF9DU19Y
-QlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MgX0NTX1hCUzVfTFBCSUdfT0ZGQklH
-X0xJTlRGTEFHUwAB4ARfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfQ0ZMQUdTIF9D
-U19QT1NJWF9WNl9JTFAzMl9PRkYzMl9DRkxBR1MAAeIEX0NTX1BPU0lYX1Y2X0lM
-UDMyX09GRjMyX0xERkxBR1MgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxB
-R1MAAeQEX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMgX0NTX1BPU0lYX1Y2
-X0lMUDMyX09GRjMyX0xJQlMAAeYEX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJ
-TlRGTEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElOVEZMQUdTAAHoBF9D
-U19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTIF9DU19QT1NJWF9WNl9JTFAz
-Ml9PRkZCSUdfQ0ZMQUdTAAHqBF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTERG
-TEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MAAewEX0NTX1BP
-U0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZC
-SUdfTElCUwAB7gRfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyBf
-Q1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUwAB8ARfQ1NfUE9TSVhf
-VjZfTFA2NF9PRkY2NF9DRkxBR1MgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZM
-QUdTAAHyBF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xERkxBR1MgX0NTX1BPU0lY
-X1Y2X0xQNjRfT0ZGNjRfTERGTEFHUwAB9ARfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2
-NF9MSUJTIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJQlMAAfYEX0NTX1BPU0lY
-X1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0
-X0xJTlRGTEFHUwAB+ARfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0NGTEFHUyBf
-Q1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0NGTEFHUwAB+gRfQ1NfUE9TSVhfVjZf
-TFBCSUdfT0ZGQklHX0xERkxBR1MgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19M
-REZMQUdTAAH8BF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUyBfQ1NfUE9T
-SVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMAAf4EX0NTX1BPU0lYX1Y2X0xQQklHX09G
-RkJJR19MSU5URkxBR1MgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxB
-R1MAAYEFX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0NGTEFHUyBfQ1NfUE9TSVhf
-VjdfSUxQMzJfT0ZGMzJfQ0ZMQUdTAAGDBV9DU19QT1NJWF9WN19JTFAzMl9PRkYz
-Ml9MREZMQUdTIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MREZMQUdTAAGFBV9D
-U19QT1NJWF9WN19JTFAzMl9PRkYzMl9MSUJTIF9DU19QT1NJWF9WN19JTFAzMl9P
-RkYzMl9MSUJTAAGHBV9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MSU5URkxBR1Mg
-X0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xJTlRGTEFHUwABiQVfQ1NfUE9TSVhf
-VjdfSUxQMzJfT0ZGQklHX0NGTEFHUyBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklH
-X0NGTEFHUwABiwVfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xERkxBR1MgX0NT
-X1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MREZMQUdTAAGNBV9DU19QT1NJWF9WN19J
-TFAzMl9PRkZCSUdfTElCUyBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xJQlMA
-AY8FX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MSU5URkxBR1MgX0NTX1BPU0lY
-X1Y3X0lMUDMyX09GRkJJR19MSU5URkxBR1MAAZEFX0NTX1BPU0lYX1Y3X0xQNjRf
-T0ZGNjRfQ0ZMQUdTIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0NGTEFHUwABkwVf
-Q1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MREZMQUdTIF9DU19QT1NJWF9WN19MUDY0
-X09GRjY0X0xERkxBR1MAAZUFX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTElCUyBf
-Q1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MSUJTAAGXBV9DU19QT1NJWF9WN19MUDY0
-X09GRjY0X0xJTlRGTEFHUyBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MSU5URkxB
-R1MAAZkFX0NTX1BPU0lYX1Y3X0xQQklHX09GRkJJR19DRkxBR1MgX0NTX1BPU0lY
-X1Y3X0xQQklHX09GRkJJR19DRkxBR1MAAZsFX0NTX1BPU0lYX1Y3X0xQQklHX09G
-RkJJR19MREZMQUdTIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTERGTEFHUwAB
-nQVfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xJQlMgX0NTX1BPU0lYX1Y3X0xQ
-QklHX09GRkJJR19MSUJTAAGfBV9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTElO
-VEZMQUdTIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTElOVEZMQUdTAAGiBV9D
-U19WNl9FTlYgX0NTX1Y2X0VOVgABpAVfQ1NfVjdfRU5WIF9DU19WN19FTlYABAH5
-Bl9fbmVlZF9nZXRvcHQgAAP6BjACvwFfX25lZWRfZ2V0b3B0AAQB2ghURU1QX0ZB
-SUxVUkVfUkVUUlkoZXhwcmVzc2lvbikgKF9fZXh0ZW5zaW9uX18gKHsgbG9uZyBp
-bnQgX19yZXN1bHQ7IGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhwcmVzc2lv
-bik7IHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOyBf
-X3Jlc3VsdDsgfSkpAAQDBjEBGV9TVFJJTkdfSCAxAAEgX19uZWVkX3NpemVfdCAA
-ASFfX25lZWRfTlVMTCAAAyILAuoBX19uZWVkX3NpemVfdAACjQNOVUxMAAGPA05V
-TEwgX19udWxsAAKYA19fbmVlZF9OVUxMAAQBJl9fQ09SUkVDVF9JU09fQ1BQX1NU
-UklOR19IX1BST1RPIAABvQFzdHJkdXBhKHMpIChfX2V4dGVuc2lvbl9fICh7IF9f
-Y29uc3QgY2hhciAqX19vbGQgPSAocyk7IHNpemVfdCBfX2xlbiA9IHN0cmxlbiAo
-X19vbGQpICsgMTsgY2hhciAqX19uZXcgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxs
-b2NhIChfX2xlbik7IChjaGFyICopIG1lbWNweSAoX19uZXcsIF9fb2xkLCBfX2xl
-bik7IH0pKQABxwFzdHJuZHVwYShzLG4pIChfX2V4dGVuc2lvbl9fICh7IF9fY29u
-c3QgY2hhciAqX19vbGQgPSAocyk7IHNpemVfdCBfX2xlbiA9IHN0cm5sZW4gKF9f
-b2xkLCAobikpOyBjaGFyICpfX25ldyA9IChjaGFyICopIF9fYnVpbHRpbl9hbGxv
-Y2EgKF9fbGVuICsgMSk7IF9fbmV3W19fbGVuXSA9ICdcMCc7IChjaGFyICopIG1l
-bWNweSAoX19uZXcsIF9fb2xkLCBfX2xlbik7IH0pKQAEBAAALnN5bXRhYgAuc3Ry
-dGFiAC5zaHN0cnRhYgAuaW50ZXJwAC5ub3RlLkFCSS10YWcALm5vdGUuZ251LmJ1
-aWxkLWlkAC5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52
-ZXJzaW9uX3IALnJlbC5keW4ALnJlbC5wbHQALmluaXQALnRleHQALmZpbmkALnJv
-ZGF0YQAuZWhfZnJhbWVfaGRyAC5laF9mcmFtZQAuY3RvcnMALmR0b3JzAC5qY3IA
-LmR5bmFtaWMALmdvdAAuZ290LnBsdAAuZGF0YQAuYnNzAC5jb21tZW50AC5kZWJ1
-Z19hcmFuZ2VzAC5kZWJ1Z19pbmZvAC5kZWJ1Z19hYmJyZXYALmRlYnVnX2xpbmUA
-LmRlYnVnX3N0cgAuZGVidWdfbG9jAC5kZWJ1Z19tYWNpbmZvAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAIAAAA0gQQI
-NAEAABMAAAAAAAAAAAAAAAEAAAAAAAAAIwAAAAcAAAACAAAASIEECEgBAAAgAAAA
-AAAAAAAAAAAEAAAAAAAAADEAAAAHAAAAAgAAAGiBBAhoAQAAJAAAAAAAAAAAAAAA
-BAAAAAAAAABEAAAABQAAAAIAAACMgQQIjAEAAEAAAAAFAAAAAAAAAAQAAAAEAAAA
-SgAAAAsAAAACAAAAzIEECMwBAACwAAAABgAAAAEAAAAEAAAAEAAAAFIAAAADAAAA
-AgAAAHyCBAh8AgAApQAAAAAAAAAAAAAAAQAAAAAAAABaAAAA////bwIAAAAigwQI
-IgMAABYAAAAFAAAAAAAAAAIAAAACAAAAZwAAAP7//28CAAAAOIMECDgDAAAgAAAA
-BgAAAAEAAAAEAAAAAAAAAHYAAAAJAAAAAgAAAFiDBAhYAwAACAAAAAUAAAAAAAAA
-BAAAAAgAAAB/AAAACQAAAAIAAABggwQIYAMAAEgAAAAFAAAADAAAAAQAAAAIAAAA
-iAAAAAEAAAAGAAAAqIMECKgDAAAuAAAAAAAAAAAAAAAEAAAAAAAAAIMAAAABAAAA
-BgAAAOCDBAjgAwAAoAAAAAAAAAAAAAAAEAAAAAQAAACOAAAAAQAAAAYAAACAhAQI
-gAQAALwCAAAAAAAAAAAAABAAAAAAAAAAlAAAAAEAAAAGAAAAPIcECDwHAAAaAAAA
-AAAAAAAAAAAEAAAAAAAAAJoAAAABAAAAAgAAAFiHBAhYBwAAQQAAAAAAAAAAAAAA
-BAAAAAAAAACiAAAAAQAAAAIAAACchwQInAcAADQAAAAAAAAAAAAAAAQAAAAAAAAA
-sAAAAAEAAAACAAAA0IcECNAHAADQAAAAAAAAAAAAAAAEAAAAAAAAALoAAAABAAAA
-AwAAAKCYBAigCAAACAAAAAAAAAAAAAAABAAAAAAAAADBAAAAAQAAAAMAAAComAQI
-qAgAAAgAAAAAAAAAAAAAAAQAAAAAAAAAyAAAAAEAAAADAAAAsJgECLAIAAAEAAAA
-AAAAAAAAAAAEAAAAAAAAAM0AAAAGAAAAAwAAALSYBAi0CAAA6AAAAAYAAAAAAAAA
-BAAAAAgAAADWAAAAAQAAAAMAAACcmQQInAkAAAQAAAAAAAAAAAAAAAQAAAAEAAAA
-2wAAAAEAAAADAAAAoJkECKAJAAAwAAAAAAAAAAAAAAAEAAAABAAAAOQAAAABAAAA
-AwAAANCZBAjQCQAACAAAAAAAAAAAAAAABAAAAAAAAADqAAAACAAAAAMAAADYmQQI
-2AkAAAgAAAAAAAAAAAAAAAQAAAAAAAAA7wAAAAEAAAAwAAAAAAAAANgJAAAkAAAA
-AAAAAAAAAAABAAAAAQAAAPgAAAABAAAAAAAAAAAAAAD8CQAAIAAAAAAAAAAAAAAA
-AQAAAAAAAAAHAQAAAQAAAAAAAAAAAAAAHAoAAEkBAAAAAAAAAAAAAAEAAAAAAAAA
-EwEAAAEAAAAAAAAAAAAAAGULAACeAAAAAAAAAAAAAAABAAAAAAAAACEBAAABAAAA
-AAAAAAAAAAADDAAAWAUAAAAAAAAAAAAAAQAAAAAAAAAtAQAAAQAAADAAAAAAAAAA
-WxEAAO8AAAAAAAAAAAAAAAEAAAABAAAAOAEAAAEAAAAAAAAAAAAAAEoSAAA4AAAA
-AAAAAAAAAAABAAAAAAAAAEMBAAABAAAAAAAAAAAAAACCEgAAobAAAAAAAAAAAAAA
-AQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAI8MAAFIBAAAAAAAAAAAAAAEAAAAAAAAA
-AQAAAAIAAAAAAAAAAAAAAEDKAADgBAAAJAAAADQAAAAEAAAAEAAAAAkAAAADAAAA
-AAAAAAAAAAAgzwAAZgIAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAADSBBAgAAAAAAwABAAAAAABIgQQIAAAAAAMAAgAAAAAAaIEECAAAAAADAAMA
-AAAAAIyBBAgAAAAAAwAEAAAAAADMgQQIAAAAAAMABQAAAAAAfIIECAAAAAADAAYA
-AAAAACKDBAgAAAAAAwAHAAAAAAA4gwQIAAAAAAMACAAAAAAAWIMECAAAAAADAAkA
-AAAAAGCDBAgAAAAAAwAKAAAAAACogwQIAAAAAAMACwAAAAAA4IMECAAAAAADAAwA
-AAAAAICEBAgAAAAAAwANAAAAAAA8hwQIAAAAAAMADgAAAAAAWIcECAAAAAADAA8A
-AAAAAJyHBAgAAAAAAwAQAAAAAADQhwQIAAAAAAMAEQAAAAAAoJgECAAAAAADABIA
-AAAAAKiYBAgAAAAAAwATAAAAAACwmAQIAAAAAAMAFAAAAAAAtJgECAAAAAADABUA
-AAAAAJyZBAgAAAAAAwAWAAAAAACgmQQIAAAAAAMAFwAAAAAA0JkECAAAAAADABgA
-AAAAANiZBAgAAAAAAwAZAAAAAAAAAAAAAAAAAAMAGgAAAAAAAAAAAAAAAAADABsA
-AAAAAAAAAAAAAAAAAwAcAAAAAAAAAAAAAAAAAAMAHQAAAAAAAAAAAAAAAAADAB4A
-AAAAAAAAAAAAAAAAAwAfAAAAAAAAAAAAAAAAAAMAIAAAAAAAAAAAAAAAAAADACEA
-AQAAAAAAAAAAAAAABADx/wwAAACgmAQIAAAAAAEAEgAaAAAAqJgECAAAAAABABMA
-KAAAALCYBAgAAAAAAQAUADUAAACwhAQIAAAAAAIADQBLAAAA2JkECAEAAAABABkA
-WgAAANyZBAgEAAAAAQAZAGgAAAAQhQQIAAAAAAIADQABAAAAAAAAAAAAAAAEAPH/
-dAAAAKSYBAgAAAAAAQASAIEAAACciAQIAAAAAAEAEQCPAAAAsJgECAAAAAABABQA
-mwAAABCHBAgAAAAAAgANALEAAAAAAAAAAAAAAAQA8f++AAAAoJkECAAAAAABABcA
-1AAAAKCYBAgAAAAAAAASAOUAAACgmAQIAAAAAAAAEgD4AAAAtJgECAAAAAABABUA
-AQEAANCZBAgAAAAAIAAYAAwBAAAAAAAAAAAAABIAAAAcAQAAAAAAAAAAAAASAAAA
-LgEAAACHBAgCAAAAEgANAD4BAACAhAQIAAAAABIADQBFAQAAAAAAAAAAAAAgAAAA
-VAEAAAAAAAAAAAAAIAAAAGgBAABYhwQIBAAAABEADwBvAQAAPIcECAAAAAASAA4A
-dQEAAAAAAAAAAAAAEgAAAJIBAAAAAAAAAAAAABIAAACkAQAAXIcECAQAAAARAA8A
-swEAANCZBAgAAAAAEAAYAMABAADUmQQIAAAAABECGADNAQAArJgECAAAAAARAhMA
-2gEAAJCGBAhhAAAAEgANAOoBAAAAAAAAAAAAABIAAAD7AQAA2JkECAAAAAAQAPH/
-BwIAAOCZBAgAAAAAEADx/wwCAAAAAAAAAAAAABIAAAAcAgAAAAAAAAAAAAASAAAA
-LQIAANiZBAgAAAAAEADx/zQCAAAAAAAAAAAAABIAAABEAgAAAocECAAAAAASAg0A
-WwIAADSFBAhcAQAAEgANAGACAACogwQIAAAAABIACwAAY3J0c3R1ZmYuYwBfX0NU
-T1JfTElTVF9fAF9fRFRPUl9MSVNUX18AX19KQ1JfTElTVF9fAF9fZG9fZ2xvYmFs
-X2R0b3JzX2F1eABjb21wbGV0ZWQuNTQ1MgBkdG9yX2lkeC41NDU0AGZyYW1lX2R1
-bW15AF9fQ1RPUl9FTkRfXwBfX0ZSQU1FX0VORF9fAF9fSkNSX0VORF9fAF9fZG9f
-Z2xvYmFsX2N0b3JzX2F1eABmaWxlTG9jay5jcHAAX0dMT0JBTF9PRkZTRVRfVEFC
-TEVfAF9faW5pdF9hcnJheV9lbmQAX19pbml0X2FycmF5X3N0YXJ0AF9EWU5BTUlD
-AGRhdGFfc3RhcnQAb3BlbkBAR0xJQkNfMi4wAGdldHBpZEBAR0xJQkNfMi4wAF9f
-bGliY19jc3VfZmluaQBfc3RhcnQAX19nbW9uX3N0YXJ0X18AX0p2X1JlZ2lzdGVy
-Q2xhc3NlcwBfZnBfaHcAX2ZpbmkAX19saWJjX3N0YXJ0X21haW5AQEdMSUJDXzIu
-MABwZXJyb3JAQEdMSUJDXzIuMABfSU9fc3RkaW5fdXNlZABfX2RhdGFfc3RhcnQA
-X19kc29faGFuZGxlAF9fRFRPUl9FTkRfXwBfX2xpYmNfY3N1X2luaXQAY2xvc2VA
-QEdMSUJDXzIuMABfX2Jzc19zdGFydABfZW5kAHB1dHNAQEdMSUJDXzIuMABmY250
-bEBAR0xJQkNfMi4wAF9lZGF0YQBleGl0QEBHTElCQ18yLjAAX19pNjg2LmdldF9w
-Y190aHVuay5ieABtYWluAF9pbml0AA==
-END
-echo $S 0 | openssl base64 -d
-for var in "$@"
-do
-       #Check if port parameter is present
-    uuid=`echo $var | awk -F',' '{print $1}'`
-    port=`echo $var | awk -F',' '{print $2}'`
-
-    # overwrite any preexisting UUID
-    #sedinput="'/$uuid/d'"
-    #echo $sedinput
-    #sed -i $sedinput $uuidfile
-    #test=`sed '/$uuid/d' $uuidfile`
-    test=`cat $uuidfile | grep -v "$uuid"`
-    #test=`awk '!/$uuid/' $uuidfile`
-    echo $test | sed 's/ /\
-/g' > $uuidfile
-
-       # just for testing script input
-       #echo $@ >> $uuidfile
-
-    #if port exists, test if it is blocked
-    if [ -n "$port" ]
-    then
-        #Test if port number is blocked
-        process=`netstat -nlp | grep $port | awk '{print $7}' | cut -d '/' -f 1`
-
-        # check if port is blocked and find empty port by looping
-        if [ -n "$process" ]; then
-            while [ -n "$process" ]
-            do
-                port=`expr $port + 1`
-                process=`netstat -nlp | grep $port | awk '{print $7}' | cut -d '/' -f 1`
-                var="$uuid,$port"
-            done
-            retval="$retval#$var"
-        fi
-    fi
-
-    echo $var >> $uuidfile
-done
-sed '/^$/d' $uuidfile > $uuidfile.temp && mv $uuidfile.temp $uuidfile
-echo $S 1 | openssl base64 -d
-echo $retval
-
-# OLD SCRIPT FILE BACKUP
-
-#uuidfile="/tmp/tastore/uuidlist.list";
-#rm -f $uuidfile;
-
-#for filename in $(find /tmp/tastore/ -maxdepth 1 -regex ".*/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]" ! -name "*ext"); do
-#strip off the complete path, retain only the file names
-#(echo "${filename:13}" >> $uuidfile);
-#done
index 8f6b021..33a494e 100644 (file)
@@ -39,7 +39,6 @@
 #define PO_INTERNAL_MODULE_NAME "po_file"
 #define PO_STAT_INTERNAL_MODULE_NAME "po_stat"
 #define PI_FILE_NAME "pi_file"
-#define UUID_FILE "/usr/lib/tastore/uuidlist.uuid"
 
 TEE_UUID ssf_sharedthisTAUUID;
 static TEE_UUID this_uuid;
@@ -82,60 +81,6 @@ int get_uuid() {
        this_uuid = ssf_sharedthisTAUUID;
        uuid_got = 1;
        return 0;
-#if 0
-       if (uuid_got)
-       {
-               return 0;
-       }
-       char ta_name[256] =
-       {       0};
-       if (0 != get_ta_name(ta_name))
-       {
-               MSG("Failed to get ta name.");
-               return -1;
-       }
-       FILE* f = fopen(UUID_FILE, "r");
-       if (!f)
-       {
-               MSG("Can't open file %s\n", UUID_FILE);
-               return -1;
-       }
-       char name[256];
-       char *line = NULL;
-       size_t len = 0;
-       ssize_t read_bytes;
-       int matched = 0;
-       TEE_UUID uuid;
-       while (-1 != getline(&line, &len, f))
-       {
-               matched =
-               sscanf(line,
-                               "TA={ %x , %hx , %hx , { %hhx , %hhx , %hhx , %hhx , %hhx , %hhx , %hhx , %hhx } } : %64s",
-                               &uuid.timeLow, &uuid.timeMid, &uuid.timeHiAndVersion,
-                               &uuid.clockSeqAndNode[0], &uuid.clockSeqAndNode[1],
-                               &uuid.clockSeqAndNode[2], &uuid.clockSeqAndNode[3],
-                               &uuid.clockSeqAndNode[4], &uuid.clockSeqAndNode[5],
-                               &uuid.clockSeqAndNode[6], &uuid.clockSeqAndNode[7],
-                               name);
-               if (matched != 12 || matched == EOF)
-               {
-                       MSG("bad format for uuid:%s\n", line);
-                       continue;
-               }
-               OsaFree(line);
-               line = NULL;
-               MSG("ta_name [%s] <=> name [%s]", ta_name, name);
-               if (0 == memcmp(ta_name, name, strlen(ta_name)))
-               {
-                       this_uuid = uuid;
-                       uuid_got = 1;
-                       fclose(f);
-                       return 0;
-               }
-       }
-       fclose(f);
-       return -1;
-#endif
 }
 
 void printhex(unsigned char* buf, unsigned int size) {