diff --git a/build/interface.d.ts b/build/interface.d.ts index 4c58127..1bd2ee3 100644 --- a/build/interface.d.ts +++ b/build/interface.d.ts @@ -24,6 +24,8 @@ export interface IInitOption { errorHandler?: Function | null; beforeSend?: Function | null; systemErrorHandler?: Function | null; + backupDomain?: string; + backupDomainEnableCallback?: Function; } export interface ICodeToSessionOptions { url: string; diff --git a/build/util/url.d.ts b/build/util/url.d.ts index 36404dd..35375b0 100644 --- a/build/util/url.d.ts +++ b/build/util/url.d.ts @@ -1,5 +1,7 @@ declare function setParams(url: string | undefined, params: object): string; +declare function replaceDomain(url?: string, domain?: string): string; declare const _default: { setParams: typeof setParams; + replaceDomain: typeof replaceDomain; }; export default _default; diff --git a/build/weRequest.js b/build/weRequest.js index caac9f4..5ce32a0 100644 --- a/build/weRequest.js +++ b/build/weRequest.js @@ -1,5 +1,5 @@ /*! - * weRequest 1.6.8 + * weRequest 1.7.0 * https://github.com/IvinWu/weRequest */ module.exports = @@ -635,6 +635,9 @@ function initializeRequestObj(obj) { } obj.url = url_1.default.setParams(obj.url, gd); } + if (status_1.default.isEnableBackupDomain && config_1.default.backupDomain) { + obj.url = url_1.default.replaceDomain(obj.url, config_1.default.backupDomain); + } durationReporter_1.default.start(obj); return obj; } @@ -664,6 +667,9 @@ function initializeUploadFileObj(obj) { } obj.url = url_1.default.setParams(obj.url, gd); } + if (status_1.default.isEnableBackupDomain && config_1.default.backupDomain) { + obj.url = url_1.default.replaceDomain(obj.url, config_1.default.backupDomain); + } durationReporter_1.default.start(obj); return obj; } @@ -687,6 +693,11 @@ function doRequest(obj) { return resolve(res); }, fail: function (res) { + var _a; + if (((_a = res === null || res === void 0 ? void 0 : res.errMsg) === null || _a === void 0 ? void 0 : _a.indexOf('CONNECTION_REFUSED')) >= 0 && config_1.default.backupDomain && obj.url.indexOf(config_1.default.backupDomain) < 0) { + enableBackupDomain(); + return doRequest(obj).then(function (res) { return resolve(res); }); + } return reject({ type: 'system-error', res: res }); }, complete: function () { @@ -709,6 +720,11 @@ function doUploadFile(obj) { return resolve(res); }, fail: function (res) { + var _a; + if (((_a = res === null || res === void 0 ? void 0 : res.errMsg) === null || _a === void 0 ? void 0 : _a.indexOf('CONNECTION_REFUSED')) >= 0 && config_1.default.backupDomain && obj.url.indexOf(config_1.default.backupDomain) < 0) { + enableBackupDomain(); + return doUploadFile(obj).then(function (res) { return resolve(res); }); + } return reject({ type: 'system-error', res: res }); }, complete: function () { @@ -768,12 +784,20 @@ function uploadFile(obj) { }); }); } +function enableBackupDomain() { + if (!status_1.default.isEnableBackupDomain) { + status_1.default.isEnableBackupDomain = true; + if (typeof config_1.default.backupDomainEnableCallback === 'function') { + config_1.default.backupDomainEnableCallback(); + } + } +} exports.default = { format: format, request: request, uploadFile: uploadFile }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBcUM7QUFDckMsMENBQW9DO0FBQ3BDLDBDQUFvQztBQUNwQyw2Q0FBdUM7QUFDdkMsK0NBQXlDO0FBQ3pDLG1EQUE2QztBQUM3QyxxREFBK0M7QUFDL0MsdURBQWlEO0FBQ2pELG1DQUE2QjtBQUU3QiwrQ0FBOEM7QUFHOUMsU0FBUyxNQUFNLENBQUMsU0FBaUI7SUFDN0IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzlCLE9BQU8sU0FBUyxDQUFBO0tBQ25CO1NBQU07UUFDSCxJQUFJLFNBQVMsR0FBRyxnQkFBTSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLE9BQU8sZ0JBQU0sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1lBQ3hDLFNBQVMsR0FBRyxnQkFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO1NBQ2pDO1FBQ0QsT0FBTyxTQUFTLEdBQUcsU0FBUyxDQUFDO0tBQ2hDO0FBQ0wsQ0FBQztBQUdELFNBQVMsS0FBSyxDQUErQyxHQUFNLEVBQUUsT0FBOEIsRUFBRSxNQUErQjtJQUVoSSxJQUFJLE9BQU8sR0FBRyxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7UUFDekMsR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7S0FDeEI7U0FBTTtRQUNILEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQUN0QjtJQUVELElBQUksR0FBRyxDQUFDLFlBQVksS0FBSyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtRQUNoRSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7S0FDcEI7SUFFRCxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7UUFDakIsaUJBQU8sQ0FBQyxJQUFJLENB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LFFBQVEsRUFBRTtZQUNqQixJQUFJLFlBQVksR0FBRyxxQkFBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxJQUFJLFlBQVksRUFBRTtnQkFDZCxJQUFJLFFBQVEsR0FBRyx5QkFBZSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDeEUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDNUI7U0FDSjtRQUVELHdCQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxHQUFzRDtZQUMzRCxJQUFJLFFBQVEsR0FBRyx5QkFBZSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMvRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Z0JBQ2xCLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzVCO1FBQ0wsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQUMsQ0FBZTtZQUNyQiwyQkFBWSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDaEMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxrQkFBZTtJQUNYLE1BQU0sUUFBQTtJQUNOLE9BQU8sU0FBQTtJQUNQLFVBQVUsWUFBQTtDQUNiLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9hZGluZyBmcm9tICcuLi91dGlsL2xvYWRpbmcnXG5pbXBvcnQgY29uZmlnIGZyb20gJy4uL3N0b3JlL2NvbmZpZydcbmltcG9ydCBzdGF0dXMgZnJvbSAnLi4vc3RvcmUvc3RhdHVzJ1xuaW1wb3J0IG1vY2tNYW5hZ2VyIGZyb20gJy4vbW9ja01hbmFnZXInXG5pbXBvcnQgY2FjaGVNYW5hZ2VyIGZyb20gJy4vY2FjaGVNYW5hZ2VyJ1xuaW1wb3J0IHNlc3Npb25NYW5hZ2VyIGZyb20gJy4vc2Vzc2lvbk1hbmFnZXInXG5pbXBvcnQgcmVzcG9uc2VIYW5kbGVyIGZyb20gJy4vcmVzcG9uc2VIYW5kbGVyJ1xuaW1wb3J0IGR1cmF0aW9uUmVwb3J0ZXIgZnJvbSBcIi4vZHVyYXRpb25SZXBvcnRlclwiXG5pbXBvcnQgdXJsIGZyb20gJy4uL3V0aWwvdXJsJ1xuaW1wb3J0IHsgSVJlcXVlc3RPcHRpb24sIElVcGxvYWRGaWxlT3B0aW9uLCBJRXJyb3JPYmplY3QgfSBmcm9tIFwiLi4vaW50ZXJmYWNlXCJcbmltcG9ydCB7IGNhdGNoSGFuZGxlciB9IGZyb20gJy4vY2F0Y2hIYW5kbGVyJztcblxuLy8g5qC85byP5YyWdXJsXG5mdW5jdGlvbiBmb3JtYXQob3JpZ2luVXJsOiBzdHJpbmcpIHtcbiAgICBpZiAob3JpZ2luVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICByZXR1cm4gb3JpZ2luVXJsXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHVybFBlcmZpeCA9IGNvbmZpZy51cmxQZXJmaXg7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLnVybFBlcmZpeCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB1cmxQZXJmaXggPSBjb25maWcudXJsUGVyZml4KClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsUGVyZml4ICsgb3JpZ2luVXJsO1xuICAgIH1cbn1cblxuLy8g5omA5pyJ6K+35rGC5Y+R5Ye65YmN6ZyA6KaB5YGa55qE5LqL5oOFXG5mdW5jdGlvbiBwcmVEbzxUIGV4dGVuZHMgSVJlcXVlc3RPcHRpb24gfCBJVXBsb2FkRmlsZU9wdGlvbj4ob2JqOiBULCByZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQsIHJlamVjdD86IChyZWFzb24/OiBhbnkpID0+IHZvaWQpOiBUIHtcbiAgICAvLyDnmbvlvZXmgIHlpLHmlYjvvIzph43lpI3nmbvlvZXorqHmlbBcbiAgICBpZiAodHlwZW9mIG9iai5yZUxvZ2luQ291bnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgb2JqLnJlTG9naW5Db3VudCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb2JqLnJlTG9naW5Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChvYmoucmVMb2dpbkNvdW50ID09PSAwICYmIHR5cGVvZiBvYmouYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iai5iZWZvcmVTZW5kKCk7XG4gICAgfVxuXG4gICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICBsb2FkaW5nLnNob3cob2JqLnNob3dMb2FkaW5nKTtcbiAgICB9XG5cbiAgICBpZiAoIW9iai5vcmlnaW5VcmwpIHtcbiAgICAgICAgb2JqLm9yaWdpblVybCA9IG9iai51cmw7XG4gICAgICAgIG9iai51cmwgPSBmb3JtYXQob2JqLnVybCk7XG4gICAgfVxuXG4gICAgb2JqLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICBvYmouX3JlamVjdCA9IHJlamVjdDtcblxuICAgIHJldHVybiBvYmo7XG59XG5cbi8vIOagvOW8j+WMluWkhOeQhuivt+axgueahG9iauWGheWuuVxuZnVuY3Rpb24gaW5pdGlhbGl6ZVJlcXVlc3RPYmoob2JqOiBJUmVxdWVzdE9wdGlvbikge1xuXG4gICAgaWYgKCFvYmouZGF0YSkge1xuICAgICAgICBvYmouZGF0YSA9IHt9O1xuICAgIH1cbiAgICBcbiAgICBvYmouaGVhZGVyID0gb2JqLmhlYWRlciA/IG9iai5oZWFkZXIgOiB7fTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5zZXRIZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbGV0IGhlYWRlciA9IGNvbmZpZy5zZXRIZWFkZXIoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBvYmouaGVhZGVyID0gey4uLm9iai5oZWFkZXIsIC4uLmhlYWRlcn07XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcuc2V0SGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICBvYmouaGVhZGVyID0gey4uLm9iai5oZWFkZXIsIC4uLmNvbmZpZy5zZXRIZWFkZXJ9O1xuICAgIH1cblxuICAgIGlmIChvYmoub3JpZ2luVXJsICE9PSBjb25maWcuY29kZVRvU2Vzc2lvbi51cmwgJiYgc3RhdHVzLnNlc3Npb24pIHtcbiAgICAgICAgb2JqLmRhdGEgPSB7IC4uLm9iai5kYXRhIGFzIG9iamVjdCwgW2NvbmZpZy5zZXNzaW9uTmFtZV06IHN0YXR1cy5zZXNzaW9uIH07XG4gICAgfVxuXG4gICAgLy8g5aaC5p6c5pyJ5YWo5bGA5Y+C5pWw77yM5YiZ5re75YqgXG4gICAgY29uc3QgZ2QgPSBnZXRHbG9iYWxEYXRhKCk7XG4gICAgb2JqLmRhdGEgPSB7IC4uLmdkLCAuLi5vYmouZGF0YSBhcyBvYmplY3QgfTtcblxuICAgIG9iai5tZXRob2QgPSBvYmoubWV0aG9kIHx8ICdHRVQnO1xuICAgIG9iai5kYXRhVHlwZSA9IG9iai5kYXRhVHlwZSB8fCAnanNvbic7XG5cbiAgICAvLyDlpoLmnpzor7fmsYLkuI3mmK9HRVTvvIzliJnlnKhVUkzkuK3oh6rliqjliqDkuIrnmbvlvZXmgIHlkozlhajlsYDlj4LmlbBcbiAgICBpZiAoIWNvbmZpZy5kb05vdFVzZVF1ZXJ5U3RyaW5nICYmIG9iai5tZXRob2QgIT09IFwiR0VUXCIpIHtcbiAgICAgICAgaWYgKHN0YXR1cy5zZXNzaW9uKSB7XG4gICAgICAgICAgICBvYmoudXJsID0gdXJsLnNldFBhcmFtcyhvYmoudXJsLCB7IFtjb25maWcuc2Vzc2lvbk5hbWVdOiBzdGF0dXMuc2Vzc2lvbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBvYmoudXJsID0gdXJsLnNldFBhcmFtcyhvYmoudXJsLCBnZCk7XG4gICAgfVxuXG4gICAgZHVyYXRpb25SZXBvcnRlci5zdGFydChvYmopO1xuXG4gICAgcmV0dXJuIG9iajtcbn1cblxuLy8g5qC85byP5YyW5aSE55CG5LiK5Lyg5paH5Lu255qEb2Jq5YaF5a65XG5mdW5jdGlvbiBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmo6IElVcGxvYWRGaWxlT3B0aW9uKSB7XG4gICAgaWYgKCFvYmouZm9ybURhdGEpIHtcbiAgICAgICAgb2JqLmZvcm1EYXRhID0ge307XG4gICAgfVxuXG4gICAgb2JqLmhlYWRlciA9IG9iai5oZWFkZXIgPyBvYmouaGVhZGVyIDoge307XG4gICAgaWYgKHR5cGVvZiBjb25maWcuc2V0SGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxldCBoZWFkZXIgPSBjb25maWcuc2V0SGVhZGVyKCk7XG4gICAgICAgIGlmICh0eXBlb2YgaGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgb2JqLmhlYWRlciA9IHsuLi5vYmouaGVhZGVyLCAuLi5oZWFkZXJ9O1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnLnNldEhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgb2JqLmhlYWRlciA9IHsuLi5vYmouaGVhZGVyLCAuLi5jb25maWcuc2V0SGVhZGVyfTtcbiAgICB9XG5cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnLmNvZGVUb1Nlc3Npb24udXJsICYmIHN0YXR1cy5zZXNzaW9uKSB7XG4gICAgICAgIG9iai5mb3JtRGF0YSA9IHsgLi4ub2JqLmZvcm1EYXRhIGFzIG9iamVjdCwgW2NvbmZpZy5zZXNzaW9uTmFtZV06IHN0YXR1cy5zZXNzaW9uIH07XG4gICAgfVxuXG4gICAgLy8g5aaC5p6c5pyJ5YWo5bGA5Y+C5pWw77yM5YiZ5re75YqgXG4gICAgY29uc3QgZ2QgPSBnZXRHbG9iYWxEYXRhKCk7XG4gICAgb2JqLmZvcm1EYXRhID0geyAuLi5nZCwgLi4ub2JqLmZvcm1EYXRhIH07XG5cbiAgICBpZiAoIWNvbmZpZy5kb05vdFVzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIC8vIOWwhueZu+mZhuaAgeS5n+W4puWcqHVybOS4ilxuICAgICAgICBpZiAoc3RhdHVzLnNlc3Npb24pIHtcbiAgICAgICAgICAgIG9iai51cmwgPSB1cmwuc2V0UGFyYW1zKG9iai51cmwsIHsgW2NvbmZpZy5zZXNzaW9uTmFtZV06IHN0YXR1cy5zZXNzaW9uIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWFqOWxgOWPguaVsOWQjOaXtuaUvuWcqHVybOS4ilxuICAgICAgICBvYmoudXJsID0gdXJsLnNldFBhcmFtcyhvYmoudXJsLCBnZCk7XG4gICAgfVxuXG4gICAgZHVyYXRpb25SZXBvcnRlci5zdGFydChvYmopO1xuXG4gICAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gZ2V0R2xvYmFsRGF0YSgpIHtcbiAgICBsZXQgZ2Q6IGFueSA9IHt9O1xuICAgIGlmICh0eXBlb2YgY29uZmlnLmdsb2JhbERhdGEgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBnZCA9IGNvbmZpZy5nbG9iYWxEYXRhKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnLmdsb2JhbERhdGEgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgZ2QgPSBjb25maWcuZ2xvYmFsRGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIGdkO1xufVxuXG5mdW5jdGlvbiBkb1JlcXVlc3Qob2JqOiBJUmVxdWVzdE9wdGlvbikge1xuICAgIG9iaiA9IGluaXRpYWxpemVSZXF1ZXN0T2JqKG9iaik7XG4gICAgaWYgKG9iai5yZUxvZ2luQ291bnQgPT09IDAgJiYgdHlwZW9mIGNvbmZpZy5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqID0gY29uZmlnLmJlZm9yZVNlbmQob2JqLCBzdGF0dXMuc2Vzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxXZWNoYXRNaW5pcHJvZ3JhbS5SZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHd4LnJlcXVlc3Qoe1xuICAgICAgICAgICAgLi4ub2JqLFxuICAgICAgICAgICAgc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWwocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHR5cGU6ICdzeXN0ZW0tZXJyb3InLCByZXMgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gZG9VcGxvYWRGaWxlKG9iajogSVVwbG9hZEZpbGVPcHRpb24pIHtcbiAgICBvYmogPSBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmopO1xuICAgIGlmIChvYmoucmVMb2dpbkNvdW50ID09PSAwICYmIHR5cGVvZiBjb25maWcuYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iaiA9IGNvbmZpZy5iZWZvcmVTZW5kKG9iaiwgc3RhdHVzLnNlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2U8V2VjaGF0TWluaXByb2dyYW0uVXBsb2FkRmlsZVN1Y2Nlc3NDYWxsYmFja1Jlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB3eC51cGxvYWRGaWxlKHtcbiAgICAgICAgICAgIC4uLm9iaixcbiAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0eXBlOiAnc3lzdGVtLWVycm9yJywgcmVzIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLmNvbXBsZXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvYmouc2hvd0xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmZ1bmN0aW9uIHJlcXVlc3Q8VFJlc3A+KG9iajogSVJlcXVlc3RPcHRpb24pOiBQcm9taXNlPFRSZXNwPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqLCByZXNvbHZlLCByZWplY3QpO1xuXG4gICAgICAgIGlmIChjb25maWcubW9ja0pzb24pIHtcbiAgICAgICAgICAgIGxldCBtb2NrUmVzcG9uc2UgPSBtb2NrTWFuYWdlci5nZXQob2JqKTtcbiAgICAgICAgICAgIGlmIChtb2NrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXIucmVzcG9uc2VGb3JSZXF1ZXN0KG1vY2tSZXNwb25zZSwgb2JqKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqLmNhY2hlKSB7XG4gICAgICAgICAgICBjYWNoZU1hbmFnZXIuZ2V0KG9iaik7XG4gICAgICAgIH1cblxuICAgICAgICBzZXNzaW9uTWFuYWdlci5tYWluKG9iaikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZG9SZXF1ZXN0KG9iailcbiAgICAgICAgfSkudGhlbigocmVzOiBXZWNoYXRNaW5pcHJvZ3JhbS5SZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXIucmVzcG9uc2VGb3JSZXF1ZXN0KHJlcywgb2JqKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoZTogSUVycm9yT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2F0Y2hIYW5kbGVyKGUsIG9iaiwgcmVqZWN0KVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmZ1bmN0aW9uIHVwbG9hZEZpbGUob2JqOiBJVXBsb2FkRmlsZU9wdGlvbik6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqLCByZXNvbHZlLCByZWplY3QpO1xuXG4gICAgICAgIGlmIChjb25maWcubW9ja0pzb24pIHtcbiAgICAgICAgICAgIGxldCBtb2NrUmVzcG9uc2UgPSBtb2NrTWFuYWdlci5nZXQob2JqKTtcbiAgICAgICAgICAgIGlmIChtb2NrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXIucmVzcG9uc2VGb3JVcGxvYWRGaWxlKG1vY2tSZXNwb25zZSwgb2JqKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXNzaW9uTWFuYWdlci5tYWluKG9iaikudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZG9VcGxvYWRGaWxlKG9iailcbiAgICAgICAgfSkudGhlbigocmVzOiBXZWNoYXRNaW5pcHJvZ3JhbS5VcGxvYWRGaWxlU3VjY2Vzc0NhbGxiYWNrUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXIucmVzcG9uc2VGb3JVcGxvYWRGaWxlKHJlcywgb2JqKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoZTogSUVycm9yT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICBjYXRjaEhhbmRsZXIoZSwgb2JqLCByZWplY3QpXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGZvcm1hdCxcbiAgICByZXF1ZXN0LFxuICAgIHVwbG9hZEZpbGVcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBcUM7QUFDckMsMENBQW9DO0FBQ3BDLDBDQUFvQztBQUNwQyw2Q0FBdUM7QUFDdkMsK0NBQXlDO0FBQ3pDLG1EQUE2QztBQUM3QyxxREFBK0M7QUFDL0MsdURBQWlEO0FBQ2pELG1DQUE2QjtBQUU3QiwrQ0FBOEM7QUFHOUMsU0FBUyxNQUFNLENBQUMsU0FBaUI7SUFDN0IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzlCLE9BQU8sU0FBUyxDQUFBO0tBQ25CO1NBQU07UUFDSCxJQUFJLFNBQVMsR0FBRyxnQkFBTSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLE9BQU8sZ0JBQU0sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1lBQ3hDLFNBQVMsR0FBRyxnQkFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO1NBQ2pDO1FBQ0QsT0FBTyxTQUFTLEdBQUcsU0FBUyxDQUFDO0tBQ2hDO0FBQ0wsQ0FBQztBQUdELFNBQVMsS0FBSyxDQUErQyxHQUFNLEVBQUUsT0FBOEIsRUFBRSxNQUErQjtJQUVoSSxJQUFJLE9BQU8sR0FBRyxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7UUFDekMsR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7S0FDeEI7U0FBTTtRQUNILEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQUN0QjtJQUVELElBQUksR0FBRyxDQUFDLFlBQVksS0FBSyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtRQUNoRSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7S0FDcEI7SUFFRCxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7UUFDakIsaUJBQU8sQ0FBQyxJQUFJLENB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UCxVQUFVLFlBQUE7Q0FDYixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRpbmcgZnJvbSAnLi4vdXRpbC9sb2FkaW5nJ1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9zdG9yZS9jb25maWcnXG5pbXBvcnQgc3RhdHVzIGZyb20gJy4uL3N0b3JlL3N0YXR1cydcbmltcG9ydCBtb2NrTWFuYWdlciBmcm9tICcuL21vY2tNYW5hZ2VyJ1xuaW1wb3J0IGNhY2hlTWFuYWdlciBmcm9tICcuL2NhY2hlTWFuYWdlcidcbmltcG9ydCBzZXNzaW9uTWFuYWdlciBmcm9tICcuL3Nlc3Npb25NYW5hZ2VyJ1xuaW1wb3J0IHJlc3BvbnNlSGFuZGxlciBmcm9tICcuL3Jlc3BvbnNlSGFuZGxlcidcbmltcG9ydCBkdXJhdGlvblJlcG9ydGVyIGZyb20gXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIlxuaW1wb3J0IHVybCBmcm9tICcuLi91dGlsL3VybCdcbmltcG9ydCB7IElSZXF1ZXN0T3B0aW9uLCBJVXBsb2FkRmlsZU9wdGlvbiwgSUVycm9yT2JqZWN0IH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiXG5pbXBvcnQgeyBjYXRjaEhhbmRsZXIgfSBmcm9tICcuL2NhdGNoSGFuZGxlcic7XG5cbi8vIOagvOW8j+WMlnVybFxuZnVuY3Rpb24gZm9ybWF0KG9yaWdpblVybDogc3RyaW5nKSB7XG4gICAgaWYgKG9yaWdpblVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpblVybFxuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB1cmxQZXJmaXggPSBjb25maWcudXJsUGVyZml4O1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy51cmxQZXJmaXggPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdXJsUGVyZml4ID0gY29uZmlnLnVybFBlcmZpeCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVybFBlcmZpeCArIG9yaWdpblVybDtcbiAgICB9XG59XG5cbi8vIOaJgOacieivt+axguWPkeWHuuWJjemcgOimgeWBmueahOS6i+aDhVxuZnVuY3Rpb24gcHJlRG88VCBleHRlbmRzIElSZXF1ZXN0T3B0aW9uIHwgSVVwbG9hZEZpbGVPcHRpb24+KG9iajogVCwgcmVzb2x2ZTogKHZhbHVlPzogYW55KSA9PiB2b2lkLCByZWplY3Q/OiAocmVhc29uPzogYW55KSA9PiB2b2lkKTogVCB7XG4gICAgLy8g55m75b2V5oCB5aSx5pWI77yM6YeN5aSN55m75b2V6K6h5pWwXG4gICAgaWYgKHR5cGVvZiBvYmoucmVMb2dpbkNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAob2JqLnJlTG9naW5Db3VudCA9PT0gMCAmJiB0eXBlb2Ygb2JqLmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmouYmVmb3JlU2VuZCgpO1xuICAgIH1cblxuICAgIGlmIChvYmouc2hvd0xvYWRpbmcpIHtcbiAgICAgICAgbG9hZGluZy5zaG93KG9iai5zaG93TG9hZGluZyk7XG4gICAgfVxuXG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XG4gICAgICAgIG9iai5vcmlnaW5VcmwgPSBvYmoudXJsO1xuICAgICAgICBvYmoudXJsID0gZm9ybWF0KG9iai51cmwpO1xuICAgIH1cblxuICAgIG9iai5fcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgb2JqLl9yZWplY3QgPSByZWplY3Q7XG5cbiAgICByZXR1cm4gb2JqO1xufVxuXG4vLyDmoLzlvI/ljJblpITnkIbor7fmsYLnmoRvYmrlhoXlrrlcbmZ1bmN0aW9uIGluaXRpYWxpemVSZXF1ZXN0T2JqKG9iajogSVJlcXVlc3RPcHRpb24pIHtcblxuICAgIGlmICghb2JqLmRhdGEpIHtcbiAgICAgICAgb2JqLmRhdGEgPSB7fTtcbiAgICB9XG4gICAgXG4gICAgb2JqLmhlYWRlciA9IG9iai5oZWFkZXIgPyBvYmouaGVhZGVyIDoge307XG4gICAgaWYgKHR5cGVvZiBjb25maWcuc2V0SGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxldCBoZWFkZXIgPSBjb25maWcuc2V0SGVhZGVyKCk7XG4gICAgICAgIGlmICh0eXBlb2YgaGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgb2JqLmhlYWRlciA9IHsuLi5vYmouaGVhZGVyLCAuLi5oZWFkZXJ9O1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnLnNldEhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgb2JqLmhlYWRlciA9IHsuLi5vYmouaGVhZGVyLCAuLi5jb25maWcuc2V0SGVhZGVyfTtcbiAgICB9XG5cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnLmNvZGVUb1Nlc3Npb24udXJsICYmIHN0YXR1cy5zZXNzaW9uKSB7XG4gICAgICAgIG9iai5kYXRhID0geyAuLi5vYmouZGF0YSBhcyBvYmplY3QsIFtjb25maWcuc2Vzc2lvbk5hbWVdOiBzdGF0dXMuc2Vzc2lvbiB9O1xuICAgIH1cblxuICAgIC8vIOWmguaenOacieWFqOWxgOWPguaVsO+8jOWImea3u+WKoFxuICAgIGNvbnN0IGdkID0gZ2V0R2xvYmFsRGF0YSgpO1xuICAgIG9iai5kYXRhID0geyAuLi5nZCwgLi4ub2JqLmRhdGEgYXMgb2JqZWN0IH07XG5cbiAgICBvYmoubWV0aG9kID0gb2JqLm1ldGhvZCB8fCAnR0VUJztcbiAgICBvYmouZGF0YVR5cGUgPSBvYmouZGF0YVR5cGUgfHwgJ2pzb24nO1xuXG4gICAgLy8g5aaC5p6c6K+35rGC5LiN5pivR0VU77yM5YiZ5ZyoVVJM5Lit6Ieq5Yqo5Yqg5LiK55m75b2V5oCB5ZKM5YWo5bGA5Y+C5pWwXG4gICAgaWYgKCFjb25maWcuZG9Ob3RVc2VRdWVyeVN0cmluZyAmJiBvYmoubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIGlmIChzdGF0dXMuc2Vzc2lvbikge1xuICAgICAgICAgICAgb2JqLnVybCA9IHVybC5zZXRQYXJhbXMob2JqLnVybCwgeyBbY29uZmlnLnNlc3Npb25OYW1lXTogc3RhdHVzLnNlc3Npb24gfSk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqLnVybCA9IHVybC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xuICAgIH1cblxuICAgIC8vIOWkh+eUqOWfn+WQjemAu+i+kVxuICAgIGlmIChzdGF0dXMuaXNFbmFibGVCYWNrdXBEb21haW4gJiYgY29uZmlnLmJhY2t1cERvbWFpbikge1xuICAgICAgICBvYmoudXJsID0gdXJsLnJlcGxhY2VEb21haW4ob2JqLnVybCwgY29uZmlnLmJhY2t1cERvbWFpbik7XG4gICAgfVxuXG4gICAgZHVyYXRpb25SZXBvcnRlci5zdGFydChvYmopO1xuXG4gICAgcmV0dXJuIG9iajtcbn1cblxuLy8g5qC85byP5YyW5aSE55CG5LiK5Lyg5paH5Lu255qEb2Jq5YaF5a65XG5mdW5jdGlvbiBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmo6IElVcGxvYWRGaWxlT3B0aW9uKSB7XG4gICAgaWYgKCFvYmouZm9ybURhdGEpIHtcbiAgICAgICAgb2JqLmZvcm1EYXRhID0ge307XG4gICAgfVxuXG4gICAgb2JqLmhlYWRlciA9IG9iai5oZWFkZXIgPyBvYmouaGVhZGVyIDoge307XG4gICAgaWYgKHR5cGVvZiBjb25maWcuc2V0SGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxldCBoZWFkZXIgPSBjb25maWcuc2V0SGVhZGVyKCk7XG4gICAgICAgIGlmICh0eXBlb2YgaGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgb2JqLmhlYWRlciA9IHsuLi5vYmouaGVhZGVyLCAuLi5oZWFkZXJ9O1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnLnNldEhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgb2JqLmhlYWRlciA9IHsuLi5vYmouaGVhZGVyLCAuLi5jb25maWcuc2V0SGVhZGVyfTtcbiAgICB9XG5cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnLmNvZGVUb1Nlc3Npb24udXJsICYmIHN0YXR1cy5zZXNzaW9uKSB7XG4gICAgICAgIG9iai5mb3JtRGF0YSA9IHsgLi4ub2JqLmZvcm1EYXRhIGFzIG9iamVjdCwgW2NvbmZpZy5zZXNzaW9uTmFtZV06IHN0YXR1cy5zZXNzaW9uIH07XG4gICAgfVxuXG4gICAgLy8g5aaC5p6c5pyJ5YWo5bGA5Y+C5pWw77yM5YiZ5re75YqgXG4gICAgY29uc3QgZ2QgPSBnZXRHbG9iYWxEYXRhKCk7XG4gICAgb2JqLmZvcm1EYXRhID0geyAuLi5nZCwgLi4ub2JqLmZvcm1EYXRhIH07XG5cbiAgICBpZiAoIWNvbmZpZy5kb05vdFVzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIC8vIOWwhueZu+mZhuaAgeS5n+W4puWcqHVybOS4ilxuICAgICAgICBpZiAoc3RhdHVzLnNlc3Npb24pIHtcbiAgICAgICAgICAgIG9iai51cmwgPSB1cmwuc2V0UGFyYW1zKG9iai51cmwsIHsgW2NvbmZpZy5zZXNzaW9uTmFtZV06IHN0YXR1cy5zZXNzaW9uIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWFqOWxgOWPguaVsOWQjOaXtuaUvuWcqHVybOS4ilxuICAgICAgICBvYmoudXJsID0gdXJsLnNldFBhcmFtcyhvYmoudXJsLCBnZCk7XG4gICAgfVxuXG4gICAgLy8g5aSH55So5Z+f5ZCN6YC76L6RXG4gICAgaWYgKHN0YXR1cy5pc0VuYWJsZUJhY2t1cERvbWFpbiAmJiBjb25maWcuYmFja3VwRG9tYWluKSB7XG4gICAgICAgIG9iai51cmwgPSB1cmwucmVwbGFjZURvbWFpbihvYmoudXJsLCBjb25maWcuYmFja3VwRG9tYWluKTtcbiAgICB9XG5cbiAgICBkdXJhdGlvblJlcG9ydGVyLnN0YXJ0KG9iaik7XG5cbiAgICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBnZXRHbG9iYWxEYXRhKCkge1xuICAgIGxldCBnZDogYW55ID0ge307XG4gICAgaWYgKHR5cGVvZiBjb25maWcuZ2xvYmFsRGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGdkID0gY29uZmlnLmdsb2JhbERhdGEoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcuZ2xvYmFsRGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBnZCA9IGNvbmZpZy5nbG9iYWxEYXRhO1xuICAgIH1cbiAgICByZXR1cm4gZ2Q7XG59XG5cbmZ1bmN0aW9uIGRvUmVxdWVzdChvYmo6IElSZXF1ZXN0T3B0aW9uKSB7XG4gICAgb2JqID0gaW5pdGlhbGl6ZVJlcXVlc3RPYmoob2JqKTtcbiAgICBpZiAob2JqLnJlTG9naW5Db3VudCA9PT0gMCAmJiB0eXBlb2YgY29uZmlnLmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmogPSBjb25maWcuYmVmb3JlU2VuZChvYmosIHN0YXR1cy5zZXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFdlY2hhdE1pbmlwcm9ncmFtLlJlcXVlc3RTdWNjZXNzQ2FsbGJhY2tSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgd3gucmVxdWVzdCh7XG4gICAgICAgICAgICAuLi5vYmosXG4gICAgICAgICAgICBzdWNjZXNzKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbChyZXMpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzkuLvln5/lkI3kuI3lj6/nlKjvvIzkuJTphY3nva7kuoblpIfku73ln5/lkI3vvIzkuJTmnKzmrKHor7fmsYLmnKrkvb/nlKjlpIfku73ln5/lkI1cbiAgICAgICAgICAgICAgICBpZiAocmVzPy5lcnJNc2c/LmluZGV4T2YoJ0NPTk5FQ1RJT05fUkVGVVNFRCcpID49IDAgJiYgY29uZmlnLmJhY2t1cERvbWFpbiAmJiBvYmoudXJsLmluZGV4T2YoY29uZmlnLmJhY2t1cERvbWFpbikgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOW8gOWQr+Wkh+S7veWfn+WQjVxuICAgICAgICAgICAgICAgICAgICBlbmFibGVCYWNrdXBEb21haW4oKTtcbiAgICAgICAgICAgICAgICAgICAgLy8g6YeN6K+V5LiA5qyhXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb1JlcXVlc3Qob2JqKS50aGVuKChyZXMpPT4gcmVzb2x2ZShyZXMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHR5cGU6ICdzeXN0ZW0tZXJyb3InLCByZXMgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gZG9VcGxvYWRGaWxlKG9iajogSVVwbG9hZEZpbGVPcHRpb24pIHtcbiAgICBvYmogPSBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmopO1xuICAgIGlmIChvYmoucmVMb2dpbkNvdW50ID09PSAwICYmIHR5cGVvZiBjb25maWcuYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iaiA9IGNvbmZpZy5iZWZvcmVTZW5kKG9iaiwgc3RhdHVzLnNlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2U8V2VjaGF0TWluaXByb2dyYW0uVXBsb2FkRmlsZVN1Y2Nlc3NDYWxsYmFja1Jlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB3eC51cGxvYWRGaWxlKHtcbiAgICAgICAgICAgIC4uLm9iaixcbiAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsKHJlcykge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOS4u+Wfn+WQjeS4jeWPr+eUqO+8jOS4lOmFjee9ruS6huWkh+S7veWfn+WQje+8jOS4lOacrOasoeivt+axguacquS9v+eUqOWkh+S7veWfn+WQjVxuICAgICAgICAgICAgICAgIGlmIChyZXM/LmVyck1zZz8uaW5kZXhPZignQ09OTkVDVElPTl9SRUZVU0VEJykgPj0gMCAmJiBjb25maWcuYmFja3VwRG9tYWluICYmIG9iai51cmwuaW5kZXhPZihjb25maWcuYmFja3VwRG9tYWluKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5byA5ZCv5aSH5Lu95Z+f5ZCNXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZUJhY2t1cERvbWFpbigpO1xuICAgICAgICAgICAgICAgICAgICAvLyDph43or5XkuIDmrKFcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvVXBsb2FkRmlsZShvYmopLnRoZW4oKHJlcyk9PiByZXNvbHZlKHJlcykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdHlwZTogJ3N5c3RlbS1lcnJvcicsIHJlcyB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZSgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5mdW5jdGlvbiByZXF1ZXN0PFRSZXNwPihvYmo6IElSZXF1ZXN0T3B0aW9uKTogUHJvbWlzZTxUUmVzcD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaiwgcmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgICAgICBpZiAoY29uZmlnLm1vY2tKc29uKSB7XG4gICAgICAgICAgICBsZXQgbW9ja1Jlc3BvbnNlID0gbW9ja01hbmFnZXIuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yUmVxdWVzdChtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iai5jYWNoZSkge1xuICAgICAgICAgICAgY2FjaGVNYW5hZ2VyLmdldChvYmopO1xuICAgICAgICB9XG5cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXIubWFpbihvYmopLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRvUmVxdWVzdChvYmopXG4gICAgICAgIH0pLnRoZW4oKHJlczogV2VjaGF0TWluaXByb2dyYW0uUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yUmVxdWVzdChyZXMsIG9iaik7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goKGU6IElFcnJvck9iamVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhdGNoSGFuZGxlcihlLCBvYmosIHJlamVjdClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5mdW5jdGlvbiB1cGxvYWRGaWxlKG9iajogSVVwbG9hZEZpbGVPcHRpb24pOiBhbnkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaiwgcmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgICAgICBpZiAoY29uZmlnLm1vY2tKc29uKSB7XG4gICAgICAgICAgICBsZXQgbW9ja1Jlc3BvbnNlID0gbW9ja01hbmFnZXIuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yVXBsb2FkRmlsZShtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXIubWFpbihvYmopLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRvVXBsb2FkRmlsZShvYmopXG4gICAgICAgIH0pLnRoZW4oKHJlczogV2VjaGF0TWluaXByb2dyYW0uVXBsb2FkRmlsZVN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyLnJlc3BvbnNlRm9yVXBsb2FkRmlsZShyZXMsIG9iaik7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goKGU6IElFcnJvck9iamVjdCkgPT4ge1xuICAgICAgICAgICAgY2F0Y2hIYW5kbGVyKGUsIG9iaiwgcmVqZWN0KVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmZ1bmN0aW9uIGVuYWJsZUJhY2t1cERvbWFpbigpIHtcbiAgICBpZiAoIXN0YXR1cy5pc0VuYWJsZUJhY2t1cERvbWFpbikge1xuICAgICAgICBzdGF0dXMuaXNFbmFibGVCYWNrdXBEb21haW4gPSB0cnVlO1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5iYWNrdXBEb21haW5FbmFibGVDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uZmlnLmJhY2t1cERvbWFpbkVuYWJsZUNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBmb3JtYXQsXG4gICAgcmVxdWVzdCxcbiAgICB1cGxvYWRGaWxlXG59XG4iXX0= /***/ }), @@ -1235,9 +1259,10 @@ exports.default = defaultConfig; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { session: '', - sessionExpire: Infinity + sessionExpire: Infinity, + isEnableBackupDomain: false }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFlO0lBQ1gsT0FBTyxFQUFFLEVBQVk7SUFFckIsYUFBYSxFQUFFLFFBQWtCO0NBQzdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gICAgc2Vzc2lvbjogJycgYXMgc3RyaW5nLFxuICAgIC8vIHNlc3Npb27ov4fmnJ/nmoTml7bpl7TngrlcbiAgICBzZXNzaW9uRXhwaXJlOiBJbmZpbml0eSBhcyBudW1iZXJcbn0gYXMgYW55XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFlO0lBQ1gsT0FBTyxFQUFFLEVBQVk7SUFFckIsYUFBYSxFQUFFLFFBQWtCO0lBRWpDLG9CQUFvQixFQUFFLEtBQUs7Q0FDdkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgICBzZXNzaW9uOiAnJyBhcyBzdHJpbmcsXG4gICAgLy8gc2Vzc2lvbui/h+acn+eahOaXtumXtOeCuVxuICAgIHNlc3Npb25FeHBpcmU6IEluZmluaXR5IGFzIG51bWJlcixcbiAgICAvLyDmmK/lkKblkK/nlKjlpIfnlKjln5/lkI1cbiAgICBpc0VuYWJsZUJhY2t1cERvbWFpbjogZmFsc2Vcbn0gYXMgYW55XG4iXX0= /***/ }), @@ -1341,10 +1366,17 @@ function setParams(url, params) { return url + "?" + queryString; } } +function replaceDomain(url, domain) { + if (url === void 0) { url = ""; } + if (domain === void 0) { domain = ""; } + domain = domain.replace(/^http(s)?:\/\//, '').replace(/\/$/, ''); + return url.replace(/^http(s)?:\/\/(.*?)\//, "https://" + domain + "/"); +} exports.default = { - setParams: setParams + setParams: setParams, + replaceDomain: replaceDomain, }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLFNBQVMsQ0FBQyxHQUFnQixFQUFFLE1BQWM7SUFBaEMsb0JBQUEsRUFBQSxRQUFnQjtJQUMvQixJQUFNLGdCQUFnQixHQUFXLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBQ2xCLElBQUksZ0JBQWdCLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLElBQU0sZ0JBQWMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxnQkFBYyxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQU0sRUFBRSxHQUFhLGdCQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELEdBQUcseUJBQU8sR0FBRyxHQUFLLE1BQU0sQ0FBQyxDQUFDO0lBRTFCLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CLEdBQUcsQ0FBQyxVQUFBLEdBQUc7UUFDSixPQUFVLEdBQUcsU0FBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFHLENBQUM7SUFDM0MsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUU7UUFDdkIsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7S0FDL0Q7U0FBTTtRQUNILE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUM7S0FDbEM7QUFDTCxDQUFDO0FBRUQsa0JBQWU7SUFDWCxTQUFTLFdBQUE7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gc2V0UGFyYW1zKHVybDogc3RyaW5nID0gXCJcIiwgcGFyYW1zOiBvYmplY3QpIHtcbiAgICBjb25zdCBxdWVyeVN0cmluZ0luZGV4OiBudW1iZXIgPSB1cmwuaW5kZXhPZihcIj9cIik7XG4gICAgbGV0IGt2cDogYW55ID0ge307XG4gICAgaWYgKHF1ZXJ5U3RyaW5nSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBvbGRRdWVyeVN0cmluZyA9IHVybC5zdWJzdHIocXVlcnlTdHJpbmdJbmRleCArIDEpLnNwbGl0KFwiJlwiKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvbGRRdWVyeVN0cmluZy5mb3JFYWNoKCh4LCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrdjogc3RyaW5nW10gPSBvbGRRdWVyeVN0cmluZ1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgICAgICBrdnBba3ZbMF1dID0ga3ZbMV07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGt2cCA9IHsuLi5rdnAsIC4uLnBhcmFtc307XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKGt2cClcbiAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2tleX09JHtlbmNvZGVVUkkoa3ZwW2tleV0pfWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiJlwiKTtcblxuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoMCwgcXVlcnlTdHJpbmdJbmRleCArIDEpICsgcXVlcnlTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVybCArIFwiP1wiICsgcXVlcnlTdHJpbmc7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc2V0UGFyYW1zXG59O1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLFNBQVMsQ0FBQyxHQUFnQixFQUFFLE1BQWM7SUFBaEMsb0JBQUEsRUFBQSxRQUFnQjtJQUMvQixJQUFNLGdCQUFnQixHQUFXLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBQ2xCLElBQUksZ0JBQWdCLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLElBQU0sZ0JBQWMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxnQkFBYyxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQU0sRUFBRSxHQUFhLGdCQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xELEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELEdBQUcseUJBQU8sR0FBRyxHQUFLLE1BQU0sQ0FBQyxDQUFDO0lBRTFCLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CLEdBQUcsQ0FBQyxVQUFBLEdBQUc7UUFDSixPQUFVLEdBQUcsU0FBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFHLENBQUM7SUFDM0MsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUU7UUFDdkIsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7S0FDL0Q7U0FBTTtRQUNILE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUM7S0FDbEM7QUFDTCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsR0FBZ0IsRUFBRSxNQUFtQjtJQUFyQyxvQkFBQSxFQUFBLFFBQWdCO0lBQUUsdUJBQUEsRUFBQSxXQUFtQjtJQUV4RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxhQUFXLE1BQU0sTUFBRyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELGtCQUFlO0lBQ1gsU0FBUyxXQUFBO0lBQ1QsYUFBYSxlQUFBO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBzZXRQYXJhbXModXJsOiBzdHJpbmcgPSBcIlwiLCBwYXJhbXM6IG9iamVjdCkge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nSW5kZXg6IG51bWJlciA9IHVybC5pbmRleE9mKFwiP1wiKTtcbiAgICBsZXQga3ZwOiBhbnkgPSB7fTtcbiAgICBpZiAocXVlcnlTdHJpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG9sZFF1ZXJ5U3RyaW5nID0gdXJsLnN1YnN0cihxdWVyeVN0cmluZ0luZGV4ICsgMSkuc3BsaXQoXCImXCIpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG9sZFF1ZXJ5U3RyaW5nLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGt2OiBzdHJpbmdbXSA9IG9sZFF1ZXJ5U3RyaW5nW2ldLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgICAgIGt2cFtrdlswXV0gPSBrdlsxXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAga3ZwID0gey4uLmt2cCwgLi4ucGFyYW1zfTtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXMoa3ZwKVxuICAgICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7a2V5fT0ke2VuY29kZVVSSShrdnBba2V5XSl9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCImXCIpO1xuXG4gICAgaWYgKHF1ZXJ5U3RyaW5nSW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZygwLCBxdWVyeVN0cmluZ0luZGV4ICsgMSkgKyBxdWVyeVN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdXJsICsgXCI/XCIgKyBxdWVyeVN0cmluZztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VEb21haW4odXJsOiBzdHJpbmcgPSBcIlwiLCBkb21haW46IHN0cmluZyA9IFwiXCIpIHtcbiAgICAvLyDkv53or4Fkb21haW7lj6rljIXlkKvln5/lkI3vvIzmsqHmnIkgaHR0cChzKSDliY3nvIAg5ZKMIC8g5ZCO57yAXG4gICAgZG9tYWluID0gZG9tYWluLnJlcGxhY2UoL15odHRwKHMpPzpcXC9cXC8vLCAnJykucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoL15odHRwKHMpPzpcXC9cXC8oLio/KVxcLy8sIGBodHRwczovLyR7ZG9tYWlufS9gKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHNldFBhcmFtcyxcbiAgICByZXBsYWNlRG9tYWluLFxufTtcbiJdfQ== /***/ }), @@ -1359,11 +1391,11 @@ exports.default = { Object.defineProperty(exports, "__esModule", { value: true }); exports.version = void 0; -var version = "1.6.8"; +var version = "1.7.0"; exports.version = version; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQztBQUVuQiwwQkFBTyIsInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgY29uc3QgX19WRVJTSU9OX186IHN0cmluZztcblxuY29uc3QgdmVyc2lvbiA9IF9fVkVSU0lPTl9fO1xuXG5leHBvcnQgeyB2ZXJzaW9uIH07XG4iXX0= /***/ }) /******/ })["default"]; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZVJlcXVlc3Qvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRDb25maWcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRTZXNzaW9uLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvaW5pdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL2xvZ2luLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL3NldFNlc3Npb24udHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS91cGxvYWRGaWxlLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhY2hlTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhdGNoSGFuZGxlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2R1cmF0aW9uUmVwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9tb2NrTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvcmVzcG9uc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvc2Vzc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3N0b3JlL2NvbmZpZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvc3RvcmUvc3RhdHVzLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL2pzb25TdXBlcnNldC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvdXRpbC9sb2FkaW5nLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL3VybC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRmE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkNBQTJDLCszQjs7Ozs7Ozs7Ozs7O0FDWjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxD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LDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EseUJBQXlCLFVBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsdS9FOzs7Ozs7Ozs7Ozs7QUN4QzlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxjQUFjLE9BQVc7QUFDekI7QUFDQSwyQ0FBMkMsdVciLCJmaWxlIjoid2VSZXF1ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaW5kZXgudHNcIik7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB1cmxQZXJmaXg6IGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4LFxuICAgICAgICBzZXNzaW9uRXhwaXJlVGltZTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSxcbiAgICAgICAgc2Vzc2lvbkV4cGlyZUtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5LFxuICAgICAgICBzZXNzaW9uRXhwaXJlOiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVcbiAgICB9O1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlYwUTI5dVptbG5MbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyRndhUzluWlhSRGIyNW1hV2N1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZEY0VNc01FTkJRVzlETzBGQlJYQkRMRzFDUVVGbE8wbEJRMWdzVDBGQlR6dFJRVU5JTEZOQlFWTXNSVUZCUlN4blFrRkJUU3hEUVVGRExGTkJRVk03VVVGRE0wSXNhVUpCUVdsQ0xFVkJRVVVzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUk3VVVGRE0wTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFVMHNRMEZCUXl4blFrRkJaMEk3VVVGRGVrTXNZVUZCWVN4RlFVRkZMR2RDUVVGTkxFTkJRVU1zWVVGQllUdExRVU4wUXl4RFFVRkJPMEZCUTB3c1EwRkJReXhGUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdjM1JoZEhWeklHWnliMjBnSnk0dUwzTjBiM0psTDNOMFlYUjFjeWRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnS0NrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lIVnliRkJsY21acGVEb2dZMjl1Wm1sbkxuVnliRkJsY21acGVDeGNiaUFnSUNBZ0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlZScGJXVTZJR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsVkdsdFpTeGNiaUFnSUNBZ0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlV0bGVUb2dZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZMWlhrc1hHNGdJQ0FnSUNBZ0lITmxjM05wYjI1RmVIQnBjbVU2SUhOMFlYUjFjeTV6WlhOemFXOXVSWGh3YVhKbFhHNGdJQ0FnZlZ4dWZUdGNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbjtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWjJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdloyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVVndReXh0UWtGQlpUdEpRVU5ZTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhQUVVGUExFTkJRVUU3UVVGRGVrSXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSE4wWVhSMWN5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5emRHRjBkWE1uWEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNncElEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2MzUmhkSFZ6TG5ObGMzTnBiMjVjYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgT2JqZWN0LmFzc2lnbihjb25maWdfMS5kZWZhdWx0LCBwYXJhbXMpO1xuICAgIGNvbnNvbGUubG9nKGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gd3guZ2V0U3RvcmFnZVN5bmMoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSkgfHwgJyc7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7IH1cbiAgICB0cnkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXkgfHwgXCJzZXNzaW9uRXhwaXJlS2V5XCIpIHx8IEluZmluaXR5O1xuICAgIH1cbiAgICBjYXRjaCAoZSkgeyB9XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNXBkQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2YVc1cGRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVTndReXd3UTBGQmIwTTdRVUZIY0VNc2JVSkJRV1VzVlVGQlF5eE5RVUZ0UWp0SlFVTXZRaXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEdkQ1FVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRE9VSXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhuUWtGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUXk5Q0xFbEJRVWs3VVVGRFFTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEdkQ1FVRk5MRU5CUVVNc1YwRkJXU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzB0QlEycEZPMGxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJUdEpRVU5rTEVsQlFVazdVVUZEUVN4blFrRkJUU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWjBKQlFXZENMRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1MwRkRka2M3U1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4SFFVRkZPMEZCUTJ4Q0xFTkJRVU1zUlVGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQmpiMjVtYVdjZ1puSnZiU0FuTGk0dmMzUnZjbVV2WTI5dVptbG5KMXh1YVcxd2IzSjBJSE4wWVhSMWN5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5emRHRjBkWE1uWEc1cGJYQnZjblFnZXlCSlNXNXBkRTl3ZEdsdmJpQjlJR1p5YjIwZ0p5NHVMMmx1ZEdWeVptRmpaU2RjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnS0hCaGNtRnRjem9nU1VsdWFYUlBjSFJwYjI0cElEMCtJSHRjYmlBZ0lDQlBZbXBsWTNRdVlYTnphV2R1S0dOdmJtWnBaeXdnY0dGeVlXMXpLVHRjYmlBZ0lDQmpiMjV6YjJ4bExteHZaeWhqYjI1bWFXY3VaWEp5YjNKVWFYUnNaU2s3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2MzUmhkSFZ6TG5ObGMzTnBiMjRnUFNCM2VDNW5aWFJUZEc5eVlXZGxVM2x1WXloamIyNW1hV2N1YzJWemMybHZiazVoYldVaEtTQjhmQ0FuSnp0Y2JpQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN2ZWeHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsSUQwZ2QzZ3VaMlYwVTNSdmNtRm5aVk41Ym1Nb1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVkxaWGtnZkh3Z1hDSnpaWE56YVc5dVJYaHdhWEpsUzJWNVhDSXBJSHg4SUVsdVptbHVhWFI1TzF4dUlDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0OVhHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3Nlc3Npb25NYW5hZ2VyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0Lm1haW4oKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYkc5bmFXNHVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdllYQnBMMnh2WjJsdUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc01rUkJRWEZFTzBGQlJYSkVMRzFDUVVGbE8wbEJRMWdzVDBGQlR5eDNRa0ZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGQk8wRkJRMmhETEVOQlFVTXNSVUZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCelpYTnphVzl1VFdGdVlXZGxjaUJtY205dElDY3VMaTl0YjJSMWJHVXZjMlZ6YzJsdmJrMWhibUZuWlhJblhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElDZ3BJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjMlZ6YzJsdmJrMWhibUZuWlhJdWJXRnBiaWdwWEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgcmVxdWVzdEhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvcmVxdWVzdEhhbmRsZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQucmVxdWVzdChvYmopO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ4ZFdWemRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZjbVZ4ZFdWemRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVZHlSQ3h0UWtGQlpTeFZRVUZSTEVkQlFXMUNPMGxCUTNSRExFOUJRVThzZDBKQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVUU3UVVGRGRFTXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5eVpYRjFaWE4wU0dGdVpHeGxjaWRjYm1sdGNHOXlkQ0I3SUVsU1pYRjFaWE4wVDNCMGFXOXVJSDBnWm5KdmJTQW5MaTR2YVc1MFpYSm1ZV05sSjF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENBOFZGSmxjM0ErS0c5aWFqb2dTVkpsY1hWbGMzUlBjSFJwYjI0cE9pQlFjbTl0YVhObFBGUlNaWE53UGlBOVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUhKbGNYVmxjM1JJWVc1a2JHVnlMbkpsY1hWbGMzUW9iMkpxS1Z4dWZWeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKHNlc3Npb24pIHtcbiAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQuc2V0U2Vzc2lvbihzZXNzaW9uKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmMyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVVnlSQ3h0UWtGQlpTeFZRVUZETEU5QlFXVTdTVUZETTBJc2QwSkJRV01zUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRka01zUTBGQlF5eEZRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhObGMzTnBiMjVOWVc1aFoyVnlJR1p5YjIwZ0p5NHVMMjF2WkhWc1pTOXpaWE56YVc5dVRXRnVZV2RsY2lkY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ0tITmxjM05wYjI0NklITjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG5ObGRGTmxjM05wYjI0b2MyVnpjMmx2YmlrN1hHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3JlcXVlc3RIYW5kbGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LnVwbG9hZEZpbGUob2JqKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhCc2IyRmtSbWxzWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmRYQnNiMkZrUm1sc1pTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVZHlSQ3h0UWtGQlpTeFZRVUZETEVkQlFYTkNPMGxCUTJ4RExFOUJRVThzZDBKQlFXTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVUU3UVVGRGVrTXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5eVpYRjFaWE4wU0dGdVpHeGxjaWRjYm1sdGNHOXlkQ0I3SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1SUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0FvYjJKcU9pQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnlaWEYxWlhOMFNHRnVaR3hsY2k1MWNHeHZZV1JHYVd4bEtHOWlhaWxjYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW5pdF8xID0gcmVxdWlyZShcIi4vYXBpL2luaXRcIik7XG52YXIgcmVxdWVzdF8xID0gcmVxdWlyZShcIi4vYXBpL3JlcXVlc3RcIik7XG52YXIgdXBsb2FkRmlsZV8xID0gcmVxdWlyZShcIi4vYXBpL3VwbG9hZEZpbGVcIik7XG52YXIgc2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL3NldFNlc3Npb25cIik7XG52YXIgbG9naW5fMSA9IHJlcXVpcmUoXCIuL2FwaS9sb2dpblwiKTtcbnZhciBnZXRTZXNzaW9uXzEgPSByZXF1aXJlKFwiLi9hcGkvZ2V0U2Vzc2lvblwiKTtcbnZhciBnZXRDb25maWdfMSA9IHJlcXVpcmUoXCIuL2FwaS9nZXRDb25maWdcIik7XG52YXIgdmVyc2lvbl8xID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKTtcbnZhciB3ZVJlcXVlc3RPYmplY3QgPSB7XG4gICAgaW5pdDogaW5pdF8xLmRlZmF1bHQsXG4gICAgcmVxdWVzdDogcmVxdWVzdF8xLmRlZmF1bHQsXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZV8xLmRlZmF1bHQsXG4gICAgc2V0U2Vzc2lvbjogc2V0U2Vzc2lvbl8xLmRlZmF1bHQsXG4gICAgbG9naW46IGxvZ2luXzEuZGVmYXVsdCxcbiAgICBnZXRTZXNzaW9uOiBnZXRTZXNzaW9uXzEuZGVmYXVsdCxcbiAgICBnZXRDb25maWc6IGdldENvbmZpZ18xLmRlZmF1bHQsXG4gICAgdmVyc2lvbjogdmVyc2lvbl8xLnZlcnNpb25cbn07XG5leHBvcnRzLmRlZmF1bHQgPSB3ZVJlcXVlc3RPYmplY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk5emNtTXZhVzVrWlhndWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4dFEwRkJOa0k3UVVGRE4wSXNlVU5CUVcxRE8wRkJRMjVETEN0RFFVRjVRenRCUVVONlF5d3JRMEZCZVVNN1FVRkRla01zY1VOQlFTdENPMEZCUXk5Q0xDdERRVUY1UXp0QlFVTjZReXcyUTBGQmRVTTdRVUZGZGtNc2NVTkJRVzFETzBGQlJXNURMRWxCUVUwc1pVRkJaU3hIUVVGak8wbEJRMnBETEVsQlFVa3NaMEpCUVVFN1NVRkRTaXhQUVVGUExHMUNRVUZCTzBsQlExQXNWVUZCVlN4elFrRkJRVHRKUVVOV0xGVkJRVlVzYzBKQlFVRTdTVUZEVml4TFFVRkxMR2xDUVVGQk8wbEJRMHdzVlVGQlZTeHpRa0ZCUVR0SlFVTldMRk5CUVZNc2NVSkJRVUU3U1VGRFZDeFBRVUZQTEcxQ1FVRkJPME5CUTFJc1EwRkJRenRCUVVWR0xHdENRVUZsTEdWQlFXVXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCcGJtbDBJR1p5YjIwZ1hDSXVMMkZ3YVM5cGJtbDBYQ0pjYm1sdGNHOXlkQ0J5WlhGMVpYTjBJR1p5YjIwZ1hDSXVMMkZ3YVM5eVpYRjFaWE4wWENKY2JtbHRjRzl5ZENCMWNHeHZZV1JHYVd4bElHWnliMjBnWENJdUwyRndhUzkxY0d4dllXUkdhV3hsWENKY2JtbHRjRzl5ZENCelpYUlRaWE56YVc5dUlHWnliMjBnWENJdUwyRndhUzl6WlhSVFpYTnphVzl1WENKY2JtbHRjRzl5ZENCc2IyZHBiaUJtY205dElGd2lMaTloY0drdmJHOW5hVzVjSWx4dWFXMXdiM0owSUdkbGRGTmxjM05wYjI0Z1puSnZiU0JjSWk0dllYQnBMMmRsZEZObGMzTnBiMjVjSWx4dWFXMXdiM0owSUdkbGRFTnZibVpwWnlCbWNtOXRJRndpTGk5aGNHa3ZaMlYwUTI5dVptbG5YQ0pjYm1sdGNHOXlkQ0I3SUhkbFVtVnhkV1Z6ZENCOUlHWnliMjBnWENJdUwybHVkR1Z5Wm1GalpWd2lYRzVwYlhCdmNuUWdleUIyWlhKemFXOXVJSDBnWm5KdmJTQW5MaTkyWlhKemFXOXVKMXh1WEc1amIyNXpkQ0IzWlZKbGNYVmxjM1JQWW1wbFkzUTZJSGRsVW1WeGRXVnpkQ0E5SUh0Y2JpQWdhVzVwZEN4Y2JpQWdjbVZ4ZFdWemRDeGNiaUFnZFhCc2IyRmtSbWxzWlN4Y2JpQWdjMlYwVTJWemMybHZiaXhjYmlBZ2JHOW5hVzRzWEc0Z0lHZGxkRk5sYzNOcGIyNHNYRzRnSUdkbGRFTnZibVpwWnl4Y2JpQWdkbVZ5YzJsdmJseHVmVHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZDJWU1pYRjFaWE4wVDJKcVpXTjBPMXh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gZ2V0KG9iaikge1xuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHd4LmdldFN0b3JhZ2Uoe1xuICAgICAgICBrZXk6IG9iai5vcmlnaW5VcmwsXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgIGlmIChvYmouY2FjaGUgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICAodHlwZW9mIG9iai5jYWNoZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jYWNoZShyZXMuZGF0YSkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7IGlzQ2FjaGU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzZXQob2JqLCByZWFsRGF0YSkge1xuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChvYmouY2FjaGUgPT09IHRydWUgfHxcbiAgICAgICAgKHR5cGVvZiBvYmouY2FjaGUgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY2FjaGUocmVhbERhdGEpKSkge1xuICAgICAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAgICAgIGtleTogb2JqLm9yaWdpblVybCxcbiAgICAgICAgICAgIGRhdGE6IHJlYWxEYXRhXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBnZXQ6IGdldCxcbiAgICBzZXQ6IHNldFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyRmphR1ZOWVc1aFoyVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyMXZaSFZzWlM5allXTm9aVTFoYm1GblpYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGRlFTeFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRnRRanRKUVVNMVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1JVRkJSVHRSUVVOb1FpeFBRVUZQTzB0QlExWTdTVUZEUkN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4VFFVRlRPMUZCUTJ4Q0xFOUJRVThzV1VGQlJTeEhRVUZITzFsQlExSXNTVUZEU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFbEJRVWs3WjBKQlEyeENMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEZWQlFWVXNTVUZCU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVTXhSRHRuUWtGRFJTeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRTlCUVU4c1MwRkJTeXhWUVVGVkxFVkJRVVU3YjBKQlEyNURMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkRMRTlCUVU4c1JVRkJSU3hKUVVGSkxFVkJRVU1zUTBGQlF5eERRVUZCTzJsQ1FVTjZRenRoUVVOS08xbEJRMFFzU1VGQlJ5eFBRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRlJMRXRCUVVzc1ZVRkJWU3hGUVVGRk8yZENRVU51UXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03WVVGRGJFSTdVVUZEVEN4RFFVRkRPMHRCUTBvc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVVZFTEZOQlFWTXNSMEZCUnl4RFFVRkRMRWRCUVcxQ0xFVkJRVWNzVVVGQmVVSTdTVUZEZUVRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVWQlFVVTdVVUZEYUVJc1QwRkJUenRMUVVOV08wbEJRMFFzU1VGRFNTeEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrN1VVRkRiRUlzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4TFFVRkxMRXRCUVVzc1ZVRkJWU3hKUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkRNVVE3VVVGRFJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTFZc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eFRRVUZUTzFsQlEyeENMRWxCUVVrc1JVRkJSU3hSUVVGUk8xTkJRMnBDTEVOQlFVTXNRMEZCUVR0TFFVTk1PMEZCUTB3c1EwRkJRenRCUVVWRUxHdENRVUZsTzBsQlExZ3NSMEZCUnl4TFFVRkJPMGxCUTBnc1IwRkJSeXhMUVVGQk8wTkJRMDRzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUlIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpWEc1Y2JtWjFibU4wYVc5dUlHZGxkQ2h2WW1vNklFbFNaWEYxWlhOMFQzQjBhVzl1S1NCN1hHNGdJQ0FnYVdZZ0tDRnZZbW91YjNKcFoybHVWWEpzS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc0Z0lDQWdkM2d1WjJWMFUzUnZjbUZuWlNoN1hHNGdJQ0FnSUNBZ0lHdGxlVG9nYjJKcUxtOXlhV2RwYmxWeWJDeGNiaUFnSUNBZ0lDQWdjM1ZqWTJWemN5QW9jbVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IySnFMbU5oWTJobElEMDlQU0IwY25WbElIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLSFI1Y0dWdlppQnZZbW91WTJGamFHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJ2WW1vdVkyRmphR1VvY21WekxtUmhkR0VwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdlltb3VjM1ZqWTJWemN5QTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5aWFpNXpkV05qWlhOektISmxjeTVrWVhSaExDQjdhWE5EWVdOb1pUb2dkSEoxWlgwcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lvZEhsd1pXOW1JRzlpYWk1amIyMXdiR1YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IySnFMbU52YlhCc1pYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlLVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnpaWFFvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlBc0lISmxZV3hFWVhSaE9pQnpkSEpwYm1jZ2ZDQnZZbXBsWTNRcElIdGNiaUFnSUNCcFppQW9JVzlpYWk1dmNtbG5hVzVWY213cElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lHOWlhaTVqWVdOb1pTQTlQVDBnZEhKMVpTQjhmRnh1SUNBZ0lDQWdJQ0FvZEhsd1pXOW1JRzlpYWk1allXTm9aU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUc5aWFpNWpZV05vWlNoeVpXRnNSR0YwWVNrcFhHNGdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lIZDRMbk5sZEZOMGIzSmhaMlVvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhMlY1T2lCdlltb3ViM0pwWjJsdVZYSnNMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVG9nY21WaGJFUmhkR0ZjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElIdGNiaUFnSUNCblpYUXNYRzRnSUNBZ2MyVjBYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jYXRjaEhhbmRsZXIgPSB2b2lkIDA7XG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIEVycm9yV2l0aERhdGEgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFcnJvcldpdGhEYXRhLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEVycm9yV2l0aERhdGEobXNnLCBkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhID09PSB2b2lkIDApIHsgZGF0YSA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1zZykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGF0YSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIEVycm9yV2l0aERhdGE7XG59KEVycm9yKSk7XG5mdW5jdGlvbiBjYXRjaEhhbmRsZXIoZSwgb2JqLCByZWplY3QpIHtcbiAgICB2YXIgdHlwZSA9IGUudHlwZSwgcmVzID0gZS5yZXM7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25maWdfMS5kZWZhdWx0LmVycm9yQ2FsbGJhY2sob2JqLCByZXMpO1xuICAgIH1cbiAgICBpZiAob2JqLmNhdGNoRXJyb3IpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdodHRwLWVycm9yJykge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IocmVzLnN0YXR1c0NvZGUudG9TdHJpbmcoKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdsb2dpYy1lcnJvcicpIHtcbiAgICAgICAgICAgIHZhciBtc2cgPSBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmdldEVycm9yTXNnKHJlcyk7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcldpdGhEYXRhKG1zZy5jb250ZW50LCByZXMuZGF0YSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzeXN0ZW0tZXJyb3InKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihyZXMuZXJyTXNnKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2h0dHAtZXJyb3InIHx8IHR5cGUgPT09ICdsb2dpYy1lcnJvcicpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmxvZ2ljRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzeXN0ZW0tZXJyb3InKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5zeXN0ZW1FcnJvcihvYmosIHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5jYXRjaEhhbmRsZXIgPSBjYXRjaEhhbmRsZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMkYwWTJoSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWpZWFJqYUVoaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenRCUVVOQkxDdERRVUV3UXp0QlFVTXhReXd3UTBGQmIwTTdRVUZGY0VNN1NVRkJORUlzYVVOQlFVczdTVUZITjBJc2RVSkJRVmtzUjBGQlZ5eEZRVUZGTEVsQlFXTTdVVUZCWkN4eFFrRkJRU3hGUVVGQkxGTkJRV003VVVGQmRrTXNXVUZEU1N4clFrRkJUU3hIUVVGSExFTkJRVU1zVTBGRllqdFJRVVJITEV0QlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE96dEpRVU55UWl4RFFVRkRPMGxCUTB3c2IwSkJRVU03UVVGQlJDeERRVUZETEVGQlVFUXNRMEZCTkVJc1MwRkJTeXhIUVU5b1F6dEJRVVZFTEZOQlFWTXNXVUZCV1N4RFFVRkRMRU5CUVdVc1JVRkJSU3hIUVVGMVF5eEZRVUZGTEUxQlFUaENPMGxCUTJ4SExFbEJRVUVzU1VGQlNTeEhRVUZWTEVOQlFVTXNTMEZCV0N4RlFVRkZMRWRCUVVjc1IwRkJTeXhEUVVGRExFbEJRVTRzUTBGQlR6dEpRVWQ0UWl4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eGhRVUZoTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUXpWRExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dExRVU5zUXp0SlFVVkVMRWxCUVVrc1IwRkJSeXhEUVVGRExGVkJRVlVzUlVGQlJUdFJRVU5vUWl4SlFVRkpMRWxCUVVrc1MwRkJTeXhaUVVGWkxFVkJRVVU3V1VGRGRrSXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVVVzUjBGQmMwUXNRMEZCUXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF6TkhPMkZCUVUwc1NVRkJTU3hKUVVGSkxFdEJRVXNzWVVGQllTeEZRVUZGTzFsQlF5OUNMRWxCUVVrc1IwRkJSeXhIUVVGSExITkNRVUZaTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVhGRUxFTkJRVU1zUTBGQlF6dFpRVU14Uml4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RlFVRkhMRWRCUVhORUxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTXZSenRoUVVGTkxFbEJRVWtzU1VGQlNTeExRVUZMTEdOQlFXTXNSVUZCUlR0WlFVTm9ReXhQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU40UXp0aFFVRk5PMWxCUlVnc1QwRkJUeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEY0VJN1MwRkRTanRUUVVGTk8xRkJRMGdzU1VGQlNTeEpRVUZKTEV0QlFVc3NXVUZCV1N4SlFVRkpMRWxCUVVrc1MwRkJTeXhoUVVGaExFVkJRVVU3V1VGRGFrUXNUMEZCVHl4elFrRkJXU3hEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCY1VRc1EwRkJReXhEUVVGRE8xTkJRemxHTzJGQlFVMHNTVUZCUnl4SlFVRkpMRXRCUVVzc1kwRkJZeXhGUVVGRk8xbEJReTlDTEU5QlFVOHNjMEpCUVZrc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFUaERMRU5CUVVNc1EwRkJRenRUUVVONFJqdGhRVUZOTzFsQlJVZ3NUMEZCVHl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRGNFSTdTMEZEU2p0QlFVTk1MRU5CUVVNN1FVRkZVU3h2UTBGQldTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUxDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpd2dTVVZ5Y205eVQySnFaV04wSUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lPMXh1YVcxd2IzSjBJR1Z5Y205eVNHRnVaR3hsY2lCbWNtOXRJRndpTGk5bGNuSnZja2hoYm1Sc1pYSmNJanRjYm1sdGNHOXlkQ0JqYjI1bWFXY2dabkp2YlNBbkxpNHZjM1J2Y21VdlkyOXVabWxuSjF4dVhHNWpiR0Z6Y3lCRmNuSnZjbGRwZEdoRVlYUmhJR1Y0ZEdWdVpITWdSWEp5YjNJZ2UxeHVJQ0FnSUdSaGRHRTZJR0Z1ZVR0Y2JseHVJQ0FnSUdOdmJuTjBjblZqZEc5eUtHMXpaem9nYzNSeWFXNW5MQ0JrWVhSaE9pQmhibmtnUFNCN2ZTa2dlMXh1SUNBZ0lDQWdJQ0J6ZFhCbGNpaHRjMmNwTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbVJoZEdFZ1BTQmtZWFJoTzF4dUlDQWdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdZMkYwWTJoSVlXNWtiR1Z5S0dVNklFbEZjbkp2Y2s5aWFtVmpkQ3dnYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlCOElFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUxDQnlaV3BsWTNRNklDaHlaV0Z6YjI0L09pQmhibmtwSUQwK0lIWnZhV1FwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJSFI1Y0dVc0lISmxjeUI5SUQwZ1pUdGNibHh1SUNBZ0lDOHZJT1dtZ3VhZW5PYWNpZW1GamVlOXJ1ZTduK1M0Z09tVW1laXZyK1dibnVpd2crV0h2ZWFWc08rOGpPV0ltZWFKcCtpaGpPV3VnMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtVnljbTl5UTJGc2JHSmhZMnNnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCamIyNW1hV2N1WlhKeWIzSkRZV3hzWW1GamF5aHZZbW9zSUhKbGN5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzlpYWk1allYUmphRVZ5Y205eUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxJRDA5UFNBbmFIUjBjQzFsY25KdmNpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvYm1WM0lFVnljbTl5S0NoeVpYTWdZWE1nVjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VW1WeGRXVnpkRk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENrdWMzUmhkSFZ6UTI5a1pTNTBiMU4wY21sdVp5Z3BLU2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0oyeHZaMmxqTFdWeWNtOXlKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiR1YwSUcxelp5QTlJR1Z5Y205eVNHRnVaR3hsY2k1blpYUkZjbkp2Y2sxelp5aHlaWE1nWVhNZ1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVVtVnhkV1Z6ZEZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLRzVsZHlCRmNuSnZjbGRwZEdoRVlYUmhLRzF6Wnk1amIyNTBaVzUwTENBb2NtVnpJR0Z6SUZkbFkyaGhkRTFwYm1sd2NtOW5jbUZ0TGxKbGNYVmxjM1JUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRcExtUmhkR0VwS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5jM2x6ZEdWdExXVnljbTl5SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYW1WamRDaHVaWGNnUlhKeWIzSW9jbVZ6TG1WeWNrMXpaeWtwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNVlXMjVMdVdhblBwbEpub3I2OWNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9aU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaU0E5UFQwZ0oyaDBkSEF0WlhKeWIzSW5JSHg4SUhSNWNHVWdQVDA5SUNkc2IyZHBZeTFsY25KdmNpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbGNuSnZja2hoYm1Sc1pYSXViRzluYVdORmNuSnZjaWh2WW1vc0lISmxjeUJoY3lCWFpXTm9ZWFJOYVc1cGNISnZaM0poYlM1U1pYRjFaWE4wVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1LSFI1Y0dVZ1BUMDlJQ2R6ZVhOMFpXMHRaWEp5YjNJbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWlhKeWIzSklZVzVrYkdWeUxuTjVjM1JsYlVWeWNtOXlLRzlpYWl3Z2NtVnpJR0Z6SUZkbFkyaGhkRTFwYm1sd2NtOW5jbUZ0TGtkbGJtVnlZV3hEWVd4c1ltRmphMUpsYzNWc2RDazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RGxoYmJrdTVacWMrbVVtZWl2cjF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENobEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNibjFjYmx4dVpYaHdiM0owSUhzZ1kyRjBZMmhJWVc1a2JHVnlJSDBpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi4vYXBpL3JlcXVlc3RcIik7XG5mdW5jdGlvbiBzdGFydChvYmopIHtcbiAgICBvYmouX3JlcG9ydFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xufVxuZnVuY3Rpb24gZW5kKG9iaikge1xuICAgIG9iai5fcmVwb3J0RW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGlmIChvYmoucmVwb3J0ICYmIG9iai5fcmVwb3J0U3RhcnRUaW1lKSB7XG4gICAgICAgIHJlcG9ydChvYmoucmVwb3J0LCBvYmouX3JlcG9ydFN0YXJ0VGltZSwgb2JqLl9yZXBvcnRFbmRUaW1lKTtcbiAgICB9XG59XG5mdW5jdGlvbiByZXBvcnQobmFtZSwgc3RhcnRUaW1lLCBlbmRUaW1lKSB7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnJlcG9ydENHSSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQucmVwb3J0Q0dJKG5hbWUsIHN0YXJ0VGltZSwgZW5kVGltZSwgcmVxdWVzdF8xLmRlZmF1bHQpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgZW5kOiBlbmQsXG4gICAgcmVwb3J0OiByZXBvcnRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5dGIyUjFiR1V2WkhWeVlYUnBiMjVTWlhCdmNuUmxjaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREJEUVVGdlF6dEJRVU53UXl3d1EwRkJiME03UVVGSGNFTXNVMEZCVXl4TFFVRkxMRU5CUVVNc1IwRkJkVU03U1VGRGJFUXNSMEZCUnl4RFFVRkRMR2RDUVVGblFpeEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGFFUXNRMEZCUXp0QlFVVkVMRk5CUVZNc1IwRkJSeXhEUVVGRExFZEJRWFZETzBsQlEyaEVMRWRCUVVjc1EwRkJReXhqUVVGakxFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVNeFF5eEpRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExHZENRVUZuUWl4RlFVRkZPMUZCUTI1RExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCWjBJc1JVRkJSU3hIUVVGSExFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1IwRkJSeXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETzB0QlF6RkZPMEZCUTB3c1EwRkJRenRCUVVWRUxGTkJRVk1zVFVGQlRTeERRVUZETEVsQlFWa3NSVUZCUlN4VFFVRnBRaXhGUVVGRkxFOUJRV1U3U1VGRE5VUXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eExRVUZMTEZWQlFWVXNSVUZCUlR0UlFVTjRReXhuUWtGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1UwRkJVeXhGUVVGRkxFOUJRVThzUlVGQlJTeHBRa0ZCVHl4RFFVRkRMRU5CUVVNN1MwRkRka1E3UVVGRFRDeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hMUVVGTExFOUJRVUU3U1VGRFRDeEhRVUZITEV0QlFVRTdTVUZEU0N4TlFVRk5MRkZCUVVFN1EwRkRWQ3hEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdjbVZ4ZFdWemRDQm1jbTl0SUNjdUxpOWhjR2t2Y21WeGRXVnpkQ2RjYm1sdGNHOXlkQ0I3SUVsU1pYRjFaWE4wVDNCMGFXOXVMQ0JKVlhCc2IyRmtSbWxzWlU5d2RHbHZiaUI5SUdaeWIyMGdYQ0l1TGk5cGJuUmxjbVpoWTJWY0lqdGNibHh1Wm5WdVkzUnBiMjRnYzNSaGNuUW9iMkpxT2lCSlVtVnhkV1Z6ZEU5d2RHbHZiaUI4SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1S1NCN1hHNGdJQ0FnYjJKcUxsOXlaWEJ2Y25SVGRHRnlkRlJwYldVZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjYm4xY2JseHVablZ1WTNScGIyNGdaVzVrS0c5aWFqb2dTVkpsY1hWbGMzUlBjSFJwYjI0Z2ZDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpa2dlMXh1SUNBZ0lHOWlhaTVmY21Wd2IzSjBSVzVrVkdsdFpTQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJR2xtS0c5aWFpNXlaWEJ2Y25RZ0ppWWdiMkpxTGw5eVpYQnZjblJUZEdGeWRGUnBiV1VwSUh0Y2JpQWdJQ0FnSUNBZ2NtVndiM0owS0c5aWFpNXlaWEJ2Y25RZ1lYTWdjM1J5YVc1bkxDQnZZbW91WDNKbGNHOXlkRk4wWVhKMFZHbHRaU3dnYjJKcUxsOXlaWEJ2Y25SRmJtUlVhVzFsS1R0Y2JpQWdJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsY0c5eWRDaHVZVzFsT2lCemRISnBibWNzSUhOMFlYSjBWR2x0WlRvZ2JuVnRZbVZ5TENCbGJtUlVhVzFsT2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTV5WlhCdmNuUkRSMGtnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCamIyNW1hV2N1Y21Wd2IzSjBRMGRKS0c1aGJXVXNJSE4wWVhKMFZHbHRaU3dnWlc1a1ZHbHRaU3dnY21WeGRXVnpkQ2s3WEc0Z0lDQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCN1hHNGdJQ0FnYzNSaGNuUXNYRzRnSUNBZ1pXNWtMRnh1SUNBZ0lISmxjRzl5ZEZ4dWZWeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHJlcXVlc3RfMSA9IHJlcXVpcmUoXCIuLi9hcGkvcmVxdWVzdFwiKTtcbmZ1bmN0aW9uIHN5c3RlbUVycm9yKG9iaiwgcmVzKSB7XG4gICAgaWYgKHR5cGVvZiBvYmouZmFpbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iai5mYWlsKHJlcyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnN5c3RlbUVycm9ySGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25maWdfMS5kZWZhdWx0LnN5c3RlbUVycm9ySGFuZGxlcihyZXMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHJldHJ5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVxdWVzdF8xLmRlZmF1bHQob2JqKS50aGVuKG9iai5fcmVzb2x2ZSkuY2F0Y2gob2JqLl9yZWplY3QpOyB9O1xuICAgICAgICBkb0Vycm9yKFwiXCIsIFwiXCIsIHJldHJ5KTtcbiAgICB9XG59XG5mdW5jdGlvbiBsb2dpY0Vycm9yKG9iaiwgcmVzKSB7XG4gICAgaWYgKHR5cGVvZiBvYmouZmFpbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iai5mYWlsKHJlcyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9ySGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25maWdfMS5kZWZhdWx0LmVycm9ySGFuZGxlcihyZXMuZGF0YSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgX2EgPSBnZXRFcnJvck1zZyhyZXMpLCB0aXRsZSA9IF9hLnRpdGxlLCBjb250ZW50ID0gX2EuY29udGVudDtcbiAgICAgICAgdmFyIHJldHJ5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVxdWVzdF8xLmRlZmF1bHQob2JqKS50aGVuKG9iai5fcmVzb2x2ZSkuY2F0Y2gob2JqLl9yZWplY3QpOyB9O1xuICAgICAgICBkb0Vycm9yKHRpdGxlLCBjb250ZW50LCByZXRyeSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0RXJyb3JNc2cocmVzKSB7XG4gICAgdmFyIHRpdGxlID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aXRsZSA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZShyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRpdGxlID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlO1xuICAgIH1cbiAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb250ZW50ID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvckNvbnRlbnQocmVzLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGNvbnRlbnQgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudDtcbiAgICB9XG4gICAgcmV0dXJuIHsgdGl0bGU6IHRpdGxlLCBjb250ZW50OiBjb250ZW50IH07XG59XG5mdW5jdGlvbiBkb0Vycm9yKHRpdGxlLCBjb250ZW50LCByZXRyeSkge1xuICAgIHZhciBzaG93RXJyb3JSZXRyeUJ0biA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JSZXRyeUJ0biAmJiB0eXBlb2YgcmV0cnkgPT09IFwiZnVuY3Rpb25cIjtcbiAgICB3eC5zaG93TW9kYWwoT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIHRpdGxlOiB0aXRsZSB8fCBcIlwiLFxuICAgICAgICBjb250ZW50OiBjb250ZW50IHx8IFwi572R57uc5oiW5pyN5Yqh5byC5bi477yM6K+356iN5ZCO6YeN6K+VXCIsXG4gICAgfSwgIXNob3dFcnJvclJldHJ5QnRuID8ge1xuICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZVxuICAgIH0gOiB7XG4gICAgICAgIHNob3dDYW5jZWw6IHRydWUsXG4gICAgICAgIGNvbmZpcm1UZXh0OiAn6YeN6K+VJyxcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgaWYgKHJlcy5jb25maXJtICYmIHR5cGVvZiByZXRyeSA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHJldHJ5KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgc3lzdGVtRXJyb3I6IHN5c3RlbUVycm9yLFxuICAgIGxvZ2ljRXJyb3I6IGxvZ2ljRXJyb3IsXG4gICAgZG9FcnJvcjogZG9FcnJvcixcbiAgICBnZXRFcnJvck1zZzogZ2V0RXJyb3JNc2dcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laWEp5YjNKSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWxjbkp2Y2toaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZEY0VNc01FTkJRWEZETzBGQlIzSkRMRk5CUVZNc1YwRkJWeXhEUVVGRExFZEJRWFZETEVWQlFVVXNSMEZCTkVNN1NVRkRkRWNzU1VGQlNTeFBRVUZQTEVkQlFVY3NRMEZCUXl4SlFVRkpMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xRkJRMmhETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRGFrSTdVMEZCVFN4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eHJRa0ZCYTBJc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRGVFUXNaMEpCUVUwc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOc1F6dFRRVUZOTzFGQlEwZ3NTVUZCVFN4TFFVRkxMRWRCUVVjc1kwRkJUU3hQUVVGQkxHbENRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZzUkN4RFFVRnJSQ3hEUVVGRE8xRkJRM1pGTEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzB0QlF6RkNPMEZCUTB3c1EwRkJRenRCUVVWRUxGTkJRVk1zVlVGQlZTeERRVUZETEVkQlFYVkRMRVZCUVVVc1IwRkJkVWM3U1VGRGFFc3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEyaERMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEYWtJN1UwRkJUU3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4WlFVRlpMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xRkJRMnhFTEdkQ1FVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnFRenRUUVVGTk8xRkJRMGNzU1VGQlFTeExRVUZ0UWl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRV3hETEV0QlFVc3NWMEZCUVN4RlFVRkZMRTlCUVU4c1lVRkJiMElzUTBGQlF6dFJRVU14UXl4SlFVRk5MRXRCUVVzc1IwRkJSeXhqUVVGTkxFOUJRVUVzYVVKQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFXeEVMRU5CUVd0RUxFTkJRVU03VVVGRGRrVXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEYkVNN1FVRkRUQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eFhRVUZYTEVOQlFVTXNSMEZCZFVjN1NVRkRlRWdzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUTJZc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNWVUZCVlN4TFFVRkxMRlZCUVZVc1JVRkJSVHRSUVVONlF5eEpRVUZKTzFsQlEwRXNTMEZCU3l4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRVHRUUVVOMFF6dFJRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMU5CUTFnN1MwRkRTanRUUVVGTkxFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1MwRkJTeXhSUVVGUkxFVkJRVVU3VVVGRE9VTXNTMEZCU3l4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETzB0QlF6ZENPMGxCUlVRc1NVRkJTU3hQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEycENMRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZsQlFWa3NTMEZCU3l4VlFVRlZMRVZCUVVVN1VVRkRNME1zU1VGQlNUdFpRVU5CTEU5QlFVOHNSMEZCUnl4blFrRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVFN1UwRkRNVU03VVVGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0VFFVTllPMHRCUTBvN1UwRkJUU3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4WlFVRlpMRXRCUVVzc1VVRkJVU3hGUVVGRk8xRkJRMmhFTEU5QlFVOHNSMEZCUnl4blFrRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF6dExRVU5xUXp0SlFVVkVMRTlCUVU4c1JVRkJReXhMUVVGTExFOUJRVUVzUlVGQlJTeFBRVUZQTEZOQlFVRXNSVUZCUXl4RFFVRkJPMEZCUXpOQ0xFTkJRVU03UVVGSFJDeFRRVUZUTEU5QlFVOHNRMEZCUXl4TFFVRmhMRVZCUVVVc1QwRkJaU3hGUVVGRkxFdEJRV2xDTzBsQlJUbEVMRWxCUVUwc2FVSkJRV2xDTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhoUVVGaExFbEJRVWtzVDBGQlR5eExRVUZMTEV0QlFVc3NWVUZCVlN4RFFVRkRPMGxCUXpsRkxFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOMlFpeExRVUZMTEVWQlFVVXNTMEZCU3l4SlFVRkpMRVZCUVVVN1VVRkRiRUlzVDBGQlR5eEZRVUZGTEU5QlFVOHNTVUZCU1N4bFFVRmxPMHRCUTNSRExFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNFSXNWVUZCVlN4RlFVRkZMRXRCUVVzN1MwRkRjRUlzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEUVN4VlFVRlZMRVZCUVVVc1NVRkJTVHRSUVVOb1FpeFhRVUZYTEVWQlFVVXNTVUZCU1R0UlFVTnFRaXhQUVVGUExFVkJRVkFzVlVGQlVTeEhRVUZ4UkR0WlFVTjZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVsQlFVa3NUMEZCVHl4TFFVRkxMRXRCUVVzc1ZVRkJWVHRuUWtGQlJTeExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTTFSQ3hEUVVGRE8wdEJRMG9zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEVWl4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeFhRVUZYTEdGQlFVRTdTVUZEV0N4VlFVRlZMRmxCUVVFN1NVRkRWaXhQUVVGUExGTkJRVUU3U1VGRFVDeFhRVUZYTEdGQlFVRTdRMEZEWkN4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnY21WeGRXVnpkQ0JtY205dElDY3VMaTloY0drdmNtVnhkV1Z6ZENjN1hHNXBiWEJ2Y25RZ2V5QkpVbVZ4ZFdWemRFOXdkR2x2Yml3Z1NWVndiRzloWkVacGJHVlBjSFJwYjI0Z2ZTQm1jbTl0SUZ3aUxpNHZhVzUwWlhKbVlXTmxYQ0k3WEc1Y2JtWjFibU4wYVc5dUlITjVjM1JsYlVWeWNtOXlLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRnZkNCSlZYQnNiMkZrUm1sc1pVOXdkR2x2Yml3Z2NtVnpPaUJYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVIWlc1bGNtRnNRMkZzYkdKaFkydFNaWE4xYkhRcElIdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHOWlhaTVtWVdsc0lEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdiMkpxTG1aaGFXd29jbVZ6S1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VjM2x6ZEdWdFJYSnliM0pJWVc1a2JHVnlJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJR052Ym1acFp5NXplWE4wWlcxRmNuSnZja2hoYm1Sc1pYSW9jbVZ6S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlaWFJ5ZVNBOUlDZ3BJRDArSUhKbGNYVmxjM1FvYjJKcUtTNTBhR1Z1S0c5aWFpNWZjbVZ6YjJ4MlpTa3VZMkYwWTJnb2IySnFMbDl5WldwbFkzUXBPMXh1SUNBZ0lDQWdJQ0JrYjBWeWNtOXlLRndpWENJc0lGd2lYQ0lzSUhKbGRISjVLVHRjYmlBZ0lDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlHeHZaMmxqUlhKeWIzSW9iMkpxT2lCSlVtVnhkV1Z6ZEU5d2RHbHZiaUI4SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1TENCeVpYTTZJRmRsWTJoaGRFMXBibWx3Y205bmNtRnRMbEpsY1hWbGMzUlRkV05qWlhOelEyRnNiR0poWTJ0U1pYTjFiSFFnZkNCWFpXTm9ZWFJOYVc1cGNISnZaM0poYlM1VmNHeHZZV1JHYVd4bFUzVmpZMlZ6YzBOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdVptRnBiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNW1ZV2xzS0hKbGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1WeWNtOXlTR0Z1Wkd4bGNpQTlQVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjVtYVdjdVpYSnliM0pJWVc1a2JHVnlLSEpsY3k1a1lYUmhLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCN2RHbDBiR1VzSUdOdmJuUmxiblI5SUQwZ1oyVjBSWEp5YjNKTmMyY29jbVZ6S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY21WMGNua2dQU0FvS1NBOVBpQnlaWEYxWlhOMEtHOWlhaWt1ZEdobGJpaHZZbW91WDNKbGMyOXNkbVVwTG1OaGRHTm9LRzlpYWk1ZmNtVnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ1pHOUZjbkp2Y2loMGFYUnNaU3dnWTI5dWRHVnVkQ3dnY21WMGNua3BPMXh1SUNBZ0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z1oyVjBSWEp5YjNKTmMyY29jbVZ6T2lCWFpXTm9ZWFJOYVc1cGNISnZaM0poYlM1U1pYRjFaWE4wVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MElId2dWMlZqYUdGMFRXbHVhWEJ5YjJkeVlXMHVWWEJzYjJGa1JtbHNaVk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENrZ2UxeHVJQ0FnSUd4bGRDQjBhWFJzWlNBOUlGd2lYQ0k3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VaWEp5YjNKVWFYUnNaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFYUnNaU0E5SUdOdmJtWnBaeTVsY25KdmNsUnBkR3hsS0hKbGN5NWtZWFJoS1Z4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmpiMjVtYVdjdVpYSnliM0pVYVhSc1pTQTlQVDBnWENKemRISnBibWRjSWlrZ2UxeHVJQ0FnSUNBZ0lDQjBhWFJzWlNBOUlHTnZibVpwWnk1bGNuSnZjbFJwZEd4bE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUd4bGRDQmpiMjUwWlc1MElEMGdYQ0pjSWp0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVsY25KdmNrTnZiblJsYm5RZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdWdWRDQTlJR052Ym1acFp5NWxjbkp2Y2tOdmJuUmxiblFvY21WekxtUmhkR0VwWEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1bGNuSnZja052Ym5SbGJuUWdQVDA5SUZ3aWMzUnlhVzVuWENJcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdWdWRDQTlJR052Ym1acFp5NWxjbkp2Y2tOdmJuUmxiblE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIdDBhWFJzWlN3Z1kyOXVkR1Z1ZEgxY2JuMWNibHh1THk4ZzZidVk2SzZrNlpTWjZLK3Y1YVNFNTVDRzVwaXY1Ynk1NTZxWFhHNW1kVzVqZEdsdmJpQmtiMFZ5Y205eUtIUnBkR3hsT2lCemRISnBibWNzSUdOdmJuUmxiblE2SUhOMGNtbHVaeXdnY21WMGNuay9PaUFvS1NBOVBpQmhibmtwSUh0Y2JpQWdJQ0F2THlEbW1LL2xrS2JtbUw3bnBMcnBoNDNvcjVYbWpJbnBrcTVjYmlBZ0lDQmpiMjV6ZENCemFHOTNSWEp5YjNKU1pYUnllVUowYmlBOUlHTnZibVpwWnk1bGNuSnZjbEpsZEhKNVFuUnVJQ1ltSUhSNWNHVnZaaUJ5WlhSeWVTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aU8xeHVJQ0FnSUhkNExuTm9iM2ROYjJSaGJDaFBZbXBsWTNRdVlYTnphV2R1S0h0Y2JpQWdJQ0FnSUNBZ2RHbDBiR1U2SUhScGRHeGxJSHg4SUZ3aVhDSXNYRzRnSUNBZ0lDQWdJR052Ym5SbGJuUTZJR052Ym5SbGJuUWdmSHdnWENMbnZaSG51NXptaUpibW5JM2xpcUhsdklMbHVManZ2SXpvcjdmbnFJM2xrSTdwaDQzb3I1VmNJaXhjYmlBZ0lDQjlMQ0FoYzJodmQwVnljbTl5VW1WMGNubENkRzRnUHlCN1hHNGdJQ0FnSUNBZ0lITm9iM2REWVc1alpXdzZJR1poYkhObFhHNGdJQ0FnZlNBNklIdGNiaUFnSUNBZ0lDQWdjMmh2ZDBOaGJtTmxiRG9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdZMjl1Wm1seWJWUmxlSFE2SUNmcGg0M29yNVVuTEZ4dUlDQWdJQ0FnSUNCemRXTmpaWE56S0hKbGN6b2dWMlZqYUdGMFRXbHVhWEJ5YjJkeVlXMHVVMmh2ZDAxdlpHRnNVM1ZqWTJWemMwTmhiR3hpWVdOclVtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVnpMbU52Ym1acGNtMGdKaVlnZEhsd1pXOW1JSEpsZEhKNUlEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElISmxkSEo1S0NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUh0Y2JpQWdJQ0J6ZVhOMFpXMUZjbkp2Y2l4Y2JpQWdJQ0JzYjJkcFkwVnljbTl5TEZ4dUlDQWdJR1J2UlhKeWIzSXNYRzRnSUNBZ1oyVjBSWEp5YjNKTmMyZGNibjFjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcbmZ1bmN0aW9uIGdldChvYmopIHtcbiAgICBpZiAoIShjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai51cmxdIHx8IChvYmoub3JpZ2luVXJsICYmIGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLm9yaWdpblVybF0pKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoudXJsXSB8fCAob2JqLm9yaWdpblVybCA/IGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLm9yaWdpblVybF0gOiAnJyk7XG4gICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIHZhciByZXMgPSB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMFxuICAgIH07XG4gICAgbG9hZGluZ18xLmRlZmF1bHQuaGlkZSgpO1xuICAgIHJldHVybiByZXM7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgZ2V0OiBnZXRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liVzlqYTAxaGJtRm5aWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZiVzlrZFd4bEwyMXZZMnROWVc1aFoyVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlFVRXNNRU5CUVc5RE8wRkJRM0JETERKRFFVRnhRenRCUVVkeVF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRjFRenRKUVVWb1JDeEpRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkZha1lzVDBGQlR5eExRVUZMTEVOQlFVTTdTMEZEYUVJN1NVRkZSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJSVGRHTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFF5eEpRVUZOTEVkQlFVY3NSMEZCUnp0UlFVTlNMRWxCUVVrc1RVRkJRVHRSUVVOS0xGVkJRVlVzUlVGQlJTeEhRVUZITzB0QlEyeENMRU5CUVVNN1NVRkZSaXhwUWtGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMGxCUTJZc1QwRkJUeXhIUVVGSExFTkJRVUU3UVVGRFpDeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hIUVVGSExFdEJRVUU3UTBGRFRpeERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhHNXBiWEJ2Y25RZ2JHOWhaR2x1WnlCbWNtOXRJQ2N1TGk5MWRHbHNMMnh2WVdScGJtY25YRzVwYlhCdmNuUWdleUJKVW1WeGRXVnpkRTl3ZEdsdmJpd2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNGdmU0JtY205dElGd2lMaTR2YVc1MFpYSm1ZV05sWENKY2JseHVablZ1WTNScGIyNGdaMlYwS0c5aWFqb2dTVkpsY1hWbGMzUlBjSFJwYjI0Z2ZDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpazZJR0Z1ZVNCN1hHNWNiaUFnSUNCcFppZ2hLR052Ym1acFp5NXRiMk5yU25OdmJsdHZZbW91ZFhKc1hTQjhmQ0FvYjJKcUxtOXlhV2RwYmxWeWJDQW1KaUJqYjI1bWFXY3ViVzlqYTBwemIyNWJiMkpxTG05eWFXZHBibFZ5YkYwcEtTa2dlMXh1SUNBZ0lDQWdJQ0F2THlCdGIyTnJJT2F5b2VhY2llV3Z1ZVc2bE9hT3BlV1BvK2VhaE9hVnNPYU5ybHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHUmhkR0VnUFNCamIyNW1hV2N1Ylc5amEwcHpiMjViYjJKcUxuVnliRjBnZkh3Z0tHOWlhaTV2Y21sbmFXNVZjbXdnUHlCamIyNW1hV2N1Ylc5amEwcHpiMjViYjJKcUxtOXlhV2RwYmxWeWJGMGdPaUFuSnlrN1hHNGdJQ0FnTHk4Z1pHVmxjQ0JqYjNCNVhHNGdJQ0FnWkdGMFlTQTlJRXBUVDA0dWNHRnljMlVvU2xOUFRpNXpkSEpwYm1kcFpua29aR0YwWVNrcE8xeHVJQ0FnSUdOdmJuTjBJSEpsY3lBOUlIdGNiaUFnSUNBZ0lDQWdaR0YwWVN4Y2JpQWdJQ0FnSUNBZ2MzUmhkSFZ6UTI5a1pUb2dNakF3WEc0Z0lDQWdmVHRjYmx4dUlDQWdJR3h2WVdScGJtY3VhR2xrWlNncE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhOY2JuMWNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdlMXh1SUNBZ0lHZGxkRnh1ZlZ4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xudmFyIG1vY2tNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9tb2NrTWFuYWdlclwiKTtcbnZhciBjYWNoZU1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL2NhY2hlTWFuYWdlclwiKTtcbnZhciBzZXNzaW9uTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vc2Vzc2lvbk1hbmFnZXJcIik7XG52YXIgcmVzcG9uc2VIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXNwb25zZUhhbmRsZXJcIik7XG52YXIgZHVyYXRpb25SZXBvcnRlcl8xID0gcmVxdWlyZShcIi4vZHVyYXRpb25SZXBvcnRlclwiKTtcbnZhciB1cmxfMSA9IHJlcXVpcmUoXCIuLi91dGlsL3VybFwiKTtcbnZhciBjYXRjaEhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2NhdGNoSGFuZGxlclwiKTtcbmZ1bmN0aW9uIGZvcm1hdChvcmlnaW5VcmwpIHtcbiAgICBpZiAob3JpZ2luVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICByZXR1cm4gb3JpZ2luVXJsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHVybFBlcmZpeCA9IGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4O1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHVybFBlcmZpeCA9IGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVybFBlcmZpeCArIG9yaWdpblVybDtcbiAgICB9XG59XG5mdW5jdGlvbiBwcmVEbyhvYmosIHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmICh0eXBlb2Ygb2JqLnJlTG9naW5Db3VudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBvYmoucmVMb2dpbkNvdW50ID0gMDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQrKztcbiAgICB9XG4gICAgaWYgKG9iai5yZUxvZ2luQ291bnQgPT09IDAgJiYgdHlwZW9mIG9iai5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmJlZm9yZVNlbmQoKTtcbiAgICB9XG4gICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICBsb2FkaW5nXzEuZGVmYXVsdC5zaG93KG9iai5zaG93TG9hZGluZyk7XG4gICAgfVxuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICBvYmoub3JpZ2luVXJsID0gb2JqLnVybDtcbiAgICAgICAgb2JqLnVybCA9IGZvcm1hdChvYmoudXJsKTtcbiAgICB9XG4gICAgb2JqLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICBvYmouX3JlamVjdCA9IHJlamVjdDtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gaW5pdGlhbGl6ZVJlcXVlc3RPYmoob2JqKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIW9iai5kYXRhKSB7XG4gICAgICAgIG9iai5kYXRhID0ge307XG4gICAgfVxuICAgIG9iai5oZWFkZXIgPSBvYmouaGVhZGVyID8gb2JqLmhlYWRlciA6IHt9O1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIGhlYWRlciA9IGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyKCk7XG4gICAgICAgIGlmICh0eXBlb2YgaGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgb2JqLmhlYWRlciA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmouaGVhZGVyKSwgaGVhZGVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIG9iai5oZWFkZXIgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JqLmhlYWRlciksIGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyKTtcbiAgICB9XG4gICAgaWYgKG9iai5vcmlnaW5VcmwgIT09IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi51cmwgJiYgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgIG9iai5kYXRhID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5kYXRhKSwgKF9hID0ge30sIF9hW2NvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbk5hbWVdID0gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uLCBfYSkpO1xuICAgIH1cbiAgICB2YXIgZ2QgPSBnZXRHbG9iYWxEYXRhKCk7XG4gICAgb2JqLmRhdGEgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZ2QpLCBvYmouZGF0YSk7XG4gICAgb2JqLm1ldGhvZCA9IG9iai5tZXRob2QgfHwgJ0dFVCc7XG4gICAgb2JqLmRhdGFUeXBlID0gb2JqLmRhdGFUeXBlIHx8ICdqc29uJztcbiAgICBpZiAoIWNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RVc2VRdWVyeVN0cmluZyAmJiBvYmoubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgICAgIG9iai51cmwgPSB1cmxfMS5kZWZhdWx0LnNldFBhcmFtcyhvYmoudXJsLCAoX2IgPSB7fSwgX2JbY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZV0gPSBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24sIF9iKSk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIGdkKTtcbiAgICB9XG4gICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gaW5pdGlhbGl6ZVVwbG9hZEZpbGVPYmoob2JqKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIW9iai5mb3JtRGF0YSkge1xuICAgICAgICBvYmouZm9ybURhdGEgPSB7fTtcbiAgICB9XG4gICAgb2JqLmhlYWRlciA9IG9iai5oZWFkZXIgPyBvYmouaGVhZGVyIDoge307XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgaGVhZGVyID0gY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBvYmouaGVhZGVyID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5oZWFkZXIpLCBoZWFkZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgb2JqLmhlYWRlciA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmouaGVhZGVyKSwgY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIpO1xuICAgIH1cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgb2JqLmZvcm1EYXRhID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5mb3JtRGF0YSksIChfYSA9IHt9LCBfYVtjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2EpKTtcbiAgICB9XG4gICAgdmFyIGdkID0gZ2V0R2xvYmFsRGF0YSgpO1xuICAgIG9iai5mb3JtRGF0YSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBnZCksIG9iai5mb3JtRGF0YSk7XG4gICAgaWYgKCFjb25maWdfMS5kZWZhdWx0LmRvTm90VXNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgaWYgKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xuICAgICAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIChfYiA9IHt9LCBfYltjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2IpKTtcbiAgICAgICAgfVxuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xuICAgIH1cbiAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5zdGFydChvYmopO1xuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBnZXRHbG9iYWxEYXRhKCkge1xuICAgIHZhciBnZCA9IHt9O1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgZ2QgPSBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGEoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZ2xvYmFsRGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBnZCA9IGNvbmZpZ18xLmRlZmF1bHQuZ2xvYmFsRGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIGdkO1xufVxuZnVuY3Rpb24gZG9SZXF1ZXN0KG9iaikge1xuICAgIG9iaiA9IGluaXRpYWxpemVSZXF1ZXN0T2JqKG9iaik7XG4gICAgaWYgKG9iai5yZUxvZ2luQ291bnQgPT09IDAgJiYgdHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iaiA9IGNvbmZpZ18xLmRlZmF1bHQuYmVmb3JlU2VuZChvYmosIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHd4LnJlcXVlc3QoX19hc3NpZ24oX19hc3NpZ24oe30sIG9iaiksIHsgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0eXBlOiAnc3lzdGVtLWVycm9yJywgcmVzOiByZXMgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IH0pKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGRvVXBsb2FkRmlsZShvYmopIHtcbiAgICBvYmogPSBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmopO1xuICAgIGlmIChvYmoucmVMb2dpbkNvdW50ID09PSAwICYmIHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmogPSBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQob2JqLCBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB3eC51cGxvYWRGaWxlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmopLCB7IHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdHlwZTogJ3N5c3RlbS1lcnJvcicsIHJlczogcmVzIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nXzEuZGVmYXVsdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB9KSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiByZXF1ZXN0KG9iaikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaiwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb24pIHtcbiAgICAgICAgICAgIHZhciBtb2NrUmVzcG9uc2UgPSBtb2NrTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdC5yZXNwb25zZUZvclJlcXVlc3QobW9ja1Jlc3BvbnNlLCBvYmopO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqLmNhY2hlKSB7XG4gICAgICAgICAgICBjYWNoZU1hbmFnZXJfMS5kZWZhdWx0LmdldChvYmopO1xuICAgICAgICB9XG4gICAgICAgIHNlc3Npb25NYW5hZ2VyXzEuZGVmYXVsdC5tYWluKG9iaikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9SZXF1ZXN0KG9iaik7XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdC5yZXNwb25zZUZvclJlcXVlc3QocmVzLCBvYmopO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gY2F0Y2hIYW5kbGVyXzEuY2F0Y2hIYW5kbGVyKGUsIG9iaiwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiB1cGxvYWRGaWxlKG9iaikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaiwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb24pIHtcbiAgICAgICAgICAgIHZhciBtb2NrUmVzcG9uc2UgPSBtb2NrTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdC5yZXNwb25zZUZvclVwbG9hZEZpbGUobW9ja1Jlc3BvbnNlLCBvYmopO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQubWFpbihvYmopLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvVXBsb2FkRmlsZShvYmopO1xuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQucmVzcG9uc2VGb3JVcGxvYWRGaWxlKHJlcywgb2JqKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgY2F0Y2hIYW5kbGVyXzEuY2F0Y2hIYW5kbGVyKGUsIG9iaiwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgcmVxdWVzdDogcmVxdWVzdCxcbiAgICB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WeGRXVnpkRWhoYm1Sc1pYSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdmJXOWtkV3hsTDNKbGNYVmxjM1JJWVc1a2JHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN1FVRkJRU3d5UTBGQmNVTTdRVUZEY2tNc01FTkJRVzlETzBGQlEzQkRMREJEUVVGdlF6dEJRVU53UXl3MlEwRkJkVU03UVVGRGRrTXNLME5CUVhsRE8wRkJRM3BETEcxRVFVRTJRenRCUVVNM1F5eHhSRUZCSzBNN1FVRkRMME1zZFVSQlFXbEVPMEZCUTJwRUxHMURRVUUyUWp0QlFVVTNRaXdyUTBGQk9FTTdRVUZIT1VNc1UwRkJVeXhOUVVGTkxFTkJRVU1zVTBGQmFVSTdTVUZETjBJc1NVRkJTU3hUUVVGVExFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPMUZCUXpsQ0xFOUJRVThzVTBGQlV5eERRVUZCTzB0QlEyNUNPMU5CUVUwN1VVRkRTQ3hKUVVGSkxGTkJRVk1zUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJRenRSUVVOcVF5eEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhUUVVGVExFdEJRVXNzVlVGQlZTeEZRVUZGTzFsQlEzaERMRk5CUVZNc1IwRkJSeXhuUWtGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkJPMU5CUTJwRE8xRkJRMFFzVDBGQlR5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRPMHRCUTJoRE8wRkJRMHdzUTBGQlF6dEJRVWRFTEZOQlFWTXNTMEZCU3l4RFFVRXJReXhIUVVGTkxFVkJRVVVzVDBGQk9FSXNSVUZCUlN4TlFVRXJRanRKUVVWb1NTeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRmxCUVZrc1MwRkJTeXhYUVVGWExFVkJRVVU3VVVGRGVrTXNSMEZCUnl4RFFVRkRMRmxCUVZrc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRGVFSTdVMEZCVFR0UlFVTklMRWRCUVVjc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dExRVU4wUWp0SlFVVkVMRWxCUVVrc1IwRkJSeXhEUVVGRExGbEJRVmtzUzBGQlN5eERRVUZETEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU5vUlN4SFFVRkhMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UzBGRGNFSTdTVUZGUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhYUVVGWExFVkJRVVU3VVVGRGFrSXNhVUpCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMHRCUTJwRE8wbEJSVVFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRVZCUVVVN1VVRkRhRUlzUjBGQlJ5eERRVUZETEZOQlFWTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRE8xRkJRM2hDTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTTNRanRKUVVWRUxFZEJRVWNzUTBGQlF5eFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRPMGxCUTNaQ0xFZEJRVWNzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMGxCUlhKQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVZEVMRk5CUVZNc2IwSkJRVzlDTEVOQlFVTXNSMEZCYlVJN08wbEJSVGRETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRk8xRkJRMWdzUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1MwRkRha0k3U1VGRlJDeEhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU14UXl4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFRRVUZUTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUTNoRExFbEJRVWtzVFVGQlRTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03VVVGRGFFTXNTVUZCU1N4UFFVRlBMRTFCUVUwc1MwRkJTeXhSUVVGUkxFVkJRVVU3V1VGRE5VSXNSMEZCUnl4RFFVRkRMRTFCUVUwc2VVSkJRVThzUjBGQlJ5eERRVUZETEUxQlFVMHNSMEZCU3l4TlFVRk5MRU5CUVVNc1EwRkJRenRUUVVNelF6dExRVU5LTzFOQlFVMHNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eExRVUZMTEZGQlFWRXNSVUZCUlR0UlFVTTNReXhIUVVGSExFTkJRVU1zVFVGQlRTeDVRa0ZCVHl4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGTExHZENRVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1MwRkRja1E3U1VGRlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4VFFVRlRMRXRCUVVzc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFGQlF6bEVMRWRCUVVjc1EwRkJReXhKUVVGSkxIbENRVUZSTEVkQlFVY3NRMEZCUXl4SlFVRmpMR2RDUVVGSExHZENRVUZOTEVOQlFVTXNWMEZCVnl4SlFVRkhMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eE5RVUZGTEVOQlFVTTdTMEZET1VVN1NVRkhSQ3hKUVVGTkxFVkJRVVVzUjBGQlJ5eGhRVUZoTEVWQlFVVXNRMEZCUXp0SlFVTXpRaXhIUVVGSExFTkJRVU1zU1VGQlNTeDVRa0ZCVVN4RlFVRkZMRWRCUVVzc1IwRkJSeXhEUVVGRExFbEJRV01zUTBGQlJTeERRVUZETzBsQlJUVkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNN1NVRkRha01zUjBGQlJ5eERRVUZETEZGQlFWRXNSMEZCUnl4SFFVRkhMRU5CUVVNc1VVRkJVU3hKUVVGSkxFMUJRVTBzUTBGQlF6dEpRVWQwUXl4SlFVRkpMRU5CUVVNc1owSkJRVTBzUTBGQlF5eHRRa0ZCYlVJc1NVRkJTU3hIUVVGSExFTkJRVU1zVFVGQlRTeExRVUZMTEV0QlFVc3NSVUZCUlR0UlFVTnlSQ3hKUVVGSkxHZENRVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTJoQ0xFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NZVUZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eFpRVUZKTEVkQlFVTXNaMEpCUVUwc1EwRkJReXhYUVVGWExFbEJRVWNzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRTFCUVVjc1EwRkJRenRUUVVNNVJUdFJRVU5FTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1lVRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wdEJRM2hETzBsQlJVUXNNRUpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUlRWQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVZEVMRk5CUVZNc2RVSkJRWFZDTEVOQlFVTXNSMEZCYzBJN08wbEJRMjVFTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRk8xRkJRMllzUjBGQlJ5eERRVUZETEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1MwRkRja0k3U1VGRlJDeEhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU14UXl4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFRRVUZUTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUTNoRExFbEJRVWtzVFVGQlRTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03VVVGRGFFTXNTVUZCU1N4UFFVRlBMRTFCUVUwc1MwRkJTeXhSUVVGUkxFVkJRVVU3V1VGRE5VSXNSMEZCUnl4RFFVRkRMRTFCUVUwc2VVSkJRVThzUjBGQlJ5eERRVUZETEUxQlFVMHNSMEZCU3l4TlFVRk5MRU5CUVVNc1EwRkJRenRUUVVNelF6dExRVU5LTzFOQlFVMHNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eExRVUZMTEZGQlFWRXNSVUZCUlR0UlFVTTNReXhIUVVGSExFTkJRVU1zVFVGQlRTeDVRa0ZCVHl4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGTExHZENRVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1MwRkRja1E3U1VGRlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4VFFVRlRMRXRCUVVzc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFGQlF6bEVMRWRCUVVjc1EwRkJReXhSUVVGUkxIbENRVUZSTEVkQlFVY3NRMEZCUXl4UlFVRnJRaXhuUWtGQlJ5eG5Ra0ZCVFN4RFFVRkRMRmRCUVZjc1NVRkJSeXhuUWtGQlRTeERRVUZETEU5QlFVOHNUVUZCUlN4RFFVRkRPMHRCUTNSR08wbEJSMFFzU1VGQlRTeEZRVUZGTEVkQlFVY3NZVUZCWVN4RlFVRkZMRU5CUVVNN1NVRkRNMElzUjBGQlJ5eERRVUZETEZGQlFWRXNlVUpCUVZFc1JVRkJSU3hIUVVGTExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVVXNRMEZCUXp0SlFVVXhReXhKUVVGSkxFTkJRVU1zWjBKQlFVMHNRMEZCUXl4dFFrRkJiVUlzUlVGQlJUdFJRVVUzUWl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEyaENMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzWVVGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhaUVVGSkxFZEJRVU1zWjBKQlFVMHNRMEZCUXl4WFFVRlhMRWxCUVVjc1owSkJRVTBzUTBGQlF5eFBRVUZQTEUxQlFVY3NRMEZCUXp0VFFVTTVSVHRSUVVWRUxFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NZVUZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMHRCUTNoRE8wbEJSVVFzTUVKQlFXZENMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJUVkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVVZFTEZOQlFWTXNZVUZCWVR0SlFVTnNRaXhKUVVGSkxFVkJRVVVzUjBGQlVTeEZRVUZGTEVOQlFVTTdTVUZEYWtJc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNWVUZCVlN4TFFVRkxMRlZCUVZVc1JVRkJSVHRSUVVONlF5eEZRVUZGTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dExRVU0xUWp0VFFVRk5MRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZWQlFWVXNTMEZCU3l4UlFVRlJMRVZCUVVVN1VVRkRPVU1zUlVGQlJTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRE8wdEJRekZDTzBsQlEwUXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eFRRVUZUTEVOQlFVTXNSMEZCYlVJN1NVRkRiRU1zUjBGQlJ5eEhRVUZITEc5Q1FVRnZRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyaERMRWxCUVVrc1IwRkJSeXhEUVVGRExGbEJRVmtzUzBGQlN5eERRVUZETEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExGVkJRVlVzUzBGQlN5eFZRVUZWTEVWQlFVVTdVVUZEYmtVc1IwRkJSeXhIUVVGSExHZENRVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUTJoRU8wbEJRMFFzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCYVVRc1ZVRkJReXhQUVVGUExFVkJRVVVzVFVGQlRUdFJRVU12UlN4RlFVRkZMRU5CUVVNc1QwRkJUeXgxUWtGRFNDeEhRVUZITEV0QlEwNHNUMEZCVHl4WlFVRkRMRWRCUVVjN1owSkJRMUFzVDBGQlR5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRlRUlzUTBGQlF6dFpRVU5FTEVsQlFVa3NXVUZCUXl4SFFVRkhPMmRDUVVOS0xFOUJRVThzVFVGQlRTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMR05CUVdNc1JVRkJSU3hIUVVGSExFdEJRVUVzUlVGQlJTeERRVUZETEVOQlFVTTdXVUZEYWtRc1EwRkJRenRaUVVORUxGRkJRVkU3WjBKQlEwb3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhSUVVGUkxFdEJRVXNzVlVGQlZTeEZRVUZGTzI5Q1FVTndReXhIUVVGSExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdhVUpCUTJ4Q08yZENRVU5FTEVsQlFVa3NSMEZCUnl4RFFVRkRMRmRCUVZjc1JVRkJSVHR2UWtGRGFrSXNhVUpCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dHBRa0ZEYkVJN1dVRkRUQ3hEUVVGRExFbEJRMGdzUTBGQlFUdEpRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVWRUxGTkJRVk1zV1VGQldTeERRVUZETEVkQlFYTkNPMGxCUTNoRExFZEJRVWNzUjBGQlJ5eDFRa0ZCZFVJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU51UXl4SlFVRkpMRWRCUVVjc1EwRkJReXhaUVVGWkxFdEJRVXNzUTBGQlF5eEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhWUVVGVkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEyNUZMRWRCUVVjc1IwRkJSeXhuUWtGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0TFFVTm9SRHRKUVVORUxFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFXOUVMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3VVVGRGJFWXNSVUZCUlN4RFFVRkRMRlZCUVZVc2RVSkJRMDRzUjBGQlJ5eExRVU5PTEU5QlFVOHNXVUZCUXl4SFFVRkhPMmRDUVVOUUxFOUJRVThzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFTkJRVU03V1VGRFJDeEpRVUZKTEZsQlFVTXNSMEZCUnp0blFrRkRTaXhQUVVGUExFMUJRVTBzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4alFVRmpMRVZCUVVVc1IwRkJSeXhMUVVGQkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEycEVMRU5CUVVNN1dVRkRSQ3hSUVVGUk8yZENRVU5LTEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hMUVVGTExGVkJRVlVzUlVGQlJUdHZRa0ZEY0VNc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzJsQ1FVTnNRanRuUWtGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4WFFVRlhMRVZCUVVVN2IwSkJRMnBDTEdsQ1FVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03YVVKQlEyeENPMWxCUTB3c1EwRkJReXhKUVVOSUxFTkJRVUU3U1VGRFRpeERRVUZETEVOQlFVTXNRMEZCUVR0QlFVTk9MRU5CUVVNN1FVRkZSQ3hUUVVGVExFOUJRVThzUTBGQlVTeEhRVUZ0UWp0SlFVTjJReXhQUVVGUExFbEJRVWtzVDBGQlR5eERRVUZETEZWQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwN1VVRkRMMElzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFGQlJXeERMRWxCUVVrc1owSkJRVTBzUTBGQlF5eFJRVUZSTEVWQlFVVTdXVUZEYWtJc1NVRkJTU3haUVVGWkxFZEJRVWNzY1VKQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4WlFVRlpMRVZCUVVVN1owSkJRMlFzU1VGQlNTeFJRVUZSTEVkQlFVY3NlVUpCUVdVc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WlFVRlpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzSkZMRTlCUVU4c1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJGQlF6VkNPMU5CUTBvN1VVRkZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEV0N4elFrRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTjZRanRSUVVWRUxIZENRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dFpRVU14UWl4UFFVRlBMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlFUdFJRVU42UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlF5eEhRVUZ0UkR0WlFVTjRSQ3hKUVVGSkxGRkJRVkVzUjBGQlJ5eDVRa0ZCWlN4RFFVRkRMR3RDUVVGclFpeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVNMVJDeEpRVUZKTEZGQlFWRXNTVUZCU1N4SlFVRkpMRVZCUVVVN1owSkJRMnhDTEU5QlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yRkJRelZDTzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVU1zUTBGQlpUdFpRVU55UWl4UFFVRlBMREpDUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRVHRSUVVOMlF5eERRVUZETEVOQlFVTXNRMEZCUVR0SlFVTk9MRU5CUVVNc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlN4RFFVRkRMRWRCUVhOQ08wbEJRM1JETEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJReXhQUVVGUExFVkJRVVVzVFVGQlRUdFJRVU12UWl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExFZEJRVWNzUlVGQlJTeFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkZiRU1zU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSVHRaUVVOcVFpeEpRVUZKTEZsQlFWa3NSMEZCUnl4eFFrRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTjRReXhKUVVGSkxGbEJRVmtzUlVGQlJUdG5Ra0ZEWkN4SlFVRkpMRkZCUVZFc1IwRkJSeXg1UWtGQlpTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExGbEJRVmtzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRlRVVzVDBGQlR5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1lVRkROVUk3VTBGRFNqdFJRVVZFTEhkQ1FVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTXhRaXhQUVVGUExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUVR0UlFVTTFRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCUXl4SFFVRnpSRHRaUVVNelJDeEpRVUZKTEZGQlFWRXNSMEZCUnl4NVFrRkJaU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU12UkN4SlFVRkpMRkZCUVZFc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEyeENMRTlCUVU4c1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJGQlF6VkNPMUZCUTB3c1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEZWQlFVTXNRMEZCWlR0WlFVTnlRaXd5UWtGQldTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVUU3VVVGRGFFTXNRMEZCUXl4RFFVRkRMRU5CUVVFN1NVRkRUaXhEUVVGRExFTkJRVU1zUTBGQlFUdEJRVU5PTEVOQlFVTTdRVUZGUkN4clFrRkJaVHRKUVVOWUxFMUJRVTBzVVVGQlFUdEpRVU5PTEU5QlFVOHNVMEZCUVR0SlFVTlFMRlZCUVZVc1dVRkJRVHREUVVOaUxFTkJRVUVpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnYkc5aFpHbHVaeUJtY205dElDY3VMaTkxZEdsc0wyeHZZV1JwYm1jblhHNXBiWEJ2Y25RZ1kyOXVabWxuSUdaeWIyMGdKeTR1TDNOMGIzSmxMMk52Ym1acFp5ZGNibWx0Y0c5eWRDQnpkR0YwZFhNZ1puSnZiU0FuTGk0dmMzUnZjbVV2YzNSaGRIVnpKMXh1YVcxd2IzSjBJRzF2WTJ0TllXNWhaMlZ5SUdaeWIyMGdKeTR2Ylc5amEwMWhibUZuWlhJblhHNXBiWEJ2Y25RZ1kyRmphR1ZOWVc1aFoyVnlJR1p5YjIwZ0p5NHZZMkZqYUdWTllXNWhaMlZ5SjF4dWFXMXdiM0owSUhObGMzTnBiMjVOWVc1aFoyVnlJR1p5YjIwZ0p5NHZjMlZ6YzJsdmJrMWhibUZuWlhJblhHNXBiWEJ2Y25RZ2NtVnpjRzl1YzJWSVlXNWtiR1Z5SUdaeWIyMGdKeTR2Y21WemNHOXVjMlZJWVc1a2JHVnlKMXh1YVcxd2IzSjBJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSWdabkp2YlNCY0lpNHZaSFZ5WVhScGIyNVNaWEJ2Y25SbGNsd2lYRzVwYlhCdmNuUWdkWEpzSUdaeWIyMGdKeTR1TDNWMGFXd3ZkWEpzSjF4dWFXMXdiM0owSUhzZ1NWSmxjWFZsYzNSUGNIUnBiMjRzSUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1TENCSlJYSnliM0pQWW1wbFkzUWdmU0JtY205dElGd2lMaTR2YVc1MFpYSm1ZV05sWENKY2JtbHRjRzl5ZENCN0lHTmhkR05vU0dGdVpHeGxjaUI5SUdaeWIyMGdKeTR2WTJGMFkyaElZVzVrYkdWeUp6dGNibHh1THk4ZzVxQzg1YnlQNVl5V2RYSnNYRzVtZFc1amRHbHZiaUJtYjNKdFlYUW9iM0pwWjJsdVZYSnNPaUJ6ZEhKcGJtY3BJSHRjYmlBZ0lDQnBaaUFvYjNKcFoybHVWWEpzTG5OMFlYSjBjMWRwZEdnb0oyaDBkSEFuS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2IzSnBaMmx1VlhKc1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYkdWMElIVnliRkJsY21acGVDQTlJR052Ym1acFp5NTFjbXhRWlhKbWFYZzdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MblZ5YkZCbGNtWnBlQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjFjbXhRWlhKbWFYZ2dQU0JqYjI1bWFXY3VkWEpzVUdWeVptbDRLQ2xjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZFhKc1VHVnlabWw0SUNzZ2IzSnBaMmx1VlhKc08xeHVJQ0FnSUgxY2JuMWNibHh1THk4ZzVvbUE1cHlKNksrMzVyR0M1WStSNVllNjVZbU42WnlBNkthQjVZR2E1NXFFNUxxTDVvT0ZYRzVtZFc1amRHbHZiaUJ3Y21WRWJ6eFVJR1Y0ZEdWdVpITWdTVkpsY1hWbGMzUlBjSFJwYjI0Z2ZDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJqNG9iMkpxT2lCVUxDQnlaWE52YkhabE9pQW9kbUZzZFdVL09pQmhibmtwSUQwK0lIWnZhV1FzSUhKbGFtVmpkRDg2SUNoeVpXRnpiMjQvT2lCaGJua3BJRDArSUhadmFXUXBPaUJVSUh0Y2JpQWdJQ0F2THlEbm1idmx2WlhtZ0lIbHBMSG1sWWp2dkl6cGg0M2xwSTNubWJ2bHZaWG9ycUhtbGJCY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNXlaVXh2WjJsdVEyOTFiblFnUFQwOUlGd2lkVzVrWldacGJtVmtYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ2IySnFMbkpsVEc5bmFXNURiM1Z1ZENBOUlEQTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2IySnFMbkpsVEc5bmFXNURiM1Z1ZENzck8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHZZbW91Y21WTWIyZHBia052ZFc1MElEMDlQU0F3SUNZbUlIUjVjR1Z2WmlCdlltb3VZbVZtYjNKbFUyVnVaQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNWlaV1p2Y21WVFpXNWtLQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0c5aWFpNXphRzkzVEc5aFpHbHVaeWtnZTF4dUlDQWdJQ0FnSUNCc2IyRmthVzVuTG5Ob2IzY29iMkpxTG5Ob2IzZE1iMkZrYVc1bktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JVzlpYWk1dmNtbG5hVzVWY213cElIdGNiaUFnSUNBZ0lDQWdiMkpxTG05eWFXZHBibFZ5YkNBOUlHOWlhaTUxY213N1hHNGdJQ0FnSUNBZ0lHOWlhaTUxY213Z1BTQm1iM0p0WVhRb2IySnFMblZ5YkNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYjJKcUxsOXlaWE52YkhabElEMGdjbVZ6YjJ4MlpUdGNiaUFnSUNCdlltb3VYM0psYW1WamRDQTlJSEpsYW1WamREdGNibHh1SUNBZ0lISmxkSFZ5YmlCdlltbzdYRzU5WEc1Y2JpOHZJT2Fndk9XOGorV01sdVdraE9lUWh1aXZ0K2F4Z3VlYWhHOWlhdVdHaGVXdXVWeHVablZ1WTNScGIyNGdhVzVwZEdsaGJHbDZaVkpsY1hWbGMzUlBZbW9vYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlrZ2UxeHVYRzRnSUNBZ2FXWWdLQ0Z2WW1vdVpHRjBZU2tnZTF4dUlDQWdJQ0FnSUNCdlltb3VaR0YwWVNBOUlIdDlPMXh1SUNBZ0lIMWNiaUFnSUNCY2JpQWdJQ0J2WW1vdWFHVmhaR1Z5SUQwZ2IySnFMbWhsWVdSbGNpQS9JRzlpYWk1b1pXRmtaWElnT2lCN2ZUdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1elpYUklaV0ZrWlhJZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJR2hsWVdSbGNpQTlJR052Ym1acFp5NXpaWFJJWldGa1pYSW9LVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCb1pXRmtaWElnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdlltb3VhR1ZoWkdWeUlEMGdleTR1TG05aWFpNW9aV0ZrWlhJc0lDNHVMbWhsWVdSbGNuMDdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmpiMjVtYVdjdWMyVjBTR1ZoWkdWeUlEMDlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJQ0FnSUNCdlltb3VhR1ZoWkdWeUlEMGdleTR1TG05aWFpNW9aV0ZrWlhJc0lDNHVMbU52Ym1acFp5NXpaWFJJWldGa1pYSjlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h2WW1vdWIzSnBaMmx1VlhKc0lDRTlQU0JqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1MWNtd2dKaVlnYzNSaGRIVnpMbk5sYzNOcGIyNHBJSHRjYmlBZ0lDQWdJQ0FnYjJKcUxtUmhkR0VnUFNCN0lDNHVMbTlpYWk1a1lYUmhJR0Z6SUc5aWFtVmpkQ3dnVzJOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlYwNklITjBZWFIxY3k1elpYTnphVzl1SUgwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4ZzVhYUM1cDZjNXB5SjVZV281YkdBNVkrQzVwV3c3N3lNNVlpWjVyZTc1WXFnWEc0Z0lDQWdZMjl1YzNRZ1oyUWdQU0JuWlhSSGJHOWlZV3hFWVhSaEtDazdYRzRnSUNBZ2IySnFMbVJoZEdFZ1BTQjdJQzR1TG1ka0xDQXVMaTV2WW1vdVpHRjBZU0JoY3lCdlltcGxZM1FnZlR0Y2JseHVJQ0FnSUc5aWFpNXRaWFJvYjJRZ1BTQnZZbW91YldWMGFHOWtJSHg4SUNkSFJWUW5PMXh1SUNBZ0lHOWlhaTVrWVhSaFZIbHdaU0E5SUc5aWFpNWtZWFJoVkhsd1pTQjhmQ0FuYW5OdmJpYzdYRzVjYmlBZ0lDQXZMeURscG9MbW5wem9yN2Ztc1lMa3VJM21tSzlIUlZUdnZJemxpSm5sbktoVlVremt1SzNvaDZybGlxamxpcURrdUlybm1idmx2WlhtZ0lIbGtvemxoYWpsc1lEbGo0TG1sYkJjYmlBZ0lDQnBaaUFvSVdOdmJtWnBaeTVrYjA1dmRGVnpaVkYxWlhKNVUzUnlhVzVuSUNZbUlHOWlhaTV0WlhSb2IyUWdJVDA5SUZ3aVIwVlVYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSE4wWVhSMWN5NXpaWE56YVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdlltb3VkWEpzSUQwZ2RYSnNMbk5sZEZCaGNtRnRjeWh2WW1vdWRYSnNMQ0I3SUZ0amIyNW1hV2N1YzJWemMybHZiazVoYldWZE9pQnpkR0YwZFhNdWMyVnpjMmx2YmlCOUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J2WW1vdWRYSnNJRDBnZFhKc0xuTmxkRkJoY21GdGN5aHZZbW91ZFhKc0xDQm5aQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNXpkR0Z5ZENodlltb3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlHOWlhanRjYm4xY2JseHVMeThnNXFDODVieVA1WXlXNWFTRTU1Q0c1TGlLNUx5ZzVwYUg1THUyNTVxRWIySnE1WWFGNWE2NVhHNW1kVzVqZEdsdmJpQnBibWwwYVdGc2FYcGxWWEJzYjJGa1JtbHNaVTlpYWlodlltbzZJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVLU0I3WEc0Z0lDQWdhV1lnS0NGdlltb3VabTl5YlVSaGRHRXBJSHRjYmlBZ0lDQWdJQ0FnYjJKcUxtWnZjbTFFWVhSaElEMGdlMzA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiMkpxTG1obFlXUmxjaUE5SUc5aWFpNW9aV0ZrWlhJZ1B5QnZZbW91YUdWaFpHVnlJRG9nZTMwN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1YzJWMFNHVmhaR1Z5SUQwOVBTQW5ablZ1WTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQm9aV0ZrWlhJZ1BTQmpiMjVtYVdjdWMyVjBTR1ZoWkdWeUtDazdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnYUdWaFpHVnlJRDA5UFNBbmIySnFaV04wSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxtaGxZV1JsY2lBOUlIc3VMaTV2WW1vdWFHVmhaR1Z5TENBdUxpNW9aV0ZrWlhKOU8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG5ObGRFaGxZV1JsY2lBOVBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJQ0FnYjJKcUxtaGxZV1JsY2lBOUlIc3VMaTV2WW1vdWFHVmhaR1Z5TENBdUxpNWpiMjVtYVdjdWMyVjBTR1ZoWkdWeWZUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iMkpxTG05eWFXZHBibFZ5YkNBaFBUMGdZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1ZFhKc0lDWW1JSE4wWVhSMWN5NXpaWE56YVc5dUtTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1bWIzSnRSR0YwWVNBOUlIc2dMaTR1YjJKcUxtWnZjbTFFWVhSaElHRnpJRzlpYW1WamRDd2dXMk52Ym1acFp5NXpaWE56YVc5dVRtRnRaVjA2SUhOMFlYUjFjeTV6WlhOemFXOXVJSDA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnNWFhQzVwNmM1cHlKNVlXbzViR0E1WStDNXBXdzc3eU01WWlaNXJlNzVZcWdYRzRnSUNBZ1kyOXVjM1FnWjJRZ1BTQm5aWFJIYkc5aVlXeEVZWFJoS0NrN1hHNGdJQ0FnYjJKcUxtWnZjbTFFWVhSaElEMGdleUF1TGk1blpDd2dMaTR1YjJKcUxtWnZjbTFFWVhSaElIMDdYRzVjYmlBZ0lDQnBaaUFvSVdOdmJtWnBaeTVrYjA1dmRGVnpaVkYxWlhKNVUzUnlhVzVuS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJT1d3aHVlWnUrbVpodWFBZ2VTNW4rVzRwdVdjcUhWeWJPUzRpbHh1SUNBZ0lDQWdJQ0JwWmlBb2MzUmhkSFZ6TG5ObGMzTnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1MWNtd2dQU0IxY213dWMyVjBVR0Z5WVcxektHOWlhaTUxY213c0lIc2dXMk52Ym1acFp5NXpaWE56YVc5dVRtRnRaVjA2SUhOMFlYUjFjeTV6WlhOemFXOXVJSDBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDOHZJT1dGcU9XeGdPV1BndWFWc09XUWpPYVh0dWFVdnVXY3FIVnliT1M0aWx4dUlDQWdJQ0FnSUNCdlltb3VkWEpzSUQwZ2RYSnNMbk5sZEZCaGNtRnRjeWh2WW1vdWRYSnNMQ0JuWkNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTV6ZEdGeWRDaHZZbW9wTzF4dVhHNGdJQ0FnY21WMGRYSnVJRzlpYWp0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWjJWMFIyeHZZbUZzUkdGMFlTZ3BJSHRjYmlBZ0lDQnNaWFFnWjJRNklHRnVlU0E5SUh0OU8xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1kc2IySmhiRVJoZEdFZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQm5aQ0E5SUdOdmJtWnBaeTVuYkc5aVlXeEVZWFJoS0NrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MbWRzYjJKaGJFUmhkR0VnUFQwOUlGd2liMkpxWldOMFhDSXBJSHRjYmlBZ0lDQWdJQ0FnWjJRZ1BTQmpiMjVtYVdjdVoyeHZZbUZzUkdGMFlUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR2RrTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJrYjFKbGNYVmxjM1FvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlrZ2UxeHVJQ0FnSUc5aWFpQTlJR2x1YVhScFlXeHBlbVZTWlhGMVpYTjBUMkpxS0c5aWFpazdYRzRnSUNBZ2FXWWdLRzlpYWk1eVpVeHZaMmx1UTI5MWJuUWdQVDA5SURBZ0ppWWdkSGx3Wlc5bUlHTnZibVpwWnk1aVpXWnZjbVZUWlc1a0lEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdiMkpxSUQwZ1kyOXVabWxuTG1KbFptOXlaVk5sYm1Rb2IySnFMQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJpazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlR4WFpXTm9ZWFJOYVc1cGNISnZaM0poYlM1U1pYRjFaWE4wVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MFBpZ29jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhkNExuSmxjWFZsYzNRb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTGk0dWIySnFMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MzVmpZMlZ6Y3loeVpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHlaWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHWmhhV3dvY21WektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENoN0lIUjVjR1U2SUNkemVYTjBaVzB0WlhKeWIzSW5MQ0J5WlhNZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91WTI5dGNHeGxkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZZbW91WTI5dGNHeGxkR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzlpYWk1emFHOTNURzloWkdsdVp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc2IyRmthVzVuTG1ocFpHVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmU2xjYm4xY2JseHVablZ1WTNScGIyNGdaRzlWY0d4dllXUkdhV3hsS0c5aWFqb2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJSHRjYmlBZ0lDQnZZbW9nUFNCcGJtbDBhV0ZzYVhwbFZYQnNiMkZrUm1sc1pVOWlhaWh2WW1vcE8xeHVJQ0FnSUdsbUlDaHZZbW91Y21WTWIyZHBia052ZFc1MElEMDlQU0F3SUNZbUlIUjVjR1Z2WmlCamIyNW1hV2N1WW1WbWIzSmxVMlZ1WkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lHOWlhaUE5SUdOdmJtWnBaeTVpWldadmNtVlRaVzVrS0c5aWFpd2djM1JoZEhWekxuTmxjM05wYjI0cE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlU4VjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VlhCc2IyRmtSbWxzWlZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RENG9LSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCM2VDNTFjR3h2WVdSR2FXeGxLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDNHVMbTlpYWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4xWTJObGMzTW9jbVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc0tISmxjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9leUIwZVhCbE9pQW5jM2x6ZEdWdExXVnljbTl5Snl3Z2NtVnpJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiWEJzWlhSbEtDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnYjJKcUxtTnZiWEJzWlhSbElEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxtTnZiWEJzWlhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodlltb3VjMmh2ZDB4dllXUnBibWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiRzloWkdsdVp5NW9hV1JsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgwcFhHNTlYRzVjYm1aMWJtTjBhVzl1SUhKbGNYVmxjM1E4VkZKbGMzQStLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRwT2lCUWNtOXRhWE5sUEZSU1pYTndQaUI3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2IySnFJRDBnY0hKbFJHOG9iMkpxTENCeVpYTnZiSFpsTENCeVpXcGxZM1FwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hqYjI1bWFXY3ViVzlqYTBwemIyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J0YjJOclVtVnpjRzl1YzJVZ1BTQnRiMk5yVFdGdVlXZGxjaTVuWlhRb2IySnFLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h0YjJOclVtVnpjRzl1YzJVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnY21WemNHOXVjMlVnUFNCeVpYTndiMjV6WlVoaGJtUnNaWEl1Y21WemNHOXVjMlZHYjNKU1pYRjFaWE4wS0cxdlkydFNaWE53YjI1elpTd2diMkpxS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemIyeDJaU2h5WlhOd2IyNXpaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCcFppQW9iMkpxTG1OaFkyaGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZV05vWlUxaGJtRm5aWEl1WjJWMEtHOWlhaWs3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnpaWE56YVc5dVRXRnVZV2RsY2k1dFlXbHVLRzlpYWlrdWRHaGxiaWdvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWkc5U1pYRjFaWE4wS0c5aWFpbGNiaUFnSUNBZ0lDQWdmU2t1ZEdobGJpZ29jbVZ6T2lCWFpXTm9ZWFJOYVc1cGNISnZaM0poYlM1U1pYRjFaWE4wVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnY21WemNHOXVjMlVnUFNCeVpYTndiMjV6WlVoaGJtUnNaWEl1Y21WemNHOXVjMlZHYjNKU1pYRjFaWE4wS0hKbGN5d2diMkpxS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeVpYTndiMjV6WlNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WemNHOXVjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5S1M1allYUmphQ2dvWlRvZ1NVVnljbTl5VDJKcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMkYwWTJoSVlXNWtiR1Z5S0dVc0lHOWlhaXdnY21WcVpXTjBLVnh1SUNBZ0lDQWdJQ0I5S1Z4dUlDQWdJSDBwWEc1OVhHNWNibVoxYm1OMGFXOXVJSFZ3Ykc5aFpFWnBiR1VvYjJKcU9pQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpazZJR0Z1ZVNCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0NoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdiMkpxSUQwZ2NISmxSRzhvYjJKcUxDQnlaWE52YkhabExDQnlaV3BsWTNRcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoamIyNW1hV2N1Ylc5amEwcHpiMjRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCdGIyTnJVbVZ6Y0c5dWMyVWdQU0J0YjJOclRXRnVZV2RsY2k1blpYUW9iMkpxS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodGIyTnJVbVZ6Y0c5dWMyVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NtVnpjRzl1YzJVZ1BTQnlaWE53YjI1elpVaGhibVJzWlhJdWNtVnpjRzl1YzJWR2IzSlZjR3h2WVdSR2FXeGxLRzF2WTJ0U1pYTndiMjV6WlN3Z2IySnFLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHlaWE53YjI1elpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J6WlhOemFXOXVUV0Z1WVdkbGNpNXRZV2x1S0c5aWFpa3VkR2hsYmlnb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHOVZjR3h2WVdSR2FXeGxLRzlpYWlsY2JpQWdJQ0FnSUNBZ2ZTa3VkR2hsYmlnb2NtVnpPaUJYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVWY0d4dllXUkdhV3hsVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnY21WemNHOXVjMlVnUFNCeVpYTndiMjV6WlVoaGJtUnNaWEl1Y21WemNHOXVjMlZHYjNKVmNHeHZZV1JHYVd4bEtISmxjeXdnYjJKcUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlaWE53YjI1elpTQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb2NtVnpjRzl1YzJVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUtTNWpZWFJqYUNnb1pUb2dTVVZ5Y205eVQySnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYUmphRWhoYm1Sc1pYSW9aU3dnYjJKcUxDQnlaV3BsWTNRcFhHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4dUlDQWdJR1p2Y20xaGRDeGNiaUFnSUNCeVpYRjFaWE4wTEZ4dUlDQWdJSFZ3Ykc5aFpFWnBiR1ZjYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXF1ZXN0SGFuZGxlclwiKTtcbnZhciBjYWNoZU1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL2NhY2hlTWFuYWdlclwiKTtcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9zZXNzaW9uTWFuYWdlclwiKTtcbnZhciBqc29uU3VwZXJzZXRfMSA9IHJlcXVpcmUoXCIuLi91dGlsL2pzb25TdXBlcnNldFwiKTtcbmZ1bmN0aW9uIHJlc3BvbnNlRm9yUmVxdWVzdChyZXMsIG9iaikge1xuICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LmVuZChvYmopO1xuICAgICAgICBpZiAob2JqLmRhdGFUeXBlID09PSAnanNvbicgJiYgdHlwZW9mIHJlcy5kYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmVzLmRhdGEgPSBqc29uU3VwZXJzZXRfMS5kZWZhdWx0KHJlcy5kYXRhKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzLmRhdGEgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAnbG9naWMtZXJyb3InLCByZXM6IHJlcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmxvZ2luVHJpZ2dlcihyZXMuZGF0YSkgJiYgb2JqLnJlTG9naW5Db3VudCAhPT0gdW5kZWZpbmVkICYmIG9iai5yZUxvZ2luQ291bnQgPCBjb25maWdfMS5kZWZhdWx0LnJlTG9naW5MaW1pdCkge1xuICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0LmRlbFNlc3Npb24oKTtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQucmVxdWVzdChvYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc1RyaWdnZXIocmVzLmRhdGEpKSB7XG4gICAgICAgICAgICB2YXIgcmVhbERhdGEgPSBcIlwiO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSBjb25maWdfMS5kZWZhdWx0LnN1Y2Nlc3NEYXRhKHJlcy5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWxEYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgY2FjaGVNYW5hZ2VyXzEuZGVmYXVsdC5zZXQob2JqLCByZWFsRGF0YSk7XG4gICAgICAgICAgICBpZiAoIW9iai5ub0NhY2hlRmxhc2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxEYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ2xvZ2ljLWVycm9yJywgcmVzOiByZXMgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgeyB0eXBlOiAnaHR0cC1lcnJvcicsIHJlczogcmVzIH07XG4gICAgfVxufVxuZnVuY3Rpb24gcmVzcG9uc2VGb3JVcGxvYWRGaWxlKHJlcywgb2JqKSB7XG4gICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuZW5kKG9iaik7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXMuZGF0YSA9IGpzb25TdXBlcnNldF8xLmRlZmF1bHQocmVzLmRhdGEpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXMuZGF0YSA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdsb2dpYy1lcnJvcicsIHJlczogcmVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubG9naW5UcmlnZ2VyKHJlcy5kYXRhKSAmJiBvYmoucmVMb2dpbkNvdW50ICE9PSB1bmRlZmluZWQgJiYgb2JqLnJlTG9naW5Db3VudCA8IGNvbmZpZ18xLmRlZmF1bHQucmVMb2dpbkxpbWl0KSB7XG4gICAgICAgICAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQuZGVsU2Vzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC51cGxvYWRGaWxlKG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzVHJpZ2dlcihyZXMuZGF0YSkpIHtcbiAgICAgICAgICAgIHZhciByZWFsRGF0YSA9IFwiXCI7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBvYmouc3VjY2VzcyhyZWFsRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhbERhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdsb2dpYy1lcnJvcicsIHJlczogcmVzIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IHsgdHlwZTogJ2h0dHAtZXJyb3InLCByZXM6IHJlcyB9O1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICByZXNwb25zZUZvclJlcXVlc3Q6IHJlc3BvbnNlRm9yUmVxdWVzdCxcbiAgICByZXNwb25zZUZvclVwbG9hZEZpbGU6IHJlc3BvbnNlRm9yVXBsb2FkRmlsZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtVnpjRzl1YzJWSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOXlaWE53YjI1elpVaGhibVJzWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN3d1EwRkJiME03UVVGRGNFTXNiVVJCUVRaRE8wRkJRemRETEN0RFFVRjVRenRCUVVONlF5eDFSRUZCYVVRN1FVRkRha1FzYlVSQlFUWkRPMEZCUlRkRExIRkVRVUVyUXp0QlFVVXZReXhUUVVGVExHdENRVUZyUWl4RFFVTjJRaXhIUVVGdFJDeEZRVU51UkN4SFFVRnRRanRKUVVWdVFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRXRCUVVzc1IwRkJSeXhGUVVGRk8xRkJSWGhDTERCQ1FVRm5RaXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVY3hRaXhKUVVGSkxFZEJRVWNzUTBGQlF5eFJRVUZSTEV0QlFVc3NUVUZCVFN4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFbEJRVWtzUzBGQlN5eFJRVUZSTEVWQlFVVTdXVUZEZWtRc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eHpRa0ZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5zUXl4SlFVRkpPMmRDUVVOQkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdZVUZEYmtNN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdG5Ra0ZEVWl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxHRkJRV0VzUlVGQlJTeEhRVUZITEV0QlFVRXNSVUZCUlN4RFFVRkJPMkZCUTNKRE8xTkJRMG83VVVGRlJDeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1dVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hMUVVGTExGTkJRVk1zU1VGQlNTeEhRVUZITEVOQlFVTXNXVUZCV1N4SFFVRkhMR2RDUVVGTkxFTkJRVU1zV1VGQllTeEZRVUZGTzFsQlJUZEhMSGRDUVVGakxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdXVUZETlVJc1QwRkJUeXgzUWtGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOMFF6dGhRVUZOTEVsQlFVa3NaMEpCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMWxCUlhoRExFbEJRVWtzVVVGQlVTeEhRVUZ6UXl4RlFVRkZMRU5CUVVNN1dVRkRja1FzU1VGQlNUdG5Ra0ZEUVN4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFhRVUZYTEV0QlFVc3NWVUZCVlN4RlFVRkZPMjlDUVVNeFF5eFJRVUZSTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVNelF6dHhRa0ZCVFR0dlFrRkRTQ3hSUVVGUkxFZEJRVWNzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXp0cFFrRkRka0k3WVVGRFNqdFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRWRCUVVVN1dVRkZaQ3h6UWtGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRGFFTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFVkJRVVU3WjBKQlJXNUNMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zVDBGQlR5eExRVUZMTEZWQlFWVXNSVUZCUlR0dlFrRkRia01zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRwUWtGRGVrSTdjVUpCUVUwN2IwSkJRMGdzVDBGQlR5eFJRVUZSTEVOQlFVTTdhVUpCUTI1Q08yRkJRMG83VTBGRFNqdGhRVUZOTzFsQlJVZ3NUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hoUVVGaExFVkJRVVVzUjBGQlJ5eExRVUZCTEVWQlFVVXNRMEZCUVR0VFFVTnlRenRMUVVOS08xTkJRVTA3VVVGRlNDeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFdEJRVUVzUlVGQlJTeERRVUZCTzB0QlEzQkRPMEZCUTB3c1EwRkJRenRCUVVWRUxGTkJRVk1zY1VKQlFYRkNMRU5CUXpGQ0xFZEJRWE5FTEVWQlEzUkVMRWRCUVhOQ08wbEJSWFJDTEVsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1MwRkJTeXhIUVVGSExFVkJRVVU3VVVGRmVFSXNNRUpCUVdkQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUnpGQ0xFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4TFFVRkxMRkZCUVZFc1JVRkJSVHRaUVVNNVFpeEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMSE5DUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTJ4RExFbEJRVWs3WjBKQlEwRXNSMEZCUnl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRoUVVOdVF6dFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMmRDUVVOU0xFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVXNZVUZCWVN4RlFVRkZMRWRCUVVjc1MwRkJRU3hGUVVGRkxFTkJRVUU3WVVGRGNrTTdVMEZEU2p0UlFVVkVMRWxCUVVrc1owSkJRVTBzUTBGQlF5eFpRVUZoTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eFpRVUZaTEV0QlFVc3NVMEZCVXl4SlFVRkpMRWRCUVVjc1EwRkJReXhaUVVGWkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4WlFVRmhMRVZCUVVVN1dVRkZOMGNzZDBKQlFXTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRaUVVNMVFpeFBRVUZQTEhkQ1FVRmpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzcERPMkZCUVUwc1NVRkJTU3huUWtGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRmVFTXNTVUZCU1N4UlFVRlJMRWRCUVhORExFVkJRVVVzUTBGQlF6dFpRVU55UkN4SlFVRkpPMmRDUVVOQkxFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRmRCUVZjc1MwRkJTeXhWUVVGVkxFVkJRVVU3YjBKQlF6RkRMRkZCUVZFc1IwRkJSeXhuUWtGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03YVVKQlF6TkRPM0ZDUVVGTk8yOUNRVU5JTEZGQlFWRXNSMEZCUnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRE8ybENRVU4yUWp0aFFVTktPMWxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJUdFpRVVZrTEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhMUVVGTExGVkJRVlVzUlVGQlJUdG5Ra0ZEYmtNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0aFFVTjZRanRwUWtGQlRUdG5Ra0ZEU0N4UFFVRlBMRkZCUVZFc1EwRkJRenRoUVVOdVFqdFRRVU5LTzJGQlFVMDdXVUZGU0N4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxHRkJRV0VzUlVGQlJTeEhRVUZITEV0QlFVRXNSVUZCUlN4RFFVRkJPMU5CUTNKRE8wdEJRMG83VTBGQlRUdFJRVVZJTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFZEJRVWNzUzBGQlFTeEZRVUZGTEVOQlFVRTdTMEZEY0VNN1FVRkRUQ3hEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4clFrRkJhMElzYjBKQlFVRTdTVUZEYkVJc2NVSkJRWEZDTEhWQ1FVRkJPME5CUTNoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnWTI5dVptbG5JR1p5YjIwZ0p5NHVMM04wYjNKbEwyTnZibVpwWnlkY2JtbHRjRzl5ZENCeVpYRjFaWE4wU0dGdVpHeGxjaUJtY205dElDY3VMM0psY1hWbGMzUklZVzVrYkdWeUoxeHVhVzF3YjNKMElHTmhZMmhsVFdGdVlXZGxjaUJtY205dElDY3VMMk5oWTJobFRXRnVZV2RsY2lkY2JtbHRjRzl5ZENCa2RYSmhkR2x2YmxKbGNHOXlkR1Z5SUdaeWIyMGdKeTR2WkhWeVlYUnBiMjVTWlhCdmNuUmxjaWRjYm1sdGNHOXlkQ0J6WlhOemFXOXVUV0Z1WVdkbGNpQm1jbTl0SUNjdUwzTmxjM05wYjI1TllXNWhaMlZ5SjF4dWFXMXdiM0owSUhzZ1NWSmxjWFZsYzNSUGNIUnBiMjRzSUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1TENCSlFXNTVUMkpxWldOMElIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpTzF4dWFXMXdiM0owSUdwemIyNVRkWEJsY25ObGRDQm1jbTl0SUNjdUxpOTFkR2xzTDJwemIyNVRkWEJsY25ObGRDZGNibHh1Wm5WdVkzUnBiMjRnY21WemNHOXVjMlZHYjNKU1pYRjFaWE4wS0Z4dUlDQWdJSEpsY3pvZ1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVVtVnhkV1Z6ZEZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDeGNiaUFnSUNCdlltbzZJRWxTWlhGMVpYTjBUM0IwYVc5dVhHNHBPaUJoYm5rZ2UxeHVJQ0FnSUdsbUlDaHlaWE11YzNSaGRIVnpRMjlrWlNBOVBUMGdNakF3S1NCN1hHNWNiaUFnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNWxibVFvYjJKcUtUdGNiaUFnSUNBZ0lDQWdYRzRnSUNBZ0lDQWdJQzh2SU9pdnQrYXhndWFndk9XOGorUzR1bXB6YjI3dnZJemt2WWJvdjVUbG01N2t1b1p6ZEhKcGJtZnZ2SXpvcjdUbW1JN2xob1hscnJua3VLM2xqNi9vZzczbHJaamxuS2pscjd6b2g3VGt2Yi9sdnBkS1lYWmhVMk55YVhCMDVieUM1Ymk0NTVxRTVhMlg1NnltWEc0Z0lDQWdJQ0FnSUdsbUlDaHZZbW91WkdGMFlWUjVjR1VnUFQwOUlDZHFjMjl1SnlBbUppQjBlWEJsYjJZZ2NtVnpMbVJoZEdFZ1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE11WkdGMFlTQTlJR3B6YjI1VGRYQmxjbk5sZENoeVpYTXVaR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjeTVrWVhSaElEMGdTbE5QVGk1d1lYSnpaU2h5WlhNdVpHRjBZU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dleUIwZVhCbE9pQW5iRzluYVdNdFpYSnliM0luTENCeVpYTWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZibVpwWnk1c2IyZHBibFJ5YVdkblpYSWhLSEpsY3k1a1lYUmhLU0FtSmlCdlltb3VjbVZNYjJkcGJrTnZkVzUwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnYjJKcUxuSmxURzluYVc1RGIzVnVkQ0E4SUdOdmJtWnBaeTV5WlV4dloybHVUR2x0YVhRaEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSGxwTEhtbFlqdnZJemt1SlRwaDQzb3I1WG1yS0htbGJEa3VJM290b1hvdjRmcGhZM252YTVjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG1SbGJGTmxjM05wYjI0b0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhGMVpYTjBTR0Z1Wkd4bGNpNXlaWEYxWlhOMEtHOWlhaWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXVabWxuTG5OMVkyTmxjM05VY21sbloyVnlLSEpsY3k1a1lYUmhLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNW82bDVZK2o2TCtVNVp1ZTVvaVE1WXFmNTZDQlhHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NtVmhiRVJoZEdFNklITjBjbWx1WnlCOElFbEJibmxQWW1wbFkzUWdmQ0JCY25KaGVVSjFabVpsY2lBOUlGd2lYQ0k3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG5OMVkyTmxjM05FWVhSaElEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsWVd4RVlYUmhJRDBnWTI5dVptbG5Mbk4xWTJObGMzTkVZWFJoS0hKbGN5NWtZWFJoS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaV0ZzUkdGMFlTQTlJSEpsY3k1a1lYUmhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHQ5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURudkpQbHJaamxyWmpsZ3FoY2JpQWdJQ0FnSUNBZ0lDQWdJR05oWTJobFRXRnVZV2RsY2k1elpYUW9iMkpxTENCeVpXRnNSR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXOWlhaTV1YjBOaFkyaGxSbXhoYzJncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeURscG9MbW5wemt1THJrdW9ia3Y1M29yNEhwb2JYcG5hTGt1STNwbDZybmc0SHZ2SXpsaUpua3VJM2xtNTdvc0lQdnZJemxqNnJtbUsvbnZKUGxyWmptbklEbWxyRG1sYkRtamE3dnZJemx2b1hrdUl2bXJLSG92NXZsaGFYbGhvM25sS2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNXpkV05qWlhOeklEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxuTjFZMk5sYzNNb2NtVmhiRVJoZEdFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV0ZzUkdGMFlUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlEbWpxWGxqNlBvdjVUbG01N2xwTEhvdEtYbm9JRmNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJSHNnZEhsd1pUb2dKMnh2WjJsakxXVnljbTl5Snl3Z2NtVnpJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQzh2SUdoMGRIQno2TCtVNVp1ZTU0cTI1b0NCNTZDQjZaMmVNakF3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJSHNnZEhsd1pUb2dKMmgwZEhBdFpYSnliM0luTENCeVpYTWdmVnh1SUNBZ0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2NtVnpjRzl1YzJWR2IzSlZjR3h2WVdSR2FXeGxLRnh1SUNBZ0lISmxjem9nVjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VlhCc2IyRmtSbWxzWlZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDeGNiaUFnSUNCdlltbzZJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVYRzRwT2lCaGJua2dlMXh1SUNBZ0lHbG1JQ2h5WlhNdWMzUmhkSFZ6UTI5a1pTQTlQVDBnTWpBd0tTQjdYRzVjYmlBZ0lDQWdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVsYm1Rb2IySnFLVHRjYmx4dUlDQWdJQ0FnSUNBdkx5RGxob1hscnJua3VLM2xqNi9vZzczbHJaamxuS2pscjd6b2g3VGt2Yi9sdnBkS1lYWmhVMk55YVhCMDVieUM1Ymk0NTVxRTVhMlg1NnltWEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2NtVnpMbVJoZEdFZ1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE11WkdGMFlTQTlJR3B6YjI1VGRYQmxjbk5sZENoeVpYTXVaR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjeTVrWVhSaElEMGdTbE5QVGk1d1lYSnpaU2h5WlhNdVpHRjBZU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dleUIwZVhCbE9pQW5iRzluYVdNdFpYSnliM0luTENCeVpYTWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZibVpwWnk1c2IyZHBibFJ5YVdkblpYSWhLSEpsY3k1a1lYUmhLU0FtSmlCdlltb3VjbVZNYjJkcGJrTnZkVzUwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnYjJKcUxuSmxURzluYVc1RGIzVnVkQ0E4SUdOdmJtWnBaeTV5WlV4dloybHVUR2x0YVhRaEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSGxwTEhtbFlqdnZJemt1SlRwaDQzb3I1WG1yS0htbGJEa3VJM290b1hvdjRmcGhZM252YTVjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG1SbGJGTmxjM05wYjI0b0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhGMVpYTjBTR0Z1Wkd4bGNpNTFjR3h2WVdSR2FXeGxLRzlpYWlrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMjl1Wm1sbkxuTjFZMk5sYzNOVWNtbG5aMlZ5S0hKbGN5NWtZWFJoS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVvNmw1WStqNkwrVTVadWU1b2lRNVlxZjU2Q0JYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdjbVZoYkVSaGRHRTZJSE4wY21sdVp5QjhJRWxCYm5sUFltcGxZM1FnZkNCQmNuSmhlVUoxWm1abGNpQTlJRndpWENJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxuTjFZMk5sYzNORVlYUmhJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbFlXeEVZWFJoSUQwZ1kyOXVabWxuTG5OMVkyTmxjM05FWVhSaEtISmxjeTVrWVhSaEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WldGc1JHRjBZU0E5SUhKbGN5NWtZWFJoTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0OVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2IySnFMbk4xWTJObGMzTWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1emRXTmpaWE56S0hKbFlXeEVZWFJoS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxZV3hFWVhSaE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNW82bDVZK2o2TCtVNVp1ZTVhU3g2TFNsNTZDQlhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QjdJSFI1Y0dVNklDZHNiMmRwWXkxbGNuSnZjaWNzSUhKbGN5QjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJvZEhSd2MraS9sT1dibnVlS3R1YUFnZWVnZ2VtZG5qSXdNRnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QjdJSFI1Y0dVNklDZG9kSFJ3TFdWeWNtOXlKeXdnY21WeklIMWNiaUFnSUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJSHRjYmlBZ0lDQnlaWE53YjI1elpVWnZjbEpsY1hWbGMzUXNYRzRnSUNBZ2NtVnpjRzl1YzJWR2IzSlZjR3h2WVdSR2FXeGxYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XG52YXIgZHVyYXRpb25SZXBvcnRlcl8xID0gcmVxdWlyZShcIi4vZHVyYXRpb25SZXBvcnRlclwiKTtcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4vcmVxdWVzdEhhbmRsZXJcIik7XG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi4vYXBpL3JlcXVlc3RcIik7XG52YXIgY2hlY2tTZXNzaW9uUHJvbWlzZSA9IG51bGw7XG5mdW5jdGlvbiBjaGVja1Nlc3Npb24oKSB7XG4gICAgaWYgKCFjaGVja1Nlc3Npb25Qcm9taXNlKSB7XG4gICAgICAgIGNoZWNrU2Vzc2lvblByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIHd4LmNoZWNrU2Vzc2lvbih7XG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0xvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5yZXBvcnQoJ3d4X2NoZWNrU2Vzc2lvbicsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNoZWNrU2Vzc2lvblByb21pc2U7XG59XG5mdW5jdGlvbiBpc1Nlc3Npb25FeHBpcmVPckVtcHR5KCkge1xuICAgIGlmICghc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSAmJiBuZXcgRGF0ZSgpLmdldFRpbWUoKSA+IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSkge1xuICAgICAgICBkZWxTZXNzaW9uKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBjaGVja0xvZ2luKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGlmIChpc1Nlc3Npb25FeHBpcmVPckVtcHR5KCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRvTG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxudmFyIGxvZ2luUHJvbWlzZSA9IG51bGw7XG5mdW5jdGlvbiBkb0xvZ2luKCkge1xuICAgIGlmICghbG9naW5Qcm9taXNlKSB7XG4gICAgICAgIGxvZ2luUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGxvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbG9naW5Qcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGxvZ2luUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgbG9hZGluZ18xLmRlZmF1bHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxvZ2luUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGxvZ2luKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB3eC5sb2dpbih7XG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGUyU2Vzc2lvbihyZXMuY29kZSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHR5cGU6IFwic3lzdGVtLWVycm9yXCIsIHJlczogcmVzIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5yZXBvcnQoJ3d4X2xvZ2luJywgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0eXBlOiBcInN5c3RlbS1lcnJvclwiLCByZXM6IHJlcyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzZXRTZXNzaW9uKHNlc3Npb24pIHtcbiAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSBzZXNzaW9uO1xuICAgIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWU7XG4gICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgICAgICBkYXRhOiBTdHJpbmcoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSxcbiAgICAgICAgZGF0YTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjb2RlMlNlc3Npb24oY29kZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRhdGEsIG9iajtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5kYXRhID09PSBcImZ1bmN0aW9uXCIpKSByZXR1cm4gWzMsIDJdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5kYXRhKGNvZGUpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgM107XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmRhdGEgfHwge307XG4gICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMztcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uY29kZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmNvZGVOYW1lXSA9IGNvZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvZGUgPSBjb2RlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9iaiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LmZvcm1hdChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24udXJsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5tZXRob2QgfHwgJ0dFVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ2Z1bmN0aW9uJyA/IGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyKCkgOiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gY29uZmlnXzEuZGVmYXVsdC5iZWZvcmVTZW5kKG9iaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3gucmVxdWVzdChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JqKSwgeyBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ucmVwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQucmVwb3J0KGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5yZXBvcnQsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnN1Y2Nlc3MocmVzLmRhdGEsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogU3RyaW5nKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5nZXRFcnJvck1zZyhyZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdHlwZTogXCJodHRwLWVycm9yXCIsIHJlczogcmVzIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdHlwZTogXCJzeXN0ZW0tZXJyb3JcIiwgcmVzOiByZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGRlbFNlc3Npb24oKSB7XG4gICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gJyc7XG4gICAgd3gucmVtb3ZlU3RvcmFnZSh7XG4gICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZVxuICAgIH0pO1xuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBJbmZpbml0eTtcbiAgICAgICAgd3gucmVtb3ZlU3RvcmFnZSh7XG4gICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleVxuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYWluKHJlbGF0ZWRSZXF1ZXN0T2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHJldHJ5ID0gIXJlbGF0ZWRSZXF1ZXN0T2JqXG4gICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1haW4oKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7IH1cbiAgICAgICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVxdWVzdF8xLmRlZmF1bHQocmVsYXRlZFJlcXVlc3RPYmopLnRoZW4ocmVsYXRlZFJlcXVlc3RPYmouX3Jlc29sdmUpLmNhdGNoKHJlbGF0ZWRSZXF1ZXN0T2JqLl9yZWplY3QpOyB9O1xuICAgICAgICByZXR1cm4gY2hlY2tMb2dpbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPyBQcm9taXNlLnJlc29sdmUoKSA6IGNoZWNrU2Vzc2lvbigpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IF9hLnRpdGxlLCBjb250ZW50ID0gX2EuY29udGVudDtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZG9FcnJvcih0aXRsZSwgY29udGVudCwgcmV0cnkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiB0aXRsZSwgY29udGVudDogY29udGVudCB9KTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IF9hLnRpdGxlLCBjb250ZW50ID0gX2EuY29udGVudDtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZG9FcnJvcih0aXRsZSwgY29udGVudCwgcmV0cnkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiB0aXRsZSwgY29udGVudDogY29udGVudCB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgbWFpbjogbWFpbixcbiAgICBzZXRTZXNzaW9uOiBzZXRTZXNzaW9uLFxuICAgIGRlbFNlc3Npb246IGRlbFNlc3Npb25cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ6YzJsdmJrMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMM05sYzNOcGIyNU5ZVzVoWjJWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zTUVOQlFXOURPMEZCUTNCRExDdERRVUY1UXp0QlFVTjZReXgxUkVGQmFVUTdRVUZEYWtRc2JVUkJRVFpETzBGQlF6ZERMREpEUVVGeFF6dEJRVU55UXl3d1EwRkJiME03UVVGSmNFTXNTVUZCU1N4dFFrRkJiVUlzUjBGQlVTeEpRVUZKTEVOQlFVTTdRVUZGY0VNc1UwRkJVeXhaUVVGWk8wbEJRMnBDTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUlVGQlJUdFJRVU4wUWl4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCVHl4VlFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTk8xbEJRM0JFTEVsQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdXVUZEYmtNc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF6dG5Ra0ZEV2l4UFFVRlBPMjlDUVVWSUxFOUJRVThzVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTNKQ0xFTkJRVU03WjBKQlEwUXNTVUZCU1N4RlFVRktPMjlDUVVWSkxGVkJRVlVzUlVGQlJTeERRVUZETzI5Q1FVTmlMRTlCUVU4c1QwRkJUeXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETzNkQ1FVTnNRaXhQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETzI5Q1FVTnlRaXhEUVVGRExFVkJRVVVzVlVGQlF5eEhRVUZSTzNkQ1FVTlNMRTlCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTjJRaXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEVUN4RFFVRkRPMmRDUVVORUxGRkJRVkU3YjBKQlEwb3NTVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0dlFrRkRha01zTUVKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBRc1EwRkJRenRoUVVOS0xFTkJRVU1zUTBGQlFUdFJRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMHRCUTB3N1NVRkRSQ3hQUVVGUExHMUNRVUZ0UWl4RFFVRkRPMEZCUXk5Q0xFTkJRVU03UVVGSFJDeFRRVUZUTEhOQ1FVRnpRanRKUVVNelFpeEpRVUZKTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhQUVVGUExFVkJRVVU3VVVGRmFrSXNUMEZCVHl4SlFVRkpMRU5CUVVFN1MwRkRaRHRKUVVORUxFbEJRVWtzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZPMUZCUlhwRkxGVkJRVlVzUlVGQlJTeERRVUZETzFGQlEySXNUMEZCVHl4SlFVRkpMRU5CUVVFN1MwRkRaRHRKUVVORUxFOUJRVThzUzBGQlN5eERRVUZCTzBGQlEyaENMRU5CUVVNN1FVRkZSQ3hUUVVGVExGVkJRVlU3U1VGRFppeFBRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRlBMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3VVVGRGNrTXNTVUZCU1N4elFrRkJjMElzUlVGQlJTeEZRVUZGTzFsQlJURkNMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMmhETEU5QlFVOHNUMEZCVHl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU5zUWl4UFFVRlBMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJRM0pDTEVOQlFVTXNSVUZCUlN4VlFVRkRMRWRCUVZFN1owSkJRMUlzVDBGQlR5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka0lzUTBGQlF5eERRVUZETEVOQlFVRTdVMEZEVER0aFFVRk5PMWxCUlVnc1QwRkJUeXhQUVVGUExFVkJRVVVzUTBGQlF6dFRRVU53UWp0SlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVWRFTEVsQlFVa3NXVUZCV1N4SFFVRlJMRWxCUVVrc1EwRkJRenRCUVVVM1FpeFRRVUZUTEU5QlFVODdTVUZEV2l4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRk8xRkJRMllzV1VGQldTeEhRVUZITEVsQlFVa3NUMEZCVHl4RFFVRlBMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3V1VGRE4wTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU5VTEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1owSkJRM0JDTEU5QlFVOHNUMEZCVHl4RlFVRkZMRU5CUVVNN1dVRkRja0lzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1IwRkJSenRuUWtGRFZDeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRPMmRDUVVOd1FpeHBRa0ZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8yZENRVU5tTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM1pDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1EwRkJReXhEUVVGRExFTkJRVUU3UzBGRFREdEpRVU5FTEU5QlFVOHNXVUZCV1N4RFFVRkRPMEZCUTNoQ0xFTkJRVU03UVVGRlJDeFRRVUZUTEV0QlFVczdTVUZEVml4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGUExGVkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMDdVVUZEY2tNc1NVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVOdVF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUTB3c1QwRkJUeXhaUVVGRExFZEJRVWM3WjBKQlExQXNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRk8yOUNRVU5XTEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzNkQ1FVTjRRaXhQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETzI5Q1FVTnlRaXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCUXl4SFFVRkhPM2RDUVVOVUxFOUJRVThzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOMlFpeERRVUZETEVOQlFVTXNRMEZCUVR0cFFrRkRURHR4UWtGQlRUdHZRa0ZEU0N4UFFVRlBMRTFCUVUwc1EwRkJReXhGUVVGRExFbEJRVWtzUlVGQlJTeGpRVUZqTEVWQlFVVXNSMEZCUnl4TFFVRkJMRVZCUVVNc1EwRkJReXhEUVVGRE8ybENRVU01UXp0WlFVTk1MRU5CUVVNN1dVRkRSQ3hSUVVGUk8yZENRVU5LTEVsQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTJwRExEQkNRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNCRUxFTkJRVU03V1VGRFJDeEpRVUZKTEZsQlFVTXNSMEZCUnp0blFrRkRTaXhQUVVGUExFMUJRVTBzUTBGQlF5eEZRVUZETEVsQlFVa3NSVUZCUlN4alFVRmpMRVZCUVVVc1IwRkJSeXhMUVVGQkxFVkJRVU1zUTBGQlF5eERRVUZETzFsQlF5OURMRU5CUVVNN1UwRkRTaXhEUVVGRExFTkJRVUU3U1VGRFRpeERRVUZETEVOQlFVTXNRMEZCUVR0QlFVTk9MRU5CUVVNN1FVRkZSQ3hUUVVGVExGVkJRVlVzUTBGQlF5eFBRVUZsTzBsQlF5OUNMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVVjZRaXhuUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF6dEpRVVZvUXl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRWxCUVVrc1owSkJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSVHRSUVVOeVJDeG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4SFFVRkhMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1VVRkRka1VzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTldMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEdkQ1FVRm5RanRaUVVNMVFpeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETzFOQlEzSkRMRU5CUVVNc1EwRkJRVHRMUVVOTU8wbEJRMFFzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXp0UlFVTldMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEZkQlFYRkNPMUZCUTJwRExFbEJRVWtzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4N1MwRkRka0lzUTBGQlF5eERRVUZETzBGQlExQXNRMEZCUXp0QlFVVkVMRk5CUVdVc1dVRkJXU3hEUVVGRExFbEJRVms3T3pzN096dDVRa0ZIYUVNc1EwRkJRU3hQUVVGUExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1MwRkJTeXhWUVVGVkxFTkJRVUVzUlVGQkwwTXNZMEZCSzBNN2IwSkJRM2hETEZkQlFVMHNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkJPenR2UWtGQk5VTXNTVUZCU1N4SFFVRkhMRk5CUVhGRExFTkJRVU03T3p0dlFrRkZOME1zU1VGQlNTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdPenR2UWtGRk0wTXNTVUZCU1N4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVWQlFVVTdkMEpCUXk5Q0xFbEJRVWtzUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdjVUpCUXpsRE8zbENRVUZOTzNkQ1FVTklMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzNGQ1FVTndRanR2UWtGRlJ5eEhRVUZITEVkQlFVYzdkMEpCUTA0c1IwRkJSeXhGUVVGRkxIZENRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXp0M1FrRkRjRVFzU1VGQlNTeE5RVUZCTzNkQ1FVTktMRTFCUVUwc1JVRkJSU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRWxCUVVrc1MwRkJTenQzUWtGRE5VTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFRRVUZUTEV0QlFVc3NWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkJMRU5CUVVNc1EwRkJReXhuUWtGQlRTeERRVUZETEZOQlFWTTdjVUpCUTNoR0xFTkJRVUU3YjBKQlEwUXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeExRVUZMTEZWQlFWVXNSVUZCUlR0M1FrRkRla01zUjBGQlJ5eEhRVUZITEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzNGQ1FVTm9RenR2UWtGRlJDeFhRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRkRMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3TkVKQlF5OUNMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN05FSkJRMnBETEVWQlFVVXNRMEZCUXl4UFFVRlBMSFZDUVVOSUxFZEJRVWNzUzBGRFRpeFBRVUZQTEVWQlFWQXNWVUZCVVN4SFFVRnRSRHR2UTBGRGRrUXNTVUZCU1N4SFFVRkhMRU5CUVVNc1ZVRkJWU3hMUVVGTExFZEJRVWNzUlVGQlJUdDNRMEZGZUVJc1NVRkJTU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVN05FTkJRemRDTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdORU5CUXk5Q0xEQkNRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhuUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1MwRkJTeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZCTzNsRFFVTnVSVHQzUTBGRlJDeEpRVUZKTEVOQlFVTXNVMEZCUVN4RFFVRkRPM2REUVVOT0xFbEJRVWs3TkVOQlEwRXNRMEZCUXl4SFFVRkhMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzNsRFFVTnVSRHQzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0NVEwRkRXRHQzUTBGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRkZCUVZFc1JVRkJSVHMwUTBGRGRrSXNaMEpCUVUwc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZET3pSRFFVVnVRaXhuUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF6czBRMEZGYUVNc1NVRkJTU3huUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhKUVVGSkxHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVU3WjBSQlEzSkVMR2RDUVVGTkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dG5SRUZEZGtVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF6dHZSRUZEVml4SFFVRkhMRVZCUVVVc1owSkJRVTBzUTBGQlF5eG5Ra0ZCWjBJN2IwUkJRelZDTEVsQlFVa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTTdhVVJCUTNKRExFTkJRVU1zUTBGQlFUczJRMEZEVERzMFEwRkRSQ3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzJkRVFVTldMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEZkQlFWYzdaMFJCUTNaQ0xFbEJRVWtzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4N05rTkJRM1pDTEVOQlFVTXNRMEZCUXpzMFEwRkRTQ3hQUVVGUExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0NVEwRkRja0k3TmtOQlFVMDdORU5CUTBnc1QwRkJUeXhOUVVGTkxFTkJRVU1zYzBKQlFWa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dDVRMEZEYUVRN2NVTkJRMG83ZVVOQlFVMDdkME5CUTBnc1QwRkJUeXhOUVVGTkxFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNXVUZCV1N4RlFVRkZMRWRCUVVjc1MwRkJRU3hGUVVGRExFTkJRVU1zUTBGQlF6dHhRMEZETlVNN1owTkJRMHdzUTBGQlF6dG5RMEZEUkN4UlFVRlJPMmREUVVOU0xFTkJRVU1zUlVGRFJDeEpRVUZKTEVWQlFVVXNWVUZCUXl4SFFVRkhPMjlEUVVOT0xFOUJRVThzVFVGQlRTeERRVUZETEVWQlFVTXNTVUZCU1N4RlFVRkZMR05CUVdNc1JVRkJSU3hIUVVGSExFdEJRVUVzUlVGQlF5eERRVUZETEVOQlFVTTdaME5CUXk5RExFTkJRVU1zU1VGRFNDeERRVUZCTzNkQ1FVTk9MRU5CUVVNc1EwRkJReXhGUVVGQk96czdPME5CUTB3N1FVRkhSQ3hUUVVGVExGVkJRVlU3U1VGRFppeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGNFSXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVOaUxFZEJRVWNzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRmRCUVhGQ08wdEJRM0JETEVOQlFVTXNRMEZCUXp0SlFVTklMRWxCUVVrc1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJc1NVRkJTU3huUWtGQlRTeERRVUZETEdkQ1FVRm5RaXhGUVVGRk8xRkJRM0pFTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU5vUXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRE8xbEJRMklzUjBGQlJ5eEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1owSkJRV2RDTzFOQlF5OUNMRU5CUVVNc1EwRkJRVHRMUVVOTU8wRkJRMHdzUTBGQlF6dEJRVVZFTEZOQlFWTXNTVUZCU1N4RFFVRkRMR2xDUVVGelJEdEpRVU5vUlN4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGUExGVkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMDdVVUZEY2tNc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eHBRa0ZCYVVJN1dVRkZNVUlzUTBGQlF5eERRVUZETEdOQlFVMHNUMEZCUVN4SlFVRkpMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGc1F5eERRVUZyUXp0WlFVVXhReXhEUVVGRExFTkJRVU1zWTBGQlRTeFBRVUZCTEdsQ1FVRlBMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVFMVJpeERRVUUwUml4RFFVRkRPMUZCUTNwSExFOUJRVThzVlVGQlZTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRPMWxCUTNKQ0xFOUJRVThzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUVR0UlFVTjRSU3hEUVVGRExFVkJRVVVzVlVGQlF5eEZRVUZuUWp0blFrRkJaaXhMUVVGTExGZEJRVUVzUlVGQlJTeFBRVUZQTEdGQlFVRTdXVUZEWml4elFrRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRelZETEU5QlFVOHNUVUZCVFN4RFFVRkRMRVZCUVVNc1MwRkJTeXhQUVVGQkxFVkJRVVVzVDBGQlR5eFRRVUZCTEVWQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTktMRTlCUVU4c1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRGNrSXNRMEZCUXl4RlFVRkZMRlZCUVVNc1JVRkJaMEk3WjBKQlFXWXNTMEZCU3l4WFFVRkJMRVZCUVVVc1QwRkJUeXhoUVVGQk8xbEJRMllzYzBKQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTTFReXhQUVVGUExFMUJRVTBzUTBGQlF5eEZRVUZETEV0QlFVc3NUMEZCUVN4RlFVRkZMRTlCUVU4c1UwRkJRU3hGUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53UXl4RFFVRkRMRU5CUVVNc1EwRkJRVHRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMR3RDUVVGbE8wbEJRMWdzU1VGQlNTeE5RVUZCTzBsQlEwb3NWVUZCVlN4WlFVRkJPMGxCUTFZc1ZVRkJWU3haUVVGQk8wTkJRMklzUTBGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQnpkR0YwZFhNZ1puSnZiU0FuTGk0dmMzUnZjbVV2YzNSaGRIVnpKMXh1YVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnWlhKeWIzSklZVzVrYkdWeUlHWnliMjBnSnk0dlpYSnliM0pJWVc1a2JHVnlKMXh1YVcxd2IzSjBJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSWdabkp2YlNBbkxpOWtkWEpoZEdsdmJsSmxjRzl5ZEdWeUoxeHVhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR2Y21WeGRXVnpkRWhoYm1Sc1pYSW5YRzVwYlhCdmNuUWdiRzloWkdsdVp5Qm1jbTl0SUNjdUxpOTFkR2xzTDJ4dllXUnBibWNuWEc1cGJYQnZjblFnY21WeGRXVnpkQ0JtY205dElDY3VMaTloY0drdmNtVnhkV1Z6ZENkY2JtbHRjRzl5ZENCN0lFbFNaWEYxWlhOMFQzQjBhVzl1TENCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlCOUlHWnliMjBnWENJdUxpOXBiblJsY21aaFkyVmNJanRjYmx4dUx5b2c1NVNmNVpHOTVaR281cHlmNVlhRjVZK3E1WUdhNUxpQTVxeWg1NXFFWTJobFkydFRaWE56YVc5dUlDb3ZYRzVzWlhRZ1kyaGxZMnRUWlhOemFXOXVVSEp2YldselpUb2dZVzU1SUQwZ2JuVnNiRHRjYmx4dVpuVnVZM1JwYjI0Z1kyaGxZMnRUWlhOemFXOXVLQ2tnZTF4dUlDQWdJR2xtSUNnaFkyaGxZMnRUWlhOemFXOXVVSEp2YldselpTa2dlMXh1SUNBZ0lDQWdJQ0JqYUdWamExTmxjM05wYjI1UWNtOXRhWE5sSUQwZ2JtVjNJRkJ5YjIxcGMyVThkbTlwWkQ0b0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGNuUWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSGQ0TG1Ob1pXTnJVMlZ6YzJsdmJpaDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1ZqWTJWemN5Z3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1NW03NWIyVjVvQ0I1cHlKNXBXSTc3eU01TGlVNVp5bzVweXM1NVNmNVpHOTVaR281cHlmNVlhRjVwZWc2YUc3NVlhTjVxT0E2YXFNNUxxR1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSG92NGZtbko5Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZzVTJWemMybHZiaWdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHOU1iMmRwYmlncExuUm9aVzRvS0NrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlN3Z0tISmxjem9nWVc1NUtUMCtlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENoeVpYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YlhCc1pYUmxLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCbGJtUWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNXlaWEJ2Y25Rb0ozZDRYMk5vWldOclUyVnpjMmx2Ymljc0lITjBZWEowTENCbGJtUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCamFHVmphMU5sYzNOcGIyNVFjbTl0YVhObE8xeHVmVnh1WEc0dktpRGxpS1RtbHExelpYTnphVzl1NXBpdjVaQ201TGk2NTZtNjVvaVc1YmV5NkwrSDVweWZJQ292WEc1bWRXNWpkR2x2YmlCcGMxTmxjM05wYjI1RmVIQnBjbVZQY2tWdGNIUjVLQ2tnZTF4dUlDQWdJR2xtSUNnaGMzUmhkSFZ6TG5ObGMzTnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGc1YWFDNXA2YzU3eVQ1YTJZNUxpdDVyS2g1cHlKYzJWemMybHZibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlZ4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WVWFXMWxJQ1ltSUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncElENGdjM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVVwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGc1YWFDNXA2YzVweUo2SzYrNTcydTVweXM1Wnl3YzJWemMybHZidWU4aytXdG1PYVh0dW1YdE8rOGpPUzRsT2U4aytXdG1PYVh0dW1YdE9XM3N1V0lzRnh1SUNBZ0lDQWdJQ0JrWld4VFpYTnphVzl1S0NrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpWeHVmVnh1WEc1bWRXNWpkR2x2YmlCamFHVmphMHh2WjJsdUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpUeDJiMmxrUGlnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGMxTmxjM05wYjI1RmVIQnBjbVZQY2tWdGNIUjVLQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SU9heW9lYWNpZWVadSttWmh1YUFnZSs4ak9TNGplbWNnT2ltZ2VXR2pXTm9aV05yVTJWemMybHZibHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVabWxuTG1SdlRtOTBRMmhsWTJ0VFpYTnphVzl1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2IweHZaMmx1S0NrdWRHaGxiaWdvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc0lDaHlaWE02SUdGdWVTazlQbnRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtISmxjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1N3lUNWEyWTVMaXQ1cHlKYzJWemMybHZidVM0bE9hY3F1aS9oK2FjbjF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMHBYRzU5WEc1Y2JpOHFJT2VadSttWmh1YTFnZWVvaStlYWhIQnliMjFwYzJVZ0tpOWNibXhsZENCc2IyZHBibEJ5YjIxcGMyVTZJR0Z1ZVNBOUlHNTFiR3c3WEc1Y2JtWjFibU4wYVc5dUlHUnZURzluYVc0b0tTQjdYRzRnSUNBZ2FXWWdLQ0ZzYjJkcGJsQnliMjFwYzJVcElIdGNiaUFnSUNBZ0lDQWdiRzluYVc1UWNtOXRhWE5sSUQwZ2JtVjNJRkJ5YjIxcGMyVThkbTlwWkQ0b0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHOW5hVzRvS1M1MGFHVnVLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNiMmRwYmxCeWIyMXBjMlVnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtTNWpZWFJqYUNnb2NtVnpLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHOW5hVzVRY205dGFYTmxJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNiMkZrYVc1bkxtaHBaR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSEpsY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR3h2WjJsdVVISnZiV2x6WlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYkc5bmFXNG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxQSFp2YVdRK0tDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoY25RZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjYmlBZ0lDQWdJQ0FnZDNndWJHOW5hVzRvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjM1ZqWTJWemN5aHlaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZ6TG1OdlpHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOWtaVEpUWlhOemFXOXVLSEpsY3k1amIyUmxLUzUwYUdWdUtDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBMbU5oZEdOb0tDaHlaWE1wSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0h0MGVYQmxPaUJjSW5ONWMzUmxiUzFsY25KdmNsd2lMQ0J5WlhOOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWlc1a0lEMGdibVYzSUVSaGRHVW9LUzVuWlhSVWFXMWxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTV5WlhCdmNuUW9KM2Q0WDJ4dloybHVKeXdnYzNSaGNuUXNJR1Z1WkNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdabUZwYkNoeVpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtIdDBlWEJsT2lCY0luTjVjM1JsYlMxbGNuSnZjbHdpTENCeVpYTjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU2xjYmlBZ0lDQjlLVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnpaWFJUWlhOemFXOXVLSE5sYzNOcGIyNDZJSE4wY21sdVp5a2dlMXh1SUNBZ0lITjBZWFIxY3k1elpYTnphVzl1SUQwZ2MyVnpjMmx2Ymp0Y2JpQWdJQ0F2THlEbWphTGxtNTdtbmFYbm1vUnpaWE56YVc5dTc3eU01TGlONlp5QTZLYUI1WWFOWTJobFkydFRaWE56YVc5dVhHNGdJQ0FnWTI5dVptbG5MbVJ2VG05MFEyaGxZMnRUWlhOemFXOXVJRDBnZEhKMVpUdGNiaUFnSUNBdkx5RGxwb0xtbnB6bW5Jbm9ycjdudmE3bW5LemxuTEJ6WlhOemFXOXU2TCtINXB5ZjVwZTI2WmUwWEc0Z0lDQWdhV1lnS0dOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFZHbHRaU0FtSmlCamIyNW1hV2N1YzJWemMybHZia1Y0Y0dseVpVdGxlU2tnZTF4dUlDQWdJQ0FnSUNCemRHRjBkWE11YzJWemMybHZia1Y0Y0dseVpTQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwSUNzZ1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVlVhVzFsTzF4dUlDQWdJQ0FnSUNCM2VDNXpaWFJUZEc5eVlXZGxLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHdGxlVG9nWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WTFpYa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCa1lYUmhPaUJUZEhKcGJtY29jM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVVwWEc0Z0lDQWdJQ0FnSUgwcFhHNGdJQ0FnZlZ4dUlDQWdJSGQ0TG5ObGRGTjBiM0poWjJVb2UxeHVJQ0FnSUNBZ0lDQnJaWGs2SUdOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlNCaGN5QnpkSEpwYm1jc1hHNGdJQ0FnSUNBZ0lHUmhkR0U2SUhOMFlYUjFjeTV6WlhOemFXOXVYRzRnSUNBZ2ZTazdYRzU5WEc1Y2JtRnplVzVqSUdaMWJtTjBhVzl1SUdOdlpHVXlVMlZ6YzJsdmJpaGpiMlJsT2lCemRISnBibWNwSUh0Y2JpQWdJQ0JzWlhRZ1pHRjBZVG9nWVc1NU8xeHVJQ0FnSUM4dklHTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFllYVVyK2FNZ2VXSHZlYVZzRnh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFlTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJR1JoZEdFZ1BTQmhkMkZwZENCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNWtZWFJoS0dOdlpHVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHUmhkR0VnUFNCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNWtZWFJoSUh4OElIdDlPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9ZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1WTI5a1pVNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ1pHRjBZVnRqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1amIyUmxUbUZ0WlYwZ1BTQmpiMlJsTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR1JoZEdFdVkyOWtaU0E5SUdOdlpHVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJRzlpYWlBOUlIdGNiaUFnSUNBZ0lDQWdkWEpzT2lCeVpYRjFaWE4wU0dGdVpHeGxjaTVtYjNKdFlYUW9ZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1ZFhKc0tTeGNiaUFnSUNBZ0lDQWdaR0YwWVN4Y2JpQWdJQ0FnSUNBZ2JXVjBhRzlrT2lCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNXRaWFJvYjJRZ2ZId2dKMGRGVkNjc1hHNGdJQ0FnSUNBZ0lHaGxZV1JsY2pvZ2RIbHdaVzltSUdOdmJtWnBaeTV6WlhSSVpXRmtaWElnUFQwOUlDZG1kVzVqZEdsdmJpY2dQeUJqYjI1bWFXY3VjMlYwU0dWaFpHVnlLQ2s2SUdOdmJtWnBaeTV6WlhSSVpXRmtaWElzWEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtSmxabTl5WlZObGJtUWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vZ1BTQmpiMjVtYVdjdVltVm1iM0psVTJWdVpDaHZZbW9wTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2dvY21WemIyeDJaU3dnY21WcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J6ZEdGeWRDQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJQ0FnSUNCM2VDNXlaWEYxWlhOMEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM0dUxtOWlhaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITjFZMk5sYzNNb2NtVnpPaUJYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVTWlhGMVpYTjBVM1ZqWTJWemMwTmhiR3hpWVdOclVtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsY3k1emRHRjBkWE5EYjJSbElEMDlQU0F5TURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzZJQ1g1cGUyNUxpSzVvcWxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTV5WlhCdmNuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCbGJtUWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSMWNtRjBhVzl1VW1Wd2IzSjBaWEl1Y21Wd2IzSjBLR052Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG5KbGNHOXlkQ3dnYzNSaGNuUXNJR1Z1WkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY3lBOUlHTnZibVpwWnk1amIyUmxWRzlUWlhOemFXOXVMbk4xWTJObGMzTW9jbVZ6TG1SaGRHRXNJSEpsY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdjeUE5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBZWFIxY3k1elpYTnphVzl1SUQwZ2N6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJT2FOb3VXYm51YWRwZWVhaEhObGMzTnBiMjd2dkl6a3VJM3BuSURvcG9IbGhvMWphR1ZqYTFObGMzTnBiMjVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym1acFp5NWtiMDV2ZEVOb1pXTnJVMlZ6YzJsdmJpQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RGxwb0xtbnB6bW5Jbm9ycjdudmE3bW5LemxuTEJ6WlhOemFXOXU2TCtINXB5ZjVwZTI2WmUwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVlVhVzFsSUNZbUlHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVVnUFNCdVpYY2dSR0YwWlNncExtZGxkRlJwYldVb0tTQXJJR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsVkdsdFpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IzZUM1elpYUlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2EyVjVPaUJqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlV0bGVTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVG9nVTNSeWFXNW5LSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjNlQzV6WlhSVGRHOXlZV2RsS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnJaWGs2SUdOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtZWFJoT2lCemRHRjBkWE11YzJWemMybHZibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9aWEp5YjNKSVlXNWtiR1Z5TG1kbGRFVnljbTl5VFhObktISmxjeWtwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYW1WamRDaDdkSGx3WlRvZ1hDSm9kSFJ3TFdWeWNtOXlYQ0lzSUhKbGMzMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyMXdiR1YwWlNncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc09pQW9jbVZ6S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENoN2RIbHdaVG9nWENKemVYTjBaVzB0WlhKeWIzSmNJaXdnY21WemZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dUx5b2c1cmlGNTZtNmMyVnpjMmx2YmlBcUwxeHVablZ1WTNScGIyNGdaR1ZzVTJWemMybHZiaWdwSUh0Y2JpQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJpQTlJQ2NuTzF4dUlDQWdJSGQ0TG5KbGJXOTJaVk4wYjNKaFoyVW9lMXh1SUNBZ0lDQWdJQ0JyWlhrNklHTnZibVpwWnk1elpYTnphVzl1VG1GdFpTQmhjeUJ6ZEhKcGJtZGNiaUFnSUNCOUtUdGNiaUFnSUNCcFppQW9ZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZVYVcxbElDWW1JR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsUzJWNUtTQjdYRzRnSUNBZ0lDQWdJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsSUQwZ1NXNW1hVzVwZEhrN1hHNGdJQ0FnSUNBZ0lIZDRMbkpsYlc5MlpWTjBiM0poWjJVb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYTJWNU9pQmpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVXRsZVZ4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnYldGcGJpaHlaV3hoZEdWa1VtVnhkV1Z6ZEU5aWFqODZJRWxTWlhGMVpYTjBUM0IwYVc5dUlId2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVThkbTlwWkQ0b0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JzWlhRZ2NtVjBjbmtnUFNBaGNtVnNZWFJsWkZKbGNYVmxjM1JQWW1wY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SU9XbWd1YWVuT2F5b2VhY2llV0ZzK2lCbE9lYWhPaXZ0K2F4Z3UrOGpPbUhqZWl2bGVXTnMraXdnK2VVcU9pSHF1aTZxMXh1SUNBZ0lDQWdJQ0FnSUNBZ1B5QW9LU0E5UGlCdFlXbHVLQ2t1ZEdobGJpaHlaWE52YkhabEtTNWpZWFJqYUNoeVpXcGxZM1FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURscG9MbW5wem1uSW5saGJQb2daVG5tb1RvcjdmbXNZTHZ2SXpwaDQzb3I1WGxqYlBvc0lQbmxLam1pWURsaGJQb2daVG5tb1RvcjdmbXNZSmNiaUFnSUNBZ0lDQWdJQ0FnSURvZ0tDa2dQVDRnY21WeGRXVnpkQ2h5Wld4aGRHVmtVbVZ4ZFdWemRFOWlhaWt1ZEdobGJpaHlaV3hoZEdWa1VtVnhkV1Z6ZEU5aWFpNWZjbVZ6YjJ4MlpTa3VZMkYwWTJnb2NtVnNZWFJsWkZKbGNYVmxjM1JQWW1vdVgzSmxhbVZqZENrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamFHVmphMHh2WjJsdUtDa3VkR2hsYmlnb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXVabWxuTG1SdlRtOTBRMmhsWTJ0VFpYTnphVzl1SUQ4Z1VISnZiV2x6WlM1eVpYTnZiSFpsS0NrZ09pQmphR1ZqYTFObGMzTnBiMjRvS1Z4dUlDQWdJQ0FnSUNCOUxDQW9lM1JwZEd4bExDQmpiMjUwWlc1MGZTa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaWEp5YjNKSVlXNWtiR1Z5TG1SdlJYSnliM0lvZEdsMGJHVXNJR052Ym5SbGJuUXNJSEpsZEhKNUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9lM1JwZEd4bExDQmpiMjUwWlc1MGZTazdYRzRnSUNBZ0lDQWdJSDBwTG5Sb1pXNG9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVW9LVHRjYmlBZ0lDQWdJQ0FnZlN3Z0tIdDBhWFJzWlN3Z1kyOXVkR1Z1ZEgwcFBUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlMbVJ2UlhKeWIzSW9kR2wwYkdVc0lHTnZiblJsYm5Rc0lISmxkSEo1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb2UzUnBkR3hsTENCamIyNTBaVzUwZlNrN1hHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4dUlDQWdJRzFoYVc0c1hHNGdJQ0FnYzJWMFUyVnpjMmx2Yml4Y2JpQWdJQ0JrWld4VFpYTnphVzl1WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZGVmYXVsdENvbmZpZyA9IHtcbiAgICBzZXNzaW9uTmFtZTogXCJzZXNzaW9uXCIsXG4gICAgbG9naW5UcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGNvZGVUb1Nlc3Npb246IHtcbiAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7IH1cbiAgICB9LFxuICAgIHN1Y2Nlc3NUcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgc2V0SGVhZGVyOiB7fSxcbiAgICB1cmxQZXJmaXg6IFwiXCIsXG4gICAgZG9Ob3RDaGVja1Nlc3Npb246IGZhbHNlLFxuICAgIGVycm9yVGl0bGU6IFwi5pON5L2c5aSx6LSlXCIsXG4gICAgZXJyb3JDb250ZW50OiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICBlcnJvclJldHJ5QnRuOiBmYWxzZSxcbiAgICByZUxvZ2luTGltaXQ6IDMsXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcbiAgICByZXBvcnRDR0k6IGZhbHNlLFxuICAgIG1vY2tKc29uOiBmYWxzZSxcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcbiAgICBzZXNzaW9uRXhwaXJlS2V5OiBcInNlc3Npb25FeHBpcmVLZXlcIixcbiAgICBlcnJvckhhbmRsZXI6IG51bGwsXG4gICAgYmVmb3JlU2VuZDogbnVsbCxcbiAgICBzeXN0ZW1FcnJvckhhbmRsZXI6IG51bGwsXG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gZGVmYXVsdENvbmZpZztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyOXVabWxuTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM04wYjNKbEwyTnZibVpwWnk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVVZCTEVsQlFVMHNZVUZCWVN4SFFVRm5RanRKUVVNdlFpeFhRVUZYTEVWQlFVVXNVMEZCVXp0SlFVTjBRaXhaUVVGWk8xRkJRMUlzVDBGQlR5eExRVUZMTEVOQlFVRTdTVUZEYUVJc1EwRkJRenRKUVVORUxHRkJRV0VzUlVGQlJUdFJRVU5ZTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1QwRkJUeXhGUVVGRkxHTkJRVTBzUTBGQlF6dExRVU51UWp0SlFVTkVMR05CUVdNN1VVRkRWaXhQUVVGUExFbEJRVWtzUTBGQlFUdEpRVU5tTEVOQlFVTTdTVUZEUkN4VFFVRlRMRVZCUVVVc1JVRkJSVHRKUVVOaUxGTkJRVk1zUlVGQlJTeEZRVUZGTzBsQlEySXNhVUpCUVdsQ0xFVkJRVVVzUzBGQlN6dEpRVU40UWl4VlFVRlZMRVZCUVVVc1RVRkJUVHRKUVVOc1FpeFpRVUZaTEVWQlFWb3NWVUZCWVN4SFFVRlJPMUZCUTJwQ0xFOUJRVThzUjBGQlJ5eERRVUZCTzBsQlEyUXNRMEZCUXp0SlFVTkVMR0ZCUVdFc1JVRkJSU3hMUVVGTE8wbEJRM0JDTEZsQlFWa3NSVUZCUlN4RFFVRkRPMGxCUTJZc1lVRkJZU3hGUVVGRkxFbEJRVWs3U1VGRGJrSXNVMEZCVXl4RlFVRkZMRXRCUVVzN1NVRkRhRUlzVVVGQlVTeEZRVUZGTEV0QlFVczdTVUZEWml4VlFVRlZMRVZCUVVVc1MwRkJTenRKUVVWcVFpeG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSTdTVUZGY0VNc1dVRkJXU3hGUVVGRkxFbEJRVWs3U1VGRmJFSXNWVUZCVlN4RlFVRkZMRWxCUVVrN1NVRkZhRUlzYTBKQlFXdENMRVZCUVVVc1NVRkJTVHREUVVNelFpeERRVUZETzBGQlJVWXNhMEpCUVdVc1lVRkJZU3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dTVWx1YVhSUGNIUnBiMjRnZlNCbWNtOXRJQ2N1TGk5cGJuUmxjbVpoWTJVblhHNWNibU52Ym5OMElHUmxabUYxYkhSRGIyNW1hV2M2SUVsSmJtbDBUM0IwYVc5dUlEMGdlMXh1SUNBZ0lITmxjM05wYjI1T1lXMWxPaUJjSW5ObGMzTnBiMjVjSWl4Y2JpQWdJQ0JzYjJkcGJsUnlhV2RuWlhJb0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlZ4dUlDQWdJSDBzWEc0Z0lDQWdZMjlrWlZSdlUyVnpjMmx2YmpvZ2UxeHVJQ0FnSUNBZ0lDQjFjbXc2SUZ3aVhDSXNYRzRnSUNBZ0lDQWdJSE4xWTJObGMzTTZJQ2dwUFQ0Z2UzMWNiaUFnSUNCOUxGeHVJQ0FnSUhOMVkyTmxjM05VY21sbloyVnlLQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpWeHVJQ0FnSUgwc1hHNGdJQ0FnYzJWMFNHVmhaR1Z5T2lCN2ZTeGNiaUFnSUNCMWNteFFaWEptYVhnNklGd2lYQ0lzWEc0Z0lDQWdaRzlPYjNSRGFHVmphMU5sYzNOcGIyNDZJR1poYkhObExGeHVJQ0FnSUdWeWNtOXlWR2wwYkdVNklGd2k1cE9ONUwyYzVhU3g2TFNsWENJc1hHNGdJQ0FnWlhKeWIzSkRiMjUwWlc1MEtISmxjem9nWVc1NUtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE5jYmlBZ0lDQjlMRnh1SUNBZ0lHVnljbTl5VW1WMGNubENkRzQ2SUdaaGJITmxMRnh1SUNBZ0lISmxURzluYVc1TWFXMXBkRG9nTXl4Y2JpQWdJQ0JsY25KdmNrTmhiR3hpWVdOck9pQnVkV3hzTEZ4dUlDQWdJSEpsY0c5eWRFTkhTVG9nWm1Gc2MyVXNYRzRnSUNBZ2JXOWphMHB6YjI0NklHWmhiSE5sTEZ4dUlDQWdJR2RzYjJKaGJFUmhkR0U2SUdaaGJITmxMRnh1SUNBZ0lDOHZJSE5sYzNOcGIyN2xuS2ptbkt6bG5MRG52SlBsclpqbm1vUnJaWGxjYmlBZ0lDQnpaWE56YVc5dVJYaHdhWEpsUzJWNU9pQmNJbk5sYzNOcGIyNUZlSEJwY21WTFpYbGNJaXhjYmlBZ0lDQXZMeURvaDZybHJwcmt1WW5wbEpub3I2L2xwSVRua0libGg3M21sYkJjYmlBZ0lDQmxjbkp2Y2toaGJtUnNaWEk2SUc1MWJHd3NYRzRnSUNBZ0x5OGc2SyszNXJHQzVZK1I2WUNCNVltTjc3eU01bytRNUw2YmFHOXZhK2U3bWVXOGdPV1BrZWlBaGVpSHF1V3VtdVM1aWVTL3J1YVV1ZVdQa2VtQWdlV0doZVd1dVZ4dUlDQWdJR0psWm05eVpWTmxibVE2SUc1MWJHd3NYRzRnSUNBZ0x5OGc2SWVxNWE2YTVMbUo1N083NTd1ZjZaU1o2Syt2NWFTRTU1Q0c1WWU5NXBXdzc3eUk1NzJSNTd1YzZaU1o2Syt2Nzd5SlhHNGdJQ0FnYzNsemRHVnRSWEp5YjNKSVlXNWtiR1Z5T2lCdWRXeHNMRnh1ZlR0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1pHVm1ZWFZzZEVOdmJtWnBaenRjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzZXNzaW9uOiAnJyxcbiAgICBzZXNzaW9uRXhwaXJlOiBJbmZpbml0eVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzUmhkSFZ6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM04wYjNKbEwzTjBZWFIxY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTEd0Q1FVRmxPMGxCUTFnc1QwRkJUeXhGUVVGRkxFVkJRVms3U1VGRmNrSXNZVUZCWVN4RlFVRkZMRkZCUVd0Q08wTkJRemRDTEVOQlFVRWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYRzRnSUNBZ2MyVnpjMmx2YmpvZ0p5Y2dZWE1nYzNSeWFXNW5MRnh1SUNBZ0lDOHZJSE5sYzNOcGIyN292NGZtbkovbm1vVG1sN2JwbDdUbmdybGNiaUFnSUNCelpYTnphVzl1Ulhod2FYSmxPaUJKYm1acGJtbDBlU0JoY3lCdWRXMWlaWEpjYm4wZ1lYTWdZVzU1WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBMSU5FRkVFRCA9IC9cXHUwMDBBL2c7XG52YXIgQ0FSUklBR0VSRVRVUk4gPSAvXFx1MDAwRC9nO1xudmFyIExJTkVfU0VQQVJBVE9SID0gL1xcdTIwMjgvZztcbnZhciBQQVJBR1JBUEhfU0VQQVJBVE9SID0gL1xcdTIwMjkvZztcbmZ1bmN0aW9uIHJlcGxhY2UocmVzKSB7XG4gICAgcmVzID0gcmVzLnJlcGxhY2UoTElORUZFRUQsIFwiXCIpO1xuICAgIHJlcyA9IHJlcy5yZXBsYWNlKENBUlJJQUdFUkVUVVJOLCBcIlwiKTtcbiAgICByZXMgPSByZXMucmVwbGFjZShMSU5FX1NFUEFSQVRPUiwgXCJcIik7XG4gICAgcmVzID0gcmVzLnJlcGxhY2UoUEFSQUdSQVBIX1NFUEFSQVRPUiwgXCJcIik7XG4gICAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHJlcGxhY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhbk52YmxOMWNHVnljMlYwTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM1YwYVd3dmFuTnZibE4xY0dWeWMyVjBMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlYwRXNTVUZCVFN4UlFVRlJMRWRCUVVjc1UwRkJVeXhEUVVGRE8wRkJRek5DTEVsQlFVMHNZMEZCWXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVOcVF5eEpRVUZOTEdOQlFXTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRha01zU1VGQlRTeHRRa0ZCYlVJc1IwRkJSeXhUUVVGVExFTkJRVU03UVVGRmRFTXNVMEZCZDBJc1QwRkJUeXhEUVVGRExFZEJRVmM3U1VGRGVrTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUTJoRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU4wUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eGpRVUZqTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eEhRVUZITEVOQlFVRTdRVUZEV2l4RFFVRkRPMEZCVGtRc01FSkJUVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpQWdWU3N5TURJNElHRnVaQ0JWS3pJd01qa2dZWEpsSUdGc2JHOTNaV1FnYVc1emFXUmxJSE4wY21sdVozTWdhVzRnU2xOUFRpQW9ZWE1nWVd4c0lHeHBkR1Z5WVd4Y2JpQWdJQ0JWYm1samIyUmxJR05vWVhKaFkzUmxjbk1wSUdKMWRDQktZWFpoVTJOeWFYQjBJR1JsWm1sdVpYTWdkR2hsYlNCaGN5QnVaWGRzYVc1bFhHNGdJQ0FnYzJWd1pYSmhkRzl5Y3k0Z1FtVmpZWFZ6WlNCdWJ5QnNhWFJsY21Gc0lHNWxkMnhwYm1WeklHRnlaU0JoYkd4dmQyVmtJR2x1SUdFZ2MzUnlhVzVuTENCMGFHbHpYRzRnSUNBZ1kyRjFjMlZ6SUdFZ1VHRnljMlZGY25KdmNpQnBiaUIwYUdVZ1luSnZkM05sY2k0Z1YyVWdkMjl5YXlCaGNtOTFibVFnZEdocGN5QnBjM04xWlNCaWVWeHVJQ0FnSUhKbGNHeGhZMmx1WnlCMGFHVnRJSGRwZEdnZ2RHaGxJR1Z6WTJGd1pXUWdkbVZ5YzJsdmJpNGdWR2hwY3lCemFHOTFiR1FnWW1VZ2MyRm1aU0JpWldOaGRYTmxYRzRnSUNBZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCS1UwOU9JSE53WldNc0lIUm9aWE5sSUdOb1lYSmhZM1JsY25NZ1lYSmxJQ3B2Ym14NUtpQjJZV3hwWkNCcGJuTnBaR1ZjYmlBZ0lDQmhJSE4wY21sdVp5QmhibVFnYzJodmRXeGtJSFJvWlhKbFptOXlaU0J1YjNRZ1ltVWdjSEpsYzJWdWRDQmhibmtnYjNSb1pYSWdjR3hoWTJWekxseHVYRzRnSUNBZ2JXOXlaU0JwYm1admNtMWhkR2x2YmpvZ2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwzUmpNemt2Y0hKdmNHOXpZV3d0YW5OdmJpMXpkWEJsY25ObGRGeHVLaTljYmx4dVkyOXVjM1FnVEVsT1JVWkZSVVFnUFNBdlhGeDFNREF3UVM5bk8xeHVZMjl1YzNRZ1EwRlNVa2xCUjBWU1JWUlZVazRnUFNBdlhGeDFNREF3UkM5bk8xeHVZMjl1YzNRZ1RFbE9SVjlUUlZCQlVrRlVUMUlnUFNBdlhGeDFNakF5T0M5bk8xeHVZMjl1YzNRZ1VFRlNRVWRTUVZCSVgxTkZVRUZTUVZSUFVpQTlJQzljWEhVeU1ESTVMMmM3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdaMWJtTjBhVzl1SUhKbGNHeGhZMlVvY21Wek9pQnpkSEpwYm1jcElIdGNiaUFnY21WeklEMGdjbVZ6TG5KbGNHeGhZMlVvVEVsT1JVWkZSVVFzSUZ3aVhDSXBPMXh1SUNCeVpYTWdQU0J5WlhNdWNtVndiR0ZqWlNoRFFWSlNTVUZIUlZKRlZGVlNUaXdnWENKY0lpazdYRzRnSUhKbGN5QTlJSEpsY3k1eVpYQnNZV05sS0V4SlRrVmZVMFZRUVZKQlZFOVNMQ0JjSWx3aUtUdGNiaUFnY21WeklEMGdjbVZ6TG5KbGNHeGhZMlVvVUVGU1FVZFNRVkJJWDFORlVFRlNRVlJQVWl3Z1hDSmNJaWs3WEc0Z0lISmxkSFZ5YmlCeVpYTmNibjFjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIHNob3codHh0KSB7XG4gICAgd3guc2hvd1RvYXN0KHtcbiAgICAgICAgdGl0bGU6IHR5cGVvZiB0eHQgPT09ICdib29sZWFuJyA/ICfliqDovb3kuK0nIDogdHh0LFxuICAgICAgICBpY29uOiAnbG9hZGluZycsXG4gICAgICAgIG1hc2s6IHRydWUsXG4gICAgICAgIGR1cmF0aW9uOiA2MDAwMFxuICAgIH0pO1xufVxuZnVuY3Rpb24gaGlkZSgpIHtcbiAgICB3eC5oaWRlVG9hc3Qoe30pO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHNob3c6IHNob3csXG4gICAgaGlkZTogaGlkZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHOWhaR2x1Wnk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTkxZEdsc0wyeHZZV1JwYm1jdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4VFFVRlRMRWxCUVVrc1EwRkJReXhIUVVGeFFqdEpRVU12UWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRE8xRkJRMVFzUzBGQlN5eEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhPMUZCUXpkRExFbEJRVWtzUlVGQlJTeFRRVUZUTzFGQlEyWXNTVUZCU1N4RlFVRkZMRWxCUVVrN1VVRkRWaXhSUVVGUkxFVkJRVVVzUzBGQlN6dExRVU5zUWl4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzVTBGQlV5eEpRVUZKTzBsQlExUXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU55UWl4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeEpRVUZKTEUxQlFVRTdTVUZEU2l4SlFVRkpMRTFCUVVFN1EwRkRVQ3hEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lablZ1WTNScGIyNGdjMmh2ZHloMGVIUTZJR0p2YjJ4bFlXNGdmQ0J6ZEhKcGJtY3BJSHRjYmlBZ0lDQjNlQzV6YUc5M1ZHOWhjM1FvZTF4dUlDQWdJQ0FnSUNCMGFYUnNaVG9nZEhsd1pXOW1JSFI0ZENBOVBUMGdKMkp2YjJ4bFlXNG5JRDhnSitXS29PaTl2ZVM0clNjZ09pQjBlSFFzWEc0Z0lDQWdJQ0FnSUdsamIyNDZJQ2RzYjJGa2FXNW5KeXhjYmlBZ0lDQWdJQ0FnYldGemF6b2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ1pIVnlZWFJwYjI0NklEWXdNREF3WEc0Z0lDQWdmU2xjYm4xY2JseHVablZ1WTNScGIyNGdhR2xrWlNncElIdGNiaUFnSUNCM2VDNW9hV1JsVkc5aGMzUW9lMzBwTzF4dWZWeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYRzRnSUNBZ2MyaHZkeXhjYmlBZ0lDQm9hV1JsWEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gc2V0UGFyYW1zKHVybCwgcGFyYW1zKSB7XG4gICAgaWYgKHVybCA9PT0gdm9pZCAwKSB7IHVybCA9IFwiXCI7IH1cbiAgICB2YXIgcXVlcnlTdHJpbmdJbmRleCA9IHVybC5pbmRleE9mKFwiP1wiKTtcbiAgICB2YXIga3ZwID0ge307XG4gICAgaWYgKHF1ZXJ5U3RyaW5nSW5kZXggPj0gMCkge1xuICAgICAgICB2YXIgb2xkUXVlcnlTdHJpbmdfMSA9IHVybC5zdWJzdHIocXVlcnlTdHJpbmdJbmRleCArIDEpLnNwbGl0KFwiJlwiKTtcbiAgICAgICAgb2xkUXVlcnlTdHJpbmdfMS5mb3JFYWNoKGZ1bmN0aW9uICh4LCBpKSB7XG4gICAgICAgICAgICB2YXIga3YgPSBvbGRRdWVyeVN0cmluZ18xW2ldLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgICAgIGt2cFtrdlswXV0gPSBrdlsxXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGt2cCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBrdnApLCBwYXJhbXMpO1xuICAgIHZhciBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKGt2cClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBrZXkgKyBcIj1cIiArIGVuY29kZVVSSShrdnBba2V5XSk7XG4gICAgfSlcbiAgICAgICAgLmpvaW4oXCImXCIpO1xuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoMCwgcXVlcnlTdHJpbmdJbmRleCArIDEpICsgcXVlcnlTdHJpbmc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gdXJsICsgXCI/XCIgKyBxdWVyeVN0cmluZztcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgc2V0UGFyYW1zOiBzZXRQYXJhbXNcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkWEpzTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM1YwYVd3dmRYSnNMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN1FVRkJRU3hUUVVGVExGTkJRVk1zUTBGQlF5eEhRVUZuUWl4RlFVRkZMRTFCUVdNN1NVRkJhRU1zYjBKQlFVRXNSVUZCUVN4UlFVRm5RanRKUVVNdlFpeEpRVUZOTEdkQ1FVRm5RaXhIUVVGWExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRiRVFzU1VGQlNTeEhRVUZITEVkQlFWRXNSVUZCUlN4RFFVRkRPMGxCUTJ4Q0xFbEJRVWtzWjBKQlFXZENMRWxCUVVrc1EwRkJReXhGUVVGRk8xRkJRM1pDTEVsQlFVMHNaMEpCUVdNc1IwRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWdVJTeG5Ra0ZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlEzaENMRWxCUVUwc1JVRkJSU3hIUVVGaExHZENRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyeEVMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGRrSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRUanRKUVVWRUxFZEJRVWNzZVVKQlFVOHNSMEZCUnl4SFFVRkxMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSVEZDTEVsQlFVMHNWMEZCVnl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETzFOQlF5OUNMRWRCUVVjc1EwRkJReXhWUVVGQkxFZEJRVWM3VVVGRFNpeFBRVUZWTEVkQlFVY3NVMEZCU1N4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZITEVOQlFVTTdTVUZETTBNc1EwRkJReXhEUVVGRE8xTkJRMFFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUldZc1NVRkJTU3huUWtGQlowSXNTVUZCU1N4RFFVRkRMRVZCUVVVN1VVRkRka0lzVDBGQlR5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3huUWtGQlowSXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhYUVVGWExFTkJRVU03UzBGREwwUTdVMEZCVFR0UlFVTklMRTlCUVU4c1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eFhRVUZYTEVOQlFVTTdTMEZEYkVNN1FVRkRUQ3hEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4VFFVRlRMRmRCUVVFN1EwRkRXaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lablZ1WTNScGIyNGdjMlYwVUdGeVlXMXpLSFZ5YkRvZ2MzUnlhVzVuSUQwZ1hDSmNJaXdnY0dGeVlXMXpPaUJ2WW1wbFkzUXBJSHRjYmlBZ0lDQmpiMjV6ZENCeGRXVnllVk4wY21sdVowbHVaR1Y0T2lCdWRXMWlaWElnUFNCMWNtd3VhVzVrWlhoUFppaGNJajljSWlrN1hHNGdJQ0FnYkdWMElHdDJjRG9nWVc1NUlEMGdlMzA3WEc0Z0lDQWdhV1lnS0hGMVpYSjVVM1J5YVc1blNXNWtaWGdnUGowZ01Da2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnZiR1JSZFdWeWVWTjBjbWx1WnlBOUlIVnliQzV6ZFdKemRISW9jWFZsY25sVGRISnBibWRKYm1SbGVDQXJJREVwTG5Od2JHbDBLRndpSmx3aUtUdGNiaUFnSUNBZ0lDQWdMeThnUUhSekxXbG5ibTl5WlZ4dUlDQWdJQ0FnSUNCdmJHUlJkV1Z5ZVZOMGNtbHVaeTVtYjNKRllXTm9LQ2g0TENCcEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCcmRqb2djM1J5YVc1blcxMGdQU0J2YkdSUmRXVnllVk4wY21sdVoxdHBYUzV6Y0d4cGRDaGNJajFjSWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JyZG5CYmEzWmJNRjFkSUQwZ2EzWmJNVjA3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUd0MmNDQTlJSHN1TGk1cmRuQXNJQzR1TG5CaGNtRnRjMzA3WEc1Y2JpQWdJQ0JqYjI1emRDQnhkV1Z5ZVZOMGNtbHVaeUE5SUU5aWFtVmpkQzVyWlhsektHdDJjQ2xjYmlBZ0lDQWdJQ0FnTG0xaGNDaHJaWGtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR0FrZTJ0bGVYMDlKSHRsYm1OdlpHVlZVa2tvYTNad1cydGxlVjBwZldBN1hHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ0lDQWdJQzVxYjJsdUtGd2lKbHdpS1R0Y2JseHVJQ0FnSUdsbUlDaHhkV1Z5ZVZOMGNtbHVaMGx1WkdWNElENDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWeWJDNXpkV0p6ZEhKcGJtY29NQ3dnY1hWbGNubFRkSEpwYm1kSmJtUmxlQ0FySURFcElDc2djWFZsY25sVGRISnBibWM3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIVnliQ0FySUZ3aVAxd2lJQ3NnY1hWbGNubFRkSEpwYm1jN1hHNGdJQ0FnZlZ4dWZWeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYRzRnSUNBZ2MyVjBVR0Z5WVcxelhHNTlPMXh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy52ZXJzaW9uID0gdm9pZCAwO1xudmFyIHZlcnNpb24gPSBfX1ZFUlNJT05fXztcbmV4cG9ydHMudmVyc2lvbiA9IHZlcnNpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZ5YzJsdmJpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUwzTnlZeTkyWlhKemFXOXVMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3p0QlFVVkJMRWxCUVUwc1QwRkJUeXhIUVVGSExGZEJRVmNzUTBGQlF6dEJRVVZ1UWl3d1FrRkJUeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1SbFkyeGhjbVVnWTI5dWMzUWdYMTlXUlZKVFNVOU9YMTg2SUhOMGNtbHVaenRjYmx4dVkyOXVjM1FnZG1WeWMybHZiaUE5SUY5ZlZrVlNVMGxQVGw5Zk8xeHVYRzVsZUhCdmNuUWdleUIyWlhKemFXOXVJSDA3WEc0aVhYMD0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZVJlcXVlc3Qvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRDb25maWcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRTZXNzaW9uLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvaW5pdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL2xvZ2luLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL3NldFNlc3Npb24udHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS91cGxvYWRGaWxlLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhY2hlTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhdGNoSGFuZGxlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2R1cmF0aW9uUmVwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9tb2NrTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvcmVzcG9uc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvc2Vzc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3N0b3JlL2NvbmZpZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvc3RvcmUvc3RhdHVzLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL2pzb25TdXBlcnNldC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvdXRpbC9sb2FkaW5nLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL3VybC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNsRmE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkNBQTJDLCszQjs7Ozs7Ozs7Ozs7O0FDWjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxD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QTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsbWdDOzs7Ozs7Ozs7Ozs7QUNqQjlCO0FBQ2I7QUFDQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLHlCQUF5QixVQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsVUFBVTtBQUNuQyw0QkFBNEIsYUFBYTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQywrd0c7Ozs7Ozs7Ozs7OztBQy9DOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGNBQWMsT0FBVztBQUN6QjtBQUNBLDJDQUEyQyx1VyIsImZpbGUiOiJ3ZVJlcXVlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC50c1wiKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybFBlcmZpeDogY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXgsXG4gICAgICAgIHNlc3Npb25FeHBpcmVUaW1lOiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lLFxuICAgICAgICBzZXNzaW9uRXhwaXJlS2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgIHNlc3Npb25FeHBpcmU6IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVxuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVoyVjBRMjl1Wm1sbkxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDJGd2FTOW5aWFJEYjI1bWFXY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zTUVOQlFXOURPMEZCUlhCRExHMUNRVUZsTzBsQlExZ3NUMEZCVHp0UlFVTklMRk5CUVZNc1JVRkJSU3huUWtGQlRTeERRVUZETEZOQlFWTTdVVUZETTBJc2FVSkJRV2xDTEVWQlFVVXNaMEpCUVUwc1EwRkJReXhwUWtGQmFVSTdVVUZETTBNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVUwc1EwRkJReXhuUWtGQlowSTdVVUZEZWtNc1lVRkJZU3hGUVVGRkxHZENRVUZOTEVOQlFVTXNZVUZCWVR0TFFVTjBReXhEUVVGQk8wRkJRMHdzUTBGQlF5eEZRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhHNXBiWEJ2Y25RZ2MzUmhkSFZ6SUdaeWIyMGdKeTR1TDNOMGIzSmxMM04wWVhSMWN5ZGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdLQ2tnUFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUhWeWJGQmxjbVpwZURvZ1kyOXVabWxuTG5WeWJGQmxjbVpwZUN4Y2JpQWdJQ0FnSUNBZ2MyVnpjMmx2YmtWNGNHbHlaVlJwYldVNklHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxWR2x0WlN4Y2JpQWdJQ0FnSUNBZ2MyVnpjMmx2YmtWNGNHbHlaVXRsZVRvZ1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVkxaWGtzWEc0Z0lDQWdJQ0FnSUhObGMzTnBiMjVGZUhCcGNtVTZJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsWEc0Z0lDQWdmVnh1ZlR0Y2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlYwVTJWemMybHZiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2WjJWMFUyVnpjMmx2Ymk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERCRFFVRnZRenRCUVVWd1F5eHRRa0ZCWlR0SlFVTllMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVRTdRVUZEZWtJc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElITjBZWFIxY3lCbWNtOXRJQ2N1TGk5emRHOXlaUzl6ZEdGMGRYTW5YRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJQ2dwSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYzNSaGRIVnpMbk5sYzNOcGIyNWNibjFjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICBPYmplY3QuYXNzaWduKGNvbmZpZ18xLmRlZmF1bHQsIHBhcmFtcyk7XG4gICAgY29uc29sZS5sb2coY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlKTtcbiAgICB0cnkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lKSB8fCAnJztcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHsgfVxuICAgIHRyeSB7XG4gICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IHd4LmdldFN0b3JhZ2VTeW5jKGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSB8fCBcInNlc3Npb25FeHBpcmVLZXlcIikgfHwgSW5maW5pdHk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7IH1cbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1cGRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZhVzVwZEM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERCRFFVRnZRenRCUVVOd1F5d3dRMEZCYjBNN1FVRkhjRU1zYlVKQlFXVXNWVUZCUXl4TlFVRnRRanRKUVVNdlFpeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2RDUVVGTkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdTVUZET1VJc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wbEJReTlDTEVsQlFVazdVVUZEUVN4blFrRkJUU3hEUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMR2RDUVVGTkxFTkJRVU1zVjBGQldTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMHRCUTJwRk8wbEJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNSMEZCUlR0SlFVTmtMRWxCUVVrN1VVRkRRU3huUWtGQlRTeERRVUZETEdGQlFXRXNSMEZCUnl4RlFVRkZMRU5CUVVNc1kwRkJZeXhEUVVGRExHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU03UzBGRGRrYzdTVUZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3hIUVVGRk8wRkJRMnhDTEVOQlFVTXNSVUZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCamIyNW1hV2NnWm5KdmJTQW5MaTR2YzNSdmNtVXZZMjl1Wm1sbkoxeHVhVzF3YjNKMElITjBZWFIxY3lCbWNtOXRJQ2N1TGk5emRHOXlaUzl6ZEdGMGRYTW5YRzVwYlhCdmNuUWdleUJKU1c1cGRFOXdkR2x2YmlCOUlHWnliMjBnSnk0dUwybHVkR1Z5Wm1GalpTZGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdLSEJoY21GdGN6b2dTVWx1YVhSUGNIUnBiMjRwSUQwK0lIdGNiaUFnSUNCUFltcGxZM1F1WVhOemFXZHVLR052Ym1acFp5d2djR0Z5WVcxektUdGNiaUFnSUNCamIyNXpiMnhsTG14dlp5aGpiMjVtYVdjdVpYSnliM0pVYVhSc1pTazdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNGdQU0IzZUM1blpYUlRkRzl5WVdkbFUzbHVZeWhqYjI1bWFXY3VjMlZ6YzJsdmJrNWhiV1VoS1NCOGZDQW5KenRjYmlBZ0lDQjlJR05oZEdOb0lDaGxLU0I3ZlZ4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lITjBZWFIxY3k1elpYTnphVzl1Ulhod2FYSmxJRDBnZDNndVoyVjBVM1J2Y21GblpWTjVibU1vWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WTFpYa2dmSHdnWENKelpYTnphVzl1Ulhod2FYSmxTMlY1WENJcElIeDhJRWx1Wm1sdWFYUjVPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHQ5WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQubWFpbigpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liRzluYVc0dWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12WVhCcEwyeHZaMmx1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTWtSQlFYRkVPMEZCUlhKRUxHMUNRVUZsTzBsQlExZ3NUMEZCVHl4M1FrRkJZeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZCTzBGQlEyaERMRU5CUVVNc1JVRkJRU0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0J6WlhOemFXOXVUV0Z1WVdkbGNpQm1jbTl0SUNjdUxpOXRiMlIxYkdVdmMyVnpjMmx2YmsxaGJtRm5aWEluWEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNncElEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2MyVnpjMmx2YmsxaGJtRm5aWEl1YldGcGJpZ3BYRzU5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4uL21vZHVsZS9yZXF1ZXN0SGFuZGxlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC5yZXF1ZXN0KG9iaik7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtVnhkV1Z6ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmNtVnhkV1Z6ZEM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERKRVFVRnhSRHRCUVVkeVJDeHRRa0ZCWlN4VlFVRlJMRWRCUVcxQ08wbEJRM1JETEU5QlFVOHNkMEpCUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdRVUZEZEVNc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR1TDIxdlpIVnNaUzl5WlhGMVpYTjBTR0Z1Wkd4bGNpZGNibWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUlIMGdabkp2YlNBbkxpNHZhVzUwWlhKbVlXTmxKMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0E4VkZKbGMzQStLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRwT2lCUWNtOXRhWE5sUEZSU1pYTndQaUE5UGlCN1hHNGdJQ0FnY21WMGRYSnVJSEpsY1hWbGMzUklZVzVrYkdWeUxuSmxjWFZsYzNRb2IySnFLVnh1ZlZ4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzZXNzaW9uTWFuYWdlcl8xID0gcmVxdWlyZShcIi4uL21vZHVsZS9zZXNzaW9uTWFuYWdlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoc2Vzc2lvbikge1xuICAgIHNlc3Npb25NYW5hZ2VyXzEuZGVmYXVsdC5zZXRTZXNzaW9uKHNlc3Npb24pO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlYwVTJWemMybHZiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2YzJWMFUyVnpjMmx2Ymk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERKRVFVRnhSRHRCUVVWeVJDeHRRa0ZCWlN4VlFVRkRMRTlCUVdVN1NVRkRNMElzZDBKQlFXTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGRrTXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSE5sYzNOcGIyNU5ZVzVoWjJWeUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5elpYTnphVzl1VFdGdVlXZGxjaWRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnS0hObGMzTnBiMjQ2SUhOMGNtbHVaeWtnUFQ0Z2UxeHVJQ0FnSUhObGMzTnBiMjVOWVc1aFoyVnlMbk5sZEZObGMzTnBiMjRvYzJWemMybHZiaWs3WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgcmVxdWVzdEhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvcmVxdWVzdEhhbmRsZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQudXBsb2FkRmlsZShvYmopO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkWEJzYjJGa1JtbHNaUzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2ZFhCc2IyRmtSbWxzWlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERKRVFVRnhSRHRCUVVkeVJDeHRRa0ZCWlN4VlFVRkRMRWRCUVhOQ08wbEJRMnhETEU5QlFVOHNkMEpCUVdNc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdRVUZEZWtNc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR1TDIxdlpIVnNaUzl5WlhGMVpYTjBTR0Z1Wkd4bGNpZGNibWx0Y0c5eWRDQjdJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVJSDBnWm5KdmJTQmNJaTR1TDJsdWRHVnlabUZqWlZ3aU8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQW9iMkpxT2lCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCeVpYRjFaWE4wU0dGdVpHeGxjaTUxY0d4dllXUkdhV3hsS0c5aWFpbGNibjFjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBpbml0XzEgPSByZXF1aXJlKFwiLi9hcGkvaW5pdFwiKTtcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi9hcGkvcmVxdWVzdFwiKTtcbnZhciB1cGxvYWRGaWxlXzEgPSByZXF1aXJlKFwiLi9hcGkvdXBsb2FkRmlsZVwiKTtcbnZhciBzZXRTZXNzaW9uXzEgPSByZXF1aXJlKFwiLi9hcGkvc2V0U2Vzc2lvblwiKTtcbnZhciBsb2dpbl8xID0gcmVxdWlyZShcIi4vYXBpL2xvZ2luXCIpO1xudmFyIGdldFNlc3Npb25fMSA9IHJlcXVpcmUoXCIuL2FwaS9nZXRTZXNzaW9uXCIpO1xudmFyIGdldENvbmZpZ18xID0gcmVxdWlyZShcIi4vYXBpL2dldENvbmZpZ1wiKTtcbnZhciB2ZXJzaW9uXzEgPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xudmFyIHdlUmVxdWVzdE9iamVjdCA9IHtcbiAgICBpbml0OiBpbml0XzEuZGVmYXVsdCxcbiAgICByZXF1ZXN0OiByZXF1ZXN0XzEuZGVmYXVsdCxcbiAgICB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlXzEuZGVmYXVsdCxcbiAgICBzZXRTZXNzaW9uOiBzZXRTZXNzaW9uXzEuZGVmYXVsdCxcbiAgICBsb2dpbjogbG9naW5fMS5kZWZhdWx0LFxuICAgIGdldFNlc3Npb246IGdldFNlc3Npb25fMS5kZWZhdWx0LFxuICAgIGdldENvbmZpZzogZ2V0Q29uZmlnXzEuZGVmYXVsdCxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uXzEudmVyc2lvblxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IHdlUmVxdWVzdE9iamVjdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTl6Y21NdmFXNWtaWGd1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3h0UTBGQk5rSTdRVUZETjBJc2VVTkJRVzFETzBGQlEyNURMQ3REUVVGNVF6dEJRVU42UXl3clEwRkJlVU03UVVGRGVrTXNjVU5CUVN0Q08wRkJReTlDTEN0RFFVRjVRenRCUVVONlF5dzJRMEZCZFVNN1FVRkZka01zY1VOQlFXMURPMEZCUlc1RExFbEJRVTBzWlVGQlpTeEhRVUZqTzBsQlEycERMRWxCUVVrc1owSkJRVUU3U1VGRFNpeFBRVUZQTEcxQ1FVRkJPMGxCUTFBc1ZVRkJWU3h6UWtGQlFUdEpRVU5XTEZWQlFWVXNjMEpCUVVFN1NVRkRWaXhMUVVGTExHbENRVUZCTzBsQlEwd3NWVUZCVlN4elFrRkJRVHRKUVVOV0xGTkJRVk1zY1VKQlFVRTdTVUZEVkN4UFFVRlBMRzFDUVVGQk8wTkJRMUlzUTBGQlF6dEJRVVZHTEd0Q1FVRmxMR1ZCUVdVc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JwYm1sMElHWnliMjBnWENJdUwyRndhUzlwYm1sMFhDSmNibWx0Y0c5eWRDQnlaWEYxWlhOMElHWnliMjBnWENJdUwyRndhUzl5WlhGMVpYTjBYQ0pjYm1sdGNHOXlkQ0IxY0d4dllXUkdhV3hsSUdaeWIyMGdYQ0l1TDJGd2FTOTFjR3h2WVdSR2FXeGxYQ0pjYm1sdGNHOXlkQ0J6WlhSVFpYTnphVzl1SUdaeWIyMGdYQ0l1TDJGd2FTOXpaWFJUWlhOemFXOXVYQ0pjYm1sdGNHOXlkQ0JzYjJkcGJpQm1jbTl0SUZ3aUxpOWhjR2t2Ykc5bmFXNWNJbHh1YVcxd2IzSjBJR2RsZEZObGMzTnBiMjRnWm5KdmJTQmNJaTR2WVhCcEwyZGxkRk5sYzNOcGIyNWNJbHh1YVcxd2IzSjBJR2RsZEVOdmJtWnBaeUJtY205dElGd2lMaTloY0drdloyVjBRMjl1Wm1sblhDSmNibWx0Y0c5eWRDQjdJSGRsVW1WeGRXVnpkQ0I5SUdaeWIyMGdYQ0l1TDJsdWRHVnlabUZqWlZ3aVhHNXBiWEJ2Y25RZ2V5QjJaWEp6YVc5dUlIMGdabkp2YlNBbkxpOTJaWEp6YVc5dUoxeHVYRzVqYjI1emRDQjNaVkpsY1hWbGMzUlBZbXBsWTNRNklIZGxVbVZ4ZFdWemRDQTlJSHRjYmlBZ2FXNXBkQ3hjYmlBZ2NtVnhkV1Z6ZEN4Y2JpQWdkWEJzYjJGa1JtbHNaU3hjYmlBZ2MyVjBVMlZ6YzJsdmJpeGNiaUFnYkc5bmFXNHNYRzRnSUdkbGRGTmxjM05wYjI0c1hHNGdJR2RsZEVOdmJtWnBaeXhjYmlBZ2RtVnljMmx2Ymx4dWZUdGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdkMlZTWlhGMVpYTjBUMkpxWldOME8xeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBnZXQob2JqKSB7XG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd3guZ2V0U3RvcmFnZSh7XG4gICAgICAgIGtleTogb2JqLm9yaWdpblVybCxcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgaWYgKG9iai5jYWNoZSA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgICh0eXBlb2Ygb2JqLmNhY2hlID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNhY2hlKHJlcy5kYXRhKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVzLmRhdGEsIHsgaXNDYWNoZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgb2JqLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHNldChvYmosIHJlYWxEYXRhKSB7XG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG9iai5jYWNoZSA9PT0gdHJ1ZSB8fFxuICAgICAgICAodHlwZW9mIG9iai5jYWNoZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jYWNoZShyZWFsRGF0YSkpKSB7XG4gICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAga2V5OiBvYmoub3JpZ2luVXJsLFxuICAgICAgICAgICAgZGF0YTogcmVhbERhdGFcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIGdldDogZ2V0LFxuICAgIHNldDogc2V0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTJGamFHVk5ZVzVoWjJWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDIxdlpIVnNaUzlqWVdOb1pVMWhibUZuWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZGUVN4VFFVRlRMRWRCUVVjc1EwRkJReXhIUVVGdFFqdEpRVU0xUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUlVGQlJUdFJRVU5vUWl4UFFVRlBPMHRCUTFZN1NVRkRSQ3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzFGQlExWXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhUUVVGVE8xRkJRMnhDTEU5QlFVOHNXVUZCUlN4SFFVRkhPMWxCUTFJc1NVRkRTU3hIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEVsQlFVazdaMEpCUTJ4Q0xFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRlZCUVZVc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVNeFJEdG5Ra0ZEUlN4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFOUJRVThzUzBGQlN5eFZRVUZWTEVWQlFVVTdiMEpCUTI1RExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVWQlFVTXNRMEZCUXl4RFFVRkJPMmxDUVVONlF6dGhRVU5LTzFsQlEwUXNTVUZCUnl4UFFVRlBMRWRCUVVjc1EwRkJReXhSUVVGUkxFdEJRVXNzVlVGQlZTeEZRVUZGTzJkQ1FVTnVReXhIUVVGSExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdZVUZEYkVJN1VVRkRUQ3hEUVVGRE8wdEJRMG9zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMRk5CUVZNc1IwRkJSeXhEUVVGRExFZEJRVzFDTEVWQlFVY3NVVUZCZVVJN1NVRkRlRVFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRVZCUVVVN1VVRkRhRUlzVDBGQlR6dExRVU5XTzBsQlEwUXNTVUZEU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFbEJRVWs3VVVGRGJFSXNRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhMUVVGTExFdEJRVXNzVlVGQlZTeEpRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUlVGRE1VUTdVVUZEUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xbEJRMVlzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4VFFVRlRPMWxCUTJ4Q0xFbEJRVWtzUlVGQlJTeFJRVUZSTzFOQlEycENMRU5CUVVNc1EwRkJRVHRMUVVOTU8wRkJRMHdzUTBGQlF6dEJRVVZFTEd0Q1FVRmxPMGxCUTFnc1IwRkJSeXhMUVVGQk8wbEJRMGdzUjBGQlJ5eExRVUZCTzBOQlEwNHNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFbFNaWEYxWlhOMFQzQjBhVzl1SUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lYRzVjYm1aMWJtTjBhVzl1SUdkbGRDaHZZbW82SUVsU1pYRjFaWE4wVDNCMGFXOXVLU0I3WEc0Z0lDQWdhV1lnS0NGdlltb3ViM0pwWjJsdVZYSnNLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzRnSUNBZ2QzZ3VaMlYwVTNSdmNtRm5aU2g3WEc0Z0lDQWdJQ0FnSUd0bGVUb2diMkpxTG05eWFXZHBibFZ5YkN4Y2JpQWdJQ0FnSUNBZ2MzVmpZMlZ6Y3lBb2NtVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxtTmhZMmhsSUQwOVBTQjBjblZsSUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tIUjVjR1Z2WmlCdlltb3VZMkZqYUdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQnZZbW91WTJGamFHVW9jbVZ6TG1SaGRHRXBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdWMzVmpZMlZ6Y3lBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1emRXTmpaWE56S0hKbGN5NWtZWFJoTENCN2FYTkRZV05vWlRvZ2RISjFaWDBwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWW9kSGx3Wlc5bUlHOWlhaTVqYjIxd2JHVjBaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxtTnZiWEJzWlhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUtWeHVmVnh1WEc1bWRXNWpkR2x2YmlCelpYUW9iMkpxT2lCSlVtVnhkV1Z6ZEU5d2RHbHZiaUFzSUhKbFlXeEVZWFJoT2lCemRISnBibWNnZkNCdlltcGxZM1FwSUh0Y2JpQWdJQ0JwWmlBb0lXOWlhaTV2Y21sbmFXNVZjbXdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0FnSUc5aWFpNWpZV05vWlNBOVBUMGdkSEoxWlNCOGZGeHVJQ0FnSUNBZ0lDQW9kSGx3Wlc5bUlHOWlhaTVqWVdOb1pTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JRzlpYWk1allXTm9aU2h5WldGc1JHRjBZU2twWEc0Z0lDQWdLU0I3WEc0Z0lDQWdJQ0FnSUhkNExuTmxkRk4wYjNKaFoyVW9lMXh1SUNBZ0lDQWdJQ0FnSUNBZ2EyVjVPaUJ2WW1vdWIzSnBaMmx1VlhKc0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdGMFlUb2djbVZoYkVSaGRHRmNiaUFnSUNBZ0lDQWdmU2xjYmlBZ0lDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUh0Y2JpQWdJQ0JuWlhRc1hHNGdJQ0FnYzJWMFhHNTlPMXh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNhdGNoSGFuZGxlciA9IHZvaWQgMDtcbnZhciBlcnJvckhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2Vycm9ySGFuZGxlclwiKTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgRXJyb3JXaXRoRGF0YSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVycm9yV2l0aERhdGEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRXJyb3JXaXRoRGF0YShtc2csIGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEgPT09IHZvaWQgMCkgeyBkYXRhID0ge307IH1cbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbXNnKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gRXJyb3JXaXRoRGF0YTtcbn0oRXJyb3IpKTtcbmZ1bmN0aW9uIGNhdGNoSGFuZGxlcihlLCBvYmosIHJlamVjdCkge1xuICAgIHZhciB0eXBlID0gZS50eXBlLCByZXMgPSBlLnJlcztcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDYWxsYmFjayhvYmosIHJlcyk7XG4gICAgfVxuICAgIGlmIChvYmouY2F0Y2hFcnJvcikge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2h0dHAtZXJyb3InKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihyZXMuc3RhdHVzQ29kZS50b1N0cmluZygpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ2xvZ2ljLWVycm9yJykge1xuICAgICAgICAgICAgdmFyIG1zZyA9IGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZ2V0RXJyb3JNc2cocmVzKTtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yV2l0aERhdGEobXNnLmNvbnRlbnQsIHJlcy5kYXRhKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ3N5c3RlbS1lcnJvcicpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKHJlcy5lcnJNc2cpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmICh0eXBlID09PSAnaHR0cC1lcnJvcicgfHwgdHlwZSA9PT0gJ2xvZ2ljLWVycm9yJykge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ3N5c3RlbS1lcnJvcicpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LnN5c3RlbUVycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLmNhdGNoSGFuZGxlciA9IGNhdGNoSGFuZGxlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyRjBZMmhJWVc1a2JHVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyMXZaSFZzWlM5allYUmphRWhoYm1Sc1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3T3pzN096dEJRVU5CTEN0RFFVRXdRenRCUVVNeFF5d3dRMEZCYjBNN1FVRkZjRU03U1VGQk5FSXNhVU5CUVVzN1NVRkhOMElzZFVKQlFWa3NSMEZCVnl4RlFVRkZMRWxCUVdNN1VVRkJaQ3h4UWtGQlFTeEZRVUZCTEZOQlFXTTdVVUZCZGtNc1dVRkRTU3hyUWtGQlRTeEhRVUZITEVOQlFVTXNVMEZGWWp0UlFVUkhMRXRCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZET3p0SlFVTnlRaXhEUVVGRE8wbEJRMHdzYjBKQlFVTTdRVUZCUkN4RFFVRkRMRUZCVUVRc1EwRkJORUlzUzBGQlN5eEhRVTlvUXp0QlFVVkVMRk5CUVZNc1dVRkJXU3hEUVVGRExFTkJRV1VzUlVGQlJTeEhRVUYxUXl4RlFVRkZMRTFCUVRoQ08wbEJRMnhITEVsQlFVRXNTVUZCU1N4SFFVRlZMRU5CUVVNc1MwRkJXQ3hGUVVGRkxFZEJRVWNzUjBGQlN5eERRVUZETEVsQlFVNHNRMEZCVHp0SlFVZDRRaXhKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4aFFVRmhMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xRkJRelZETEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTnNRenRKUVVWRUxFbEJRVWtzUjBGQlJ5eERRVUZETEZWQlFWVXNSVUZCUlR0UlFVTm9RaXhKUVVGSkxFbEJRVWtzUzBGQlN5eFpRVUZaTEVWQlFVVTdXVUZEZGtJc1QwRkJUeXhOUVVGTkxFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlFVVXNSMEZCYzBRc1EwRkJReXhWUVVGVkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUXpOSE8yRkJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NZVUZCWVN4RlFVRkZPMWxCUXk5Q0xFbEJRVWtzUjBGQlJ5eEhRVUZITEhOQ1FVRlpMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRWEZFTEVOQlFVTXNRMEZCUXp0WlFVTXhSaXhQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEdGQlFXRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhGUVVGSExFZEJRWE5FTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVNdlJ6dGhRVUZOTEVsQlFVa3NTVUZCU1N4TFFVRkxMR05CUVdNc1JVRkJSVHRaUVVOb1F5eFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTjRRenRoUVVGTk8xbEJSVWdzVDBGQlR5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRjRUk3UzBGRFNqdFRRVUZOTzFGQlEwZ3NTVUZCU1N4SlFVRkpMRXRCUVVzc1dVRkJXU3hKUVVGSkxFbEJRVWtzUzBGQlN5eGhRVUZoTEVWQlFVVTdXVUZEYWtRc1QwRkJUeXh6UWtGQldTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJjVVFzUTBGQlF5eERRVUZETzFOQlF6bEdPMkZCUVUwc1NVRkJSeXhKUVVGSkxFdEJRVXNzWTBGQll5eEZRVUZGTzFsQlF5OUNMRTlCUVU4c2MwSkJRVmtzUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVRoRExFTkJRVU1zUTBGQlF6dFRRVU40Ump0aFFVRk5PMWxCUlVnc1QwRkJUeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEY0VJN1MwRkRTanRCUVVOTUxFTkJRVU03UVVGRlVTeHZRMEZCV1NJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFbFNaWEYxWlhOMFQzQjBhVzl1TENCSlZYQnNiMkZrUm1sc1pVOXdkR2x2Yml3Z1NVVnljbTl5VDJKcVpXTjBJSDBnWm5KdmJTQmNJaTR1TDJsdWRHVnlabUZqWlZ3aU8xeHVhVzF3YjNKMElHVnljbTl5U0dGdVpHeGxjaUJtY205dElGd2lMaTlsY25KdmNraGhibVJzWlhKY0lqdGNibWx0Y0c5eWRDQmpiMjVtYVdjZ1puSnZiU0FuTGk0dmMzUnZjbVV2WTI5dVptbG5KMXh1WEc1amJHRnpjeUJGY25KdmNsZHBkR2hFWVhSaElHVjRkR1Z1WkhNZ1JYSnliM0lnZTF4dUlDQWdJR1JoZEdFNklHRnVlVHRjYmx4dUlDQWdJR052Ym5OMGNuVmpkRzl5S0cxelp6b2djM1J5YVc1bkxDQmtZWFJoT2lCaGJua2dQU0I3ZlNrZ2UxeHVJQ0FnSUNBZ0lDQnpkWEJsY2lodGMyY3BPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtUmhkR0VnUFNCa1lYUmhPMXh1SUNBZ0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z1kyRjBZMmhJWVc1a2JHVnlLR1U2SUVsRmNuSnZjazlpYW1WamRDd2diMkpxT2lCSlVtVnhkV1Z6ZEU5d2RHbHZiaUI4SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1TENCeVpXcGxZM1E2SUNoeVpXRnpiMjQvT2lCaGJua3BJRDArSUhadmFXUXBJSHRjYmlBZ0lDQmpiMjV6ZENCN0lIUjVjR1VzSUhKbGN5QjlJRDBnWlR0Y2JseHVJQ0FnSUM4dklPV21ndWFlbk9hY2llbUZqZWU5cnVlN24rUzRnT21VbWVpdnIrV2JudWl3ZytXSHZlYVZzTys4ak9XSW1lYUpwK2loak9XdWcxeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1WeWNtOXlRMkZzYkdKaFkyc2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1bWFXY3VaWEp5YjNKRFlXeHNZbUZqYXlodlltb3NJSEpsY3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHOWlhaTVqWVhSamFFVnljbTl5S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbElEMDlQU0FuYUhSMGNDMWxjbkp2Y2ljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9ibVYzSUVWeWNtOXlLQ2h5WlhNZ1lYTWdWMlZqYUdGMFRXbHVhWEJ5YjJkeVlXMHVVbVZ4ZFdWemRGTjFZMk5sYzNORFlXeHNZbUZqYTFKbGMzVnNkQ2t1YzNSaGRIVnpRMjlrWlM1MGIxTjBjbWx1WnlncEtTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjJ4dloybGpMV1Z5Y205eUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJRzF6WnlBOUlHVnljbTl5U0dGdVpHeGxjaTVuWlhSRmNuSnZjazF6WnloeVpYTWdZWE1nVjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VW1WeGRXVnpkRk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtHNWxkeUJGY25KdmNsZHBkR2hFWVhSaEtHMXpaeTVqYjI1MFpXNTBMQ0FvY21WeklHRnpJRmRsWTJoaGRFMXBibWx3Y205bmNtRnRMbEpsY1hWbGMzUlRkV05qWlhOelEyRnNiR0poWTJ0U1pYTjFiSFFwTG1SaGRHRXBLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxJRDA5UFNBbmMzbHpkR1Z0TFdWeWNtOXlKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENodVpYY2dSWEp5YjNJb2NtVnpMbVZ5Y2sxelp5a3BPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1WVcyNUx1V2FuUHBsSm5vcjY5Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb1pTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pTQTlQVDBnSjJoMGRIQXRaWEp5YjNJbklIeDhJSFI1Y0dVZ1BUMDlJQ2RzYjJkcFl5MWxjbkp2Y2ljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJsY25KdmNraGhibVJzWlhJdWJHOW5hV05GY25KdmNpaHZZbW9zSUhKbGN5QmhjeUJYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVTWlhGMVpYTjBVM1ZqWTJWemMwTmhiR3hpWVdOclVtVnpkV3gwS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUtIUjVjR1VnUFQwOUlDZHplWE4wWlcwdFpYSnliM0luS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaWEp5YjNKSVlXNWtiR1Z5TG5ONWMzUmxiVVZ5Y205eUtHOWlhaXdnY21WeklHRnpJRmRsWTJoaGRFMXBibWx3Y205bmNtRnRMa2RsYm1WeVlXeERZV3hzWW1GamExSmxjM1ZzZENrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlEbGhiYmt1NVpxYyttVW1laXZyMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGFtVmpkQ2hsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JuMWNibHh1Wlhod2IzSjBJSHNnWTJGMFkyaElZVzVrYkdWeUlIMGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHJlcXVlc3RfMSA9IHJlcXVpcmUoXCIuLi9hcGkvcmVxdWVzdFwiKTtcbmZ1bmN0aW9uIHN0YXJ0KG9iaikge1xuICAgIG9iai5fcmVwb3J0U3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG59XG5mdW5jdGlvbiBlbmQob2JqKSB7XG4gICAgb2JqLl9yZXBvcnRFbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgaWYgKG9iai5yZXBvcnQgJiYgb2JqLl9yZXBvcnRTdGFydFRpbWUpIHtcbiAgICAgICAgcmVwb3J0KG9iai5yZXBvcnQsIG9iai5fcmVwb3J0U3RhcnRUaW1lLCBvYmouX3JlcG9ydEVuZFRpbWUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlcG9ydChuYW1lLCBzdGFydFRpbWUsIGVuZFRpbWUpIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQucmVwb3J0Q0dJID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0kobmFtZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCByZXF1ZXN0XzEuZGVmYXVsdCk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbmQ6IGVuZCxcbiAgICByZXBvcnQ6IHJlcG9ydFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpIVnlZWFJwYjI1U1pYQnZjblJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTl0YjJSMWJHVXZaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVTndReXd3UTBGQmIwTTdRVUZIY0VNc1UwRkJVeXhMUVVGTExFTkJRVU1zUjBGQmRVTTdTVUZEYkVRc1IwRkJSeXhEUVVGRExHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYUVRc1EwRkJRenRCUVVWRUxGTkJRVk1zUjBGQlJ5eERRVUZETEVkQlFYVkRPMGxCUTJoRUxFZEJRVWNzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU14UXl4SlFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhGUVVGRk8xRkJRMjVETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJaMElzUlVGQlJTeEhRVUZITEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzUjBGQlJ5eERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRPMHRCUXpGRk8wRkJRMHdzUTBGQlF6dEJRVVZFTEZOQlFWTXNUVUZCVFN4RFFVRkRMRWxCUVZrc1JVRkJSU3hUUVVGcFFpeEZRVUZGTEU5QlFXVTdTVUZETlVRc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNVMEZCVXl4TFFVRkxMRlZCUVZVc1JVRkJSVHRSUVVONFF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4cFFrRkJUeXhEUVVGRExFTkJRVU03UzBGRGRrUTdRVUZEVEN4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeExRVUZMTEU5QlFVRTdTVUZEVEN4SFFVRkhMRXRCUVVFN1NVRkRTQ3hOUVVGTkxGRkJRVUU3UTBGRFZDeERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhHNXBiWEJ2Y25RZ2NtVnhkV1Z6ZENCbWNtOXRJQ2N1TGk5aGNHa3ZjbVZ4ZFdWemRDZGNibWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUxDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpQjlJR1p5YjIwZ1hDSXVMaTlwYm5SbGNtWmhZMlZjSWp0Y2JseHVablZ1WTNScGIyNGdjM1JoY25Rb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpQjhJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVLU0I3WEc0Z0lDQWdiMkpxTGw5eVpYQnZjblJUZEdGeWRGUnBiV1VnUFNCdVpYY2dSR0YwWlNncExtZGxkRlJwYldVb0tUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pXNWtLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRnZkNCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlrZ2UxeHVJQ0FnSUc5aWFpNWZjbVZ3YjNKMFJXNWtWR2x0WlNBOUlHNWxkeUJFWVhSbEtDa3VaMlYwVkdsdFpTZ3BPMXh1SUNBZ0lHbG1LRzlpYWk1eVpYQnZjblFnSmlZZ2IySnFMbDl5WlhCdmNuUlRkR0Z5ZEZScGJXVXBJSHRjYmlBZ0lDQWdJQ0FnY21Wd2IzSjBLRzlpYWk1eVpYQnZjblFnWVhNZ2MzUnlhVzVuTENCdlltb3VYM0psY0c5eWRGTjBZWEowVkdsdFpTd2diMkpxTGw5eVpYQnZjblJGYm1SVWFXMWxLVHRjYmlBZ0lDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlISmxjRzl5ZENodVlXMWxPaUJ6ZEhKcGJtY3NJSE4wWVhKMFZHbHRaVG9nYm5WdFltVnlMQ0JsYm1SVWFXMWxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NXlaWEJ2Y25SRFIwa2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1bWFXY3VjbVZ3YjNKMFEwZEpLRzVoYldVc0lITjBZWEowVkdsdFpTd2daVzVrVkdsdFpTd2djbVZ4ZFdWemRDazdYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEc0Z0lDQWdjM1JoY25Rc1hHNGdJQ0FnWlc1a0xGeHVJQ0FnSUhKbGNHOXlkRnh1ZlZ4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgcmVxdWVzdF8xID0gcmVxdWlyZShcIi4uL2FwaS9yZXF1ZXN0XCIpO1xuZnVuY3Rpb24gc3lzdGVtRXJyb3Iob2JqLCByZXMpIHtcbiAgICBpZiAodHlwZW9mIG9iai5mYWlsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmZhaWwocmVzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuc3lzdGVtRXJyb3JIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuc3lzdGVtRXJyb3JIYW5kbGVyKHJlcyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgcmV0cnkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXF1ZXN0XzEuZGVmYXVsdChvYmopLnRoZW4ob2JqLl9yZXNvbHZlKS5jYXRjaChvYmouX3JlamVjdCk7IH07XG4gICAgICAgIGRvRXJyb3IoXCJcIiwgXCJcIiwgcmV0cnkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ2ljRXJyb3Iob2JqLCByZXMpIHtcbiAgICBpZiAodHlwZW9mIG9iai5mYWlsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmZhaWwocmVzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JIYW5kbGVyKHJlcy5kYXRhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBfYSA9IGdldEVycm9yTXNnKHJlcyksIHRpdGxlID0gX2EudGl0bGUsIGNvbnRlbnQgPSBfYS5jb250ZW50O1xuICAgICAgICB2YXIgcmV0cnkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXF1ZXN0XzEuZGVmYXVsdChvYmopLnRoZW4ob2JqLl9yZXNvbHZlKS5jYXRjaChvYmouX3JlamVjdCk7IH07XG4gICAgICAgIGRvRXJyb3IodGl0bGUsIGNvbnRlbnQsIHJldHJ5KTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRFcnJvck1zZyhyZXMpIHtcbiAgICB2YXIgdGl0bGUgPSBcIlwiO1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRpdGxlID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlKHJlcy5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGl0bGUgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGU7XG4gICAgfVxuICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudChyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvckNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29udGVudCA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4geyB0aXRsZTogdGl0bGUsIGNvbnRlbnQ6IGNvbnRlbnQgfTtcbn1cbmZ1bmN0aW9uIGRvRXJyb3IodGl0bGUsIGNvbnRlbnQsIHJldHJ5KSB7XG4gICAgdmFyIHNob3dFcnJvclJldHJ5QnRuID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvclJldHJ5QnRuICYmIHR5cGVvZiByZXRyeSA9PT0gXCJmdW5jdGlvblwiO1xuICAgIHd4LnNob3dNb2RhbChPYmplY3QuYXNzaWduKHtcbiAgICAgICAgdGl0bGU6IHRpdGxlIHx8IFwiXCIsXG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQgfHwgXCLnvZHnu5zmiJbmnI3liqHlvILluLjvvIzor7fnqI3lkI7ph43or5VcIixcbiAgICB9LCAhc2hvd0Vycm9yUmV0cnlCdG4gPyB7XG4gICAgICAgIHNob3dDYW5jZWw6IGZhbHNlXG4gICAgfSA6IHtcbiAgICAgICAgc2hvd0NhbmNlbDogdHJ1ZSxcbiAgICAgICAgY29uZmlybVRleHQ6ICfph43or5UnLFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICBpZiAocmVzLmNvbmZpcm0gJiYgdHlwZW9mIHJldHJ5ID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgcmV0cnkoKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzeXN0ZW1FcnJvcjogc3lzdGVtRXJyb3IsXG4gICAgbG9naWNFcnJvcjogbG9naWNFcnJvcixcbiAgICBkb0Vycm9yOiBkb0Vycm9yLFxuICAgIGdldEVycm9yTXNnOiBnZXRFcnJvck1zZ1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpYSnliM0pJWVc1a2JHVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyMXZaSFZzWlM5bGNuSnZja2hoYm1Sc1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zTUVOQlFYRkRPMEZCUjNKRExGTkJRVk1zVjBGQlZ5eERRVUZETEVkQlFYVkRMRVZCUVVVc1IwRkJORU03U1VGRGRFY3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEyaERMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEYWtJN1UwRkJUU3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4clFrRkJhMElzUzBGQlN5eFZRVUZWTEVWQlFVVTdVVUZEZUVRc1owSkJRVTBzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU5zUXp0VFFVRk5PMUZCUTBnc1NVRkJUU3hMUVVGTExFZEJRVWNzWTBGQlRTeFBRVUZCTEdsQ1FVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRnNSQ3hEUVVGclJDeERRVUZETzFGQlEzWkZMRTlCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMHRCUXpGQ08wRkJRMHdzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlN4RFFVRkRMRWRCUVhWRExFVkJRVVVzUjBGQmRVYzdTVUZEYUVzc1NVRkJTU3hQUVVGUExFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUTJoRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRha0k3VTBGQlRTeEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhaUVVGWkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEyeEVMR2RDUVVGTkxFTkJRVU1zV1VGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOcVF6dFRRVUZOTzFGQlEwY3NTVUZCUVN4TFFVRnRRaXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFXeERMRXRCUVVzc1YwRkJRU3hGUVVGRkxFOUJRVThzWVVGQmIwSXNRMEZCUXp0UlFVTXhReXhKUVVGTkxFdEJRVXNzUjBGQlJ5eGpRVUZOTEU5QlFVRXNhVUpCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVd4RUxFTkJRV3RFTEVOQlFVTTdVVUZEZGtVc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRiRU03UVVGRFRDeERRVUZETzBGQlJVUXNVMEZCVXl4WFFVRlhMRU5CUVVNc1IwRkJkVWM3U1VGRGVFZ3NTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMllzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU42UXl4SlFVRkpPMWxCUTBFc1MwRkJTeXhIUVVGSExHZENRVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlFUdFRRVU4wUXp0UlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xTkJRMWc3UzBGRFNqdFRRVUZOTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExGVkJRVlVzUzBGQlN5eFJRVUZSTEVWQlFVVTdVVUZET1VNc1MwRkJTeXhIUVVGSExHZENRVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRPMHRCUXpkQ08wbEJSVVFzU1VGQlNTeFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUTJwQ0xFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRmxCUVZrc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRE0wTXNTVUZCU1R0WlFVTkJMRTlCUVU4c1IwRkJSeXhuUWtGQlRTeERRVUZETEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVUU3VTBGRE1VTTdVVUZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHRUUVVOWU8wdEJRMG83VTBGQlRTeEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhaUVVGWkxFdEJRVXNzVVVGQlVTeEZRVUZGTzFGQlEyaEVMRTlCUVU4c1IwRkJSeXhuUWtGQlRTeERRVUZETEZsQlFWa3NRMEZCUXp0TFFVTnFRenRKUVVWRUxFOUJRVThzUlVGQlF5eExRVUZMTEU5QlFVRXNSVUZCUlN4UFFVRlBMRk5CUVVFc1JVRkJReXhEUVVGQk8wRkJRek5DTEVOQlFVTTdRVUZIUkN4VFFVRlRMRTlCUVU4c1EwRkJReXhMUVVGaExFVkJRVVVzVDBGQlpTeEZRVUZGTEV0QlFXbENPMGxCUlRsRUxFbEJRVTBzYVVKQlFXbENMRWRCUVVjc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVsQlFVa3NUMEZCVHl4TFFVRkxMRXRCUVVzc1ZVRkJWU3hEUVVGRE8wbEJRemxGTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU4yUWl4TFFVRkxMRVZCUVVVc1MwRkJTeXhKUVVGSkxFVkJRVVU3VVVGRGJFSXNUMEZCVHl4RlFVRkZMRTlCUVU4c1NVRkJTU3hsUVVGbE8wdEJRM1JETEVWQlFVVXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VJc1ZVRkJWU3hGUVVGRkxFdEJRVXM3UzBGRGNFSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRRU3hWUVVGVkxFVkJRVVVzU1VGQlNUdFJRVU5vUWl4WFFVRlhMRVZCUVVVc1NVRkJTVHRSUVVOcVFpeFBRVUZQTEVWQlFWQXNWVUZCVVN4SFFVRnhSRHRaUVVONlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UFFVRlBMRWxCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVlVGQlZUdG5Ra0ZCUlN4TFFVRkxMRVZCUVVVc1EwRkJRenRSUVVNMVJDeERRVUZETzB0QlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRVaXhEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4WFFVRlhMR0ZCUVVFN1NVRkRXQ3hWUVVGVkxGbEJRVUU3U1VGRFZpeFBRVUZQTEZOQlFVRTdTVUZEVUN4WFFVRlhMR0ZCUVVFN1EwRkRaQ3hEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdjbVZ4ZFdWemRDQm1jbTl0SUNjdUxpOWhjR2t2Y21WeGRXVnpkQ2M3WEc1cGJYQnZjblFnZXlCSlVtVnhkV1Z6ZEU5d2RHbHZiaXdnU1ZWd2JHOWhaRVpwYkdWUGNIUnBiMjRnZlNCbWNtOXRJRndpTGk0dmFXNTBaWEptWVdObFhDSTdYRzVjYm1aMWJtTjBhVzl1SUhONWMzUmxiVVZ5Y205eUtHOWlham9nU1ZKbGNYVmxjM1JQY0hScGIyNGdmQ0JKVlhCc2IyRmtSbWxzWlU5d2RHbHZiaXdnY21Wek9pQlhaV05vWVhSTmFXNXBjSEp2WjNKaGJTNUhaVzVsY21Gc1EyRnNiR0poWTJ0U1pYTjFiSFFwSUh0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNW1ZV2xzSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ2IySnFMbVpoYVd3b2NtVnpLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmpiMjVtYVdjdWMzbHpkR1Z0UlhKeWIzSklZVzVrYkdWeUlEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibVpwWnk1emVYTjBaVzFGY25KdmNraGhibVJzWlhJb2NtVnpLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeVpYUnllU0E5SUNncElEMCtJSEpsY1hWbGMzUW9iMkpxS1M1MGFHVnVLRzlpYWk1ZmNtVnpiMngyWlNrdVkyRjBZMmdvYjJKcUxsOXlaV3BsWTNRcE8xeHVJQ0FnSUNBZ0lDQmtiMFZ5Y205eUtGd2lYQ0lzSUZ3aVhDSXNJSEpsZEhKNUtUdGNiaUFnSUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUd4dloybGpSWEp5YjNJb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpQjhJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVMQ0J5WlhNNklGZGxZMmhoZEUxcGJtbHdjbTluY21GdExsSmxjWFZsYzNSVGRXTmpaWE56UTJGc2JHSmhZMnRTWlhOMWJIUWdmQ0JYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVWY0d4dllXUkdhV3hsVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91Wm1GcGJDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1bVlXbHNLSEpsY3lrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MbVZ5Y205eVNHRnVaR3hsY2lBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCamIyNW1hV2N1WlhKeWIzSklZVzVrYkdWeUtISmxjeTVrWVhSaEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0I3ZEdsMGJHVXNJR052Ym5SbGJuUjlJRDBnWjJWMFJYSnliM0pOYzJjb2NtVnpLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjbVYwY25rZ1BTQW9LU0E5UGlCeVpYRjFaWE4wS0c5aWFpa3VkR2hsYmlodlltb3VYM0psYzI5c2RtVXBMbU5oZEdOb0tHOWlhaTVmY21WcVpXTjBLVHRjYmlBZ0lDQWdJQ0FnWkc5RmNuSnZjaWgwYVhSc1pTd2dZMjl1ZEdWdWRDd2djbVYwY25rcE8xeHVJQ0FnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnWjJWMFJYSnliM0pOYzJjb2NtVnpPaUJYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVTWlhGMVpYTjBVM1ZqWTJWemMwTmhiR3hpWVdOclVtVnpkV3gwSUh3Z1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVZYQnNiMkZrUm1sc1pWTjFZMk5sYzNORFlXeHNZbUZqYTFKbGMzVnNkQ2tnZTF4dUlDQWdJR3hsZENCMGFYUnNaU0E5SUZ3aVhDSTdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmpiMjVtYVdjdVpYSnliM0pVYVhSc1pTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYVhSc1pTQTlJR052Ym1acFp5NWxjbkp2Y2xScGRHeGxLSEpsY3k1a1lYUmhLVnh1SUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1WlhKeWIzSlVhWFJzWlNBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnZTF4dUlDQWdJQ0FnSUNCMGFYUnNaU0E5SUdOdmJtWnBaeTVsY25KdmNsUnBkR3hsTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCamIyNTBaVzUwSUQwZ1hDSmNJanRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NWxjbkp2Y2tOdmJuUmxiblFnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR1Z1ZENBOUlHTnZibVpwWnk1bGNuSnZja052Ym5SbGJuUW9jbVZ6TG1SaGRHRXBYRzRnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVsY25KdmNrTnZiblJsYm5RZ1BUMDlJRndpYzNSeWFXNW5YQ0lwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR1Z1ZENBOUlHTnZibVpwWnk1bGNuSnZja052Ym5SbGJuUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUh0MGFYUnNaU3dnWTI5dWRHVnVkSDFjYm4xY2JseHVMeThnNmJ1WTZLNms2WlNaNksrdjVhU0U1NUNHNXBpdjVieTU1NnFYWEc1bWRXNWpkR2x2YmlCa2IwVnljbTl5S0hScGRHeGxPaUJ6ZEhKcGJtY3NJR052Ym5SbGJuUTZJSE4wY21sdVp5d2djbVYwY25rL09pQW9LU0E5UGlCaGJua3BJSHRjYmlBZ0lDQXZMeURtbUsvbGtLYm1tTDducExycGg0M29yNVhtaklucGtxNWNiaUFnSUNCamIyNXpkQ0J6YUc5M1JYSnliM0pTWlhSeWVVSjBiaUE5SUdOdmJtWnBaeTVsY25KdmNsSmxkSEo1UW5SdUlDWW1JSFI1Y0dWdlppQnlaWFJ5ZVNBOVBUMGdYQ0ptZFc1amRHbHZibHdpTzF4dUlDQWdJSGQ0TG5Ob2IzZE5iMlJoYkNoUFltcGxZM1F1WVhOemFXZHVLSHRjYmlBZ0lDQWdJQ0FnZEdsMGJHVTZJSFJwZEd4bElIeDhJRndpWENJc1hHNGdJQ0FnSUNBZ0lHTnZiblJsYm5RNklHTnZiblJsYm5RZ2ZId2dYQ0xudlpIbnU1em1pSmJtbkkzbGlxSGx2SUxsdUxqdnZJem9yN2ZucUkzbGtJN3BoNDNvcjVWY0lpeGNiaUFnSUNCOUxDQWhjMmh2ZDBWeWNtOXlVbVYwY25sQ2RHNGdQeUI3WEc0Z0lDQWdJQ0FnSUhOb2IzZERZVzVqWld3NklHWmhiSE5sWEc0Z0lDQWdmU0E2SUh0Y2JpQWdJQ0FnSUNBZ2MyaHZkME5oYm1ObGJEb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ1kyOXVabWx5YlZSbGVIUTZJQ2ZwaDQzb3I1VW5MRnh1SUNBZ0lDQWdJQ0J6ZFdOalpYTnpLSEpsY3pvZ1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVUyaHZkMDF2WkdGc1UzVmpZMlZ6YzBOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WekxtTnZibVpwY20wZ0ppWWdkSGx3Wlc5bUlISmxkSEo1SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUhKbGRISjVLQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJSHRjYmlBZ0lDQnplWE4wWlcxRmNuSnZjaXhjYmlBZ0lDQnNiMmRwWTBWeWNtOXlMRnh1SUNBZ0lHUnZSWEp5YjNJc1hHNGdJQ0FnWjJWMFJYSnliM0pOYzJkY2JuMWNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBsb2FkaW5nXzEgPSByZXF1aXJlKFwiLi4vdXRpbC9sb2FkaW5nXCIpO1xuZnVuY3Rpb24gZ2V0KG9iaikge1xuICAgIGlmICghKGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLnVybF0gfHwgKG9iai5vcmlnaW5VcmwgJiYgY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoub3JpZ2luVXJsXSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGRhdGEgPSBjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai51cmxdIHx8IChvYmoub3JpZ2luVXJsID8gY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoub3JpZ2luVXJsXSA6ICcnKTtcbiAgICBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgc3RhdHVzQ29kZTogMjAwXG4gICAgfTtcbiAgICBsb2FkaW5nXzEuZGVmYXVsdC5oaWRlKCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBnZXQ6IGdldFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJXOWphMDFoYm1GblpYSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdmJXOWtkV3hsTDIxdlkydE5ZVzVoWjJWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc01FTkJRVzlETzBGQlEzQkRMREpEUVVGeFF6dEJRVWR5UXl4VFFVRlRMRWRCUVVjc1EwRkJReXhIUVVGMVF6dEpRVVZvUkN4SlFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3VVVGRmFrWXNUMEZCVHl4TFFVRkxMRU5CUVVNN1MwRkRhRUk3U1VGRlJDeEpRVUZKTEVsQlFVa3NSMEZCUnl4blFrRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4blFrRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlJUZEdMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UXl4SlFVRk5MRWRCUVVjc1IwRkJSenRSUVVOU0xFbEJRVWtzVFVGQlFUdFJRVU5LTEZWQlFWVXNSVUZCUlN4SFFVRkhPMHRCUTJ4Q0xFTkJRVU03U1VGRlJpeHBRa0ZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8wbEJRMllzVDBGQlR5eEhRVUZITEVOQlFVRTdRVUZEWkN4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeEhRVUZITEV0QlFVRTdRMEZEVGl4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnYkc5aFpHbHVaeUJtY205dElDY3VMaTkxZEdsc0wyeHZZV1JwYm1jblhHNXBiWEJ2Y25RZ2V5QkpVbVZ4ZFdWemRFOXdkR2x2Yml3Z1NWVndiRzloWkVacGJHVlBjSFJwYjI0Z2ZTQm1jbTl0SUZ3aUxpNHZhVzUwWlhKbVlXTmxYQ0pjYmx4dVpuVnVZM1JwYjI0Z1oyVjBLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRnZkNCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlrNklHRnVlU0I3WEc1Y2JpQWdJQ0JwWmlnaEtHTnZibVpwWnk1dGIyTnJTbk52Ymx0dlltb3VkWEpzWFNCOGZDQW9iMkpxTG05eWFXZHBibFZ5YkNBbUppQmpiMjVtYVdjdWJXOWphMHB6YjI1YmIySnFMbTl5YVdkcGJsVnliRjBwS1NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJ0YjJOcklPYXlvZWFjaWVXdnVlVzZsT2FPcGVXUG8rZWFoT2FWc09hTnJseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUdSaGRHRWdQU0JqYjI1bWFXY3ViVzlqYTBwemIyNWJiMkpxTG5WeWJGMGdmSHdnS0c5aWFpNXZjbWxuYVc1VmNtd2dQeUJqYjI1bWFXY3ViVzlqYTBwemIyNWJiMkpxTG05eWFXZHBibFZ5YkYwZ09pQW5KeWs3WEc0Z0lDQWdMeThnWkdWbGNDQmpiM0I1WEc0Z0lDQWdaR0YwWVNBOUlFcFRUMDR1Y0dGeWMyVW9TbE5QVGk1emRISnBibWRwWm5rb1pHRjBZU2twTzF4dUlDQWdJR052Ym5OMElISmxjeUE5SUh0Y2JpQWdJQ0FnSUNBZ1pHRjBZU3hjYmlBZ0lDQWdJQ0FnYzNSaGRIVnpRMjlrWlRvZ01qQXdYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lHeHZZV1JwYm1jdWFHbGtaU2dwTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE5jYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2UxeHVJQ0FnSUdkbGRGeHVmVnh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBsb2FkaW5nXzEgPSByZXF1aXJlKFwiLi4vdXRpbC9sb2FkaW5nXCIpO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XG52YXIgbW9ja01hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL21vY2tNYW5hZ2VyXCIpO1xudmFyIGNhY2hlTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vY2FjaGVNYW5hZ2VyXCIpO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9zZXNzaW9uTWFuYWdlclwiKTtcbnZhciByZXNwb25zZUhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3Jlc3BvbnNlSGFuZGxlclwiKTtcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xudmFyIHVybF8xID0gcmVxdWlyZShcIi4uL3V0aWwvdXJsXCIpO1xudmFyIGNhdGNoSGFuZGxlcl8xID0gcmVxdWlyZShcIi4vY2F0Y2hIYW5kbGVyXCIpO1xuZnVuY3Rpb24gZm9ybWF0KG9yaWdpblVybCkge1xuICAgIGlmIChvcmlnaW5Vcmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5Vcmw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdXJsUGVyZml4ID0gY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXg7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXggPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdXJsUGVyZml4ID0gY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXgoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsUGVyZml4ICsgb3JpZ2luVXJsO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHByZURvKG9iaiwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHR5cGVvZiBvYmoucmVMb2dpbkNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQgPSAwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqLnJlTG9naW5Db3VudCsrO1xuICAgIH1cbiAgICBpZiAob2JqLnJlTG9naW5Db3VudCA9PT0gMCAmJiB0eXBlb2Ygb2JqLmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmouYmVmb3JlU2VuZCgpO1xuICAgIH1cbiAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LnNob3cob2JqLnNob3dMb2FkaW5nKTtcbiAgICB9XG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XG4gICAgICAgIG9iai5vcmlnaW5VcmwgPSBvYmoudXJsO1xuICAgICAgICBvYmoudXJsID0gZm9ybWF0KG9iai51cmwpO1xuICAgIH1cbiAgICBvYmouX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIG9iai5fcmVqZWN0ID0gcmVqZWN0O1xuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBpbml0aWFsaXplUmVxdWVzdE9iaihvYmopIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghb2JqLmRhdGEpIHtcbiAgICAgICAgb2JqLmRhdGEgPSB7fTtcbiAgICB9XG4gICAgb2JqLmhlYWRlciA9IG9iai5oZWFkZXIgPyBvYmouaGVhZGVyIDoge307XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgaGVhZGVyID0gY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBvYmouaGVhZGVyID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5oZWFkZXIpLCBoZWFkZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgb2JqLmhlYWRlciA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmouaGVhZGVyKSwgY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIpO1xuICAgIH1cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgb2JqLmRhdGEgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JqLmRhdGEpLCAoX2EgPSB7fSwgX2FbY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZV0gPSBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24sIF9hKSk7XG4gICAgfVxuICAgIHZhciBnZCA9IGdldEdsb2JhbERhdGEoKTtcbiAgICBvYmouZGF0YSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBnZCksIG9iai5kYXRhKTtcbiAgICBvYmoubWV0aG9kID0gb2JqLm1ldGhvZCB8fCAnR0VUJztcbiAgICBvYmouZGF0YVR5cGUgPSBvYmouZGF0YVR5cGUgfHwgJ2pzb24nO1xuICAgIGlmICghY29uZmlnXzEuZGVmYXVsdC5kb05vdFVzZVF1ZXJ5U3RyaW5nICYmIG9iai5tZXRob2QgIT09IFwiR0VUXCIpIHtcbiAgICAgICAgaWYgKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xuICAgICAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIChfYiA9IHt9LCBfYltjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2IpKTtcbiAgICAgICAgfVxuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzXzEuZGVmYXVsdC5pc0VuYWJsZUJhY2t1cERvbWFpbiAmJiBjb25maWdfMS5kZWZhdWx0LmJhY2t1cERvbWFpbikge1xuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5yZXBsYWNlRG9tYWluKG9iai51cmwsIGNvbmZpZ18xLmRlZmF1bHQuYmFja3VwRG9tYWluKTtcbiAgICB9XG4gICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gaW5pdGlhbGl6ZVVwbG9hZEZpbGVPYmoob2JqKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIW9iai5mb3JtRGF0YSkge1xuICAgICAgICBvYmouZm9ybURhdGEgPSB7fTtcbiAgICB9XG4gICAgb2JqLmhlYWRlciA9IG9iai5oZWFkZXIgPyBvYmouaGVhZGVyIDoge307XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgaGVhZGVyID0gY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBvYmouaGVhZGVyID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5oZWFkZXIpLCBoZWFkZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgb2JqLmhlYWRlciA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmouaGVhZGVyKSwgY29uZmlnXzEuZGVmYXVsdC5zZXRIZWFkZXIpO1xuICAgIH1cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgb2JqLmZvcm1EYXRhID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9iai5mb3JtRGF0YSksIChfYSA9IHt9LCBfYVtjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2EpKTtcbiAgICB9XG4gICAgdmFyIGdkID0gZ2V0R2xvYmFsRGF0YSgpO1xuICAgIG9iai5mb3JtRGF0YSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBnZCksIG9iai5mb3JtRGF0YSk7XG4gICAgaWYgKCFjb25maWdfMS5kZWZhdWx0LmRvTm90VXNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgaWYgKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xuICAgICAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIChfYiA9IHt9LCBfYltjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2IpKTtcbiAgICAgICAgfVxuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzXzEuZGVmYXVsdC5pc0VuYWJsZUJhY2t1cERvbWFpbiAmJiBjb25maWdfMS5kZWZhdWx0LmJhY2t1cERvbWFpbikge1xuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5yZXBsYWNlRG9tYWluKG9iai51cmwsIGNvbmZpZ18xLmRlZmF1bHQuYmFja3VwRG9tYWluKTtcbiAgICB9XG4gICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gZ2V0R2xvYmFsRGF0YSgpIHtcbiAgICB2YXIgZ2QgPSB7fTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZ2xvYmFsRGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGdkID0gY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGEgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgZ2QgPSBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGE7XG4gICAgfVxuICAgIHJldHVybiBnZDtcbn1cbmZ1bmN0aW9uIGRvUmVxdWVzdChvYmopIHtcbiAgICBvYmogPSBpbml0aWFsaXplUmVxdWVzdE9iaihvYmopO1xuICAgIGlmIChvYmoucmVMb2dpbkNvdW50ID09PSAwICYmIHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmogPSBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQob2JqLCBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB3eC5yZXF1ZXN0KF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmopLCB7IHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKCgoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZXJyTXNnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5kZXhPZignQ09OTkVDVElPTl9SRUZVU0VEJykpID49IDAgJiYgY29uZmlnXzEuZGVmYXVsdC5iYWNrdXBEb21haW4gJiYgb2JqLnVybC5pbmRleE9mKGNvbmZpZ18xLmRlZmF1bHQuYmFja3VwRG9tYWluKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlQmFja3VwRG9tYWluKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb1JlcXVlc3Qob2JqKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsgcmV0dXJuIHJlc29sdmUocmVzKTsgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0eXBlOiAnc3lzdGVtLWVycm9yJywgcmVzOiByZXMgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IH0pKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGRvVXBsb2FkRmlsZShvYmopIHtcbiAgICBvYmogPSBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmopO1xuICAgIGlmIChvYmoucmVMb2dpbkNvdW50ID09PSAwICYmIHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmogPSBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQob2JqLCBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB3eC51cGxvYWRGaWxlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYmopLCB7IHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaWYgKCgoX2EgPSByZXMgPT09IG51bGwgfHwgcmVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXMuZXJyTXNnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaW5kZXhPZignQ09OTkVDVElPTl9SRUZVU0VEJykpID49IDAgJiYgY29uZmlnXzEuZGVmYXVsdC5iYWNrdXBEb21haW4gJiYgb2JqLnVybC5pbmRleE9mKGNvbmZpZ18xLmRlZmF1bHQuYmFja3VwRG9tYWluKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlQmFja3VwRG9tYWluKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb1VwbG9hZEZpbGUob2JqKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsgcmV0dXJuIHJlc29sdmUocmVzKTsgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0eXBlOiAnc3lzdGVtLWVycm9yJywgcmVzOiByZXMgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IH0pKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJlcXVlc3Qob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbikge1xuICAgICAgICAgICAgdmFyIG1vY2tSZXNwb25zZSA9IG1vY2tNYW5hZ2VyXzEuZGVmYXVsdC5nZXQob2JqKTtcbiAgICAgICAgICAgIGlmIChtb2NrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0LnJlc3BvbnNlRm9yUmVxdWVzdChtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvYmouY2FjaGUpIHtcbiAgICAgICAgICAgIGNhY2hlTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0Lm1haW4ob2JqKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkb1JlcXVlc3Qob2JqKTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0LnJlc3BvbnNlRm9yUmVxdWVzdChyZXMsIG9iaik7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXRjaEhhbmRsZXJfMS5jYXRjaEhhbmRsZXIoZSwgb2JqLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHVwbG9hZEZpbGUob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbikge1xuICAgICAgICAgICAgdmFyIG1vY2tSZXNwb25zZSA9IG1vY2tNYW5hZ2VyXzEuZGVmYXVsdC5nZXQob2JqKTtcbiAgICAgICAgICAgIGlmIChtb2NrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0LnJlc3BvbnNlRm9yVXBsb2FkRmlsZShtb2NrUmVzcG9uc2UsIG9iaik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlc3Npb25NYW5hZ2VyXzEuZGVmYXVsdC5tYWluKG9iaikudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9VcGxvYWRGaWxlKG9iaik7XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdC5yZXNwb25zZUZvclVwbG9hZEZpbGUocmVzLCBvYmopO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBjYXRjaEhhbmRsZXJfMS5jYXRjaEhhbmRsZXIoZSwgb2JqLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGVuYWJsZUJhY2t1cERvbWFpbigpIHtcbiAgICBpZiAoIXN0YXR1c18xLmRlZmF1bHQuaXNFbmFibGVCYWNrdXBEb21haW4pIHtcbiAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5pc0VuYWJsZUJhY2t1cERvbWFpbiA9IHRydWU7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5iYWNrdXBEb21haW5FbmFibGVDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5iYWNrdXBEb21haW5FbmFibGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIGZvcm1hdDogZm9ybWF0LFxuICAgIHJlcXVlc3Q6IHJlcXVlc3QsXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtVnhkV1Z6ZEVoaGJtUnNaWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZiVzlrZFd4bEwzSmxjWFZsYzNSSVlXNWtiR1Z5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdRVUZCUVN3eVEwRkJjVU03UVVGRGNrTXNNRU5CUVc5RE8wRkJRM0JETERCRFFVRnZRenRCUVVOd1F5dzJRMEZCZFVNN1FVRkRka01zSzBOQlFYbERPMEZCUTNwRExHMUVRVUUyUXp0QlFVTTNReXh4UkVGQkswTTdRVUZETDBNc2RVUkJRV2xFTzBGQlEycEVMRzFEUVVFMlFqdEJRVVUzUWl3clEwRkJPRU03UVVGSE9VTXNVMEZCVXl4TlFVRk5MRU5CUVVNc1UwRkJhVUk3U1VGRE4wSXNTVUZCU1N4VFFVRlRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlF6bENMRTlCUVU4c1UwRkJVeXhEUVVGQk8wdEJRMjVDTzFOQlFVMDdVVUZEU0N4SlFVRkpMRk5CUVZNc1IwRkJSeXhuUWtGQlRTeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTnFReXhKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4VFFVRlRMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xbEJRM2hETEZOQlFWTXNSMEZCUnl4blFrRkJUU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZCTzFOQlEycERPMUZCUTBRc1QwRkJUeXhUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETzB0QlEyaERPMEZCUTB3c1EwRkJRenRCUVVkRUxGTkJRVk1zUzBGQlN5eERRVUVyUXl4SFFVRk5MRVZCUVVVc1QwRkJPRUlzUlVGQlJTeE5RVUVyUWp0SlFVVm9TU3hKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEZsQlFWa3NTMEZCU3l4WFFVRlhMRVZCUVVVN1VVRkRla01zUjBGQlJ5eERRVUZETEZsQlFWa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRlRUk3VTBGQlRUdFJRVU5JTEVkQlFVY3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRMUVVOMFFqdEpRVVZFTEVsQlFVa3NSMEZCUnl4RFFVRkRMRmxCUVZrc1MwRkJTeXhEUVVGRExFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNWVUZCVlN4TFFVRkxMRlZCUVZVc1JVRkJSVHRSUVVOb1JTeEhRVUZITEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1MwRkRjRUk3U1VGRlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4WFFVRlhMRVZCUVVVN1VVRkRha0lzYVVKQlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzB0QlEycERPMGxCUlVRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVWQlFVVTdVVUZEYUVJc1IwRkJSeXhEUVVGRExGTkJRVk1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRPMUZCUTNoQ0xFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU0zUWp0SlFVVkVMRWRCUVVjc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETzBsQlEzWkNMRWRCUVVjc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzBsQlJYSkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVWRFTEZOQlFWTXNiMEpCUVc5Q0xFTkJRVU1zUjBGQmJVSTdPMGxCUlRkRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZPMUZCUTFnc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTMEZEYWtJN1NVRkZSQ3hIUVVGSExFTkJRVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNeFF5eEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhUUVVGVExFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEzaERMRWxCUVVrc1RVRkJUU3hIUVVGSExHZENRVUZOTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeFBRVUZQTEUxQlFVMHNTMEZCU3l4UlFVRlJMRVZCUVVVN1dVRkROVUlzUjBGQlJ5eERRVUZETEUxQlFVMHNlVUpCUVU4c1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlN5eE5RVUZOTEVOQlFVTXNRMEZCUXp0VFFVTXpRenRMUVVOS08xTkJRVTBzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1UwRkJVeXhMUVVGTExGRkJRVkVzUlVGQlJUdFJRVU0zUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3g1UWtGQlR5eEhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkxMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdTMEZEY2tRN1NVRkZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFRRVUZUTEV0QlFVc3NaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ5eEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhGUVVGRk8xRkJRemxFTEVkQlFVY3NRMEZCUXl4SlFVRkpMSGxDUVVGUkxFZEJRVWNzUTBGQlF5eEpRVUZqTEdkQ1FVRkhMR2RDUVVGTkxFTkJRVU1zVjBGQlZ5eEpRVUZITEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhOUVVGRkxFTkJRVU03UzBGRE9VVTdTVUZIUkN4SlFVRk5MRVZCUVVVc1IwRkJSeXhoUVVGaExFVkJRVVVzUTBGQlF6dEpRVU16UWl4SFFVRkhMRU5CUVVNc1NVRkJTU3g1UWtGQlVTeEZRVUZGTEVkQlFVc3NSMEZCUnl4RFFVRkRMRWxCUVdNc1EwRkJSU3hEUVVGRE8wbEJSVFZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTTdTVUZEYWtNc1IwRkJSeXhEUVVGRExGRkJRVkVzUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4SlFVRkpMRTFCUVUwc1EwRkJRenRKUVVkMFF5eEpRVUZKTEVOQlFVTXNaMEpCUVUwc1EwRkJReXh0UWtGQmJVSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hMUVVGTExFdEJRVXNzUlVGQlJUdFJRVU55UkN4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEyaENMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzWVVGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhaUVVGSkxFZEJRVU1zWjBKQlFVMHNRMEZCUXl4WFFVRlhMRWxCUVVjc1owSkJRVTBzUTBGQlF5eFBRVUZQTEUxQlFVY3NRMEZCUXp0VFFVTTVSVHRSUVVORUxFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NZVUZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMHRCUTNoRE8wbEJSMFFzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRzlDUVVGdlFpeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRk8xRkJRM0JFTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1lVRkJSeXhEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMR2RDUVVGTkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdTMEZETjBRN1NVRkZSQ3d3UWtGQlowSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRk5VSXNUMEZCVHl4SFFVRkhMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSMFFzVTBGQlV5eDFRa0ZCZFVJc1EwRkJReXhIUVVGelFqczdTVUZEYmtRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVTdVVUZEWml4SFFVRkhMRU5CUVVNc1VVRkJVU3hIUVVGSExFVkJRVVVzUTBGQlF6dExRVU55UWp0SlFVVkVMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpGRExFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRGVFTXNTVUZCU1N4TlFVRk5MRWRCUVVjc1owSkJRVTBzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0UlFVTm9ReXhKUVVGSkxFOUJRVThzVFVGQlRTeExRVUZMTEZGQlFWRXNSVUZCUlR0WlFVTTFRaXhIUVVGSExFTkJRVU1zVFVGQlRTeDVRa0ZCVHl4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGTExFMUJRVTBzUTBGQlF5eERRVUZETzFOQlF6TkRPMHRCUTBvN1UwRkJUU3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4VFFVRlRMRXRCUVVzc1VVRkJVU3hGUVVGRk8xRkJRemRETEVkQlFVY3NRMEZCUXl4TlFVRk5MSGxDUVVGUExFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVc3NaMEpCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dExRVU55UkR0SlFVVkVMRWxCUVVrc1IwRkJSeXhEUVVGRExGTkJRVk1zUzBGQlN5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRVZCUVVVN1VVRkRPVVFzUjBGQlJ5eERRVUZETEZGQlFWRXNlVUpCUVZFc1IwRkJSeXhEUVVGRExGRkJRV3RDTEdkQ1FVRkhMR2RDUVVGTkxFTkJRVU1zVjBGQlZ5eEpRVUZITEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhOUVVGRkxFTkJRVU03UzBGRGRFWTdTVUZIUkN4SlFVRk5MRVZCUVVVc1IwRkJSeXhoUVVGaExFVkJRVVVzUTBGQlF6dEpRVU16UWl4SFFVRkhMRU5CUVVNc1VVRkJVU3g1UWtGQlVTeEZRVUZGTEVkQlFVc3NSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJSU3hEUVVGRE8wbEJSVEZETEVsQlFVa3NRMEZCUXl4blFrRkJUU3hEUVVGRExHMUNRVUZ0UWl4RlFVRkZPMUZCUlRkQ0xFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkRhRUlzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4aFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEZsQlFVa3NSMEZCUXl4blFrRkJUU3hEUVVGRExGZEJRVmNzU1VGQlJ5eG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1RVRkJSeXhEUVVGRE8xTkJRemxGTzFGQlJVUXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhoUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03UzBGRGVFTTdTVUZIUkN4SlFVRkpMR2RDUVVGTkxFTkJRVU1zYjBKQlFXOUNMRWxCUVVrc1owSkJRVTBzUTBGQlF5eFpRVUZaTEVWQlFVVTdVVUZEY0VRc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eGhRVUZITEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzWjBKQlFVMHNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRMUVVNM1JEdEpRVVZFTERCQ1FVRm5RaXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVTFRaXhQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkN4VFFVRlRMR0ZCUVdFN1NVRkRiRUlzU1VGQlNTeEZRVUZGTEVkQlFWRXNSVUZCUlN4RFFVRkRPMGxCUTJwQ0xFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRGVrTXNSVUZCUlN4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdTMEZETlVJN1UwRkJUU3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRXRCUVVzc1VVRkJVU3hGUVVGRk8xRkJRemxETEVWQlFVVXNSMEZCUnl4blFrRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF6dExRVU14UWp0SlFVTkVMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFTEZOQlFWTXNVMEZCVXl4RFFVRkRMRWRCUVcxQ08wbEJRMnhETEVkQlFVY3NSMEZCUnl4dlFrRkJiMElzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTm9ReXhKUVVGSkxFZEJRVWNzUTBGQlF5eFpRVUZaTEV0QlFVc3NRMEZCUXl4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFZRVUZWTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUTI1RkxFZEJRVWNzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFVkJRVVVzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOb1JEdEpRVU5FTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVdsRUxGVkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMDdVVUZETDBVc1JVRkJSU3hEUVVGRExFOUJRVThzZFVKQlEwZ3NSMEZCUnl4TFFVTk9MRTlCUVU4c1dVRkJReXhIUVVGSE8yZENRVU5RTEU5QlFVOHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM2hDTEVOQlFVTTdXVUZEUkN4SlFVRkpMRmxCUVVNc1IwRkJSenM3WjBKQlJVb3NTVUZCU1N4UFFVRkJMRWRCUVVjc1lVRkJTQ3hIUVVGSExIVkNRVUZJTEVkQlFVY3NRMEZCUlN4TlFVRk5MREJEUVVGRkxFOUJRVThzUTBGQlF5eHZRa0ZCYjBJc1RVRkJTeXhEUVVGRExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4WlFVRlpMRWxCUVVrc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUlhCSUxHdENRVUZyUWl4RlFVRkZMRU5CUVVNN2IwSkJSWEpDTEU5QlFVOHNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZETEVkQlFVY3NTVUZCU1N4UFFVRkJMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQldpeERRVUZaTEVOQlFVTXNRMEZCUXp0cFFrRkRjRVE3WjBKQlEwUXNUMEZCVHl4TlFVRk5MRU5CUVVNc1JVRkJSU3hKUVVGSkxFVkJRVVVzWTBGQll5eEZRVUZGTEVkQlFVY3NTMEZCUVN4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOcVJDeERRVUZETzFsQlEwUXNVVUZCVVR0blFrRkRTaXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEZGQlFWRXNTMEZCU3l4VlFVRlZMRVZCUVVVN2IwSkJRM0JETEVkQlFVY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRwUWtGRGJFSTdaMEpCUTBRc1NVRkJTU3hIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTzI5Q1FVTnFRaXhwUWtGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMmxDUVVOc1FqdFpRVU5NTEVOQlFVTXNTVUZEU0N4RFFVRkJPMGxCUTA0c1EwRkJReXhEUVVGRExFTkJRVUU3UVVGRFRpeERRVUZETzBGQlJVUXNVMEZCVXl4WlFVRlpMRU5CUVVNc1IwRkJjMEk3U1VGRGVFTXNSMEZCUnl4SFFVRkhMSFZDUVVGMVFpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTI1RExFbEJRVWtzUjBGQlJ5eERRVUZETEZsQlFWa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZWQlFWVXNTMEZCU3l4VlFVRlZMRVZCUVVVN1VVRkRia1VzUjBGQlJ5eEhRVUZITEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRMmhFTzBsQlEwUXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJiMFFzVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTnNSaXhGUVVGRkxFTkJRVU1zVlVGQlZTeDFRa0ZEVGl4SFFVRkhMRXRCUTA0c1QwRkJUeXhaUVVGRExFZEJRVWM3WjBKQlExQXNUMEZCVHl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGVFSXNRMEZCUXp0WlFVTkVMRWxCUVVrc1dVRkJReXhIUVVGSE96dG5Ra0ZGU2l4SlFVRkpMRTlCUVVFc1IwRkJSeXhoUVVGSUxFZEJRVWNzZFVKQlFVZ3NSMEZCUnl4RFFVRkZMRTFCUVUwc01FTkJRVVVzVDBGQlR5eERRVUZETEc5Q1FVRnZRaXhOUVVGTExFTkJRVU1zU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRmxCUVZrc1NVRkJTU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4blFrRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlR0dlFrRkZjRWdzYTBKQlFXdENMRVZCUVVVc1EwRkJRenR2UWtGRmNrSXNUMEZCVHl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFVTXNSMEZCUnl4SlFVRkpMRTlCUVVFc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZhTEVOQlFWa3NRMEZCUXl4RFFVRkRPMmxDUVVOMlJEdG5Ra0ZEUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeGpRVUZqTEVWQlFVVXNSMEZCUnl4TFFVRkJMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMnBFTEVOQlFVTTdXVUZEUkN4UlFVRlJPMmRDUVVOS0xFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNVVUZCVVN4TFFVRkxMRlZCUVZVc1JVRkJSVHR2UWtGRGNFTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8ybENRVU5zUWp0blFrRkRSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFhRVUZYTEVWQlFVVTdiMEpCUTJwQ0xHbENRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMnhDTzFsQlEwd3NRMEZCUXl4SlFVTklMRU5CUVVFN1NVRkRUaXhEUVVGRExFTkJRVU1zUTBGQlFUdEJRVU5PTEVOQlFVTTdRVUZGUkN4VFFVRlRMRTlCUVU4c1EwRkJVU3hIUVVGdFFqdEpRVU4yUXl4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExGVkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMDdVVUZETDBJc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVWQlFVVXNUMEZCVHl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJSV3hETEVsQlFVa3NaMEpCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVU3V1VGRGFrSXNTVUZCU1N4WlFVRlpMRWRCUVVjc2NVSkJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFpRVUZaTEVWQlFVVTdaMEpCUTJRc1NVRkJTU3hSUVVGUkxFZEJRVWNzZVVKQlFXVXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRM0pGTEU5QlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yRkJRelZDTzFOQlEwbzdVVUZGUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVU3V1VGRFdDeHpRa0ZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU42UWp0UlFVVkVMSGRDUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVNeFFpeFBRVUZQTEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHRSUVVONlFpeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJReXhIUVVGdFJEdFpRVU40UkN4SlFVRkpMRkZCUVZFc1IwRkJSeXg1UWtGQlpTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTTFSQ3hKUVVGSkxGRkJRVkVzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTJ4Q0xFOUJRVThzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMkZCUXpWQ08xRkJRMHdzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1EwRkJaVHRaUVVOeVFpeFBRVUZQTERKQ1FVRlpMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUVR0UlFVTjJReXhEUVVGRExFTkJRVU1zUTBGQlFUdEpRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVWRUxGTkJRVk1zVlVGQlZTeERRVUZETEVkQlFYTkNPMGxCUTNSRExFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUVHRSUVVNdlFpeEhRVUZITEVkQlFVY3NTMEZCU3l4RFFVRkRMRWRCUVVjc1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZGYkVNc1NVRkJTU3huUWtGQlRTeERRVUZETEZGQlFWRXNSVUZCUlR0WlFVTnFRaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eHhRa0ZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU40UXl4SlFVRkpMRmxCUVZrc1JVRkJSVHRuUWtGRFpDeEpRVUZKTEZGQlFWRXNSMEZCUnl4NVFrRkJaU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRmxCUVZrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEZUVVc1QwRkJUeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdZVUZETlVJN1UwRkRTanRSUVVWRUxIZENRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dFpRVU14UWl4UFFVRlBMRmxCUVZrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlFUdFJRVU0xUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlF5eEhRVUZ6UkR0WlFVTXpSQ3hKUVVGSkxGRkJRVkVzUjBGQlJ5eDVRa0ZCWlN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVNdlJDeEpRVUZKTEZGQlFWRXNTVUZCU1N4SlFVRkpMRVZCUVVVN1owSkJRMnhDTEU5QlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yRkJRelZDTzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVU1zUTBGQlpUdFpRVU55UWl3eVFrRkJXU3hEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVFN1VVRkRhRU1zUTBGQlF5eERRVUZETEVOQlFVRTdTVUZEVGl4RFFVRkRMRU5CUVVNc1EwRkJRVHRCUVVOT0xFTkJRVU03UVVGRlJDeFRRVUZUTEd0Q1FVRnJRanRKUVVOMlFpeEpRVUZKTEVOQlFVTXNaMEpCUVUwc1EwRkJReXh2UWtGQmIwSXNSVUZCUlR0UlFVTTVRaXhuUWtGQlRTeERRVUZETEc5Q1FVRnZRaXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU51UXl4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5d3dRa0ZCTUVJc1MwRkJTeXhWUVVGVkxFVkJRVVU3V1VGRGVrUXNaMEpCUVUwc1EwRkJReXd3UWtGQk1FSXNSVUZCUlN4RFFVRkRPMU5CUTNaRE8wdEJRMG83UVVGRFRDeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hOUVVGTkxGRkJRVUU3U1VGRFRpeFBRVUZQTEZOQlFVRTdTVUZEVUN4VlFVRlZMRmxCUVVFN1EwRkRZaXhEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHeHZZV1JwYm1jZ1puSnZiU0FuTGk0dmRYUnBiQzlzYjJGa2FXNW5KMXh1YVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnYzNSaGRIVnpJR1p5YjIwZ0p5NHVMM04wYjNKbEwzTjBZWFIxY3lkY2JtbHRjRzl5ZENCdGIyTnJUV0Z1WVdkbGNpQm1jbTl0SUNjdUwyMXZZMnROWVc1aFoyVnlKMXh1YVcxd2IzSjBJR05oWTJobFRXRnVZV2RsY2lCbWNtOXRJQ2N1TDJOaFkyaGxUV0Z1WVdkbGNpZGNibWx0Y0c5eWRDQnpaWE56YVc5dVRXRnVZV2RsY2lCbWNtOXRJQ2N1TDNObGMzTnBiMjVOWVc1aFoyVnlKMXh1YVcxd2IzSjBJSEpsYzNCdmJuTmxTR0Z1Wkd4bGNpQm1jbTl0SUNjdUwzSmxjM0J2Ym5ObFNHRnVaR3hsY2lkY2JtbHRjRzl5ZENCa2RYSmhkR2x2YmxKbGNHOXlkR1Z5SUdaeWIyMGdYQ0l1TDJSMWNtRjBhVzl1VW1Wd2IzSjBaWEpjSWx4dWFXMXdiM0owSUhWeWJDQm1jbTl0SUNjdUxpOTFkR2xzTDNWeWJDZGNibWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUxDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpd2dTVVZ5Y205eVQySnFaV04wSUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lYRzVwYlhCdmNuUWdleUJqWVhSamFFaGhibVJzWlhJZ2ZTQm1jbTl0SUNjdUwyTmhkR05vU0dGdVpHeGxjaWM3WEc1Y2JpOHZJT2Fndk9XOGorV01sblZ5YkZ4dVpuVnVZM1JwYjI0Z1ptOXliV0YwS0c5eWFXZHBibFZ5YkRvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnYVdZZ0tHOXlhV2RwYmxWeWJDNXpkR0Z5ZEhOWGFYUm9LQ2RvZEhSd0p5a3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzl5YVdkcGJsVnliRnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0IxY214UVpYSm1hWGdnUFNCamIyNW1hV2N1ZFhKc1VHVnlabWw0TzF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1MWNteFFaWEptYVhnZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZFhKc1VHVnlabWw0SUQwZ1kyOXVabWxuTG5WeWJGQmxjbVpwZUNncFhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIVnliRkJsY21acGVDQXJJRzl5YVdkcGJsVnliRHRjYmlBZ0lDQjlYRzU5WEc1Y2JpOHZJT2FKZ09hY2llaXZ0K2F4Z3VXUGtlV0h1dVdKamVtY2dPaW1nZVdCbXVlYWhPUzZpK2FEaFZ4dVpuVnVZM1JwYjI0Z2NISmxSRzg4VkNCbGVIUmxibVJ6SUVsU1pYRjFaWE4wVDNCMGFXOXVJSHdnU1ZWd2JHOWhaRVpwYkdWUGNIUnBiMjQrS0c5aWFqb2dWQ3dnY21WemIyeDJaVG9nS0haaGJIVmxQem9nWVc1NUtTQTlQaUIyYjJsa0xDQnlaV3BsWTNRL09pQW9jbVZoYzI5dVB6b2dZVzU1S1NBOVBpQjJiMmxrS1RvZ1ZDQjdYRzRnSUNBZ0x5OGc1NW03NWIyVjVvQ0I1YVN4NXBXSTc3eU02WWVONWFTTjU1bTc1YjJWNks2aDVwV3dYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91Y21WTWIyZHBia052ZFc1MElEMDlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1eVpVeHZaMmx1UTI5MWJuUWdQU0F3TzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1eVpVeHZaMmx1UTI5MWJuUXJLenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYjJKcUxuSmxURzluYVc1RGIzVnVkQ0E5UFQwZ01DQW1KaUIwZVhCbGIyWWdiMkpxTG1KbFptOXlaVk5sYm1RZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnZZbW91WW1WbWIzSmxVMlZ1WkNncE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHZZbW91YzJodmQweHZZV1JwYm1jcElIdGNiaUFnSUNBZ0lDQWdiRzloWkdsdVp5NXphRzkzS0c5aWFpNXphRzkzVEc5aFpHbHVaeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGdlltb3ViM0pwWjJsdVZYSnNLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNXZjbWxuYVc1VmNtd2dQU0J2WW1vdWRYSnNPMXh1SUNBZ0lDQWdJQ0J2WW1vdWRYSnNJRDBnWm05eWJXRjBLRzlpYWk1MWNtd3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHOWlhaTVmY21WemIyeDJaU0E5SUhKbGMyOXNkbVU3WEc0Z0lDQWdiMkpxTGw5eVpXcGxZM1FnUFNCeVpXcGxZM1E3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiMkpxTzF4dWZWeHVYRzR2THlEbW9Memx2SS9sakpibHBJVG5rSWJvcjdmbXNZTG5tb1J2WW1ybGhvWGxycmxjYm1aMWJtTjBhVzl1SUdsdWFYUnBZV3hwZW1WU1pYRjFaWE4wVDJKcUtHOWlham9nU1ZKbGNYVmxjM1JQY0hScGIyNHBJSHRjYmx4dUlDQWdJR2xtSUNnaGIySnFMbVJoZEdFcElIdGNiaUFnSUNBZ0lDQWdiMkpxTG1SaGRHRWdQU0I3ZlR0Y2JpQWdJQ0I5WEc0Z0lDQWdYRzRnSUNBZ2IySnFMbWhsWVdSbGNpQTlJRzlpYWk1b1pXRmtaWElnUHlCdlltb3VhR1ZoWkdWeUlEb2dlMzA3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VjMlYwU0dWaFpHVnlJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJR3hsZENCb1pXRmtaWElnUFNCamIyNW1hV2N1YzJWMFNHVmhaR1Z5S0NrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdhR1ZoWkdWeUlEMDlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTG1obFlXUmxjaUE5SUhzdUxpNXZZbW91YUdWaFpHVnlMQ0F1TGk1b1pXRmtaWEo5TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5Mbk5sZEVobFlXUmxjaUE5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNBZ0lDQWdiMkpxTG1obFlXUmxjaUE5SUhzdUxpNXZZbW91YUdWaFpHVnlMQ0F1TGk1amIyNW1hV2N1YzJWMFNHVmhaR1Z5ZlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2IySnFMbTl5YVdkcGJsVnliQ0FoUFQwZ1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVkWEpzSUNZbUlITjBZWFIxY3k1elpYTnphVzl1S1NCN1hHNGdJQ0FnSUNBZ0lHOWlhaTVrWVhSaElEMGdleUF1TGk1dlltb3VaR0YwWVNCaGN5QnZZbXBsWTNRc0lGdGpiMjVtYVdjdWMyVnpjMmx2Yms1aGJXVmRPaUJ6ZEdGMGRYTXVjMlZ6YzJsdmJpQjlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJT1dtZ3VhZW5PYWNpZVdGcU9XeGdPV1BndWFWc08rOGpPV0ltZWEzdStXS29GeHVJQ0FnSUdOdmJuTjBJR2RrSUQwZ1oyVjBSMnh2WW1Gc1JHRjBZU2dwTzF4dUlDQWdJRzlpYWk1a1lYUmhJRDBnZXlBdUxpNW5aQ3dnTGk0dWIySnFMbVJoZEdFZ1lYTWdiMkpxWldOMElIMDdYRzVjYmlBZ0lDQnZZbW91YldWMGFHOWtJRDBnYjJKcUxtMWxkR2h2WkNCOGZDQW5SMFZVSnp0Y2JpQWdJQ0J2WW1vdVpHRjBZVlI1Y0dVZ1BTQnZZbW91WkdGMFlWUjVjR1VnZkh3Z0oycHpiMjRuTzF4dVhHNGdJQ0FnTHk4ZzVhYUM1cDZjNksrMzVyR0M1TGlONXBpdlIwVlU3N3lNNVlpWjVaeW9WVkpNNUxpdDZJZXE1WXFvNVlxZzVMaUs1NW03NWIyVjVvQ0I1WktNNVlXbzViR0E1WStDNXBXd1hHNGdJQ0FnYVdZZ0tDRmpiMjVtYVdjdVpHOU9iM1JWYzJWUmRXVnllVk4wY21sdVp5QW1KaUJ2WW1vdWJXVjBhRzlrSUNFOVBTQmNJa2RGVkZ3aUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoemRHRjBkWE11YzJWemMybHZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTG5WeWJDQTlJSFZ5YkM1elpYUlFZWEpoYlhNb2IySnFMblZ5YkN3Z2V5QmJZMjl1Wm1sbkxuTmxjM05wYjI1T1lXMWxYVG9nYzNSaGRIVnpMbk5sYzNOcGIyNGdmU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2IySnFMblZ5YkNBOUlIVnliQzV6WlhSUVlYSmhiWE1vYjJKcUxuVnliQ3dnWjJRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklPV2toK2VVcU9XZm4rV1FqZW1BdStpK2tWeHVJQ0FnSUdsbUlDaHpkR0YwZFhNdWFYTkZibUZpYkdWQ1lXTnJkWEJFYjIxaGFXNGdKaVlnWTI5dVptbG5MbUpoWTJ0MWNFUnZiV0ZwYmlrZ2UxeHVJQ0FnSUNBZ0lDQnZZbW91ZFhKc0lEMGdkWEpzTG5KbGNHeGhZMlZFYjIxaGFXNG9iMkpxTG5WeWJDd2dZMjl1Wm1sbkxtSmhZMnQxY0VSdmJXRnBiaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNXpkR0Z5ZENodlltb3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlHOWlhanRjYm4xY2JseHVMeThnNXFDODVieVA1WXlXNWFTRTU1Q0c1TGlLNUx5ZzVwYUg1THUyNTVxRWIySnE1WWFGNWE2NVhHNW1kVzVqZEdsdmJpQnBibWwwYVdGc2FYcGxWWEJzYjJGa1JtbHNaVTlpYWlodlltbzZJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVLU0I3WEc0Z0lDQWdhV1lnS0NGdlltb3VabTl5YlVSaGRHRXBJSHRjYmlBZ0lDQWdJQ0FnYjJKcUxtWnZjbTFFWVhSaElEMGdlMzA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiMkpxTG1obFlXUmxjaUE5SUc5aWFpNW9aV0ZrWlhJZ1B5QnZZbW91YUdWaFpHVnlJRG9nZTMwN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1YzJWMFNHVmhaR1Z5SUQwOVBTQW5ablZ1WTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQm9aV0ZrWlhJZ1BTQmpiMjVtYVdjdWMyVjBTR1ZoWkdWeUtDazdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnYUdWaFpHVnlJRDA5UFNBbmIySnFaV04wSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxtaGxZV1JsY2lBOUlIc3VMaTV2WW1vdWFHVmhaR1Z5TENBdUxpNW9aV0ZrWlhKOU8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG5ObGRFaGxZV1JsY2lBOVBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJQ0FnYjJKcUxtaGxZV1JsY2lBOUlIc3VMaTV2WW1vdWFHVmhaR1Z5TENBdUxpNWpiMjVtYVdjdWMyVjBTR1ZoWkdWeWZUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iMkpxTG05eWFXZHBibFZ5YkNBaFBUMGdZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1ZFhKc0lDWW1JSE4wWVhSMWN5NXpaWE56YVc5dUtTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1bWIzSnRSR0YwWVNBOUlIc2dMaTR1YjJKcUxtWnZjbTFFWVhSaElHRnpJRzlpYW1WamRDd2dXMk52Ym1acFp5NXpaWE56YVc5dVRtRnRaVjA2SUhOMFlYUjFjeTV6WlhOemFXOXVJSDA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnNWFhQzVwNmM1cHlKNVlXbzViR0E1WStDNXBXdzc3eU01WWlaNXJlNzVZcWdYRzRnSUNBZ1kyOXVjM1FnWjJRZ1BTQm5aWFJIYkc5aVlXeEVZWFJoS0NrN1hHNGdJQ0FnYjJKcUxtWnZjbTFFWVhSaElEMGdleUF1TGk1blpDd2dMaTR1YjJKcUxtWnZjbTFFWVhSaElIMDdYRzVjYmlBZ0lDQnBaaUFvSVdOdmJtWnBaeTVrYjA1dmRGVnpaVkYxWlhKNVUzUnlhVzVuS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJT1d3aHVlWnUrbVpodWFBZ2VTNW4rVzRwdVdjcUhWeWJPUzRpbHh1SUNBZ0lDQWdJQ0JwWmlBb2MzUmhkSFZ6TG5ObGMzTnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1MWNtd2dQU0IxY213dWMyVjBVR0Z5WVcxektHOWlhaTUxY213c0lIc2dXMk52Ym1acFp5NXpaWE56YVc5dVRtRnRaVjA2SUhOMFlYUjFjeTV6WlhOemFXOXVJSDBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDOHZJT1dGcU9XeGdPV1BndWFWc09XUWpPYVh0dWFVdnVXY3FIVnliT1M0aWx4dUlDQWdJQ0FnSUNCdlltb3VkWEpzSUQwZ2RYSnNMbk5sZEZCaGNtRnRjeWh2WW1vdWRYSnNMQ0JuWkNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4ZzVhU0g1NVNvNVorZjVaQ042WUM3Nkw2UlhHNGdJQ0FnYVdZZ0tITjBZWFIxY3k1cGMwVnVZV0pzWlVKaFkydDFjRVJ2YldGcGJpQW1KaUJqYjI1bWFXY3VZbUZqYTNWd1JHOXRZV2x1S1NCN1hHNGdJQ0FnSUNBZ0lHOWlhaTUxY213Z1BTQjFjbXd1Y21Wd2JHRmpaVVJ2YldGcGJpaHZZbW91ZFhKc0xDQmpiMjVtYVdjdVltRmphM1Z3Ukc5dFlXbHVLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUxuTjBZWEowS0c5aWFpazdYRzVjYmlBZ0lDQnlaWFIxY200Z2IySnFPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQm5aWFJIYkc5aVlXeEVZWFJoS0NrZ2UxeHVJQ0FnSUd4bGRDQm5aRG9nWVc1NUlEMGdlMzA3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VaMnh2WW1Gc1JHRjBZU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUdka0lEMGdZMjl1Wm1sbkxtZHNiMkpoYkVSaGRHRW9LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmpiMjVtYVdjdVoyeHZZbUZzUkdGMFlTQTlQVDBnWENKdlltcGxZM1JjSWlrZ2UxeHVJQ0FnSUNBZ0lDQm5aQ0E5SUdOdmJtWnBaeTVuYkc5aVlXeEVZWFJoTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1oyUTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHUnZVbVZ4ZFdWemRDaHZZbW82SUVsU1pYRjFaWE4wVDNCMGFXOXVLU0I3WEc0Z0lDQWdiMkpxSUQwZ2FXNXBkR2xoYkdsNlpWSmxjWFZsYzNSUFltb29iMkpxS1R0Y2JpQWdJQ0JwWmlBb2IySnFMbkpsVEc5bmFXNURiM1Z1ZENBOVBUMGdNQ0FtSmlCMGVYQmxiMllnWTI5dVptbG5MbUpsWm05eVpWTmxibVFnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCdlltb2dQU0JqYjI1bWFXY3VZbVZtYjNKbFUyVnVaQ2h2WW1vc0lITjBZWFIxY3k1elpYTnphVzl1S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxQRmRsWTJoaGRFMXBibWx3Y205bmNtRnRMbEpsY1hWbGMzUlRkV05qWlhOelEyRnNiR0poWTJ0U1pYTjFiSFErS0NoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdkM2d1Y21WeGRXVnpkQ2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXVMaTV2WW1vc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZFdOalpYTnpLSEpsY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTnZiSFpsS0hKbGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWm1GcGJDaHlaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RGxwb0xtbnB6a3VMdmxuNS9sa0kza3VJM2xqNi9ubEtqdnZJemt1SlRwaFkzbnZhN2t1b2JscElma3U3M2xuNS9sa0kzdnZJemt1SlRtbkt6bXJLSG9yN2Ztc1lMbW5Lcmt2Yi9ubEtqbHBJZmt1NzNsbjUvbGtJMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WelB5NWxjbkpOYzJjL0xtbHVaR1Y0VDJZb0owTlBUazVGUTFSSlQwNWZVa1ZHVlZORlJDY3BJRDQ5SURBZ0ppWWdZMjl1Wm1sbkxtSmhZMnQxY0VSdmJXRnBiaUFtSmlCdlltb3VkWEpzTG1sdVpHVjRUMllvWTI5dVptbG5MbUpoWTJ0MWNFUnZiV0ZwYmlrZ1BDQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJT1c4Z09XUXIrV2toK1M3dmVXZm4rV1FqVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJtRmliR1ZDWVdOcmRYQkViMjFoYVc0b0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzZZZU42SytWNUxpQTVxeWhYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrYjFKbGNYVmxjM1FvYjJKcUtTNTBhR1Z1S0NoeVpYTXBQVDRnY21WemIyeDJaU2h5WlhNcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENoN0lIUjVjR1U2SUNkemVYTjBaVzB0WlhKeWIzSW5MQ0J5WlhNZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91WTI5dGNHeGxkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZZbW91WTI5dGNHeGxkR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzlpYWk1emFHOTNURzloWkdsdVp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc2IyRmthVzVuTG1ocFpHVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmU2xjYm4xY2JseHVablZ1WTNScGIyNGdaRzlWY0d4dllXUkdhV3hsS0c5aWFqb2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJSHRjYmlBZ0lDQnZZbW9nUFNCcGJtbDBhV0ZzYVhwbFZYQnNiMkZrUm1sc1pVOWlhaWh2WW1vcE8xeHVJQ0FnSUdsbUlDaHZZbW91Y21WTWIyZHBia052ZFc1MElEMDlQU0F3SUNZbUlIUjVjR1Z2WmlCamIyNW1hV2N1WW1WbWIzSmxVMlZ1WkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lHOWlhaUE5SUdOdmJtWnBaeTVpWldadmNtVlRaVzVrS0c5aWFpd2djM1JoZEhWekxuTmxjM05wYjI0cE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlU4VjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VlhCc2IyRmtSbWxzWlZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RENG9LSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCM2VDNTFjR3h2WVdSR2FXeGxLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDNHVMbTlpYWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4xWTJObGMzTW9jbVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc0tISmxjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklPV21ndWFlbk9TNHUrV2ZuK1dRamVTNGplV1ByK2VVcU8rOGpPUzRsT21GamVlOXJ1UzZodVdraCtTN3ZlV2ZuK1dRamUrOGpPUzRsT2Fjck9hc29laXZ0K2F4Z3VhY3F1Uzl2K2VVcU9Xa2grUzd2ZVdmbitXUWpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h5WlhNL0xtVnljazF6Wno4dWFXNWtaWGhQWmlnblEwOU9Ua1ZEVkVsUFRsOVNSVVpWVTBWRUp5a2dQajBnTUNBbUppQmpiMjVtYVdjdVltRmphM1Z3Ukc5dFlXbHVJQ1ltSUc5aWFpNTFjbXd1YVc1a1pYaFBaaWhqYjI1bWFXY3VZbUZqYTNWd1JHOXRZV2x1S1NBOElEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1YnlBNVpDdjVhU0g1THU5NVorZjVaQ05YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWdVlXSnNaVUpoWTJ0MWNFUnZiV0ZwYmlncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlEcGg0M29yNVhrdUlEbXJLRmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1J2VlhCc2IyRmtSbWxzWlNodlltb3BMblJvWlc0b0tISmxjeWs5UGlCeVpYTnZiSFpsS0hKbGN5a3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtIc2dkSGx3WlRvZ0ozTjVjM1JsYlMxbGNuSnZjaWNzSUhKbGN5QjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyMXdiR1YwWlNncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JRzlpYWk1amIyMXdiR1YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1amIyMXdiR1YwWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYjJKcUxuTm9iM2RNYjJGa2FXNW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHZZV1JwYm1jdWFHbGtaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5S1Z4dWZWeHVYRzVtZFc1amRHbHZiaUJ5WlhGMVpYTjBQRlJTWlhOd1BpaHZZbW82SUVsU1pYRjFaWE4wVDNCMGFXOXVLVG9nVUhKdmJXbHpaVHhVVW1WemNENGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpTZ29jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUc5aWFpQTlJSEJ5WlVSdktHOWlhaXdnY21WemIyeDJaU3dnY21WcVpXTjBLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9ZMjl1Wm1sbkxtMXZZMnRLYzI5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdiVzlqYTFKbGMzQnZibk5sSUQwZ2JXOWphMDFoYm1GblpYSXVaMlYwS0c5aWFpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iVzlqYTFKbGMzQnZibk5sS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsYzNCdmJuTmxJRDBnY21WemNHOXVjMlZJWVc1a2JHVnlMbkpsYzNCdmJuTmxSbTl5VW1WeGRXVnpkQ2h0YjJOclVtVnpjRzl1YzJVc0lHOWlhaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVW9jbVZ6Y0c5dWMyVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHOWlhaTVqWVdOb1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRmphR1ZOWVc1aFoyVnlMbWRsZENodlltb3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2MyVnpjMmx2YmsxaGJtRm5aWEl1YldGcGJpaHZZbW9wTG5Sb1pXNG9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1J2VW1WeGRXVnpkQ2h2WW1vcFhHNGdJQ0FnSUNBZ0lIMHBMblJvWlc0b0tISmxjem9nVjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VW1WeGRXVnpkRk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsYzNCdmJuTmxJRDBnY21WemNHOXVjMlZJWVc1a2JHVnlMbkpsYzNCdmJuTmxSbTl5VW1WeGRXVnpkQ2h5WlhNc0lHOWlhaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WemNHOXVjMlVnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLSEpsYzNCdmJuTmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU2t1WTJGMFkyZ29LR1U2SUVsRmNuSnZjazlpYW1WamRDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHTmhkR05vU0dGdVpHeGxjaWhsTENCdlltb3NJSEpsYW1WamRDbGNiaUFnSUNBZ0lDQWdmU2xjYmlBZ0lDQjlLVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQjFjR3h2WVdSR2FXeGxLRzlpYWpvZ1NWVndiRzloWkVacGJHVlBjSFJwYjI0cE9pQmhibmtnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2dvY21WemIyeDJaU3dnY21WcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHOWlhaUE5SUhCeVpVUnZLRzlpYWl3Z2NtVnpiMngyWlN3Z2NtVnFaV04wS1R0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvWTI5dVptbG5MbTF2WTJ0S2MyOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYlc5amExSmxjM0J2Ym5ObElEMGdiVzlqYTAxaGJtRm5aWEl1WjJWMEtHOWlhaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYlc5amExSmxjM0J2Ym5ObEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUhKbGMzQnZibk5sSUQwZ2NtVnpjRzl1YzJWSVlXNWtiR1Z5TG5KbGMzQnZibk5sUm05eVZYQnNiMkZrUm1sc1pTaHRiMk5yVW1WemNHOXVjMlVzSUc5aWFpazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb2NtVnpjRzl1YzJVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjMlZ6YzJsdmJrMWhibUZuWlhJdWJXRnBiaWh2WW1vcExuUm9aVzRvS0NrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdSdlZYQnNiMkZrUm1sc1pTaHZZbW9wWEc0Z0lDQWdJQ0FnSUgwcExuUm9aVzRvS0hKbGN6b2dWMlZqYUdGMFRXbHVhWEJ5YjJkeVlXMHVWWEJzYjJGa1JtbHNaVk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsYzNCdmJuTmxJRDBnY21WemNHOXVjMlZJWVc1a2JHVnlMbkpsYzNCdmJuTmxSbTl5VlhCc2IyRmtSbWxzWlNoeVpYTXNJRzlpYWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVnpjRzl1YzJVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTnZiSFpsS0hKbGMzQnZibk5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNrdVkyRjBZMmdvS0dVNklFbEZjbkp2Y2s5aWFtVmpkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGMFkyaElZVzVrYkdWeUtHVXNJRzlpYWl3Z2NtVnFaV04wS1Z4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgwcFhHNTlYRzVjYm1aMWJtTjBhVzl1SUdWdVlXSnNaVUpoWTJ0MWNFUnZiV0ZwYmlncElIdGNiaUFnSUNCcFppQW9JWE4wWVhSMWN5NXBjMFZ1WVdKc1pVSmhZMnQxY0VSdmJXRnBiaWtnZTF4dUlDQWdJQ0FnSUNCemRHRjBkWE11YVhORmJtRmliR1ZDWVdOcmRYQkViMjFoYVc0Z1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1aVlXTnJkWEJFYjIxaGFXNUZibUZpYkdWRFlXeHNZbUZqYXlBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1Wm1sbkxtSmhZMnQxY0VSdmJXRnBia1Z1WVdKc1pVTmhiR3hpWVdOcktDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUh0Y2JpQWdJQ0JtYjNKdFlYUXNYRzRnSUNBZ2NtVnhkV1Z6ZEN4Y2JpQWdJQ0IxY0d4dllXUkdhV3hsWEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXF1ZXN0SGFuZGxlclwiKTtcbnZhciBjYWNoZU1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL2NhY2hlTWFuYWdlclwiKTtcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9zZXNzaW9uTWFuYWdlclwiKTtcbnZhciBqc29uU3VwZXJzZXRfMSA9IHJlcXVpcmUoXCIuLi91dGlsL2pzb25TdXBlcnNldFwiKTtcbmZ1bmN0aW9uIHJlc3BvbnNlRm9yUmVxdWVzdChyZXMsIG9iaikge1xuICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LmVuZChvYmopO1xuICAgICAgICBpZiAob2JqLmRhdGFUeXBlID09PSAnanNvbicgJiYgdHlwZW9mIHJlcy5kYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmVzLmRhdGEgPSBqc29uU3VwZXJzZXRfMS5kZWZhdWx0KHJlcy5kYXRhKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzLmRhdGEgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAnbG9naWMtZXJyb3InLCByZXM6IHJlcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmxvZ2luVHJpZ2dlcihyZXMuZGF0YSkgJiYgb2JqLnJlTG9naW5Db3VudCAhPT0gdW5kZWZpbmVkICYmIG9iai5yZUxvZ2luQ291bnQgPCBjb25maWdfMS5kZWZhdWx0LnJlTG9naW5MaW1pdCkge1xuICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0LmRlbFNlc3Npb24oKTtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQucmVxdWVzdChvYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc1RyaWdnZXIocmVzLmRhdGEpKSB7XG4gICAgICAgICAgICB2YXIgcmVhbERhdGEgPSBcIlwiO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSBjb25maWdfMS5kZWZhdWx0LnN1Y2Nlc3NEYXRhKHJlcy5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWxEYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgY2FjaGVNYW5hZ2VyXzEuZGVmYXVsdC5zZXQob2JqLCByZWFsRGF0YSk7XG4gICAgICAgICAgICBpZiAoIW9iai5ub0NhY2hlRmxhc2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxEYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ2xvZ2ljLWVycm9yJywgcmVzOiByZXMgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgeyB0eXBlOiAnaHR0cC1lcnJvcicsIHJlczogcmVzIH07XG4gICAgfVxufVxuZnVuY3Rpb24gcmVzcG9uc2VGb3JVcGxvYWRGaWxlKHJlcywgb2JqKSB7XG4gICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuZW5kKG9iaik7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXMuZGF0YSA9IGpzb25TdXBlcnNldF8xLmRlZmF1bHQocmVzLmRhdGEpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXMuZGF0YSA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdsb2dpYy1lcnJvcicsIHJlczogcmVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubG9naW5UcmlnZ2VyKHJlcy5kYXRhKSAmJiBvYmoucmVMb2dpbkNvdW50ICE9PSB1bmRlZmluZWQgJiYgb2JqLnJlTG9naW5Db3VudCA8IGNvbmZpZ18xLmRlZmF1bHQucmVMb2dpbkxpbWl0KSB7XG4gICAgICAgICAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQuZGVsU2Vzc2lvbigpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC51cGxvYWRGaWxlKG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzVHJpZ2dlcihyZXMuZGF0YSkpIHtcbiAgICAgICAgICAgIHZhciByZWFsRGF0YSA9IFwiXCI7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBvYmouc3VjY2VzcyhyZWFsRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhbERhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdsb2dpYy1lcnJvcicsIHJlczogcmVzIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IHsgdHlwZTogJ2h0dHAtZXJyb3InLCByZXM6IHJlcyB9O1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICByZXNwb25zZUZvclJlcXVlc3Q6IHJlc3BvbnNlRm9yUmVxdWVzdCxcbiAgICByZXNwb25zZUZvclVwbG9hZEZpbGU6IHJlc3BvbnNlRm9yVXBsb2FkRmlsZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtVnpjRzl1YzJWSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOXlaWE53YjI1elpVaGhibVJzWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN3d1EwRkJiME03UVVGRGNFTXNiVVJCUVRaRE8wRkJRemRETEN0RFFVRjVRenRCUVVONlF5eDFSRUZCYVVRN1FVRkRha1FzYlVSQlFUWkRPMEZCUlRkRExIRkVRVUVyUXp0QlFVVXZReXhUUVVGVExHdENRVUZyUWl4RFFVTjJRaXhIUVVGdFJDeEZRVU51UkN4SFFVRnRRanRKUVVWdVFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRXRCUVVzc1IwRkJSeXhGUVVGRk8xRkJSWGhDTERCQ1FVRm5RaXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVY3hRaXhKUVVGSkxFZEJRVWNzUTBGQlF5eFJRVUZSTEV0QlFVc3NUVUZCVFN4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFbEJRVWtzUzBGQlN5eFJRVUZSTEVWQlFVVTdXVUZEZWtRc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eHpRa0ZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5zUXl4SlFVRkpPMmRDUVVOQkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdZVUZEYmtNN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdG5Ra0ZEVWl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxHRkJRV0VzUlVGQlJTeEhRVUZITEV0QlFVRXNSVUZCUlN4RFFVRkJPMkZCUTNKRE8xTkJRMG83VVVGRlJDeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1dVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hMUVVGTExGTkJRVk1zU1VGQlNTeEhRVUZITEVOQlFVTXNXVUZCV1N4SFFVRkhMR2RDUVVGTkxFTkJRVU1zV1VGQllTeEZRVUZGTzFsQlJUZEhMSGRDUVVGakxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdXVUZETlVJc1QwRkJUeXgzUWtGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOMFF6dGhRVUZOTEVsQlFVa3NaMEpCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMWxCUlhoRExFbEJRVWtzVVVGQlVTeEhRVUZ6UXl4RlFVRkZMRU5CUVVNN1dVRkRja1FzU1VGQlNUdG5Ra0ZEUVN4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFhRVUZYTEV0QlFVc3NWVUZCVlN4RlFVRkZPMjlDUVVNeFF5eFJRVUZSTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVNelF6dHhRa0ZCVFR0dlFrRkRTQ3hSUVVGUkxFZEJRVWNzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXp0cFFrRkRka0k3WVVGRFNqdFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRWRCUVVVN1dVRkZaQ3h6UWtGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRGFFTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFVkJRVVU3WjBKQlJXNUNMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zVDBGQlR5eExRVUZMTEZWQlFWVXNSVUZCUlR0dlFrRkRia01zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRwUWtGRGVrSTdjVUpCUVUwN2IwSkJRMGdzVDBGQlR5eFJRVUZSTEVOQlFVTTdhVUpCUTI1Q08yRkJRMG83VTBGRFNqdGhRVUZOTzFsQlJVZ3NUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hoUVVGaExFVkJRVVVzUjBGQlJ5eExRVUZCTEVWQlFVVXNRMEZCUVR0VFFVTnlRenRMUVVOS08xTkJRVTA3VVVGRlNDeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRmxCUVZrc1JVRkJSU3hIUVVGSExFdEJRVUVzUlVGQlJTeERRVUZCTzB0QlEzQkRPMEZCUTB3c1EwRkJRenRCUVVWRUxGTkJRVk1zY1VKQlFYRkNMRU5CUXpGQ0xFZEJRWE5FTEVWQlEzUkVMRWRCUVhOQ08wbEJSWFJDTEVsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1MwRkJTeXhIUVVGSExFVkJRVVU3VVVGRmVFSXNNRUpCUVdkQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUnpGQ0xFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4TFFVRkxMRkZCUVZFc1JVRkJSVHRaUVVNNVFpeEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMSE5DUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTJ4RExFbEJRVWs3WjBKQlEwRXNSMEZCUnl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRoUVVOdVF6dFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMmRDUVVOU0xFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVXNZVUZCWVN4RlFVRkZMRWRCUVVjc1MwRkJRU3hGUVVGRkxFTkJRVUU3WVVGRGNrTTdVMEZEU2p0UlFVVkVMRWxCUVVrc1owSkJRVTBzUTBGQlF5eFpRVUZoTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eFpRVUZaTEV0QlFVc3NVMEZCVXl4SlFVRkpMRWRCUVVjc1EwRkJReXhaUVVGWkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4WlFVRmhMRVZCUVVVN1dVRkZOMGNzZDBKQlFXTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRaUVVNMVFpeFBRVUZQTEhkQ1FVRmpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzcERPMkZCUVUwc1NVRkJTU3huUWtGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRmVFTXNTVUZCU1N4UlFVRlJMRWRCUVhORExFVkJRVVVzUTBGQlF6dFpRVU55UkN4SlFVRkpPMmRDUVVOQkxFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRmRCUVZjc1MwRkJTeXhWUVVGVkxFVkJRVVU3YjBKQlF6RkRMRkZCUVZFc1IwRkJSeXhuUWtGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03YVVKQlF6TkRPM0ZDUVVGTk8yOUNRVU5JTEZGQlFWRXNSMEZCUnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRE8ybENRVU4yUWp0aFFVTktPMWxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUjBGQlJUdFpRVVZrTEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhMUVVGTExGVkJRVlVzUlVGQlJUdG5Ra0ZEYmtNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0aFFVTjZRanRwUWtGQlRUdG5Ra0ZEU0N4UFFVRlBMRkZCUVZFc1EwRkJRenRoUVVOdVFqdFRRVU5LTzJGQlFVMDdXVUZGU0N4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxHRkJRV0VzUlVGQlJTeEhRVUZITEV0QlFVRXNSVUZCUlN4RFFVRkJPMU5CUTNKRE8wdEJRMG83VTBGQlRUdFJRVVZJTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFZEJRVWNzUzBGQlFTeEZRVUZGTEVOQlFVRTdTMEZEY0VNN1FVRkRUQ3hEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4clFrRkJhMElzYjBKQlFVRTdTVUZEYkVJc2NVSkJRWEZDTEhWQ1FVRkJPME5CUTNoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnWTI5dVptbG5JR1p5YjIwZ0p5NHVMM04wYjNKbEwyTnZibVpwWnlkY2JtbHRjRzl5ZENCeVpYRjFaWE4wU0dGdVpHeGxjaUJtY205dElDY3VMM0psY1hWbGMzUklZVzVrYkdWeUoxeHVhVzF3YjNKMElHTmhZMmhsVFdGdVlXZGxjaUJtY205dElDY3VMMk5oWTJobFRXRnVZV2RsY2lkY2JtbHRjRzl5ZENCa2RYSmhkR2x2YmxKbGNHOXlkR1Z5SUdaeWIyMGdKeTR2WkhWeVlYUnBiMjVTWlhCdmNuUmxjaWRjYm1sdGNHOXlkQ0J6WlhOemFXOXVUV0Z1WVdkbGNpQm1jbTl0SUNjdUwzTmxjM05wYjI1TllXNWhaMlZ5SjF4dWFXMXdiM0owSUhzZ1NWSmxjWFZsYzNSUGNIUnBiMjRzSUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1TENCSlFXNTVUMkpxWldOMElIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpTzF4dWFXMXdiM0owSUdwemIyNVRkWEJsY25ObGRDQm1jbTl0SUNjdUxpOTFkR2xzTDJwemIyNVRkWEJsY25ObGRDZGNibHh1Wm5WdVkzUnBiMjRnY21WemNHOXVjMlZHYjNKU1pYRjFaWE4wS0Z4dUlDQWdJSEpsY3pvZ1YyVmphR0YwVFdsdWFYQnliMmR5WVcwdVVtVnhkV1Z6ZEZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDeGNiaUFnSUNCdlltbzZJRWxTWlhGMVpYTjBUM0IwYVc5dVhHNHBPaUJoYm5rZ2UxeHVJQ0FnSUdsbUlDaHlaWE11YzNSaGRIVnpRMjlrWlNBOVBUMGdNakF3S1NCN1hHNWNiaUFnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNWxibVFvYjJKcUtUdGNiaUFnSUNBZ0lDQWdYRzRnSUNBZ0lDQWdJQzh2SU9pdnQrYXhndWFndk9XOGorUzR1bXB6YjI3dnZJemt2WWJvdjVUbG01N2t1b1p6ZEhKcGJtZnZ2SXpvcjdUbW1JN2xob1hscnJua3VLM2xqNi9vZzczbHJaamxuS2pscjd6b2g3VGt2Yi9sdnBkS1lYWmhVMk55YVhCMDVieUM1Ymk0NTVxRTVhMlg1NnltWEc0Z0lDQWdJQ0FnSUdsbUlDaHZZbW91WkdGMFlWUjVjR1VnUFQwOUlDZHFjMjl1SnlBbUppQjBlWEJsYjJZZ2NtVnpMbVJoZEdFZ1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE11WkdGMFlTQTlJR3B6YjI1VGRYQmxjbk5sZENoeVpYTXVaR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjeTVrWVhSaElEMGdTbE5QVGk1d1lYSnpaU2h5WlhNdVpHRjBZU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dleUIwZVhCbE9pQW5iRzluYVdNdFpYSnliM0luTENCeVpYTWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZibVpwWnk1c2IyZHBibFJ5YVdkblpYSWhLSEpsY3k1a1lYUmhLU0FtSmlCdlltb3VjbVZNYjJkcGJrTnZkVzUwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnYjJKcUxuSmxURzluYVc1RGIzVnVkQ0E4SUdOdmJtWnBaeTV5WlV4dloybHVUR2x0YVhRaEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSGxwTEhtbFlqdnZJemt1SlRwaDQzb3I1WG1yS0htbGJEa3VJM290b1hvdjRmcGhZM252YTVjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG1SbGJGTmxjM05wYjI0b0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhGMVpYTjBTR0Z1Wkd4bGNpNXlaWEYxWlhOMEtHOWlhaWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXVabWxuTG5OMVkyTmxjM05VY21sbloyVnlLSEpsY3k1a1lYUmhLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNW82bDVZK2o2TCtVNVp1ZTVvaVE1WXFmNTZDQlhHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NtVmhiRVJoZEdFNklITjBjbWx1WnlCOElFbEJibmxQWW1wbFkzUWdmQ0JCY25KaGVVSjFabVpsY2lBOUlGd2lYQ0k3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG5OMVkyTmxjM05FWVhSaElEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsWVd4RVlYUmhJRDBnWTI5dVptbG5Mbk4xWTJObGMzTkVZWFJoS0hKbGN5NWtZWFJoS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaV0ZzUkdGMFlTQTlJSEpsY3k1a1lYUmhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHQ5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURudkpQbHJaamxyWmpsZ3FoY2JpQWdJQ0FnSUNBZ0lDQWdJR05oWTJobFRXRnVZV2RsY2k1elpYUW9iMkpxTENCeVpXRnNSR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXOWlhaTV1YjBOaFkyaGxSbXhoYzJncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeURscG9MbW5wemt1THJrdW9ia3Y1M29yNEhwb2JYcG5hTGt1STNwbDZybmc0SHZ2SXpsaUpua3VJM2xtNTdvc0lQdnZJemxqNnJtbUsvbnZKUGxyWmptbklEbWxyRG1sYkRtamE3dnZJemx2b1hrdUl2bXJLSG92NXZsaGFYbGhvM25sS2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNXpkV05qWlhOeklEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxuTjFZMk5sYzNNb2NtVmhiRVJoZEdFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV0ZzUkdGMFlUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlEbWpxWGxqNlBvdjVUbG01N2xwTEhvdEtYbm9JRmNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJSHNnZEhsd1pUb2dKMnh2WjJsakxXVnljbTl5Snl3Z2NtVnpJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQzh2SUdoMGRIQno2TCtVNVp1ZTU0cTI1b0NCNTZDQjZaMmVNakF3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJSHNnZEhsd1pUb2dKMmgwZEhBdFpYSnliM0luTENCeVpYTWdmVnh1SUNBZ0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2NtVnpjRzl1YzJWR2IzSlZjR3h2WVdSR2FXeGxLRnh1SUNBZ0lISmxjem9nVjJWamFHRjBUV2x1YVhCeWIyZHlZVzB1VlhCc2IyRmtSbWxzWlZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDeGNiaUFnSUNCdlltbzZJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVYRzRwT2lCaGJua2dlMXh1SUNBZ0lHbG1JQ2h5WlhNdWMzUmhkSFZ6UTI5a1pTQTlQVDBnTWpBd0tTQjdYRzVjYmlBZ0lDQWdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVsYm1Rb2IySnFLVHRjYmx4dUlDQWdJQ0FnSUNBdkx5RGxob1hscnJua3VLM2xqNi9vZzczbHJaamxuS2pscjd6b2g3VGt2Yi9sdnBkS1lYWmhVMk55YVhCMDVieUM1Ymk0NTVxRTVhMlg1NnltWEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2NtVnpMbVJoZEdFZ1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE11WkdGMFlTQTlJR3B6YjI1VGRYQmxjbk5sZENoeVpYTXVaR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjeTVrWVhSaElEMGdTbE5QVGk1d1lYSnpaU2h5WlhNdVpHRjBZU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dleUIwZVhCbE9pQW5iRzluYVdNdFpYSnliM0luTENCeVpYTWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZibVpwWnk1c2IyZHBibFJ5YVdkblpYSWhLSEpsY3k1a1lYUmhLU0FtSmlCdlltb3VjbVZNYjJkcGJrTnZkVzUwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnYjJKcUxuSmxURzluYVc1RGIzVnVkQ0E4SUdOdmJtWnBaeTV5WlV4dloybHVUR2x0YVhRaEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSGxwTEhtbFlqdnZJemt1SlRwaDQzb3I1WG1yS0htbGJEa3VJM290b1hvdjRmcGhZM252YTVjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG1SbGJGTmxjM05wYjI0b0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhGMVpYTjBTR0Z1Wkd4bGNpNTFjR3h2WVdSR2FXeGxLRzlpYWlrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMjl1Wm1sbkxuTjFZMk5sYzNOVWNtbG5aMlZ5S0hKbGN5NWtZWFJoS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVvNmw1WStqNkwrVTVadWU1b2lRNVlxZjU2Q0JYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdjbVZoYkVSaGRHRTZJSE4wY21sdVp5QjhJRWxCYm5sUFltcGxZM1FnZkNCQmNuSmhlVUoxWm1abGNpQTlJRndpWENJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxuTjFZMk5sYzNORVlYUmhJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbFlXeEVZWFJoSUQwZ1kyOXVabWxuTG5OMVkyTmxjM05FWVhSaEtISmxjeTVrWVhSaEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WldGc1JHRjBZU0E5SUhKbGN5NWtZWFJoTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0OVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2IySnFMbk4xWTJObGMzTWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1emRXTmpaWE56S0hKbFlXeEVZWFJoS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxZV3hFWVhSaE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNW82bDVZK2o2TCtVNVp1ZTVhU3g2TFNsNTZDQlhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QjdJSFI1Y0dVNklDZHNiMmRwWXkxbGNuSnZjaWNzSUhKbGN5QjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJvZEhSd2MraS9sT1dibnVlS3R1YUFnZWVnZ2VtZG5qSXdNRnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QjdJSFI1Y0dVNklDZG9kSFJ3TFdWeWNtOXlKeXdnY21WeklIMWNiaUFnSUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJSHRjYmlBZ0lDQnlaWE53YjI1elpVWnZjbEpsY1hWbGMzUXNYRzRnSUNBZ2NtVnpjRzl1YzJWR2IzSlZjR3h2WVdSR2FXeGxYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XG52YXIgZHVyYXRpb25SZXBvcnRlcl8xID0gcmVxdWlyZShcIi4vZHVyYXRpb25SZXBvcnRlclwiKTtcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4vcmVxdWVzdEhhbmRsZXJcIik7XG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi4vYXBpL3JlcXVlc3RcIik7XG52YXIgY2hlY2tTZXNzaW9uUHJvbWlzZSA9IG51bGw7XG5mdW5jdGlvbiBjaGVja1Nlc3Npb24oKSB7XG4gICAgaWYgKCFjaGVja1Nlc3Npb25Qcm9taXNlKSB7XG4gICAgICAgIGNoZWNrU2Vzc2lvblByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIHd4LmNoZWNrU2Vzc2lvbih7XG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0xvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5yZXBvcnQoJ3d4X2NoZWNrU2Vzc2lvbicsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNoZWNrU2Vzc2lvblByb21pc2U7XG59XG5mdW5jdGlvbiBpc1Nlc3Npb25FeHBpcmVPckVtcHR5KCkge1xuICAgIGlmICghc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSAmJiBuZXcgRGF0ZSgpLmdldFRpbWUoKSA+IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSkge1xuICAgICAgICBkZWxTZXNzaW9uKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBjaGVja0xvZ2luKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGlmIChpc1Nlc3Npb25FeHBpcmVPckVtcHR5KCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRvTG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxudmFyIGxvZ2luUHJvbWlzZSA9IG51bGw7XG5mdW5jdGlvbiBkb0xvZ2luKCkge1xuICAgIGlmICghbG9naW5Qcm9taXNlKSB7XG4gICAgICAgIGxvZ2luUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGxvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbG9naW5Qcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGxvZ2luUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgbG9hZGluZ18xLmRlZmF1bHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxvZ2luUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGxvZ2luKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB3eC5sb2dpbih7XG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGUyU2Vzc2lvbihyZXMuY29kZSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHR5cGU6IFwic3lzdGVtLWVycm9yXCIsIHJlczogcmVzIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5yZXBvcnQoJ3d4X2xvZ2luJywgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0eXBlOiBcInN5c3RlbS1lcnJvclwiLCByZXM6IHJlcyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzZXRTZXNzaW9uKHNlc3Npb24pIHtcbiAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSBzZXNzaW9uO1xuICAgIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWU7XG4gICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgICAgICBkYXRhOiBTdHJpbmcoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSxcbiAgICAgICAgZGF0YTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjb2RlMlNlc3Npb24oY29kZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRhdGEsIG9iajtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5kYXRhID09PSBcImZ1bmN0aW9uXCIpKSByZXR1cm4gWzMsIDJdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5kYXRhKGNvZGUpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgM107XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmRhdGEgfHwge307XG4gICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMztcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uY29kZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmNvZGVOYW1lXSA9IGNvZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvZGUgPSBjb2RlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9iaiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LmZvcm1hdChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24udXJsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5tZXRob2QgfHwgJ0dFVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlciA9PT0gJ2Z1bmN0aW9uJyA/IGNvbmZpZ18xLmRlZmF1bHQuc2V0SGVhZGVyKCkgOiBjb25maWdfMS5kZWZhdWx0LnNldEhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gY29uZmlnXzEuZGVmYXVsdC5iZWZvcmVTZW5kKG9iaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3gucmVxdWVzdChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JqKSwgeyBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ucmVwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQucmVwb3J0KGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5yZXBvcnQsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnN1Y2Nlc3MocmVzLmRhdGEsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogU3RyaW5nKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5nZXRFcnJvck1zZyhyZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdHlwZTogXCJodHRwLWVycm9yXCIsIHJlczogcmVzIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdHlwZTogXCJzeXN0ZW0tZXJyb3JcIiwgcmVzOiByZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGRlbFNlc3Npb24oKSB7XG4gICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gJyc7XG4gICAgd3gucmVtb3ZlU3RvcmFnZSh7XG4gICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZVxuICAgIH0pO1xuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBJbmZpbml0eTtcbiAgICAgICAgd3gucmVtb3ZlU3RvcmFnZSh7XG4gICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleVxuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYWluKHJlbGF0ZWRSZXF1ZXN0T2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHJldHJ5ID0gIXJlbGF0ZWRSZXF1ZXN0T2JqXG4gICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1haW4oKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7IH1cbiAgICAgICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVxdWVzdF8xLmRlZmF1bHQocmVsYXRlZFJlcXVlc3RPYmopLnRoZW4ocmVsYXRlZFJlcXVlc3RPYmouX3Jlc29sdmUpLmNhdGNoKHJlbGF0ZWRSZXF1ZXN0T2JqLl9yZWplY3QpOyB9O1xuICAgICAgICByZXR1cm4gY2hlY2tMb2dpbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPyBQcm9taXNlLnJlc29sdmUoKSA6IGNoZWNrU2Vzc2lvbigpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IF9hLnRpdGxlLCBjb250ZW50ID0gX2EuY29udGVudDtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZG9FcnJvcih0aXRsZSwgY29udGVudCwgcmV0cnkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiB0aXRsZSwgY29udGVudDogY29udGVudCB9KTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IF9hLnRpdGxlLCBjb250ZW50ID0gX2EuY29udGVudDtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZG9FcnJvcih0aXRsZSwgY29udGVudCwgcmV0cnkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiB0aXRsZSwgY29udGVudDogY29udGVudCB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgbWFpbjogbWFpbixcbiAgICBzZXRTZXNzaW9uOiBzZXRTZXNzaW9uLFxuICAgIGRlbFNlc3Npb246IGRlbFNlc3Npb25cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ6YzJsdmJrMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMM05sYzNOcGIyNU5ZVzVoWjJWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zTUVOQlFXOURPMEZCUTNCRExDdERRVUY1UXp0QlFVTjZReXgxUkVGQmFVUTdRVUZEYWtRc2JVUkJRVFpETzBGQlF6ZERMREpEUVVGeFF6dEJRVU55UXl3d1EwRkJiME03UVVGSmNFTXNTVUZCU1N4dFFrRkJiVUlzUjBGQlVTeEpRVUZKTEVOQlFVTTdRVUZGY0VNc1UwRkJVeXhaUVVGWk8wbEJRMnBDTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUlVGQlJUdFJRVU4wUWl4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCVHl4VlFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTk8xbEJRM0JFTEVsQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdXVUZEYmtNc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF6dG5Ra0ZEV2l4UFFVRlBPMjlDUVVWSUxFOUJRVThzVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTNKQ0xFTkJRVU03WjBKQlEwUXNTVUZCU1N4RlFVRktPMjlDUVVWSkxGVkJRVlVzUlVGQlJTeERRVUZETzI5Q1FVTmlMRTlCUVU4c1QwRkJUeXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETzNkQ1FVTnNRaXhQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETzI5Q1FVTnlRaXhEUVVGRExFVkJRVVVzVlVGQlF5eEhRVUZSTzNkQ1FVTlNMRTlCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTjJRaXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEVUN4RFFVRkRPMmRDUVVORUxGRkJRVkU3YjBKQlEwb3NTVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0dlFrRkRha01zTUVKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBRc1EwRkJRenRoUVVOS0xFTkJRVU1zUTBGQlFUdFJRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMHRCUTB3N1NVRkRSQ3hQUVVGUExHMUNRVUZ0UWl4RFFVRkRPMEZCUXk5Q0xFTkJRVU03UVVGSFJDeFRRVUZUTEhOQ1FVRnpRanRKUVVNelFpeEpRVUZKTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhQUVVGUExFVkJRVVU3VVVGRmFrSXNUMEZCVHl4SlFVRkpMRU5CUVVFN1MwRkRaRHRKUVVORUxFbEJRVWtzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZPMUZCUlhwRkxGVkJRVlVzUlVGQlJTeERRVUZETzFGQlEySXNUMEZCVHl4SlFVRkpMRU5CUVVFN1MwRkRaRHRKUVVORUxFOUJRVThzUzBGQlN5eERRVUZCTzBGQlEyaENMRU5CUVVNN1FVRkZSQ3hUUVVGVExGVkJRVlU3U1VGRFppeFBRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRlBMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3VVVGRGNrTXNTVUZCU1N4elFrRkJjMElzUlVGQlJTeEZRVUZGTzFsQlJURkNMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMmhETEU5QlFVOHNUMEZCVHl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU5zUWl4UFFVRlBMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJRM0pDTEVOQlFVTXNSVUZCUlN4VlFVRkRMRWRCUVZFN1owSkJRMUlzVDBGQlR5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka0lzUTBGQlF5eERRVUZETEVOQlFVRTdVMEZEVER0aFFVRk5PMWxCUlVnc1QwRkJUeXhQUVVGUExFVkJRVVVzUTBGQlF6dFRRVU53UWp0SlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVWRFTEVsQlFVa3NXVUZCV1N4SFFVRlJMRWxCUVVrc1EwRkJRenRCUVVVM1FpeFRRVUZUTEU5QlFVODdTVUZEV2l4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRk8xRkJRMllzV1VGQldTeEhRVUZITEVsQlFVa3NUMEZCVHl4RFFVRlBMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3V1VGRE4wTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU5VTEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1owSkJRM0JDTEU5QlFVOHNUMEZCVHl4RlFVRkZMRU5CUVVNN1dVRkRja0lzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1IwRkJSenRuUWtGRFZDeFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRPMmRDUVVOd1FpeHBRa0ZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8yZENRVU5tTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM1pDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1EwRkJReXhEUVVGRExFTkJRVUU3UzBGRFREdEpRVU5FTEU5QlFVOHNXVUZCV1N4RFFVRkRPMEZCUTNoQ0xFTkJRVU03UVVGRlJDeFRRVUZUTEV0QlFVczdTVUZEVml4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGUExGVkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMDdVVUZEY2tNc1NVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVOdVF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUTB3c1QwRkJUeXhaUVVGRExFZEJRVWM3WjBKQlExQXNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRk8yOUNRVU5XTEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzNkQ1FVTjRRaXhQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETzI5Q1FVTnlRaXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCUXl4SFFVRkhPM2RDUVVOVUxFOUJRVThzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOMlFpeERRVUZETEVOQlFVTXNRMEZCUVR0cFFrRkRURHR4UWtGQlRUdHZRa0ZEU0N4UFFVRlBMRTFCUVUwc1EwRkJReXhGUVVGRExFbEJRVWtzUlVGQlJTeGpRVUZqTEVWQlFVVXNSMEZCUnl4TFFVRkJMRVZCUVVNc1EwRkJReXhEUVVGRE8ybENRVU01UXp0WlFVTk1MRU5CUVVNN1dVRkRSQ3hSUVVGUk8yZENRVU5LTEVsQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTJwRExEQkNRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNCRUxFTkJRVU03V1VGRFJDeEpRVUZKTEZsQlFVTXNSMEZCUnp0blFrRkRTaXhQUVVGUExFMUJRVTBzUTBGQlF5eEZRVUZETEVsQlFVa3NSVUZCUlN4alFVRmpMRVZCUVVVc1IwRkJSeXhMUVVGQkxFVkJRVU1zUTBGQlF5eERRVUZETzFsQlF5OURMRU5CUVVNN1UwRkRTaXhEUVVGRExFTkJRVUU3U1VGRFRpeERRVUZETEVOQlFVTXNRMEZCUVR0QlFVTk9MRU5CUVVNN1FVRkZSQ3hUUVVGVExGVkJRVlVzUTBGQlF5eFBRVUZsTzBsQlF5OUNMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVVjZRaXhuUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF6dEpRVVZvUXl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRWxCUVVrc1owSkJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSVHRSUVVOeVJDeG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4SFFVRkhMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1VVRkRka1VzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTldMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEdkQ1FVRm5RanRaUVVNMVFpeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETzFOQlEzSkRMRU5CUVVNc1EwRkJRVHRMUVVOTU8wbEJRMFFzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXp0UlFVTldMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEZkQlFYRkNPMUZCUTJwRExFbEJRVWtzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4N1MwRkRka0lzUTBGQlF5eERRVUZETzBGQlExQXNRMEZCUXp0QlFVVkVMRk5CUVdVc1dVRkJXU3hEUVVGRExFbEJRVms3T3pzN096dDVRa0ZIYUVNc1EwRkJRU3hQUVVGUExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1MwRkJTeXhWUVVGVkxFTkJRVUVzUlVGQkwwTXNZMEZCSzBNN2IwSkJRM2hETEZkQlFVMHNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkJPenR2UWtGQk5VTXNTVUZCU1N4SFFVRkhMRk5CUVhGRExFTkJRVU03T3p0dlFrRkZOME1zU1VGQlNTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTTdPenR2UWtGRk0wTXNTVUZCU1N4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVWQlFVVTdkMEpCUXk5Q0xFbEJRVWtzUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdjVUpCUXpsRE8zbENRVUZOTzNkQ1FVTklMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzNGQ1FVTndRanR2UWtGRlJ5eEhRVUZITEVkQlFVYzdkMEpCUTA0c1IwRkJSeXhGUVVGRkxIZENRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXp0M1FrRkRjRVFzU1VGQlNTeE5RVUZCTzNkQ1FVTktMRTFCUVUwc1JVRkJSU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRWxCUVVrc1MwRkJTenQzUWtGRE5VTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFRRVUZUTEV0QlFVc3NWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkJMRU5CUVVNc1EwRkJReXhuUWtGQlRTeERRVUZETEZOQlFWTTdjVUpCUTNoR0xFTkJRVUU3YjBKQlEwUXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeExRVUZMTEZWQlFWVXNSVUZCUlR0M1FrRkRla01zUjBGQlJ5eEhRVUZITEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzNGQ1FVTm9RenR2UWtGRlJDeFhRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRkRMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3TkVKQlF5OUNMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN05FSkJRMnBETEVWQlFVVXNRMEZCUXl4UFFVRlBMSFZDUVVOSUxFZEJRVWNzUzBGRFRpeFBRVUZQTEVWQlFWQXNWVUZCVVN4SFFVRnRSRHR2UTBGRGRrUXNTVUZCU1N4SFFVRkhMRU5CUVVNc1ZVRkJWU3hMUVVGTExFZEJRVWNzUlVGQlJUdDNRMEZGZUVJc1NVRkJTU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVN05FTkJRemRDTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdORU5CUXk5Q0xEQkNRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhuUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1MwRkJTeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZCTzNsRFFVTnVSVHQzUTBGRlJDeEpRVUZKTEVOQlFVTXNVMEZCUVN4RFFVRkRPM2REUVVOT0xFbEJRVWs3TkVOQlEwRXNRMEZCUXl4SFFVRkhMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzNsRFFVTnVSRHQzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0NVEwRkRXRHQzUTBGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRkZCUVZFc1JVRkJSVHMwUTBGRGRrSXNaMEpCUVUwc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZET3pSRFFVVnVRaXhuUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF6czBRMEZGYUVNc1NVRkJTU3huUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhKUVVGSkxHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVU3WjBSQlEzSkVMR2RDUVVGTkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dG5SRUZEZGtVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF6dHZSRUZEVml4SFFVRkhMRVZCUVVVc1owSkJRVTBzUTBGQlF5eG5Ra0ZCWjBJN2IwUkJRelZDTEVsQlFVa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTTdhVVJCUTNKRExFTkJRVU1zUTBGQlFUczJRMEZEVERzMFEwRkRSQ3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzJkRVFVTldMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEZkQlFWYzdaMFJCUTNaQ0xFbEJRVWtzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4N05rTkJRM1pDTEVOQlFVTXNRMEZCUXpzMFEwRkRTQ3hQUVVGUExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0NVEwRkRja0k3TmtOQlFVMDdORU5CUTBnc1QwRkJUeXhOUVVGTkxFTkJRVU1zYzBKQlFWa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dDVRMEZEYUVRN2NVTkJRMG83ZVVOQlFVMDdkME5CUTBnc1QwRkJUeXhOUVVGTkxFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNXVUZCV1N4RlFVRkZMRWRCUVVjc1MwRkJRU3hGUVVGRExFTkJRVU1zUTBGQlF6dHhRMEZETlVNN1owTkJRMHdzUTBGQlF6dG5RMEZEUkN4UlFVRlJPMmREUVVOU0xFTkJRVU1zUlVGRFJDeEpRVUZKTEVWQlFVVXNWVUZCUXl4SFFVRkhPMjlEUVVOT0xFOUJRVThzVFVGQlRTeERRVUZETEVWQlFVTXNTVUZCU1N4RlFVRkZMR05CUVdNc1JVRkJSU3hIUVVGSExFdEJRVUVzUlVGQlF5eERRVUZETEVOQlFVTTdaME5CUXk5RExFTkJRVU1zU1VGRFNDeERRVUZCTzNkQ1FVTk9MRU5CUVVNc1EwRkJReXhGUVVGQk96czdPME5CUTB3N1FVRkhSQ3hUUVVGVExGVkJRVlU3U1VGRFppeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGNFSXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVOaUxFZEJRVWNzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRmRCUVhGQ08wdEJRM0JETEVOQlFVTXNRMEZCUXp0SlFVTklMRWxCUVVrc1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJc1NVRkJTU3huUWtGQlRTeERRVUZETEdkQ1FVRm5RaXhGUVVGRk8xRkJRM0pFTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU5vUXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRE8xbEJRMklzUjBGQlJ5eEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1owSkJRV2RDTzFOQlF5OUNMRU5CUVVNc1EwRkJRVHRMUVVOTU8wRkJRMHdzUTBGQlF6dEJRVVZFTEZOQlFWTXNTVUZCU1N4RFFVRkRMR2xDUVVGelJEdEpRVU5vUlN4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGUExGVkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMDdVVUZEY2tNc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eHBRa0ZCYVVJN1dVRkZNVUlzUTBGQlF5eERRVUZETEdOQlFVMHNUMEZCUVN4SlFVRkpMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGc1F5eERRVUZyUXp0WlFVVXhReXhEUVVGRExFTkJRVU1zWTBGQlRTeFBRVUZCTEdsQ1FVRlBMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVFMVJpeERRVUUwUml4RFFVRkRPMUZCUTNwSExFOUJRVThzVlVGQlZTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRPMWxCUTNKQ0xFOUJRVThzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUVR0UlFVTjRSU3hEUVVGRExFVkJRVVVzVlVGQlF5eEZRVUZuUWp0blFrRkJaaXhMUVVGTExGZEJRVUVzUlVGQlJTeFBRVUZQTEdGQlFVRTdXVUZEWml4elFrRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRelZETEU5QlFVOHNUVUZCVFN4RFFVRkRMRVZCUVVNc1MwRkJTeXhQUVVGQkxFVkJRVVVzVDBGQlR5eFRRVUZCTEVWQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTktMRTlCUVU4c1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRGNrSXNRMEZCUXl4RlFVRkZMRlZCUVVNc1JVRkJaMEk3WjBKQlFXWXNTMEZCU3l4WFFVRkJMRVZCUVVVc1QwRkJUeXhoUVVGQk8xbEJRMllzYzBKQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTTFReXhQUVVGUExFMUJRVTBzUTBGQlF5eEZRVUZETEV0QlFVc3NUMEZCUVN4RlFVRkZMRTlCUVU4c1UwRkJRU3hGUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53UXl4RFFVRkRMRU5CUVVNc1EwRkJRVHRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMR3RDUVVGbE8wbEJRMWdzU1VGQlNTeE5RVUZCTzBsQlEwb3NWVUZCVlN4WlFVRkJPMGxCUTFZc1ZVRkJWU3haUVVGQk8wTkJRMklzUTBGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQnpkR0YwZFhNZ1puSnZiU0FuTGk0dmMzUnZjbVV2YzNSaGRIVnpKMXh1YVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnWlhKeWIzSklZVzVrYkdWeUlHWnliMjBnSnk0dlpYSnliM0pJWVc1a2JHVnlKMXh1YVcxd2IzSjBJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSWdabkp2YlNBbkxpOWtkWEpoZEdsdmJsSmxjRzl5ZEdWeUoxeHVhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR2Y21WeGRXVnpkRWhoYm1Sc1pYSW5YRzVwYlhCdmNuUWdiRzloWkdsdVp5Qm1jbTl0SUNjdUxpOTFkR2xzTDJ4dllXUnBibWNuWEc1cGJYQnZjblFnY21WeGRXVnpkQ0JtY205dElDY3VMaTloY0drdmNtVnhkV1Z6ZENkY2JtbHRjRzl5ZENCN0lFbFNaWEYxWlhOMFQzQjBhVzl1TENCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlCOUlHWnliMjBnWENJdUxpOXBiblJsY21aaFkyVmNJanRjYmx4dUx5b2c1NVNmNVpHOTVaR281cHlmNVlhRjVZK3E1WUdhNUxpQTVxeWg1NXFFWTJobFkydFRaWE56YVc5dUlDb3ZYRzVzWlhRZ1kyaGxZMnRUWlhOemFXOXVVSEp2YldselpUb2dZVzU1SUQwZ2JuVnNiRHRjYmx4dVpuVnVZM1JwYjI0Z1kyaGxZMnRUWlhOemFXOXVLQ2tnZTF4dUlDQWdJR2xtSUNnaFkyaGxZMnRUWlhOemFXOXVVSEp2YldselpTa2dlMXh1SUNBZ0lDQWdJQ0JqYUdWamExTmxjM05wYjI1UWNtOXRhWE5sSUQwZ2JtVjNJRkJ5YjIxcGMyVThkbTlwWkQ0b0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGNuUWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSGQ0TG1Ob1pXTnJVMlZ6YzJsdmJpaDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1ZqWTJWemN5Z3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1NW03NWIyVjVvQ0I1cHlKNXBXSTc3eU01TGlVNVp5bzVweXM1NVNmNVpHOTVaR281cHlmNVlhRjVwZWc2YUc3NVlhTjVxT0E2YXFNNUxxR1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSG92NGZtbko5Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZzVTJWemMybHZiaWdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHOU1iMmRwYmlncExuUm9aVzRvS0NrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlN3Z0tISmxjem9nWVc1NUtUMCtlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENoeVpYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YlhCc1pYUmxLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCbGJtUWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNXlaWEJ2Y25Rb0ozZDRYMk5vWldOclUyVnpjMmx2Ymljc0lITjBZWEowTENCbGJtUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCamFHVmphMU5sYzNOcGIyNVFjbTl0YVhObE8xeHVmVnh1WEc0dktpRGxpS1RtbHExelpYTnphVzl1NXBpdjVaQ201TGk2NTZtNjVvaVc1YmV5NkwrSDVweWZJQ292WEc1bWRXNWpkR2x2YmlCcGMxTmxjM05wYjI1RmVIQnBjbVZQY2tWdGNIUjVLQ2tnZTF4dUlDQWdJR2xtSUNnaGMzUmhkSFZ6TG5ObGMzTnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGc1YWFDNXA2YzU3eVQ1YTJZNUxpdDVyS2g1cHlKYzJWemMybHZibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlZ4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WVWFXMWxJQ1ltSUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncElENGdjM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVVwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGc1YWFDNXA2YzVweUo2SzYrNTcydTVweXM1Wnl3YzJWemMybHZidWU4aytXdG1PYVh0dW1YdE8rOGpPUzRsT2U4aytXdG1PYVh0dW1YdE9XM3N1V0lzRnh1SUNBZ0lDQWdJQ0JrWld4VFpYTnphVzl1S0NrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpWeHVmVnh1WEc1bWRXNWpkR2x2YmlCamFHVmphMHh2WjJsdUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpUeDJiMmxrUGlnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGMxTmxjM05wYjI1RmVIQnBjbVZQY2tWdGNIUjVLQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SU9heW9lYWNpZWVadSttWmh1YUFnZSs4ak9TNGplbWNnT2ltZ2VXR2pXTm9aV05yVTJWemMybHZibHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVabWxuTG1SdlRtOTBRMmhsWTJ0VFpYTnphVzl1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2IweHZaMmx1S0NrdWRHaGxiaWdvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc0lDaHlaWE02SUdGdWVTazlQbnRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtISmxjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1N3lUNWEyWTVMaXQ1cHlKYzJWemMybHZidVM0bE9hY3F1aS9oK2FjbjF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMHBYRzU5WEc1Y2JpOHFJT2VadSttWmh1YTFnZWVvaStlYWhIQnliMjFwYzJVZ0tpOWNibXhsZENCc2IyZHBibEJ5YjIxcGMyVTZJR0Z1ZVNBOUlHNTFiR3c3WEc1Y2JtWjFibU4wYVc5dUlHUnZURzluYVc0b0tTQjdYRzRnSUNBZ2FXWWdLQ0ZzYjJkcGJsQnliMjFwYzJVcElIdGNiaUFnSUNBZ0lDQWdiRzluYVc1UWNtOXRhWE5sSUQwZ2JtVjNJRkJ5YjIxcGMyVThkbTlwWkQ0b0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHOW5hVzRvS1M1MGFHVnVLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNiMmRwYmxCeWIyMXBjMlVnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtTNWpZWFJqYUNnb2NtVnpLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHOW5hVzVRY205dGFYTmxJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNiMkZrYVc1bkxtaHBaR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSEpsY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR3h2WjJsdVVISnZiV2x6WlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYkc5bmFXNG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxQSFp2YVdRK0tDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoY25RZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjYmlBZ0lDQWdJQ0FnZDNndWJHOW5hVzRvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjM1ZqWTJWemN5aHlaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZ6TG1OdlpHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOWtaVEpUWlhOemFXOXVLSEpsY3k1amIyUmxLUzUwYUdWdUtDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBMbU5oZEdOb0tDaHlaWE1wSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0h0MGVYQmxPaUJjSW5ONWMzUmxiUzFsY25KdmNsd2lMQ0J5WlhOOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWlc1a0lEMGdibVYzSUVSaGRHVW9LUzVuWlhSVWFXMWxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTV5WlhCdmNuUW9KM2Q0WDJ4dloybHVKeXdnYzNSaGNuUXNJR1Z1WkNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdabUZwYkNoeVpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtIdDBlWEJsT2lCY0luTjVjM1JsYlMxbGNuSnZjbHdpTENCeVpYTjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU2xjYmlBZ0lDQjlLVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnpaWFJUWlhOemFXOXVLSE5sYzNOcGIyNDZJSE4wY21sdVp5a2dlMXh1SUNBZ0lITjBZWFIxY3k1elpYTnphVzl1SUQwZ2MyVnpjMmx2Ymp0Y2JpQWdJQ0F2THlEbWphTGxtNTdtbmFYbm1vUnpaWE56YVc5dTc3eU01TGlONlp5QTZLYUI1WWFOWTJobFkydFRaWE56YVc5dVhHNGdJQ0FnWTI5dVptbG5MbVJ2VG05MFEyaGxZMnRUWlhOemFXOXVJRDBnZEhKMVpUdGNiaUFnSUNBdkx5RGxwb0xtbnB6bW5Jbm9ycjdudmE3bW5LemxuTEJ6WlhOemFXOXU2TCtINXB5ZjVwZTI2WmUwWEc0Z0lDQWdhV1lnS0dOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFZHbHRaU0FtSmlCamIyNW1hV2N1YzJWemMybHZia1Y0Y0dseVpVdGxlU2tnZTF4dUlDQWdJQ0FnSUNCemRHRjBkWE11YzJWemMybHZia1Y0Y0dseVpTQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwSUNzZ1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVlVhVzFsTzF4dUlDQWdJQ0FnSUNCM2VDNXpaWFJUZEc5eVlXZGxLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHdGxlVG9nWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WTFpYa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCa1lYUmhPaUJUZEhKcGJtY29jM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVVwWEc0Z0lDQWdJQ0FnSUgwcFhHNGdJQ0FnZlZ4dUlDQWdJSGQ0TG5ObGRGTjBiM0poWjJVb2UxeHVJQ0FnSUNBZ0lDQnJaWGs2SUdOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlNCaGN5QnpkSEpwYm1jc1hHNGdJQ0FnSUNBZ0lHUmhkR0U2SUhOMFlYUjFjeTV6WlhOemFXOXVYRzRnSUNBZ2ZTazdYRzU5WEc1Y2JtRnplVzVqSUdaMWJtTjBhVzl1SUdOdlpHVXlVMlZ6YzJsdmJpaGpiMlJsT2lCemRISnBibWNwSUh0Y2JpQWdJQ0JzWlhRZ1pHRjBZVG9nWVc1NU8xeHVJQ0FnSUM4dklHTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFllYVVyK2FNZ2VXSHZlYVZzRnh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFlTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJR1JoZEdFZ1BTQmhkMkZwZENCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNWtZWFJoS0dOdlpHVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHUmhkR0VnUFNCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNWtZWFJoSUh4OElIdDlPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9ZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1WTI5a1pVNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ1pHRjBZVnRqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1amIyUmxUbUZ0WlYwZ1BTQmpiMlJsTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR1JoZEdFdVkyOWtaU0E5SUdOdlpHVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJRzlpYWlBOUlIdGNiaUFnSUNBZ0lDQWdkWEpzT2lCeVpYRjFaWE4wU0dGdVpHeGxjaTVtYjNKdFlYUW9ZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1ZFhKc0tTeGNiaUFnSUNBZ0lDQWdaR0YwWVN4Y2JpQWdJQ0FnSUNBZ2JXVjBhRzlrT2lCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNXRaWFJvYjJRZ2ZId2dKMGRGVkNjc1hHNGdJQ0FnSUNBZ0lHaGxZV1JsY2pvZ2RIbHdaVzltSUdOdmJtWnBaeTV6WlhSSVpXRmtaWElnUFQwOUlDZG1kVzVqZEdsdmJpY2dQeUJqYjI1bWFXY3VjMlYwU0dWaFpHVnlLQ2s2SUdOdmJtWnBaeTV6WlhSSVpXRmtaWElzWEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtSmxabTl5WlZObGJtUWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vZ1BTQmpiMjVtYVdjdVltVm1iM0psVTJWdVpDaHZZbW9wTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2dvY21WemIyeDJaU3dnY21WcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J6ZEdGeWRDQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJQ0FnSUNCM2VDNXlaWEYxWlhOMEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM0dUxtOWlhaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITjFZMk5sYzNNb2NtVnpPaUJYWldOb1lYUk5hVzVwY0hKdlozSmhiUzVTWlhGMVpYTjBVM1ZqWTJWemMwTmhiR3hpWVdOclVtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsY3k1emRHRjBkWE5EYjJSbElEMDlQU0F5TURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzZJQ1g1cGUyNUxpSzVvcWxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTV5WlhCdmNuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCbGJtUWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSMWNtRjBhVzl1VW1Wd2IzSjBaWEl1Y21Wd2IzSjBLR052Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG5KbGNHOXlkQ3dnYzNSaGNuUXNJR1Z1WkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY3lBOUlHTnZibVpwWnk1amIyUmxWRzlUWlhOemFXOXVMbk4xWTJObGMzTW9jbVZ6TG1SaGRHRXNJSEpsY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdjeUE5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBZWFIxY3k1elpYTnphVzl1SUQwZ2N6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJT2FOb3VXYm51YWRwZWVhaEhObGMzTnBiMjd2dkl6a3VJM3BuSURvcG9IbGhvMWphR1ZqYTFObGMzTnBiMjVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym1acFp5NWtiMDV2ZEVOb1pXTnJVMlZ6YzJsdmJpQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RGxwb0xtbnB6bW5Jbm9ycjdudmE3bW5LemxuTEJ6WlhOemFXOXU2TCtINXB5ZjVwZTI2WmUwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVlVhVzFsSUNZbUlHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVVnUFNCdVpYY2dSR0YwWlNncExtZGxkRlJwYldVb0tTQXJJR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsVkdsdFpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IzZUM1elpYUlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2EyVjVPaUJqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlV0bGVTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVG9nVTNSeWFXNW5LSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjNlQzV6WlhSVGRHOXlZV2RsS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnJaWGs2SUdOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtZWFJoT2lCemRHRjBkWE11YzJWemMybHZibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9aWEp5YjNKSVlXNWtiR1Z5TG1kbGRFVnljbTl5VFhObktISmxjeWtwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYW1WamRDaDdkSGx3WlRvZ1hDSm9kSFJ3TFdWeWNtOXlYQ0lzSUhKbGMzMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyMXdiR1YwWlNncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc09pQW9jbVZ6S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENoN2RIbHdaVG9nWENKemVYTjBaVzB0WlhKeWIzSmNJaXdnY21WemZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dUx5b2c1cmlGNTZtNmMyVnpjMmx2YmlBcUwxeHVablZ1WTNScGIyNGdaR1ZzVTJWemMybHZiaWdwSUh0Y2JpQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJpQTlJQ2NuTzF4dUlDQWdJSGQ0TG5KbGJXOTJaVk4wYjNKaFoyVW9lMXh1SUNBZ0lDQWdJQ0JyWlhrNklHTnZibVpwWnk1elpYTnphVzl1VG1GdFpTQmhjeUJ6ZEhKcGJtZGNiaUFnSUNCOUtUdGNiaUFnSUNCcFppQW9ZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZVYVcxbElDWW1JR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsUzJWNUtTQjdYRzRnSUNBZ0lDQWdJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsSUQwZ1NXNW1hVzVwZEhrN1hHNGdJQ0FnSUNBZ0lIZDRMbkpsYlc5MlpWTjBiM0poWjJVb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYTJWNU9pQmpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVXRsZVZ4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnYldGcGJpaHlaV3hoZEdWa1VtVnhkV1Z6ZEU5aWFqODZJRWxTWlhGMVpYTjBUM0IwYVc5dUlId2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVThkbTlwWkQ0b0tISmxjMjlzZG1Vc0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JzWlhRZ2NtVjBjbmtnUFNBaGNtVnNZWFJsWkZKbGNYVmxjM1JQWW1wY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SU9XbWd1YWVuT2F5b2VhY2llV0ZzK2lCbE9lYWhPaXZ0K2F4Z3UrOGpPbUhqZWl2bGVXTnMraXdnK2VVcU9pSHF1aTZxMXh1SUNBZ0lDQWdJQ0FnSUNBZ1B5QW9LU0E5UGlCdFlXbHVLQ2t1ZEdobGJpaHlaWE52YkhabEtTNWpZWFJqYUNoeVpXcGxZM1FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURscG9MbW5wem1uSW5saGJQb2daVG5tb1RvcjdmbXNZTHZ2SXpwaDQzb3I1WGxqYlBvc0lQbmxLam1pWURsaGJQb2daVG5tb1RvcjdmbXNZSmNiaUFnSUNBZ0lDQWdJQ0FnSURvZ0tDa2dQVDRnY21WeGRXVnpkQ2h5Wld4aGRHVmtVbVZ4ZFdWemRFOWlhaWt1ZEdobGJpaHlaV3hoZEdWa1VtVnhkV1Z6ZEU5aWFpNWZjbVZ6YjJ4MlpTa3VZMkYwWTJnb2NtVnNZWFJsWkZKbGNYVmxjM1JQWW1vdVgzSmxhbVZqZENrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamFHVmphMHh2WjJsdUtDa3VkR2hsYmlnb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXVabWxuTG1SdlRtOTBRMmhsWTJ0VFpYTnphVzl1SUQ4Z1VISnZiV2x6WlM1eVpYTnZiSFpsS0NrZ09pQmphR1ZqYTFObGMzTnBiMjRvS1Z4dUlDQWdJQ0FnSUNCOUxDQW9lM1JwZEd4bExDQmpiMjUwWlc1MGZTa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaWEp5YjNKSVlXNWtiR1Z5TG1SdlJYSnliM0lvZEdsMGJHVXNJR052Ym5SbGJuUXNJSEpsZEhKNUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9lM1JwZEd4bExDQmpiMjUwWlc1MGZTazdYRzRnSUNBZ0lDQWdJSDBwTG5Sb1pXNG9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVW9LVHRjYmlBZ0lDQWdJQ0FnZlN3Z0tIdDBhWFJzWlN3Z1kyOXVkR1Z1ZEgwcFBUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlMbVJ2UlhKeWIzSW9kR2wwYkdVc0lHTnZiblJsYm5Rc0lISmxkSEo1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb2UzUnBkR3hsTENCamIyNTBaVzUwZlNrN1hHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4dUlDQWdJRzFoYVc0c1hHNGdJQ0FnYzJWMFUyVnpjMmx2Yml4Y2JpQWdJQ0JrWld4VFpYTnphVzl1WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZGVmYXVsdENvbmZpZyA9IHtcbiAgICBzZXNzaW9uTmFtZTogXCJzZXNzaW9uXCIsXG4gICAgbG9naW5UcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGNvZGVUb1Nlc3Npb246IHtcbiAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7IH1cbiAgICB9LFxuICAgIHN1Y2Nlc3NUcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgc2V0SGVhZGVyOiB7fSxcbiAgICB1cmxQZXJmaXg6IFwiXCIsXG4gICAgZG9Ob3RDaGVja1Nlc3Npb246IGZhbHNlLFxuICAgIGVycm9yVGl0bGU6IFwi5pON5L2c5aSx6LSlXCIsXG4gICAgZXJyb3JDb250ZW50OiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICBlcnJvclJldHJ5QnRuOiBmYWxzZSxcbiAgICByZUxvZ2luTGltaXQ6IDMsXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcbiAgICByZXBvcnRDR0k6IGZhbHNlLFxuICAgIG1vY2tKc29uOiBmYWxzZSxcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcbiAgICBzZXNzaW9uRXhwaXJlS2V5OiBcInNlc3Npb25FeHBpcmVLZXlcIixcbiAgICBlcnJvckhhbmRsZXI6IG51bGwsXG4gICAgYmVmb3JlU2VuZDogbnVsbCxcbiAgICBzeXN0ZW1FcnJvckhhbmRsZXI6IG51bGwsXG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gZGVmYXVsdENvbmZpZztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyOXVabWxuTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM04wYjNKbEwyTnZibVpwWnk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVVZCTEVsQlFVMHNZVUZCWVN4SFFVRm5RanRKUVVNdlFpeFhRVUZYTEVWQlFVVXNVMEZCVXp0SlFVTjBRaXhaUVVGWk8xRkJRMUlzVDBGQlR5eExRVUZMTEVOQlFVRTdTVUZEYUVJc1EwRkJRenRKUVVORUxHRkJRV0VzUlVGQlJUdFJRVU5ZTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1QwRkJUeXhGUVVGRkxHTkJRVTBzUTBGQlF6dExRVU51UWp0SlFVTkVMR05CUVdNN1VVRkRWaXhQUVVGUExFbEJRVWtzUTBGQlFUdEpRVU5tTEVOQlFVTTdTVUZEUkN4VFFVRlRMRVZCUVVVc1JVRkJSVHRKUVVOaUxGTkJRVk1zUlVGQlJTeEZRVUZGTzBsQlEySXNhVUpCUVdsQ0xFVkJRVVVzUzBGQlN6dEpRVU40UWl4VlFVRlZMRVZCUVVVc1RVRkJUVHRKUVVOc1FpeFpRVUZaTEVWQlFWb3NWVUZCWVN4SFFVRlJPMUZCUTJwQ0xFOUJRVThzUjBGQlJ5eERRVUZCTzBsQlEyUXNRMEZCUXp0SlFVTkVMR0ZCUVdFc1JVRkJSU3hMUVVGTE8wbEJRM0JDTEZsQlFWa3NSVUZCUlN4RFFVRkRPMGxCUTJZc1lVRkJZU3hGUVVGRkxFbEJRVWs3U1VGRGJrSXNVMEZCVXl4RlFVRkZMRXRCUVVzN1NVRkRhRUlzVVVGQlVTeEZRVUZGTEV0QlFVczdTVUZEWml4VlFVRlZMRVZCUVVVc1MwRkJTenRKUVVWcVFpeG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSTdTVUZGY0VNc1dVRkJXU3hGUVVGRkxFbEJRVWs3U1VGRmJFSXNWVUZCVlN4RlFVRkZMRWxCUVVrN1NVRkZhRUlzYTBKQlFXdENMRVZCUVVVc1NVRkJTVHREUVVNelFpeERRVUZETzBGQlJVWXNhMEpCUVdVc1lVRkJZU3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dTVWx1YVhSUGNIUnBiMjRnZlNCbWNtOXRJQ2N1TGk5cGJuUmxjbVpoWTJVblhHNWNibU52Ym5OMElHUmxabUYxYkhSRGIyNW1hV2M2SUVsSmJtbDBUM0IwYVc5dUlEMGdlMXh1SUNBZ0lITmxjM05wYjI1T1lXMWxPaUJjSW5ObGMzTnBiMjVjSWl4Y2JpQWdJQ0JzYjJkcGJsUnlhV2RuWlhJb0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlZ4dUlDQWdJSDBzWEc0Z0lDQWdZMjlrWlZSdlUyVnpjMmx2YmpvZ2UxeHVJQ0FnSUNBZ0lDQjFjbXc2SUZ3aVhDSXNYRzRnSUNBZ0lDQWdJSE4xWTJObGMzTTZJQ2dwUFQ0Z2UzMWNiaUFnSUNCOUxGeHVJQ0FnSUhOMVkyTmxjM05VY21sbloyVnlLQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpWeHVJQ0FnSUgwc1hHNGdJQ0FnYzJWMFNHVmhaR1Z5T2lCN2ZTeGNiaUFnSUNCMWNteFFaWEptYVhnNklGd2lYQ0lzWEc0Z0lDQWdaRzlPYjNSRGFHVmphMU5sYzNOcGIyNDZJR1poYkhObExGeHVJQ0FnSUdWeWNtOXlWR2wwYkdVNklGd2k1cE9ONUwyYzVhU3g2TFNsWENJc1hHNGdJQ0FnWlhKeWIzSkRiMjUwWlc1MEtISmxjem9nWVc1NUtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE5jYmlBZ0lDQjlMRnh1SUNBZ0lHVnljbTl5VW1WMGNubENkRzQ2SUdaaGJITmxMRnh1SUNBZ0lISmxURzluYVc1TWFXMXBkRG9nTXl4Y2JpQWdJQ0JsY25KdmNrTmhiR3hpWVdOck9pQnVkV3hzTEZ4dUlDQWdJSEpsY0c5eWRFTkhTVG9nWm1Gc2MyVXNYRzRnSUNBZ2JXOWphMHB6YjI0NklHWmhiSE5sTEZ4dUlDQWdJR2RzYjJKaGJFUmhkR0U2SUdaaGJITmxMRnh1SUNBZ0lDOHZJSE5sYzNOcGIyN2xuS2ptbkt6bG5MRG52SlBsclpqbm1vUnJaWGxjYmlBZ0lDQnpaWE56YVc5dVJYaHdhWEpsUzJWNU9pQmNJbk5sYzNOcGIyNUZlSEJwY21WTFpYbGNJaXhjYmlBZ0lDQXZMeURvaDZybHJwcmt1WW5wbEpub3I2L2xwSVRua0libGg3M21sYkJjYmlBZ0lDQmxjbkp2Y2toaGJtUnNaWEk2SUc1MWJHd3NYRzRnSUNBZ0x5OGc2SyszNXJHQzVZK1I2WUNCNVltTjc3eU01bytRNUw2YmFHOXZhK2U3bWVXOGdPV1BrZWlBaGVpSHF1V3VtdVM1aWVTL3J1YVV1ZVdQa2VtQWdlV0doZVd1dVZ4dUlDQWdJR0psWm05eVpWTmxibVE2SUc1MWJHd3NYRzRnSUNBZ0x5OGc2SWVxNWE2YTVMbUo1N083NTd1ZjZaU1o2Syt2NWFTRTU1Q0c1WWU5NXBXdzc3eUk1NzJSNTd1YzZaU1o2Syt2Nzd5SlhHNGdJQ0FnYzNsemRHVnRSWEp5YjNKSVlXNWtiR1Z5T2lCdWRXeHNMRnh1ZlR0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1pHVm1ZWFZzZEVOdmJtWnBaenRjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzZXNzaW9uOiAnJyxcbiAgICBzZXNzaW9uRXhwaXJlOiBJbmZpbml0eSxcbiAgICBpc0VuYWJsZUJhY2t1cERvbWFpbjogZmFsc2Vcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljM1JoZEhWekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNOMGIzSmxMM04wWVhSMWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxHdENRVUZsTzBsQlExZ3NUMEZCVHl4RlFVRkZMRVZCUVZrN1NVRkZja0lzWVVGQllTeEZRVUZGTEZGQlFXdENPMGxCUldwRExHOUNRVUZ2UWl4RlFVRkZMRXRCUVVzN1EwRkRka0lzUTBGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbVY0Y0c5eWRDQmtaV1poZFd4MElIdGNiaUFnSUNCelpYTnphVzl1T2lBbkp5QmhjeUJ6ZEhKcGJtY3NYRzRnSUNBZ0x5OGdjMlZ6YzJsdmJ1aS9oK2FjbitlYWhPYVh0dW1YdE9lQ3VWeHVJQ0FnSUhObGMzTnBiMjVGZUhCcGNtVTZJRWx1Wm1sdWFYUjVJR0Z6SUc1MWJXSmxjaXhjYmlBZ0lDQXZMeURtbUsvbGtLYmxrSy9ubEtqbHBJZm5sS2psbjUvbGtJMWNiaUFnSUNCcGMwVnVZV0pzWlVKaFkydDFjRVJ2YldGcGJqb2dabUZzYzJWY2JuMGdZWE1nWVc1NVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgTElORUZFRUQgPSAvXFx1MDAwQS9nO1xudmFyIENBUlJJQUdFUkVUVVJOID0gL1xcdTAwMEQvZztcbnZhciBMSU5FX1NFUEFSQVRPUiA9IC9cXHUyMDI4L2c7XG52YXIgUEFSQUdSQVBIX1NFUEFSQVRPUiA9IC9cXHUyMDI5L2c7XG5mdW5jdGlvbiByZXBsYWNlKHJlcykge1xuICAgIHJlcyA9IHJlcy5yZXBsYWNlKExJTkVGRUVELCBcIlwiKTtcbiAgICByZXMgPSByZXMucmVwbGFjZShDQVJSSUFHRVJFVFVSTiwgXCJcIik7XG4gICAgcmVzID0gcmVzLnJlcGxhY2UoTElORV9TRVBBUkFUT1IsIFwiXCIpO1xuICAgIHJlcyA9IHJlcy5yZXBsYWNlKFBBUkFHUkFQSF9TRVBBUkFUT1IsIFwiXCIpO1xuICAgIHJldHVybiByZXM7XG59XG5leHBvcnRzLmRlZmF1bHQgPSByZXBsYWNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYW5OdmJsTjFjR1Z5YzJWMExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNWMGFXd3Zhbk52YmxOMWNHVnljMlYwTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJWMEVzU1VGQlRTeFJRVUZSTEVkQlFVY3NVMEZCVXl4RFFVRkRPMEZCUXpOQ0xFbEJRVTBzWTBGQll5eEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTnFReXhKUVVGTkxHTkJRV01zUjBGQlJ5eFRRVUZUTEVOQlFVTTdRVUZEYWtNc1NVRkJUU3h0UWtGQmJVSXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkZkRU1zVTBGQmQwSXNUMEZCVHl4RFFVRkRMRWRCUVZjN1NVRkRla01zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEyaERMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVOMFF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhqUVVGakxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZEVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZETTBNc1QwRkJUeXhIUVVGSExFTkJRVUU3UVVGRFdpeERRVUZETzBGQlRrUXNNRUpCVFVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaUFnVlNzeU1ESTRJR0Z1WkNCVkt6SXdNamtnWVhKbElHRnNiRzkzWldRZ2FXNXphV1JsSUhOMGNtbHVaM01nYVc0Z1NsTlBUaUFvWVhNZ1lXeHNJR3hwZEdWeVlXeGNiaUFnSUNCVmJtbGpiMlJsSUdOb1lYSmhZM1JsY25NcElHSjFkQ0JLWVhaaFUyTnlhWEIwSUdSbFptbHVaWE1nZEdobGJTQmhjeUJ1Wlhkc2FXNWxYRzRnSUNBZ2MyVndaWEpoZEc5eWN5NGdRbVZqWVhWelpTQnVieUJzYVhSbGNtRnNJRzVsZDJ4cGJtVnpJR0Z5WlNCaGJHeHZkMlZrSUdsdUlHRWdjM1J5YVc1bkxDQjBhR2x6WEc0Z0lDQWdZMkYxYzJWeklHRWdVR0Z5YzJWRmNuSnZjaUJwYmlCMGFHVWdZbkp2ZDNObGNpNGdWMlVnZDI5eWF5QmhjbTkxYm1RZ2RHaHBjeUJwYzNOMVpTQmllVnh1SUNBZ0lISmxjR3hoWTJsdVp5QjBhR1Z0SUhkcGRHZ2dkR2hsSUdWelkyRndaV1FnZG1WeWMybHZiaTRnVkdocGN5QnphRzkxYkdRZ1ltVWdjMkZtWlNCaVpXTmhkWE5sWEc0Z0lDQWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQktVMDlPSUhOd1pXTXNJSFJvWlhObElHTm9ZWEpoWTNSbGNuTWdZWEpsSUNwdmJteDVLaUIyWVd4cFpDQnBibk5wWkdWY2JpQWdJQ0JoSUhOMGNtbHVaeUJoYm1RZ2MyaHZkV3hrSUhSb1pYSmxabTl5WlNCdWIzUWdZbVVnY0hKbGMyVnVkQ0JoYm5rZ2IzUm9aWElnY0d4aFkyVnpMbHh1WEc0Z0lDQWdiVzl5WlNCcGJtWnZjbTFoZEdsdmJqb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMM1JqTXprdmNISnZjRzl6WVd3dGFuTnZiaTF6ZFhCbGNuTmxkRnh1S2k5Y2JseHVZMjl1YzNRZ1RFbE9SVVpGUlVRZ1BTQXZYRngxTURBd1FTOW5PMXh1WTI5dWMzUWdRMEZTVWtsQlIwVlNSVlJWVWs0Z1BTQXZYRngxTURBd1JDOW5PMXh1WTI5dWMzUWdURWxPUlY5VFJWQkJVa0ZVVDFJZ1BTQXZYRngxTWpBeU9DOW5PMXh1WTI5dWMzUWdVRUZTUVVkU1FWQklYMU5GVUVGU1FWUlBVaUE5SUM5Y1hIVXlNREk1TDJjN1hHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElHWjFibU4wYVc5dUlISmxjR3hoWTJVb2NtVnpPaUJ6ZEhKcGJtY3BJSHRjYmlBZ2NtVnpJRDBnY21WekxuSmxjR3hoWTJVb1RFbE9SVVpGUlVRc0lGd2lYQ0lwTzF4dUlDQnlaWE1nUFNCeVpYTXVjbVZ3YkdGalpTaERRVkpTU1VGSFJWSkZWRlZTVGl3Z1hDSmNJaWs3WEc0Z0lISmxjeUE5SUhKbGN5NXlaWEJzWVdObEtFeEpUa1ZmVTBWUVFWSkJWRTlTTENCY0lsd2lLVHRjYmlBZ2NtVnpJRDBnY21WekxuSmxjR3hoWTJVb1VFRlNRVWRTUVZCSVgxTkZVRUZTUVZSUFVpd2dYQ0pjSWlrN1hHNGdJSEpsZEhWeWJpQnlaWE5jYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBzaG93KHR4dCkge1xuICAgIHd4LnNob3dUb2FzdCh7XG4gICAgICAgIHRpdGxlOiB0eXBlb2YgdHh0ID09PSAnYm9vbGVhbicgPyAn5Yqg6L295LitJyA6IHR4dCxcbiAgICAgICAgaWNvbjogJ2xvYWRpbmcnLFxuICAgICAgICBtYXNrOiB0cnVlLFxuICAgICAgICBkdXJhdGlvbjogNjAwMDBcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgd3guaGlkZVRvYXN0KHt9KTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzaG93OiBzaG93LFxuICAgIGhpZGU6IGhpZGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liRzloWkdsdVp5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5MWRHbHNMMnh2WVdScGJtY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRnhRanRKUVVNdlFpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTFRc1MwRkJTeXhGUVVGRkxFOUJRVThzUjBGQlJ5eExRVUZMTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITzFGQlF6ZERMRWxCUVVrc1JVRkJSU3hUUVVGVE8xRkJRMllzU1VGQlNTeEZRVUZGTEVsQlFVazdVVUZEVml4UlFVRlJMRVZCUVVVc1MwRkJTenRMUVVOc1FpeERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc1UwRkJVeXhKUVVGSk8wbEJRMVFzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOeVFpeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hKUVVGSkxFMUJRVUU3U1VGRFNpeEpRVUZKTEUxQlFVRTdRMEZEVUN4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnYzJodmR5aDBlSFE2SUdKdmIyeGxZVzRnZkNCemRISnBibWNwSUh0Y2JpQWdJQ0IzZUM1emFHOTNWRzloYzNRb2UxeHVJQ0FnSUNBZ0lDQjBhWFJzWlRvZ2RIbHdaVzltSUhSNGRDQTlQVDBnSjJKdmIyeGxZVzRuSUQ4Z0orV0tvT2k5dmVTNHJTY2dPaUIwZUhRc1hHNGdJQ0FnSUNBZ0lHbGpiMjQ2SUNkc2IyRmthVzVuSnl4Y2JpQWdJQ0FnSUNBZ2JXRnphem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdaSFZ5WVhScGIyNDZJRFl3TURBd1hHNGdJQ0FnZlNsY2JuMWNibHh1Wm5WdVkzUnBiMjRnYUdsa1pTZ3BJSHRjYmlBZ0lDQjNlQzVvYVdSbFZHOWhjM1FvZTMwcE8xeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEc0Z0lDQWdjMmh2ZHl4Y2JpQWdJQ0JvYVdSbFhHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIHNldFBhcmFtcyh1cmwsIHBhcmFtcykge1xuICAgIGlmICh1cmwgPT09IHZvaWQgMCkgeyB1cmwgPSBcIlwiOyB9XG4gICAgdmFyIHF1ZXJ5U3RyaW5nSW5kZXggPSB1cmwuaW5kZXhPZihcIj9cIik7XG4gICAgdmFyIGt2cCA9IHt9O1xuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcbiAgICAgICAgdmFyIG9sZFF1ZXJ5U3RyaW5nXzEgPSB1cmwuc3Vic3RyKHF1ZXJ5U3RyaW5nSW5kZXggKyAxKS5zcGxpdChcIiZcIik7XG4gICAgICAgIG9sZFF1ZXJ5U3RyaW5nXzEuZm9yRWFjaChmdW5jdGlvbiAoeCwgaSkge1xuICAgICAgICAgICAgdmFyIGt2ID0gb2xkUXVlcnlTdHJpbmdfMVtpXS5zcGxpdChcIj1cIik7XG4gICAgICAgICAgICBrdnBba3ZbMF1dID0ga3ZbMV07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBrdnAgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwga3ZwKSwgcGFyYW1zKTtcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSBPYmplY3Qua2V5cyhrdnApXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ICsgXCI9XCIgKyBlbmNvZGVVUkkoa3ZwW2tleV0pO1xuICAgIH0pXG4gICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICBpZiAocXVlcnlTdHJpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDAsIHF1ZXJ5U3RyaW5nSW5kZXggKyAxKSArIHF1ZXJ5U3RyaW5nO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVybCArIFwiP1wiICsgcXVlcnlTdHJpbmc7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVwbGFjZURvbWFpbih1cmwsIGRvbWFpbikge1xuICAgIGlmICh1cmwgPT09IHZvaWQgMCkgeyB1cmwgPSBcIlwiOyB9XG4gICAgaWYgKGRvbWFpbiA9PT0gdm9pZCAwKSB7IGRvbWFpbiA9IFwiXCI7IH1cbiAgICBkb21haW4gPSBkb21haW4ucmVwbGFjZSgvXmh0dHAocyk/OlxcL1xcLy8sICcnKS5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgIHJldHVybiB1cmwucmVwbGFjZSgvXmh0dHAocyk/OlxcL1xcLyguKj8pXFwvLywgXCJodHRwczovL1wiICsgZG9tYWluICsgXCIvXCIpO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHNldFBhcmFtczogc2V0UGFyYW1zLFxuICAgIHJlcGxhY2VEb21haW46IHJlcGxhY2VEb21haW4sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhKc0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNWMGFXd3ZkWEpzTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdRVUZCUVN4VFFVRlRMRk5CUVZNc1EwRkJReXhIUVVGblFpeEZRVUZGTEUxQlFXTTdTVUZCYUVNc2IwSkJRVUVzUlVGQlFTeFJRVUZuUWp0SlFVTXZRaXhKUVVGTkxHZENRVUZuUWl4SFFVRlhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYkVRc1NVRkJTU3hIUVVGSExFZEJRVkVzUlVGQlJTeERRVUZETzBsQlEyeENMRWxCUVVrc1owSkJRV2RDTEVsQlFVa3NRMEZCUXl4RlFVRkZPMUZCUTNaQ0xFbEJRVTBzWjBKQlFXTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVnVSU3huUWtGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJRM2hDTEVsQlFVMHNSVUZCUlN4SFFVRmhMR2RDUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnhFTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka0lzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEVGp0SlFVVkVMRWRCUVVjc2VVSkJRVThzUjBGQlJ5eEhRVUZMTEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlRGQ0xFbEJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8xTkJReTlDTEVkQlFVY3NRMEZCUXl4VlFVRkJMRWRCUVVjN1VVRkRTaXhQUVVGVkxFZEJRVWNzVTBGQlNTeFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGSExFTkJRVU03U1VGRE0wTXNRMEZCUXl4RFFVRkRPMU5CUTBRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXWXNTVUZCU1N4blFrRkJaMElzU1VGQlNTeERRVUZETEVWQlFVVTdVVUZEZGtJc1QwRkJUeXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4blFrRkJaMElzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1MwRkRMMFE3VTBGQlRUdFJRVU5JTEU5QlFVOHNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhYUVVGWExFTkJRVU03UzBGRGJFTTdRVUZEVEN4RFFVRkRPMEZCUlVRc1UwRkJVeXhoUVVGaExFTkJRVU1zUjBGQlowSXNSVUZCUlN4TlFVRnRRanRKUVVGeVF5eHZRa0ZCUVN4RlFVRkJMRkZCUVdkQ08wbEJRVVVzZFVKQlFVRXNSVUZCUVN4WFFVRnRRanRKUVVWNFJDeE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhuUWtGQlowSXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUTJwRkxFOUJRVThzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4MVFrRkJkVUlzUlVGQlJTeGhRVUZYTEUxQlFVMHNUVUZCUnl4RFFVRkRMRU5CUVVNN1FVRkRkRVVzUTBGQlF6dEJRVVZFTEd0Q1FVRmxPMGxCUTFnc1UwRkJVeXhYUVVGQk8wbEJRMVFzWVVGQllTeGxRVUZCTzBOQlEyaENMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5Sm1kVzVqZEdsdmJpQnpaWFJRWVhKaGJYTW9kWEpzT2lCemRISnBibWNnUFNCY0lsd2lMQ0J3WVhKaGJYTTZJRzlpYW1WamRDa2dlMXh1SUNBZ0lHTnZibk4wSUhGMVpYSjVVM1J5YVc1blNXNWtaWGc2SUc1MWJXSmxjaUE5SUhWeWJDNXBibVJsZUU5bUtGd2lQMXdpS1R0Y2JpQWdJQ0JzWlhRZ2EzWndPaUJoYm5rZ1BTQjdmVHRjYmlBZ0lDQnBaaUFvY1hWbGNubFRkSEpwYm1kSmJtUmxlQ0ErUFNBd0tTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHOXNaRkYxWlhKNVUzUnlhVzVuSUQwZ2RYSnNMbk4xWW5OMGNpaHhkV1Z5ZVZOMGNtbHVaMGx1WkdWNElDc2dNU2t1YzNCc2FYUW9YQ0ltWENJcE8xeHVJQ0FnSUNBZ0lDQXZMeUJBZEhNdGFXZHViM0psWEc0Z0lDQWdJQ0FnSUc5c1pGRjFaWEo1VTNSeWFXNW5MbVp2Y2tWaFkyZ29LSGdzSUdrcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUd0Mk9pQnpkSEpwYm1kYlhTQTlJRzlzWkZGMVpYSjVVM1J5YVc1blcybGRMbk53YkdsMEtGd2lQVndpS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3QyY0Z0cmRsc3dYVjBnUFNCcmRsc3hYVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYTNad0lEMGdleTR1TG10MmNDd2dMaTR1Y0dGeVlXMXpmVHRjYmx4dUlDQWdJR052Ym5OMElIRjFaWEo1VTNSeWFXNW5JRDBnVDJKcVpXTjBMbXRsZVhNb2EzWndLVnh1SUNBZ0lDQWdJQ0F1YldGd0tHdGxlU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZQ1I3YTJWNWZUMGtlMlZ1WTI5a1pWVlNTU2hyZG5CYmEyVjVYU2w5WUR0Y2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNBZ0lDQWdMbXB2YVc0b1hDSW1YQ0lwTzF4dVhHNGdJQ0FnYVdZZ0tIRjFaWEo1VTNSeWFXNW5TVzVrWlhnZ1BqMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZFhKc0xuTjFZbk4wY21sdVp5Z3dMQ0J4ZFdWeWVWTjBjbWx1WjBsdVpHVjRJQ3NnTVNrZ0t5QnhkV1Z5ZVZOMGNtbHVaenRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RYSnNJQ3NnWENJL1hDSWdLeUJ4ZFdWeWVWTjBjbWx1Wnp0Y2JpQWdJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsY0d4aFkyVkViMjFoYVc0b2RYSnNPaUJ6ZEhKcGJtY2dQU0JjSWx3aUxDQmtiMjFoYVc0NklITjBjbWx1WnlBOUlGd2lYQ0lwSUh0Y2JpQWdJQ0F2THlEa3Y1M29yNEZrYjIxaGFXN2xqNnJsaklYbGtLdmxuNS9sa0kzdnZJem1zcUhtbklrZ2FIUjBjQ2h6S1NEbGlZM252SUFnNVpLTUlDOGc1WkNPNTd5QVhHNGdJQ0FnWkc5dFlXbHVJRDBnWkc5dFlXbHVMbkpsY0d4aFkyVW9MMTVvZEhSd0tITXBQenBjWEM5Y1hDOHZMQ0FuSnlrdWNtVndiR0ZqWlNndlhGd3ZKQzhzSUNjbktUdGNiaUFnSUNCeVpYUjFjbTRnZFhKc0xuSmxjR3hoWTJVb0wxNW9kSFJ3S0hNcFB6cGNYQzljWEM4b0xpby9LVnhjTHk4c0lHQm9kSFJ3Y3pvdkx5UjdaRzl0WVdsdWZTOWdLVHRjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2UxeHVJQ0FnSUhObGRGQmhjbUZ0Y3l4Y2JpQWdJQ0J5WlhCc1lXTmxSRzl0WVdsdUxGeHVmVHRjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudmVyc2lvbiA9IHZvaWQgMDtcbnZhciB2ZXJzaW9uID0gX19WRVJTSU9OX187XG5leHBvcnRzLnZlcnNpb24gPSB2ZXJzaW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WeWMybHZiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMM055WXk5MlpYSnphVzl1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096dEJRVVZCTEVsQlFVMHNUMEZCVHl4SFFVRkhMRmRCUVZjc1EwRkJRenRCUVVWdVFpd3dRa0ZCVHlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltUmxZMnhoY21VZ1kyOXVjM1FnWDE5V1JWSlRTVTlPWDE4NklITjBjbWx1Wnp0Y2JseHVZMjl1YzNRZ2RtVnljMmx2YmlBOUlGOWZWa1ZTVTBsUFRsOWZPMXh1WEc1bGVIQnZjblFnZXlCMlpYSnphVzl1SUgwN1hHNGlYWDA9Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/build/weRequest.min.js b/build/weRequest.min.js index 574cb70..8504115 100644 --- a/build/weRequest.min.js +++ b/build/weRequest.min.js @@ -1,5 +1,5 @@ /*! - * weRequest 1.6.8 + * weRequest 1.7.0 * https://github.com/IvinWu/weRequest */ -module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={sessionName:"session",loginTrigger:function(){return!1},codeToSession:{url:"",success:function(){}},successTrigger:function(){return!0},setHeader:{},urlPerfix:"",doNotCheckSession:!1,errorTitle:"操作失败",errorContent:function(e){return e},errorRetryBtn:!1,reLoginLimit:3,errorCallback:null,reportCGI:!1,mockJson:!1,globalData:!1,sessionExpireKey:"sessionExpireKey",errorHandler:null,beforeSend:null,systemErrorHandler:null}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={session:"",sessionExpire:1/0}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(3);t.default=function(e){return n.default.request(e)}},function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])||6!==u[0]&&2!==u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]a.default.sessionExpire&&(v(),1)?(i.default.doNotCheckSession=!0,g().then((function(){return e()}),(function(e){return t(e)}))):e()}))}var h=null;function g(){return h||(h=new Promise((function(e,t){new Promise((function(e,t){var r=(new Date).getTime();wx.login({success:function(r){if(!r.code)return t({type:"system-error",res:r});(function(e){return o(this,void 0,void 0,(function(){var t,r;return u(this,(function(o){switch(o.label){case 0:return"function"!=typeof i.default.codeToSession.data?[3,2]:[4,i.default.codeToSession.data(e)];case 1:return t=o.sent(),[3,3];case 2:t=i.default.codeToSession.data||{},o.label=3;case 3:return i.default.codeToSession.codeName?t[i.default.codeToSession.codeName]=e:t.code=e,r={url:l.default.format(i.default.codeToSession.url),data:t,method:i.default.codeToSession.method||"GET",header:"function"==typeof i.default.setHeader?i.default.setHeader():i.default.setHeader},"function"==typeof i.default.beforeSend&&(r=i.default.beforeSend(r)),[2,new Promise((function(e,t){var o=(new Date).getTime();wx.request(n(n({},r),{success:function(r){if(200===r.statusCode){if(i.default.codeToSession.report){var n=(new Date).getTime();f.default.report(i.default.codeToSession.report,o,n)}var u=void 0;try{u=i.default.codeToSession.success(r.data,r)}catch(e){}return"string"==typeof u?(a.default.session=u,i.default.doNotCheckSession=!0,i.default.sessionExpireTime&&i.default.sessionExpireKey&&(a.default.sessionExpire=(new Date).getTime()+i.default.sessionExpireTime,wx.setStorage({key:i.default.sessionExpireKey,data:String(a.default.sessionExpire)})),wx.setStorage({key:i.default.sessionName,data:a.default.session}),e(u)):t(s.default.getErrorMsg(r))}return t({type:"http-error",res:r})},complete:function(){},fail:function(e){return t({type:"system-error",res:e})}}))}))]}}))}))})(r.code).then((function(){return e()})).catch((function(e){return t(e)}))},complete:function(){var e=(new Date).getTime();f.default.report("wx_login",r,e)},fail:function(e){return t({type:"system-error",res:e})}})})).then((function(){return h=null,e()})).catch((function(e){return h=null,c.default.hide(),t(e)}))}))),h}function v(){a.default.session="",wx.removeStorage({key:i.default.sessionName}),i.default.sessionExpireTime&&i.default.sessionExpireKey&&(a.default.sessionExpire=1/0,wx.removeStorage({key:i.default.sessionExpireKey}))}t.default={main:function e(t){return new Promise((function(r,n){var o=t?function(){return d.default(t).then(t._resolve).catch(t._reject)}:function(){return e().then(r).catch(n)};return y().then((function(){return i.default.doNotCheckSession?Promise.resolve():(p||(p=new Promise((function(e,t){var r=(new Date).getTime();wx.checkSession({success:function(){return e()},fail:function(){return v(),g().then((function(){return e()}),(function(e){return t(e)}))},complete:function(){var e=(new Date).getTime();f.default.report("wx_checkSession",r,e)}})}))),p)}),(function(e){var t=e.title,r=e.content;return s.default.doError(t,r,o),n({title:t,content:r})})).then((function(){return r()}),(function(e){var t=e.title,r=e.content;return s.default.doError(t,r,o),n({title:t,content:r})}))}))},setSession:function(e){a.default.session=e,i.default.doNotCheckSession=!0,i.default.sessionExpireTime&&i.default.sessionExpireKey&&(a.default.sessionExpire=(new Date).getTime()+i.default.sessionExpireTime,wx.setStorage({key:i.default.sessionExpireKey,data:String(a.default.sessionExpire)})),wx.setStorage({key:i.default.sessionName,data:a.default.session})},delSession:v}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={show:function(e){wx.showToast({title:"boolean"==typeof e?"加载中":e,icon:"loading",mask:!0,duration:6e4})},hide:function(){wx.hideToast({})}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(2);function u(e,t,r){"function"==typeof n.default.reportCGI&&n.default.reportCGI(e,t,r,o.default)}t.default={start:function(e){e._reportStartTime=(new Date).getTime()},end:function(e){e._reportEndTime=(new Date).getTime(),e.report&&e._reportStartTime&&u(e.report,e._reportStartTime,e._reportEndTime)},report:u}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={get:function(e){e.originUrl&&wx.getStorage({key:e.originUrl,success:function(t){(!0===e.cache||"function"==typeof e.cache&&e.cache(t.data))&&"function"==typeof e.success&&e.success(t.data,{isCache:!0}),"function"==typeof e.complete&&e.complete()}})},set:function(e,t){e.originUrl&&(!0===e.cache||"function"==typeof e.cache&&e.cache(t))&&wx.setStorage({key:e.originUrl,data:t})}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(2);function u(e){var t="";if("function"==typeof n.default.errorTitle)try{t=n.default.errorTitle(e.data)}catch(e){}else"string"==typeof n.default.errorTitle&&(t=n.default.errorTitle);var r="";if("function"==typeof n.default.errorContent)try{r=n.default.errorContent(e.data)}catch(e){}else"string"==typeof n.default.errorContent&&(r=n.default.errorContent);return{title:t,content:r}}function a(e,t,r){var o=n.default.errorRetryBtn&&"function"==typeof r;wx.showModal(Object.assign({title:e||"",content:t||"网络或服务异常,请稍后重试"},o?{showCancel:!0,confirmText:"重试",success:function(e){e.confirm&&"function"==typeof r&&r()}}:{showCancel:!1}))}t.default={systemError:function(e,t){if("function"==typeof e.fail)e.fail(t);else if("function"==typeof n.default.systemErrorHandler)n.default.systemErrorHandler(t);else{a("","",(function(){return o.default(e).then(e._resolve).catch(e._reject)}))}},logicError:function(e,t){if("function"==typeof e.fail)e.fail(t);else if("function"==typeof n.default.errorHandler)n.default.errorHandler(t.data);else{var r=u(t);a(r.title,r.content,(function(){return o.default(e).then(e._resolve).catch(e._reject)}))}},doError:a,getErrorMsg:u}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(10),o=r(2),u=r(16),a=r(17),i=r(18),s=r(19),f=r(20),l=r(21),c={init:n.default,request:o.default,uploadFile:u.default,setSession:a.default,login:i.default,getSession:s.default,getConfig:f.default,version:l.version};t.default=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1);t.default=function(e){Object.assign(n.default,e),console.log(n.default.errorTitle);try{o.default.session=wx.getStorageSync(n.default.sessionName)||""}catch(e){}try{o.default.sessionExpire=wx.getStorageSync(n.default.sessionExpireKey||"sessionExpireKey")||1/0}catch(e){}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(5);t.default={get:function(e){if(!(n.default.mockJson[e.url]||e.originUrl&&n.default.mockJson[e.originUrl]))return!1;var t=n.default.mockJson[e.url]||(e.originUrl?n.default.mockJson[e.originUrl]:""),r={data:t=JSON.parse(JSON.stringify(t)),statusCode:200};return o.default.hide(),r}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(3),u=r(7),a=r(6),i=r(4),s=r(13);t.default={responseForRequest:function(e,t){if(200!==e.statusCode)throw{type:"http-error",res:e};if(a.default.end(t),"json"===t.dataType&&"string"==typeof e.data){e.data=s.default(e.data);try{e.data=JSON.parse(e.data)}catch(t){throw{type:"logic-error",res:e}}}if(n.default.loginTrigger(e.data)&&void 0!==t.reLoginCount&&t.reLoginCount=0){var u=e.substr(r+1).split("&");u.forEach((function(e,t){var r=u[t].split("=");o[r[0]]=r[1]}))}o=n(n({},o),t);var a=Object.keys(o).map((function(e){return e+"="+encodeURI(o[e])})).join("&");return r>=0?e.substring(0,r+1)+a:e+"?"+a}}},function(e,t,r){"use strict";var n,o=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.catchHandler=void 0;var u=r(8),a=r(0),i=function(e){function t(t,r){void 0===r&&(r={});var n=e.call(this,t)||this;return n.data=r,n}return o(t,e),t}(Error);t.catchHandler=function(e,t,r){var n=e.type,o=e.res;if("function"==typeof a.default.errorCallback&&a.default.errorCallback(t,o),t.catchError){if("http-error"===n)return r(new Error(o.statusCode.toString()));if("logic-error"===n){var s=u.default.getErrorMsg(o);return r(new i(s.content,o.data))}return r("system-error"===n?new Error(o.errMsg):e)}return"http-error"===n||"logic-error"===n?u.default.logicError(t,o):"system-error"===n?u.default.systemError(t,o):r(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(3);t.default=function(e){return n.default.uploadFile(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(4);t.default=function(e){n.default.setSession(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(4);t.default=function(){return n.default.main()}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(1);t.default=function(){return n.default.session}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1);t.default=function(){return{urlPerfix:n.default.urlPerfix,sessionExpireTime:n.default.sessionExpireTime,sessionExpireKey:n.default.sessionExpireKey,sessionExpire:o.default.sessionExpire}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.version=void 0;t.version="1.6.8"}]).default; \ No newline at end of file +module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={sessionName:"session",loginTrigger:function(){return!1},codeToSession:{url:"",success:function(){}},successTrigger:function(){return!0},setHeader:{},urlPerfix:"",doNotCheckSession:!1,errorTitle:"操作失败",errorContent:function(e){return e},errorRetryBtn:!1,reLoginLimit:3,errorCallback:null,reportCGI:!1,mockJson:!1,globalData:!1,sessionExpireKey:"sessionExpireKey",errorHandler:null,beforeSend:null,systemErrorHandler:null}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={session:"",sessionExpire:1/0,isEnableBackupDomain:!1}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(3);t.default=function(e){return n.default.request(e)}},function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=0&&a.default.backupDomain&&e.url.indexOf(a.default.backupDomain)<0?(b(),v(e).then((function(e){return t(e)}))):r({type:"system-error",res:n})},complete:function(){"function"==typeof e.complete&&e.complete(),e.showLoading&&o.default.hide()}}))}))}function m(e){return 0===(e=function(e){var t,r;if(e.formData||(e.formData={}),e.header=e.header?e.header:{},"function"==typeof a.default.setHeader){var o=a.default.setHeader();"object"==typeof o&&(e.header=n(n({},e.header),o))}else"object"==typeof a.default.setHeader&&(e.header=n(n({},e.header),a.default.setHeader));e.originUrl!==a.default.codeToSession.url&&u.default.session&&(e.formData=n(n({},e.formData),((t={})[a.default.sessionName]=u.default.session,t)));var i=g();return e.formData=n(n({},i),e.formData),a.default.doNotUseQueryString||(u.default.session&&(e.url=d.default.setParams(e.url,((r={})[a.default.sessionName]=u.default.session,r))),e.url=d.default.setParams(e.url,i)),u.default.isEnableBackupDomain&&a.default.backupDomain&&(e.url=d.default.replaceDomain(e.url,a.default.backupDomain)),c.default.start(e),e}(e)).reLoginCount&&"function"==typeof a.default.beforeSend&&(e=a.default.beforeSend(e,u.default.session)),new Promise((function(t,r){wx.uploadFile(n(n({},e),{success:function(e){return t(e)},fail:function(n){var o;return(null===(o=null==n?void 0:n.errMsg)||void 0===o?void 0:o.indexOf("CONNECTION_REFUSED"))>=0&&a.default.backupDomain&&e.url.indexOf(a.default.backupDomain)<0?(b(),m(e).then((function(e){return t(e)}))):r({type:"system-error",res:n})},complete:function(){"function"==typeof e.complete&&e.complete(),e.showLoading&&o.default.hide()}}))}))}function b(){u.default.isEnableBackupDomain||(u.default.isEnableBackupDomain=!0,"function"==typeof a.default.backupDomainEnableCallback&&a.default.backupDomainEnableCallback())}t.default={format:y,request:function(e){return new Promise((function(t,r){if(e=h(e,t,r),a.default.mockJson){var n=i.default.get(e);if(n){var o=l.default.responseForRequest(n,e);return t(o)}}e.cache&&s.default.get(e),f.default.main(e).then((function(){return v(e)})).then((function(r){var n=l.default.responseForRequest(r,e);if(null!=n)return t(n)})).catch((function(t){return p.catchHandler(t,e,r)}))}))},uploadFile:function(e){return new Promise((function(t,r){if(e=h(e,t,r),a.default.mockJson){var n=i.default.get(e);if(n){var o=l.default.responseForUploadFile(n,e);return t(o)}}f.default.main(e).then((function(){return m(e)})).then((function(r){var n=l.default.responseForUploadFile(r,e);if(null!=n)return t(n)})).catch((function(t){p.catchHandler(t,e,r)}))}))}}},function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])||6!==a[0]&&2!==a[0])){u=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]u.default.sessionExpire&&(v(),1)?(i.default.doNotCheckSession=!0,g().then((function(){return e()}),(function(e){return t(e)}))):e()}))}var h=null;function g(){return h||(h=new Promise((function(e,t){new Promise((function(e,t){var r=(new Date).getTime();wx.login({success:function(r){if(!r.code)return t({type:"system-error",res:r});(function(e){return o(this,void 0,void 0,(function(){var t,r;return a(this,(function(o){switch(o.label){case 0:return"function"!=typeof i.default.codeToSession.data?[3,2]:[4,i.default.codeToSession.data(e)];case 1:return t=o.sent(),[3,3];case 2:t=i.default.codeToSession.data||{},o.label=3;case 3:return i.default.codeToSession.codeName?t[i.default.codeToSession.codeName]=e:t.code=e,r={url:l.default.format(i.default.codeToSession.url),data:t,method:i.default.codeToSession.method||"GET",header:"function"==typeof i.default.setHeader?i.default.setHeader():i.default.setHeader},"function"==typeof i.default.beforeSend&&(r=i.default.beforeSend(r)),[2,new Promise((function(e,t){var o=(new Date).getTime();wx.request(n(n({},r),{success:function(r){if(200===r.statusCode){if(i.default.codeToSession.report){var n=(new Date).getTime();f.default.report(i.default.codeToSession.report,o,n)}var a=void 0;try{a=i.default.codeToSession.success(r.data,r)}catch(e){}return"string"==typeof a?(u.default.session=a,i.default.doNotCheckSession=!0,i.default.sessionExpireTime&&i.default.sessionExpireKey&&(u.default.sessionExpire=(new Date).getTime()+i.default.sessionExpireTime,wx.setStorage({key:i.default.sessionExpireKey,data:String(u.default.sessionExpire)})),wx.setStorage({key:i.default.sessionName,data:u.default.session}),e(a)):t(s.default.getErrorMsg(r))}return t({type:"http-error",res:r})},complete:function(){},fail:function(e){return t({type:"system-error",res:e})}}))}))]}}))}))})(r.code).then((function(){return e()})).catch((function(e){return t(e)}))},complete:function(){var e=(new Date).getTime();f.default.report("wx_login",r,e)},fail:function(e){return t({type:"system-error",res:e})}})})).then((function(){return h=null,e()})).catch((function(e){return h=null,c.default.hide(),t(e)}))}))),h}function v(){u.default.session="",wx.removeStorage({key:i.default.sessionName}),i.default.sessionExpireTime&&i.default.sessionExpireKey&&(u.default.sessionExpire=1/0,wx.removeStorage({key:i.default.sessionExpireKey}))}t.default={main:function e(t){return new Promise((function(r,n){var o=t?function(){return d.default(t).then(t._resolve).catch(t._reject)}:function(){return e().then(r).catch(n)};return y().then((function(){return i.default.doNotCheckSession?Promise.resolve():(p||(p=new Promise((function(e,t){var r=(new Date).getTime();wx.checkSession({success:function(){return e()},fail:function(){return v(),g().then((function(){return e()}),(function(e){return t(e)}))},complete:function(){var e=(new Date).getTime();f.default.report("wx_checkSession",r,e)}})}))),p)}),(function(e){var t=e.title,r=e.content;return s.default.doError(t,r,o),n({title:t,content:r})})).then((function(){return r()}),(function(e){var t=e.title,r=e.content;return s.default.doError(t,r,o),n({title:t,content:r})}))}))},setSession:function(e){u.default.session=e,i.default.doNotCheckSession=!0,i.default.sessionExpireTime&&i.default.sessionExpireKey&&(u.default.sessionExpire=(new Date).getTime()+i.default.sessionExpireTime,wx.setStorage({key:i.default.sessionExpireKey,data:String(u.default.sessionExpire)})),wx.setStorage({key:i.default.sessionName,data:u.default.session})},delSession:v}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={show:function(e){wx.showToast({title:"boolean"==typeof e?"加载中":e,icon:"loading",mask:!0,duration:6e4})},hide:function(){wx.hideToast({})}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(2);function a(e,t,r){"function"==typeof n.default.reportCGI&&n.default.reportCGI(e,t,r,o.default)}t.default={start:function(e){e._reportStartTime=(new Date).getTime()},end:function(e){e._reportEndTime=(new Date).getTime(),e.report&&e._reportStartTime&&a(e.report,e._reportStartTime,e._reportEndTime)},report:a}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={get:function(e){e.originUrl&&wx.getStorage({key:e.originUrl,success:function(t){(!0===e.cache||"function"==typeof e.cache&&e.cache(t.data))&&"function"==typeof e.success&&e.success(t.data,{isCache:!0}),"function"==typeof e.complete&&e.complete()}})},set:function(e,t){e.originUrl&&(!0===e.cache||"function"==typeof e.cache&&e.cache(t))&&wx.setStorage({key:e.originUrl,data:t})}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(2);function a(e){var t="";if("function"==typeof n.default.errorTitle)try{t=n.default.errorTitle(e.data)}catch(e){}else"string"==typeof n.default.errorTitle&&(t=n.default.errorTitle);var r="";if("function"==typeof n.default.errorContent)try{r=n.default.errorContent(e.data)}catch(e){}else"string"==typeof n.default.errorContent&&(r=n.default.errorContent);return{title:t,content:r}}function u(e,t,r){var o=n.default.errorRetryBtn&&"function"==typeof r;wx.showModal(Object.assign({title:e||"",content:t||"网络或服务异常,请稍后重试"},o?{showCancel:!0,confirmText:"重试",success:function(e){e.confirm&&"function"==typeof r&&r()}}:{showCancel:!1}))}t.default={systemError:function(e,t){if("function"==typeof e.fail)e.fail(t);else if("function"==typeof n.default.systemErrorHandler)n.default.systemErrorHandler(t);else{u("","",(function(){return o.default(e).then(e._resolve).catch(e._reject)}))}},logicError:function(e,t){if("function"==typeof e.fail)e.fail(t);else if("function"==typeof n.default.errorHandler)n.default.errorHandler(t.data);else{var r=a(t);u(r.title,r.content,(function(){return o.default(e).then(e._resolve).catch(e._reject)}))}},doError:u,getErrorMsg:a}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(10),o=r(2),a=r(16),u=r(17),i=r(18),s=r(19),f=r(20),l=r(21),c={init:n.default,request:o.default,uploadFile:a.default,setSession:u.default,login:i.default,getSession:s.default,getConfig:f.default,version:l.version};t.default=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1);t.default=function(e){Object.assign(n.default,e),console.log(n.default.errorTitle);try{o.default.session=wx.getStorageSync(n.default.sessionName)||""}catch(e){}try{o.default.sessionExpire=wx.getStorageSync(n.default.sessionExpireKey||"sessionExpireKey")||1/0}catch(e){}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(5);t.default={get:function(e){if(!(n.default.mockJson[e.url]||e.originUrl&&n.default.mockJson[e.originUrl]))return!1;var t=n.default.mockJson[e.url]||(e.originUrl?n.default.mockJson[e.originUrl]:""),r={data:t=JSON.parse(JSON.stringify(t)),statusCode:200};return o.default.hide(),r}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(3),a=r(7),u=r(6),i=r(4),s=r(13);t.default={responseForRequest:function(e,t){if(200!==e.statusCode)throw{type:"http-error",res:e};if(u.default.end(t),"json"===t.dataType&&"string"==typeof e.data){e.data=s.default(e.data);try{e.data=JSON.parse(e.data)}catch(t){throw{type:"logic-error",res:e}}}if(n.default.loginTrigger(e.data)&&void 0!==t.reLoginCount&&t.reLoginCount=0){var a=e.substr(r+1).split("&");a.forEach((function(e,t){var r=a[t].split("=");o[r[0]]=r[1]}))}o=n(n({},o),t);var u=Object.keys(o).map((function(e){return e+"="+encodeURI(o[e])})).join("&");return r>=0?e.substring(0,r+1)+u:e+"?"+u},replaceDomain:function(e,t){return void 0===e&&(e=""),void 0===t&&(t=""),t=t.replace(/^http(s)?:\/\//,"").replace(/\/$/,""),e.replace(/^http(s)?:\/\/(.*?)\//,"https://"+t+"/")}}},function(e,t,r){"use strict";var n,o=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.catchHandler=void 0;var a=r(8),u=r(0),i=function(e){function t(t,r){void 0===r&&(r={});var n=e.call(this,t)||this;return n.data=r,n}return o(t,e),t}(Error);t.catchHandler=function(e,t,r){var n=e.type,o=e.res;if("function"==typeof u.default.errorCallback&&u.default.errorCallback(t,o),t.catchError){if("http-error"===n)return r(new Error(o.statusCode.toString()));if("logic-error"===n){var s=a.default.getErrorMsg(o);return r(new i(s.content,o.data))}return r("system-error"===n?new Error(o.errMsg):e)}return"http-error"===n||"logic-error"===n?a.default.logicError(t,o):"system-error"===n?a.default.systemError(t,o):r(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(3);t.default=function(e){return n.default.uploadFile(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(4);t.default=function(e){n.default.setSession(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(4);t.default=function(){return n.default.main()}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(1);t.default=function(){return n.default.session}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(1);t.default=function(){return{urlPerfix:n.default.urlPerfix,sessionExpireTime:n.default.sessionExpireTime,sessionExpireKey:n.default.sessionExpireKey,sessionExpire:o.default.sessionExpire}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.version=void 0;t.version="1.7.0"}]).default; \ No newline at end of file diff --git a/package.json b/package.json index c82e934..a2f911e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "we-request", - "version": "1.6.8", + "version": "1.7.0", "description": "本工具通过拓展小程序的wx.request,让开发者通过简单的配置,实现自动管理登录态等功能", "keywords": [ "登录态", diff --git a/src/interface.ts b/src/interface.ts index 3c0f53c..01962dc 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -56,6 +56,10 @@ export interface IInitOption { beforeSend?: Function | null; /* 自定义系统错误处理函数 */ systemErrorHandler?: Function | null; + /* 备用域名 */ + backupDomain?: string; + /* 备用域名启用时回调函数 */ + backupDomainEnableCallback?: Function; } export interface ICodeToSessionOptions{ diff --git a/src/module/requestHandler.ts b/src/module/requestHandler.ts index 4cde7c7..f720731 100644 --- a/src/module/requestHandler.ts +++ b/src/module/requestHandler.ts @@ -87,6 +87,11 @@ function initializeRequestObj(obj: IRequestOption) { obj.url = url.setParams(obj.url, gd); } + // 备用域名逻辑 + if (status.isEnableBackupDomain && config.backupDomain) { + obj.url = url.replaceDomain(obj.url, config.backupDomain); + } + durationReporter.start(obj); return obj; @@ -125,6 +130,11 @@ function initializeUploadFileObj(obj: IUploadFileOption) { obj.url = url.setParams(obj.url, gd); } + // 备用域名逻辑 + if (status.isEnableBackupDomain && config.backupDomain) { + obj.url = url.replaceDomain(obj.url, config.backupDomain); + } + durationReporter.start(obj); return obj; @@ -152,6 +162,13 @@ function doRequest(obj: IRequestOption) { return resolve(res); }, fail(res) { + // 如果主域名不可用,且配置了备份域名,且本次请求未使用备份域名 + if (res?.errMsg?.indexOf('CONNECTION_REFUSED') >= 0 && config.backupDomain && obj.url.indexOf(config.backupDomain) < 0) { + // 开启备份域名 + enableBackupDomain(); + // 重试一次 + return doRequest(obj).then((res)=> resolve(res)); + } return reject({ type: 'system-error', res }); }, complete() { @@ -178,6 +195,13 @@ function doUploadFile(obj: IUploadFileOption) { return resolve(res); }, fail(res) { + // 如果主域名不可用,且配置了备份域名,且本次请求未使用备份域名 + if (res?.errMsg?.indexOf('CONNECTION_REFUSED') >= 0 && config.backupDomain && obj.url.indexOf(config.backupDomain) < 0) { + // 开启备份域名 + enableBackupDomain(); + // 重试一次 + return doUploadFile(obj).then((res)=> resolve(res)); + } return reject({ type: 'system-error', res }); }, complete() { @@ -246,6 +270,15 @@ function uploadFile(obj: IUploadFileOption): any { }) } +function enableBackupDomain() { + if (!status.isEnableBackupDomain) { + status.isEnableBackupDomain = true; + if (typeof config.backupDomainEnableCallback === 'function') { + config.backupDomainEnableCallback(); + } + } +} + export default { format, request, diff --git a/src/store/status.ts b/src/store/status.ts index af47e2e..5d1a077 100644 --- a/src/store/status.ts +++ b/src/store/status.ts @@ -1,5 +1,7 @@ export default { session: '' as string, // session过期的时间点 - sessionExpire: Infinity as number + sessionExpire: Infinity as number, + // 是否启用备用域名 + isEnableBackupDomain: false } as any diff --git a/src/util/url.ts b/src/util/url.ts index 661fcb9..33f3e40 100644 --- a/src/util/url.ts +++ b/src/util/url.ts @@ -25,6 +25,13 @@ function setParams(url: string = "", params: object) { } } +function replaceDomain(url: string = "", domain: string = "") { + // 保证domain只包含域名,没有 http(s) 前缀 和 / 后缀 + domain = domain.replace(/^http(s)?:\/\//, '').replace(/\/$/, ''); + return url.replace(/^http(s)?:\/\/(.*?)\//, `https://${domain}/`); +} + export default { - setParams + setParams, + replaceDomain, }; diff --git a/test/util/url.test.ts b/test/util/url.test.ts index 0e0ac2e..fe1dd9a 100644 --- a/test/util/url.test.ts +++ b/test/util/url.test.ts @@ -12,4 +12,16 @@ describe("setParams", () => { sample = url.setParams(sample, { test2: 2 }); expect(sample).toBe("https://www.example.com?test=1&test2=2"); }); + + test("replace domain with host", () => { + let sample = "https://example.com/dosomething"; + sample = url.replaceDomain(sample, "example2.com"); + expect(sample).toBe("https://example2.com/dosomething"); + }) + + test("replace domain with origin", () => { + let sample = "https://example.com/dosomething"; + sample = url.replaceDomain(sample, "https://example2.com/"); + expect(sample).toBe("https://example2.com/dosomething"); + }) });