1329 lines
293 KiB
JavaScript
1329 lines
293 KiB
JavaScript
/*!
|
|
* weRequest 1.5.1
|
|
* https://github.com/IvinWu/weRequest
|
|
*/
|
|
module.exports =
|
|
/******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId]) {
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ i: moduleId,
|
|
/******/ l: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.l = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // define getter function for harmony exports
|
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = function(exports) {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/
|
|
/******/ // create a fake namespace object
|
|
/******/ // mode & 1: value is a module id, require it
|
|
/******/ // mode & 2: merge all properties of value into the ns
|
|
/******/ // mode & 4: return value when already ns object
|
|
/******/ // mode & 8|1: behave like require
|
|
/******/ __webpack_require__.t = function(value, mode) {
|
|
/******/ if(mode & 1) value = __webpack_require__(value);
|
|
/******/ if(mode & 8) return value;
|
|
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|
/******/ var ns = Object.create(null);
|
|
/******/ __webpack_require__.r(ns);
|
|
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|
/******/ return ns;
|
|
/******/ };
|
|
/******/
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = function(module) {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ function getDefault() { return module['default']; } :
|
|
/******/ function getModuleExports() { return module; };
|
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/
|
|
/******/ // Object.prototype.hasOwnProperty.call
|
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "";
|
|
/******/
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts");
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ({
|
|
|
|
/***/ "./src/api/getConfig.ts":
|
|
/*!******************************!*\
|
|
!*** ./src/api/getConfig.ts ***!
|
|
\******************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var status_1 = __webpack_require__(/*! ../store/status */ "./src/store/status.ts");
|
|
exports.default = (function () {
|
|
return {
|
|
urlPerfix: config_1.default.urlPerfix,
|
|
sessionExpireTime: config_1.default.sessionExpireTime,
|
|
sessionExpireKey: config_1.default.sessionExpireKey,
|
|
sessionExpire: status_1.default.sessionExpire
|
|
};
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9nZXRDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBb0M7QUFDcEMsMENBQW9DO0FBRXBDLG1CQUFlO0lBQ1gsT0FBTztRQUNILFNBQVMsRUFBRSxnQkFBTSxDQUFDLFNBQVM7UUFDM0IsaUJBQWlCLEVBQUUsZ0JBQU0sQ0FBQyxpQkFBaUI7UUFDM0MsZ0JBQWdCLEVBQUUsZ0JBQU0sQ0FBQyxnQkFBZ0I7UUFDekMsYUFBYSxFQUFFLGdCQUFNLENBQUMsYUFBYTtLQUN0QyxDQUFBO0FBQ0wsQ0FBQyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9zdG9yZS9jb25maWcnXG5pbXBvcnQgc3RhdHVzIGZyb20gJy4uL3N0b3JlL3N0YXR1cydcblxuZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybFBlcmZpeDogY29uZmlnLnVybFBlcmZpeCxcbiAgICAgICAgc2Vzc2lvbkV4cGlyZVRpbWU6IGNvbmZpZy5zZXNzaW9uRXhwaXJlVGltZSxcbiAgICAgICAgc2Vzc2lvbkV4cGlyZUtleTogY29uZmlnLnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgIHNlc3Npb25FeHBpcmU6IHN0YXR1cy5zZXNzaW9uRXhwaXJlXG4gICAgfVxufTtcbiJdfQ==
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/api/getSession.ts":
|
|
/*!*******************************!*\
|
|
!*** ./src/api/getSession.ts ***!
|
|
\*******************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var status_1 = __webpack_require__(/*! ../store/status */ "./src/store/status.ts");
|
|
exports.default = (function () {
|
|
return status_1.default.session;
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvZ2V0U2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUFvQztBQUVwQyxtQkFBZTtJQUNYLE9BQU8sZ0JBQU0sQ0FBQyxPQUFPLENBQUE7QUFDekIsQ0FBQyxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0YXR1cyBmcm9tICcuLi9zdG9yZS9zdGF0dXMnXG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgICByZXR1cm4gc3RhdHVzLnNlc3Npb25cbn1cbiJdfQ==
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/api/init.ts":
|
|
/*!*************************!*\
|
|
!*** ./src/api/init.ts ***!
|
|
\*************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var status_1 = __webpack_require__(/*! ../store/status */ "./src/store/status.ts");
|
|
exports.default = (function (params) {
|
|
Object.assign(config_1.default, params);
|
|
console.log(config_1.default.errorTitle);
|
|
try {
|
|
status_1.default.session = wx.getStorageSync(config_1.default.sessionName) || '';
|
|
}
|
|
catch (e) { }
|
|
try {
|
|
status_1.default.sessionExpire = wx.getStorageSync(config_1.default.sessionExpireKey || "sessionExpireKey") || Infinity;
|
|
}
|
|
catch (e) { }
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUFvQztBQUNwQywwQ0FBb0M7QUFHcEMsbUJBQWUsVUFBQyxNQUFtQjtJQUMvQixNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLElBQUk7UUFDQSxnQkFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLGdCQUFNLENBQUMsV0FBWSxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ2pFO0lBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRTtJQUNkLElBQUk7UUFDQSxnQkFBTSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLGdCQUFNLENBQUMsZ0JBQWdCLElBQUksa0JBQWtCLENBQUMsSUFBSSxRQUFRLENBQUM7S0FDdkc7SUFBQyxPQUFPLENBQUMsRUFBRSxHQUFFO0FBQ2xCLENBQUMsRUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25maWcgZnJvbSAnLi4vc3RvcmUvY29uZmlnJ1xuaW1wb3J0IHN0YXR1cyBmcm9tICcuLi9zdG9yZS9zdGF0dXMnXG5pbXBvcnQgeyBJSW5pdE9wdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZSdcblxuZXhwb3J0IGRlZmF1bHQgKHBhcmFtczogSUluaXRPcHRpb24pID0+IHtcbiAgICBPYmplY3QuYXNzaWduKGNvbmZpZywgcGFyYW1zKTtcbiAgICBjb25zb2xlLmxvZyhjb25maWcuZXJyb3JUaXRsZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RhdHVzLnNlc3Npb24gPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWcuc2Vzc2lvbk5hbWUhKSB8fCAnJztcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICAgIHN0YXR1cy5zZXNzaW9uRXhwaXJlID0gd3guZ2V0U3RvcmFnZVN5bmMoY29uZmlnLnNlc3Npb25FeHBpcmVLZXkgfHwgXCJzZXNzaW9uRXhwaXJlS2V5XCIpIHx8IEluZmluaXR5O1xuICAgIH0gY2F0Y2ggKGUpIHt9XG59XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/api/login.ts":
|
|
/*!**************************!*\
|
|
!*** ./src/api/login.ts ***!
|
|
\**************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var sessionManager_1 = __webpack_require__(/*! ../module/sessionManager */ "./src/module/sessionManager.ts");
|
|
exports.default = (function () {
|
|
return sessionManager_1.default.main();
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkRBQXFEO0FBRXJELG1CQUFlO0lBQ1gsT0FBTyx3QkFBYyxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ2hDLENBQUMsRUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzZXNzaW9uTWFuYWdlciBmcm9tICcuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXInXG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgICByZXR1cm4gc2Vzc2lvbk1hbmFnZXIubWFpbigpXG59XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/api/request.ts":
|
|
/*!****************************!*\
|
|
!*** ./src/api/request.ts ***!
|
|
\****************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var requestHandler_1 = __webpack_require__(/*! ../module/requestHandler */ "./src/module/requestHandler.ts");
|
|
exports.default = (function (obj) {
|
|
return requestHandler_1.default.request(obj);
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJEQUFxRDtBQUdyRCxtQkFBZSxVQUFRLEdBQW1CO0lBQ3RDLE9BQU8sd0JBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdEMsQ0FBQyxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlcXVlc3RIYW5kbGVyIGZyb20gJy4uL21vZHVsZS9yZXF1ZXN0SGFuZGxlcidcbmltcG9ydCB7IElSZXF1ZXN0T3B0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlJ1xuXG5leHBvcnQgZGVmYXVsdCA8VFJlc3A+KG9iajogSVJlcXVlc3RPcHRpb24pOiBQcm9taXNlPFRSZXNwPiA9PiB7XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyLnJlcXVlc3Qob2JqKVxufVxuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/api/setSession.ts":
|
|
/*!*******************************!*\
|
|
!*** ./src/api/setSession.ts ***!
|
|
\*******************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var sessionManager_1 = __webpack_require__(/*! ../module/sessionManager */ "./src/module/sessionManager.ts");
|
|
exports.default = (function (session) {
|
|
sessionManager_1.default.setSession(session);
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0U2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvc2V0U2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJEQUFxRDtBQUVyRCxtQkFBZSxVQUFDLE9BQWU7SUFDM0Isd0JBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNlc3Npb25NYW5hZ2VyIGZyb20gJy4uL21vZHVsZS9zZXNzaW9uTWFuYWdlcidcblxuZXhwb3J0IGRlZmF1bHQgKHNlc3Npb246IHN0cmluZykgPT4ge1xuICAgIHNlc3Npb25NYW5hZ2VyLnNldFNlc3Npb24oc2Vzc2lvbik7XG59XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/api/uploadFile.ts":
|
|
/*!*******************************!*\
|
|
!*** ./src/api/uploadFile.ts ***!
|
|
\*******************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var requestHandler_1 = __webpack_require__(/*! ../module/requestHandler */ "./src/module/requestHandler.ts");
|
|
exports.default = (function (obj) {
|
|
return requestHandler_1.default.uploadFile(obj);
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkRmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdXBsb2FkRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJEQUFxRDtBQUdyRCxtQkFBZSxVQUFDLEdBQXNCO0lBQ2xDLE9BQU8sd0JBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDekMsQ0FBQyxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlcXVlc3RIYW5kbGVyIGZyb20gJy4uL21vZHVsZS9yZXF1ZXN0SGFuZGxlcidcbmltcG9ydCB7IElVcGxvYWRGaWxlT3B0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiO1xuXG5leHBvcnQgZGVmYXVsdCAob2JqOiBJVXBsb2FkRmlsZU9wdGlvbikgPT4ge1xuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlci51cGxvYWRGaWxlKG9iailcbn1cbiJdfQ==
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/index.ts":
|
|
/*!**********************!*\
|
|
!*** ./src/index.ts ***!
|
|
\**********************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var init_1 = __webpack_require__(/*! ./api/init */ "./src/api/init.ts");
|
|
var request_1 = __webpack_require__(/*! ./api/request */ "./src/api/request.ts");
|
|
var uploadFile_1 = __webpack_require__(/*! ./api/uploadFile */ "./src/api/uploadFile.ts");
|
|
var setSession_1 = __webpack_require__(/*! ./api/setSession */ "./src/api/setSession.ts");
|
|
var login_1 = __webpack_require__(/*! ./api/login */ "./src/api/login.ts");
|
|
var getSession_1 = __webpack_require__(/*! ./api/getSession */ "./src/api/getSession.ts");
|
|
var getConfig_1 = __webpack_require__(/*! ./api/getConfig */ "./src/api/getConfig.ts");
|
|
var version_1 = __webpack_require__(/*! ./version */ "./src/version.ts");
|
|
var weRequestObject = {
|
|
init: init_1.default,
|
|
request: request_1.default,
|
|
uploadFile: uploadFile_1.default,
|
|
setSession: setSession_1.default,
|
|
login: login_1.default,
|
|
getSession: getSession_1.default,
|
|
getConfig: getConfig_1.default,
|
|
version: version_1.version
|
|
};
|
|
exports.default = weRequestObject;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBNkI7QUFDN0IseUNBQW1DO0FBQ25DLCtDQUF5QztBQUN6QywrQ0FBeUM7QUFDekMscUNBQStCO0FBQy9CLCtDQUF5QztBQUN6Qyw2Q0FBdUM7QUFFdkMscUNBQW1DO0FBRW5DLElBQU0sZUFBZSxHQUFjO0lBQ2pDLElBQUksZ0JBQUE7SUFDSixPQUFPLG1CQUFBO0lBQ1AsVUFBVSxzQkFBQTtJQUNWLFVBQVUsc0JBQUE7SUFDVixLQUFLLGlCQUFBO0lBQ0wsVUFBVSxzQkFBQTtJQUNWLFNBQVMscUJBQUE7SUFDVCxPQUFPLG1CQUFBO0NBQ1IsQ0FBQztBQUVGLGtCQUFlLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbml0IGZyb20gXCIuL2FwaS9pbml0XCJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCIuL2FwaS9yZXF1ZXN0XCJcbmltcG9ydCB1cGxvYWRGaWxlIGZyb20gXCIuL2FwaS91cGxvYWRGaWxlXCJcbmltcG9ydCBzZXRTZXNzaW9uIGZyb20gXCIuL2FwaS9zZXRTZXNzaW9uXCJcbmltcG9ydCBsb2dpbiBmcm9tIFwiLi9hcGkvbG9naW5cIlxuaW1wb3J0IGdldFNlc3Npb24gZnJvbSBcIi4vYXBpL2dldFNlc3Npb25cIlxuaW1wb3J0IGdldENvbmZpZyBmcm9tIFwiLi9hcGkvZ2V0Q29uZmlnXCJcbmltcG9ydCB7IHdlUmVxdWVzdCB9IGZyb20gXCIuL2ludGVyZmFjZVwiXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi92ZXJzaW9uJ1xuXG5jb25zdCB3ZVJlcXVlc3RPYmplY3Q6IHdlUmVxdWVzdCA9IHtcbiAgaW5pdCxcbiAgcmVxdWVzdCxcbiAgdXBsb2FkRmlsZSxcbiAgc2V0U2Vzc2lvbixcbiAgbG9naW4sXG4gIGdldFNlc3Npb24sXG4gIGdldENvbmZpZyxcbiAgdmVyc2lvblxufTtcblxuZXhwb3J0IGRlZmF1bHQgd2VSZXF1ZXN0T2JqZWN0O1xuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/cacheManager.ts":
|
|
/*!************************************!*\
|
|
!*** ./src/module/cacheManager.ts ***!
|
|
\************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
function get(obj) {
|
|
if (!obj.originUrl) {
|
|
return;
|
|
}
|
|
wx.getStorage({
|
|
key: obj.originUrl,
|
|
success: function (res) {
|
|
if (obj.cache === true ||
|
|
(typeof obj.cache === "function" && obj.cache(res.data))) {
|
|
if (typeof obj.success === "function") {
|
|
obj.success(res.data, { isCache: true });
|
|
}
|
|
}
|
|
if (typeof obj.complete === "function") {
|
|
obj.complete();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function set(obj, realData) {
|
|
if (!obj.originUrl) {
|
|
return;
|
|
}
|
|
if (obj.cache === true ||
|
|
(typeof obj.cache === "function" && obj.cache(realData))) {
|
|
wx.setStorage({
|
|
key: obj.originUrl,
|
|
data: realData
|
|
});
|
|
}
|
|
}
|
|
exports.default = {
|
|
get: get,
|
|
set: set
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9jYWNoZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxTQUFTLEdBQUcsQ0FBQyxHQUFtQjtJQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRTtRQUNoQixPQUFPO0tBQ1Y7SUFDRCxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ1YsR0FBRyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ2xCLE9BQU8sWUFBRSxHQUFHO1lBQ1IsSUFDSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUk7Z0JBQ2xCLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUMxRDtnQkFDRSxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7b0JBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO2lCQUN6QzthQUNKO1lBQ0QsSUFBRyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFO2dCQUNuQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbEI7UUFDTCxDQUFDO0tBQ0osQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVELFNBQVMsR0FBRyxDQUFDLEdBQW1CLEVBQUcsUUFBeUI7SUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDaEIsT0FBTztLQUNWO0lBQ0QsSUFDSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUk7UUFDbEIsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssVUFBVSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDMUQ7UUFDRSxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ1YsR0FBRyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1lBQ2xCLElBQUksRUFBRSxRQUFRO1NBQ2pCLENBQUMsQ0FBQTtLQUNMO0FBQ0wsQ0FBQztBQUVELGtCQUFlO0lBQ1gsR0FBRyxLQUFBO0lBQ0gsR0FBRyxLQUFBO0NBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZXF1ZXN0T3B0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiXG5cbmZ1bmN0aW9uIGdldChvYmo6IElSZXF1ZXN0T3B0aW9uKSB7XG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd3guZ2V0U3RvcmFnZSh7XG4gICAgICAgIGtleTogb2JqLm9yaWdpblVybCxcbiAgICAgICAgc3VjY2VzcyAocmVzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgb2JqLmNhY2hlID09PSB0cnVlIHx8XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBvYmouY2FjaGUgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY2FjaGUocmVzLmRhdGEpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7aXNDYWNoZTogdHJ1ZX0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgb2JqLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KVxufVxuXG5mdW5jdGlvbiBzZXQob2JqOiBJUmVxdWVzdE9wdGlvbiAsIHJlYWxEYXRhOiBzdHJpbmcgfCBvYmplY3QpIHtcbiAgICBpZiAoIW9iai5vcmlnaW5VcmwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAgIG9iai5jYWNoZSA9PT0gdHJ1ZSB8fFxuICAgICAgICAodHlwZW9mIG9iai5jYWNoZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jYWNoZShyZWFsRGF0YSkpXG4gICAgKSB7XG4gICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAga2V5OiBvYmoub3JpZ2luVXJsLFxuICAgICAgICAgICAgZGF0YTogcmVhbERhdGFcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBnZXQsXG4gICAgc2V0XG59O1xuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/catchHandler.ts":
|
|
/*!************************************!*\
|
|
!*** ./src/module/catchHandler.ts ***!
|
|
\************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = function (d, b) {
|
|
extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
return extendStatics(d, b);
|
|
};
|
|
return function (d, b) {
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.catchHandler = void 0;
|
|
var errorHandler_1 = __webpack_require__(/*! ./errorHandler */ "./src/module/errorHandler.ts");
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var ErrorWithData = (function (_super) {
|
|
__extends(ErrorWithData, _super);
|
|
function ErrorWithData(msg, data) {
|
|
if (data === void 0) { data = {}; }
|
|
var _this = _super.call(this, msg) || this;
|
|
_this.data = data;
|
|
return _this;
|
|
}
|
|
return ErrorWithData;
|
|
}(Error));
|
|
function catchHandler(e, obj, reject) {
|
|
var type = e.type, res = e.res;
|
|
if (typeof config_1.default.errorCallback === "function" && type === 'logic-error') {
|
|
config_1.default.errorCallback(obj, res);
|
|
}
|
|
if (obj.catchError) {
|
|
if (type === 'http-error') {
|
|
return reject(new Error(res.statusCode.toString()));
|
|
}
|
|
else if (type === 'logic-error') {
|
|
var msg = errorHandler_1.default.getErrorMsg(res);
|
|
return reject(new ErrorWithData(msg.content, res.data));
|
|
}
|
|
else {
|
|
return reject(e);
|
|
}
|
|
}
|
|
else {
|
|
if (type) {
|
|
return errorHandler_1.default.logicError(obj, res);
|
|
}
|
|
else {
|
|
return reject(e);
|
|
}
|
|
}
|
|
}
|
|
exports.catchHandler = catchHandler;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0Y2hIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9jYXRjaEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLCtDQUEwQztBQUMxQywwQ0FBb0M7QUFRcEM7SUFBNEIsaUNBQUs7SUFHN0IsdUJBQVksR0FBVyxFQUFFLElBQWM7UUFBZCxxQkFBQSxFQUFBLFNBQWM7UUFBdkMsWUFDSSxrQkFBTSxHQUFHLENBQUMsU0FFYjtRQURHLEtBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDOztJQUNyQixDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBNEIsS0FBSyxHQU9oQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQWEsRUFBRSxHQUF1QyxFQUFFLE1BQThCO0lBQ2hHLElBQUEsSUFBSSxHQUFVLENBQUMsS0FBWCxFQUFFLEdBQUcsR0FBSyxDQUFDLElBQU4sQ0FBTztJQUd4QixJQUFJLE9BQU8sZ0JBQU0sQ0FBQyxhQUFhLEtBQUssVUFBVSxJQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7UUFDdEUsZ0JBQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2xDO0lBRUQsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFO1FBQ2hCLElBQUksSUFBSSxLQUFLLFlBQVksRUFBRTtZQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2RDthQUFNLElBQUksSUFBSSxLQUFLLGFBQWEsRUFBRTtZQUMvQixJQUFJLEdBQUcsR0FBRyxzQkFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzNEO2FBQU07WUFFSCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtLQUNKO1NBQU07UUFDSCxJQUFJLElBQUksRUFBRTtZQUNOLE9BQU8sc0JBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzVDO2FBQU07WUFFSCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtLQUNKO0FBQ0wsQ0FBQztBQUVRLG9DQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlcXVlc3RPcHRpb24sIElVcGxvYWRGaWxlT3B0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiO1xuaW1wb3J0IGVycm9ySGFuZGxlciBmcm9tIFwiLi9lcnJvckhhbmRsZXJcIjtcbmltcG9ydCBjb25maWcgZnJvbSAnLi4vc3RvcmUvY29uZmlnJ1xuXG50eXBlIFRocm93RXJyb3JUeXBlID0gJ2xvZ2ljLWVycm9yJyB8ICdodHRwLWVycm9yJ1xuaW50ZXJmYWNlIFRocm93RXJyb3Ige1xuICAgIHR5cGU6IFRocm93RXJyb3JUeXBlXG4gICAgcmVzOiBhbnlcbn1cblxuY2xhc3MgRXJyb3JXaXRoRGF0YSBleHRlbmRzIEVycm9yIHtcbiAgICBkYXRhOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZywgZGF0YTogYW55ID0ge30pIHtcbiAgICAgICAgc3VwZXIobXNnKTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNhdGNoSGFuZGxlcihlOiBUaHJvd0Vycm9yLCBvYmo6IElSZXF1ZXN0T3B0aW9uIHwgSVVwbG9hZEZpbGVPcHRpb24sIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkge1xuICAgIGNvbnN0IHsgdHlwZSwgcmVzIH0gPSBlO1xuXG4gICAgLy8g5aaC5p6c5pyJ6YWN572u57uf5LiA6ZSZ6K+v5Zue6LCD5Ye95pWw77yM5YiZ5omn6KGM5a6D77yI5LuF6YC76L6R6ZSZ6K+v77yJXG4gICAgaWYgKHR5cGVvZiBjb25maWcuZXJyb3JDYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGUgPT09ICdsb2dpYy1lcnJvcicpIHtcbiAgICAgICAgY29uZmlnLmVycm9yQ2FsbGJhY2sob2JqLCByZXMpO1xuICAgIH1cblxuICAgIGlmIChvYmouY2F0Y2hFcnJvcikge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2h0dHAtZXJyb3InKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihyZXMuc3RhdHVzQ29kZS50b1N0cmluZygpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xvZ2ljLWVycm9yJykge1xuICAgICAgICAgICAgbGV0IG1zZyA9IGVycm9ySGFuZGxlci5nZXRFcnJvck1zZyhyZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3JXaXRoRGF0YShtc2cuY29udGVudCwgcmVzLmRhdGEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWFtuS7lmpz6ZSZ6K+vXG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvckhhbmRsZXIubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDlhbbku5Zqc+mUmeivr1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IHsgY2F0Y2hIYW5kbGVyIH0iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/durationReporter.ts":
|
|
/*!****************************************!*\
|
|
!*** ./src/module/durationReporter.ts ***!
|
|
\****************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var request_1 = __webpack_require__(/*! ../api/request */ "./src/api/request.ts");
|
|
function start(obj) {
|
|
obj._reportStartTime = new Date().getTime();
|
|
}
|
|
function end(obj) {
|
|
obj._reportEndTime = new Date().getTime();
|
|
if (obj.report && obj._reportStartTime) {
|
|
report(obj.report, obj._reportStartTime, obj._reportEndTime);
|
|
}
|
|
}
|
|
function report(name, startTime, endTime) {
|
|
if (typeof config_1.default.reportCGI === "function") {
|
|
config_1.default.reportCGI(name, startTime, endTime, request_1.default);
|
|
}
|
|
}
|
|
exports.default = {
|
|
start: start,
|
|
end: end,
|
|
report: report
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb25SZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGUvZHVyYXRpb25SZXBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUFvQztBQUNwQywwQ0FBb0M7QUFHcEMsU0FBUyxLQUFLLENBQUMsR0FBdUM7SUFDbEQsR0FBRyxDQUFDLGdCQUFnQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQVMsR0FBRyxDQUFDLEdBQXVDO0lBQ2hELEdBQUcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQyxJQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLGdCQUFnQixFQUFFO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQzFFO0FBQ0wsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLElBQVksRUFBRSxTQUFpQixFQUFFLE9BQWU7SUFDNUQsSUFBSSxPQUFPLGdCQUFNLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtRQUN4QyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxpQkFBTyxDQUFDLENBQUM7S0FDdkQ7QUFDTCxDQUFDO0FBRUQsa0JBQWU7SUFDWCxLQUFLLE9BQUE7SUFDTCxHQUFHLEtBQUE7SUFDSCxNQUFNLFFBQUE7Q0FDVCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9zdG9yZS9jb25maWcnXG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi9hcGkvcmVxdWVzdCdcbmltcG9ydCB7IElSZXF1ZXN0T3B0aW9uLCBJVXBsb2FkRmlsZU9wdGlvbiB9IGZyb20gXCIuLi9pbnRlcmZhY2VcIjtcblxuZnVuY3Rpb24gc3RhcnQob2JqOiBJUmVxdWVzdE9wdGlvbiB8IElVcGxvYWRGaWxlT3B0aW9uKSB7XG4gICAgb2JqLl9yZXBvcnRTdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbn1cblxuZnVuY3Rpb24gZW5kKG9iajogSVJlcXVlc3RPcHRpb24gfCBJVXBsb2FkRmlsZU9wdGlvbikge1xuICAgIG9iai5fcmVwb3J0RW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGlmKG9iai5yZXBvcnQgJiYgb2JqLl9yZXBvcnRTdGFydFRpbWUpIHtcbiAgICAgICAgcmVwb3J0KG9iai5yZXBvcnQgYXMgc3RyaW5nLCBvYmouX3JlcG9ydFN0YXJ0VGltZSwgb2JqLl9yZXBvcnRFbmRUaW1lKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcG9ydChuYW1lOiBzdHJpbmcsIHN0YXJ0VGltZTogbnVtYmVyLCBlbmRUaW1lOiBudW1iZXIpIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZXBvcnRDR0kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25maWcucmVwb3J0Q0dJKG5hbWUsIHN0YXJ0VGltZSwgZW5kVGltZSwgcmVxdWVzdCk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc3RhcnQsXG4gICAgZW5kLFxuICAgIHJlcG9ydFxufVxuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/errorHandler.ts":
|
|
/*!************************************!*\
|
|
!*** ./src/module/errorHandler.ts ***!
|
|
\************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var request_1 = __webpack_require__(/*! ../api/request */ "./src/api/request.ts");
|
|
function systemError(obj, res) {
|
|
if (typeof obj.fail === "function") {
|
|
obj.fail(res);
|
|
}
|
|
else {
|
|
var retry = function () { return request_1.default(obj).then(obj._resolve).catch(obj._reject); };
|
|
doError("", res.errMsg, retry);
|
|
}
|
|
}
|
|
function logicError(obj, res) {
|
|
if (typeof obj.fail === "function") {
|
|
obj.fail(res);
|
|
}
|
|
else if (typeof config_1.default.errorHandler === 'function') {
|
|
config_1.default.errorHandler(res.data);
|
|
}
|
|
else {
|
|
var _a = getErrorMsg(res), title = _a.title, content = _a.content;
|
|
var retry = function () { return request_1.default(obj).then(obj._resolve).catch(obj._reject); };
|
|
doError(title, content, retry);
|
|
}
|
|
}
|
|
function getErrorMsg(res) {
|
|
var title = "";
|
|
if (typeof config_1.default.errorTitle === "function") {
|
|
try {
|
|
title = config_1.default.errorTitle(res.data);
|
|
}
|
|
catch (e) {
|
|
}
|
|
}
|
|
else if (typeof config_1.default.errorTitle === "string") {
|
|
title = config_1.default.errorTitle;
|
|
}
|
|
var content = "";
|
|
if (typeof config_1.default.errorContent === "function") {
|
|
try {
|
|
content = config_1.default.errorContent(res.data);
|
|
}
|
|
catch (e) {
|
|
}
|
|
}
|
|
else if (typeof config_1.default.errorContent === "string") {
|
|
content = config_1.default.errorContent;
|
|
}
|
|
return { title: title, content: content };
|
|
}
|
|
function doError(title, content, retry) {
|
|
var showErrorRetryBtn = config_1.default.errorRetryBtn && typeof retry === "function";
|
|
wx.showModal(Object.assign({
|
|
title: title,
|
|
content: content || "网络或服务异常,请稍后重试",
|
|
}, !showErrorRetryBtn ? {
|
|
showCancel: false
|
|
} : {
|
|
showCancel: true,
|
|
confirmText: '重试',
|
|
success: function (res) {
|
|
if (res.confirm && typeof retry === "function")
|
|
retry();
|
|
}
|
|
}));
|
|
}
|
|
exports.default = {
|
|
systemError: systemError,
|
|
logicError: logicError,
|
|
doError: doError,
|
|
getErrorMsg: getErrorMsg
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBb0M7QUFDcEMsMENBQXFDO0FBR3JDLFNBQVMsV0FBVyxDQUFDLEdBQXVDLEVBQUUsR0FBNEM7SUFDdEcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO1FBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDakI7U0FBTTtRQUNILElBQU0sS0FBSyxHQUFHLGNBQU0sT0FBQSxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBbEQsQ0FBa0QsQ0FBQztRQUN2RSxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDbEM7QUFDTCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBdUMsRUFBRSxHQUF1RztJQUNoSyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7UUFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNqQjtTQUFNLElBQUksT0FBTyxnQkFBTSxDQUFDLFlBQVksS0FBSyxVQUFVLEVBQUU7UUFDbEQsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2pDO1NBQU07UUFDRyxJQUFBLEtBQW1CLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBbEMsS0FBSyxXQUFBLEVBQUUsT0FBTyxhQUFvQixDQUFDO1FBQzFDLElBQU0sS0FBSyxHQUFHLGNBQU0sT0FBQSxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBbEQsQ0FBa0QsQ0FBQztRQUN2RSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNsQztBQUNMLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxHQUF1RztJQUN4SCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDZixJQUFJLE9BQU8sZ0JBQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1FBQ3pDLElBQUk7WUFDQSxLQUFLLEdBQUcsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3RDO1FBQUMsT0FBTyxDQUFDLEVBQUU7U0FDWDtLQUNKO1NBQU0sSUFBSSxPQUFPLGdCQUFNLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtRQUM5QyxLQUFLLEdBQUcsZ0JBQU0sQ0FBQyxVQUFVLENBQUM7S0FDN0I7SUFFRCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxPQUFPLGdCQUFNLENBQUMsWUFBWSxLQUFLLFVBQVUsRUFBRTtRQUMzQyxJQUFJO1lBQ0EsT0FBTyxHQUFHLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUMxQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1NBQ1g7S0FDSjtTQUFNLElBQUksT0FBTyxnQkFBTSxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUU7UUFDaEQsT0FBTyxHQUFHLGdCQUFNLENBQUMsWUFBWSxDQUFDO0tBQ2pDO0lBRUQsT0FBTyxFQUFDLEtBQUssT0FBQSxFQUFFLE9BQU8sU0FBQSxFQUFDLENBQUE7QUFDM0IsQ0FBQztBQUdELFNBQVMsT0FBTyxDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQUUsS0FBaUI7SUFFOUQsSUFBTSxpQkFBaUIsR0FBRyxnQkFBTSxDQUFDLGFBQWEsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUM7SUFDOUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLEtBQUssT0FBQTtRQUNMLE9BQU8sRUFBRSxPQUFPLElBQUksZUFBZTtLQUN0QyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLFVBQVUsRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0EsVUFBVSxFQUFFLElBQUk7UUFDaEIsV0FBVyxFQUFFLElBQUk7UUFDakIsT0FBTyxFQUFQLFVBQVEsR0FBcUQ7WUFDekQsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVU7Z0JBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUQsQ0FBQztLQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQztBQUVELGtCQUFlO0lBQ1gsV0FBVyxhQUFBO0lBQ1gsVUFBVSxZQUFBO0lBQ1YsT0FBTyxTQUFBO0lBQ1AsV0FBVyxhQUFBO0NBQ2QsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25maWcgZnJvbSAnLi4vc3RvcmUvY29uZmlnJ1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi4vYXBpL3JlcXVlc3QnO1xuaW1wb3J0IHsgSVJlcXVlc3RPcHRpb24sIElVcGxvYWRGaWxlT3B0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiO1xuXG5mdW5jdGlvbiBzeXN0ZW1FcnJvcihvYmo6IElSZXF1ZXN0T3B0aW9uIHwgSVVwbG9hZEZpbGVPcHRpb24sIHJlczogV2VjaGF0TWluaXByb2dyYW0uR2VuZXJhbENhbGxiYWNrUmVzdWx0KSB7XG4gICAgaWYgKHR5cGVvZiBvYmouZmFpbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iai5mYWlsKHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmV0cnkgPSAoKSA9PiByZXF1ZXN0KG9iaikudGhlbihvYmouX3Jlc29sdmUpLmNhdGNoKG9iai5fcmVqZWN0KTtcbiAgICAgICAgZG9FcnJvcihcIlwiLCByZXMuZXJyTXNnLCByZXRyeSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2dpY0Vycm9yKG9iajogSVJlcXVlc3RPcHRpb24gfCBJVXBsb2FkRmlsZU9wdGlvbiwgcmVzOiBXZWNoYXRNaW5pcHJvZ3JhbS5SZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrUmVzdWx0IHwgV2VjaGF0TWluaXByb2dyYW0uVXBsb2FkRmlsZVN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkge1xuICAgIGlmICh0eXBlb2Ygb2JqLmZhaWwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmouZmFpbChyZXMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmZpZy5lcnJvckhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uZmlnLmVycm9ySGFuZGxlcihyZXMuZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qge3RpdGxlLCBjb250ZW50fSA9IGdldEVycm9yTXNnKHJlcyk7XG4gICAgICAgIGNvbnN0IHJldHJ5ID0gKCkgPT4gcmVxdWVzdChvYmopLnRoZW4ob2JqLl9yZXNvbHZlKS5jYXRjaChvYmouX3JlamVjdCk7XG4gICAgICAgIGRvRXJyb3IodGl0bGUsIGNvbnRlbnQsIHJldHJ5KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldEVycm9yTXNnKHJlczogV2VjaGF0TWluaXByb2dyYW0uUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCB8IFdlY2hhdE1pbmlwcm9ncmFtLlVwbG9hZEZpbGVTdWNjZXNzQ2FsbGJhY2tSZXN1bHQpIHtcbiAgICBsZXQgdGl0bGUgPSBcIlwiO1xuICAgIGlmICh0eXBlb2YgY29uZmlnLmVycm9yVGl0bGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGl0bGUgPSBjb25maWcuZXJyb3JUaXRsZShyZXMuZGF0YSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnLmVycm9yVGl0bGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGl0bGUgPSBjb25maWcuZXJyb3JUaXRsZTtcbiAgICB9XG5cbiAgICBsZXQgY29udGVudCA9IFwiXCI7XG4gICAgaWYgKHR5cGVvZiBjb25maWcuZXJyb3JDb250ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb25maWcuZXJyb3JDb250ZW50KHJlcy5kYXRhKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcuZXJyb3JDb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGNvbnRlbnQgPSBjb25maWcuZXJyb3JDb250ZW50O1xuICAgIH1cblxuICAgIHJldHVybiB7dGl0bGUsIGNvbnRlbnR9XG59XG5cbi8vIOm7mOiupOmUmeivr+WkhOeQhuaYr+W8ueeql1xuZnVuY3Rpb24gZG9FcnJvcih0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIHJldHJ5PzogKCkgPT4gYW55KSB7XG4gICAgLy8g5piv5ZCm5pi+56S66YeN6K+V5oyJ6ZKuXG4gICAgY29uc3Qgc2hvd0Vycm9yUmV0cnlCdG4gPSBjb25maWcuZXJyb3JSZXRyeUJ0biAmJiB0eXBlb2YgcmV0cnkgPT09IFwiZnVuY3Rpb25cIjtcbiAgICB3eC5zaG93TW9kYWwoT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICBjb250ZW50OiBjb250ZW50IHx8IFwi572R57uc5oiW5pyN5Yqh5byC5bi477yM6K+356iN5ZCO6YeN6K+VXCIsXG4gICAgfSwgIXNob3dFcnJvclJldHJ5QnRuID8ge1xuICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZVxuICAgIH0gOiB7XG4gICAgICAgIHNob3dDYW5jZWw6IHRydWUsXG4gICAgICAgIGNvbmZpcm1UZXh0OiAn6YeN6K+VJyxcbiAgICAgICAgc3VjY2VzcyhyZXM6IFdlY2hhdE1pbmlwcm9ncmFtLlNob3dNb2RhbFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlcy5jb25maXJtICYmIHR5cGVvZiByZXRyeSA9PT0gXCJmdW5jdGlvblwiKSByZXRyeSgpO1xuICAgICAgICB9XG4gICAgfSkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc3lzdGVtRXJyb3IsXG4gICAgbG9naWNFcnJvcixcbiAgICBkb0Vycm9yLFxuICAgIGdldEVycm9yTXNnXG59XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/mockManager.ts":
|
|
/*!***********************************!*\
|
|
!*** ./src/module/mockManager.ts ***!
|
|
\***********************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var loading_1 = __webpack_require__(/*! ../util/loading */ "./src/util/loading.ts");
|
|
function get(obj) {
|
|
if (!(config_1.default.mockJson[obj.url] || (obj.originUrl && config_1.default.mockJson[obj.originUrl]))) {
|
|
return false;
|
|
}
|
|
var data = config_1.default.mockJson[obj.url] || (obj.originUrl ? config_1.default.mockJson[obj.originUrl] : '');
|
|
data = JSON.parse(JSON.stringify(data));
|
|
var res = {
|
|
data: data,
|
|
statusCode: 200
|
|
};
|
|
loading_1.default.hide();
|
|
return res;
|
|
}
|
|
exports.default = {
|
|
get: get
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlL21vY2tNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMENBQW9DO0FBQ3BDLDJDQUFxQztBQUdyQyxTQUFTLEdBQUcsQ0FBQyxHQUF1QztJQUVoRCxJQUFHLENBQUMsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLGdCQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFFakYsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxJQUFJLElBQUksR0FBRyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTdGLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4QyxJQUFNLEdBQUcsR0FBRztRQUNSLElBQUksTUFBQTtRQUNKLFVBQVUsRUFBRSxHQUFHO0tBQ2xCLENBQUM7SUFFRixpQkFBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2YsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDO0FBRUQsa0JBQWU7SUFDWCxHQUFHLEtBQUE7Q0FDTixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9zdG9yZS9jb25maWcnXG5pbXBvcnQgbG9hZGluZyBmcm9tICcuLi91dGlsL2xvYWRpbmcnXG5pbXBvcnQgeyBJUmVxdWVzdE9wdGlvbiwgSVVwbG9hZEZpbGVPcHRpb24gfSBmcm9tIFwiLi4vaW50ZXJmYWNlXCJcblxuZnVuY3Rpb24gZ2V0KG9iajogSVJlcXVlc3RPcHRpb24gfCBJVXBsb2FkRmlsZU9wdGlvbik6IGFueSB7XG5cbiAgICBpZighKGNvbmZpZy5tb2NrSnNvbltvYmoudXJsXSB8fCAob2JqLm9yaWdpblVybCAmJiBjb25maWcubW9ja0pzb25bb2JqLm9yaWdpblVybF0pKSkge1xuICAgICAgICAvLyBtb2NrIOayoeacieWvueW6lOaOpeWPo+eahOaVsOaNrlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IGRhdGEgPSBjb25maWcubW9ja0pzb25bb2JqLnVybF0gfHwgKG9iai5vcmlnaW5VcmwgPyBjb25maWcubW9ja0pzb25bb2JqLm9yaWdpblVybF0gOiAnJyk7XG4gICAgLy8gZGVlcCBjb3B5XG4gICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwXG4gICAgfTtcblxuICAgIGxvYWRpbmcuaGlkZSgpO1xuICAgIHJldHVybiByZXNcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGdldFxufVxuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/requestHandler.ts":
|
|
/*!**************************************!*\
|
|
!*** ./src/module/requestHandler.ts ***!
|
|
\**************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
var __assign = (this && this.__assign) || function () {
|
|
__assign = Object.assign || function(t) {
|
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
s = arguments[i];
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
t[p] = s[p];
|
|
}
|
|
return t;
|
|
};
|
|
return __assign.apply(this, arguments);
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var loading_1 = __webpack_require__(/*! ../util/loading */ "./src/util/loading.ts");
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var status_1 = __webpack_require__(/*! ../store/status */ "./src/store/status.ts");
|
|
var mockManager_1 = __webpack_require__(/*! ./mockManager */ "./src/module/mockManager.ts");
|
|
var cacheManager_1 = __webpack_require__(/*! ./cacheManager */ "./src/module/cacheManager.ts");
|
|
var sessionManager_1 = __webpack_require__(/*! ./sessionManager */ "./src/module/sessionManager.ts");
|
|
var responseHandler_1 = __webpack_require__(/*! ./responseHandler */ "./src/module/responseHandler.ts");
|
|
var durationReporter_1 = __webpack_require__(/*! ./durationReporter */ "./src/module/durationReporter.ts");
|
|
var url_1 = __webpack_require__(/*! ../util/url */ "./src/util/url.ts");
|
|
var errorHandler_1 = __webpack_require__(/*! ./errorHandler */ "./src/module/errorHandler.ts");
|
|
var catchHandler_1 = __webpack_require__(/*! ./catchHandler */ "./src/module/catchHandler.ts");
|
|
function format(originUrl) {
|
|
if (originUrl.startsWith('http')) {
|
|
return originUrl;
|
|
}
|
|
else {
|
|
var urlPerfix = config_1.default.urlPerfix;
|
|
if (typeof config_1.default.urlPerfix === "function") {
|
|
urlPerfix = config_1.default.urlPerfix();
|
|
}
|
|
return urlPerfix + originUrl;
|
|
}
|
|
}
|
|
function preDo(obj, resolve, reject) {
|
|
if (typeof obj.beforeSend === "function") {
|
|
obj.beforeSend();
|
|
}
|
|
if (typeof obj.reLoginCount === "undefined") {
|
|
obj.reLoginCount = 0;
|
|
}
|
|
else {
|
|
obj.reLoginCount++;
|
|
}
|
|
if (obj.showLoading) {
|
|
loading_1.default.show(obj.showLoading);
|
|
}
|
|
if (!obj.originUrl) {
|
|
obj.originUrl = obj.url;
|
|
obj.url = format(obj.url);
|
|
}
|
|
obj._resolve = resolve;
|
|
obj._reject = reject;
|
|
return obj;
|
|
}
|
|
function initializeRequestObj(obj) {
|
|
var _a, _b;
|
|
if (!obj.data) {
|
|
obj.data = {};
|
|
}
|
|
obj.header = obj.header ? obj.header : {};
|
|
if (typeof config_1.default.setHeader === 'function') {
|
|
var header = config_1.default.setHeader();
|
|
if (typeof header === 'object') {
|
|
obj.header = __assign(__assign({}, obj.header), header);
|
|
}
|
|
}
|
|
else if (typeof config_1.default.setHeader === 'object') {
|
|
obj.header = __assign(__assign({}, obj.header), config_1.default.setHeader);
|
|
}
|
|
if (obj.originUrl !== config_1.default.codeToSession.url && status_1.default.session) {
|
|
obj.data = __assign(__assign({}, obj.data), (_a = {}, _a[config_1.default.sessionName] = status_1.default.session, _a));
|
|
}
|
|
var gd = getGlobalData();
|
|
obj.data = __assign(__assign({}, gd), obj.data);
|
|
obj.method = obj.method || 'GET';
|
|
obj.dataType = obj.dataType || 'json';
|
|
if (!config_1.default.doNotUseQueryString && obj.method !== "GET") {
|
|
if (status_1.default.session) {
|
|
obj.url = url_1.default.setParams(obj.url, (_b = {}, _b[config_1.default.sessionName] = status_1.default.session, _b));
|
|
}
|
|
obj.url = url_1.default.setParams(obj.url, gd);
|
|
}
|
|
durationReporter_1.default.start(obj);
|
|
return obj;
|
|
}
|
|
function initializeUploadFileObj(obj) {
|
|
var _a, _b;
|
|
if (!obj.formData) {
|
|
obj.formData = {};
|
|
}
|
|
obj.header = obj.header ? obj.header : {};
|
|
if (typeof config_1.default.setHeader === 'function') {
|
|
var header = config_1.default.setHeader();
|
|
if (typeof header === 'object') {
|
|
obj.header = __assign(__assign({}, obj.header), header);
|
|
}
|
|
}
|
|
else if (typeof config_1.default.setHeader === 'object') {
|
|
obj.header = __assign(__assign({}, obj.header), config_1.default.setHeader);
|
|
}
|
|
if (obj.originUrl !== config_1.default.codeToSession.url && status_1.default.session) {
|
|
obj.formData = __assign(__assign({}, obj.formData), (_a = {}, _a[config_1.default.sessionName] = status_1.default.session, _a));
|
|
}
|
|
var gd = getGlobalData();
|
|
obj.formData = __assign(__assign({}, gd), obj.formData);
|
|
if (!config_1.default.doNotUseQueryString) {
|
|
if (status_1.default.session) {
|
|
obj.url = url_1.default.setParams(obj.url, (_b = {}, _b[config_1.default.sessionName] = status_1.default.session, _b));
|
|
}
|
|
obj.url = url_1.default.setParams(obj.url, gd);
|
|
}
|
|
durationReporter_1.default.start(obj);
|
|
return obj;
|
|
}
|
|
function getGlobalData() {
|
|
var gd = {};
|
|
if (typeof config_1.default.globalData === "function") {
|
|
gd = config_1.default.globalData();
|
|
}
|
|
else if (typeof config_1.default.globalData === "object") {
|
|
gd = config_1.default.globalData;
|
|
}
|
|
return gd;
|
|
}
|
|
function doRequest(obj) {
|
|
obj = initializeRequestObj(obj);
|
|
if (typeof config_1.default.beforeSend === "function") {
|
|
obj = config_1.default.beforeSend(obj, status_1.default.session);
|
|
}
|
|
return new Promise(function (resolve, reject) {
|
|
wx.request({
|
|
url: obj.url,
|
|
data: obj.data,
|
|
method: obj.method,
|
|
header: obj.header || {},
|
|
dataType: obj.dataType || 'json',
|
|
success: function (res) {
|
|
return resolve(res);
|
|
},
|
|
fail: function (res) {
|
|
errorHandler_1.default.systemError(obj, res);
|
|
return reject(res);
|
|
},
|
|
complete: function () {
|
|
if (typeof obj.complete === "function") {
|
|
obj.complete();
|
|
}
|
|
if (obj.showLoading) {
|
|
loading_1.default.hide();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
function doUploadFile(obj) {
|
|
obj = initializeUploadFileObj(obj);
|
|
if (typeof config_1.default.beforeSend === "function") {
|
|
obj = config_1.default.beforeSend(obj, status_1.default.session);
|
|
}
|
|
return new Promise(function (resolve, reject) {
|
|
wx.uploadFile({
|
|
url: obj.url,
|
|
filePath: obj.filePath || '',
|
|
name: obj.name || '',
|
|
formData: obj.formData,
|
|
success: function (res) {
|
|
return resolve(res);
|
|
},
|
|
fail: function (res) {
|
|
errorHandler_1.default.systemError(obj, res);
|
|
return reject(res);
|
|
},
|
|
complete: function () {
|
|
if (typeof obj.complete === "function") {
|
|
obj.complete();
|
|
}
|
|
if (obj.showLoading) {
|
|
loading_1.default.hide();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
function request(obj) {
|
|
return new Promise(function (resolve, reject) {
|
|
obj = preDo(obj, resolve, reject);
|
|
if (config_1.default.mockJson) {
|
|
var mockResponse = mockManager_1.default.get(obj);
|
|
if (mockResponse) {
|
|
var response = responseHandler_1.default.responseForRequest(mockResponse, obj);
|
|
return resolve(response);
|
|
}
|
|
}
|
|
if (obj.cache) {
|
|
cacheManager_1.default.get(obj);
|
|
}
|
|
sessionManager_1.default.main(obj).then(function () {
|
|
return doRequest(obj);
|
|
}).then(function (res) {
|
|
var response = responseHandler_1.default.responseForRequest(res, obj);
|
|
if (response != null) {
|
|
return resolve(response);
|
|
}
|
|
}).catch(function (e) {
|
|
return catchHandler_1.catchHandler(e, obj, reject);
|
|
});
|
|
});
|
|
}
|
|
function uploadFile(obj) {
|
|
return new Promise(function (resolve, reject) {
|
|
obj = preDo(obj, resolve, reject);
|
|
if (config_1.default.mockJson) {
|
|
var mockResponse = mockManager_1.default.get(obj);
|
|
if (mockResponse) {
|
|
var response = responseHandler_1.default.responseForUploadFile(mockResponse, obj);
|
|
return resolve(response);
|
|
}
|
|
}
|
|
sessionManager_1.default.main(obj).then(function () {
|
|
return doUploadFile(obj);
|
|
}).then(function (res) {
|
|
var response = responseHandler_1.default.responseForUploadFile(res, obj);
|
|
if (response != null) {
|
|
return resolve(response);
|
|
}
|
|
}).catch(function (e) {
|
|
catchHandler_1.catchHandler(e, obj, reject);
|
|
});
|
|
});
|
|
}
|
|
exports.default = {
|
|
format: format,
|
|
request: request,
|
|
uploadFile: uploadFile
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBcUM7QUFDckMsMENBQW9DO0FBQ3BDLDBDQUFvQztBQUNwQyw2Q0FBdUM7QUFDdkMsK0NBQXlDO0FBQ3pDLG1EQUE2QztBQUM3QyxxREFBK0M7QUFDL0MsdURBQWlEO0FBQ2pELG1DQUE2QjtBQUU3QiwrQ0FBMEM7QUFDMUMsK0NBQThDO0FBRzlDLFNBQVMsTUFBTSxDQUFDLFNBQWlCO0lBQzdCLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUM5QixPQUFPLFNBQVMsQ0FBQTtLQUNuQjtTQUFNO1FBQ0gsSUFBSSxTQUFTLEdBQUcsZ0JBQU0sQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxPQUFPLGdCQUFNLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUN4QyxTQUFTLEdBQUcsZ0JBQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtTQUNqQztRQUNELE9BQU8sU0FBUyxHQUFHLFNBQVMsQ0FBQztLQUNoQztBQUNMLENBQUM7QUFHRCxTQUFTLEtBQUssQ0FBK0MsR0FBTSxFQUFFLE9BQThCLEVBQUUsTUFBK0I7SUFDaEksSUFBSSxPQUFPLEdBQUcsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1FBQ3RDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNwQjtJQUVELElBQUksT0FBTyxHQUFHLENBQUMsWUFBWSxLQUFLLFdBQVcsRUFBRTtRQUN6QyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztLQUN4QjtTQUFNO1FBQ0gsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBQ3RCO0lBRUQsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFO1FBQ2pCLGlCQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFX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LENBQUE7QUFDTixDQUFDO0FBRUQsa0JBQWU7SUFDWCxNQUFNLFFBQUE7SUFDTixPQUFPLFNBQUE7SUFDUCxVQUFVLFlBQUE7Q0FDYixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRpbmcgZnJvbSAnLi4vdXRpbC9sb2FkaW5nJ1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9zdG9yZS9jb25maWcnXG5pbXBvcnQgc3RhdHVzIGZyb20gJy4uL3N0b3JlL3N0YXR1cydcbmltcG9ydCBtb2NrTWFuYWdlciBmcm9tICcuL21vY2tNYW5hZ2VyJ1xuaW1wb3J0IGNhY2hlTWFuYWdlciBmcm9tICcuL2NhY2hlTWFuYWdlcidcbmltcG9ydCBzZXNzaW9uTWFuYWdlciBmcm9tICcuL3Nlc3Npb25NYW5hZ2VyJ1xuaW1wb3J0IHJlc3BvbnNlSGFuZGxlciBmcm9tICcuL3Jlc3BvbnNlSGFuZGxlcidcbmltcG9ydCBkdXJhdGlvblJlcG9ydGVyIGZyb20gXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIlxuaW1wb3J0IHVybCBmcm9tICcuLi91dGlsL3VybCdcbmltcG9ydCB7IElSZXF1ZXN0T3B0aW9uLCBJVXBsb2FkRmlsZU9wdGlvbiB9IGZyb20gXCIuLi9pbnRlcmZhY2VcIlxuaW1wb3J0IGVycm9ySGFuZGxlciBmcm9tIFwiLi9lcnJvckhhbmRsZXJcIjtcbmltcG9ydCB7IGNhdGNoSGFuZGxlciB9IGZyb20gJy4vY2F0Y2hIYW5kbGVyJztcblxuLy8g5qC85byP5YyWdXJsXG5mdW5jdGlvbiBmb3JtYXQob3JpZ2luVXJsOiBzdHJpbmcpIHtcbiAgICBpZiAob3JpZ2luVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICByZXR1cm4gb3JpZ2luVXJsXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHVybFBlcmZpeCA9IGNvbmZpZy51cmxQZXJmaXg7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLnVybFBlcmZpeCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB1cmxQZXJmaXggPSBjb25maWcudXJsUGVyZml4KClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsUGVyZml4ICsgb3JpZ2luVXJsO1xuICAgIH1cbn1cblxuLy8g5omA5pyJ6K+35rGC5Y+R5Ye65YmN6ZyA6KaB5YGa55qE5LqL5oOFXG5mdW5jdGlvbiBwcmVEbzxUIGV4dGVuZHMgSVJlcXVlc3RPcHRpb24gfCBJVXBsb2FkRmlsZU9wdGlvbj4ob2JqOiBULCByZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQsIHJlamVjdD86IChyZWFzb24/OiBhbnkpID0+IHZvaWQpOiBUIHtcbiAgICBpZiAodHlwZW9mIG9iai5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmJlZm9yZVNlbmQoKTtcbiAgICB9XG4gICAgLy8g55m75b2V5oCB5aSx5pWI77yM6YeN5aSN55m75b2V6K6h5pWwXG4gICAgaWYgKHR5cGVvZiBvYmoucmVMb2dpbkNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgIGxvYWRpbmcuc2hvdyhvYmouc2hvd0xvYWRpbmcpO1xuICAgIH1cblxuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICBvYmoub3JpZ2luVXJsID0gb2JqLnVybDtcbiAgICAgICAgb2JqLnVybCA9IGZvcm1hdChvYmoudXJsKTtcbiAgICB9XG5cbiAgICBvYmouX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIG9iai5fcmVqZWN0ID0gcmVqZWN0O1xuXG4gICAgcmV0dXJuIG9iajtcbn1cblxuLy8g5qC85byP5YyW5aSE55CG6K+35rGC55qEb2Jq5YaF5a65XG5mdW5jdGlvbiBpbml0aWFsaXplUmVxdWVzdE9iaihvYmo6IElSZXF1ZXN0T3B0aW9uKSB7XG5cbiAgICBpZiAoIW9iai5kYXRhKSB7XG4gICAgICAgIG9iai5kYXRhID0ge307XG4gICAgfVxuICAgIFxuICAgIG9iai5oZWFkZXIgPSBvYmouaGVhZGVyID8gb2JqLmhlYWRlciA6IHt9O1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnNldEhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsZXQgaGVhZGVyID0gY29uZmlnLnNldEhlYWRlcigpO1xuICAgICAgICBpZiAodHlwZW9mIGhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIG9iai5oZWFkZXIgPSB7Li4ub2JqLmhlYWRlciwgLi4uaGVhZGVyfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmZpZy5zZXRIZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIG9iai5oZWFkZXIgPSB7Li4ub2JqLmhlYWRlciwgLi4uY29uZmlnLnNldEhlYWRlcn07XG4gICAgfVxuXG4gICAgaWYgKG9iai5vcmlnaW5VcmwgIT09IGNvbmZpZy5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXMuc2Vzc2lvbikge1xuICAgICAgICBvYmouZGF0YSA9IHsgLi4ub2JqLmRhdGEgYXMgb2JqZWN0LCBbY29uZmlnLnNlc3Npb25OYW1lXTogc3RhdHVzLnNlc3Npb24gfTtcbiAgICB9XG5cbiAgICAvLyDlpoLmnpzmnInlhajlsYDlj4LmlbDvvIzliJnmt7vliqBcbiAgICBjb25zdCBnZCA9IGdldEdsb2JhbERhdGEoKTtcbiAgICBvYmouZGF0YSA9IHsgLi4uZ2QsIC4uLm9iai5kYXRhIGFzIG9iamVjdCB9O1xuXG4gICAgb2JqLm1ldGhvZCA9IG9iai5tZXRob2QgfHwgJ0dFVCc7XG4gICAgb2JqLmRhdGFUeXBlID0gb2JqLmRhdGFUeXBlIHx8ICdqc29uJztcblxuICAgIC8vIOWmguaenOivt+axguS4jeaYr0dFVO+8jOWImeWcqFVSTOS4reiHquWKqOWKoOS4iueZu+W9leaAgeWSjOWFqOWxgOWPguaVsFxuICAgIGlmICghY29uZmlnLmRvTm90VXNlUXVlcnlTdHJpbmcgJiYgb2JqLm1ldGhvZCAhPT0gXCJHRVRcIikge1xuICAgICAgICBpZiAoc3RhdHVzLnNlc3Npb24pIHtcbiAgICAgICAgICAgIG9iai51cmwgPSB1cmwuc2V0UGFyYW1zKG9iai51cmwsIHsgW2NvbmZpZy5zZXNzaW9uTmFtZV06IHN0YXR1cy5zZXNzaW9uIH0pO1xuICAgICAgICB9XG4gICAgICAgIG9iai51cmwgPSB1cmwuc2V0UGFyYW1zKG9iai51cmwsIGdkKTtcbiAgICB9XG5cbiAgICBkdXJhdGlvblJlcG9ydGVyLnN0YXJ0KG9iaik7XG5cbiAgICByZXR1cm4gb2JqO1xufVxuXG4vLyDmoLzlvI/ljJblpITnkIbkuIrkvKDmlofku7bnmoRvYmrlhoXlrrlcbmZ1bmN0aW9uIGluaXRpYWxpemVVcGxvYWRGaWxlT2JqKG9iajogSVVwbG9hZEZpbGVPcHRpb24pIHtcbiAgICBpZiAoIW9iai5mb3JtRGF0YSkge1xuICAgICAgICBvYmouZm9ybURhdGEgPSB7fTtcbiAgICB9XG5cbiAgICBvYmouaGVhZGVyID0gb2JqLmhlYWRlciA/IG9iai5oZWFkZXIgOiB7fTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5zZXRIZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbGV0IGhlYWRlciA9IGNvbmZpZy5zZXRIZWFkZXIoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBvYmouaGVhZGVyID0gey4uLm9iai5oZWFkZXIsIC4uLmhlYWRlcn07XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcuc2V0SGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICBvYmouaGVhZGVyID0gey4uLm9iai5oZWFkZXIsIC4uLmNvbmZpZy5zZXRIZWFkZXJ9O1xuICAgIH1cblxuICAgIGlmIChvYmoub3JpZ2luVXJsICE9PSBjb25maWcuY29kZVRvU2Vzc2lvbi51cmwgJiYgc3RhdHVzLnNlc3Npb24pIHtcbiAgICAgICAgb2JqLmZvcm1EYXRhID0geyAuLi5vYmouZm9ybURhdGEgYXMgb2JqZWN0LCBbY29uZmlnLnNlc3Npb25OYW1lXTogc3RhdHVzLnNlc3Npb24gfTtcbiAgICB9XG5cbiAgICAvLyDlpoLmnpzmnInlhajlsYDlj4LmlbDvvIzliJnmt7vliqBcbiAgICBjb25zdCBnZCA9IGdldEdsb2JhbERhdGEoKTtcbiAgICBvYmouZm9ybURhdGEgPSB7IC4uLmdkLCAuLi5vYmouZm9ybURhdGEgfTtcblxuICAgIGlmICghY29uZmlnLmRvTm90VXNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgLy8g5bCG55m76ZmG5oCB5Lmf5bim5ZyodXJs5LiKXG4gICAgICAgIGlmIChzdGF0dXMuc2Vzc2lvbikge1xuICAgICAgICAgICAgb2JqLnVybCA9IHVybC5zZXRQYXJhbXMob2JqLnVybCwgeyBbY29uZmlnLnNlc3Npb25OYW1lXTogc3RhdHVzLnNlc3Npb24gfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5YWo5bGA5Y+C5pWw5ZCM5pe25pS+5ZyodXJs5LiKXG4gICAgICAgIG9iai51cmwgPSB1cmwuc2V0UGFyYW1zKG9iai51cmwsIGdkKTtcbiAgICB9XG5cbiAgICBkdXJhdGlvblJlcG9ydGVyLnN0YXJ0KG9iaik7XG5cbiAgICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBnZXRHbG9iYWxEYXRhKCkge1xuICAgIGxldCBnZDogYW55ID0ge307XG4gICAgaWYgKHR5cGVvZiBjb25maWcuZ2xvYmFsRGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGdkID0gY29uZmlnLmdsb2JhbERhdGEoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcuZ2xvYmFsRGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBnZCA9IGNvbmZpZy5nbG9iYWxEYXRhO1xuICAgIH1cbiAgICByZXR1cm4gZ2Q7XG59XG5cbmZ1bmN0aW9uIGRvUmVxdWVzdChvYmo6IElSZXF1ZXN0T3B0aW9uKSB7XG4gICAgb2JqID0gaW5pdGlhbGl6ZVJlcXVlc3RPYmoob2JqKTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqID0gY29uZmlnLmJlZm9yZVNlbmQob2JqLCBzdGF0dXMuc2Vzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHd4LnJlcXVlc3Qoe1xuICAgICAgICAgICAgdXJsOiBvYmoudXJsLFxuICAgICAgICAgICAgZGF0YTogb2JqLmRhdGEsXG4gICAgICAgICAgICBtZXRob2Q6IG9iai5tZXRob2QsXG4gICAgICAgICAgICBoZWFkZXI6IG9iai5oZWFkZXIgfHwge30sXG4gICAgICAgICAgICBkYXRhVHlwZTogb2JqLmRhdGFUeXBlIHx8ICdqc29uJyxcbiAgICAgICAgICAgIHN1Y2Nlc3MocmVzOiBXZWNoYXRNaW5pcHJvZ3JhbS5SZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsKHJlczogV2VjaGF0TWluaXByb2dyYW0uR2VuZXJhbENhbGxiYWNrUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyLnN5c3RlbUVycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gZG9VcGxvYWRGaWxlKG9iajogSVVwbG9hZEZpbGVPcHRpb24pIHtcbiAgICBvYmogPSBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmopO1xuICAgIGlmICh0eXBlb2YgY29uZmlnLmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmogPSBjb25maWcuYmVmb3JlU2VuZChvYmosIHN0YXR1cy5zZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgd3gudXBsb2FkRmlsZSh7XG4gICAgICAgICAgICB1cmw6IG9iai51cmwsXG4gICAgICAgICAgICBmaWxlUGF0aDogb2JqLmZpbGVQYXRoIHx8ICcnLFxuICAgICAgICAgICAgbmFtZTogb2JqLm5hbWUgfHwgJycsXG4gICAgICAgICAgICBmb3JtRGF0YTogb2JqLmZvcm1EYXRhLFxuICAgICAgICAgICAgc3VjY2VzcyhyZXM6IFdlY2hhdE1pbmlwcm9ncmFtLlVwbG9hZEZpbGVTdWNjZXNzQ2FsbGJhY2tSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWwocmVzOiBXZWNoYXRNaW5pcHJvZ3JhbS5HZW5lcmFsQ2FsbGJhY2tSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIuc3lzdGVtRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZSgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5mdW5jdGlvbiByZXF1ZXN0PFRSZXNwPihvYmo6IElSZXF1ZXN0T3B0aW9uKTogUHJvbWlzZTxUUmVzcD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaiwgcmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgICAgICBpZiAoY29uZmlnLm1vY2tKc29uKSB7XG4gICAgICAgICAgICBsZXQgbW9ja1Jlc3BvbnNlID0gbW9ja01hbmFnZXIuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yUmVxdWVzdChtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iai5jYWNoZSkge1xuICAgICAgICAgICAgY2FjaGVNYW5hZ2VyLmdldChvYmopO1xuICAgICAgICB9XG5cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXIubWFpbihvYmopLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRvUmVxdWVzdChvYmopXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yUmVxdWVzdChyZXMgYXMgV2VjaGF0TWluaXByb2dyYW0uUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCwgb2JqKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhdGNoSGFuZGxlcihlLCBvYmosIHJlamVjdClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5mdW5jdGlvbiB1cGxvYWRGaWxlKG9iajogSVVwbG9hZEZpbGVPcHRpb24pOiBhbnkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaiwgcmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgICAgICBpZiAoY29uZmlnLm1vY2tKc29uKSB7XG4gICAgICAgICAgICBsZXQgbW9ja1Jlc3BvbnNlID0gbW9ja01hbmFnZXIuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yVXBsb2FkRmlsZShtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXIubWFpbihvYmopLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRvVXBsb2FkRmlsZShvYmopXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yVXBsb2FkRmlsZShyZXMgYXMgV2VjaGF0TWluaXByb2dyYW0uVXBsb2FkRmlsZVN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCwgb2JqKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgY2F0Y2hIYW5kbGVyKGUsIG9iaiwgcmVqZWN0KVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBmb3JtYXQsXG4gICAgcmVxdWVzdCxcbiAgICB1cGxvYWRGaWxlXG59XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/responseHandler.ts":
|
|
/*!***************************************!*\
|
|
!*** ./src/module/responseHandler.ts ***!
|
|
\***************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var requestHandler_1 = __webpack_require__(/*! ./requestHandler */ "./src/module/requestHandler.ts");
|
|
var errorHandler_1 = __webpack_require__(/*! ./errorHandler */ "./src/module/errorHandler.ts");
|
|
var cacheManager_1 = __webpack_require__(/*! ./cacheManager */ "./src/module/cacheManager.ts");
|
|
var durationReporter_1 = __webpack_require__(/*! ./durationReporter */ "./src/module/durationReporter.ts");
|
|
var sessionManager_1 = __webpack_require__(/*! ./sessionManager */ "./src/module/sessionManager.ts");
|
|
var jsonSuperset_1 = __webpack_require__(/*! ../util/jsonSuperset */ "./src/util/jsonSuperset.ts");
|
|
function responseForRequest(res, obj) {
|
|
if (res.statusCode === 200) {
|
|
durationReporter_1.default.end(obj);
|
|
if (obj.dataType === 'json' && typeof res.data === 'string') {
|
|
res.data = jsonSuperset_1.default(res.data);
|
|
try {
|
|
res.data = JSON.parse(res.data);
|
|
}
|
|
catch (e) {
|
|
if (obj.catchError) {
|
|
throw new Error(e);
|
|
}
|
|
else {
|
|
errorHandler_1.default.logicError(obj, res);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (config_1.default.loginTrigger(res.data) && obj.reLoginCount !== undefined && obj.reLoginCount < config_1.default.reLoginLimit) {
|
|
sessionManager_1.default.delSession();
|
|
return requestHandler_1.default.request(obj);
|
|
}
|
|
else if (config_1.default.successTrigger(res.data)) {
|
|
var realData = "";
|
|
try {
|
|
if (typeof config_1.default.successData === 'function') {
|
|
realData = config_1.default.successData(res.data);
|
|
}
|
|
else {
|
|
realData = res.data;
|
|
}
|
|
}
|
|
catch (e) { }
|
|
if (!obj.noCacheFlash) {
|
|
if (typeof obj.success === "function") {
|
|
obj.success(realData);
|
|
}
|
|
else {
|
|
return realData;
|
|
}
|
|
}
|
|
cacheManager_1.default.set(obj, realData);
|
|
}
|
|
else {
|
|
throw { type: 'logic-error', res: res };
|
|
}
|
|
}
|
|
else {
|
|
throw { type: 'http-error', res: res };
|
|
}
|
|
}
|
|
function responseForUploadFile(res, obj) {
|
|
if (res.statusCode === 200) {
|
|
durationReporter_1.default.end(obj);
|
|
if (typeof res.data === 'string') {
|
|
res.data = jsonSuperset_1.default(res.data);
|
|
try {
|
|
res.data = JSON.parse(res.data);
|
|
}
|
|
catch (e) {
|
|
if (obj.catchError) {
|
|
throw new Error(e);
|
|
}
|
|
else {
|
|
errorHandler_1.default.logicError(obj, res);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (config_1.default.loginTrigger(res.data) && obj.reLoginCount !== undefined && obj.reLoginCount < config_1.default.reLoginLimit) {
|
|
sessionManager_1.default.delSession();
|
|
return requestHandler_1.default.uploadFile(obj);
|
|
}
|
|
else if (config_1.default.successTrigger(res.data)) {
|
|
var realData = "";
|
|
try {
|
|
if (typeof config_1.default.successData === 'function') {
|
|
realData = config_1.default.successData(res.data);
|
|
}
|
|
else {
|
|
realData = res.data;
|
|
}
|
|
}
|
|
catch (e) { }
|
|
if (typeof obj.success === "function") {
|
|
obj.success(realData);
|
|
}
|
|
else {
|
|
return realData;
|
|
}
|
|
}
|
|
else {
|
|
throw { type: 'logic-error', res: res };
|
|
}
|
|
}
|
|
else {
|
|
throw { type: 'http-error', res: res };
|
|
}
|
|
}
|
|
exports.default = {
|
|
responseForRequest: responseForRequest,
|
|
responseForUploadFile: responseForUploadFile
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9yZXNwb25zZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBb0M7QUFDcEMsbURBQTZDO0FBQzdDLCtDQUF5QztBQUN6QywrQ0FBeUM7QUFDekMsdURBQWlEO0FBQ2pELG1EQUE2QztBQUU3QyxxREFBK0M7QUFFL0MsU0FBUyxrQkFBa0IsQ0FDdkIsR0FBbUQsRUFDbkQsR0FBbUI7SUFFbkIsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtRQUV4QiwwQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHMUIsSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3pELEdBQUcsQ0FBQyxJQUFJLEdBQUcsc0JBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsSUFBSTtnQkFDQSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsSUFBRyxHQUFHLENBQUMsVUFBVSxFQUFFO29CQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNILHNCQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDbEMsT0FBTztpQkFDVjthQUNKO1NBQ0o7UUFFRCxJQUFJLGdCQUFNLENBQUMsWUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsWUFBWSxHQUFHLGdCQUFNLENBQUMsWUFBYSxFQUFFO1lBRTdHLHdCQUFjLENB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QUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNILE9BQU8sUUFBUSxDQUFDO2FBQ25CO1NBQ0o7YUFBTTtZQUVILE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBQSxFQUFFLENBQUE7U0FDckM7S0FDSjtTQUFNO1FBRUgsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxLQUFBLEVBQUUsQ0FBQTtLQUNwQztBQUNMLENBQUM7QUFFRCxrQkFBZTtJQUNYLGtCQUFrQixvQkFBQTtJQUNsQixxQkFBcUIsdUJBQUE7Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25maWcgZnJvbSAnLi4vc3RvcmUvY29uZmlnJ1xuaW1wb3J0IHJlcXVlc3RIYW5kbGVyIGZyb20gJy4vcmVxdWVzdEhhbmRsZXInXG5pbXBvcnQgZXJyb3JIYW5kbGVyIGZyb20gJy4vZXJyb3JIYW5kbGVyJ1xuaW1wb3J0IGNhY2hlTWFuYWdlciBmcm9tICcuL2NhY2hlTWFuYWdlcidcbmltcG9ydCBkdXJhdGlvblJlcG9ydGVyIGZyb20gJy4vZHVyYXRpb25SZXBvcnRlcidcbmltcG9ydCBzZXNzaW9uTWFuYWdlciBmcm9tICcuL3Nlc3Npb25NYW5hZ2VyJ1xuaW1wb3J0IHsgSVJlcXVlc3RPcHRpb24sIElVcGxvYWRGaWxlT3B0aW9uLCBJQW55T2JqZWN0IH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiO1xuaW1wb3J0IGpzb25TdXBlcnNldCBmcm9tICcuLi91dGlsL2pzb25TdXBlcnNldCdcblxuZnVuY3Rpb24gcmVzcG9uc2VGb3JSZXF1ZXN0KFxuICAgIHJlczogV2VjaGF0TWluaXByb2dyYW0uUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCxcbiAgICBvYmo6IElSZXF1ZXN0T3B0aW9uXG4pOiBhbnkge1xuICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cbiAgICAgICAgZHVyYXRpb25SZXBvcnRlci5lbmQob2JqKTtcbiAgICAgICAgXG4gICAgICAgIC8vIOivt+axguagvOW8j+S4umpzb27vvIzkvYbov5Tlm57kuoZzdHJpbmfvvIzor7TmmI7lhoXlrrnkuK3lj6/og73lrZjlnKjlr7zoh7Tkvb/lvpdKYXZhU2NyaXB05byC5bi455qE5a2X56ymXG4gICAgICAgIGlmIChvYmouZGF0YVR5cGUgPT09ICdqc29uJyAmJiB0eXBlb2YgcmVzLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXMuZGF0YSA9IGpzb25TdXBlcnNldChyZXMuZGF0YSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlcy5kYXRhID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYob2JqLmNhdGNoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5sb2dpY0Vycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcubG9naW5UcmlnZ2VyIShyZXMuZGF0YSkgJiYgb2JqLnJlTG9naW5Db3VudCAhPT0gdW5kZWZpbmVkICYmIG9iai5yZUxvZ2luQ291bnQgPCBjb25maWcucmVMb2dpbkxpbWl0ISkge1xuICAgICAgICAgICAgLy8g55m75b2V5oCB5aSx5pWI77yM5LiU6YeN6K+V5qyh5pWw5LiN6LaF6L+H6YWN572uXG4gICAgICAgICAgICBzZXNzaW9uTWFuYWdlci5kZWxTZXNzaW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIucmVxdWVzdChvYmopO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5zdWNjZXNzVHJpZ2dlcihyZXMuZGF0YSkpIHtcbiAgICAgICAgICAgIC8vIOaOpeWPo+i/lOWbnuaIkOWKn+eggVxuICAgICAgICAgICAgbGV0IHJlYWxEYXRhOiBzdHJpbmcgfCBJQW55T2JqZWN0IHwgQXJyYXlCdWZmZXIgPSBcIlwiO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5zdWNjZXNzRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZy5zdWNjZXNzRGF0YShyZXMuZGF0YSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgaWYgKCFvYmoubm9DYWNoZUZsYXNoKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5Li65LqG5L+d6K+B6aG16Z2i5LiN6Zeq54OB77yM5YiZ5LiN5Zue6LCD77yM5Y+q5piv57yT5a2Y5pyA5paw5pWw5o2u77yM5b6F5LiL5qyh6L+b5YWl5YaN55SoXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlYWxEYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVhbERhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g57yT5a2Y5a2Y5YKoXG4gICAgICAgICAgICBjYWNoZU1hbmFnZXIuc2V0KG9iaiwgcmVhbERhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g5o6l5Y+j6L+U5Zue5aSx6LSl56CBXG4gICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdsb2dpYy1lcnJvcicsIHJlcyB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBodHRwc+i/lOWbnueKtuaAgeeggemdnjIwMFxuICAgICAgICB0aHJvdyB7IHR5cGU6ICdodHRwLWVycm9yJywgcmVzIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlc3BvbnNlRm9yVXBsb2FkRmlsZShcbiAgICByZXM6IFdlY2hhdE1pbmlwcm9ncmFtLlVwbG9hZEZpbGVTdWNjZXNzQ2FsbGJhY2tSZXN1bHQsXG4gICAgb2JqOiBJVXBsb2FkRmlsZU9wdGlvblxuKTogYW55IHtcbiAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXG4gICAgICAgIGR1cmF0aW9uUmVwb3J0ZXIuZW5kKG9iaik7XG5cbiAgICAgICAgLy8g5YaF5a655Lit5Y+v6IO95a2Y5Zyo5a+86Ie05L2/5b6XSmF2YVNjcmlwdOW8guW4uOeahOWtl+esplxuICAgICAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmVzLmRhdGEgPSBqc29uU3VwZXJzZXQocmVzLmRhdGEpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXMuZGF0YSA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmKG9iai5jYXRjaEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLmxvZ2luVHJpZ2dlciEocmVzLmRhdGEpICYmIG9iai5yZUxvZ2luQ291bnQgIT09IHVuZGVmaW5lZCAmJiBvYmoucmVMb2dpbkNvdW50IDwgY29uZmlnLnJlTG9naW5MaW1pdCEpIHtcbiAgICAgICAgICAgIC8vIOeZu+W9leaAgeWkseaViO+8jOS4lOmHjeivleasoeaVsOS4jei2hei/h+mFjee9rlxuICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXIuZGVsU2Vzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyLnVwbG9hZEZpbGUob2JqKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb25maWcuc3VjY2Vzc1RyaWdnZXIocmVzLmRhdGEpKSB7XG4gICAgICAgICAgICAvLyDmjqXlj6Pov5Tlm57miJDlip/noIFcbiAgICAgICAgICAgIGxldCByZWFsRGF0YTogc3RyaW5nIHwgSUFueU9iamVjdCB8IEFycmF5QnVmZmVyID0gXCJcIjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcuc3VjY2Vzc0RhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSBjb25maWcuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWxEYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhbERhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDmjqXlj6Pov5Tlm57lpLHotKXnoIFcbiAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ2xvZ2ljLWVycm9yJywgcmVzIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGh0dHBz6L+U5Zue54q25oCB56CB6Z2eMjAwXG4gICAgICAgIHRocm93IHsgdHlwZTogJ2h0dHAtZXJyb3InLCByZXMgfVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHJlc3BvbnNlRm9yUmVxdWVzdCxcbiAgICByZXNwb25zZUZvclVwbG9hZEZpbGVcbn07XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/module/sessionManager.ts":
|
|
/*!**************************************!*\
|
|
!*** ./src/module/sessionManager.ts ***!
|
|
\**************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var status_1 = __webpack_require__(/*! ../store/status */ "./src/store/status.ts");
|
|
var config_1 = __webpack_require__(/*! ../store/config */ "./src/store/config.ts");
|
|
var errorHandler_1 = __webpack_require__(/*! ./errorHandler */ "./src/module/errorHandler.ts");
|
|
var durationReporter_1 = __webpack_require__(/*! ./durationReporter */ "./src/module/durationReporter.ts");
|
|
var requestHandler_1 = __webpack_require__(/*! ./requestHandler */ "./src/module/requestHandler.ts");
|
|
var loading_1 = __webpack_require__(/*! ../util/loading */ "./src/util/loading.ts");
|
|
var request_1 = __webpack_require__(/*! ../api/request */ "./src/api/request.ts");
|
|
var checkSessionPromise = null;
|
|
function checkSession() {
|
|
if (!checkSessionPromise) {
|
|
checkSessionPromise = new Promise(function (resolve, reject) {
|
|
var start = new Date().getTime();
|
|
wx.checkSession({
|
|
success: function () {
|
|
return resolve();
|
|
},
|
|
fail: function () {
|
|
delSession();
|
|
return doLogin().then(function () {
|
|
return resolve();
|
|
}, function (res) {
|
|
return reject(res);
|
|
});
|
|
},
|
|
complete: function () {
|
|
var end = new Date().getTime();
|
|
durationReporter_1.default.report('wx_checkSession', start, end);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
return checkSessionPromise;
|
|
}
|
|
function isSessionExpireOrEmpty() {
|
|
if (!status_1.default.session) {
|
|
return true;
|
|
}
|
|
if (config_1.default.sessionExpireTime && new Date().getTime() > status_1.default.sessionExpire) {
|
|
delSession();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
function checkLogin() {
|
|
return new Promise(function (resolve, reject) {
|
|
if (isSessionExpireOrEmpty()) {
|
|
config_1.default.doNotCheckSession = true;
|
|
return doLogin().then(function () {
|
|
return resolve();
|
|
}, function (res) {
|
|
return reject(res);
|
|
});
|
|
}
|
|
else {
|
|
return resolve();
|
|
}
|
|
});
|
|
}
|
|
var loginPromise = null;
|
|
function doLogin() {
|
|
if (!loginPromise) {
|
|
loginPromise = new Promise(function (resolve, reject) {
|
|
login().then(function () {
|
|
loginPromise = null;
|
|
return resolve();
|
|
}).catch(function (res) {
|
|
loginPromise = null;
|
|
loading_1.default.hide();
|
|
return reject(res);
|
|
});
|
|
});
|
|
}
|
|
return loginPromise;
|
|
}
|
|
function login() {
|
|
return new Promise(function (resolve, reject) {
|
|
var start = new Date().getTime();
|
|
wx.login({
|
|
success: function (res) {
|
|
if (res.code) {
|
|
code2Session(res.code).then(function () {
|
|
return resolve();
|
|
}).catch(function (res) {
|
|
return reject(res);
|
|
});
|
|
}
|
|
else {
|
|
return reject({ title: "登录失败", "content": "请稍后重试[code 获取失败]" });
|
|
}
|
|
},
|
|
complete: function () {
|
|
var end = new Date().getTime();
|
|
durationReporter_1.default.report('wx_login', start, end);
|
|
},
|
|
fail: function (res) {
|
|
return reject({ title: "登录失败", "content": res.errMsg });
|
|
}
|
|
});
|
|
});
|
|
}
|
|
function setSession(session) {
|
|
status_1.default.session = session;
|
|
config_1.default.doNotCheckSession = true;
|
|
if (config_1.default.sessionExpireTime && config_1.default.sessionExpireKey) {
|
|
status_1.default.sessionExpire = new Date().getTime() + config_1.default.sessionExpireTime;
|
|
wx.setStorage({
|
|
key: config_1.default.sessionExpireKey,
|
|
data: String(status_1.default.sessionExpire)
|
|
});
|
|
}
|
|
wx.setStorage({
|
|
key: config_1.default.sessionName,
|
|
data: status_1.default.session
|
|
});
|
|
}
|
|
function code2Session(code) {
|
|
var data;
|
|
if (typeof config_1.default.codeToSession.data === "function") {
|
|
data = config_1.default.codeToSession.data(code);
|
|
}
|
|
else {
|
|
data = config_1.default.codeToSession.data || {};
|
|
}
|
|
if (config_1.default.codeToSession.codeName) {
|
|
data[config_1.default.codeToSession.codeName] = code;
|
|
}
|
|
else {
|
|
data.code = code;
|
|
}
|
|
return new Promise(function (resolve, reject) {
|
|
var start = new Date().getTime();
|
|
wx.request({
|
|
url: requestHandler_1.default.format(config_1.default.codeToSession.url),
|
|
data: data,
|
|
method: config_1.default.codeToSession.method || 'GET',
|
|
header: typeof config_1.default.setHeader === 'function' ? config_1.default.setHeader() : config_1.default.setHeader,
|
|
success: function (res) {
|
|
if (res.statusCode === 200) {
|
|
if (config_1.default.codeToSession.report) {
|
|
var end = new Date().getTime();
|
|
durationReporter_1.default.report(config_1.default.codeToSession.report, start, end);
|
|
}
|
|
var s = void 0;
|
|
try {
|
|
s = config_1.default.codeToSession.success(res.data);
|
|
}
|
|
catch (e) {
|
|
}
|
|
if (typeof s === 'string') {
|
|
status_1.default.session = s;
|
|
config_1.default.doNotCheckSession = true;
|
|
if (config_1.default.sessionExpireTime && config_1.default.sessionExpireKey) {
|
|
status_1.default.sessionExpire = new Date().getTime() + config_1.default.sessionExpireTime;
|
|
wx.setStorage({
|
|
key: config_1.default.sessionExpireKey,
|
|
data: String(status_1.default.sessionExpire)
|
|
});
|
|
}
|
|
wx.setStorage({
|
|
key: config_1.default.sessionName,
|
|
data: status_1.default.session
|
|
});
|
|
return resolve(s);
|
|
}
|
|
else {
|
|
return reject(errorHandler_1.default.getErrorMsg(res));
|
|
}
|
|
}
|
|
else {
|
|
return reject({ title: "登录失败", "content": "请稍后重试" });
|
|
}
|
|
},
|
|
complete: function () {
|
|
},
|
|
fail: function () {
|
|
return reject({ title: "登录失败", "content": "请稍后重试" });
|
|
}
|
|
});
|
|
});
|
|
}
|
|
function delSession() {
|
|
status_1.default.session = '';
|
|
wx.removeStorage({
|
|
key: config_1.default.sessionName
|
|
});
|
|
if (config_1.default.sessionExpireTime && config_1.default.sessionExpireKey) {
|
|
status_1.default.sessionExpire = Infinity;
|
|
wx.removeStorage({
|
|
key: config_1.default.sessionExpireKey
|
|
});
|
|
}
|
|
}
|
|
function main(relatedRequestObj) {
|
|
return new Promise(function (resolve, reject) {
|
|
var retry = !relatedRequestObj
|
|
? function () { return main().then(resolve).catch(reject); }
|
|
: function () { return request_1.default(relatedRequestObj).then(relatedRequestObj._resolve).catch(relatedRequestObj._reject); };
|
|
return checkLogin().then(function () {
|
|
return config_1.default.doNotCheckSession ? Promise.resolve() : checkSession();
|
|
}, function (_a) {
|
|
var title = _a.title, content = _a.content;
|
|
errorHandler_1.default.doError(title, content, retry);
|
|
return reject({ title: title, content: content });
|
|
}).then(function () {
|
|
return resolve();
|
|
}, function (_a) {
|
|
var title = _a.title, content = _a.content;
|
|
errorHandler_1.default.doError(title, content, retry);
|
|
return reject({ title: title, content: content });
|
|
});
|
|
});
|
|
}
|
|
exports.default = {
|
|
main: main,
|
|
setSession: setSession,
|
|
delSession: delSession
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbk1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlL3Nlc3Npb25NYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMENBQW9DO0FBQ3BDLDBDQUFvQztBQUNwQywrQ0FBeUM7QUFDekMsdURBQWlEO0FBQ2pELG1EQUE2QztBQUM3QywyQ0FBcUM7QUFDckMsMENBQW9DO0FBSXBDLElBQUksbUJBQW1CLEdBQVEsSUFBSSxDQUFDO0FBRXBDLFNBQVMsWUFBWTtJQUNqQixJQUFJLENBQUMsbUJBQW1CLEVBQUU7UUFDdEIsbUJBQW1CLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTTtZQUM5QyxJQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ1osT0FBTztvQkFFSCxPQUFPLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixDQUFDO2dCQUNELElBQUksRUFBSjtvQkFFSSxVQUFVLEVBQUUsQ0FBQztvQkFDYixPQUFPLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQzt3QkFDbEIsT0FBTyxPQUFPLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxFQUFFLFVBQUMsR0FBUTt3QkFDUixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdkIsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFDRCxRQUFRO29CQUNKLElBQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2pDLDBCQUFnQixDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzNELENBQUM7YUFDSixDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtLQUNMO0lBQ0QsT0FBTyxtQkFBbUIsQ0FBQztBQUMvQixDQUFDO0FBR0Qs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QUFPLGFBQUE7WUFDZixzQkFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE9BQU8sTUFBTSxDQUFDLEVBQUMsS0FBSyxPQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsa0JBQWU7SUFDWCxJQUFJLE1BQUE7SUFDSixVQUFVLFlBQUE7SUFDVixVQUFVLFlBQUE7Q0FDYixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0YXR1cyBmcm9tICcuLi9zdG9yZS9zdGF0dXMnXG5pbXBvcnQgY29uZmlnIGZyb20gJy4uL3N0b3JlL2NvbmZpZydcbmltcG9ydCBlcnJvckhhbmRsZXIgZnJvbSAnLi9lcnJvckhhbmRsZXInXG5pbXBvcnQgZHVyYXRpb25SZXBvcnRlciBmcm9tICcuL2R1cmF0aW9uUmVwb3J0ZXInXG5pbXBvcnQgcmVxdWVzdEhhbmRsZXIgZnJvbSAnLi9yZXF1ZXN0SGFuZGxlcidcbmltcG9ydCBsb2FkaW5nIGZyb20gJy4uL3V0aWwvbG9hZGluZydcbmltcG9ydCByZXF1ZXN0IGZyb20gJy4uL2FwaS9yZXF1ZXN0J1xuaW1wb3J0IHsgSVJlcXVlc3RPcHRpb24sIElVcGxvYWRGaWxlT3B0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiO1xuXG4vKiDnlJ/lkb3lkajmnJ/lhoXlj6rlgZrkuIDmrKHnmoRjaGVja1Nlc3Npb24gKi9cbmxldCBjaGVja1Nlc3Npb25Qcm9taXNlOiBhbnkgPSBudWxsO1xuXG5mdW5jdGlvbiBjaGVja1Nlc3Npb24oKSB7XG4gICAgaWYgKCFjaGVja1Nlc3Npb25Qcm9taXNlKSB7XG4gICAgICAgIGNoZWNrU2Vzc2lvblByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgd3guY2hlY2tTZXNzaW9uKHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyDnmbvlvZXmgIHmnInmlYjvvIzkuJTlnKjmnKznlJ/lkb3lkajmnJ/lhoXml6Dpobvlho3mo4DpqozkuoZcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZhaWwoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOeZu+W9leaAgei/h+acn1xuICAgICAgICAgICAgICAgICAgICBkZWxTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0xvZ2luKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAocmVzOiBhbnkpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyLnJlcG9ydCgnd3hfY2hlY2tTZXNzaW9uJywgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGNoZWNrU2Vzc2lvblByb21pc2U7XG59XG5cbi8qIOWIpOaWrXNlc3Npb27mmK/lkKbkuLrnqbrmiJblt7Lov4fmnJ8gKi9cbmZ1bmN0aW9uIGlzU2Vzc2lvbkV4cGlyZU9yRW1wdHkoKSB7XG4gICAgaWYgKCFzdGF0dXMuc2Vzc2lvbikge1xuICAgICAgICAvLyDlpoLmnpznvJPlrZjkuK3msqHmnIlzZXNzaW9uXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGlmIChjb25maWcuc2Vzc2lvbkV4cGlyZVRpbWUgJiYgbmV3IERhdGUoKS5nZXRUaW1lKCkgPiBzdGF0dXMuc2Vzc2lvbkV4cGlyZSkge1xuICAgICAgICAvLyDlpoLmnpzmnInorr7nva7mnKzlnLBzZXNzaW9u57yT5a2Y5pe26Ze077yM5LiU57yT5a2Y5pe26Ze05bey5YiwXG4gICAgICAgIGRlbFNlc3Npb24oKTtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGNoZWNrTG9naW4oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaWYgKGlzU2Vzc2lvbkV4cGlyZU9yRW1wdHkoKSkge1xuICAgICAgICAgICAgLy8g5rKh5pyJ55m76ZmG5oCB77yM5LiN6ZyA6KaB5YaNY2hlY2tTZXNzaW9uXG4gICAgICAgICAgICBjb25maWcuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRvTG9naW4oKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgKHJlczogYW55KT0+e1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDnvJPlrZjkuK3mnIlzZXNzaW9u5LiU5pyq6L+H5pyfXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgfSlcbn1cblxuLyog55m76ZmG5rWB56iL55qEcHJvbWlzZSAqL1xubGV0IGxvZ2luUHJvbWlzZTogYW55ID0gbnVsbDtcblxuZnVuY3Rpb24gZG9Mb2dpbigpIHtcbiAgICBpZiAoIWxvZ2luUHJvbWlzZSkge1xuICAgICAgICBsb2dpblByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsb2dpbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2luUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLmNhdGNoKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dpblByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGxvYWRpbmcuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gbG9naW5Qcm9taXNlO1xufVxuXG5mdW5jdGlvbiBsb2dpbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB3eC5sb2dpbih7XG4gICAgICAgICAgICBzdWNjZXNzKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSkge1xuICAgICAgICAgICAgICAgICAgICBjb2RlMlNlc3Npb24ocmVzLmNvZGUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3Qoe3RpdGxlOiBcIueZu+W9leWksei0pVwiLCBcImNvbnRlbnRcIjogXCLor7fnqI3lkI7ph43or5VbY29kZSDojrflj5blpLHotKVdXCJ9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgZHVyYXRpb25SZXBvcnRlci5yZXBvcnQoJ3d4X2xvZ2luJywgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHt0aXRsZTogXCLnmbvlvZXlpLHotKVcIiwgXCJjb250ZW50XCI6IHJlcy5lcnJNc2d9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5mdW5jdGlvbiBzZXRTZXNzaW9uKHNlc3Npb246IHN0cmluZykge1xuICAgIHN0YXR1cy5zZXNzaW9uID0gc2Vzc2lvbjtcbiAgICAvLyDmjaLlm57mnaXnmoRzZXNzaW9u77yM5LiN6ZyA6KaB5YaNY2hlY2tTZXNzaW9uXG4gICAgY29uZmlnLmRvTm90Q2hlY2tTZXNzaW9uID0gdHJ1ZTtcbiAgICAvLyDlpoLmnpzmnInorr7nva7mnKzlnLBzZXNzaW9u6L+H5pyf5pe26Ze0XG4gICAgaWYgKGNvbmZpZy5zZXNzaW9uRXhwaXJlVGltZSAmJiBjb25maWcuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXMuc2Vzc2lvbkV4cGlyZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY29uZmlnLnNlc3Npb25FeHBpcmVUaW1lO1xuICAgICAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAgICAgIGtleTogY29uZmlnLnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgICAgICBkYXRhOiBTdHJpbmcoc3RhdHVzLnNlc3Npb25FeHBpcmUpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICBrZXk6IGNvbmZpZy5zZXNzaW9uTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgIGRhdGE6IHN0YXR1cy5zZXNzaW9uXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGNvZGUyU2Vzc2lvbihjb2RlOiBzdHJpbmcpIHtcbiAgICBsZXQgZGF0YTogYW55O1xuICAgIC8vIGNvZGVUb1Nlc3Npb24uZGF0YeaUr+aMgeWHveaVsFxuICAgIGlmICh0eXBlb2YgY29uZmlnLmNvZGVUb1Nlc3Npb24uZGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGRhdGEgPSBjb25maWcuY29kZVRvU2Vzc2lvbi5kYXRhKGNvZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEgPSBjb25maWcuY29kZVRvU2Vzc2lvbi5kYXRhIHx8IHt9O1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmNvZGVUb1Nlc3Npb24uY29kZU5hbWUpIHtcbiAgICAgICAgZGF0YVtjb25maWcuY29kZVRvU2Vzc2lvbi5jb2RlTmFtZV0gPSBjb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEuY29kZSA9IGNvZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHd4LnJlcXVlc3Qoe1xuICAgICAgICAgICAgdXJsOiByZXF1ZXN0SGFuZGxlci5mb3JtYXQoY29uZmlnLmNvZGVUb1Nlc3Npb24udXJsKSxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBtZXRob2Q6IGNvbmZpZy5jb2RlVG9TZXNzaW9uLm1ldGhvZCB8fCAnR0VUJyxcbiAgICAgICAgICAgIGhlYWRlcjogdHlwZW9mIGNvbmZpZy5zZXRIZWFkZXIgPT09ICdmdW5jdGlvbicgPyBjb25maWcuc2V0SGVhZGVyKCk6IGNvbmZpZy5zZXRIZWFkZXIsXG4gICAgICAgICAgICBzdWNjZXNzKHJlczogV2VjaGF0TWluaXByb2dyYW0uUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOiAl+aXtuS4iuaKpVxuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmNvZGVUb1Nlc3Npb24ucmVwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyLnJlcG9ydChjb25maWcuY29kZVRvU2Vzc2lvbi5yZXBvcnQsIHN0YXJ0LCBlbmQpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgcztcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBjb25maWcuY29kZVRvU2Vzc2lvbi5zdWNjZXNzKHJlcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnNlc3Npb24gPSBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5o2i5Zue5p2l55qEc2Vzc2lvbu+8jOS4jemcgOimgeWGjWNoZWNrU2Vzc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRvTm90Q2hlY2tTZXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOacieiuvue9ruacrOWcsHNlc3Npb27ov4fmnJ/ml7bpl7RcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuc2Vzc2lvbkV4cGlyZVRpbWUgJiYgY29uZmlnLnNlc3Npb25FeHBpcmVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuc2Vzc2lvbkV4cGlyZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY29uZmlnLnNlc3Npb25FeHBpcmVUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbmZpZy5zZXNzaW9uRXhwaXJlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBTdHJpbmcoc3RhdHVzLnNlc3Npb25FeHBpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY29uZmlnLnNlc3Npb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHN0YXR1cy5zZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvckhhbmRsZXIuZ2V0RXJyb3JNc2cocmVzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHt0aXRsZTogXCLnmbvlvZXlpLHotKVcIiwgXCJjb250ZW50XCI6IFwi6K+356iN5ZCO6YeN6K+VXCJ9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3Qoe3RpdGxlOiBcIueZu+W9leWksei0pVwiLCBcImNvbnRlbnRcIjogXCLor7fnqI3lkI7ph43or5VcIn0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbi8qIOa4heepunNlc3Npb24gKi9cbmZ1bmN0aW9uIGRlbFNlc3Npb24oKSB7XG4gICAgc3RhdHVzLnNlc3Npb24gPSAnJztcbiAgICB3eC5yZW1vdmVTdG9yYWdlKHtcbiAgICAgICAga2V5OiBjb25maWcuc2Vzc2lvbk5hbWUgYXMgc3RyaW5nXG4gICAgfSk7XG4gICAgaWYgKGNvbmZpZy5zZXNzaW9uRXhwaXJlVGltZSAmJiBjb25maWcuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXMuc2Vzc2lvbkV4cGlyZSA9IEluZmluaXR5O1xuICAgICAgICB3eC5yZW1vdmVTdG9yYWdlKHtcbiAgICAgICAgICAgIGtleTogY29uZmlnLnNlc3Npb25FeHBpcmVLZXlcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG1haW4ocmVsYXRlZFJlcXVlc3RPYmo/OiBJUmVxdWVzdE9wdGlvbiB8IElVcGxvYWRGaWxlT3B0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHJldHJ5ID0gIXJlbGF0ZWRSZXF1ZXN0T2JqXG4gICAgICAgICAgICAvLyDlpoLmnpzmsqHmnInlhbPogZTnmoTor7fmsYLvvIzph43or5XljbPosIPnlKjoh6rouqtcbiAgICAgICAgICAgID8gKCkgPT4gbWFpbigpLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KVxuICAgICAgICAgICAgLy8g5aaC5p6c5pyJ5YWz6IGU55qE6K+35rGC77yM6YeN6K+V5Y2z6LCD55So5omA5YWz6IGU55qE6K+35rGCXG4gICAgICAgICAgICA6ICgpID0+IHJlcXVlc3QocmVsYXRlZFJlcXVlc3RPYmopLnRoZW4ocmVsYXRlZFJlcXVlc3RPYmouX3Jlc29sdmUpLmNhdGNoKHJlbGF0ZWRSZXF1ZXN0T2JqLl9yZWplY3QpO1xuICAgICAgICByZXR1cm4gY2hlY2tMb2dpbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5kb05vdENoZWNrU2Vzc2lvbiA/IFByb21pc2UucmVzb2x2ZSgpIDogY2hlY2tTZXNzaW9uKClcbiAgICAgICAgfSwgKHt0aXRsZSwgY29udGVudH0pID0+IHtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlci5kb0Vycm9yKHRpdGxlLCBjb250ZW50LCByZXRyeSk7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KHt0aXRsZSwgY29udGVudH0pO1xuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH0sICh7dGl0bGUsIGNvbnRlbnR9KT0+IHtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlci5kb0Vycm9yKHRpdGxlLCBjb250ZW50LCByZXRyeSk7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KHt0aXRsZSwgY29udGVudH0pO1xuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtYWluLFxuICAgIHNldFNlc3Npb24sXG4gICAgZGVsU2Vzc2lvblxufVxuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/store/config.ts":
|
|
/*!*****************************!*\
|
|
!*** ./src/store/config.ts ***!
|
|
\*****************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var defaultConfig = {
|
|
sessionName: "session",
|
|
loginTrigger: function () {
|
|
return false;
|
|
},
|
|
codeToSession: {
|
|
url: "",
|
|
success: function () { }
|
|
},
|
|
successTrigger: function () {
|
|
return true;
|
|
},
|
|
setHeader: {},
|
|
urlPerfix: "",
|
|
doNotCheckSession: false,
|
|
errorTitle: "操作失败",
|
|
errorContent: function (res) {
|
|
return res;
|
|
},
|
|
errorRetryBtn: false,
|
|
reLoginLimit: 3,
|
|
errorCallback: null,
|
|
reportCGI: false,
|
|
mockJson: false,
|
|
globalData: false,
|
|
sessionExpireKey: "sessionExpireKey",
|
|
errorHandler: null,
|
|
beforeSend: null
|
|
};
|
|
exports.default = defaultConfig;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLElBQU0sYUFBYSxHQUFnQjtJQUMvQixXQUFXLEVBQUUsU0FBUztJQUN0QixZQUFZO1FBQ1IsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUNELGFBQWEsRUFBRTtRQUNYLEdBQUcsRUFBRSxFQUFFO1FBQ1AsT0FBTyxFQUFFLGNBQU0sQ0FBQztLQUNuQjtJQUNELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFDRCxTQUFTLEVBQUUsRUFBRTtJQUNiLFNBQVMsRUFBRSxFQUFFO0lBQ2IsaUJBQWlCLEVBQUUsS0FBSztJQUN4QixVQUFVLEVBQUUsTUFBTTtJQUNsQixZQUFZLEVBQVosVUFBYSxHQUFRO1FBQ2pCLE9BQU8sR0FBRyxDQUFBO0lBQ2QsQ0FBQztJQUNELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFlBQVksRUFBRSxDQUFDO0lBQ2YsYUFBYSxFQUFFLElBQUk7SUFDbkIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsUUFBUSxFQUFFLEtBQUs7SUFDZixVQUFVLEVBQUUsS0FBSztJQUVqQixnQkFBZ0IsRUFBRSxrQkFBa0I7SUFFcEMsWUFBWSxFQUFFLElBQUk7SUFFbEIsVUFBVSxFQUFFLElBQUk7Q0FDbkIsQ0FBQztBQUVGLGtCQUFlLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElJbml0T3B0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlJ1xuXG5jb25zdCBkZWZhdWx0Q29uZmlnOiBJSW5pdE9wdGlvbiA9IHtcbiAgICBzZXNzaW9uTmFtZTogXCJzZXNzaW9uXCIsXG4gICAgbG9naW5UcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9LFxuICAgIGNvZGVUb1Nlc3Npb246IHtcbiAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiAoKT0+IHt9XG4gICAgfSxcbiAgICBzdWNjZXNzVHJpZ2dlcigpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9LFxuICAgIHNldEhlYWRlcjoge30sXG4gICAgdXJsUGVyZml4OiBcIlwiLFxuICAgIGRvTm90Q2hlY2tTZXNzaW9uOiBmYWxzZSxcbiAgICBlcnJvclRpdGxlOiBcIuaTjeS9nOWksei0pVwiLFxuICAgIGVycm9yQ29udGVudChyZXM6IGFueSkge1xuICAgICAgICByZXR1cm4gcmVzXG4gICAgfSxcbiAgICBlcnJvclJldHJ5QnRuOiBmYWxzZSxcbiAgICByZUxvZ2luTGltaXQ6IDMsXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcbiAgICByZXBvcnRDR0k6IGZhbHNlLFxuICAgIG1vY2tKc29uOiBmYWxzZSxcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcbiAgICAvLyBzZXNzaW9u5Zyo5pys5Zyw57yT5a2Y55qEa2V5XG4gICAgc2Vzc2lvbkV4cGlyZUtleTogXCJzZXNzaW9uRXhwaXJlS2V5XCIsXG4gICAgLy8g6Ieq5a6a5LmJ6ZSZ6K+v5aSE55CG5Ye95pWwXG4gICAgZXJyb3JIYW5kbGVyOiBudWxsLFxuICAgIC8vIOivt+axguWPkemAgeWJje+8jOaPkOS+m2hvb2vnu5nlvIDlj5HogIXoh6rlrprkuYnkv67mlLnlj5HpgIHlhoXlrrlcbiAgICBiZWZvcmVTZW5kOiBudWxsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0Q29uZmlnO1xuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/store/status.ts":
|
|
/*!*****************************!*\
|
|
!*** ./src/store/status.ts ***!
|
|
\*****************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.default = {
|
|
session: '',
|
|
sessionExpire: Infinity
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFlO0lBQ1gsT0FBTyxFQUFFLEVBQVk7SUFFckIsYUFBYSxFQUFFLFFBQWtCO0NBQzdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gICAgc2Vzc2lvbjogJycgYXMgc3RyaW5nLFxuICAgIC8vIHNlc3Npb27ov4fmnJ/nmoTml7bpl7TngrlcbiAgICBzZXNzaW9uRXhwaXJlOiBJbmZpbml0eSBhcyBudW1iZXJcbn0gYXMgYW55XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/util/jsonSuperset.ts":
|
|
/*!**********************************!*\
|
|
!*** ./src/util/jsonSuperset.ts ***!
|
|
\**********************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var LINEFEED = /\u000A/g;
|
|
var CARRIAGERETURN = /\u000D/g;
|
|
var LINE_SEPARATOR = /\u2028/g;
|
|
var PARAGRAPH_SEPARATOR = /\u2029/g;
|
|
function replace(res) {
|
|
res = res.replace(LINEFEED, "");
|
|
res = res.replace(CARRIAGERETURN, "");
|
|
res = res.replace(LINE_SEPARATOR, "");
|
|
res = res.replace(PARAGRAPH_SEPARATOR, "");
|
|
return res;
|
|
}
|
|
exports.default = replace;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblN1cGVyc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvanNvblN1cGVyc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBV0EsSUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBQzNCLElBQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxJQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDakMsSUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUM7QUFFdEMsU0FBd0IsT0FBTyxDQUFDLEdBQVc7SUFDekMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBTkQsMEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiAgVSsyMDI4IGFuZCBVKzIwMjkgYXJlIGFsbG93ZWQgaW5zaWRlIHN0cmluZ3MgaW4gSlNPTiAoYXMgYWxsIGxpdGVyYWxcbiAgICBVbmljb2RlIGNoYXJhY3RlcnMpIGJ1dCBKYXZhU2NyaXB0IGRlZmluZXMgdGhlbSBhcyBuZXdsaW5lXG4gICAgc2VwZXJhdG9ycy4gQmVjYXVzZSBubyBsaXRlcmFsIG5ld2xpbmVzIGFyZSBhbGxvd2VkIGluIGEgc3RyaW5nLCB0aGlzXG4gICAgY2F1c2VzIGEgUGFyc2VFcnJvciBpbiB0aGUgYnJvd3Nlci4gV2Ugd29yayBhcm91bmQgdGhpcyBpc3N1ZSBieVxuICAgIHJlcGxhY2luZyB0aGVtIHdpdGggdGhlIGVzY2FwZWQgdmVyc2lvbi4gVGhpcyBzaG91bGQgYmUgc2FmZSBiZWNhdXNlXG4gICAgYWNjb3JkaW5nIHRvIHRoZSBKU09OIHNwZWMsIHRoZXNlIGNoYXJhY3RlcnMgYXJlICpvbmx5KiB2YWxpZCBpbnNpZGVcbiAgICBhIHN0cmluZyBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcHJlc2VudCBhbnkgb3RoZXIgcGxhY2VzLlxuXG4gICAgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtanNvbi1zdXBlcnNldFxuKi9cblxuY29uc3QgTElORUZFRUQgPSAvXFx1MDAwQS9nO1xuY29uc3QgQ0FSUklBR0VSRVRVUk4gPSAvXFx1MDAwRC9nO1xuY29uc3QgTElORV9TRVBBUkFUT1IgPSAvXFx1MjAyOC9nO1xuY29uc3QgUEFSQUdSQVBIX1NFUEFSQVRPUiA9IC9cXHUyMDI5L2c7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcGxhY2UocmVzOiBzdHJpbmcpIHtcbiAgcmVzID0gcmVzLnJlcGxhY2UoTElORUZFRUQsIFwiXCIpO1xuICByZXMgPSByZXMucmVwbGFjZShDQVJSSUFHRVJFVFVSTiwgXCJcIik7XG4gIHJlcyA9IHJlcy5yZXBsYWNlKExJTkVfU0VQQVJBVE9SLCBcIlwiKTtcbiAgcmVzID0gcmVzLnJlcGxhY2UoUEFSQUdSQVBIX1NFUEFSQVRPUiwgXCJcIik7XG4gIHJldHVybiByZXNcbn1cbiJdfQ==
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/util/loading.ts":
|
|
/*!*****************************!*\
|
|
!*** ./src/util/loading.ts ***!
|
|
\*****************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
function show(txt) {
|
|
wx.showToast({
|
|
title: typeof txt === 'boolean' ? '加载中' : txt,
|
|
icon: 'loading',
|
|
mask: true,
|
|
duration: 60000
|
|
});
|
|
}
|
|
function hide() {
|
|
wx.hideToast({});
|
|
}
|
|
exports.default = {
|
|
show: show,
|
|
hide: hide
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2xvYWRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTLElBQUksQ0FBQyxHQUFxQjtJQUMvQixFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ1QsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHO1FBQzdDLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLElBQUk7UUFDVixRQUFRLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsU0FBUyxJQUFJO0lBQ1QsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsa0JBQWU7SUFDWCxJQUFJLE1BQUE7SUFDSixJQUFJLE1BQUE7Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gc2hvdyh0eHQ6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB3eC5zaG93VG9hc3Qoe1xuICAgICAgICB0aXRsZTogdHlwZW9mIHR4dCA9PT0gJ2Jvb2xlYW4nID8gJ+WKoOi9veS4rScgOiB0eHQsXG4gICAgICAgIGljb246ICdsb2FkaW5nJyxcbiAgICAgICAgbWFzazogdHJ1ZSxcbiAgICAgICAgZHVyYXRpb246IDYwMDAwXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gaGlkZSgpIHtcbiAgICB3eC5oaWRlVG9hc3Qoe30pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc2hvdyxcbiAgICBoaWRlXG59XG4iXX0=
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/util/url.ts":
|
|
/*!*************************!*\
|
|
!*** ./src/util/url.ts ***!
|
|
\*************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
var __assign = (this && this.__assign) || function () {
|
|
__assign = Object.assign || function(t) {
|
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
s = arguments[i];
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
t[p] = s[p];
|
|
}
|
|
return t;
|
|
};
|
|
return __assign.apply(this, arguments);
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
function setParams(url, params) {
|
|
if (url === void 0) { url = ""; }
|
|
var queryStringIndex = url.indexOf("?");
|
|
var kvp = {};
|
|
if (queryStringIndex >= 0) {
|
|
var oldQueryString_1 = url.substr(queryStringIndex + 1).split("&");
|
|
oldQueryString_1.forEach(function (x, i) {
|
|
var kv = oldQueryString_1[i].split("=");
|
|
kvp[kv[0]] = kv[1];
|
|
});
|
|
}
|
|
kvp = __assign(__assign({}, kvp), params);
|
|
var queryString = Object.keys(kvp)
|
|
.map(function (key) {
|
|
return key + "=" + encodeURI(kvp[key]);
|
|
})
|
|
.join("&");
|
|
if (queryStringIndex >= 0) {
|
|
return url.substring(0, queryStringIndex + 1) + queryString;
|
|
}
|
|
else {
|
|
return url + "?" + queryString;
|
|
}
|
|
}
|
|
exports.default = {
|
|
setParams: setParams
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLFNBQVMsQ0FBQyxHQUFnQixFQUFFLE1BQWM7SUFBaEMsb0JBQUEsRUFBQSxRQUFnQjtJQUMvQixJQUFNLGdCQUFnQixHQUFXLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBQ2xCLElBQUksZ0JBQWdCLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLElBQU0sZ0JBQWMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxnQkFBYyxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQU0sRUFBRSxHQUFhLGdCQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELEdBQUcseUJBQU8sR0FBRyxHQUFLLE1BQU0sQ0FBQyxDQUFDO0lBRTFCLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CLEdBQUcsQ0FBQyxVQUFBLEdBQUc7UUFDSixPQUFVLEdBQUcsU0FBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFHLENBQUM7SUFDM0MsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUU7UUFDdkIsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7S0FDL0Q7U0FBTTtRQUNILE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUM7S0FDbEM7QUFDTCxDQUFDO0FBRUQsa0JBQWU7SUFDWCxTQUFTLFdBQUE7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gc2V0UGFyYW1zKHVybDogc3RyaW5nID0gXCJcIiwgcGFyYW1zOiBvYmplY3QpIHtcbiAgICBjb25zdCBxdWVyeVN0cmluZ0luZGV4OiBudW1iZXIgPSB1cmwuaW5kZXhPZihcIj9cIik7XG4gICAgbGV0IGt2cDogYW55ID0ge307XG4gICAgaWYgKHF1ZXJ5U3RyaW5nSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBvbGRRdWVyeVN0cmluZyA9IHVybC5zdWJzdHIocXVlcnlTdHJpbmdJbmRleCArIDEpLnNwbGl0KFwiJlwiKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvbGRRdWVyeVN0cmluZy5mb3JFYWNoKCh4LCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrdjogc3RyaW5nW10gPSBvbGRRdWVyeVN0cmluZ1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgICAgICBrdnBba3ZbMF1dID0ga3ZbMV07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGt2cCA9IHsuLi5rdnAsIC4uLnBhcmFtc307XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKGt2cClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2tleX09JHtlbmNvZGVVUkkoa3ZwW2tleV0pfWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiJlwiKTtcblxuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoMCwgcXVlcnlTdHJpbmdJbmRleCArIDEpICsgcXVlcnlTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVybCArIFwiP1wiICsgcXVlcnlTdHJpbmc7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc2V0UGFyYW1zXG59O1xuIl19
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./src/version.ts":
|
|
/*!************************!*\
|
|
!*** ./src/version.ts ***!
|
|
\************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.version = void 0;
|
|
var version = "1.5.1";
|
|
exports.version = version;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQztBQUVuQiwwQkFBTyIsInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgY29uc3QgX19WRVJTSU9OX186IHN0cmluZztcblxuY29uc3QgdmVyc2lvbiA9IF9fVkVSU0lPTl9fO1xuXG5leHBvcnQgeyB2ZXJzaW9uIH07XG4iXX0=
|
|
|
|
/***/ })
|
|
|
|
/******/ })["default"];
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZVJlcXVlc3Qvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRDb25maWcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRTZXNzaW9uLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvaW5pdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL2xvZ2luLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL3NldFNlc3Npb24udHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS91cGxvYWRGaWxlLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhY2hlTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhdGNoSGFuZGxlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2R1cmF0aW9uUmVwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9tb2NrTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvcmVzcG9uc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvc2Vzc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3N0b3JlL2NvbmZpZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvc3RvcmUvc3RhdHVzLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL2pzb25TdXBlcnNldC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvdXRpbC9sb2FkaW5nLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL3VybC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRmE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkNBQTJDLCszQjs7Ozs7Ozs7Ozs7O0FDWjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxD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QWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxtZ0M7Ozs7Ozs7Ozs7OztBQ2pCOUI7QUFDYjtBQUNBO0FBQ0EsZ0RBQWdELE9BQU87QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EseUJBQXlCLFVBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsdS9FOzs7Ozs7Ozs7Ozs7QUN4QzlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxjQUFjLE9BQVc7QUFDekI7QUFDQSwyQ0FBMkMsdVciLCJmaWxlIjoid2VSZXF1ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaW5kZXgudHNcIik7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB1cmxQZXJmaXg6IGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4LFxuICAgICAgICBzZXNzaW9uRXhwaXJlVGltZTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSxcbiAgICAgICAgc2Vzc2lvbkV4cGlyZUtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5LFxuICAgICAgICBzZXNzaW9uRXhwaXJlOiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVcbiAgICB9O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlYwUTI5dVptbG5MbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyRndhUzluWlhSRGIyNW1hV2N1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZEY0VNc01FTkJRVzlETzBGQlJYQkRMRzFDUVVGbE8wbEJRMWdzVDBGQlR6dFJRVU5JTEZOQlFWTXNSVUZCUlN4blFrRkJUU3hEUVVGRExGTkJRVk03VVVGRE0wSXNhVUpCUVdsQ0xFVkJRVVVzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUk3VVVGRE0wTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFVMHNRMEZCUXl4blFrRkJaMEk3VVVGRGVrTXNZVUZCWVN4RlFVRkZMR2RDUVVGTkxFTkJRVU1zWVVGQllUdExRVU4wUXl4RFFVRkJPMEZCUTB3c1EwRkJReXhGUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdjM1JoZEhWeklHWnliMjBnSnk0dUwzTjBiM0psTDNOMFlYUjFjeWRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnS0NrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lIVnliRkJsY21acGVEb2dZMjl1Wm1sbkxuVnliRkJsY21acGVDeGNiaUFnSUNBZ0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlZScGJXVTZJR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsVkdsdFpTeGNiaUFnSUNBZ0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlV0bGVUb2dZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZMWlhrc1hHNGdJQ0FnSUNBZ0lITmxjM05wYjI1RmVIQnBjbVU2SUhOMFlYUjFjeTV6WlhOemFXOXVSWGh3YVhKbFhHNGdJQ0FnZlZ4dWZUdGNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbjtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWjJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdloyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVVndReXh0UWtGQlpUdEpRVU5ZTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhQUVVGUExFTkJRVUU3UVVGRGVrSXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSE4wWVhSMWN5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5emRHRjBkWE1uWEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNncElEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2MzUmhkSFZ6TG5ObGMzTnBiMjVjYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgT2JqZWN0LmFzc2lnbihjb25maWdfMS5kZWZhdWx0LCBwYXJhbXMpO1xuICAgIGNvbnNvbGUubG9nKGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gd3guZ2V0U3RvcmFnZVN5bmMoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSkgfHwgJyc7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7IH1cbiAgICB0cnkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXkgfHwgXCJzZXNzaW9uRXhwaXJlS2V5XCIpIHx8IEluZmluaXR5O1xuICAgIH1cbiAgICBjYXRjaCAoZSkgeyB9XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNXBkQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2YVc1cGRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVTndReXd3UTBGQmIwTTdRVUZIY0VNc2JVSkJRV1VzVlVGQlF5eE5RVUZ0UWp0SlFVTXZRaXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEdkQ1FVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRE9VSXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhuUWtGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUXk5Q0xFbEJRVWs3VVVGRFFTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEdkQ1FVRk5MRU5CUVVNc1YwRkJXU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzB0QlEycEZPMGxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJUdEpRVU5rTEVsQlFVazdVVUZEUVN4blFrRkJUU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWjBKQlFXZENMRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1MwRkRka2M3U1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4SFFVRkZPMEZCUTJ4Q0xFTkJRVU1zUlVGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQmpiMjVtYVdjZ1puSnZiU0FuTGk0dmMzUnZjbVV2WTI5dVptbG5KMXh1YVcxd2IzSjBJSE4wWVhSMWN5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5emRHRjBkWE1uWEc1cGJYQnZjblFnZXlCSlNXNXBkRTl3ZEdsdmJpQjlJR1p5YjIwZ0p5NHVMMmx1ZEdWeVptRmpaU2RjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnS0hCaGNtRnRjem9nU1VsdWFYUlBjSFJwYjI0cElEMCtJSHRjYmlBZ0lDQlBZbXBsWTNRdVlYTnphV2R1S0dOdmJtWnBaeXdnY0dGeVlXMXpLVHRjYmlBZ0lDQmpiMjV6YjJ4bExteHZaeWhqYjI1bWFXY3VaWEp5YjNKVWFYUnNaU2s3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2MzUmhkSFZ6TG5ObGMzTnBiMjRnUFNCM2VDNW5aWFJUZEc5eVlXZGxVM2x1WXloamIyNW1hV2N1YzJWemMybHZiazVoYldVaEtTQjhmQ0FuSnp0Y2JpQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN2ZWeHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsSUQwZ2QzZ3VaMlYwVTNSdmNtRm5aVk41Ym1Nb1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVkxaWGtnZkh3Z1hDSnpaWE56YVc5dVJYaHdhWEpsUzJWNVhDSXBJSHg4SUVsdVptbHVhWFI1TzF4dUlDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0OVhHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3Nlc3Npb25NYW5hZ2VyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0Lm1haW4oKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYkc5bmFXNHVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdllYQnBMMnh2WjJsdUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc01rUkJRWEZFTzBGQlJYSkVMRzFDUVVGbE8wbEJRMWdzVDBGQlR5eDNRa0ZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGQk8wRkJRMmhETEVOQlFVTXNSVUZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCelpYTnphVzl1VFdGdVlXZGxjaUJtY205dElDY3VMaTl0YjJSMWJHVXZjMlZ6YzJsdmJrMWhibUZuWlhJblhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElDZ3BJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjMlZ6YzJsdmJrMWhibUZuWlhJdWJXRnBiaWdwWEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgcmVxdWVzdEhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvcmVxdWVzdEhhbmRsZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQucmVxdWVzdChvYmopO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ4ZFdWemRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZjbVZ4ZFdWemRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVZHlSQ3h0UWtGQlpTeFZRVUZSTEVkQlFXMUNPMGxCUTNSRExFOUJRVThzZDBKQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVUU3UVVGRGRFTXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5eVpYRjFaWE4wU0dGdVpHeGxjaWRjYm1sdGNHOXlkQ0I3SUVsU1pYRjFaWE4wVDNCMGFXOXVJSDBnWm5KdmJTQW5MaTR2YVc1MFpYSm1ZV05sSjF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENBOFZGSmxjM0ErS0c5aWFqb2dTVkpsY1hWbGMzUlBjSFJwYjI0cE9pQlFjbTl0YVhObFBGUlNaWE53UGlBOVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUhKbGNYVmxjM1JJWVc1a2JHVnlMbkpsY1hWbGMzUW9iMkpxS1Z4dWZWeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKHNlc3Npb24pIHtcbiAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQuc2V0U2Vzc2lvbihzZXNzaW9uKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmMyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVVnlSQ3h0UWtGQlpTeFZRVUZETEU5QlFXVTdTVUZETTBJc2QwSkJRV01zUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRka01zUTBGQlF5eEZRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhObGMzTnBiMjVOWVc1aFoyVnlJR1p5YjIwZ0p5NHVMMjF2WkhWc1pTOXpaWE56YVc5dVRXRnVZV2RsY2lkY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ0tITmxjM05wYjI0NklITjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG5ObGRGTmxjM05wYjI0b2MyVnpjMmx2YmlrN1hHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3JlcXVlc3RIYW5kbGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LnVwbG9hZEZpbGUob2JqKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhCc2IyRmtSbWxzWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmRYQnNiMkZrUm1sc1pTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVZHlSQ3h0UWtGQlpTeFZRVUZETEVkQlFYTkNPMGxCUTJ4RExFOUJRVThzZDBKQlFXTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVUU3UVVGRGVrTXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5eVpYRjFaWE4wU0dGdVpHeGxjaWRjYm1sdGNHOXlkQ0I3SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1SUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0FvYjJKcU9pQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnlaWEYxWlhOMFNHRnVaR3hsY2k1MWNHeHZZV1JHYVd4bEtHOWlhaWxjYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW5pdF8xID0gcmVxdWlyZShcIi4vYXBpL2luaXRcIik7XG52YXIgcmVxdWVzdF8xID0gcmVxdWlyZShcIi4vYXBpL3JlcXVlc3RcIik7XG52YXIgdXBsb2FkRmlsZV8xID0gcmVxdWlyZShcIi4vYXBpL3VwbG9hZEZpbGVcIik7XG52YXIgc2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL3NldFNlc3Npb25cIik7XG52YXIgbG9naW5fMSA9IHJlcXVpcmUoXCIuL2FwaS9sb2dpblwiKTtcbnZhciBnZXRTZXNzaW9uXzEgPSByZXF1aXJlKFwiLi9hcGkvZ2V0U2Vzc2lvblwiKTtcbnZhciBnZXRDb25maWdfMSA9IHJlcXVpcmUoXCIuL2FwaS9nZXRDb25maWdcIik7XG52YXIgdmVyc2lvbl8xID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKTtcbnZhciB3ZVJlcXVlc3RPYmplY3QgPSB7XG4gICAgaW5pdDogaW5pdF8xLmRlZmF1bHQsXG4gICAgcmVxdWVzdDogcmVxdWVzdF8xLmRlZmF1bHQsXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZV8xLmRlZmF1bHQsXG4gICAgc2V0U2Vzc2lvbjogc2V0U2Vzc2lvbl8xLmRlZmF1bHQsXG4gICAgbG9naW46IGxvZ2luXzEuZGVmYXVsdCxcbiAgICBnZXRTZXNzaW9uOiBnZXRTZXNzaW9uXzEuZGVmYXVsdCxcbiAgICBnZXRDb25maWc6IGdldENvbmZpZ18xLmRlZmF1bHQsXG4gICAgdmVyc2lvbjogdmVyc2lvbl8xLnZlcnNpb25cbn07XG5leHBvcnRzLmRlZmF1bHQgPSB3ZVJlcXVlc3RPYmplY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk5emNtTXZhVzVrWlhndWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4dFEwRkJOa0k3UVVGRE4wSXNlVU5CUVcxRE8wRkJRMjVETEN0RFFVRjVRenRCUVVONlF5d3JRMEZCZVVNN1FVRkRla01zY1VOQlFTdENPMEZCUXk5Q0xDdERRVUY1UXp0QlFVTjZReXcyUTBGQmRVTTdRVUZGZGtNc2NVTkJRVzFETzBGQlJXNURMRWxCUVUwc1pVRkJaU3hIUVVGak8wbEJRMnBETEVsQlFVa3NaMEpCUVVFN1NVRkRTaXhQUVVGUExHMUNRVUZCTzBsQlExQXNWVUZCVlN4elFrRkJRVHRKUVVOV0xGVkJRVlVzYzBKQlFVRTdTVUZEVml4TFFVRkxMR2xDUVVGQk8wbEJRMHdzVlVGQlZTeHpRa0ZCUVR0SlFVTldMRk5CUVZNc2NVSkJRVUU3U1VGRFZDeFBRVUZQTEcxQ1FVRkJPME5CUTFJc1EwRkJRenRCUVVWR0xHdENRVUZsTEdWQlFXVXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCcGJtbDBJR1p5YjIwZ1hDSXVMMkZ3YVM5cGJtbDBYQ0pjYm1sdGNHOXlkQ0J5WlhGMVpYTjBJR1p5YjIwZ1hDSXVMMkZ3YVM5eVpYRjFaWE4wWENKY2JtbHRjRzl5ZENCMWNHeHZZV1JHYVd4bElHWnliMjBnWENJdUwyRndhUzkxY0d4dllXUkdhV3hsWENKY2JtbHRjRzl5ZENCelpYUlRaWE56YVc5dUlHWnliMjBnWENJdUwyRndhUzl6WlhSVFpYTnphVzl1WENKY2JtbHRjRzl5ZENCc2IyZHBiaUJtY205dElGd2lMaTloY0drdmJHOW5hVzVjSWx4dWFXMXdiM0owSUdkbGRGTmxjM05wYjI0Z1puSnZiU0JjSWk0dllYQnBMMmRsZEZObGMzTnBiMjVjSWx4dWFXMXdiM0owSUdkbGRFTnZibVpwWnlCbWNtOXRJRndpTGk5aGNHa3ZaMlYwUTI5dVptbG5YQ0pjYm1sdGNHOXlkQ0I3SUhkbFVtVnhkV1Z6ZENCOUlHWnliMjBnWENJdUwybHVkR1Z5Wm1GalpWd2lYRzVwYlhCdmNuUWdleUIyWlhKemFXOXVJSDBnWm5KdmJTQW5MaTkyWlhKemFXOXVKMXh1WEc1amIyNXpkQ0IzWlZKbGNYVmxjM1JQWW1wbFkzUTZJSGRsVW1WeGRXVnpkQ0E5SUh0Y2JpQWdhVzVwZEN4Y2JpQWdjbVZ4ZFdWemRDeGNiaUFnZFhCc2IyRmtSbWxzWlN4Y2JpQWdjMlYwVTJWemMybHZiaXhjYmlBZ2JHOW5hVzRzWEc0Z0lHZGxkRk5sYzNOcGIyNHNYRzRnSUdkbGRFTnZibVpwWnl4Y2JpQWdkbVZ5YzJsdmJseHVmVHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZDJWU1pYRjFaWE4wVDJKcVpXTjBPMXh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gZ2V0KG9iaikge1xuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHd4LmdldFN0b3JhZ2Uoe1xuICAgICAgICBrZXk6IG9iai5vcmlnaW5VcmwsXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgIGlmIChvYmouY2FjaGUgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICAodHlwZW9mIG9iai5jYWNoZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jYWNoZShyZXMuZGF0YSkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7IGlzQ2FjaGU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzZXQob2JqLCByZWFsRGF0YSkge1xuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChvYmouY2FjaGUgPT09IHRydWUgfHxcbiAgICAgICAgKHR5cGVvZiBvYmouY2FjaGUgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY2FjaGUocmVhbERhdGEpKSkge1xuICAgICAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAgICAgIGtleTogb2JqLm9yaWdpblVybCxcbiAgICAgICAgICAgIGRhdGE6IHJlYWxEYXRhXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBnZXQ6IGdldCxcbiAgICBzZXQ6IHNldFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyRmphR1ZOWVc1aFoyVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyMXZaSFZzWlM5allXTm9aVTFoYm1GblpYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGRlFTeFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRnRRanRKUVVNMVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1JVRkJSVHRSUVVOb1FpeFBRVUZQTzB0QlExWTdTVUZEUkN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4VFFVRlRPMUZCUTJ4Q0xFOUJRVThzV1VGQlJTeEhRVUZITzFsQlExSXNTVUZEU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFbEJRVWs3WjBKQlEyeENMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEZWQlFWVXNTVUZCU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVTXhSRHRuUWtGRFJTeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRTlCUVU4c1MwRkJTeXhWUVVGVkxFVkJRVVU3YjBKQlEyNURMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkRMRTlCUVU4c1JVRkJSU3hKUVVGSkxFVkJRVU1zUTBGQlF5eERRVUZCTzJsQ1FVTjZRenRoUVVOS08xbEJRMFFzU1VGQlJ5eFBRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRlJMRXRCUVVzc1ZVRkJWU3hGUVVGRk8yZENRVU51UXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03WVVGRGJFSTdVVUZEVEN4RFFVRkRPMHRCUTBvc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVVZFTEZOQlFWTXNSMEZCUnl4RFFVRkRMRWRCUVcxQ0xFVkJRVWNzVVVGQmVVSTdTVUZEZUVRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVWQlFVVTdVVUZEYUVJc1QwRkJUenRMUVVOV08wbEJRMFFzU1VGRFNTeEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrN1VVRkRiRUlzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4TFFVRkxMRXRCUVVzc1ZVRkJWU3hKUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkRNVVE3VVVGRFJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTFZc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eFRRVUZUTzFsQlEyeENMRWxCUVVrc1JVRkJSU3hSUVVGUk8xTkJRMnBDTEVOQlFVTXNRMEZCUVR0TFFVTk1PMEZCUTB3c1EwRkJRenRCUVVWRUxHdENRVUZsTzBsQlExZ3NSMEZCUnl4TFFVRkJPMGxCUTBnc1IwRkJSeXhMUVVGQk8wTkJRMDRzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUlIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpWEc1Y2JtWjFibU4wYVc5dUlHZGxkQ2h2WW1vNklFbFNaWEYxWlhOMFQzQjBhVzl1S1NCN1hHNGdJQ0FnYVdZZ0tDRnZZbW91YjNKcFoybHVWWEpzS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc0Z0lDQWdkM2d1WjJWMFUzUnZjbUZuWlNoN1hHNGdJQ0FnSUNBZ0lHdGxlVG9nYjJKcUxtOXlhV2RwYmxWeWJDeGNiaUFnSUNBZ0lDQWdjM1ZqWTJWemN5QW9jbVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IySnFMbU5oWTJobElEMDlQU0IwY25WbElIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLSFI1Y0dWdlppQnZZbW91WTJGamFHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJ2WW1vdVkyRmphR1VvY21WekxtUmhkR0VwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdlltb3VjM1ZqWTJWemN5QTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5aWFpNXpkV05qWlhOektISmxjeTVrWVhSaExDQjdhWE5EWVdOb1pUb2dkSEoxWlgwcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lvZEhsd1pXOW1JRzlpYWk1amIyMXdiR1YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IySnFMbU52YlhCc1pYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlLVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnpaWFFvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlBc0lISmxZV3hFWVhSaE9pQnpkSEpwYm1jZ2ZDQnZZbXBsWTNRcElIdGNiaUFnSUNCcFppQW9JVzlpYWk1dmNtbG5hVzVWY213cElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lHOWlhaTVqWVdOb1pTQTlQVDBnZEhKMVpTQjhmRnh1SUNBZ0lDQWdJQ0FvZEhsd1pXOW1JRzlpYWk1allXTm9aU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUc5aWFpNWpZV05vWlNoeVpXRnNSR0YwWVNrcFhHNGdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lIZDRMbk5sZEZOMGIzSmhaMlVvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhMlY1T2lCdlltb3ViM0pwWjJsdVZYSnNMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVG9nY21WaGJFUmhkR0ZjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElIdGNiaUFnSUNCblpYUXNYRzRnSUNBZ2MyVjBYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jYXRjaEhhbmRsZXIgPSB2b2lkIDA7XG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIEVycm9yV2l0aERhdGEgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFcnJvcldpdGhEYXRhLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEVycm9yV2l0aERhdGEobXNnLCBkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhID09PSB2b2lkIDApIHsgZGF0YSA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1zZykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGF0YSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIEVycm9yV2l0aERhdGE7XG59KEVycm9yKSk7XG5mdW5jdGlvbiBjYXRjaEhhbmRsZXIoZSwgb2JqLCByZWplY3QpIHtcbiAgICB2YXIgdHlwZSA9IGUudHlwZSwgcmVzID0gZS5yZXM7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlID09PSAnbG9naWMtZXJyb3InKSB7XG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDYWxsYmFjayhvYmosIHJlcyk7XG4gICAgfVxuICAgIGlmIChvYmouY2F0Y2hFcnJvcikge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2h0dHAtZXJyb3InKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihyZXMuc3RhdHVzQ29kZS50b1N0cmluZygpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ2xvZ2ljLWVycm9yJykge1xuICAgICAgICAgICAgdmFyIG1zZyA9IGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZ2V0RXJyb3JNc2cocmVzKTtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yV2l0aERhdGEobXNnLmNvbnRlbnQsIHJlcy5kYXRhKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5jYXRjaEhhbmRsZXIgPSBjYXRjaEhhbmRsZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMkYwWTJoSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWpZWFJqYUVoaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenRCUVVOQkxDdERRVUV3UXp0QlFVTXhReXd3UTBGQmIwTTdRVUZSY0VNN1NVRkJORUlzYVVOQlFVczdTVUZITjBJc2RVSkJRVmtzUjBGQlZ5eEZRVUZGTEVsQlFXTTdVVUZCWkN4eFFrRkJRU3hGUVVGQkxGTkJRV003VVVGQmRrTXNXVUZEU1N4clFrRkJUU3hIUVVGSExFTkJRVU1zVTBGRllqdFJRVVJITEV0QlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE96dEpRVU55UWl4RFFVRkRPMGxCUTB3c2IwSkJRVU03UVVGQlJDeERRVUZETEVGQlVFUXNRMEZCTkVJc1MwRkJTeXhIUVU5b1F6dEJRVVZFTEZOQlFWTXNXVUZCV1N4RFFVRkRMRU5CUVdFc1JVRkJSU3hIUVVGMVF5eEZRVUZGTEUxQlFUaENPMGxCUTJoSExFbEJRVUVzU1VGQlNTeEhRVUZWTEVOQlFVTXNTMEZCV0N4RlFVRkZMRWRCUVVjc1IwRkJTeXhEUVVGRExFbEJRVTRzUTBGQlR6dEpRVWQ0UWl4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eGhRVUZoTEV0QlFVc3NWVUZCVlN4SlFVRkpMRWxCUVVrc1MwRkJTeXhoUVVGaExFVkJRVVU3VVVGRGRFVXNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMHRCUTJ4RE8wbEJSVVFzU1VGQlNTeEhRVUZITEVOQlFVTXNWVUZCVlN4RlFVRkZPMUZCUTJoQ0xFbEJRVWtzU1VGQlNTeExRVUZMTEZsQlFWa3NSVUZCUlR0WlFVTjJRaXhQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTjJSRHRoUVVGTkxFbEJRVWtzU1VGQlNTeExRVUZMTEdGQlFXRXNSVUZCUlR0WlFVTXZRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eHpRa0ZCV1N4RFFVRkRMRmRCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU40UXl4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF6TkVPMkZCUVUwN1dVRkZTQ3hQUVVGUExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTndRanRMUVVOS08xTkJRVTA3VVVGRFNDeEpRVUZKTEVsQlFVa3NSVUZCUlR0WlFVTk9MRTlCUVU4c2MwSkJRVmtzUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRelZETzJGQlFVMDdXVUZGU0N4UFFVRlBMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU53UWp0TFFVTktPMEZCUTB3c1EwRkJRenRCUVVWUkxHOURRVUZaSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ1NWSmxjWFZsYzNSUGNIUnBiMjRzSUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1SUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lPMXh1YVcxd2IzSjBJR1Z5Y205eVNHRnVaR3hsY2lCbWNtOXRJRndpTGk5bGNuSnZja2hoYm1Sc1pYSmNJanRjYm1sdGNHOXlkQ0JqYjI1bWFXY2dabkp2YlNBbkxpNHZjM1J2Y21VdlkyOXVabWxuSjF4dVhHNTBlWEJsSUZSb2NtOTNSWEp5YjNKVWVYQmxJRDBnSjJ4dloybGpMV1Z5Y205eUp5QjhJQ2RvZEhSd0xXVnljbTl5SjF4dWFXNTBaWEptWVdObElGUm9jbTkzUlhKeWIzSWdlMXh1SUNBZ0lIUjVjR1U2SUZSb2NtOTNSWEp5YjNKVWVYQmxYRzRnSUNBZ2NtVnpPaUJoYm5sY2JuMWNibHh1WTJ4aGMzTWdSWEp5YjNKWGFYUm9SR0YwWVNCbGVIUmxibVJ6SUVWeWNtOXlJSHRjYmlBZ0lDQmtZWFJoT2lCaGJuazdYRzVjYmlBZ0lDQmpiMjV6ZEhKMVkzUnZjaWh0YzJjNklITjBjbWx1Wnl3Z1pHRjBZVG9nWVc1NUlEMGdlMzBwSUh0Y2JpQWdJQ0FnSUNBZ2MzVndaWElvYlhObktUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1a1lYUmhJRDBnWkdGMFlUdGNiaUFnSUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUdOaGRHTm9TR0Z1Wkd4bGNpaGxPaUJVYUhKdmQwVnljbTl5TENCdlltbzZJRWxTWlhGMVpYTjBUM0IwYVc5dUlId2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHNJSEpsYW1WamREb2dLSEpsWVhOdmJqODZJR0Z1ZVNrZ1BUNGdkbTlwWkNrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnZEhsd1pTd2djbVZ6SUgwZ1BTQmxPMXh1WEc0Z0lDQWdMeThnNWFhQzVwNmM1cHlKNllXTjU3MnU1N3VmNUxpQTZaU1o2Syt2NVp1ZTZMQ0Q1WWU5NXBXdzc3eU01WWlaNW9tbjZLR001YTZENzd5STVMdUY2WUM3Nkw2UjZaU1o2Syt2Nzd5SlhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1WlhKeWIzSkRZV3hzWW1GamF5QTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JSFI1Y0dVZ1BUMDlJQ2RzYjJkcFl5MWxjbkp2Y2ljcElIdGNiaUFnSUNBZ0lDQWdZMjl1Wm1sbkxtVnljbTl5UTJGc2JHSmhZMnNvYjJKcUxDQnlaWE1wTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodlltb3VZMkYwWTJoRmNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3WlNBOVBUMGdKMmgwZEhBdFpYSnliM0luS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtHNWxkeUJGY25KdmNpaHlaWE11YzNSaGRIVnpRMjlrWlM1MGIxTjBjbWx1WnlncEtTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjJ4dloybGpMV1Z5Y205eUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJRzF6WnlBOUlHVnljbTl5U0dGdVpHeGxjaTVuWlhSRmNuSnZjazF6WnloeVpYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGFtVmpkQ2h1WlhjZ1JYSnliM0pYYVhSb1JHRjBZU2h0YzJjdVkyOXVkR1Z1ZEN3Z2NtVnpMbVJoZEdFcEtUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklPV0Z0dVM3bG1wejZaU1o2Syt2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0dVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJsY25KdmNraGhibVJzWlhJdWJHOW5hV05GY25KdmNpaHZZbW9zSUhKbGN5azdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RGxoYmJrdTVacWMrbVVtZWl2cjF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENobEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNibjFjYmx4dVpYaHdiM0owSUhzZ1kyRjBZMmhJWVc1a2JHVnlJSDBpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi4vYXBpL3JlcXVlc3RcIik7XG5mdW5jdGlvbiBzdGFydChvYmopIHtcbiAgICBvYmouX3JlcG9ydFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xufVxuZnVuY3Rpb24gZW5kKG9iaikge1xuICAgIG9iai5fcmVwb3J0RW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGlmIChvYmoucmVwb3J0ICYmIG9iai5fcmVwb3J0U3RhcnRUaW1lKSB7XG4gICAgICAgIHJlcG9ydChvYmoucmVwb3J0LCBvYmouX3JlcG9ydFN0YXJ0VGltZSwgb2JqLl9yZXBvcnRFbmRUaW1lKTtcbiAgICB9XG59XG5mdW5jdGlvbiByZXBvcnQobmFtZSwgc3RhcnRUaW1lLCBlbmRUaW1lKSB7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnJlcG9ydENHSSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQucmVwb3J0Q0dJKG5hbWUsIHN0YXJ0VGltZSwgZW5kVGltZSwgcmVxdWVzdF8xLmRlZmF1bHQpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgZW5kOiBlbmQsXG4gICAgcmVwb3J0OiByZXBvcnRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5dGIyUjFiR1V2WkhWeVlYUnBiMjVTWlhCdmNuUmxjaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREJEUVVGdlF6dEJRVU53UXl3d1EwRkJiME03UVVGSGNFTXNVMEZCVXl4TFFVRkxMRU5CUVVNc1IwRkJkVU03U1VGRGJFUXNSMEZCUnl4RFFVRkRMR2RDUVVGblFpeEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGFFUXNRMEZCUXp0QlFVVkVMRk5CUVZNc1IwRkJSeXhEUVVGRExFZEJRWFZETzBsQlEyaEVMRWRCUVVjc1EwRkJReXhqUVVGakxFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVNeFF5eEpRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExHZENRVUZuUWl4RlFVRkZPMUZCUTI1RExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCWjBJc1JVRkJSU3hIUVVGSExFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1IwRkJSeXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzB0QlF6RkZPMEZCUTB3c1EwRkJRenRCUVVWRUxGTkJRVk1zVFVGQlRTeERRVUZETEVsQlFWa3NSVUZCUlN4VFFVRnBRaXhGUVVGRkxFOUJRV1U3U1VGRE5VUXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eExRVUZMTEZWQlFWVXNSVUZCUlR0UlFVTjRReXhuUWtGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1UwRkJVeXhGUVVGRkxFOUJRVThzUlVGQlJTeHBRa0ZCVHl4RFFVRkRMRU5CUVVNN1MwRkRka1E3UVVGRFRDeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hMUVVGTExFOUJRVUU3U1VGRFRDeEhRVUZITEV0QlFVRTdTVUZEU0N4TlFVRk5MRkZCUVVFN1EwRkRWQ3hEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdjbVZ4ZFdWemRDQm1jbTl0SUNjdUxpOWhjR2t2Y21WeGRXVnpkQ2RjYm1sdGNHOXlkQ0I3SUVsU1pYRjFaWE4wVDNCMGFXOXVMQ0JKVlhCc2IyRmtSbWxzWlU5d2RHbHZiaUI5SUdaeWIyMGdYQ0l1TGk5cGJuUmxjbVpoWTJWY0lqdGNibHh1Wm5WdVkzUnBiMjRnYzNSaGNuUW9iMkpxT2lCSlVtVnhkV1Z6ZEU5d2RHbHZiaUI4SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1S1NCN1hHNGdJQ0FnYjJKcUxsOXlaWEJ2Y25SVGRHRnlkRlJwYldVZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjYm4xY2JseHVablZ1WTNScGIyNGdaVzVrS0c5aWFqb2dTVkpsY1hWbGMzUlBjSFJwYjI0Z2ZDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpa2dlMXh1SUNBZ0lHOWlhaTVmY21Wd2IzSjBSVzVrVkdsdFpTQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJR2xtS0c5aWFpNXlaWEJ2Y25RZ0ppWWdiMkpxTGw5eVpYQnZjblJUZEdGeWRGUnBiV1VwSUh0Y2JpQWdJQ0FnSUNBZ2NtVndiM0owS0c5aWFpNXlaWEJ2Y25RZ1lYTWdjM1J5YVc1bkxDQnZZbW91WDNKbGNHOXlkRk4wWVhKMFZHbHRaU3dnYjJKcUxsOXlaWEJ2Y25SRmJtUlVhVzFsS1R0Y2JpQWdJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsY0c5eWRDaHVZVzFsT2lCemRISnBibWNzSUhOMFlYSjBWR2x0WlRvZ2JuVnRZbVZ5TENCbGJtUlVhVzFsT2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTV5WlhCdmNuUkRSMGtnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCamIyNW1hV2N1Y21Wd2IzSjBRMGRKS0c1aGJXVXNJSE4wWVhKMFZHbHRaU3dnWlc1a1ZHbHRaU3dnY21WeGRXVnpkQ2s3WEc0Z0lDQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCN1hHNGdJQ0FnYzNSaGNuUXNYRzRnSUNBZ1pXNWtMRnh1SUNBZ0lISmxjRzl5ZEZ4dWZWeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHJlcXVlc3RfMSA9IHJlcXVpcmUoXCIuLi9hcGkvcmVxdWVzdFwiKTtcbmZ1bmN0aW9uIHN5c3RlbUVycm9yKG9iaiwgcmVzKSB7XG4gICAgaWYgKHR5cGVvZiBvYmouZmFpbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iai5mYWlsKHJlcyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgcmV0cnkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXF1ZXN0XzEuZGVmYXVsdChvYmopLnRoZW4ob2JqLl9yZXNvbHZlKS5jYXRjaChvYmouX3JlamVjdCk7IH07XG4gICAgICAgIGRvRXJyb3IoXCJcIiwgcmVzLmVyck1zZywgcmV0cnkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ2ljRXJyb3Iob2JqLCByZXMpIHtcbiAgICBpZiAodHlwZW9mIG9iai5mYWlsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmZhaWwocmVzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JIYW5kbGVyKHJlcy5kYXRhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBfYSA9IGdldEVycm9yTXNnKHJlcyksIHRpdGxlID0gX2EudGl0bGUsIGNvbnRlbnQgPSBfYS5jb250ZW50O1xuICAgICAgICB2YXIgcmV0cnkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXF1ZXN0XzEuZGVmYXVsdChvYmopLnRoZW4ob2JqLl9yZXNvbHZlKS5jYXRjaChvYmouX3JlamVjdCk7IH07XG4gICAgICAgIGRvRXJyb3IodGl0bGUsIGNvbnRlbnQsIHJldHJ5KTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRFcnJvck1zZyhyZXMpIHtcbiAgICB2YXIgdGl0bGUgPSBcIlwiO1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRpdGxlID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlKHJlcy5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGl0bGUgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGU7XG4gICAgfVxuICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudChyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvckNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29udGVudCA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4geyB0aXRsZTogdGl0bGUsIGNvbnRlbnQ6IGNvbnRlbnQgfTtcbn1cbmZ1bmN0aW9uIGRvRXJyb3IodGl0bGUsIGNvbnRlbnQsIHJldHJ5KSB7XG4gICAgdmFyIHNob3dFcnJvclJldHJ5QnRuID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvclJldHJ5QnRuICYmIHR5cGVvZiByZXRyeSA9PT0gXCJmdW5jdGlvblwiO1xuICAgIHd4LnNob3dNb2RhbChPYmplY3QuYXNzaWduKHtcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICBjb250ZW50OiBjb250ZW50IHx8IFwi572R57uc5oiW5pyN5Yqh5byC5bi477yM6K+356iN5ZCO6YeN6K+VXCIsXG4gICAgfSwgIXNob3dFcnJvclJldHJ5QnRuID8ge1xuICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZVxuICAgIH0gOiB7XG4gICAgICAgIHNob3dDYW5jZWw6IHRydWUsXG4gICAgICAgIGNvbmZpcm1UZXh0OiAn6YeN6K+VJyxcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgaWYgKHJlcy5jb25maXJtICYmIHR5cGVvZiByZXRyeSA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHJldHJ5KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgc3lzdGVtRXJyb3I6IHN5c3RlbUVycm9yLFxuICAgIGxvZ2ljRXJyb3I6IGxvZ2ljRXJyb3IsXG4gICAgZG9FcnJvcjogZG9FcnJvcixcbiAgICBnZXRFcnJvck1zZzogZ2V0RXJyb3JNc2dcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laWEp5YjNKSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWxjbkp2Y2toaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZEY0VNc01FTkJRWEZETzBGQlIzSkRMRk5CUVZNc1YwRkJWeXhEUVVGRExFZEJRWFZETEVWQlFVVXNSMEZCTkVNN1NVRkRkRWNzU1VGQlNTeFBRVUZQTEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xRkJRMmhETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRGFrSTdVMEZCVFR0UlFVTklMRWxCUVUwc1MwRkJTeXhIUVVGSExHTkJRVTBzVDBGQlFTeHBRa0ZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCYkVRc1EwRkJhMFFzUTBGQlF6dFJRVU4yUlN4UFFVRlBMRU5CUVVNc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRiRU03UVVGRFRDeERRVUZETzBGQlJVUXNVMEZCVXl4VlFVRlZMRU5CUVVNc1IwRkJkVU1zUlVGQlJTeEhRVUYxUnp0SlFVTm9TeXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVsQlFVa3NTMEZCU3l4VlFVRlZMRVZCUVVVN1VVRkRhRU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOcVFqdFRRVUZOTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExGbEJRVmtzUzBGQlN5eFZRVUZWTEVWQlFVVTdVVUZEYkVRc1owSkJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRMnBETzFOQlFVMDdVVUZEUnl4SlFVRkJMRXRCUVcxQ0xGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCYkVNc1MwRkJTeXhYUVVGQkxFVkJRVVVzVDBGQlR5eGhRVUZ2UWl4RFFVRkRPMUZCUXpGRExFbEJRVTBzUzBGQlN5eEhRVUZITEdOQlFVMHNUMEZCUVN4cFFrRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJiRVFzUTBGQmEwUXNRMEZCUXp0UlFVTjJSU3hQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOc1F6dEJRVU5NTEVOQlFVTTdRVUZGUkN4VFFVRlRMRmRCUVZjc1EwRkJReXhIUVVGMVJ6dEpRVU40U0N4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRFppeEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhWUVVGVkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEzcERMRWxCUVVrN1dVRkRRU3hMUVVGTExFZEJRVWNzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZCTzFOQlEzUkRPMUZCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3VTBGRFdEdExRVU5LTzFOQlFVMHNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeExRVUZMTEZGQlFWRXNSVUZCUlR0UlFVTTVReXhMUVVGTExFZEJRVWNzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNN1MwRkROMEk3U1VGRlJDeEpRVUZKTEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRha0lzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1dVRkJXU3hMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU16UXl4SlFVRkpPMWxCUTBFc1QwRkJUeXhIUVVGSExHZENRVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlFUdFRRVU14UXp0UlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xTkJRMWc3UzBGRFNqdFRRVUZOTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExGbEJRVmtzUzBGQlN5eFJRVUZSTEVWQlFVVTdVVUZEYUVRc1QwRkJUeXhIUVVGSExHZENRVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRPMHRCUTJwRE8wbEJSVVFzVDBGQlR5eEZRVUZETEV0QlFVc3NUMEZCUVN4RlFVRkZMRTlCUVU4c1UwRkJRU3hGUVVGRExFTkJRVUU3UVVGRE0wSXNRMEZCUXp0QlFVZEVMRk5CUVZNc1QwRkJUeXhEUVVGRExFdEJRV0VzUlVGQlJTeFBRVUZsTEVWQlFVVXNTMEZCYVVJN1NVRkZPVVFzU1VGQlRTeHBRa0ZCYVVJc1IwRkJSeXhuUWtGQlRTeERRVUZETEdGQlFXRXNTVUZCU1N4UFFVRlBMRXRCUVVzc1MwRkJTeXhWUVVGVkxFTkJRVU03U1VGRE9VVXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEzWkNMRXRCUVVzc1QwRkJRVHRSUVVOTUxFOUJRVThzUlVGQlJTeFBRVUZQTEVsQlFVa3NaVUZCWlR0TFFVTjBReXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JDTEZWQlFWVXNSVUZCUlN4TFFVRkxPMHRCUTNCQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwRXNWVUZCVlN4RlFVRkZMRWxCUVVrN1VVRkRhRUlzVjBGQlZ5eEZRVUZGTEVsQlFVazdVVUZEYWtJc1QwRkJUeXhGUVVGUUxGVkJRVkVzUjBGQmNVUTdXVUZEZWtRc1NVRkJTU3hIUVVGSExFTkJRVU1zVDBGQlR5eEpRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRlZCUVZVN1owSkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZETlVRc1EwRkJRenRMUVVOS0xFTkJRVU1zUTBGQlF5eERRVUZETzBGQlExSXNRMEZCUXp0QlFVVkVMR3RDUVVGbE8wbEJRMWdzVjBGQlZ5eGhRVUZCTzBsQlExZ3NWVUZCVlN4WlFVRkJPMGxCUTFZc1QwRkJUeXhUUVVGQk8wbEJRMUFzVjBGQlZ5eGhRVUZCTzBOQlEyUXNRMEZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCamIyNW1hV2NnWm5KdmJTQW5MaTR2YzNSdmNtVXZZMjl1Wm1sbkoxeHVhVzF3YjNKMElISmxjWFZsYzNRZ1puSnZiU0FuTGk0dllYQnBMM0psY1hWbGMzUW5PMXh1YVcxd2IzSjBJSHNnU1ZKbGNYVmxjM1JQY0hScGIyNHNJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVJSDBnWm5KdmJTQmNJaTR1TDJsdWRHVnlabUZqWlZ3aU8xeHVYRzVtZFc1amRHbHZiaUJ6ZVhOMFpXMUZjbkp2Y2lodlltbzZJRWxTWlhGMVpYTjBUM0IwYVc5dUlId2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHNJSEpsY3pvZ1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVIyVnVaWEpoYkVOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdVptRnBiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNW1ZV2xzS0hKbGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY21WMGNua2dQU0FvS1NBOVBpQnlaWEYxWlhOMEtHOWlhaWt1ZEdobGJpaHZZbW91WDNKbGMyOXNkbVVwTG1OaGRHTm9LRzlpYWk1ZmNtVnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ1pHOUZjbkp2Y2loY0lsd2lMQ0J5WlhNdVpYSnlUWE5uTENCeVpYUnllU2s3WEc0Z0lDQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnNiMmRwWTBWeWNtOXlLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRnZkNCSlZYQnNiMkZrUm1sc1pVOXdkR2x2Yml3Z2NtVnpPaUJYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVTWlhGMVpYTjBVM1ZqWTJWemMwTmhiR3hpWVdOclVtVnpkV3gwSUh3Z1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVZYQnNiMkZrUm1sc1pWTjFZMk5sYzNORFlXeHNZbUZqYTFKbGMzVnNkQ2tnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnYjJKcUxtWmhhV3dnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCdlltb3VabUZwYkNoeVpYTXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1bGNuSnZja2hoYm1Sc1pYSWdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdZMjl1Wm1sbkxtVnljbTl5U0dGdVpHeGxjaWh5WlhNdVpHRjBZU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2UzUnBkR3hsTENCamIyNTBaVzUwZlNBOUlHZGxkRVZ5Y205eVRYTm5LSEpsY3lrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhKbGRISjVJRDBnS0NrZ1BUNGdjbVZ4ZFdWemRDaHZZbW9wTG5Sb1pXNG9iMkpxTGw5eVpYTnZiSFpsS1M1allYUmphQ2h2WW1vdVgzSmxhbVZqZENrN1hHNGdJQ0FnSUNBZ0lHUnZSWEp5YjNJb2RHbDBiR1VzSUdOdmJuUmxiblFzSUhKbGRISjVLVHRjYmlBZ0lDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlHZGxkRVZ5Y205eVRYTm5LSEpsY3pvZ1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVVtVnhkV1Z6ZEZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDQjhJRmRsWTJoaGRFMXBibWx3Y205bmNtRnRMbFZ3Ykc5aFpFWnBiR1ZUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRcElIdGNiaUFnSUNCc1pYUWdkR2wwYkdVZ1BTQmNJbHdpTzF4dUlDQWdJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MbVZ5Y205eVZHbDBiR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHbDBiR1VnUFNCamIyNW1hV2N1WlhKeWIzSlVhWFJzWlNoeVpYTXVaR0YwWVNsY2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtVnljbTl5VkdsMGJHVWdQVDA5SUZ3aWMzUnlhVzVuWENJcElIdGNiaUFnSUNBZ0lDQWdkR2wwYkdVZ1BTQmpiMjVtYVdjdVpYSnliM0pVYVhSc1pUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdZMjl1ZEdWdWRDQTlJRndpWENJN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1WlhKeWIzSkRiMjUwWlc1MElEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5SbGJuUWdQU0JqYjI1bWFXY3VaWEp5YjNKRGIyNTBaVzUwS0hKbGN5NWtZWFJoS1Z4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmpiMjVtYVdjdVpYSnliM0pEYjI1MFpXNTBJRDA5UFNCY0luTjBjbWx1WjF3aUtTQjdYRzRnSUNBZ0lDQWdJR052Ym5SbGJuUWdQU0JqYjI1bWFXY3VaWEp5YjNKRGIyNTBaVzUwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjdkR2wwYkdVc0lHTnZiblJsYm5SOVhHNTlYRzVjYmk4dklPbTdtT2l1cE9tVW1laXZyK1draE9lUWh1YVlyK1c4dWVlcWwxeHVablZ1WTNScGIyNGdaRzlGY25KdmNpaDBhWFJzWlRvZ2MzUnlhVzVuTENCamIyNTBaVzUwT2lCemRISnBibWNzSUhKbGRISjVQem9nS0NrZ1BUNGdZVzU1S1NCN1hHNGdJQ0FnTHk4ZzVwaXY1WkNtNXBpKzU2UzY2WWVONksrVjVveUo2Wkt1WEc0Z0lDQWdZMjl1YzNRZ2MyaHZkMFZ5Y205eVVtVjBjbmxDZEc0Z1BTQmpiMjVtYVdjdVpYSnliM0pTWlhSeWVVSjBiaUFtSmlCMGVYQmxiMllnY21WMGNua2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lqdGNiaUFnSUNCM2VDNXphRzkzVFc5a1lXd29UMkpxWldOMExtRnpjMmxuYmloN1hHNGdJQ0FnSUNBZ0lIUnBkR3hsTEZ4dUlDQWdJQ0FnSUNCamIyNTBaVzUwT2lCamIyNTBaVzUwSUh4OElGd2k1NzJSNTd1YzVvaVc1cHlONVlxaDVieUM1Ymk0Nzd5TTZLKzM1NmlONVpDTzZZZU42SytWWENJc1hHNGdJQ0FnZlN3Z0lYTm9iM2RGY25KdmNsSmxkSEo1UW5SdUlEOGdlMXh1SUNBZ0lDQWdJQ0J6YUc5M1EyRnVZMlZzT2lCbVlXeHpaVnh1SUNBZ0lIMGdPaUI3WEc0Z0lDQWdJQ0FnSUhOb2IzZERZVzVqWld3NklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUdOdmJtWnBjbTFVWlhoME9pQW42WWVONksrVkp5eGNiaUFnSUNBZ0lDQWdjM1ZqWTJWemN5aHlaWE02SUZkbFkyaGhkRTFwYm1sd2NtOW5jbUZ0TGxOb2IzZE5iMlJoYkZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsY3k1amIyNW1hWEp0SUNZbUlIUjVjR1Z2WmlCeVpYUnllU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0J5WlhSeWVTZ3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYRzRnSUNBZ2MzbHpkR1Z0UlhKeWIzSXNYRzRnSUNBZ2JHOW5hV05GY25KdmNpeGNiaUFnSUNCa2IwVnljbTl5TEZ4dUlDQWdJR2RsZEVWeWNtOXlUWE5uWEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIGxvYWRpbmdfMSA9IHJlcXVpcmUoXCIuLi91dGlsL2xvYWRpbmdcIik7XG5mdW5jdGlvbiBnZXQob2JqKSB7XG4gICAgaWYgKCEoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoudXJsXSB8fCAob2JqLm9yaWdpblVybCAmJiBjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai5vcmlnaW5VcmxdKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgZGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLnVybF0gfHwgKG9iai5vcmlnaW5VcmwgPyBjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai5vcmlnaW5VcmxdIDogJycpO1xuICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBzdGF0dXNDb2RlOiAyMDBcbiAgICB9O1xuICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcbiAgICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIGdldDogZ2V0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYlc5amEwMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMMjF2WTJ0TllXNWhaMlZ5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTUVOQlFXOURPMEZCUTNCRExESkRRVUZ4UXp0QlFVZHlReXhUUVVGVExFZEJRVWNzUTBGQlF5eEhRVUYxUXp0SlFVVm9SQ3hKUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhKUVVGSkxHZENRVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdVVUZGYWtZc1QwRkJUeXhMUVVGTExFTkJRVU03UzBGRGFFSTdTVUZGUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhuUWtGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUlRkR0xFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRReXhKUVVGTkxFZEJRVWNzUjBGQlJ6dFJRVU5TTEVsQlFVa3NUVUZCUVR0UlFVTktMRlZCUVZVc1JVRkJSU3hIUVVGSE8wdEJRMnhDTEVOQlFVTTdTVUZGUml4cFFrRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzBsQlEyWXNUMEZCVHl4SFFVRkhMRU5CUVVFN1FVRkRaQ3hEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4SFFVRkhMRXRCUVVFN1EwRkRUaXhEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdiRzloWkdsdVp5Qm1jbTl0SUNjdUxpOTFkR2xzTDJ4dllXUnBibWNuWEc1cGJYQnZjblFnZXlCSlVtVnhkV1Z6ZEU5d2RHbHZiaXdnU1ZWd2JHOWhaRVpwYkdWUGNIUnBiMjRnZlNCbWNtOXRJRndpTGk0dmFXNTBaWEptWVdObFhDSmNibHh1Wm5WdVkzUnBiMjRnWjJWMEtHOWlham9nU1ZKbGNYVmxjM1JQY0hScGIyNGdmQ0JKVlhCc2IyRmtSbWxzWlU5d2RHbHZiaWs2SUdGdWVTQjdYRzVjYmlBZ0lDQnBaaWdoS0dOdmJtWnBaeTV0YjJOclNuTnZibHR2WW1vdWRYSnNYU0I4ZkNBb2IySnFMbTl5YVdkcGJsVnliQ0FtSmlCamIyNW1hV2N1Ylc5amEwcHpiMjViYjJKcUxtOXlhV2RwYmxWeWJGMHBLU2tnZTF4dUlDQWdJQ0FnSUNBdkx5QnRiMk5ySU9heW9lYWNpZVd2dWVXNmxPYU9wZVdQbytlYWhPYVZzT2FOcmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJR1JoZEdFZ1BTQmpiMjVtYVdjdWJXOWphMHB6YjI1YmIySnFMblZ5YkYwZ2ZId2dLRzlpYWk1dmNtbG5hVzVWY213Z1B5QmpiMjVtYVdjdWJXOWphMHB6YjI1YmIySnFMbTl5YVdkcGJsVnliRjBnT2lBbkp5azdYRzRnSUNBZ0x5OGdaR1ZsY0NCamIzQjVYRzRnSUNBZ1pHRjBZU0E5SUVwVFQwNHVjR0Z5YzJVb1NsTlBUaTV6ZEhKcGJtZHBabmtvWkdGMFlTa3BPMXh1SUNBZ0lHTnZibk4wSUhKbGN5QTlJSHRjYmlBZ0lDQWdJQ0FnWkdGMFlTeGNiaUFnSUNBZ0lDQWdjM1JoZEhWelEyOWtaVG9nTWpBd1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUd4dllXUnBibWN1YUdsa1pTZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTmNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4dUlDQWdJR2RsZEZ4dWZWeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGxvYWRpbmdfMSA9IHJlcXVpcmUoXCIuLi91dGlsL2xvYWRpbmdcIik7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbnZhciBtb2NrTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vbW9ja01hbmFnZXJcIik7XG52YXIgY2FjaGVNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9jYWNoZU1hbmFnZXJcIik7XG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL3Nlc3Npb25NYW5hZ2VyXCIpO1xudmFyIHJlc3BvbnNlSGFuZGxlcl8xID0gcmVxdWlyZShcIi4vcmVzcG9uc2VIYW5kbGVyXCIpO1xudmFyIGR1cmF0aW9uUmVwb3J0ZXJfMSA9IHJlcXVpcmUoXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIik7XG52YXIgdXJsXzEgPSByZXF1aXJlKFwiLi4vdXRpbC91cmxcIik7XG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XG52YXIgY2F0Y2hIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9jYXRjaEhhbmRsZXJcIik7XG5mdW5jdGlvbiBmb3JtYXQob3JpZ2luVXJsKSB7XG4gICAgaWYgKG9yaWdpblVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpblVybDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciB1cmxQZXJmaXggPSBjb25maWdfMS5kZWZhdWx0LnVybFBlcmZpeDtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnVybFBlcmZpeCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB1cmxQZXJmaXggPSBjb25maWdfMS5kZWZhdWx0LnVybFBlcmZpeCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmxQZXJmaXggKyBvcmlnaW5Vcmw7XG4gICAgfVxufVxuZnVuY3Rpb24gcHJlRG8ob2JqLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICBpZiAodHlwZW9mIG9iai5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmJlZm9yZVNlbmQoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmoucmVMb2dpbkNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQgPSAwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqLnJlTG9naW5Db3VudCsrO1xuICAgIH1cbiAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LnNob3cob2JqLnNob3dMb2FkaW5nKTtcbiAgICB9XG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XG4gICAgICAgIG9iai5vcmlnaW5VcmwgPSBvYmoudXJsO1xuICAgICAgICBvYmoudXJsID0gZm9ybWF0KG9iai51cmwpO1xuICAgIH1cbiAgICBvYmouX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIG9iai5fcmVqZWN0ID0gcmVqZWN0O1xuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBpbml0aWFsaXplUmVxdWVzdE9iaihvYmopIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghb2JqLmRhdGEpIHtcbiAgICAgICAgb2JqLmRhdGEgPSB7fTtcbiAgICB9XG4gICAgb2JqLmhlYWRlciA9IG9iai5oZWFkZXIgPyBvYmouaGVhZGVyIDoge307XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgaGVhZGVyID0gY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBvYmouaGVhZGVyID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5oZWFkZXIpLCBoZWFkZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgb2JqLmhlYWRlciA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmouaGVhZGVyKSwgY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIpO1xuICAgIH1cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgb2JqLmRhdGEgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JqLmRhdGEpLCAoX2EgPSB7fSwgX2FbY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZV0gPSBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24sIF9hKSk7XG4gICAgfVxuICAgIHZhciBnZCA9IGdldEdsb2JhbERhdGEoKTtcbiAgICBvYmouZGF0YSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBnZCksIG9iai5kYXRhKTtcbiAgICBvYmoubWV0aG9kID0gb2JqLm1ldGhvZCB8fCAnR0VUJztcbiAgICBvYmouZGF0YVR5cGUgPSBvYmouZGF0YVR5cGUgfHwgJ2pzb24nO1xuICAgIGlmICghY29uZmlnXzEuZGVmYXVsdC5kb05vdFVzZVF1ZXJ5U3RyaW5nICYmIG9iai5tZXRob2QgIT09IFwiR0VUXCIpIHtcbiAgICAgICAgaWYgKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xuICAgICAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIChfYiA9IHt9LCBfYltjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2IpKTtcbiAgICAgICAgfVxuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xuICAgIH1cbiAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5zdGFydChvYmopO1xuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmopIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghb2JqLmZvcm1EYXRhKSB7XG4gICAgICAgIG9iai5mb3JtRGF0YSA9IHt9O1xuICAgIH1cbiAgICBvYmouaGVhZGVyID0gb2JqLmhlYWRlciA/IG9iai5oZWFkZXIgOiB7fTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBoZWFkZXIgPSBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlcigpO1xuICAgICAgICBpZiAodHlwZW9mIGhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIG9iai5oZWFkZXIgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JqLmhlYWRlciksIGhlYWRlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICBvYmouaGVhZGVyID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5oZWFkZXIpLCBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlcik7XG4gICAgfVxuICAgIGlmIChvYmoub3JpZ2luVXJsICE9PSBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24udXJsICYmIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xuICAgICAgICBvYmouZm9ybURhdGEgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JqLmZvcm1EYXRhKSwgKF9hID0ge30sIF9hW2NvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbk5hbWVdID0gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uLCBfYSkpO1xuICAgIH1cbiAgICB2YXIgZ2QgPSBnZXRHbG9iYWxEYXRhKCk7XG4gICAgb2JqLmZvcm1EYXRhID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGdkKSwgb2JqLmZvcm1EYXRhKTtcbiAgICBpZiAoIWNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RVc2VRdWVyeVN0cmluZykge1xuICAgICAgICBpZiAoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5zZXRQYXJhbXMob2JqLnVybCwgKF9iID0ge30sIF9iW2NvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbk5hbWVdID0gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uLCBfYikpO1xuICAgICAgICB9XG4gICAgICAgIG9iai51cmwgPSB1cmxfMS5kZWZhdWx0LnNldFBhcmFtcyhvYmoudXJsLCBnZCk7XG4gICAgfVxuICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LnN0YXJ0KG9iaik7XG4gICAgcmV0dXJuIG9iajtcbn1cbmZ1bmN0aW9uIGdldEdsb2JhbERhdGEoKSB7XG4gICAgdmFyIGdkID0ge307XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGEgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBnZCA9IGNvbmZpZ18xLmRlZmF1bHQuZ2xvYmFsRGF0YSgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGdkID0gY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhO1xuICAgIH1cbiAgICByZXR1cm4gZ2Q7XG59XG5mdW5jdGlvbiBkb1JlcXVlc3Qob2JqKSB7XG4gICAgb2JqID0gaW5pdGlhbGl6ZVJlcXVlc3RPYmoob2JqKTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iaiA9IGNvbmZpZ18xLmRlZmF1bHQuYmVmb3JlU2VuZChvYmosIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHd4LnJlcXVlc3Qoe1xuICAgICAgICAgICAgdXJsOiBvYmoudXJsLFxuICAgICAgICAgICAgZGF0YTogb2JqLmRhdGEsXG4gICAgICAgICAgICBtZXRob2Q6IG9iai5tZXRob2QsXG4gICAgICAgICAgICBoZWFkZXI6IG9iai5oZWFkZXIgfHwge30sXG4gICAgICAgICAgICBkYXRhVHlwZTogb2JqLmRhdGFUeXBlIHx8ICdqc29uJyxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LnN5c3RlbUVycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZG9VcGxvYWRGaWxlKG9iaikge1xuICAgIG9iaiA9IGluaXRpYWxpemVVcGxvYWRGaWxlT2JqKG9iaik7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmogPSBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQob2JqLCBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB3eC51cGxvYWRGaWxlKHtcbiAgICAgICAgICAgIHVybDogb2JqLnVybCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiBvYmouZmlsZVBhdGggfHwgJycsXG4gICAgICAgICAgICBuYW1lOiBvYmoubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIGZvcm1EYXRhOiBvYmouZm9ybURhdGEsXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5zeXN0ZW1FcnJvcihvYmosIHJlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nXzEuZGVmYXVsdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJlcXVlc3Qob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbikge1xuICAgICAgICAgICAgdmFyIG1vY2tSZXNwb25zZSA9IG1vY2tNYW5hZ2VyXzEuZGVmYXVsdC5nZXQob2JqKTtcbiAgICAgICAgICAgIGlmIChtb2NrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0LnJlc3BvbnNlRm9yUmVxdWVzdChtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvYmouY2FjaGUpIHtcbiAgICAgICAgICAgIGNhY2hlTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0Lm1haW4ob2JqKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkb1JlcXVlc3Qob2JqKTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0LnJlc3BvbnNlRm9yUmVxdWVzdChyZXMsIG9iaik7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXRjaEhhbmRsZXJfMS5jYXRjaEhhbmRsZXIoZSwgb2JqLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHVwbG9hZEZpbGUob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbikge1xuICAgICAgICAgICAgdmFyIG1vY2tSZXNwb25zZSA9IG1vY2tNYW5hZ2VyXzEuZGVmYXVsdC5nZXQob2JqKTtcbiAgICAgICAgICAgIGlmIChtb2NrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0LnJlc3BvbnNlRm9yVXBsb2FkRmlsZShtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlc3Npb25NYW5hZ2VyXzEuZGVmYXVsdC5tYWluKG9iaikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9VcGxvYWRGaWxlKG9iaik7XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdC5yZXNwb25zZUZvclVwbG9hZEZpbGUocmVzLCBvYmopO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBjYXRjaEhhbmRsZXJfMS5jYXRjaEhhbmRsZXIoZSwgb2JqLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICByZXF1ZXN0OiByZXF1ZXN0LFxuICAgIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ4ZFdWemRFaGhibVJzWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMM0psY1hWbGMzUklZVzVrYkdWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3UVVGQlFTd3lRMEZCY1VNN1FVRkRja01zTUVOQlFXOURPMEZCUTNCRExEQkRRVUZ2UXp0QlFVTndReXcyUTBGQmRVTTdRVUZEZGtNc0swTkJRWGxETzBGQlEzcERMRzFFUVVFMlF6dEJRVU0zUXl4eFJFRkJLME03UVVGREwwTXNkVVJCUVdsRU8wRkJRMnBFTEcxRFFVRTJRanRCUVVVM1Fpd3JRMEZCTUVNN1FVRkRNVU1zSzBOQlFUaERPMEZCUnpsRExGTkJRVk1zVFVGQlRTeERRVUZETEZOQlFXbENPMGxCUXpkQ0xFbEJRVWtzVTBGQlV5eERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHRSUVVNNVFpeFBRVUZQTEZOQlFWTXNRMEZCUVR0TFFVTnVRanRUUVVGTk8xRkJRMGdzU1VGQlNTeFRRVUZUTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03VVVGRGFrTXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eExRVUZMTEZWQlFWVXNSVUZCUlR0WlFVTjRReXhUUVVGVExFZEJRVWNzWjBKQlFVMHNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRVHRUUVVOcVF6dFJRVU5FTEU5QlFVOHNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJRenRMUVVOb1F6dEJRVU5NTEVOQlFVTTdRVUZIUkN4VFFVRlRMRXRCUVVzc1EwRkJLME1zUjBGQlRTeEZRVUZGTEU5QlFUaENMRVZCUVVVc1RVRkJLMEk3U1VGRGFFa3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhWUVVGVkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEzUkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dExRVU53UWp0SlFVVkVMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zV1VGQldTeExRVUZMTEZkQlFWY3NSVUZCUlR0UlFVTjZReXhIUVVGSExFTkJRVU1zV1VGQldTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjRRanRUUVVGTk8xRkJRMGdzUjBGQlJ5eERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMHRCUTNSQ08wbEJSVVFzU1VGQlNTeEhRVUZITEVOQlFVTXNWMEZCVnl4RlFVRkZPMUZCUTJwQ0xHbENRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dExRVU5xUXp0SlFVVkVMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eEZRVUZGTzFGQlEyaENMRWRCUVVjc1EwRkJReXhUUVVGVExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXp0UlFVTjRRaXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRE4wSTdTVUZGUkN4SFFVRkhMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dEpRVU4yUWl4SFFVRkhMRU5CUVVNc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF6dEpRVVZ5UWl4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVObUxFTkJRVU03UVVGSFJDeFRRVUZUTEc5Q1FVRnZRaXhEUVVGRExFZEJRVzFDT3p0SlFVVTNReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlR0UlFVTllMRWRCUVVjc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzB0QlEycENPMGxCUlVRc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRNVU1zU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU40UXl4SlFVRkpMRTFCUVUwc1IwRkJSeXhuUWtGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUTJoRExFbEJRVWtzVDBGQlR5eE5RVUZOTEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUXpWQ0xFZEJRVWNzUTBGQlF5eE5RVUZOTEhsQ1FVRlBMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVXNzVFVGQlRTeERRVUZETEVOQlFVTTdVMEZETTBNN1MwRkRTanRUUVVGTkxFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1MwRkJTeXhSUVVGUkxFVkJRVVU3VVVGRE4wTXNSMEZCUnl4RFFVRkRMRTFCUVUwc2VVSkJRVThzUjBGQlJ5eERRVUZETEUxQlFVMHNSMEZCU3l4blFrRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzB0QlEzSkVPMGxCUlVRc1NVRkJTU3hIUVVGSExFTkJRVU1zVTBGQlV5eExRVUZMTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVWNzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSVHRSUVVNNVJDeEhRVUZITEVOQlFVTXNTVUZCU1N4NVFrRkJVU3hIUVVGSExFTkJRVU1zU1VGQll5eG5Ra0ZCUnl4blFrRkJUU3hEUVVGRExGZEJRVmNzU1VGQlJ5eG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1RVRkJSU3hEUVVGRE8wdEJRemxGTzBsQlIwUXNTVUZCVFN4RlFVRkZMRWRCUVVjc1lVRkJZU3hGUVVGRkxFTkJRVU03U1VGRE0wSXNSMEZCUnl4RFFVRkRMRWxCUVVrc2VVSkJRVkVzUlVGQlJTeEhRVUZMTEVkQlFVY3NRMEZCUXl4SlFVRmpMRU5CUVVVc1EwRkJRenRKUVVVMVF5eEhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETzBsQlEycERMRWRCUVVjc1EwRkJReXhSUVVGUkxFZEJRVWNzUjBGQlJ5eERRVUZETEZGQlFWRXNTVUZCU1N4TlFVRk5MRU5CUVVNN1NVRkhkRU1zU1VGQlNTeERRVUZETEdkQ1FVRk5MRU5CUVVNc2JVSkJRVzFDTEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1MwRkJTeXhMUVVGTExFVkJRVVU3VVVGRGNrUXNTVUZCU1N4blFrRkJUU3hEUVVGRExFOUJRVThzUlVGQlJUdFpRVU5vUWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExHRkJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1dVRkJTU3hIUVVGRExHZENRVUZOTEVOQlFVTXNWMEZCVnl4SlFVRkhMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eE5RVUZITEVOQlFVTTdVMEZET1VVN1VVRkRSQ3hIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEdGQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0TFFVTjRRenRKUVVWRUxEQkNRVUZuUWl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVVUxUWl4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVObUxFTkJRVU03UVVGSFJDeFRRVUZUTEhWQ1FVRjFRaXhEUVVGRExFZEJRWE5DT3p0SlFVTnVSQ3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlR0UlFVTm1MRWRCUVVjc1EwRkJReXhSUVVGUkxFZEJRVWNzUlVGQlJTeERRVUZETzB0QlEzSkNPMGxCUlVRc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRNVU1zU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU40UXl4SlFVRkpMRTFCUVUwc1IwRkJSeXhuUWtGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUTJoRExFbEJRVWtzVDBGQlR5eE5RVUZOTEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUXpWQ0xFZEJRVWNzUTBGQlF5eE5RVUZOTEhsQ1FVRlBMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVXNzVFVGQlRTeERRVUZETEVOQlFVTTdVMEZETTBNN1MwRkRTanRUUVVGTkxFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1MwRkJTeXhSUVVGUkxFVkJRVVU3VVVGRE4wTXNSMEZCUnl4RFFVRkRMRTFCUVUwc2VVSkJRVThzUjBGQlJ5eERRVUZETEUxQlFVMHNSMEZCU3l4blFrRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzB0QlEzSkVPMGxCUlVRc1NVRkJTU3hIUVVGSExFTkJRVU1zVTBGQlV5eExRVUZMTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVWNzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSVHRSUVVNNVJDeEhRVUZITEVOQlFVTXNVVUZCVVN4NVFrRkJVU3hIUVVGSExFTkJRVU1zVVVGQmEwSXNaMEpCUVVjc1owSkJRVTBzUTBGQlF5eFhRVUZYTEVsQlFVY3NaMEpCUVUwc1EwRkJReXhQUVVGUExFMUJRVVVzUTBGQlF6dExRVU4wUmp0SlFVZEVMRWxCUVUwc1JVRkJSU3hIUVVGSExHRkJRV0VzUlVGQlJTeERRVUZETzBsQlF6TkNMRWRCUVVjc1EwRkJReXhSUVVGUkxIbENRVUZSTEVWQlFVVXNSMEZCU3l4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRkxFTkJRVU03U1VGRk1VTXNTVUZCU1N4RFFVRkRMR2RDUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVN1VVRkZOMElzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVOb1FpeEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMR0ZCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NXVUZCU1N4SFFVRkRMR2RDUVVGTkxFTkJRVU1zVjBGQlZ5eEpRVUZITEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhOUVVGSExFTkJRVU03VTBGRE9VVTdVVUZGUkN4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExHRkJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dExRVU40UXp0SlFVVkVMREJDUVVGblFpeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVVMVFpeFBRVUZQTEVkQlFVY3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSQ3hUUVVGVExHRkJRV0U3U1VGRGJFSXNTVUZCU1N4RlFVRkZMRWRCUVZFc1JVRkJSU3hEUVVGRE8wbEJRMnBDTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExGVkJRVlVzUzBGQlN5eFZRVUZWTEVWQlFVVTdVVUZEZWtNc1JVRkJSU3hIUVVGSExHZENRVUZOTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1MwRkROVUk3VTBGQlRTeEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhWUVVGVkxFdEJRVXNzVVVGQlVTeEZRVUZGTzFGQlF6bERMRVZCUVVVc1IwRkJSeXhuUWtGQlRTeERRVUZETEZWQlFWVXNRMEZCUXp0TFFVTXhRanRKUVVORUxFOUJRVThzUlVGQlJTeERRVUZETzBGQlEyUXNRMEZCUXp0QlFVVkVMRk5CUVZNc1UwRkJVeXhEUVVGRExFZEJRVzFDTzBsQlEyeERMRWRCUVVjc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOb1F5eEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhWUVVGVkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEzcERMRWRCUVVjc1IwRkJSeXhuUWtGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0TFFVTm9SRHRKUVVORUxFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUVHRSUVVNdlFpeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRPMWxCUTFBc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITzFsQlExb3NTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8xbEJRMlFzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4TlFVRk5PMWxCUTJ4Q0xFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRVZCUVVVN1dVRkRlRUlzVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4UlFVRlJMRWxCUVVrc1RVRkJUVHRaUVVOb1F5eFBRVUZQTEVWQlFWQXNWVUZCVVN4SFFVRnRSRHRuUWtGRGRrUXNUMEZCVHl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGVFSXNRMEZCUXp0WlFVTkVMRWxCUVVrc1JVRkJTaXhWUVVGTExFZEJRVFJETzJkQ1FVTTNReXh6UWtGQldTeERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEyNURMRTlCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzWkNMRU5CUVVNN1dVRkRSQ3hSUVVGUk8yZENRVU5LTEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hMUVVGTExGVkJRVlVzUlVGQlJUdHZRa0ZEY0VNc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzJsQ1FVTnNRanRuUWtGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4WFFVRlhMRVZCUVVVN2IwSkJRMnBDTEdsQ1FVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03YVVKQlEyeENPMWxCUTB3c1EwRkJRenRUUVVOS0xFTkJRVU1zUTBGQlFUdEpRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVWRUxGTkJRVk1zV1VGQldTeERRVUZETEVkQlFYTkNPMGxCUTNoRExFZEJRVWNzUjBGQlJ5eDFRa0ZCZFVJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU51UXl4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFZRVUZWTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUTNwRExFZEJRVWNzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFVkJRVVVzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOb1JEdEpRVU5FTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJReXhQUVVGUExFVkJRVVVzVFVGQlRUdFJRVU12UWl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xbEJRMVlzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhPMWxCUTFvc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eFJRVUZSTEVsQlFVa3NSVUZCUlR0WlFVTTFRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVsQlFVa3NTVUZCU1N4RlFVRkZPMWxCUTNCQ0xGRkJRVkVzUlVGQlJTeEhRVUZITEVOQlFVTXNVVUZCVVR0WlFVTjBRaXhQUVVGUExFVkJRVkFzVlVGQlVTeEhRVUZ6UkR0blFrRkRNVVFzVDBGQlR5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRlRUlzUTBGQlF6dFpRVU5FTEVsQlFVa3NSVUZCU2l4VlFVRkxMRWRCUVRSRE8yZENRVU0zUXl4elFrRkJXU3hEUVVGRExGZEJRVmNzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRMjVETEU5QlFVOHNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM1pDTEVOQlFVTTdXVUZEUkN4UlFVRlJPMmRDUVVOS0xFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNVVUZCVVN4TFFVRkxMRlZCUVZVc1JVRkJSVHR2UWtGRGNFTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8ybENRVU5zUWp0blFrRkRSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFhRVUZYTEVWQlFVVTdiMEpCUTJwQ0xHbENRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMnhDTzFsQlEwd3NRMEZCUXp0VFFVTktMRU5CUVVNc1EwRkJRVHRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMRk5CUVZNc1QwRkJUeXhEUVVGUkxFZEJRVzFDTzBsQlEzWkRMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTXZRaXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRmJFTXNTVUZCU1N4blFrRkJUU3hEUVVGRExGRkJRVkVzUlVGQlJUdFpRVU5xUWl4SlFVRkpMRmxCUVZrc1IwRkJSeXh4UWtGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVONFF5eEpRVUZKTEZsQlFWa3NSVUZCUlR0blFrRkRaQ3hKUVVGSkxGRkJRVkVzUjBGQlJ5eDVRa0ZCWlN4RFFVRkRMR3RDUVVGclFpeERRVUZETEZsQlFWa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGNrVXNUMEZCVHl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03WVVGRE5VSTdVMEZEU2p0UlFVVkVMRWxCUVVrc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJUdFpRVU5ZTEhOQ1FVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzcENPMUZCUlVRc2QwSkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRekZDTEU5QlFVOHNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGQk8xRkJRM3BDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGRExFZEJRVWM3V1VGRFVpeEpRVUZKTEZGQlFWRXNSMEZCUnl4NVFrRkJaU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRWRCUVhGRUxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZET1Vjc1NVRkJTU3hSUVVGUkxFbEJRVWtzU1VGQlNTeEZRVUZGTzJkQ1FVTnNRaXhQUVVGUExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0aFFVTTFRanRSUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4VlFVRkRMRU5CUVVNN1dVRkRVQ3hQUVVGUExESkNRVUZaTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlFUdFJRVU4yUXl4RFFVRkRMRU5CUVVNc1EwRkJRVHRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMRk5CUVZNc1ZVRkJWU3hEUVVGRExFZEJRWE5DTzBsQlEzUkRMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTXZRaXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRmJFTXNTVUZCU1N4blFrRkJUU3hEUVVGRExGRkJRVkVzUlVGQlJUdFpRVU5xUWl4SlFVRkpMRmxCUVZrc1IwRkJSeXh4UWtGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVONFF5eEpRVUZKTEZsQlFWa3NSVUZCUlR0blFrRkRaQ3hKUVVGSkxGRkJRVkVzUjBGQlJ5eDVRa0ZCWlN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEZsQlFWa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGVFVXNUMEZCVHl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03WVVGRE5VSTdVMEZEU2p0UlFVVkVMSGRDUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVNeFFpeFBRVUZQTEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHRSUVVNMVFpeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhIUVVGSE8xbEJRMUlzU1VGQlNTeFJRVUZSTEVkQlFVY3NlVUpCUVdVc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SFFVRjNSQ3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzQklMRWxCUVVrc1VVRkJVU3hKUVVGSkxFbEJRVWtzUlVGQlJUdG5Ra0ZEYkVJc1QwRkJUeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdZVUZETlVJN1VVRkRUQ3hEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCUXl4RFFVRkRPMWxCUTFBc01rSkJRVmtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGQk8xRkJRMmhETEVOQlFVTXNRMEZCUXl4RFFVRkJPMGxCUTA0c1EwRkJReXhEUVVGRExFTkJRVUU3UVVGRFRpeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hOUVVGTkxGRkJRVUU3U1VGRFRpeFBRVUZQTEZOQlFVRTdTVUZEVUN4VlFVRlZMRmxCUVVFN1EwRkRZaXhEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHeHZZV1JwYm1jZ1puSnZiU0FuTGk0dmRYUnBiQzlzYjJGa2FXNW5KMXh1YVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnYzNSaGRIVnpJR1p5YjIwZ0p5NHVMM04wYjNKbEwzTjBZWFIxY3lkY2JtbHRjRzl5ZENCdGIyTnJUV0Z1WVdkbGNpQm1jbTl0SUNjdUwyMXZZMnROWVc1aFoyVnlKMXh1YVcxd2IzSjBJR05oWTJobFRXRnVZV2RsY2lCbWNtOXRJQ2N1TDJOaFkyaGxUV0Z1WVdkbGNpZGNibWx0Y0c5eWRDQnpaWE56YVc5dVRXRnVZV2RsY2lCbWNtOXRJQ2N1TDNObGMzTnBiMjVOWVc1aFoyVnlKMXh1YVcxd2IzSjBJSEpsYzNCdmJuTmxTR0Z1Wkd4bGNpQm1jbTl0SUNjdUwzSmxjM0J2Ym5ObFNHRnVaR3hsY2lkY2JtbHRjRzl5ZENCa2RYSmhkR2x2YmxKbGNHOXlkR1Z5SUdaeWIyMGdYQ0l1TDJSMWNtRjBhVzl1VW1Wd2IzSjBaWEpjSWx4dWFXMXdiM0owSUhWeWJDQm1jbTl0SUNjdUxpOTFkR2xzTDNWeWJDZGNibWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUxDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpQjlJR1p5YjIwZ1hDSXVMaTlwYm5SbGNtWmhZMlZjSWx4dWFXMXdiM0owSUdWeWNtOXlTR0Z1Wkd4bGNpQm1jbTl0SUZ3aUxpOWxjbkp2Y2toaGJtUnNaWEpjSWp0Y2JtbHRjRzl5ZENCN0lHTmhkR05vU0dGdVpHeGxjaUI5SUdaeWIyMGdKeTR2WTJGMFkyaElZVzVrYkdWeUp6dGNibHh1THk4ZzVxQzg1YnlQNVl5V2RYSnNYRzVtZFc1amRHbHZiaUJtYjNKdFlYUW9iM0pwWjJsdVZYSnNPaUJ6ZEhKcGJtY3BJSHRjYmlBZ0lDQnBaaUFvYjNKcFoybHVWWEpzTG5OMFlYSjBjMWRwZEdnb0oyaDBkSEFuS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2IzSnBaMmx1VlhKc1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYkdWMElIVnliRkJsY21acGVDQTlJR052Ym1acFp5NTFjbXhRWlhKbWFYZzdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MblZ5YkZCbGNtWnBlQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjFjbXhRWlhKbWFYZ2dQU0JqYjI1bWFXY3VkWEpzVUdWeVptbDRLQ2xjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZFhKc1VHVnlabWw0SUNzZ2IzSnBaMmx1VlhKc08xeHVJQ0FnSUgxY2JuMWNibHh1THk4ZzVvbUE1cHlKNksrMzVyR0M1WStSNVllNjVZbU42WnlBNkthQjVZR2E1NXFFNUxxTDVvT0ZYRzVtZFc1amRHbHZiaUJ3Y21WRWJ6eFVJR1Y0ZEdWdVpITWdTVkpsY1hWbGMzUlBjSFJwYjI0Z2ZDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJqNG9iMkpxT2lCVUxDQnlaWE52YkhabE9pQW9kbUZzZFdVL09pQmhibmtwSUQwK0lIWnZhV1FzSUhKbGFtVmpkRDg2SUNoeVpXRnpiMjQvT2lCaGJua3BJRDArSUhadmFXUXBPaUJVSUh0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNWlaV1p2Y21WVFpXNWtJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjYmlBZ0lDQWdJQ0FnYjJKcUxtSmxabTl5WlZObGJtUW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ0x5OGc1NW03NWIyVjVvQ0I1YVN4NXBXSTc3eU02WWVONWFTTjU1bTc1YjJWNks2aDVwV3dYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91Y21WTWIyZHBia052ZFc1MElEMDlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1eVpVeHZaMmx1UTI5MWJuUWdQU0F3TzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1eVpVeHZaMmx1UTI5MWJuUXJLenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYjJKcUxuTm9iM2RNYjJGa2FXNW5LU0I3WEc0Z0lDQWdJQ0FnSUd4dllXUnBibWN1YzJodmR5aHZZbW91YzJodmQweHZZV1JwYm1jcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hiMkpxTG05eWFXZHBibFZ5YkNrZ2UxeHVJQ0FnSUNBZ0lDQnZZbW91YjNKcFoybHVWWEpzSUQwZ2IySnFMblZ5YkR0Y2JpQWdJQ0FnSUNBZ2IySnFMblZ5YkNBOUlHWnZjbTFoZENodlltb3VkWEpzS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J2WW1vdVgzSmxjMjlzZG1VZ1BTQnlaWE52YkhabE8xeHVJQ0FnSUc5aWFpNWZjbVZxWldOMElEMGdjbVZxWldOME8xeHVYRzRnSUNBZ2NtVjBkWEp1SUc5aWFqdGNibjFjYmx4dUx5OGc1cUM4NWJ5UDVZeVc1YVNFNTVDRzZLKzM1ckdDNTVxRWIySnE1WWFGNWE2NVhHNW1kVzVqZEdsdmJpQnBibWwwYVdGc2FYcGxVbVZ4ZFdWemRFOWlhaWh2WW1vNklFbFNaWEYxWlhOMFQzQjBhVzl1S1NCN1hHNWNiaUFnSUNCcFppQW9JVzlpYWk1a1lYUmhLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNWtZWFJoSUQwZ2UzMDdYRzRnSUNBZ2ZWeHVJQ0FnSUZ4dUlDQWdJRzlpYWk1b1pXRmtaWElnUFNCdlltb3VhR1ZoWkdWeUlEOGdiMkpxTG1obFlXUmxjaUE2SUh0OU8xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG5ObGRFaGxZV1JsY2lBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCc1pYUWdhR1ZoWkdWeUlEMGdZMjl1Wm1sbkxuTmxkRWhsWVdSbGNpZ3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdobFlXUmxjaUE5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUc5aWFpNW9aV0ZrWlhJZ1BTQjdMaTR1YjJKcUxtaGxZV1JsY2l3Z0xpNHVhR1ZoWkdWeWZUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1elpYUklaV0ZrWlhJZ1BUMDlJQ2R2WW1wbFkzUW5LU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNW9aV0ZrWlhJZ1BTQjdMaTR1YjJKcUxtaGxZV1JsY2l3Z0xpNHVZMjl1Wm1sbkxuTmxkRWhsWVdSbGNuMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzlpYWk1dmNtbG5hVzVWY213Z0lUMDlJR052Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG5WeWJDQW1KaUJ6ZEdGMGRYTXVjMlZ6YzJsdmJpa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vdVpHRjBZU0E5SUhzZ0xpNHViMkpxTG1SaGRHRWdZWE1nYjJKcVpXTjBMQ0JiWTI5dVptbG5Mbk5sYzNOcGIyNU9ZVzFsWFRvZ2MzUmhkSFZ6TG5ObGMzTnBiMjRnZlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlEbHBvTG1ucHptbklubGhhamxzWURsajRMbWxiRHZ2SXpsaUpubXQ3dmxpcUJjYmlBZ0lDQmpiMjV6ZENCblpDQTlJR2RsZEVkc2IySmhiRVJoZEdFb0tUdGNiaUFnSUNCdlltb3VaR0YwWVNBOUlIc2dMaTR1WjJRc0lDNHVMbTlpYWk1a1lYUmhJR0Z6SUc5aWFtVmpkQ0I5TzF4dVhHNGdJQ0FnYjJKcUxtMWxkR2h2WkNBOUlHOWlhaTV0WlhSb2IyUWdmSHdnSjBkRlZDYzdYRzRnSUNBZ2IySnFMbVJoZEdGVWVYQmxJRDBnYjJKcUxtUmhkR0ZVZVhCbElIeDhJQ2RxYzI5dUp6dGNibHh1SUNBZ0lDOHZJT1dtZ3VhZW5PaXZ0K2F4Z3VTNGplYVlyMGRGVk8rOGpPV0ltZVdjcUZWU1RPUzRyZWlIcXVXS3FPV0tvT1M0aXVlWnUrVzlsZWFBZ2VXU2pPV0ZxT1d4Z09XUGd1YVZzRnh1SUNBZ0lHbG1JQ2doWTI5dVptbG5MbVJ2VG05MFZYTmxVWFZsY25sVGRISnBibWNnSmlZZ2IySnFMbTFsZEdodlpDQWhQVDBnWENKSFJWUmNJaWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9jM1JoZEhWekxuTmxjM05wYjI0cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUc5aWFpNTFjbXdnUFNCMWNtd3VjMlYwVUdGeVlXMXpLRzlpYWk1MWNtd3NJSHNnVzJOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlYwNklITjBZWFIxY3k1elpYTnphVzl1SUgwcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJRzlpYWk1MWNtd2dQU0IxY213dWMyVjBVR0Z5WVcxektHOWlhaTUxY213c0lHZGtLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUxuTjBZWEowS0c5aWFpazdYRzVjYmlBZ0lDQnlaWFIxY200Z2IySnFPMXh1ZlZ4dVhHNHZMeURtb0x6bHZJL2xqSmJscElUbmtJYmt1SXJrdktEbWxvZmt1N2JubW9Sdlltcmxob1hscnJsY2JtWjFibU4wYVc5dUlHbHVhWFJwWVd4cGVtVlZjR3h2WVdSR2FXeGxUMkpxS0c5aWFqb2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJSHRjYmlBZ0lDQnBaaUFvSVc5aWFpNW1iM0p0UkdGMFlTa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vdVptOXliVVJoZEdFZ1BTQjdmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnZZbW91YUdWaFpHVnlJRDBnYjJKcUxtaGxZV1JsY2lBL0lHOWlhaTVvWldGa1pYSWdPaUI3ZlR0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTV6WlhSSVpXRmtaWElnUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnYkdWMElHaGxZV1JsY2lBOUlHTnZibVpwWnk1elpYUklaV0ZrWlhJb0tUdGNiaUFnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJvWldGa1pYSWdQVDA5SUNkdlltcGxZM1FuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2WW1vdWFHVmhaR1Z5SUQwZ2V5NHVMbTlpYWk1b1pXRmtaWElzSUM0dUxtaGxZV1JsY24wN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1YzJWMFNHVmhaR1Z5SUQwOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lDQWdJQ0J2WW1vdWFHVmhaR1Z5SUQwZ2V5NHVMbTlpYWk1b1pXRmtaWElzSUM0dUxtTnZibVpwWnk1elpYUklaV0ZrWlhKOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHZZbW91YjNKcFoybHVWWEpzSUNFOVBTQmpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTUxY213Z0ppWWdjM1JoZEhWekxuTmxjM05wYjI0cElIdGNiaUFnSUNBZ0lDQWdiMkpxTG1admNtMUVZWFJoSUQwZ2V5QXVMaTV2WW1vdVptOXliVVJoZEdFZ1lYTWdiMkpxWldOMExDQmJZMjl1Wm1sbkxuTmxjM05wYjI1T1lXMWxYVG9nYzNSaGRIVnpMbk5sYzNOcGIyNGdmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeURscG9MbW5wem1uSW5saGFqbHNZRGxqNExtbGJEdnZJemxpSm5tdDd2bGlxQmNiaUFnSUNCamIyNXpkQ0JuWkNBOUlHZGxkRWRzYjJKaGJFUmhkR0VvS1R0Y2JpQWdJQ0J2WW1vdVptOXliVVJoZEdFZ1BTQjdJQzR1TG1ka0xDQXVMaTV2WW1vdVptOXliVVJoZEdFZ2ZUdGNibHh1SUNBZ0lHbG1JQ2doWTI5dVptbG5MbVJ2VG05MFZYTmxVWFZsY25sVGRISnBibWNwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGc1YkNHNTVtNzZabUc1b0NCNUxtZjViaW01WnlvZFhKczVMaUtYRzRnSUNBZ0lDQWdJR2xtSUNoemRHRjBkWE11YzJWemMybHZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTG5WeWJDQTlJSFZ5YkM1elpYUlFZWEpoYlhNb2IySnFMblZ5YkN3Z2V5QmJZMjl1Wm1sbkxuTmxjM05wYjI1T1lXMWxYVG9nYzNSaGRIVnpMbk5sYzNOcGIyNGdmU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0x5OGc1WVdvNWJHQTVZK0M1cFd3NVpDTTVwZTI1cFMrNVp5b2RYSnM1TGlLWEc0Z0lDQWdJQ0FnSUc5aWFpNTFjbXdnUFNCMWNtd3VjMlYwVUdGeVlXMXpLRzlpYWk1MWNtd3NJR2RrS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JrZFhKaGRHbHZibEpsY0c5eWRHVnlMbk4wWVhKMEtHOWlhaWs3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiMkpxTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJuWlhSSGJHOWlZV3hFWVhSaEtDa2dlMXh1SUNBZ0lHeGxkQ0JuWkRvZ1lXNTVJRDBnZTMwN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1WjJ4dlltRnNSR0YwWVNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lHZGtJRDBnWTI5dVptbG5MbWRzYjJKaGJFUmhkR0VvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VaMnh2WW1Gc1JHRjBZU0E5UFQwZ1hDSnZZbXBsWTNSY0lpa2dlMXh1SUNBZ0lDQWdJQ0JuWkNBOUlHTnZibVpwWnk1bmJHOWlZV3hFWVhSaE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaMlE3WEc1OVhHNWNibVoxYm1OMGFXOXVJR1J2VW1WeGRXVnpkQ2h2WW1vNklFbFNaWEYxWlhOMFQzQjBhVzl1S1NCN1hHNGdJQ0FnYjJKcUlEMGdhVzVwZEdsaGJHbDZaVkpsY1hWbGMzUlBZbW9vYjJKcUtUdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1aVpXWnZjbVZUWlc1a0lEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdiMkpxSUQwZ1kyOXVabWxuTG1KbFptOXlaVk5sYm1Rb2IySnFMQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJpazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJSGQ0TG5KbGNYVmxjM1FvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdlltb3VkWEpzTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaR0YwWVRvZ2IySnFMbVJoZEdFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WlhSb2IyUTZJRzlpYWk1dFpYUm9iMlFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQm9aV0ZrWlhJNklHOWlhaTVvWldGa1pYSWdmSHdnZTMwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaFZIbHdaVG9nYjJKcUxtUmhkR0ZVZVhCbElIeDhJQ2RxYzI5dUp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMVkyTmxjM01vY21Wek9pQlhaV05vWVhSTmFXNXBjSEp2WjNKaGJTNVNaWEYxWlhOMFUzVmpZMlZ6YzBOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVW9jbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQm1ZV2xzS0hKbGN6b2dWMlZqYUdGMFRXbHVhWEJ5YjJkeVlXMHVSMlZ1WlhKaGJFTmhiR3hpWVdOclVtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlMbk41YzNSbGJVVnljbTl5S0c5aWFpd2djbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSEpsY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl0Y0d4bGRHVW9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdlltb3VZMjl0Y0d4bGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlltb3VZMjl0Y0d4bGRHVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOWlhaTV6YUc5M1RHOWhaR2x1WnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYjJGa2FXNW5MbWhwWkdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pHOVZjR3h2WVdSR2FXeGxLRzlpYWpvZ1NWVndiRzloWkVacGJHVlBjSFJwYjI0cElIdGNiaUFnSUNCdlltb2dQU0JwYm1sMGFXRnNhWHBsVlhCc2IyRmtSbWxzWlU5aWFpaHZZbW9wTzF4dUlDQWdJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MbUpsWm05eVpWTmxibVFnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCdlltb2dQU0JqYjI1bWFXY3VZbVZtYjNKbFUyVnVaQ2h2WW1vc0lITjBZWFIxY3k1elpYTnphVzl1S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2QzZ3VkWEJzYjJGa1JtbHNaU2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjFjbXc2SUc5aWFpNTFjbXdzWEc0Z0lDQWdJQ0FnSUNBZ0lDQm1hV3hsVUdGMGFEb2diMkpxTG1acGJHVlFZWFJvSUh4OElDY25MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JtRnRaVG9nYjJKcUxtNWhiV1VnZkh3Z0p5Y3NYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSnRSR0YwWVRvZ2IySnFMbVp2Y20xRVlYUmhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MzVmpZMlZ6Y3loeVpYTTZJRmRsWTJoaGRFMXBibWx3Y205bmNtRnRMbFZ3Ykc5aFpFWnBiR1ZUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNoeVpYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUdaaGFXd29jbVZ6T2lCWFpXTm9ZWFJOYVc1cGNISnZaM0poYlM1SFpXNWxjbUZzUTJGc2JHSmhZMnRTWlhOMWJIUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsY25KdmNraGhibVJzWlhJdWMzbHpkR1Z0UlhKeWIzSW9iMkpxTENCeVpYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb2NtVnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyMXdiR1YwWlNncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JRzlpYWk1amIyMXdiR1YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1amIyMXdiR1YwWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYjJKcUxuTm9iM2RNYjJGa2FXNW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHZZV1JwYm1jdWFHbGtaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5S1Z4dWZWeHVYRzVtZFc1amRHbHZiaUJ5WlhGMVpYTjBQRlJTWlhOd1BpaHZZbW82SUVsU1pYRjFaWE4wVDNCMGFXOXVLVG9nVUhKdmJXbHpaVHhVVW1WemNENGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpTZ29jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUc5aWFpQTlJSEJ5WlVSdktHOWlhaXdnY21WemIyeDJaU3dnY21WcVpXTjBLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9ZMjl1Wm1sbkxtMXZZMnRLYzI5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdiVzlqYTFKbGMzQnZibk5sSUQwZ2JXOWphMDFoYm1GblpYSXVaMlYwS0c5aWFpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iVzlqYTFKbGMzQnZibk5sS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsYzNCdmJuTmxJRDBnY21WemNHOXVjMlZJWVc1a2JHVnlMbkpsYzNCdmJuTmxSbTl5VW1WeGRXVnpkQ2h0YjJOclVtVnpjRzl1YzJVc0lHOWlhaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVW9jbVZ6Y0c5dWMyVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHOWlhaTVqWVdOb1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRmphR1ZOWVc1aFoyVnlMbWRsZENodlltb3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2MyVnpjMmx2YmsxaGJtRm5aWEl1YldGcGJpaHZZbW9wTG5Sb1pXNG9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1J2VW1WeGRXVnpkQ2h2WW1vcFhHNGdJQ0FnSUNBZ0lIMHBMblJvWlc0b0tISmxjeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElISmxjM0J2Ym5ObElEMGdjbVZ6Y0c5dWMyVklZVzVrYkdWeUxuSmxjM0J2Ym5ObFJtOXlVbVZ4ZFdWemRDaHlaWE1nWVhNZ1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVVtVnhkV1Z6ZEZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDd2diMkpxS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeVpYTndiMjV6WlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WemNHOXVjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5S1M1allYUmphQ2dvWlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaGRHTm9TR0Z1Wkd4bGNpaGxMQ0J2WW1vc0lISmxhbVZqZENsY2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNCOUtWeHVmVnh1WEc1bWRXNWpkR2x2YmlCMWNHeHZZV1JHYVd4bEtHOWlham9nU1ZWd2JHOWhaRVpwYkdWUGNIUnBiMjRwT2lCaGJua2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpTZ29jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUc5aWFpQTlJSEJ5WlVSdktHOWlhaXdnY21WemIyeDJaU3dnY21WcVpXTjBLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9ZMjl1Wm1sbkxtMXZZMnRLYzI5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdiVzlqYTFKbGMzQnZibk5sSUQwZ2JXOWphMDFoYm1GblpYSXVaMlYwS0c5aWFpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iVzlqYTFKbGMzQnZibk5sS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsYzNCdmJuTmxJRDBnY21WemNHOXVjMlZJWVc1a2JHVnlMbkpsYzNCdmJuTmxSbTl5VlhCc2IyRmtSbWxzWlNodGIyTnJVbVZ6Y0c5dWMyVXNJRzlpYWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WemNHOXVjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2MyVnpjMmx2YmsxaGJtRm5aWEl1YldGcGJpaHZZbW9wTG5Sb1pXNG9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1J2VlhCc2IyRmtSbWxzWlNodlltb3BYRzRnSUNBZ0lDQWdJSDBwTG5Sb1pXNG9LSEpsY3lrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsYzNCdmJuTmxJRDBnY21WemNHOXVjMlZJWVc1a2JHVnlMbkpsYzNCdmJuTmxSbTl5VlhCc2IyRmtSbWxzWlNoeVpYTWdZWE1nVjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VlhCc2IyRmtSbWxzWlZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDd2diMkpxS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeVpYTndiMjV6WlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WemNHOXVjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5S1M1allYUmphQ2dvWlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRjBZMmhJWVc1a2JHVnlLR1VzSUc5aWFpd2djbVZxWldOMEtWeHVJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lIMHBYRzU5WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUh0Y2JpQWdJQ0JtYjNKdFlYUXNYRzRnSUNBZ2NtVnhkV1Z6ZEN4Y2JpQWdJQ0IxY0d4dllXUkdhV3hsWEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXF1ZXN0SGFuZGxlclwiKTtcbnZhciBlcnJvckhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2Vycm9ySGFuZGxlclwiKTtcbnZhciBjYWNoZU1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL2NhY2hlTWFuYWdlclwiKTtcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9zZXNzaW9uTWFuYWdlclwiKTtcbnZhciBqc29uU3VwZXJzZXRfMSA9IHJlcXVpcmUoXCIuLi91dGlsL2pzb25TdXBlcnNldFwiKTtcbmZ1bmN0aW9uIHJlc3BvbnNlRm9yUmVxdWVzdChyZXMsIG9iaikge1xuICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LmVuZChvYmopO1xuICAgICAgICBpZiAob2JqLmRhdGFUeXBlID09PSAnanNvbicgJiYgdHlwZW9mIHJlcy5kYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmVzLmRhdGEgPSBqc29uU3VwZXJzZXRfMS5kZWZhdWx0KHJlcy5kYXRhKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzLmRhdGEgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5jYXRjaEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubG9naW5UcmlnZ2VyKHJlcy5kYXRhKSAmJiBvYmoucmVMb2dpbkNvdW50ICE9PSB1bmRlZmluZWQgJiYgb2JqLnJlTG9naW5Db3VudCA8IGNvbmZpZ18xLmRlZmF1bHQucmVMb2dpbkxpbWl0KSB7XG4gICAgICAgICAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQuZGVsU2Vzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC5yZXF1ZXN0KG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzVHJpZ2dlcihyZXMuZGF0YSkpIHtcbiAgICAgICAgICAgIHZhciByZWFsRGF0YSA9IFwiXCI7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICBpZiAoIW9iai5ub0NhY2hlRmxhc2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxEYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhY2hlTWFuYWdlcl8xLmRlZmF1bHQuc2V0KG9iaiwgcmVhbERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAnbG9naWMtZXJyb3InLCByZXM6IHJlcyB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyB7IHR5cGU6ICdodHRwLWVycm9yJywgcmVzOiByZXMgfTtcbiAgICB9XG59XG5mdW5jdGlvbiByZXNwb25zZUZvclVwbG9hZEZpbGUocmVzLCBvYmopIHtcbiAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5lbmQob2JqKTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXMuZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlcy5kYXRhID0ganNvblN1cGVyc2V0XzEuZGVmYXVsdChyZXMuZGF0YSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlcy5kYXRhID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChvYmouY2F0Y2hFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmxvZ2ljRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmxvZ2luVHJpZ2dlcihyZXMuZGF0YSkgJiYgb2JqLnJlTG9naW5Db3VudCAhPT0gdW5kZWZpbmVkICYmIG9iai5yZUxvZ2luQ291bnQgPCBjb25maWdfMS5kZWZhdWx0LnJlTG9naW5MaW1pdCkge1xuICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0LmRlbFNlc3Npb24oKTtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQudXBsb2FkRmlsZShvYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc1RyaWdnZXIocmVzLmRhdGEpKSB7XG4gICAgICAgICAgICB2YXIgcmVhbERhdGEgPSBcIlwiO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSBjb25maWdfMS5kZWZhdWx0LnN1Y2Nlc3NEYXRhKHJlcy5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWxEYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAnbG9naWMtZXJyb3InLCByZXM6IHJlcyB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyB7IHR5cGU6ICdodHRwLWVycm9yJywgcmVzOiByZXMgfTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgcmVzcG9uc2VGb3JSZXF1ZXN0OiByZXNwb25zZUZvclJlcXVlc3QsXG4gICAgcmVzcG9uc2VGb3JVcGxvYWRGaWxlOiByZXNwb25zZUZvclVwbG9hZEZpbGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ6Y0c5dWMyVklZVzVrYkdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDIxdlpIVnNaUzl5WlhOd2IyNXpaVWhoYm1Sc1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zYlVSQlFUWkRPMEZCUXpkRExDdERRVUY1UXp0QlFVTjZReXdyUTBGQmVVTTdRVUZEZWtNc2RVUkJRV2xFTzBGQlEycEVMRzFFUVVFMlF6dEJRVVUzUXl4eFJFRkJLME03UVVGRkwwTXNVMEZCVXl4clFrRkJhMElzUTBGRGRrSXNSMEZCYlVRc1JVRkRia1FzUjBGQmJVSTdTVUZGYmtJc1NVRkJTU3hIUVVGSExFTkJRVU1zVlVGQlZTeExRVUZMTEVkQlFVY3NSVUZCUlR0UlFVVjRRaXd3UWtGQlowSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGSE1VSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1VVRkJVU3hMUVVGTExFMUJRVTBzU1VGQlNTeFBRVUZQTEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1VVRkJVU3hGUVVGRk8xbEJRM3BFTEVkQlFVY3NRMEZCUXl4SlFVRkpMRWRCUVVjc2MwSkJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRiRU1zU1VGQlNUdG5Ra0ZEUVN4SFFVRkhMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRMjVETzFsQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN1owSkJRMUlzU1VGQlJ5eEhRVUZITEVOQlFVTXNWVUZCVlN4RlFVRkZPMjlDUVVObUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJRM1JDTzNGQ1FVRk5PMjlDUVVOSUxITkNRVUZaTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYkVNc1QwRkJUenRwUWtGRFZqdGhRVU5LTzFOQlEwbzdVVUZGUkN4SlFVRkpMR2RDUVVGTkxFTkJRVU1zV1VGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zV1VGQldTeExRVUZMTEZOQlFWTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hIUVVGSExHZENRVUZOTEVOQlFVTXNXVUZCWVN4RlFVRkZPMWxCUlRkSExIZENRVUZqTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1dVRkROVUlzVDBGQlR5eDNRa0ZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU4wUXp0aFFVRk5MRWxCUVVrc1owSkJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJSWGhETEVsQlFVa3NVVUZCVVN4SFFVRnpReXhGUVVGRkxFTkJRVU03V1VGRGNrUXNTVUZCU1R0blFrRkRRU3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4WFFVRlhMRXRCUVVzc1ZVRkJWU3hGUVVGRk8yOUNRVU14UXl4UlFVRlJMRWRCUVVjc1owSkJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8ybENRVU16UXp0eFFrRkJUVHR2UWtGRFNDeFJRVUZSTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJRenRwUWtGRGRrSTdZVUZEU2p0WlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFZEJRVVU3V1VGRFpDeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmxCUVZrc1JVRkJSVHRuUWtGRmJrSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzVlVGQlZTeEZRVUZGTzI5Q1FVTnVReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMmxDUVVONlFqdHhRa0ZCVFR0dlFrRkRTQ3hQUVVGUExGRkJRVkVzUTBGQlF6dHBRa0ZEYmtJN1lVRkRTanRaUVVWRUxITkNRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU51UXp0aFFVRk5PMWxCUlVnc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeGhRVUZoTEVWQlFVVXNSMEZCUnl4TFFVRkJMRVZCUVVVc1EwRkJRVHRUUVVOeVF6dExRVU5LTzFOQlFVMDdVVUZGU0N4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxGbEJRVmtzUlVGQlJTeEhRVUZITEV0QlFVRXNSVUZCUlN4RFFVRkJPMHRCUTNCRE8wRkJRMHdzUTBGQlF6dEJRVVZFTEZOQlFWTXNjVUpCUVhGQ0xFTkJRekZDTEVkQlFYTkVMRVZCUTNSRUxFZEJRWE5DTzBsQlJYUkNMRWxCUVVrc1IwRkJSeXhEUVVGRExGVkJRVlVzUzBGQlN5eEhRVUZITEVWQlFVVTdVVUZGZUVJc01FSkJRV2RDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSekZDTEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1NVRkJTU3hMUVVGTExGRkJRVkVzUlVGQlJUdFpRVU01UWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hIUVVGSExITkNRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRMnhETEVsQlFVazdaMEpCUTBFc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU51UXp0WlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8yZENRVU5TTEVsQlFVY3NSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSVHR2UWtGRFppeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU4wUWp0eFFrRkJUVHR2UWtGRFNDeHpRa0ZCV1N4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTJ4RExFOUJRVTg3YVVKQlExWTdZVUZEU2p0VFFVTktPMUZCUlVRc1NVRkJTU3huUWtGQlRTeERRVUZETEZsQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEZsQlFWa3NTMEZCU3l4VFFVRlRMRWxCUVVrc1IwRkJSeXhEUVVGRExGbEJRVmtzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRmxCUVdFc1JVRkJSVHRaUVVVM1J5eDNRa0ZCWXl4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xbEJRelZDTEU5QlFVOHNkMEpCUVdNc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEZWtNN1lVRkJUU3hKUVVGSkxHZENRVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVVY0UXl4SlFVRkpMRkZCUVZFc1IwRkJjME1zUlVGQlJTeERRVUZETzFsQlEzSkVMRWxCUVVrN1owSkJRMEVzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1YwRkJWeXhMUVVGTExGVkJRVlVzUlVGQlJUdHZRa0ZETVVNc1VVRkJVU3hIUVVGSExHZENRVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHBRa0ZETTBNN2NVSkJRVTA3YjBKQlEwZ3NVVUZCVVN4SFFVRkhMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU03YVVKQlEzWkNPMkZCUTBvN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeEhRVUZGTzFsQlJXUXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzVlVGQlZTeEZRVUZGTzJkQ1FVTnVReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMkZCUTNwQ08ybENRVUZOTzJkQ1FVTklMRTlCUVU4c1VVRkJVU3hEUVVGRE8yRkJRMjVDTzFOQlEwbzdZVUZCVFR0WlFVVklMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzWVVGQllTeEZRVUZGTEVkQlFVY3NTMEZCUVN4RlFVRkZMRU5CUVVFN1UwRkRja003UzBGRFNqdFRRVUZOTzFGQlJVZ3NUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3haUVVGWkxFVkJRVVVzUjBGQlJ5eExRVUZCTEVWQlFVVXNRMEZCUVR0TFFVTndRenRCUVVOTUxFTkJRVU03UVVGRlJDeHJRa0ZCWlR0SlFVTllMR3RDUVVGclFpeHZRa0ZCUVR0SlFVTnNRaXh4UWtGQmNVSXNkVUpCUVVFN1EwRkRlRUlzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQmpiMjVtYVdjZ1puSnZiU0FuTGk0dmMzUnZjbVV2WTI5dVptbG5KMXh1YVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dmNtVnhkV1Z6ZEVoaGJtUnNaWEluWEc1cGJYQnZjblFnWlhKeWIzSklZVzVrYkdWeUlHWnliMjBnSnk0dlpYSnliM0pJWVc1a2JHVnlKMXh1YVcxd2IzSjBJR05oWTJobFRXRnVZV2RsY2lCbWNtOXRJQ2N1TDJOaFkyaGxUV0Z1WVdkbGNpZGNibWx0Y0c5eWRDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUlHWnliMjBnSnk0dlpIVnlZWFJwYjI1U1pYQnZjblJsY2lkY2JtbHRjRzl5ZENCelpYTnphVzl1VFdGdVlXZGxjaUJtY205dElDY3VMM05sYzNOcGIyNU5ZVzVoWjJWeUoxeHVhVzF3YjNKMElIc2dTVkpsY1hWbGMzUlBjSFJwYjI0c0lFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUxDQkpRVzU1VDJKcVpXTjBJSDBnWm5KdmJTQmNJaTR1TDJsdWRHVnlabUZqWlZ3aU8xeHVhVzF3YjNKMElHcHpiMjVUZFhCbGNuTmxkQ0JtY205dElDY3VMaTkxZEdsc0wycHpiMjVUZFhCbGNuTmxkQ2RjYmx4dVpuVnVZM1JwYjI0Z2NtVnpjRzl1YzJWR2IzSlNaWEYxWlhOMEtGeHVJQ0FnSUhKbGN6b2dWMlZqYUdGMFRXbHVhWEJ5YjJkeVlXMHVVbVZ4ZFdWemRGTjFZMk5sYzNORFlXeHNZbUZqYTFKbGMzVnNkQ3hjYmlBZ0lDQnZZbW82SUVsU1pYRjFaWE4wVDNCMGFXOXVYRzRwT2lCaGJua2dlMXh1SUNBZ0lHbG1JQ2h5WlhNdWMzUmhkSFZ6UTI5a1pTQTlQVDBnTWpBd0tTQjdYRzVjYmlBZ0lDQWdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVsYm1Rb2IySnFLVHRjYmlBZ0lDQWdJQ0FnWEc0Z0lDQWdJQ0FnSUM4dklPaXZ0K2F4Z3VhZ3ZPVzhqK1M0dW1wemIyN3Z2SXprdllib3Y1VGxtNTdrdW9aemRISnBibWZ2dkl6b3I3VG1tSTdsaG9YbHJybmt1SzNsajYvb2c3M2xyWmpsbktqbHI3em9oN1RrdmIvbHZwZEtZWFpoVTJOeWFYQjA1YnlDNWJpNDU1cUU1YTJYNTZ5bVhHNGdJQ0FnSUNBZ0lHbG1JQ2h2WW1vdVpHRjBZVlI1Y0dVZ1BUMDlJQ2RxYzI5dUp5QW1KaUIwZVhCbGIyWWdjbVZ6TG1SaGRHRWdQVDA5SUNkemRISnBibWNuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhNdVpHRjBZU0E5SUdwemIyNVRkWEJsY25ObGRDaHlaWE11WkdGMFlTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsY3k1a1lYUmhJRDBnU2xOUFRpNXdZWEp6WlNoeVpYTXVaR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9iMkpxTG1OaGRHTm9SWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnljbTl5U0dGdVpHeGxjaTVzYjJkcFkwVnljbTl5S0c5aWFpd2djbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoamIyNW1hV2N1Ykc5bmFXNVVjbWxuWjJWeUlTaHlaWE11WkdGMFlTa2dKaVlnYjJKcUxuSmxURzluYVc1RGIzVnVkQ0FoUFQwZ2RXNWtaV1pwYm1Wa0lDWW1JRzlpYWk1eVpVeHZaMmx1UTI5MWJuUWdQQ0JqYjI1bWFXY3VjbVZNYjJkcGJreHBiV2wwSVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzU1bTc1YjJWNW9DQjVhU3g1cFdJNzd5TTVMaVU2WWVONksrVjVxeWg1cFd3NUxpTjZMYUY2TCtINllXTjU3MnVYRzRnSUNBZ0lDQWdJQ0FnSUNCelpYTnphVzl1VFdGdVlXZGxjaTVrWld4VFpYTnphVzl1S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ4ZFdWemRFaGhibVJzWlhJdWNtVnhkV1Z6ZENodlltb3BPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOdmJtWnBaeTV6ZFdOalpYTnpWSEpwWjJkbGNpaHlaWE11WkdGMFlTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJT2FPcGVXUG8raS9sT1dibnVhSWtPV0tuK2VnZ1Z4dUlDQWdJQ0FnSUNBZ0lDQWdiR1YwSUhKbFlXeEVZWFJoT2lCemRISnBibWNnZkNCSlFXNTVUMkpxWldOMElId2dRWEp5WVhsQ2RXWm1aWElnUFNCY0lsd2lPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTV6ZFdOalpYTnpSR0YwWVNBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaV0ZzUkdGMFlTQTlJR052Ym1acFp5NXpkV05qWlhOelJHRjBZU2h5WlhNdVpHRjBZU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVmhiRVJoZEdFZ1BTQnlaWE11WkdGMFlUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0Z2WW1vdWJtOURZV05vWlVac1lYTm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVhYUM1cDZjNUxpNjVMcUc1TCtkNksrQjZhRzE2WjJpNUxpTjZaZXE1NE9CNzd5TTVZaVo1TGlONVp1ZTZMQ0Q3N3lNNVkrcTVwaXY1N3lUNWEyWTVweUE1cGF3NXBXdzVvMnU3N3lNNWI2RjVMaUw1cXloNkwrYjVZV2w1WWFONTVTb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91YzNWalkyVnpjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOWlhaTV6ZFdOalpYTnpLSEpsWVd4RVlYUmhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WaGJFUmhkR0U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1N3lUNWEyWTVhMlk1WUtvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZV05vWlUxaGJtRm5aWEl1YzJWMEtHOWlhaXdnY21WaGJFUmhkR0VwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNW82bDVZK2o2TCtVNVp1ZTVhU3g2TFNsNTZDQlhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QjdJSFI1Y0dVNklDZHNiMmRwWXkxbGNuSnZjaWNzSUhKbGN5QjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJvZEhSd2MraS9sT1dibnVlS3R1YUFnZWVnZ2VtZG5qSXdNRnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QjdJSFI1Y0dVNklDZG9kSFJ3TFdWeWNtOXlKeXdnY21WeklIMWNiaUFnSUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUhKbGMzQnZibk5sUm05eVZYQnNiMkZrUm1sc1pTaGNiaUFnSUNCeVpYTTZJRmRsWTJoaGRFMXBibWx3Y205bmNtRnRMbFZ3Ykc5aFpFWnBiR1ZUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRc1hHNGdJQ0FnYjJKcU9pQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJseHVLVG9nWVc1NUlIdGNiaUFnSUNCcFppQW9jbVZ6TG5OMFlYUjFjME52WkdVZ1BUMDlJREl3TUNrZ2UxeHVYRzRnSUNBZ0lDQWdJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSXVaVzVrS0c5aWFpazdYRzVjYmlBZ0lDQWdJQ0FnTHk4ZzVZYUY1YTY1NUxpdDVZK3Y2SU85NWEyWTVaeW81YSs4NkllMDVMMi81YjZYU21GMllWTmpjbWx3ZE9XOGd1VzR1T2VhaE9XdGwrZXNwbHh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhKbGN5NWtZWFJoSUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVnpMbVJoZEdFZ1BTQnFjMjl1VTNWd1pYSnpaWFFvY21WekxtUmhkR0VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYTXVaR0YwWVNBOUlFcFRUMDR1Y0dGeWMyVW9jbVZ6TG1SaGRHRXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0c5aWFpNWpZWFJqYUVWeWNtOXlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lobEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsY25KdmNraGhibVJzWlhJdWJHOW5hV05GY25KdmNpaHZZbW9zSUhKbGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCcFppQW9ZMjl1Wm1sbkxteHZaMmx1VkhKcFoyZGxjaUVvY21WekxtUmhkR0VwSUNZbUlHOWlhaTV5WlV4dloybHVRMjkxYm5RZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FtSmlCdlltb3VjbVZNYjJkcGJrTnZkVzUwSUR3Z1kyOXVabWxuTG5KbFRHOW5hVzVNYVcxcGRDRXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJT2VadStXOWxlYUFnZVdrc2VhVmlPKzhqT1M0bE9tSGplaXZsZWFzb2VhVnNPUzRqZWkyaGVpL2grbUZqZWU5cmx4dUlDQWdJQ0FnSUNBZ0lDQWdjMlZ6YzJsdmJrMWhibUZuWlhJdVpHVnNVMlZ6YzJsdmJpZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGNYVmxjM1JJWVc1a2JHVnlMblZ3Ykc5aFpFWnBiR1VvYjJKcUtUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hqYjI1bWFXY3VjM1ZqWTJWemMxUnlhV2RuWlhJb2NtVnpMbVJoZEdFcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG1qcVhsajZQb3Y1VGxtNTdtaUpEbGlwL25vSUZjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J5WldGc1JHRjBZVG9nYzNSeWFXNW5JSHdnU1VGdWVVOWlhbVZqZENCOElFRnljbUY1UW5WbVptVnlJRDBnWENKY0lqdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VjM1ZqWTJWemMwUmhkR0VnUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVmhiRVJoZEdFZ1BTQmpiMjVtYVdjdWMzVmpZMlZ6YzBSaGRHRW9jbVZ6TG1SaGRHRXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbFlXeEVZWFJoSUQwZ2NtVnpMbVJoZEdFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UzMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91YzNWalkyVnpjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxuTjFZMk5sYzNNb2NtVmhiRVJoZEdFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZoYkVSaGRHRTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlEbWpxWGxqNlBvdjVUbG01N2xwTEhvdEtYbm9JRmNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJSHNnZEhsd1pUb2dKMnh2WjJsakxXVnljbTl5Snl3Z2NtVnpJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQzh2SUdoMGRIQno2TCtVNVp1ZTU0cTI1b0NCNTZDQjZaMmVNakF3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJSHNnZEhsd1pUb2dKMmgwZEhBdFpYSnliM0luTENCeVpYTWdmVnh1SUNBZ0lIMWNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4dUlDQWdJSEpsYzNCdmJuTmxSbTl5VW1WeGRXVnpkQ3hjYmlBZ0lDQnlaWE53YjI1elpVWnZjbFZ3Ykc5aFpFWnBiR1ZjYm4wN1hHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBlcnJvckhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2Vycm9ySGFuZGxlclwiKTtcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXF1ZXN0SGFuZGxlclwiKTtcbnZhciBsb2FkaW5nXzEgPSByZXF1aXJlKFwiLi4vdXRpbC9sb2FkaW5nXCIpO1xudmFyIHJlcXVlc3RfMSA9IHJlcXVpcmUoXCIuLi9hcGkvcmVxdWVzdFwiKTtcbnZhciBjaGVja1Nlc3Npb25Qcm9taXNlID0gbnVsbDtcbmZ1bmN0aW9uIGNoZWNrU2Vzc2lvbigpIHtcbiAgICBpZiAoIWNoZWNrU2Vzc2lvblByb21pc2UpIHtcbiAgICAgICAgY2hlY2tTZXNzaW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgd3guY2hlY2tTZXNzaW9uKHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbFNlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvTG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LnJlcG9ydCgnd3hfY2hlY2tTZXNzaW9uJywgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2hlY2tTZXNzaW9uUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGlzU2Vzc2lvbkV4cGlyZU9yRW1wdHkoKSB7XG4gICAgaWYgKCFzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIG5ldyBEYXRlKCkuZ2V0VGltZSgpID4gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKSB7XG4gICAgICAgIGRlbFNlc3Npb24oKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNoZWNrTG9naW4oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgaWYgKGlzU2Vzc2lvbkV4cGlyZU9yRW1wdHkoKSkge1xuICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZG9Mb2dpbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG52YXIgbG9naW5Qcm9taXNlID0gbnVsbDtcbmZ1bmN0aW9uIGRvTG9naW4oKSB7XG4gICAgaWYgKCFsb2dpblByb21pc2UpIHtcbiAgICAgICAgbG9naW5Qcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgbG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2dpblByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgbG9naW5Qcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBsb2FkaW5nXzEuZGVmYXVsdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbG9naW5Qcm9taXNlO1xufVxuZnVuY3Rpb24gbG9naW4oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHd4LmxvZ2luKHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTJTZXNzaW9uKHJlcy5jb2RlKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IFwi55m75b2V5aSx6LSlXCIsIFwiY29udGVudFwiOiBcIuivt+eojeWQjumHjeivlVtjb2RlIOiOt+WPluWksei0pV1cIiB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQucmVwb3J0KCd3eF9sb2dpbicsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IFwi55m75b2V5aSx6LSlXCIsIFwiY29udGVudFwiOiByZXMuZXJyTXNnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHNldFNlc3Npb24oc2Vzc2lvbikge1xuICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA9IHRydWU7XG4gICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUgJiYgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5KSB7XG4gICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZTtcbiAgICAgICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSxcbiAgICAgICAgICAgIGRhdGE6IFN0cmluZyhzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lLFxuICAgICAgICBkYXRhOiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNvZGUyU2Vzc2lvbihjb2RlKSB7XG4gICAgdmFyIGRhdGE7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGRhdGEgPSBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YShjb2RlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGRhdGEgPSBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YSB8fCB7fTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5jb2RlTmFtZSkge1xuICAgICAgICBkYXRhW2NvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5jb2RlTmFtZV0gPSBjb2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZGF0YS5jb2RlID0gY29kZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHd4LnJlcXVlc3Qoe1xuICAgICAgICAgICAgdXJsOiByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQuZm9ybWF0KGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi51cmwpLFxuICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgIG1ldGhvZDogY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLm1ldGhvZCB8fCAnR0VUJyxcbiAgICAgICAgICAgIGhlYWRlcjogdHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyID09PSAnZnVuY3Rpb24nID8gY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIoKSA6IGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyLFxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ucmVwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5yZXBvcnQoY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnJlcG9ydCwgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnN1Y2Nlc3MocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUgJiYgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogU3RyaW5nKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZ2V0RXJyb3JNc2cocmVzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0aXRsZTogXCLnmbvlvZXlpLHotKVcIiwgXCJjb250ZW50XCI6IFwi6K+356iN5ZCO6YeN6K+VXCIgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0aXRsZTogXCLnmbvlvZXlpLHotKVcIiwgXCJjb250ZW50XCI6IFwi6K+356iN5ZCO6YeN6K+VXCIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZGVsU2Vzc2lvbigpIHtcbiAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSAnJztcbiAgICB3eC5yZW1vdmVTdG9yYWdlKHtcbiAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXG4gICAgfSk7XG4gICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUgJiYgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5KSB7XG4gICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IEluZmluaXR5O1xuICAgICAgICB3eC5yZW1vdmVTdG9yYWdlKHtcbiAgICAgICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1haW4ocmVsYXRlZFJlcXVlc3RPYmopIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgcmV0cnkgPSAhcmVsYXRlZFJlcXVlc3RPYmpcbiAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gbWFpbigpLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KTsgfVxuICAgICAgICAgICAgOiBmdW5jdGlvbiAoKSB7IHJldHVybiByZXF1ZXN0XzEuZGVmYXVsdChyZWxhdGVkUmVxdWVzdE9iaikudGhlbihyZWxhdGVkUmVxdWVzdE9iai5fcmVzb2x2ZSkuY2F0Y2gocmVsYXRlZFJlcXVlc3RPYmouX3JlamVjdCk7IH07XG4gICAgICAgIHJldHVybiBjaGVja0xvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA/IFByb21pc2UucmVzb2x2ZSgpIDogY2hlY2tTZXNzaW9uKCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIHRpdGxlID0gX2EudGl0bGUsIGNvbnRlbnQgPSBfYS5jb250ZW50O1xuICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5kb0Vycm9yKHRpdGxlLCBjb250ZW50LCByZXRyeSk7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IHRpdGxlLCBjb250ZW50OiBjb250ZW50IH0pO1xuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIHRpdGxlID0gX2EudGl0bGUsIGNvbnRlbnQgPSBfYS5jb250ZW50O1xuICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5kb0Vycm9yKHRpdGxlLCBjb250ZW50LCByZXRyeSk7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IHRpdGxlLCBjb250ZW50OiBjb250ZW50IH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBtYWluOiBtYWluLFxuICAgIHNldFNlc3Npb246IHNldFNlc3Npb24sXG4gICAgZGVsU2Vzc2lvbjogZGVsU2Vzc2lvblxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnpjMmx2YmsxaGJtRm5aWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZiVzlrZFd4bEwzTmxjM05wYjI1TllXNWhaMlZ5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTUVOQlFXOURPMEZCUTNCRExEQkRRVUZ2UXp0QlFVTndReXdyUTBGQmVVTTdRVUZEZWtNc2RVUkJRV2xFTzBGQlEycEVMRzFFUVVFMlF6dEJRVU0zUXl3eVEwRkJjVU03UVVGRGNrTXNNRU5CUVc5RE8wRkJTWEJETEVsQlFVa3NiVUpCUVcxQ0xFZEJRVkVzU1VGQlNTeERRVUZETzBGQlJYQkRMRk5CUVZNc1dVRkJXVHRKUVVOcVFpeEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVU3VVVGRGRFSXNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUVHRaUVVNNVF5eEpRVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzFsQlEyNURMRVZCUVVVc1EwRkJReXhaUVVGWkxFTkJRVU03WjBKQlExb3NUMEZCVHp0dlFrRkZTQ3hQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETzJkQ1FVTnlRaXhEUVVGRE8yZENRVU5FTEVsQlFVa3NSVUZCU2p0dlFrRkZTU3hWUVVGVkxFVkJRVVVzUTBGQlF6dHZRa0ZEWWl4UFFVRlBMRTlCUVU4c1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEYkVJc1QwRkJUeXhQUVVGUExFVkJRVVVzUTBGQlF6dHZRa0ZEY2tJc1EwRkJReXhGUVVGRkxGVkJRVU1zUjBGQlVUdDNRa0ZEVWl4UFFVRlBMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEZGtJc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlExQXNRMEZCUXp0blFrRkRSQ3hSUVVGUk8yOUNRVU5LTEVsQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdiMEpCUTJwRExEQkNRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRU5CUVVNN1lVRkRTaXhEUVVGRExFTkJRVUU3VVVGRFRpeERRVUZETEVOQlFVTXNRMEZCUVR0TFFVTk1PMGxCUTBRc1QwRkJUeXh0UWtGQmJVSXNRMEZCUXp0QlFVTXZRaXhEUVVGRE8wRkJSMFFzVTBGQlV5eHpRa0ZCYzBJN1NVRkRNMElzU1VGQlNTeERRVUZETEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhGUVVGRk8xRkJSV3BDTEU5QlFVOHNTVUZCU1N4RFFVRkJPMHRCUTJRN1NVRkRSQ3hKUVVGSkxHZENRVUZOTEVOQlFVTXNhVUpCUVdsQ0xFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1IwRkJSeXhuUWtGQlRTeERRVUZETEdGQlFXRXNSVUZCUlR0UlFVVjZSU3hWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU5pTEU5QlFVOHNTVUZCU1N4RFFVRkJPMHRCUTJRN1NVRkRSQ3hQUVVGUExFdEJRVXNzUTBGQlFUdEJRVU5vUWl4RFFVRkRPMEZCUlVRc1UwRkJVeXhWUVVGVk8wbEJRMllzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VlFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTk8xRkJReTlDTEVsQlFVa3NjMEpCUVhOQ0xFVkJRVVVzUlVGQlJUdFpRVVV4UWl4blFrRkJUU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRWxCUVVrc1EwRkJRenRaUVVOb1F5eFBRVUZQTEU5QlFVOHNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRGJFSXNUMEZCVHl4UFFVRlBMRVZCUVVVc1EwRkJRenRaUVVOeVFpeERRVUZETEVWQlFVVXNWVUZCUXl4SFFVRlJPMmRDUVVOU0xFOUJRVThzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNaQ0xFTkJRVU1zUTBGQlF5eERRVUZCTzFOQlEwdzdZVUZCVFR0WlFVVklMRTlCUVU4c1QwRkJUeXhGUVVGRkxFTkJRVU03VTBGRGNFSTdTVUZEVEN4RFFVRkRMRU5CUVVNc1EwRkJRVHRCUVVOT0xFTkJRVU03UVVGSFJDeEpRVUZKTEZsQlFWa3NSMEZCVVN4SlFVRkpMRU5CUVVNN1FVRkZOMElzVTBGQlV5eFBRVUZQTzBsQlExb3NTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSVHRSUVVObUxGbEJRVmtzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VlFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTk8xbEJRM1pETEV0QlFVc3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRFZDeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRPMmRDUVVOd1FpeFBRVUZQTEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTNKQ0xFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4VlFVRkRMRWRCUVVjN1owSkJRMVFzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXp0blFrRkRjRUlzYVVKQlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRuUWtGRFppeFBRVUZQTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOMlFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTlFMRU5CUVVNc1EwRkJReXhEUVVGQk8wdEJRMHc3U1VGRFJDeFBRVUZQTEZsQlFWa3NRMEZCUXp0QlFVTjRRaXhEUVVGRE8wRkJSVVFzVTBGQlV5eExRVUZMTzBsQlExWXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhWUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTzFGQlF5OUNMRWxCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkRia01zUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXp0WlFVTk1MRTlCUVU4c1dVRkJReXhIUVVGSE8yZENRVU5RTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSVHR2UWtGRFZpeFpRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEZUVJc1QwRkJUeXhQUVVGUExFVkJRVVVzUTBGQlF6dHZRa0ZEY2tJc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEZWQlFVTXNSMEZCUnp0M1FrRkRWQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRka0lzUTBGQlF5eERRVUZETEVOQlFVRTdhVUpCUTB3N2NVSkJRVTA3YjBKQlEwZ3NUMEZCVHl4TlFVRk5MRU5CUVVNc1JVRkJReXhMUVVGTExFVkJRVVVzVFVGQlRTeEZRVUZGTEZOQlFWTXNSVUZCUlN4clFrRkJhMElzUlVGQlF5eERRVUZETEVOQlFVTTdhVUpCUTJwRk8xbEJRMHdzUTBGQlF6dFpRVU5FTEZGQlFWRTdaMEpCUTBvc1NVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRuUWtGRGFrTXNNRUpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEZWQlFWVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGNFUXNRMEZCUXp0WlFVTkVMRWxCUVVrc1dVRkJReXhIUVVGSE8yZENRVU5LTEU5QlFVOHNUVUZCVFN4RFFVRkRMRVZCUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRTFCUVUwc1JVRkJReXhEUVVGRExFTkJRVU03V1VGRE1VUXNRMEZCUXp0VFFVTktMRU5CUVVNc1EwRkJRVHRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMRk5CUVZNc1ZVRkJWU3hEUVVGRExFOUJRV1U3U1VGREwwSXNaMEpCUVUwc1EwRkJReXhQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBsQlJYcENMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJSV2hETEVsQlFVa3NaMEpCUVUwc1EwRkJReXhwUWtGQmFVSXNTVUZCU1N4blFrRkJUU3hEUVVGRExHZENRVUZuUWl4RlFVRkZPMUZCUTNKRUxHZENRVUZOTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0UlFVTjJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzFsQlExWXNSMEZCUnl4RlFVRkZMR2RDUVVGTkxFTkJRVU1zWjBKQlFXZENPMWxCUXpWQ0xFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU03VTBGRGNrTXNRMEZCUXl4RFFVRkJPMHRCUTB3N1NVRkRSQ3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzFGQlExWXNSMEZCUnl4RlFVRkZMR2RDUVVGTkxFTkJRVU1zVjBGQmNVSTdVVUZEYWtNc1NVRkJTU3hGUVVGRkxHZENRVUZOTEVOQlFVTXNUMEZCVHp0TFFVTjJRaXhEUVVGRExFTkJRVU03UVVGRFVDeERRVUZETzBGQlJVUXNVMEZCVXl4WlFVRlpMRU5CUVVNc1NVRkJXVHRKUVVNNVFpeEpRVUZKTEVsQlFWTXNRMEZCUXp0SlFVVmtMRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xRkJRMnBFTEVsQlFVa3NSMEZCUnl4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRNVU03VTBGQlRUdFJRVU5JTEVsQlFVa3NSMEZCUnl4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRPMHRCUXpGRE8wbEJRMFFzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFVkJRVVU3VVVGREwwSXNTVUZCU1N4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJRenRMUVVNNVF6dFRRVUZOTzFGQlEwZ3NTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03UzBGRGNFSTdTVUZGUkN4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExGVkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMDdVVUZETDBJc1NVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVOcVF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRPMWxCUTFBc1IwRkJSeXhGUVVGRkxIZENRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXp0WlFVTndSQ3hKUVVGSkxFMUJRVUU3V1VGRFNpeE5RVUZOTEVWQlFVVXNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeEpRVUZKTEV0QlFVczdXVUZETlVNc1RVRkJUU3hGUVVGRkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4VFFVRlRMRXRCUVVzc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGQkxFTkJRVU1zUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNN1dVRkRja1lzVDBGQlR5eEZRVUZRTEZWQlFWRXNSMEZCYlVRN1owSkJRM1pFTEVsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1MwRkJTeXhIUVVGSExFVkJRVVU3YjBKQlJYaENMRWxCUVVrc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RlFVRkZPM2RDUVVNM1FpeEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzNkQ1FVTXZRaXd3UWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlFUdHhRa0ZEYmtVN2IwSkJSVVFzU1VGQlNTeERRVUZETEZOQlFVRXNRMEZCUXp0dlFrRkRUaXhKUVVGSk8zZENRVU5CTEVOQlFVTXNSMEZCUnl4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8zRkNRVU01UXp0dlFrRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdHhRa0ZEV0R0dlFrRkZSQ3hKUVVGSkxFOUJRVThzUTBGQlF5eExRVUZMTEZGQlFWRXNSVUZCUlR0M1FrRkRka0lzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRE8zZENRVVZ1UWl4blFrRkJUU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRWxCUVVrc1EwRkJRenQzUWtGRmFFTXNTVUZCU1N4blFrRkJUU3hEUVVGRExHbENRVUZwUWl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVN05FSkJRM0pFTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenMwUWtGRGRrVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJRenRuUTBGRFZpeEhRVUZITEVWQlFVVXNaMEpCUVUwc1EwRkJReXhuUWtGQlowSTdaME5CUXpWQ0xFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU03TmtKQlEzSkRMRU5CUVVNc1EwRkJRVHQ1UWtGRFREdDNRa0ZEUkN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE96UkNRVU5XTEVkQlFVY3NSVUZCUlN4blFrRkJUU3hEUVVGRExGZEJRVmM3TkVKQlEzWkNMRWxCUVVrc1JVRkJSU3huUWtGQlRTeERRVUZETEU5QlFVODdlVUpCUTNaQ0xFTkJRVU1zUTBGQlF6dDNRa0ZEU0N4UFFVRlBMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHhRa0ZEY2tJN2VVSkJRVTA3ZDBKQlEwZ3NUMEZCVHl4TlFVRk5MRU5CUVVNc2MwSkJRVmtzUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR4UWtGRGFFUTdhVUpCUTBvN2NVSkJRVTA3YjBKQlEwZ3NUMEZCVHl4TlFVRk5MRU5CUVVNc1JVRkJReXhMUVVGTExFVkJRVVVzVFVGQlRTeEZRVUZGTEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVNc1EwRkJReXhEUVVGRE8ybENRVU4wUkR0WlFVTk1MRU5CUVVNN1dVRkRSQ3hSUVVGUk8xbEJRMUlzUTBGQlF6dFpRVU5FTEVsQlFVa3NSVUZCUlR0blFrRkRSaXhQUVVGUExFMUJRVTBzUTBGQlF5eEZRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFOUJRVThzUlVGQlF5eERRVUZETEVOQlFVTTdXVUZEZGtRc1EwRkJRenRUUVVOS0xFTkJRVU1zUTBGQlFUdEpRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVkRUxGTkJRVk1zVlVGQlZUdEpRVU5tTEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU53UWl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRE8xRkJRMklzUjBGQlJ5eEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1YwRkJjVUk3UzBGRGNFTXNRMEZCUXl4RFFVRkRPMGxCUTBnc1NVRkJTU3huUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhKUVVGSkxHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVU3VVVGRGNrUXNaMEpCUVUwc1EwRkJReXhoUVVGaExFZEJRVWNzVVVGQlVTeERRVUZETzFGQlEyaERMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRVU03V1VGRFlpeEhRVUZITEVWQlFVVXNaMEpCUVUwc1EwRkJReXhuUWtGQlowSTdVMEZETDBJc1EwRkJReXhEUVVGQk8wdEJRMHc3UVVGRFRDeERRVUZETzBGQlJVUXNVMEZCVXl4SlFVRkpMRU5CUVVNc2FVSkJRWE5FTzBsQlEyaEZMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTXZRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEdsQ1FVRnBRanRaUVVVeFFpeERRVUZETEVOQlFVTXNZMEZCVFN4UFFVRkJMRWxCUVVrc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRV3hETEVOQlFXdERPMWxCUlRGRExFTkJRVU1zUTBGQlF5eGpRVUZOTEU5QlFVRXNhVUpCUVU4c1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVFZHTEVOQlFUUkdMRU5CUVVNN1VVRkRla2NzVDBGQlR5eFZRVUZWTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRja0lzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkJPMUZCUTNoRkxFTkJRVU1zUlVGQlJTeFZRVUZETEVWQlFXZENPMmRDUVVGbUxFdEJRVXNzVjBGQlFTeEZRVUZGTEU5QlFVOHNZVUZCUVR0WlFVTm1MSE5DUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRE5VTXNUMEZCVHl4TlFVRk5MRU5CUVVNc1JVRkJReXhMUVVGTExFOUJRVUVzUlVGQlJTeFBRVUZQTEZOQlFVRXNSVUZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPMWxCUTBvc1QwRkJUeXhQUVVGUExFVkJRVVVzUTBGQlF6dFJRVU55UWl4RFFVRkRMRVZCUVVVc1ZVRkJReXhGUVVGblFqdG5Ra0ZCWml4TFFVRkxMRmRCUVVFc1JVRkJSU3hQUVVGUExHRkJRVUU3V1VGRFppeHpRa0ZCV1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQlR5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUXpWRExFOUJRVThzVFVGQlRTeERRVUZETEVWQlFVTXNTMEZCU3l4UFFVRkJMRVZCUVVVc1QwRkJUeXhUUVVGQkxFVkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRU5CUVVNc1EwRkJReXhEUVVGQk8wbEJRMDRzUTBGQlF5eERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeEpRVUZKTEUxQlFVRTdTVUZEU2l4VlFVRlZMRmxCUVVFN1NVRkRWaXhWUVVGVkxGbEJRVUU3UTBGRFlpeERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhOMFlYUjFjeUJtY205dElDY3VMaTl6ZEc5eVpTOXpkR0YwZFhNblhHNXBiWEJ2Y25RZ1kyOXVabWxuSUdaeWIyMGdKeTR1TDNOMGIzSmxMMk52Ym1acFp5ZGNibWx0Y0c5eWRDQmxjbkp2Y2toaGJtUnNaWElnWm5KdmJTQW5MaTlsY25KdmNraGhibVJzWlhJblhHNXBiWEJ2Y25RZ1pIVnlZWFJwYjI1U1pYQnZjblJsY2lCbWNtOXRJQ2N1TDJSMWNtRjBhVzl1VW1Wd2IzSjBaWEluWEc1cGJYQnZjblFnY21WeGRXVnpkRWhoYm1Sc1pYSWdabkp2YlNBbkxpOXlaWEYxWlhOMFNHRnVaR3hsY2lkY2JtbHRjRzl5ZENCc2IyRmthVzVuSUdaeWIyMGdKeTR1TDNWMGFXd3ZiRzloWkdsdVp5ZGNibWx0Y0c5eWRDQnlaWEYxWlhOMElHWnliMjBnSnk0dUwyRndhUzl5WlhGMVpYTjBKMXh1YVcxd2IzSjBJSHNnU1ZKbGNYVmxjM1JQY0hScGIyNHNJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVJSDBnWm5KdmJTQmNJaTR1TDJsdWRHVnlabUZqWlZ3aU8xeHVYRzR2S2lEbmxKL2xrYjNsa2FqbW5KL2xob1hsajZybGdacmt1SURtcktIbm1vUmphR1ZqYTFObGMzTnBiMjRnS2k5Y2JteGxkQ0JqYUdWamExTmxjM05wYjI1UWNtOXRhWE5sT2lCaGJua2dQU0J1ZFd4c08xeHVYRzVtZFc1amRHbHZiaUJqYUdWamExTmxjM05wYjI0b0tTQjdYRzRnSUNBZ2FXWWdLQ0ZqYUdWamExTmxjM05wYjI1UWNtOXRhWE5sS1NCN1hHNGdJQ0FnSUNBZ0lHTm9aV05yVTJWemMybHZibEJ5YjIxcGMyVWdQU0J1WlhjZ1VISnZiV2x6WlNnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6ZEdGeWRDQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkM2d1WTJobFkydFRaWE56YVc5dUtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkV05qWlhOektDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSG1uSW5tbFlqdnZJemt1SlRsbktqbW5Lem5sSi9sa2IzbGtham1uSi9saG9YbWw2RHBvYnZsaG8zbW80RHBxb3prdW9aY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1poYVd3b0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklPZVp1K1c5bGVhQWdlaS9oK2FjbjF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV3hUWlhOemFXOXVLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2IweHZaMmx1S0NrdWRHaGxiaWdvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5TENBb2NtVnpPaUJoYm5rcFBUNTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0hKbGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl0Y0d4bGRHVW9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdWdVpDQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUxuSmxjRzl5ZENnbmQzaGZZMmhsWTJ0VFpYTnphVzl1Snl3Z2MzUmhjblFzSUdWdVpDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNBZ0lDQWdmU2xjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOb1pXTnJVMlZ6YzJsdmJsQnliMjFwYzJVN1hHNTlYRzVjYmk4cUlPV0lwT2FXclhObGMzTnBiMjdtbUsvbGtLYmt1THJucWJybWlKYmx0N0xvdjRmbW5KOGdLaTljYm1aMWJtTjBhVzl1SUdselUyVnpjMmx2YmtWNGNHbHlaVTl5Ulcxd2RIa29LU0I3WEc0Z0lDQWdhV1lnS0NGemRHRjBkWE11YzJWemMybHZiaWtnZTF4dUlDQWdJQ0FnSUNBdkx5RGxwb0xtbnB6bnZKUGxyWmprdUszbXNxSG1uSWx6WlhOemFXOXVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsWEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlZScGJXVWdKaVlnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrZ1BpQnpkR0YwZFhNdWMyVnpjMmx2YmtWNGNHbHlaU2tnZTF4dUlDQWdJQ0FnSUNBdkx5RGxwb0xtbnB6bW5Jbm9ycjdudmE3bW5LemxuTEJ6WlhOemFXOXU1N3lUNWEyWTVwZTI2WmUwNzd5TTVMaVU1N3lUNWEyWTVwZTI2WmUwNWJleTVZaXdYRzRnSUNBZ0lDQWdJR1JsYkZObGMzTnBiMjRvS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVmNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObFhHNTlYRzVjYm1aMWJtTjBhVzl1SUdOb1pXTnJURzluYVc0b0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHpVMlZ6YzJsdmJrVjRjR2x5WlU5eVJXMXdkSGtvS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVyS2g1cHlKNTVtNzZabUc1b0NCNzd5TTVMaU42WnlBNkthQjVZYU5ZMmhsWTJ0VFpYTnphVzl1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjVtYVdjdVpHOU9iM1JEYUdWamExTmxjM05wYjI0Z1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHUnZURzluYVc0b0tTNTBhR1Z1S0NncElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTd2dLSEpsY3pvZ1lXNTVLVDArZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9jbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURudkpQbHJaamt1SzNtbklselpYTnphVzl1NUxpVTVweXE2TCtINXB5ZlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTZ3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU2xjYm4xY2JseHVMeW9nNTVtNzZabUc1cldCNTZpTDU1cUVjSEp2YldselpTQXFMMXh1YkdWMElHeHZaMmx1VUhKdmJXbHpaVG9nWVc1NUlEMGdiblZzYkR0Y2JseHVablZ1WTNScGIyNGdaRzlNYjJkcGJpZ3BJSHRjYmlBZ0lDQnBaaUFvSVd4dloybHVVSEp2YldselpTa2dlMXh1SUNBZ0lDQWdJQ0JzYjJkcGJsQnliMjFwYzJVZ1BTQnVaWGNnVUhKdmJXbHpaU2dvY21WemIyeDJaU3dnY21WcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYjJkcGJpZ3BMblJvWlc0b0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4dloybHVVSEp2YldselpTQTlJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTG1OaGRHTm9LQ2h5WlhNcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYjJkcGJsQnliMjFwYzJVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4dllXUnBibWN1YUdsa1pTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb2NtVnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0I5S1Z4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JHOW5hVzVRY205dGFYTmxPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnNiMmRwYmlncElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpkR0Z5ZENBOUlHNWxkeUJFWVhSbEtDa3VaMlYwVkdsdFpTZ3BPMXh1SUNBZ0lDQWdJQ0IzZUM1c2IyZHBiaWg3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkV05qWlhOektISmxjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlaWE11WTI5a1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyUmxNbE5sYzNOcGIyNG9jbVZ6TG1OdlpHVXBMblJvWlc0b0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTa3VZMkYwWTJnb0tISmxjeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGFtVmpkQ2h5WlhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvZTNScGRHeGxPaUJjSXVlWnUrVzlsZVdrc2VpMHBWd2lMQ0JjSW1OdmJuUmxiblJjSWpvZ1hDTG9yN2ZucUkzbGtJN3BoNDNvcjVWYlkyOWtaU0RvanJmbGo1YmxwTEhvdEtWZFhDSjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXRjR3hsZEdVb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1pXNWtJRDBnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pIVnlZWFJwYjI1U1pYQnZjblJsY2k1eVpYQnZjblFvSjNkNFgyeHZaMmx1Snl3Z2MzUmhjblFzSUdWdVpDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWm1GcGJDaHlaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSHQwYVhSc1pUb2dYQ0xubWJ2bHZaWGxwTEhvdEtWY0lpd2dYQ0pqYjI1MFpXNTBYQ0k2SUhKbGN5NWxjbkpOYzJkOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNCOUtWeHVmVnh1WEc1bWRXNWpkR2x2YmlCelpYUlRaWE56YVc5dUtITmxjM05wYjI0NklITjBjbWx1WnlrZ2UxeHVJQ0FnSUhOMFlYUjFjeTV6WlhOemFXOXVJRDBnYzJWemMybHZianRjYmlBZ0lDQXZMeURtamFMbG01N21uYVhubW9SelpYTnphVzl1Nzd5TTVMaU42WnlBNkthQjVZYU5ZMmhsWTJ0VFpYTnphVzl1WEc0Z0lDQWdZMjl1Wm1sbkxtUnZUbTkwUTJobFkydFRaWE56YVc5dUlEMGdkSEoxWlR0Y2JpQWdJQ0F2THlEbHBvTG1ucHptbklub3JyN252YTdtbkt6bG5MQnpaWE56YVc5dTZMK0g1cHlmNXBlMjZaZTBYRzRnSUNBZ2FXWWdLR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsVkdsdFpTQW1KaUJqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlV0bGVTa2dlMXh1SUNBZ0lDQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJrVjRjR2x5WlNBOUlHNWxkeUJFWVhSbEtDa3VaMlYwVkdsdFpTZ3BJQ3NnWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WVWFXMWxPMXh1SUNBZ0lDQWdJQ0IzZUM1elpYUlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUd0bGVUb2dZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZMWlhrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaE9pQlRkSEpwYm1jb2MzUmhkSFZ6TG5ObGMzTnBiMjVGZUhCcGNtVXBYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmVnh1SUNBZ0lIZDRMbk5sZEZOMGIzSmhaMlVvZTF4dUlDQWdJQ0FnSUNCclpYazZJR052Ym1acFp5NXpaWE56YVc5dVRtRnRaU0JoY3lCemRISnBibWNzWEc0Z0lDQWdJQ0FnSUdSaGRHRTZJSE4wWVhSMWN5NXpaWE56YVc5dVhHNGdJQ0FnZlNrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdOdlpHVXlVMlZ6YzJsdmJpaGpiMlJsT2lCemRISnBibWNwSUh0Y2JpQWdJQ0JzWlhRZ1pHRjBZVG9nWVc1NU8xeHVJQ0FnSUM4dklHTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFllYVVyK2FNZ2VXSHZlYVZzRnh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFlTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJR1JoZEdFZ1BTQmpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTVrWVhSaEtHTnZaR1VwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR1JoZEdFZ1BTQmpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTVrWVhSaElIeDhJSHQ5TzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dVkyOWtaVTVoYldVcElIdGNiaUFnSUNBZ0lDQWdaR0YwWVZ0amIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNWpiMlJsVG1GdFpWMGdQU0JqYjJSbE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdSaGRHRXVZMjlrWlNBOUlHTnZaR1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJSE4wWVhKMElEMGdibVYzSUVSaGRHVW9LUzVuWlhSVWFXMWxLQ2s3WEc0Z0lDQWdJQ0FnSUhkNExuSmxjWFZsYzNRb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZFhKc09pQnlaWEYxWlhOMFNHRnVaR3hsY2k1bWIzSnRZWFFvWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dWRYSnNLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHUmhkR0VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnRaWFJvYjJRNklHTnZibVpwWnk1amIyUmxWRzlUWlhOemFXOXVMbTFsZEdodlpDQjhmQ0FuUjBWVUp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUdobFlXUmxjam9nZEhsd1pXOW1JR052Ym1acFp5NXpaWFJJWldGa1pYSWdQVDA5SUNkbWRXNWpkR2x2YmljZ1B5QmpiMjVtYVdjdWMyVjBTR1ZoWkdWeUtDazZJR052Ym1acFp5NXpaWFJJWldGa1pYSXNYRzRnSUNBZ0lDQWdJQ0FnSUNCemRXTmpaWE56S0hKbGN6b2dWMlZqYUdGMFRXbHVhWEJ5YjJkeVlXMHVVbVZ4ZFdWemRGTjFZMk5sYzNORFlXeHNZbUZqYTFKbGMzVnNkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlaWE11YzNSaGRIVnpRMjlrWlNBOVBUMGdNakF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SU9pQWwrYVh0dVM0aXVhS3BWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVjbVZ3YjNKMEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnWlc1a0lEMGdibVYzSUVSaGRHVW9LUzVuWlhSVWFXMWxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrZFhKaGRHbHZibEpsY0c5eWRHVnlMbkpsY0c5eWRDaGpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTV5WlhCdmNuUXNJSE4wWVhKMExDQmxibVFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdjenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE1nUFNCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNXpkV05qWlhOektISmxjeTVrWVhSaEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ6SUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxuTmxjM05wYjI0Z1BTQnpPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnNW8yaTVadWU1cDJsNTVxRWMyVnpjMmx2YnUrOGpPUzRqZW1jZ09pbWdlV0dqV05vWldOclUyVnpjMmx2Ymx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dVptbG5MbVJ2VG05MFEyaGxZMnRUWlhOemFXOXVJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJT1dtZ3VhZW5PYWNpZWl1dnVlOXJ1YWNyT1djc0hObGMzTnBiMjdvdjRmbW5KL21sN2JwbDdSY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVlJwYldVZ0ppWWdZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZMWlhrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJrVjRjR2x5WlNBOUlHNWxkeUJFWVhSbEtDa3VaMlYwVkdsdFpTZ3BJQ3NnWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WVWFXMWxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhkNExuTmxkRk4wYjNKaFoyVW9lMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnJaWGs2SUdOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFMyVjVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtZWFJoT2lCVGRISnBibWNvYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21VcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGQ0TG5ObGRGTjBiM0poWjJVb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVRvZ1kyOXVabWxuTG5ObGMzTnBiMjVPWVcxbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JoZEdFNklITjBZWFIxY3k1elpYTnphVzl1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLSE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGFtVmpkQ2hsY25KdmNraGhibVJzWlhJdVoyVjBSWEp5YjNKTmMyY29jbVZ6S1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSHQwYVhSc1pUb2dYQ0xubWJ2bHZaWGxwTEhvdEtWY0lpd2dYQ0pqYjI1MFpXNTBYQ0k2SUZ3aTZLKzM1NmlONVpDTzZZZU42SytWWENKOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdabUZwYkRvZ0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9lM1JwZEd4bE9pQmNJdWVadStXOWxlV2tzZWkwcFZ3aUxDQmNJbU52Ym5SbGJuUmNJam9nWENMb3I3Zm5xSTNsa0k3cGg0M29yNVZjSW4wcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgwcFhHNTlYRzVjYmk4cUlPYTRoZWVwdW5ObGMzTnBiMjRnS2k5Y2JtWjFibU4wYVc5dUlHUmxiRk5sYzNOcGIyNG9LU0I3WEc0Z0lDQWdjM1JoZEhWekxuTmxjM05wYjI0Z1BTQW5KenRjYmlBZ0lDQjNlQzV5WlcxdmRtVlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdhMlY1T2lCamIyNW1hV2N1YzJWemMybHZiazVoYldVZ1lYTWdjM1J5YVc1blhHNGdJQ0FnZlNrN1hHNGdJQ0FnYVdZZ0tHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxWR2x0WlNBbUppQmpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVXRsZVNrZ2UxeHVJQ0FnSUNBZ0lDQnpkR0YwZFhNdWMyVnpjMmx2YmtWNGNHbHlaU0E5SUVsdVptbHVhWFI1TzF4dUlDQWdJQ0FnSUNCM2VDNXlaVzF2ZG1WVGRHOXlZV2RsS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3RsZVRvZ1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVkxaWGxjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJRzFoYVc0b2NtVnNZWFJsWkZKbGNYVmxjM1JQWW1vL09pQkpVbVZ4ZFdWemRFOXdkR2x2YmlCOElFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYkdWMElISmxkSEo1SUQwZ0lYSmxiR0YwWldSU1pYRjFaWE4wVDJKcVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlEbHBvTG1ucHptc3FIbW5JbmxoYlBvZ1pUbm1vVG9yN2Ztc1lMdnZJenBoNDNvcjVYbGpiUG9zSVBubEtqb2g2cm91cXRjYmlBZ0lDQWdJQ0FnSUNBZ0lEOGdLQ2tnUFQ0Z2JXRnBiaWdwTG5Sb1pXNG9jbVZ6YjJ4MlpTa3VZMkYwWTJnb2NtVnFaV04wS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNWFhQzVwNmM1cHlKNVlXejZJR1U1NXFFNksrMzVyR0M3N3lNNlllTjZLK1Y1WTJ6NkxDRDU1U281b21BNVlXejZJR1U1NXFFNksrMzVyR0NYRzRnSUNBZ0lDQWdJQ0FnSUNBNklDZ3BJRDArSUhKbGNYVmxjM1FvY21Wc1lYUmxaRkpsY1hWbGMzUlBZbW9wTG5Sb1pXNG9jbVZzWVhSbFpGSmxjWFZsYzNSUFltb3VYM0psYzI5c2RtVXBMbU5oZEdOb0tISmxiR0YwWldSU1pYRjFaWE4wVDJKcUxsOXlaV3BsWTNRcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyaGxZMnRNYjJkcGJpZ3BMblJvWlc0b0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHTnZibVpwWnk1a2IwNXZkRU5vWldOclUyVnpjMmx2YmlBL0lGQnliMjFwYzJVdWNtVnpiMngyWlNncElEb2dZMmhsWTJ0VFpYTnphVzl1S0NsY2JpQWdJQ0FnSUNBZ2ZTd2dLSHQwYVhSc1pTd2dZMjl1ZEdWdWRIMHBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Z5Y205eVNHRnVaR3hsY2k1a2IwVnljbTl5S0hScGRHeGxMQ0JqYjI1MFpXNTBMQ0J5WlhSeWVTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSHQwYVhSc1pTd2dZMjl1ZEdWdWRIMHBPMXh1SUNBZ0lDQWdJQ0I5S1M1MGFHVnVLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLQ2s3WEc0Z0lDQWdJQ0FnSUgwc0lDaDdkR2wwYkdVc0lHTnZiblJsYm5SOUtUMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnljbTl5U0dGdVpHeGxjaTVrYjBWeWNtOXlLSFJwZEd4bExDQmpiMjUwWlc1MExDQnlaWFJ5ZVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtIdDBhWFJzWlN3Z1kyOXVkR1Z1ZEgwcE8xeHVJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lIMHBYRzU5WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUh0Y2JpQWdJQ0J0WVdsdUxGeHVJQ0FnSUhObGRGTmxjM05wYjI0c1hHNGdJQ0FnWkdWc1UyVnpjMmx2Ymx4dWZWeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZGVmYXVsdENvbmZpZyA9IHtcbiAgICBzZXNzaW9uTmFtZTogXCJzZXNzaW9uXCIsXG4gICAgbG9naW5UcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGNvZGVUb1Nlc3Npb246IHtcbiAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7IH1cbiAgICB9LFxuICAgIHN1Y2Nlc3NUcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgc2V0SGVhZGVyOiB7fSxcbiAgICB1cmxQZXJmaXg6IFwiXCIsXG4gICAgZG9Ob3RDaGVja1Nlc3Npb246IGZhbHNlLFxuICAgIGVycm9yVGl0bGU6IFwi5pON5L2c5aSx6LSlXCIsXG4gICAgZXJyb3JDb250ZW50OiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICBlcnJvclJldHJ5QnRuOiBmYWxzZSxcbiAgICByZUxvZ2luTGltaXQ6IDMsXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcbiAgICByZXBvcnRDR0k6IGZhbHNlLFxuICAgIG1vY2tKc29uOiBmYWxzZSxcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcbiAgICBzZXNzaW9uRXhwaXJlS2V5OiBcInNlc3Npb25FeHBpcmVLZXlcIixcbiAgICBlcnJvckhhbmRsZXI6IG51bGwsXG4gICAgYmVmb3JlU2VuZDogbnVsbFxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IGRlZmF1bHRDb25maWc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMjl1Wm1sbkxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNOMGIzSmxMMk52Ym1acFp5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVWQkxFbEJRVTBzWVVGQllTeEhRVUZuUWp0SlFVTXZRaXhYUVVGWExFVkJRVVVzVTBGQlV6dEpRVU4wUWl4WlFVRlpPMUZCUTFJc1QwRkJUeXhMUVVGTExFTkJRVUU3U1VGRGFFSXNRMEZCUXp0SlFVTkVMR0ZCUVdFc1JVRkJSVHRSUVVOWUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNUMEZCVHl4RlFVRkZMR05CUVUwc1EwRkJRenRMUVVOdVFqdEpRVU5FTEdOQlFXTTdVVUZEVml4UFFVRlBMRWxCUVVrc1EwRkJRVHRKUVVObUxFTkJRVU03U1VGRFJDeFRRVUZUTEVWQlFVVXNSVUZCUlR0SlFVTmlMRk5CUVZNc1JVRkJSU3hGUVVGRk8wbEJRMklzYVVKQlFXbENMRVZCUVVVc1MwRkJTenRKUVVONFFpeFZRVUZWTEVWQlFVVXNUVUZCVFR0SlFVTnNRaXhaUVVGWkxFVkJRVm9zVlVGQllTeEhRVUZSTzFGQlEycENMRTlCUVU4c1IwRkJSeXhEUVVGQk8wbEJRMlFzUTBGQlF6dEpRVU5FTEdGQlFXRXNSVUZCUlN4TFFVRkxPMGxCUTNCQ0xGbEJRVmtzUlVGQlJTeERRVUZETzBsQlEyWXNZVUZCWVN4RlFVRkZMRWxCUVVrN1NVRkRia0lzVTBGQlV5eEZRVUZGTEV0QlFVczdTVUZEYUVJc1VVRkJVU3hGUVVGRkxFdEJRVXM3U1VGRFppeFZRVUZWTEVWQlFVVXNTMEZCU3p0SlFVVnFRaXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMEk3U1VGRmNFTXNXVUZCV1N4RlFVRkZMRWxCUVVrN1NVRkZiRUlzVlVGQlZTeEZRVUZGTEVsQlFVazdRMEZEYmtJc1EwRkJRenRCUVVWR0xHdENRVUZsTEdGQlFXRXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFbEpibWwwVDNCMGFXOXVJSDBnWm5KdmJTQW5MaTR2YVc1MFpYSm1ZV05sSjF4dVhHNWpiMjV6ZENCa1pXWmhkV3gwUTI5dVptbG5PaUJKU1c1cGRFOXdkR2x2YmlBOUlIdGNiaUFnSUNCelpYTnphVzl1VG1GdFpUb2dYQ0p6WlhOemFXOXVYQ0lzWEc0Z0lDQWdiRzluYVc1VWNtbG5aMlZ5S0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlZjYmlBZ0lDQjlMRnh1SUNBZ0lHTnZaR1ZVYjFObGMzTnBiMjQ2SUh0Y2JpQWdJQ0FnSUNBZ2RYSnNPaUJjSWx3aUxGeHVJQ0FnSUNBZ0lDQnpkV05qWlhOek9pQW9LVDArSUh0OVhHNGdJQ0FnZlN4Y2JpQWdJQ0J6ZFdOalpYTnpWSEpwWjJkbGNpZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJ5ZFdWY2JpQWdJQ0I5TEZ4dUlDQWdJSE5sZEVobFlXUmxjam9nZTMwc1hHNGdJQ0FnZFhKc1VHVnlabWw0T2lCY0lsd2lMRnh1SUNBZ0lHUnZUbTkwUTJobFkydFRaWE56YVc5dU9pQm1ZV3h6WlN4Y2JpQWdJQ0JsY25KdmNsUnBkR3hsT2lCY0l1YVRqZVM5bk9Xa3NlaTBwVndpTEZ4dUlDQWdJR1Z5Y205eVEyOXVkR1Z1ZENoeVpYTTZJR0Z1ZVNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpYRzRnSUNBZ2ZTeGNiaUFnSUNCbGNuSnZjbEpsZEhKNVFuUnVPaUJtWVd4elpTeGNiaUFnSUNCeVpVeHZaMmx1VEdsdGFYUTZJRE1zWEc0Z0lDQWdaWEp5YjNKRFlXeHNZbUZqYXpvZ2JuVnNiQ3hjYmlBZ0lDQnlaWEJ2Y25SRFIwazZJR1poYkhObExGeHVJQ0FnSUcxdlkydEtjMjl1T2lCbVlXeHpaU3hjYmlBZ0lDQm5iRzlpWVd4RVlYUmhPaUJtWVd4elpTeGNiaUFnSUNBdkx5QnpaWE56YVc5dTVaeW81cHlzNVp5dzU3eVQ1YTJZNTVxRWEyVjVYRzRnSUNBZ2MyVnpjMmx2YmtWNGNHbHlaVXRsZVRvZ1hDSnpaWE56YVc5dVJYaHdhWEpsUzJWNVhDSXNYRzRnSUNBZ0x5OGc2SWVxNWE2YTVMbUo2WlNaNksrdjVhU0U1NUNHNVllOTVwV3dYRzRnSUNBZ1pYSnliM0pJWVc1a2JHVnlPaUJ1ZFd4c0xGeHVJQ0FnSUM4dklPaXZ0K2F4Z3VXUGtlbUFnZVdKamUrOGpPYVBrT1MrbTJodmIydm51NW5sdklEbGo1SG9nSVhvaDZybHJwcmt1WW5rdjY3bWxMbmxqNUhwZ0lIbGhvWGxycmxjYmlBZ0lDQmlaV1p2Y21WVFpXNWtPaUJ1ZFd4c1hHNTlPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JrWldaaGRXeDBRMjl1Wm1sbk8xeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgc2Vzc2lvbjogJycsXG4gICAgc2Vzc2lvbkV4cGlyZTogSW5maW5pdHlcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljM1JoZEhWekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNOMGIzSmxMM04wWVhSMWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxHdENRVUZsTzBsQlExZ3NUMEZCVHl4RlFVRkZMRVZCUVZrN1NVRkZja0lzWVVGQllTeEZRVUZGTEZGQlFXdENPME5CUXpkQ0xFTkJRVUVpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnWkdWbVlYVnNkQ0I3WEc0Z0lDQWdjMlZ6YzJsdmJqb2dKeWNnWVhNZ2MzUnlhVzVuTEZ4dUlDQWdJQzh2SUhObGMzTnBiMjdvdjRmbW5KL25tb1RtbDdicGw3VG5ncmxjYmlBZ0lDQnpaWE56YVc5dVJYaHdhWEpsT2lCSmJtWnBibWwwZVNCaGN5QnVkVzFpWlhKY2JuMGdZWE1nWVc1NVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgTElORUZFRUQgPSAvXFx1MDAwQS9nO1xudmFyIENBUlJJQUdFUkVUVVJOID0gL1xcdTAwMEQvZztcbnZhciBMSU5FX1NFUEFSQVRPUiA9IC9cXHUyMDI4L2c7XG52YXIgUEFSQUdSQVBIX1NFUEFSQVRPUiA9IC9cXHUyMDI5L2c7XG5mdW5jdGlvbiByZXBsYWNlKHJlcykge1xuICAgIHJlcyA9IHJlcy5yZXBsYWNlKExJTkVGRUVELCBcIlwiKTtcbiAgICByZXMgPSByZXMucmVwbGFjZShDQVJSSUFHRVJFVFVSTiwgXCJcIik7XG4gICAgcmVzID0gcmVzLnJlcGxhY2UoTElORV9TRVBBUkFUT1IsIFwiXCIpO1xuICAgIHJlcyA9IHJlcy5yZXBsYWNlKFBBUkFHUkFQSF9TRVBBUkFUT1IsIFwiXCIpO1xuICAgIHJldHVybiByZXM7XG59XG5leHBvcnRzLmRlZmF1bHQgPSByZXBsYWNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYW5OdmJsTjFjR1Z5YzJWMExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNWMGFXd3Zhbk52YmxOMWNHVnljMlYwTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJWMEVzU1VGQlRTeFJRVUZSTEVkQlFVY3NVMEZCVXl4RFFVRkRPMEZCUXpOQ0xFbEJRVTBzWTBGQll5eEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTnFReXhKUVVGTkxHTkJRV01zUjBGQlJ5eFRRVUZUTEVOQlFVTTdRVUZEYWtNc1NVRkJUU3h0UWtGQmJVSXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkZkRU1zVTBGQmQwSXNUMEZCVHl4RFFVRkRMRWRCUVZjN1NVRkRla01zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyaERMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVOMFF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhqUVVGakxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZEVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETTBNc1QwRkJUeXhIUVVGSExFTkJRVUU3UVVGRFdpeERRVUZETzBGQlRrUXNNRUpCVFVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaUFnVlNzeU1ESTRJR0Z1WkNCVkt6SXdNamtnWVhKbElHRnNiRzkzWldRZ2FXNXphV1JsSUhOMGNtbHVaM01nYVc0Z1NsTlBUaUFvWVhNZ1lXeHNJR3hwZEdWeVlXeGNiaUFnSUNCVmJtbGpiMlJsSUdOb1lYSmhZM1JsY25NcElHSjFkQ0JLWVhaaFUyTnlhWEIwSUdSbFptbHVaWE1nZEdobGJTQmhjeUJ1Wlhkc2FXNWxYRzRnSUNBZ2MyVndaWEpoZEc5eWN5NGdRbVZqWVhWelpTQnVieUJzYVhSbGNtRnNJRzVsZDJ4cGJtVnpJR0Z5WlNCaGJHeHZkMlZrSUdsdUlHRWdjM1J5YVc1bkxDQjBhR2x6WEc0Z0lDQWdZMkYxYzJWeklHRWdVR0Z5YzJWRmNuSnZjaUJwYmlCMGFHVWdZbkp2ZDNObGNpNGdWMlVnZDI5eWF5QmhjbTkxYm1RZ2RHaHBjeUJwYzNOMVpTQmllVnh1SUNBZ0lISmxjR3hoWTJsdVp5QjBhR1Z0SUhkcGRHZ2dkR2hsSUdWelkyRndaV1FnZG1WeWMybHZiaTRnVkdocGN5QnphRzkxYkdRZ1ltVWdjMkZtWlNCaVpXTmhkWE5sWEc0Z0lDQWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQktVMDlPSUhOd1pXTXNJSFJvWlhObElHTm9ZWEpoWTNSbGNuTWdZWEpsSUNwdmJteDVLaUIyWVd4cFpDQnBibk5wWkdWY2JpQWdJQ0JoSUhOMGNtbHVaeUJoYm1RZ2MyaHZkV3hrSUhSb1pYSmxabTl5WlNCdWIzUWdZbVVnY0hKbGMyVnVkQ0JoYm5rZ2IzUm9aWElnY0d4aFkyVnpMbHh1WEc0Z0lDQWdiVzl5WlNCcGJtWnZjbTFoZEdsdmJqb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMM1JqTXprdmNISnZjRzl6WVd3dGFuTnZiaTF6ZFhCbGNuTmxkRnh1S2k5Y2JseHVZMjl1YzNRZ1RFbE9SVVpGUlVRZ1BTQXZYRngxTURBd1FTOW5PMXh1WTI5dWMzUWdRMEZTVWtsQlIwVlNSVlJWVWs0Z1BTQXZYRngxTURBd1JDOW5PMXh1WTI5dWMzUWdURWxPUlY5VFJWQkJVa0ZVVDFJZ1BTQXZYRngxTWpBeU9DOW5PMXh1WTI5dWMzUWdVRUZTUVVkU1FWQklYMU5GVUVGU1FWUlBVaUE5SUM5Y1hIVXlNREk1TDJjN1hHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElHWjFibU4wYVc5dUlISmxjR3hoWTJVb2NtVnpPaUJ6ZEhKcGJtY3BJSHRjYmlBZ2NtVnpJRDBnY21WekxuSmxjR3hoWTJVb1RFbE9SVVpGUlVRc0lGd2lYQ0lwTzF4dUlDQnlaWE1nUFNCeVpYTXVjbVZ3YkdGalpTaERRVkpTU1VGSFJWSkZWRlZTVGl3Z1hDSmNJaWs3WEc0Z0lISmxjeUE5SUhKbGN5NXlaWEJzWVdObEtFeEpUa1ZmVTBWUVFWSkJWRTlTTENCY0lsd2lLVHRjYmlBZ2NtVnpJRDBnY21WekxuSmxjR3hoWTJVb1VFRlNRVWRTUVZCSVgxTkZVRUZTUVZSUFVpd2dYQ0pjSWlrN1hHNGdJSEpsZEhWeWJpQnlaWE5jYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBzaG93KHR4dCkge1xuICAgIHd4LnNob3dUb2FzdCh7XG4gICAgICAgIHRpdGxlOiB0eXBlb2YgdHh0ID09PSAnYm9vbGVhbicgPyAn5Yqg6L295LitJyA6IHR4dCxcbiAgICAgICAgaWNvbjogJ2xvYWRpbmcnLFxuICAgICAgICBtYXNrOiB0cnVlLFxuICAgICAgICBkdXJhdGlvbjogNjAwMDBcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgd3guaGlkZVRvYXN0KHt9KTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzaG93OiBzaG93LFxuICAgIGhpZGU6IGhpZGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liRzloWkdsdVp5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5MWRHbHNMMnh2WVdScGJtY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRnhRanRKUVVNdlFpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTFRc1MwRkJTeXhGUVVGRkxFOUJRVThzUjBGQlJ5eExRVUZMTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITzFGQlF6ZERMRWxCUVVrc1JVRkJSU3hUUVVGVE8xRkJRMllzU1VGQlNTeEZRVUZGTEVsQlFVazdVVUZEVml4UlFVRlJMRVZCUVVVc1MwRkJTenRMUVVOc1FpeERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc1UwRkJVeXhKUVVGSk8wbEJRMVFzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOeVFpeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hKUVVGSkxFMUJRVUU3U1VGRFNpeEpRVUZKTEUxQlFVRTdRMEZEVUN4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnYzJodmR5aDBlSFE2SUdKdmIyeGxZVzRnZkNCemRISnBibWNwSUh0Y2JpQWdJQ0IzZUM1emFHOTNWRzloYzNRb2UxeHVJQ0FnSUNBZ0lDQjBhWFJzWlRvZ2RIbHdaVzltSUhSNGRDQTlQVDBnSjJKdmIyeGxZVzRuSUQ4Z0orV0tvT2k5dmVTNHJTY2dPaUIwZUhRc1hHNGdJQ0FnSUNBZ0lHbGpiMjQ2SUNkc2IyRmthVzVuSnl4Y2JpQWdJQ0FnSUNBZ2JXRnphem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdaSFZ5WVhScGIyNDZJRFl3TURBd1hHNGdJQ0FnZlNsY2JuMWNibHh1Wm5WdVkzUnBiMjRnYUdsa1pTZ3BJSHRjYmlBZ0lDQjNlQzVvYVdSbFZHOWhjM1FvZTMwcE8xeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEc0Z0lDQWdjMmh2ZHl4Y2JpQWdJQ0JvYVdSbFhHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIHNldFBhcmFtcyh1cmwsIHBhcmFtcykge1xuICAgIGlmICh1cmwgPT09IHZvaWQgMCkgeyB1cmwgPSBcIlwiOyB9XG4gICAgdmFyIHF1ZXJ5U3RyaW5nSW5kZXggPSB1cmwuaW5kZXhPZihcIj9cIik7XG4gICAgdmFyIGt2cCA9IHt9O1xuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcbiAgICAgICAgdmFyIG9sZFF1ZXJ5U3RyaW5nXzEgPSB1cmwuc3Vic3RyKHF1ZXJ5U3RyaW5nSW5kZXggKyAxKS5zcGxpdChcIiZcIik7XG4gICAgICAgIG9sZFF1ZXJ5U3RyaW5nXzEuZm9yRWFjaChmdW5jdGlvbiAoeCwgaSkge1xuICAgICAgICAgICAgdmFyIGt2ID0gb2xkUXVlcnlTdHJpbmdfMVtpXS5zcGxpdChcIj1cIik7XG4gICAgICAgICAgICBrdnBba3ZbMF1dID0ga3ZbMV07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBrdnAgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwga3ZwKSwgcGFyYW1zKTtcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSBPYmplY3Qua2V5cyhrdnApXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ICsgXCI9XCIgKyBlbmNvZGVVUkkoa3ZwW2tleV0pO1xuICAgIH0pXG4gICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICBpZiAocXVlcnlTdHJpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDAsIHF1ZXJ5U3RyaW5nSW5kZXggKyAxKSArIHF1ZXJ5U3RyaW5nO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVybCArIFwiP1wiICsgcXVlcnlTdHJpbmc7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHNldFBhcmFtczogc2V0UGFyYW1zXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhKc0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNWMGFXd3ZkWEpzTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdRVUZCUVN4VFFVRlRMRk5CUVZNc1EwRkJReXhIUVVGblFpeEZRVUZGTEUxQlFXTTdTVUZCYUVNc2IwSkJRVUVzUlVGQlFTeFJRVUZuUWp0SlFVTXZRaXhKUVVGTkxHZENRVUZuUWl4SFFVRlhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYkVRc1NVRkJTU3hIUVVGSExFZEJRVkVzUlVGQlJTeERRVUZETzBsQlEyeENMRWxCUVVrc1owSkJRV2RDTEVsQlFVa3NRMEZCUXl4RlFVRkZPMUZCUTNaQ0xFbEJRVTBzWjBKQlFXTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVnVSU3huUWtGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJRM2hDTEVsQlFVMHNSVUZCUlN4SFFVRmhMR2RDUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnhFTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka0lzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEVGp0SlFVVkVMRWRCUVVjc2VVSkJRVThzUjBGQlJ5eEhRVUZMTEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlRGQ0xFbEJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8xTkJReTlDTEVkQlFVY3NRMEZCUXl4VlFVRkJMRWRCUVVjN1VVRkRTaXhQUVVGVkxFZEJRVWNzVTBGQlNTeFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGSExFTkJRVU03U1VGRE0wTXNRMEZCUXl4RFFVRkRPMU5CUTBRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXWXNTVUZCU1N4blFrRkJaMElzU1VGQlNTeERRVUZETEVWQlFVVTdVVUZEZGtJc1QwRkJUeXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4blFrRkJaMElzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1MwRkRMMFE3VTBGQlRUdFJRVU5JTEU5QlFVOHNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhYUVVGWExFTkJRVU03UzBGRGJFTTdRVUZEVEN4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeFRRVUZUTEZkQlFVRTdRMEZEV2l4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnYzJWMFVHRnlZVzF6S0hWeWJEb2djM1J5YVc1bklEMGdYQ0pjSWl3Z2NHRnlZVzF6T2lCdlltcGxZM1FwSUh0Y2JpQWdJQ0JqYjI1emRDQnhkV1Z5ZVZOMGNtbHVaMGx1WkdWNE9pQnVkVzFpWlhJZ1BTQjFjbXd1YVc1a1pYaFBaaWhjSWo5Y0lpazdYRzRnSUNBZ2JHVjBJR3QyY0RvZ1lXNTVJRDBnZTMwN1hHNGdJQ0FnYVdZZ0tIRjFaWEo1VTNSeWFXNW5TVzVrWlhnZ1BqMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J2YkdSUmRXVnllVk4wY21sdVp5QTlJSFZ5YkM1emRXSnpkSElvY1hWbGNubFRkSEpwYm1kSmJtUmxlQ0FySURFcExuTndiR2wwS0Z3aUpsd2lLVHRjYmlBZ0lDQWdJQ0FnTHk4Z1FIUnpMV2xuYm05eVpWeHVJQ0FnSUNBZ0lDQnZiR1JSZFdWeWVWTjBjbWx1Wnk1bWIzSkZZV05vS0NoNExDQnBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnJkam9nYzNSeWFXNW5XMTBnUFNCdmJHUlJkV1Z5ZVZOMGNtbHVaMXRwWFM1emNHeHBkQ2hjSWoxY0lpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcmRuQmJhM1piTUYxZElEMGdhM1piTVYwN1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHdDJjQ0E5SUhzdUxpNXJkbkFzSUM0dUxuQmhjbUZ0YzMwN1hHNWNiaUFnSUNCamIyNXpkQ0J4ZFdWeWVWTjBjbWx1WnlBOUlFOWlhbVZqZEM1clpYbHpLR3QyY0NsY2JpQWdJQ0FnSUNBZ0xtMWhjQ2hyWlhrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdBa2UydGxlWDA5Skh0bGJtTnZaR1ZWVWtrb2EzWndXMnRsZVYwcGZXQTdYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdJQ0FnSUM1cWIybHVLRndpSmx3aUtUdGNibHh1SUNBZ0lHbG1JQ2h4ZFdWeWVWTjBjbWx1WjBsdVpHVjRJRDQ5SURBcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIVnliQzV6ZFdKemRISnBibWNvTUN3Z2NYVmxjbmxUZEhKcGJtZEpibVJsZUNBcklERXBJQ3NnY1hWbGNubFRkSEpwYm1jN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ5YkNBcklGd2lQMXdpSUNzZ2NYVmxjbmxUZEhKcGJtYzdYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEc0Z0lDQWdjMlYwVUdGeVlXMXpYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudmVyc2lvbiA9IHZvaWQgMDtcbnZhciB2ZXJzaW9uID0gX19WRVJTSU9OX187XG5leHBvcnRzLnZlcnNpb24gPSB2ZXJzaW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WeWMybHZiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMM055WXk5MlpYSnphVzl1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096dEJRVVZCTEVsQlFVMHNUMEZCVHl4SFFVRkhMRmRCUVZjc1EwRkJRenRCUVVWdVFpd3dRa0ZCVHlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltUmxZMnhoY21VZ1kyOXVjM1FnWDE5V1JWSlRTVTlPWDE4NklITjBjbWx1Wnp0Y2JseHVZMjl1YzNRZ2RtVnljMmx2YmlBOUlGOWZWa1ZTVTBsUFRsOWZPMXh1WEc1bGVIQnZjblFnZXlCMlpYSnphVzl1SUgwN1hHNGlYWDA9Il0sInNvdXJjZVJvb3QiOiIifQ==
|