From 69fd37185779c554e027b67a69f63e1854560af7 Mon Sep 17 00:00:00 2001 From: "TENCENT\\ivinwu" Date: Thu, 4 Apr 2019 16:32:51 +0800 Subject: [PATCH] fix: successData is optional --- README.md | 2 +- build/interface.d.ts | 2 +- build/weRequest.js | 20 +++++++++++--------- build/weRequest.min.js | 4 ++-- package.json | 4 ++-- src/interface.ts | 2 +- src/module/responseHandler.ts | 6 +++++- src/store/config.ts | 3 --- 8 files changed, 23 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 9ede874..3c05231 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

weRequest

-

v1.2.5

+

v1.2.6

解决繁琐的小程序会话管理,一款自带登录态管理的网络请求组件。

diff --git a/build/interface.d.ts b/build/interface.d.ts index d5c2612..aca47d6 100644 --- a/build/interface.d.ts +++ b/build/interface.d.ts @@ -13,7 +13,7 @@ export interface IInitOption { sessionExpireTime?: number; loginTrigger?: (res: string | IAnyObject | ArrayBuffer) => boolean; successTrigger: (res: string | IAnyObject | ArrayBuffer) => boolean; - successData: (res: string | IAnyObject | ArrayBuffer) => string | IAnyObject | ArrayBuffer; + successData?: (res: string | IAnyObject | ArrayBuffer) => string | IAnyObject | ArrayBuffer; errorTitle?: string | ((res: string | IAnyObject | ArrayBuffer) => string); errorContent?: string | ((res: string | IAnyObject | ArrayBuffer) => string); } diff --git a/build/weRequest.js b/build/weRequest.js index e2fc629..b539c5e 100644 --- a/build/weRequest.js +++ b/build/weRequest.js @@ -1,5 +1,5 @@ /*! - * weRequest 1.2.5 + * weRequest 1.2.6 * https://github.com/IvinWu/weRequest */ module.exports = @@ -720,7 +720,12 @@ function response(res, obj, method) { else if (config_1.default.successTrigger(res.data)) { var realData = ""; try { - realData = config_1.default.successData(res.data); + if (typeof config_1.default.successData === 'function') { + realData = config_1.default.successData(res.data); + } + else { + realData = res.data; + } } catch (e) { console.error("Function successData occur error: " + e); @@ -755,7 +760,7 @@ function response(res, obj, method) { } } exports.default = response; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9yZXNwb25zZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBb0M7QUFDcEMsbURBQTZDO0FBQzdDLCtDQUF5QztBQUN6QywrQ0FBeUM7QUFDekMsdURBQWlEO0FBQ2pELG1EQUE2QztBQUc3QyxTQUFTLFFBQVEsQ0FDYixHQUF5RSxFQUN6RSxHQUF1QyxFQUN2QyxNQUFnQztJQUVoQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO1FBR3hCLElBQUcsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJO2dCQUNBLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixJQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUU7b0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdEI7cUJBQU07b0JBQ0gsc0JBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxPQUFPO2lCQUNWO2FBQ0o7U0FDSjtRQUVELDBCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLGdCQUFNLENBQUMsWUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsWUFBWSxHQUFHLGdCQUFNLENBQUMsWUFBYSxFQUFFO1lBRTdHLHdCQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsSUFBRyxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUNyQix3QkFBYyxDQUFDLE9BQU8sQ0FBQyxHQUFxQixDQUFDLENBQUM7YUFDakQ7aUJBQU0sSUFBRyxNQUFNLEtBQUssWUFBWSxFQUFFO2dCQUMvQix3QkFBYyxDQUFDLFVBQVUsQ0FBQyxHQUF3QixDQUFDLENBQUM7YUFDdkQ7U0FDSjthQUFNLElBQUksZ0JBQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBRXhDLElBQUksUUFBUSxHQUFzQyxFQUFFLENBQUM7WUFDckQsSUFBSTtnQkFDQSxRQUFRLEdBQUcsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMzRDtZQUNELElBQUcsQ0FBRSxHQUFzQixDQUFDLFlBQVksRUFBRTtnQkFFdEMsSUFBRyxPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFDO29CQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN6QjtxQkFBTTtvQkFDSCxPQUFPLFFBQVEsQ0FBQztpQkFDbkI7YUFDSjtZQUVELHNCQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBRUgsSUFBRyxHQUFHLENBQUMsVUFBVSxFQUFFO2dCQUNmLElBQUksR0FBRyxHQUFHLHNCQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztpQkFBTTtnQkFDSCxzQkFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDckM7U0FDSjtLQUNKO1NBQU07UUFFSCxJQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUM5QzthQUFNO1lBQ0gsc0JBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3JDO0tBQ0o7QUFDTCxDQUFDO0FBRUQsa0JBQWUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9zdG9yZS9jb25maWcnXG5pbXBvcnQgcmVxdWVzdEhhbmRsZXIgZnJvbSAnLi9yZXF1ZXN0SGFuZGxlcidcbmltcG9ydCBlcnJvckhhbmRsZXIgZnJvbSAnLi9lcnJvckhhbmRsZXInXG5pbXBvcnQgY2FjaGVNYW5hZ2VyIGZyb20gJy4vY2FjaGVNYW5hZ2VyJ1xuaW1wb3J0IGR1cmF0aW9uUmVwb3J0ZXIgZnJvbSAnLi9kdXJhdGlvblJlcG9ydGVyJ1xuaW1wb3J0IHNlc3Npb25NYW5hZ2VyIGZyb20gJy4vc2Vzc2lvbk1hbmFnZXInXG5pbXBvcnQgeyBJUmVxdWVzdE9wdGlvbiwgSVVwbG9hZEZpbGVPcHRpb24gfSBmcm9tIFwiLi4vaW50ZXJmYWNlXCI7XG5cbmZ1bmN0aW9uIHJlc3BvbnNlKFxuICAgIHJlczogd3guUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCB8IHd4LlVwbG9hZEZpbGVTdWNjZXNzQ2FsbGJhY2tSZXN1bHQsXG4gICAgb2JqOiBJUmVxdWVzdE9wdGlvbiB8IElVcGxvYWRGaWxlT3B0aW9uLFxuICAgIG1ldGhvZDogXCJyZXF1ZXN0XCIgfCBcInVwbG9hZEZpbGVcIlxuKTogYW55IHtcbiAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXG4gICAgICAgIC8vIOWFvOWuuXVwbG9hZEZpbGXov5Tlm57nmoRyZXMuZGF0YeWPr+iDveaYr+Wtl+espuS4slxuICAgICAgICBpZih0eXBlb2YgcmVzLmRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzLmRhdGEgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZihvYmouY2F0Y2hFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyLmxvZ2ljRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZHVyYXRpb25SZXBvcnRlci5lbmQob2JqKTtcblxuICAgICAgICBpZiAoY29uZmlnLmxvZ2luVHJpZ2dlciEocmVzLmRhdGEpICYmIG9iai5yZUxvZ2luQ291bnQgIT09IHVuZGVmaW5lZCAmJiBvYmoucmVMb2dpbkNvdW50IDwgY29uZmlnLnJlTG9naW5MaW1pdCEpIHtcbiAgICAgICAgICAgIC8vIOeZu+W9leaAgeWkseaViO+8jOS4lOmHjeivleasoeaVsOS4jei2hei/h+mFjee9rlxuICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXIuZGVsU2Vzc2lvbigpO1xuICAgICAgICAgICAgaWYobWV0aG9kID09PSBcInJlcXVlc3RcIikge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyLnJlcXVlc3Qob2JqIGFzIElSZXF1ZXN0T3B0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZihtZXRob2QgPT09IFwidXBsb2FkRmlsZVwiKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXIudXBsb2FkRmlsZShvYmogYXMgSVVwbG9hZEZpbGVPcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5zdWNjZXNzVHJpZ2dlcihyZXMuZGF0YSkpIHtcbiAgICAgICAgICAgIC8vIOaOpeWPo+i/lOWbnuaIkOWKn+eggVxuICAgICAgICAgICAgbGV0IHJlYWxEYXRhOiBzdHJpbmcgfCBJQW55T2JqZWN0IHwgQXJyYXlCdWZmZXIgPSBcIlwiO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZy5zdWNjZXNzRGF0YShyZXMuZGF0YSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZ1bmN0aW9uIHN1Y2Nlc3NEYXRhIG9jY3VyIGVycm9yOiBcIiArIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoIShvYmogYXMgSVJlcXVlc3RPcHRpb24pLm5vQ2FjaGVGbGFzaCkge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOS4uuS6huS/neivgemhtemdouS4jemXqueDge+8jOWImeS4jeWbnuiwg++8jOWPquaYr+e8k+WtmOacgOaWsOaVsOaNru+8jOW+heS4i+asoei/m+WFpeWGjeeUqFxuICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKXtcbiAgICAgICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWFsRGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDnvJPlrZjlrZjlgqhcbiAgICAgICAgICAgIGNhY2hlTWFuYWdlci5zZXQob2JqLCByZWFsRGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDmjqXlj6Pov5Tlm57lpLHotKXnoIFcbiAgICAgICAgICAgIGlmKG9iai5jYXRjaEVycm9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1zZyA9IGVycm9ySGFuZGxlci5nZXRFcnJvck1zZyhyZXMpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cuY29udGVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5sb2dpY0Vycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGh0dHBz6L+U5Zue54q25oCB56CB6Z2eMjAwXG4gICAgICAgIGlmKG9iai5jYXRjaEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzLnN0YXR1c0NvZGUudG9TdHJpbmcoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvckhhbmRsZXIubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlc3BvbnNlO1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9yZXNwb25zZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBb0M7QUFDcEMsbURBQTZDO0FBQzdDLCtDQUF5QztBQUN6QywrQ0FBeUM7QUFDekMsdURBQWlEO0FBQ2pELG1EQUE2QztBQUc3QyxTQUFTLFFBQVEsQ0FDYixHQUF5RSxFQUN6RSxHQUF1QyxFQUN2QyxNQUFnQztJQUVoQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO1FBR3hCLElBQUcsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJO2dCQUNBLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixJQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUU7b0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdEI7cUJBQU07b0JBQ0gsc0JBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxPQUFPO2lCQUNWO2FBQ0o7U0FDSjtRQUVELDBCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLGdCQUFNLENBQUMsWUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsWUFBWSxHQUFHLGdCQUFNLENBQUMsWUFBYSxFQUFFO1lBRTdHLHdCQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsSUFBRyxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUNyQix3QkFBYyxDQUFDLE9BQU8sQ0FBQyxHQUFxQixDQUFDLENBQUM7YUFDakQ7aUJBQU0sSUFBRyxNQUFNLEtBQUssWUFBWSxFQUFFO2dCQUMvQix3QkFBYyxDQUFDLFVBQVUsQ0FBQyxHQUF3QixDQUFDLENBQUM7YUFDdkQ7U0FDSjthQUFNLElBQUksZ0JBQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBRXhDLElBQUksUUFBUSxHQUFzQyxFQUFFLENBQUM7WUFDckQsSUFBSTtnQkFDQSxJQUFJLE9BQU8sZ0JBQU0sQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFO29CQUMxQyxRQUFRLEdBQUcsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzQztxQkFBTTtvQkFDSCxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztpQkFDdkI7YUFDSjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDM0Q7WUFDRCxJQUFHLENBQUUsR0FBc0IsQ0FBQyxZQUFZLEVBQUU7Z0JBRXRDLElBQUcsT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBQztvQkFDakMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDekI7cUJBQU07b0JBQ0gsT0FBTyxRQUFRLENBQUM7aUJBQ25CO2FBQ0o7WUFFRCxzQkFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUVILElBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRTtnQkFDZixJQUFJLEdBQUcsR0FBRyxzQkFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0gsc0JBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0o7S0FDSjtTQUFNO1FBRUgsSUFBRyxHQUFHLENBQUMsVUFBVSxFQUFFO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDOUM7YUFBTTtZQUNILHNCQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNyQztLQUNKO0FBQ0wsQ0FBQztBQUVELGtCQUFlLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25maWcgZnJvbSAnLi4vc3RvcmUvY29uZmlnJ1xuaW1wb3J0IHJlcXVlc3RIYW5kbGVyIGZyb20gJy4vcmVxdWVzdEhhbmRsZXInXG5pbXBvcnQgZXJyb3JIYW5kbGVyIGZyb20gJy4vZXJyb3JIYW5kbGVyJ1xuaW1wb3J0IGNhY2hlTWFuYWdlciBmcm9tICcuL2NhY2hlTWFuYWdlcidcbmltcG9ydCBkdXJhdGlvblJlcG9ydGVyIGZyb20gJy4vZHVyYXRpb25SZXBvcnRlcidcbmltcG9ydCBzZXNzaW9uTWFuYWdlciBmcm9tICcuL3Nlc3Npb25NYW5hZ2VyJ1xuaW1wb3J0IHsgSVJlcXVlc3RPcHRpb24sIElVcGxvYWRGaWxlT3B0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZVwiO1xuXG5mdW5jdGlvbiByZXNwb25zZShcbiAgICByZXM6IHd4LlJlcXVlc3RTdWNjZXNzQ2FsbGJhY2tSZXN1bHQgfCB3eC5VcGxvYWRGaWxlU3VjY2Vzc0NhbGxiYWNrUmVzdWx0LFxuICAgIG9iajogSVJlcXVlc3RPcHRpb24gfCBJVXBsb2FkRmlsZU9wdGlvbixcbiAgICBtZXRob2Q6IFwicmVxdWVzdFwiIHwgXCJ1cGxvYWRGaWxlXCJcbik6IGFueSB7XG4gICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcblxuICAgICAgICAvLyDlhbzlrrl1cGxvYWRGaWxl6L+U5Zue55qEcmVzLmRhdGHlj6/og73mmK/lrZfnrKbkuLJcbiAgICAgICAgaWYodHlwZW9mIHJlcy5kYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlcy5kYXRhID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYob2JqLmNhdGNoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5sb2dpY0Vycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGR1cmF0aW9uUmVwb3J0ZXIuZW5kKG9iaik7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5sb2dpblRyaWdnZXIhKHJlcy5kYXRhKSAmJiBvYmoucmVMb2dpbkNvdW50ICE9PSB1bmRlZmluZWQgJiYgb2JqLnJlTG9naW5Db3VudCA8IGNvbmZpZy5yZUxvZ2luTGltaXQhKSB7XG4gICAgICAgICAgICAvLyDnmbvlvZXmgIHlpLHmlYjvvIzkuJTph43or5XmrKHmlbDkuI3otoXov4fphY3nva5cbiAgICAgICAgICAgIHNlc3Npb25NYW5hZ2VyLmRlbFNlc3Npb24oKTtcbiAgICAgICAgICAgIGlmKG1ldGhvZCA9PT0gXCJyZXF1ZXN0XCIpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlci5yZXF1ZXN0KG9iaiBhcyBJUmVxdWVzdE9wdGlvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYobWV0aG9kID09PSBcInVwbG9hZEZpbGVcIikge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyLnVwbG9hZEZpbGUob2JqIGFzIElVcGxvYWRGaWxlT3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjb25maWcuc3VjY2Vzc1RyaWdnZXIocmVzLmRhdGEpKSB7XG4gICAgICAgICAgICAvLyDmjqXlj6Pov5Tlm57miJDlip/noIFcbiAgICAgICAgICAgIGxldCByZWFsRGF0YTogc3RyaW5nIHwgSUFueU9iamVjdCB8IEFycmF5QnVmZmVyID0gXCJcIjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcuc3VjY2Vzc0RhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSBjb25maWcuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWxEYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGdW5jdGlvbiBzdWNjZXNzRGF0YSBvY2N1ciBlcnJvcjogXCIgKyBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKCEob2JqIGFzIElSZXF1ZXN0T3B0aW9uKS5ub0NhY2hlRmxhc2gpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzkuLrkuobkv53or4HpobXpnaLkuI3pl6rng4HvvIzliJnkuI3lm57osIPvvIzlj6rmmK/nvJPlrZjmnIDmlrDmlbDmja7vvIzlvoXkuIvmrKHov5vlhaXlho3nlKhcbiAgICAgICAgICAgICAgICBpZih0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIil7XG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlYWxEYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVhbERhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g57yT5a2Y5a2Y5YKoXG4gICAgICAgICAgICBjYWNoZU1hbmFnZXIuc2V0KG9iaiwgcmVhbERhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g5o6l5Y+j6L+U5Zue5aSx6LSl56CBXG4gICAgICAgICAgICBpZihvYmouY2F0Y2hFcnJvcikge1xuICAgICAgICAgICAgICAgIGxldCBtc2cgPSBlcnJvckhhbmRsZXIuZ2V0RXJyb3JNc2cocmVzKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnLmNvbnRlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBodHRwc+i/lOWbnueKtuaAgeeggemdnjIwMFxuICAgICAgICBpZihvYmouY2F0Y2hFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlcy5zdGF0dXNDb2RlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3JIYW5kbGVyLmxvZ2ljRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCByZXNwb25zZTtcbiJdfQ== /***/ }), @@ -1003,9 +1008,6 @@ var defaultConfig = { return true; }, urlPerfix: "", - successData: function (res) { - return res; - }, doNotCheckSession: false, errorTitle: "操作失败", errorContent: function (res) { @@ -1019,7 +1021,7 @@ var defaultConfig = { sessionExpireKey: "sessionExpireKey" }; exports.default = defaultConfig; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLElBQU0sYUFBYSxHQUFnQjtJQUMvQixXQUFXLEVBQUUsU0FBUztJQUN0QixZQUFZO1FBQ1IsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUNELGFBQWEsRUFBRTtRQUNYLEdBQUcsRUFBRSxFQUFFO1FBQ1AsT0FBTyxFQUFFLGNBQU0sQ0FBQztLQUNuQjtJQUNELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFDRCxTQUFTLEVBQUUsRUFBRTtJQUNiLFdBQVcsWUFBQyxHQUFRO1FBQ2hCLE9BQU8sR0FBRyxDQUFBO0lBQ2QsQ0FBQztJQUNELGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsVUFBVSxFQUFFLE1BQU07SUFDbEIsWUFBWSxZQUFDLEdBQVE7UUFDakIsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDO0lBQ0QsWUFBWSxFQUFFLENBQUM7SUFDZixhQUFhLEVBQUUsSUFBSTtJQUNuQixTQUFTLEVBQUUsS0FBSztJQUNoQixRQUFRLEVBQUUsS0FBSztJQUNmLFVBQVUsRUFBRSxLQUFLO0lBRWpCLGdCQUFnQixFQUFFLGtCQUFrQjtDQUN2QyxDQUFDO0FBRUYsa0JBQWUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUluaXRPcHRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2UnXG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IElJbml0T3B0aW9uID0ge1xuICAgIHNlc3Npb25OYW1lOiBcInNlc3Npb25cIixcbiAgICBsb2dpblRyaWdnZXIoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgY29kZVRvU2Vzc2lvbjoge1xuICAgICAgICB1cmw6IFwiXCIsXG4gICAgICAgIHN1Y2Nlc3M6ICgpPT4ge31cbiAgICB9LFxuICAgIHN1Y2Nlc3NUcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sXG4gICAgdXJsUGVyZml4OiBcIlwiLFxuICAgIHN1Y2Nlc3NEYXRhKHJlczogYW55KSB7XG4gICAgICAgIHJldHVybiByZXNcbiAgICB9LFxuICAgIGRvTm90Q2hlY2tTZXNzaW9uOiBmYWxzZSxcbiAgICBlcnJvclRpdGxlOiBcIuaTjeS9nOWksei0pVwiLFxuICAgIGVycm9yQ29udGVudChyZXM6IGFueSkge1xuICAgICAgICByZXR1cm4gcmVzXG4gICAgfSxcbiAgICByZUxvZ2luTGltaXQ6IDMsXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcbiAgICByZXBvcnRDR0k6IGZhbHNlLFxuICAgIG1vY2tKc29uOiBmYWxzZSxcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcbiAgICAvLyBzZXNzaW9u5Zyo5pys5Zyw57yT5a2Y55qEa2V5XG4gICAgc2Vzc2lvbkV4cGlyZUtleTogXCJzZXNzaW9uRXhwaXJlS2V5XCJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRDb25maWc7XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLElBQU0sYUFBYSxHQUFnQjtJQUMvQixXQUFXLEVBQUUsU0FBUztJQUN0QixZQUFZO1FBQ1IsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUNELGFBQWEsRUFBRTtRQUNYLEdBQUcsRUFBRSxFQUFFO1FBQ1AsT0FBTyxFQUFFLGNBQU0sQ0FBQztLQUNuQjtJQUNELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFDRCxTQUFTLEVBQUUsRUFBRTtJQUNiLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsVUFBVSxFQUFFLE1BQU07SUFDbEIsWUFBWSxZQUFDLEdBQVE7UUFDakIsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDO0lBQ0QsWUFBWSxFQUFFLENBQUM7SUFDZixhQUFhLEVBQUUsSUFBSTtJQUNuQixTQUFTLEVBQUUsS0FBSztJQUNoQixRQUFRLEVBQUUsS0FBSztJQUNmLFVBQVUsRUFBRSxLQUFLO0lBRWpCLGdCQUFnQixFQUFFLGtCQUFrQjtDQUN2QyxDQUFDO0FBRUYsa0JBQWUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUluaXRPcHRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2UnXG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IElJbml0T3B0aW9uID0ge1xuICAgIHNlc3Npb25OYW1lOiBcInNlc3Npb25cIixcbiAgICBsb2dpblRyaWdnZXIoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sXG4gICAgY29kZVRvU2Vzc2lvbjoge1xuICAgICAgICB1cmw6IFwiXCIsXG4gICAgICAgIHN1Y2Nlc3M6ICgpPT4ge31cbiAgICB9LFxuICAgIHN1Y2Nlc3NUcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sXG4gICAgdXJsUGVyZml4OiBcIlwiLFxuICAgIGRvTm90Q2hlY2tTZXNzaW9uOiBmYWxzZSxcbiAgICBlcnJvclRpdGxlOiBcIuaTjeS9nOWksei0pVwiLFxuICAgIGVycm9yQ29udGVudChyZXM6IGFueSkge1xuICAgICAgICByZXR1cm4gcmVzXG4gICAgfSxcbiAgICByZUxvZ2luTGltaXQ6IDMsXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcbiAgICByZXBvcnRDR0k6IGZhbHNlLFxuICAgIG1vY2tKc29uOiBmYWxzZSxcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcbiAgICAvLyBzZXNzaW9u5Zyo5pys5Zyw57yT5a2Y55qEa2V5XG4gICAgc2Vzc2lvbkV4cGlyZUtleTogXCJzZXNzaW9uRXhwaXJlS2V5XCJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRDb25maWc7XG4iXX0= /***/ }), @@ -1132,11 +1134,11 @@ exports.default = { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var version = "1.2.5"; +var version = "1.2.6"; exports.version = version; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsSUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDO0FBRW5CLDBCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBjb25zdCBfX1ZFUlNJT05fXzogc3RyaW5nO1xuXG5jb25zdCB2ZXJzaW9uID0gX19WRVJTSU9OX187XG5cbmV4cG9ydCB7IHZlcnNpb24gfTtcbiJdfQ== /***/ }) /******/ })["default"]; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZVJlcXVlc3Qvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRDb25maWcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRTZXNzaW9uLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvaW5pdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL2xvZ2luLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL3NldFNlc3Npb24udHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS91cGxvYWRGaWxlLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhY2hlTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2R1cmF0aW9uUmVwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9tb2NrTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvcmVzcG9uc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvc2Vzc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3N0b3JlL2NvbmZpZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvc3RvcmUvc3RhdHVzLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL2xvYWRpbmcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3V0aWwvdXJsLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0RBQTBDLGdDQUFnQztBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUF3RCxrQkFBa0I7QUFDMUU7QUFDQSx5REFBaUQsY0FBYztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQXlDLGlDQUFpQztBQUMxRSx3SEFBZ0gsbUJBQW1CLEVBQUU7QUFDckk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ2xGYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLDhDQUFpQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCwyQ0FBMkMsKzNCOzs7Ozs7Ozs7Ozs7QUNaOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkNBQTJDLG1hOzs7Ozs7Ozs7Ozs7QUNOOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCwyQ0FBMkMsMmtEOzs7Ozs7Ozs7Ozs7QUNuQjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsdUJBQXVCLG1CQUFPLENBQUMsZ0VBQTBCO0FBQ3pEO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkNBQTJDLDJiOzs7Ozs7Ozs7Ozs7QUNOOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCx1QkFBdUIsbUJBQU8sQ0FBQyxnRUFBMEI7QUFDekQ7QUFDQTtBQUNBLENBQUM7QUFDRCwyQ0FBMkMsK2pCOzs7Ozs7Ozs7Ozs7QUNOOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCx1QkFBdUIsbUJBQU8sQ0FBQyxnRUFBMEI7QUFDekQ7QUFDQTtBQUNBLENBQUM7QUFDRCwyQ0FBMkMsMmY7Ozs7Ozs7Ozs7OztBQ045QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELHVCQUF1QixtQkFBTyxDQUFDLGdFQUEwQjtBQUN6RDtBQUNBO0FBQ0EsQ0FBQztBQUNELDJDQUEyQyx1bEI7Ozs7Ozs7Ozs7OztBQ045QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELGFBQWEsbUJBQU8sQ0FBQyxxQ0FBWTtBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQywyQ0FBZTtBQUN2QyxtQkFBbUIsbUJBQU8sQ0FBQyxpREFBa0I7QUFDN0MsbUJBQW1CLG1CQUFPLENBQUMsaURBQWtCO0FBQzdDLGNBQWMsbUJBQU8sQ0FBQyx1Q0FBYTtBQUNuQyxtQkFBbUIsbUJBQU8sQ0FBQyxpREFBa0I7QUFDN0Msa0JBQWtCLG1CQUFPLENBQUMsK0NBQWlCO0FBQzNDLGdCQUFnQixtQkFBTyxDQUFDLG1DQUFXO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsK3ZDOzs7Ozs7Ozs7Ozs7QUNyQjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsZ0JBQWdCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsK3VGOzs7Ozs7Ozs7Ozs7QUNyQzlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxDQUFDLDhDQUFpQjtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyw0Q0FBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsMi9EOzs7Ozs7Ozs7Ozs7QUN2QjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxDQUFDLDhDQUFpQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQywrZ0o7Ozs7Ozs7Ozs7OztBQzlEOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDLGdCQUFnQixtQkFBTyxDQUFDLDhDQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLDJqRTs7Ozs7Ozs7Ozs7O0FDckI5QjtBQUNiO0FBQ0E7QUFDQSxnREFBZ0QsT0FBTztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGNBQWM7QUFDNUQsZ0JBQWdCLG1CQUFPLENBQUMsOENBQWlCO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLDhDQUFpQjtBQUN4QyxvQkFBb0IsbUJBQU8sQ0FBQyxrREFBZTtBQUMzQyxxQkFBcUIsbUJBQU8sQ0FBQyxvREFBZ0I7QUFDN0MsdUJBQXVCLG1CQUFPLENBQUMsd0RBQWtCO0FBQ2pELHdCQUF3QixtQkFBTyxDQUFDLDBEQUFtQjtBQUNuRCx5QkFBeUIsbUJBQU8sQ0FBQyw0REFBb0I7QUFDckQsWUFBWSxtQkFBTyxDQUFDLHNDQUFhO0FBQ2pDLHFCQUFxQixtQkFBTyxDQUFDLG9EQUFnQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixvQkFBb0I7QUFDbEQ7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msd0JBQXdCO0FBQzFEO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsbXhnQjs7Ozs7Ozs7Ozs7O0FDM005QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEMsdUJBQXVCLG1CQUFPLENBQUMsd0RBQWtCO0FBQ2pELHFCQUFxQixtQkFBTyxDQUFDLG9EQUFnQjtBQUM3QyxxQkFBcUIsbUJBQU8sQ0FBQyxvREFBZ0I7QUFDN0MseUJBQXlCLG1CQUFPLENBQUMsNERBQW9CO0FBQ3JELHVCQUF1QixtQkFBTyxDQUFDLHdEQUFrQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQywyd007Ozs7Ozs7Ozs7OztBQ3hFOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEMscUJBQXFCLG1CQUFPLENBQUMsb0RBQWdCO0FBQzdDLHlCQUF5QixtQkFBTyxDQUFDLDREQUFvQjtBQUNyRCx1QkFBdUIsbUJBQU8sQ0FBQyx3REFBa0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLG1DQUFtQywrQ0FBK0M7QUFDbEY7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsK0JBQStCLHVDQUF1QztBQUN0RTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvQ0FBb0M7QUFDdkU7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQSwrQkFBK0Isb0NBQW9DO0FBQ25FO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsMkJBQTJCLGlDQUFpQztBQUM1RCxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDJCQUEyQixpQ0FBaUM7QUFDNUQsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsKzRqQjs7Ozs7Ozs7Ozs7O0FDak45QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsK3pEOzs7Ozs7Ozs7Ozs7QUMvQjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsK2I7Ozs7Ozs7Ozs7OztBQ045QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsbWdDOzs7Ozs7Ozs7Ozs7QUNqQjlCO0FBQ2I7QUFDQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLHlCQUF5QixVQUFVO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHUvRTs7Ozs7Ozs7Ozs7O0FDeEM5QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELGNBQWMsT0FBVztBQUN6QjtBQUNBLDJDQUEyQyx1VyIsImZpbGUiOiJ3ZVJlcXVlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC50c1wiKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybFBlcmZpeDogY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXgsXG4gICAgICAgIHNlc3Npb25FeHBpcmVUaW1lOiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lLFxuICAgICAgICBzZXNzaW9uRXhwaXJlS2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgIHNlc3Npb25FeHBpcmU6IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVxuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVoyVjBRMjl1Wm1sbkxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDJGd2FTOW5aWFJEYjI1bWFXY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zTUVOQlFXOURPMEZCUlhCRExHMUNRVUZsTzBsQlExZ3NUMEZCVHp0UlFVTklMRk5CUVZNc1JVRkJSU3huUWtGQlRTeERRVUZETEZOQlFWTTdVVUZETTBJc2FVSkJRV2xDTEVWQlFVVXNaMEpCUVUwc1EwRkJReXhwUWtGQmFVSTdVVUZETTBNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVUwc1EwRkJReXhuUWtGQlowSTdVVUZEZWtNc1lVRkJZU3hGUVVGRkxHZENRVUZOTEVOQlFVTXNZVUZCWVR0TFFVTjBReXhEUVVGQk8wRkJRMHdzUTBGQlF5eEZRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhHNXBiWEJ2Y25RZ2MzUmhkSFZ6SUdaeWIyMGdKeTR1TDNOMGIzSmxMM04wWVhSMWN5ZGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdLQ2tnUFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUhWeWJGQmxjbVpwZURvZ1kyOXVabWxuTG5WeWJGQmxjbVpwZUN4Y2JpQWdJQ0FnSUNBZ2MyVnpjMmx2YmtWNGNHbHlaVlJwYldVNklHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxWR2x0WlN4Y2JpQWdJQ0FnSUNBZ2MyVnpjMmx2YmtWNGNHbHlaVXRsZVRvZ1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVkxaWGtzWEc0Z0lDQWdJQ0FnSUhObGMzTnBiMjVGZUhCcGNtVTZJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsWEc0Z0lDQWdmVnh1ZlR0Y2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlYwVTJWemMybHZiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2WjJWMFUyVnpjMmx2Ymk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERCRFFVRnZRenRCUVVWd1F5eHRRa0ZCWlR0SlFVTllMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVRTdRVUZEZWtJc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElITjBZWFIxY3lCbWNtOXRJQ2N1TGk5emRHOXlaUzl6ZEdGMGRYTW5YRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJQ2dwSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYzNSaGRIVnpMbk5sYzNOcGIyNWNibjFjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICBPYmplY3QuYXNzaWduKGNvbmZpZ18xLmRlZmF1bHQsIHBhcmFtcyk7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gd3guZ2V0U3RvcmFnZVN5bmMoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSkgfHwgJyc7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ3d4LmdldFN0b3JhZ2VTeW5jOmZhaWwsIGNhbiBub3QgZ2V0IHNlc3Npb24uJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IHd4LmdldFN0b3JhZ2VTeW5jKGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSB8fCBcInNlc3Npb25FeHBpcmVLZXlcIikgfHwgSW5maW5pdHk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ3d4LmdldFN0b3JhZ2VTeW5jOmZhaWwsIGNhbiBub3QgZ2V0IHNlc3Npb25FeHBpcmUuJyk7XG4gICAgfVxufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVwZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmFXNXBkQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREJEUVVGdlF6dEJRVU53UXl3d1EwRkJiME03UVVGSGNFTXNiVUpCUVdVc1ZVRkJReXhOUVVGdFFqdEpRVU12UWl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExHZENRVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRPVUlzU1VGQlNUdFJRVU5CTEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhYUVVGWkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdTMEZEYWtVN1NVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdFJRVU5TTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc09FTkJRVGhETEVOQlFVTXNRMEZCUVR0TFFVTm9SVHRKUVVORUxFbEJRVWs3VVVGRFFTeG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEdkQ1FVRk5MRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTTdTMEZEZGtjN1NVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdFJRVU5TTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc2IwUkJRVzlFTEVOQlFVTXNRMEZCUVR0TFFVTjBSVHRCUVVOTUxFTkJRVU1zUlVGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQmpiMjVtYVdjZ1puSnZiU0FuTGk0dmMzUnZjbVV2WTI5dVptbG5KMXh1YVcxd2IzSjBJSE4wWVhSMWN5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5emRHRjBkWE1uWEc1cGJYQnZjblFnZXlCSlNXNXBkRTl3ZEdsdmJpQjlJR1p5YjIwZ0p5NHVMMmx1ZEdWeVptRmpaU2RjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnS0hCaGNtRnRjem9nU1VsdWFYUlBjSFJwYjI0cElEMCtJSHRjYmlBZ0lDQlBZbXBsWTNRdVlYTnphV2R1S0dOdmJtWnBaeXdnY0dGeVlXMXpLVHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNCemRHRjBkWE11YzJWemMybHZiaUE5SUhkNExtZGxkRk4wYjNKaFoyVlRlVzVqS0dOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlNFcElIeDhJQ2NuTzF4dUlDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWduZDNndVoyVjBVM1J2Y21GblpWTjVibU02Wm1GcGJDd2dZMkZ1SUc1dmRDQm5aWFFnYzJWemMybHZiaTRuS1Z4dUlDQWdJSDFjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNCemRHRjBkWE11YzJWemMybHZia1Y0Y0dseVpTQTlJSGQ0TG1kbGRGTjBiM0poWjJWVGVXNWpLR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsUzJWNUlIeDhJRndpYzJWemMybHZia1Y0Y0dseVpVdGxlVndpS1NCOGZDQkpibVpwYm1sMGVUdGNiaUFnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5OdmJHVXVaWEp5YjNJb0ozZDRMbWRsZEZOMGIzSmhaMlZUZVc1ak9tWmhhV3dzSUdOaGJpQnViM1FnWjJWMElITmxjM05wYjI1RmVIQnBjbVV1SnlsY2JpQWdJQ0I5WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQubWFpbigpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liRzluYVc0dWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12WVhCcEwyeHZaMmx1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTWtSQlFYRkVPMEZCUlhKRUxHMUNRVUZsTzBsQlExZ3NUMEZCVHl4M1FrRkJZeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZCTzBGQlEyaERMRU5CUVVNc1JVRkJRU0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0J6WlhOemFXOXVUV0Z1WVdkbGNpQm1jbTl0SUNjdUxpOXRiMlIxYkdVdmMyVnpjMmx2YmsxaGJtRm5aWEluWEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNncElEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2MyVnpjMmx2YmsxaGJtRm5aWEl1YldGcGJpZ3BYRzU5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4uL21vZHVsZS9yZXF1ZXN0SGFuZGxlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC5yZXF1ZXN0KG9iaik7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtVnhkV1Z6ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmNtVnhkV1Z6ZEM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERKRVFVRnhSRHRCUVVkeVJDeHRRa0ZCWlN4VlFVRkRMRWRCUVcxQ08wbEJReTlDTEU5QlFVOHNkMEpCUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdRVUZEZEVNc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR1TDIxdlpIVnNaUzl5WlhGMVpYTjBTR0Z1Wkd4bGNpZGNibWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUlIMGdabkp2YlNBbkxpNHZhVzUwWlhKbVlXTmxKMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0FvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlrZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCeVpYRjFaWE4wU0dGdVpHeGxjaTV5WlhGMVpYTjBLRzlpYWlsY2JuMWNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3Nlc3Npb25NYW5hZ2VyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChzZXNzaW9uKSB7XG4gICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0LnNldFNlc3Npb24oc2Vzc2lvbik7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVjBVMlZ6YzJsdmJpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZjMlYwVTJWemMybHZiaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREpFUVVGeFJEdEJRVVZ5UkN4dFFrRkJaU3hWUVVGRExFOUJRV1U3U1VGRE0wSXNkMEpCUVdNc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEZGtNc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElITmxjM05wYjI1TllXNWhaMlZ5SUdaeWIyMGdKeTR1TDIxdlpIVnNaUzl6WlhOemFXOXVUV0Z1WVdkbGNpZGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdLSE5sYzNOcGIyNDZJSE4wY21sdVp5a2dQVDRnZTF4dUlDQWdJSE5sYzNOcGIyNU5ZVzVoWjJWeUxuTmxkRk5sYzNOcGIyNG9jMlZ6YzJsdmJpazdYRzU5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4uL21vZHVsZS9yZXF1ZXN0SGFuZGxlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC51cGxvYWRGaWxlKG9iaik7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYQnNiMkZrUm1sc1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZkWEJzYjJGa1JtbHNaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREpFUVVGeFJEdEJRVWR5UkN4dFFrRkJaU3hWUVVGRExFZEJRWE5DTzBsQlEyeERMRTlCUVU4c2QwSkJRV01zUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVFN1FVRkRla01zUTBGQlF5eEZRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhKbGNYVmxjM1JJWVc1a2JHVnlJR1p5YjIwZ0p5NHVMMjF2WkhWc1pTOXlaWEYxWlhOMFNHRnVaR3hsY2lkY2JtbHRjRzl5ZENCN0lFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUlIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpTzF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENBb2IySnFPaUJKVlhCc2IyRmtSbWxzWlU5d2RHbHZiaWtnUFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJ5WlhGMVpYTjBTR0Z1Wkd4bGNpNTFjR3h2WVdSR2FXeGxLRzlpYWlsY2JuMWNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGluaXRfMSA9IHJlcXVpcmUoXCIuL2FwaS9pbml0XCIpO1xudmFyIHJlcXVlc3RfMSA9IHJlcXVpcmUoXCIuL2FwaS9yZXF1ZXN0XCIpO1xudmFyIHVwbG9hZEZpbGVfMSA9IHJlcXVpcmUoXCIuL2FwaS91cGxvYWRGaWxlXCIpO1xudmFyIHNldFNlc3Npb25fMSA9IHJlcXVpcmUoXCIuL2FwaS9zZXRTZXNzaW9uXCIpO1xudmFyIGxvZ2luXzEgPSByZXF1aXJlKFwiLi9hcGkvbG9naW5cIik7XG52YXIgZ2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL2dldFNlc3Npb25cIik7XG52YXIgZ2V0Q29uZmlnXzEgPSByZXF1aXJlKFwiLi9hcGkvZ2V0Q29uZmlnXCIpO1xudmFyIHZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIik7XG52YXIgd2VSZXF1ZXN0T2JqZWN0ID0ge1xuICAgIGluaXQ6IGluaXRfMS5kZWZhdWx0LFxuICAgIHJlcXVlc3Q6IHJlcXVlc3RfMS5kZWZhdWx0LFxuICAgIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGVfMS5kZWZhdWx0LFxuICAgIHNldFNlc3Npb246IHNldFNlc3Npb25fMS5kZWZhdWx0LFxuICAgIGxvZ2luOiBsb2dpbl8xLmRlZmF1bHQsXG4gICAgZ2V0U2Vzc2lvbjogZ2V0U2Vzc2lvbl8xLmRlZmF1bHQsXG4gICAgZ2V0Q29uZmlnOiBnZXRDb25maWdfMS5kZWZhdWx0LFxuICAgIHZlcnNpb246IHZlcnNpb25fMS52ZXJzaW9uXG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gd2VSZXF1ZXN0T2JqZWN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYVc1a1pYZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOXpjbU12YVc1a1pYZ3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeHRRMEZCTmtJN1FVRkROMElzZVVOQlFXMURPMEZCUTI1RExDdERRVUY1UXp0QlFVTjZReXdyUTBGQmVVTTdRVUZEZWtNc2NVTkJRU3RDTzBGQlF5OUNMQ3REUVVGNVF6dEJRVU42UXl3MlEwRkJkVU03UVVGRmRrTXNjVU5CUVcxRE8wRkJSVzVETEVsQlFVMHNaVUZCWlN4SFFVRmpPMGxCUTJwRExFbEJRVWtzWjBKQlFVRTdTVUZEU2l4UFFVRlBMRzFDUVVGQk8wbEJRMUFzVlVGQlZTeHpRa0ZCUVR0SlFVTldMRlZCUVZVc2MwSkJRVUU3U1VGRFZpeExRVUZMTEdsQ1FVRkJPMGxCUTB3c1ZVRkJWU3h6UWtGQlFUdEpRVU5XTEZOQlFWTXNjVUpCUVVFN1NVRkRWQ3hQUVVGUExHMUNRVUZCTzBOQlExSXNRMEZCUXp0QlFVVkdMR3RDUVVGbExHVkJRV1VzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQnBibWwwSUdaeWIyMGdYQ0l1TDJGd2FTOXBibWwwWENKY2JtbHRjRzl5ZENCeVpYRjFaWE4wSUdaeWIyMGdYQ0l1TDJGd2FTOXlaWEYxWlhOMFhDSmNibWx0Y0c5eWRDQjFjR3h2WVdSR2FXeGxJR1p5YjIwZ1hDSXVMMkZ3YVM5MWNHeHZZV1JHYVd4bFhDSmNibWx0Y0c5eWRDQnpaWFJUWlhOemFXOXVJR1p5YjIwZ1hDSXVMMkZ3YVM5elpYUlRaWE56YVc5dVhDSmNibWx0Y0c5eWRDQnNiMmRwYmlCbWNtOXRJRndpTGk5aGNHa3ZiRzluYVc1Y0lseHVhVzF3YjNKMElHZGxkRk5sYzNOcGIyNGdabkp2YlNCY0lpNHZZWEJwTDJkbGRGTmxjM05wYjI1Y0lseHVhVzF3YjNKMElHZGxkRU52Ym1acFp5Qm1jbTl0SUZ3aUxpOWhjR2t2WjJWMFEyOXVabWxuWENKY2JtbHRjRzl5ZENCN0lIZGxVbVZ4ZFdWemRDQjlJR1p5YjIwZ1hDSXVMMmx1ZEdWeVptRmpaVndpWEc1cGJYQnZjblFnZXlCMlpYSnphVzl1SUgwZ1puSnZiU0FuTGk5MlpYSnphVzl1SjF4dVhHNWpiMjV6ZENCM1pWSmxjWFZsYzNSUFltcGxZM1E2SUhkbFVtVnhkV1Z6ZENBOUlIdGNiaUFnYVc1cGRDeGNiaUFnY21WeGRXVnpkQ3hjYmlBZ2RYQnNiMkZrUm1sc1pTeGNiaUFnYzJWMFUyVnpjMmx2Yml4Y2JpQWdiRzluYVc0c1hHNGdJR2RsZEZObGMzTnBiMjRzWEc0Z0lHZGxkRU52Ym1acFp5eGNiaUFnZG1WeWMybHZibHh1ZlR0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2QyVlNaWEYxWlhOMFQySnFaV04wTzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGdldChvYmopIHtcbiAgICBpZiAoIW9iai5vcmlnaW5VcmwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3eC5nZXRTdG9yYWdlKHtcbiAgICAgICAga2V5OiBvYmoub3JpZ2luVXJsLFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICBpZiAob2JqLmNhY2hlID09PSB0cnVlIHx8XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBvYmouY2FjaGUgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY2FjaGUocmVzLmRhdGEpKSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouc3VjY2VzcyhyZXMuZGF0YSwgeyBpc0NhY2hlOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLmNvbXBsZXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBvYmouY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gc2V0KG9iaiwgcmVhbERhdGEpIHtcbiAgICBpZiAoIW9iai5vcmlnaW5VcmwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob2JqLmNhY2hlID09PSB0cnVlIHx8XG4gICAgICAgICh0eXBlb2Ygb2JqLmNhY2hlID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNhY2hlKHJlYWxEYXRhKSkpIHtcbiAgICAgICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgICAgICBrZXk6IG9iai5vcmlnaW5VcmwsXG4gICAgICAgICAgICBkYXRhOiByZWFsRGF0YVxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgZ2V0OiBnZXQsXG4gICAgc2V0OiBzZXRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMkZqYUdWTllXNWhaMlZ5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWpZV05vWlUxaGJtRm5aWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkZRU3hUUVVGVExFZEJRVWNzUTBGQlF5eEhRVUZ0UWp0SlFVTTFRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNSVUZCUlR0UlFVTm9RaXhQUVVGUE8wdEJRMVk3U1VGRFJDeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTFZc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eFRRVUZUTzFGQlEyeENMRTlCUVU4c1dVRkJSU3hIUVVGSE8xbEJRMUlzU1VGRFNTeEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrN1owSkJRMnhDTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExGVkJRVlVzU1VGQlNTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVU14UkR0blFrRkRSU3hKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEU5QlFVOHNTMEZCU3l4VlFVRlZMRVZCUVVVN2IwSkJRMjVETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRVZCUVVNc1EwRkJReXhEUVVGQk8ybENRVU42UXp0aFFVTktPMWxCUTBRc1NVRkJSeXhQUVVGUExFZEJRVWNzUTBGQlF5eFJRVUZSTEV0QlFVc3NWVUZCVlN4RlFVRkZPMmRDUVVOdVF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1lVRkRiRUk3VVVGRFRDeERRVUZETzB0QlEwb3NRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVWRUxGTkJRVk1zUjBGQlJ5eERRVUZETEVkQlFXMUNMRVZCUVVjc1VVRkJlVUk3U1VGRGVFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFVkJRVVU3VVVGRGFFSXNUMEZCVHp0TFFVTldPMGxCUTBRc1NVRkRTU3hIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEVsQlFVazdVVUZEYkVJc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eExRVUZMTEV0QlFVc3NWVUZCVlN4SlFVRkpMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNSVUZETVVRN1VVRkRSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzFsQlExWXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhUUVVGVE8xbEJRMnhDTEVsQlFVa3NSVUZCUlN4UlFVRlJPMU5CUTJwQ0xFTkJRVU1zUTBGQlFUdExRVU5NTzBGQlEwd3NRMEZCUXp0QlFVVkVMR3RDUVVGbE8wbEJRMWdzUjBGQlJ5eExRVUZCTzBsQlEwZ3NSMEZCUnl4TFFVRkJPME5CUTA0c1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUVsU1pYRjFaWE4wVDNCMGFXOXVJSDBnWm5KdmJTQmNJaTR1TDJsdWRHVnlabUZqWlZ3aVhHNWNibVoxYm1OMGFXOXVJR2RsZENodlltbzZJRWxTWlhGMVpYTjBUM0IwYVc5dUtTQjdYRzRnSUNBZ2FXWWdLQ0Z2WW1vdWIzSnBaMmx1VlhKc0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOVhHNGdJQ0FnZDNndVoyVjBVM1J2Y21GblpTaDdYRzRnSUNBZ0lDQWdJR3RsZVRvZ2IySnFMbTl5YVdkcGJsVnliQ3hjYmlBZ0lDQWdJQ0FnYzNWalkyVnpjeUFvY21WektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMkpxTG1OaFkyaGxJRDA5UFNCMGNuVmxJSHg4WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS0hSNWNHVnZaaUJ2WW1vdVkyRmphR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCdlltb3VZMkZqYUdVb2NtVnpMbVJoZEdFcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91YzNWalkyVnpjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOWlhaTV6ZFdOalpYTnpLSEpsY3k1a1lYUmhMQ0I3YVhORFlXTm9aVG9nZEhKMVpYMHBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZb2RIbHdaVzltSUc5aWFpNWpiMjF3YkdWMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMkpxTG1OdmJYQnNaWFJsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5S1Z4dWZWeHVYRzVtZFc1amRHbHZiaUJ6WlhRb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpQXNJSEpsWVd4RVlYUmhPaUJ6ZEhKcGJtY2dmQ0J2WW1wbFkzUXBJSHRjYmlBZ0lDQnBaaUFvSVc5aWFpNXZjbWxuYVc1VmNtd3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9YRzRnSUNBZ0lDQWdJRzlpYWk1allXTm9aU0E5UFQwZ2RISjFaU0I4ZkZ4dUlDQWdJQ0FnSUNBb2RIbHdaVzltSUc5aWFpNWpZV05vWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlHOWlhaTVqWVdOb1pTaHlaV0ZzUkdGMFlTa3BYRzRnSUNBZ0tTQjdYRzRnSUNBZ0lDQWdJSGQ0TG5ObGRGTjBiM0poWjJVb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYTJWNU9pQnZZbW91YjNKcFoybHVWWEpzTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaR0YwWVRvZ2NtVmhiRVJoZEdGY2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJSHRjYmlBZ0lDQm5aWFFzWEc0Z0lDQWdjMlYwWEc1OU8xeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHJlcXVlc3RfMSA9IHJlcXVpcmUoXCIuLi9hcGkvcmVxdWVzdFwiKTtcbmZ1bmN0aW9uIHN0YXJ0KG9iaikge1xuICAgIG9iai5fcmVwb3J0U3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG59XG5mdW5jdGlvbiBlbmQob2JqKSB7XG4gICAgb2JqLl9yZXBvcnRFbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgaWYgKG9iai5yZXBvcnQgJiYgb2JqLl9yZXBvcnRTdGFydFRpbWUpIHtcbiAgICAgICAgcmVwb3J0KG9iai5yZXBvcnQsIG9iai5fcmVwb3J0U3RhcnRUaW1lLCBvYmouX3JlcG9ydEVuZFRpbWUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlcG9ydChuYW1lLCBzdGFydFRpbWUsIGVuZFRpbWUpIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQucmVwb3J0Q0dJID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0kobmFtZSwgc3RhcnRUaW1lLCBlbmRUaW1lLCByZXF1ZXN0XzEuZGVmYXVsdCk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbmQ6IGVuZCxcbiAgICByZXBvcnQ6IHJlcG9ydFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpIVnlZWFJwYjI1U1pYQnZjblJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTl0YjJSMWJHVXZaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVTndReXd3UTBGQmIwTTdRVUZIY0VNc1UwRkJVeXhMUVVGTExFTkJRVU1zUjBGQmRVTTdTVUZEYkVRc1IwRkJSeXhEUVVGRExHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYUVRc1EwRkJRenRCUVVWRUxGTkJRVk1zUjBGQlJ5eERRVUZETEVkQlFYVkRPMGxCUTJoRUxFZEJRVWNzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU14UXl4SlFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhGUVVGRk8xRkJRMjVETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJaMElzUlVGQlJTeEhRVUZITEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzUjBGQlJ5eERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRPMHRCUXpGRk8wRkJRMHdzUTBGQlF6dEJRVVZFTEZOQlFWTXNUVUZCVFN4RFFVRkRMRWxCUVZrc1JVRkJSU3hUUVVGcFFpeEZRVUZGTEU5QlFXVTdTVUZETlVRc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNVMEZCVXl4TFFVRkxMRlZCUVZVc1JVRkJSVHRSUVVONFF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4cFFrRkJUeXhEUVVGRExFTkJRVU03UzBGRGRrUTdRVUZEVEN4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeExRVUZMTEU5QlFVRTdTVUZEVEN4SFFVRkhMRXRCUVVFN1NVRkRTQ3hOUVVGTkxGRkJRVUU3UTBGRFZDeERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhHNXBiWEJ2Y25RZ2NtVnhkV1Z6ZENCbWNtOXRJQ2N1TGk5aGNHa3ZjbVZ4ZFdWemRDZGNibWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUxDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpQjlJR1p5YjIwZ1hDSXVMaTlwYm5SbGNtWmhZMlZjSWp0Y2JseHVablZ1WTNScGIyNGdjM1JoY25Rb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpQjhJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVLU0I3WEc0Z0lDQWdiMkpxTGw5eVpYQnZjblJUZEdGeWRGUnBiV1VnUFNCdVpYY2dSR0YwWlNncExtZGxkRlJwYldVb0tUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pXNWtLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRnZkNCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlrZ2UxeHVJQ0FnSUc5aWFpNWZjbVZ3YjNKMFJXNWtWR2x0WlNBOUlHNWxkeUJFWVhSbEtDa3VaMlYwVkdsdFpTZ3BPMXh1SUNBZ0lHbG1LRzlpYWk1eVpYQnZjblFnSmlZZ2IySnFMbDl5WlhCdmNuUlRkR0Z5ZEZScGJXVXBJSHRjYmlBZ0lDQWdJQ0FnY21Wd2IzSjBLRzlpYWk1eVpYQnZjblFnWVhNZ2MzUnlhVzVuTENCdlltb3VYM0psY0c5eWRGTjBZWEowVkdsdFpTd2diMkpxTGw5eVpYQnZjblJGYm1SVWFXMWxLVHRjYmlBZ0lDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlISmxjRzl5ZENodVlXMWxPaUJ6ZEhKcGJtY3NJSE4wWVhKMFZHbHRaVG9nYm5WdFltVnlMQ0JsYm1SVWFXMWxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NXlaWEJ2Y25SRFIwa2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1bWFXY3VjbVZ3YjNKMFEwZEpLRzVoYldVc0lITjBZWEowVkdsdFpTd2daVzVrVkdsdFpTd2djbVZ4ZFdWemRDazdYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEc0Z0lDQWdjM1JoY25Rc1hHNGdJQ0FnWlc1a0xGeHVJQ0FnSUhKbGNHOXlkRnh1ZlZ4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG5mdW5jdGlvbiBzeXN0ZW1FcnJvcihvYmosIHJlcykge1xuICAgIGlmICh0eXBlb2Ygb2JqLmZhaWwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmouZmFpbChyZXMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZG9FcnJvcihcIlwiLCByZXMuZXJyTXNnKTtcbiAgICB9XG59XG5mdW5jdGlvbiBsb2dpY0Vycm9yKG9iaiwgcmVzKSB7XG4gICAgaWYgKHR5cGVvZiBvYmouZmFpbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iai5mYWlsKHJlcyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgX2EgPSBnZXRFcnJvck1zZyhyZXMpLCB0aXRsZSA9IF9hLnRpdGxlLCBjb250ZW50ID0gX2EuY29udGVudDtcbiAgICAgICAgZG9FcnJvcih0aXRsZSwgY29udGVudCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvckNhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5lcnJvckNhbGxiYWNrKG9iaiwgcmVzKTtcbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihyZXMpO1xufVxuZnVuY3Rpb24gZ2V0RXJyb3JNc2cocmVzKSB7XG4gICAgdmFyIHRpdGxlID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aXRsZSA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZShyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRpdGxlID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlO1xuICAgIH1cbiAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb250ZW50ID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvckNvbnRlbnQocmVzLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGNvbnRlbnQgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudDtcbiAgICB9XG4gICAgcmV0dXJuIHsgdGl0bGU6IHRpdGxlLCBjb250ZW50OiBjb250ZW50IH07XG59XG5mdW5jdGlvbiBkb0Vycm9yKHRpdGxlLCBjb250ZW50KSB7XG4gICAgd3guc2hvd01vZGFsKHtcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICBjb250ZW50OiBjb250ZW50IHx8IFwi572R57uc5oiW5pyN5Yqh5byC5bi477yM6K+356iN5ZCO6YeN6K+VXCIsXG4gICAgICAgIHNob3dDYW5jZWw6IGZhbHNlXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgc3lzdGVtRXJyb3I6IHN5c3RlbUVycm9yLFxuICAgIGxvZ2ljRXJyb3I6IGxvZ2ljRXJyb3IsXG4gICAgZG9FcnJvcjogZG9FcnJvcixcbiAgICBnZXRFcnJvck1zZzogZ2V0RXJyb3JNc2dcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laWEp5YjNKSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWxjbkp2Y2toaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZIY0VNc1UwRkJVeXhYUVVGWExFTkJRVU1zUjBGQmRVTXNSVUZCUlN4SFFVRTJRanRKUVVOMlJpeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRWxCUVVrc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRGFFTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU5xUWp0VFFVRk5PMUZCUTBnc1QwRkJUeXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRNMEk3UVVGRFRDeERRVUZETzBGQlJVUXNVMEZCVXl4VlFVRlZMRU5CUVVNc1IwRkJkVU1zUlVGQlJTeEhRVUY1UlR0SlFVTnNTU3hKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVsQlFVa3NTMEZCU3l4VlFVRlZMRVZCUVVVN1VVRkRhRU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOcVFqdFRRVUZOTzFGQlEwY3NTVUZCUVN4eFFrRkJiVU1zUlVGQmJFTXNaMEpCUVVzc1JVRkJSU3h2UWtGQk1rSXNRMEZCUXp0UlFVTXhReXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUXpOQ08wbEJSMFFzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU0xUXl4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRiRU03U1VGRlJDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJRM1pDTEVOQlFVTTdRVUZGUkN4VFFVRlRMRmRCUVZjc1EwRkJReXhIUVVGNVJUdEpRVU14Uml4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRFppeEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhWUVVGVkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEzcERMRWxCUVVrN1dVRkRRU3hMUVVGTExFZEJRVWNzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZCTzFOQlEzUkRPMUZCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3VTBGRFdEdExRVU5LTzFOQlFVMHNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeExRVUZMTEZGQlFWRXNSVUZCUlR0UlFVTTVReXhMUVVGTExFZEJRVWNzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNN1MwRkROMEk3U1VGRlJDeEpRVUZKTEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRha0lzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1dVRkJXU3hMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU16UXl4SlFVRkpPMWxCUTBFc1QwRkJUeXhIUVVGSExHZENRVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlFUdFRRVU14UXp0UlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xTkJRMWc3UzBGRFNqdFRRVUZOTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExGbEJRVmtzUzBGQlN5eFJRVUZSTEVWQlFVVTdVVUZEYUVRc1QwRkJUeXhIUVVGSExHZENRVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRPMHRCUTJwRE8wbEJSVVFzVDBGQlR5eEZRVUZETEV0QlFVc3NUMEZCUVN4RlFVRkZMRTlCUVU4c1UwRkJRU3hGUVVGRExFTkJRVUU3UVVGRE0wSXNRMEZCUXp0QlFVVkVMRk5CUVZNc1QwRkJUeXhEUVVGRExFdEJRV0VzUlVGQlJTeFBRVUZsTzBsQlF6TkRMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU03VVVGRFZDeExRVUZMTEU5QlFVRTdVVUZEVEN4UFFVRlBMRVZCUVVVc1QwRkJUeXhKUVVGSkxHVkJRV1U3VVVGRGJrTXNWVUZCVlN4RlFVRkZMRXRCUVVzN1MwRkRjRUlzUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMR3RDUVVGbE8wbEJRMWdzVjBGQlZ5eGhRVUZCTzBsQlExZ3NWVUZCVlN4WlFVRkJPMGxCUTFZc1QwRkJUeXhUUVVGQk8wbEJRMUFzVjBGQlZ5eGhRVUZCTzBOQlEyUXNRMEZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCamIyNW1hV2NnWm5KdmJTQW5MaTR2YzNSdmNtVXZZMjl1Wm1sbkoxeHVhVzF3YjNKMElIc2dTVkpsY1hWbGMzUlBjSFJwYjI0c0lFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUlIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpTzF4dVhHNW1kVzVqZEdsdmJpQnplWE4wWlcxRmNuSnZjaWh2WW1vNklFbFNaWEYxWlhOMFQzQjBhVzl1SUh3Z1NWVndiRzloWkVacGJHVlBjSFJwYjI0c0lISmxjem9nZDNndVIyVnVaWEpoYkVOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdVptRnBiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNW1ZV2xzS0hKbGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1pHOUZjbkp2Y2loY0lsd2lMQ0J5WlhNdVpYSnlUWE5uS1R0Y2JpQWdJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJR3h2WjJsalJYSnliM0lvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlCOElFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUxDQnlaWE02SUhkNExsSmxjWFZsYzNSVGRXTmpaWE56UTJGc2JHSmhZMnRTWlhOMWJIUWdmQ0IzZUM1VmNHeHZZV1JHYVd4bFUzVmpZMlZ6YzBOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdVptRnBiQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNW1ZV2xzS0hKbGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnZTNScGRHeGxMQ0JqYjI1MFpXNTBmU0E5SUdkbGRFVnljbTl5VFhObktISmxjeWs3WEc0Z0lDQWdJQ0FnSUdSdlJYSnliM0lvZEdsMGJHVXNJR052Ym5SbGJuUXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJT1dtZ3VhZW5PYWNpZW1GamVlOXJ1ZTduK1M0Z09tVW1laXZyK1dibnVpd2crV0h2ZWFWc08rOGpPV0ltZWFKcCtpaGpPV3VnMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtVnljbTl5UTJGc2JHSmhZMnNnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCamIyNW1hV2N1WlhKeWIzSkRZV3hzWW1GamF5aHZZbW9zSUhKbGN5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjMjlzWlM1bGNuSnZjaWh5WlhNcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCblpYUkZjbkp2Y2sxelp5aHlaWE02SUhkNExsSmxjWFZsYzNSVGRXTmpaWE56UTJGc2JHSmhZMnRTWlhOMWJIUWdmQ0IzZUM1VmNHeHZZV1JHYVd4bFUzVmpZMlZ6YzBOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdiR1YwSUhScGRHeGxJRDBnWENKY0lqdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1bGNuSnZjbFJwZEd4bElEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJwZEd4bElEMGdZMjl1Wm1sbkxtVnljbTl5VkdsMGJHVW9jbVZ6TG1SaGRHRXBYRzRnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVsY25KdmNsUnBkR3hsSUQwOVBTQmNJbk4wY21sdVoxd2lLU0I3WEc0Z0lDQWdJQ0FnSUhScGRHeGxJRDBnWTI5dVptbG5MbVZ5Y205eVZHbDBiR1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUdOdmJuUmxiblFnUFNCY0lsd2lPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtVnljbTl5UTI5dWRHVnVkQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNTBaVzUwSUQwZ1kyOXVabWxuTG1WeWNtOXlRMjl1ZEdWdWRDaHlaWE11WkdGMFlTbGNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MbVZ5Y205eVEyOXVkR1Z1ZENBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnZTF4dUlDQWdJQ0FnSUNCamIyNTBaVzUwSUQwZ1kyOXVabWxuTG1WeWNtOXlRMjl1ZEdWdWREdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZTNScGRHeGxMQ0JqYjI1MFpXNTBmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmtiMFZ5Y205eUtIUnBkR3hsT2lCemRISnBibWNzSUdOdmJuUmxiblE2SUhOMGNtbHVaeWtnZTF4dUlDQWdJSGQ0TG5Ob2IzZE5iMlJoYkNoN1hHNGdJQ0FnSUNBZ0lIUnBkR3hsTEZ4dUlDQWdJQ0FnSUNCamIyNTBaVzUwT2lCamIyNTBaVzUwSUh4OElGd2k1NzJSNTd1YzVvaVc1cHlONVlxaDVieUM1Ymk0Nzd5TTZLKzM1NmlONVpDTzZZZU42SytWWENJc1hHNGdJQ0FnSUNBZ0lITm9iM2REWVc1alpXdzZJR1poYkhObFhHNGdJQ0FnZlNsY2JuMWNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdlMXh1SUNBZ0lITjVjM1JsYlVWeWNtOXlMRnh1SUNBZ0lHeHZaMmxqUlhKeWIzSXNYRzRnSUNBZ1pHOUZjbkp2Y2l4Y2JpQWdJQ0JuWlhSRmNuSnZjazF6WjF4dWZWeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIGxvYWRpbmdfMSA9IHJlcXVpcmUoXCIuLi91dGlsL2xvYWRpbmdcIik7XG5mdW5jdGlvbiBnZXQob2JqKSB7XG4gICAgaWYgKCEoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoudXJsXSB8fCAob2JqLm9yaWdpblVybCAmJiBjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai5vcmlnaW5VcmxdKSkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignbW9jayDmsqHmnInlr7nlupTmjqXlj6PnmoTmlbDmja4nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgZGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLnVybF0gfHwgKG9iai5vcmlnaW5VcmwgPyBjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai5vcmlnaW5VcmxdIDogJycpO1xuICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBzdGF0dXNDb2RlOiAyMDBcbiAgICB9O1xuICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcbiAgICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIGdldDogZ2V0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYlc5amEwMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMMjF2WTJ0TllXNWhaMlZ5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTUVOQlFXOURPMEZCUTNCRExESkRRVUZ4UXp0QlFVZHlReXhUUVVGVExFZEJRVWNzUTBGQlF5eEhRVUYxUXp0SlFVVm9SQ3hKUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhKUVVGSkxHZENRVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdVVUZGYWtZc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRMmhETEU5QlFVOHNTMEZCU3l4RFFVRkRPMHRCUTJoQ08wbEJSVVFzU1VGQlNTeEpRVUZKTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNaMEpCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVVUzUml4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFTXNTVUZCVFN4SFFVRkhMRWRCUVVjN1VVRkRVaXhKUVVGSkxFMUJRVUU3VVVGRFNpeFZRVUZWTEVWQlFVVXNSMEZCUnp0TFFVTnNRaXhEUVVGRE8wbEJSVVlzYVVKQlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRKUVVObUxFOUJRVThzUjBGQlJ5eERRVUZCTzBGQlEyUXNRMEZCUXp0QlFVVkVMR3RDUVVGbE8wbEJRMWdzUjBGQlJ5eExRVUZCTzBOQlEwNHNRMEZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCamIyNW1hV2NnWm5KdmJTQW5MaTR2YzNSdmNtVXZZMjl1Wm1sbkoxeHVhVzF3YjNKMElHeHZZV1JwYm1jZ1puSnZiU0FuTGk0dmRYUnBiQzlzYjJGa2FXNW5KMXh1YVcxd2IzSjBJSHNnU1ZKbGNYVmxjM1JQY0hScGIyNHNJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVJSDBnWm5KdmJTQmNJaTR1TDJsdWRHVnlabUZqWlZ3aVhHNWNibVoxYm1OMGFXOXVJR2RsZENodlltbzZJRWxTWlhGMVpYTjBUM0IwYVc5dUlId2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBPaUJoYm5rZ2UxeHVYRzRnSUNBZ2FXWW9JU2hqYjI1bWFXY3ViVzlqYTBwemIyNWJiMkpxTG5WeWJGMGdmSHdnS0c5aWFpNXZjbWxuYVc1VmNtd2dKaVlnWTI5dVptbG5MbTF2WTJ0S2MyOXVXMjlpYWk1dmNtbG5hVzVWY214ZEtTa3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z2JXOWpheURtc3FIbW5JbmxyN25sdXBUbWpxWGxqNlBubW9UbWxiRG1qYTVjYmlBZ0lDQWdJQ0FnWTI5dWMyOXNaUzVsY25KdmNpZ25iVzlqYXlEbXNxSG1uSW5scjdubHVwVG1qcVhsajZQbm1vVG1sYkRtamE0bktUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCa1lYUmhJRDBnWTI5dVptbG5MbTF2WTJ0S2MyOXVXMjlpYWk1MWNteGRJSHg4SUNodlltb3ViM0pwWjJsdVZYSnNJRDhnWTI5dVptbG5MbTF2WTJ0S2MyOXVXMjlpYWk1dmNtbG5hVzVWY214ZElEb2dKeWNwTzF4dUlDQWdJQzh2SUdSbFpYQWdZMjl3ZVZ4dUlDQWdJR1JoZEdFZ1BTQktVMDlPTG5CaGNuTmxLRXBUVDA0dWMzUnlhVzVuYVdaNUtHUmhkR0VwS1R0Y2JpQWdJQ0JqYjI1emRDQnlaWE1nUFNCN1hHNGdJQ0FnSUNBZ0lHUmhkR0VzWEc0Z0lDQWdJQ0FnSUhOMFlYUjFjME52WkdVNklESXdNRnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQnNiMkZrYVc1bkxtaHBaR1VvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6WEc1OVhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElIdGNiaUFnSUNCblpYUmNibjFjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xudmFyIG1vY2tNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9tb2NrTWFuYWdlclwiKTtcbnZhciBjYWNoZU1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL2NhY2hlTWFuYWdlclwiKTtcbnZhciBzZXNzaW9uTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vc2Vzc2lvbk1hbmFnZXJcIik7XG52YXIgcmVzcG9uc2VIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXNwb25zZUhhbmRsZXJcIik7XG52YXIgZHVyYXRpb25SZXBvcnRlcl8xID0gcmVxdWlyZShcIi4vZHVyYXRpb25SZXBvcnRlclwiKTtcbnZhciB1cmxfMSA9IHJlcXVpcmUoXCIuLi91dGlsL3VybFwiKTtcbnZhciBlcnJvckhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2Vycm9ySGFuZGxlclwiKTtcbmZ1bmN0aW9uIGZvcm1hdChvcmlnaW5VcmwpIHtcbiAgICBpZiAob3JpZ2luVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICByZXR1cm4gb3JpZ2luVXJsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHVybFBlcmZpeCA9IGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4O1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHVybFBlcmZpeCA9IGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVybFBlcmZpeCArIG9yaWdpblVybDtcbiAgICB9XG59XG5mdW5jdGlvbiBwcmVEbyhvYmopIHtcbiAgICBpZiAodHlwZW9mIG9iai5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmJlZm9yZVNlbmQoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmoucmVMb2dpbkNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9iai5yZUxvZ2luQ291bnQgPSAwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqLnJlTG9naW5Db3VudCsrO1xuICAgIH1cbiAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LnNob3cob2JqLnNob3dMb2FkaW5nKTtcbiAgICB9XG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XG4gICAgICAgIG9iai5vcmlnaW5VcmwgPSBvYmoudXJsO1xuICAgICAgICBvYmoudXJsID0gZm9ybWF0KG9iai51cmwpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gaW5pdGlhbGl6ZVJlcXVlc3RPYmoob2JqKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIW9iai5kYXRhKSB7XG4gICAgICAgIG9iai5kYXRhID0ge307XG4gICAgfVxuICAgIGlmIChvYmoub3JpZ2luVXJsICE9PSBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24udXJsICYmIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xuICAgICAgICBvYmouZGF0YSA9IF9fYXNzaWduKHt9LCBvYmouZGF0YSwgKF9hID0ge30sIF9hW2NvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbk5hbWVdID0gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uLCBfYSkpO1xuICAgIH1cbiAgICB2YXIgZ2QgPSBnZXRHbG9iYWxEYXRhKCk7XG4gICAgb2JqLmRhdGEgPSBfX2Fzc2lnbih7fSwgZ2QsIG9iai5kYXRhKTtcbiAgICBvYmoubWV0aG9kID0gb2JqLm1ldGhvZCB8fCAnR0VUJztcbiAgICBvYmouZGF0YVR5cGUgPSBvYmouZGF0YVR5cGUgfHwgJ2pzb24nO1xuICAgIGlmIChvYmoubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgICAgIG9iai51cmwgPSB1cmxfMS5kZWZhdWx0LnNldFBhcmFtcyhvYmoudXJsLCAoX2IgPSB7fSwgX2JbY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZV0gPSBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24sIF9iKSk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIGdkKTtcbiAgICB9XG4gICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gaW5pdGlhbGl6ZVVwbG9hZEZpbGVPYmoob2JqKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIW9iai5mb3JtRGF0YSkge1xuICAgICAgICBvYmouZm9ybURhdGEgPSB7fTtcbiAgICB9XG4gICAgaWYgKG9iai5vcmlnaW5VcmwgIT09IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi51cmwgJiYgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgIG9iai5mb3JtRGF0YSA9IF9fYXNzaWduKHt9LCBvYmouZm9ybURhdGEsIChfYSA9IHt9LCBfYVtjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2EpKTtcbiAgICB9XG4gICAgdmFyIGdkID0gZ2V0R2xvYmFsRGF0YSgpO1xuICAgIG9iai5mb3JtRGF0YSA9IF9fYXNzaWduKHt9LCBnZCwgb2JqLmZvcm1EYXRhKTtcbiAgICBpZiAoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgIG9iai51cmwgPSB1cmxfMS5kZWZhdWx0LnNldFBhcmFtcyhvYmoudXJsLCAoX2IgPSB7fSwgX2JbY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZV0gPSBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24sIF9iKSk7XG4gICAgfVxuICAgIG9iai51cmwgPSB1cmxfMS5kZWZhdWx0LnNldFBhcmFtcyhvYmoudXJsLCBnZCk7XG4gICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqKTtcbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gZ2V0R2xvYmFsRGF0YSgpIHtcbiAgICB2YXIgZ2QgPSB7fTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZ2xvYmFsRGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGdkID0gY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGEgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgZ2QgPSBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGE7XG4gICAgfVxuICAgIHJldHVybiBnZDtcbn1cbmZ1bmN0aW9uIGRvUmVxdWVzdChvYmopIHtcbiAgICBvYmogPSBpbml0aWFsaXplUmVxdWVzdE9iaihvYmopO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHd4LnJlcXVlc3Qoe1xuICAgICAgICAgICAgdXJsOiBvYmoudXJsLFxuICAgICAgICAgICAgZGF0YTogb2JqLmRhdGEsXG4gICAgICAgICAgICBtZXRob2Q6IG9iai5tZXRob2QsXG4gICAgICAgICAgICBoZWFkZXI6IG9iai5oZWFkZXIgfHwge30sXG4gICAgICAgICAgICBkYXRhVHlwZTogb2JqLmRhdGFUeXBlIHx8ICdqc29uJyxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LnN5c3RlbUVycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZG9VcGxvYWRGaWxlKG9iaikge1xuICAgIG9iaiA9IGluaXRpYWxpemVVcGxvYWRGaWxlT2JqKG9iaik7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgd3gudXBsb2FkRmlsZSh7XG4gICAgICAgICAgICB1cmw6IG9iai51cmwsXG4gICAgICAgICAgICBmaWxlUGF0aDogb2JqLmZpbGVQYXRoIHx8ICcnLFxuICAgICAgICAgICAgbmFtZTogb2JqLm5hbWUgfHwgJycsXG4gICAgICAgICAgICBmb3JtRGF0YTogb2JqLmZvcm1EYXRhLFxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuc3lzdGVtRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLmNvbXBsZXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvYmouc2hvd0xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ18xLmRlZmF1bHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiByZXF1ZXN0KG9iaikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaik7XG4gICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uKSB7XG4gICAgICAgICAgICB2YXIgbW9ja1Jlc3BvbnNlID0gbW9ja01hbmFnZXJfMS5kZWZhdWx0LmdldChvYmopO1xuICAgICAgICAgICAgaWYgKG1vY2tSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQobW9ja1Jlc3BvbnNlLCBvYmosICdyZXF1ZXN0Jyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvYmouY2FjaGUpIHtcbiAgICAgICAgICAgIGNhY2hlTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0Lm1haW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkb1JlcXVlc3Qob2JqKTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0KHJlcywgb2JqLCAncmVxdWVzdCcpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiB1cGxvYWRGaWxlKG9iaikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIG9iaiA9IHByZURvKG9iaik7XG4gICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uKSB7XG4gICAgICAgICAgICB2YXIgbW9ja1Jlc3BvbnNlID0gbW9ja01hbmFnZXJfMS5kZWZhdWx0LmdldChvYmopO1xuICAgICAgICAgICAgaWYgKG1vY2tSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQobW9ja1Jlc3BvbnNlLCBvYmosICd1cGxvYWRGaWxlJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlc3Npb25NYW5hZ2VyXzEuZGVmYXVsdC5tYWluKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9VcGxvYWRGaWxlKG9iaik7XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdChyZXMsIG9iaiwgJ3VwbG9hZEZpbGUnKTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIGZvcm1hdDogZm9ybWF0LFxuICAgIHJlcXVlc3Q6IHJlcXVlc3QsXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtVnhkV1Z6ZEVoaGJtUnNaWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZiVzlrZFd4bEwzSmxjWFZsYzNSSVlXNWtiR1Z5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdRVUZCUVN3eVEwRkJjVU03UVVGRGNrTXNNRU5CUVc5RE8wRkJRM0JETERCRFFVRnZRenRCUVVOd1F5dzJRMEZCZFVNN1FVRkRka01zSzBOQlFYbERPMEZCUTNwRExHMUVRVUUyUXp0QlFVTTNReXh4UkVGQkswTTdRVUZETDBNc2RVUkJRV2xFTzBGQlEycEVMRzFEUVVFMlFqdEJRVVUzUWl3clEwRkJNRU03UVVGSE1VTXNVMEZCVXl4TlFVRk5MRU5CUVVNc1UwRkJhVUk3U1VGRE4wSXNTVUZCU1N4VFFVRlRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlF6bENMRTlCUVU4c1UwRkJVeXhEUVVGQk8wdEJRMjVDTzFOQlFVMDdVVUZEU0N4SlFVRkpMRk5CUVZNc1IwRkJSeXhuUWtGQlRTeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTnFReXhKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4VFFVRlRMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xbEJRM2hETEZOQlFWTXNSMEZCUnl4blFrRkJUU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZCTzFOQlEycERPMUZCUTBRc1QwRkJUeXhUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETzB0QlEyaERPMEZCUTB3c1EwRkJRenRCUVVkRUxGTkJRVk1zUzBGQlN5eERRVUVyUXl4SFFVRk5PMGxCUXk5RUxFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNWVUZCVlN4TFFVRkxMRlZCUVZVc1JVRkJSVHRSUVVOMFF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1MwRkRjRUk3U1VGRlJDeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRmxCUVZrc1MwRkJTeXhYUVVGWExFVkJRVVU3VVVGRGVrTXNSMEZCUnl4RFFVRkRMRmxCUVZrc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRGVFSTdVMEZCVFR0UlFVTklMRWRCUVVjc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dExRVU4wUWp0SlFVVkVMRWxCUVVrc1IwRkJSeXhEUVVGRExGZEJRVmNzUlVGQlJUdFJRVU5xUWl4cFFrRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1MwRkRha003U1VGRlJDeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1JVRkJSVHRSUVVOb1FpeEhRVUZITEVOQlFVTXNVMEZCVXl4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU03VVVGRGVFSXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMHRCUXpkQ08wbEJSVVFzVDBGQlR5eEhRVUZITEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUjBRc1UwRkJVeXh2UWtGQmIwSXNRMEZCUXl4SFFVRnRRanM3U1VGRk4wTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVU3VVVGRFdDeEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRMUVVOcVFqdEpRVVZFTEVsQlFVa3NSMEZCUnl4RFFVRkRMRk5CUVZNc1MwRkJTeXhuUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4SFFVRkhMRWxCUVVrc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVTdVVUZET1VRc1IwRkJSeXhEUVVGRExFbEJRVWtzWjBKQlFVOHNSMEZCUnl4RFFVRkRMRWxCUVdNc1pVRkJSeXhuUWtGQlRTeERRVUZETEZkQlFWY3NTVUZCUnl4blFrRkJUU3hEUVVGRExFOUJRVThzVFVGQlF5eERRVUZETzB0QlF6VkZPMGxCUjBRc1NVRkJUU3hGUVVGRkxFZEJRVWNzWVVGQllTeEZRVUZGTEVOQlFVTTdTVUZETTBJc1IwRkJSeXhEUVVGRExFbEJRVWtzWjBKQlFVOHNSVUZCUlN4RlFVRkxMRWRCUVVjc1EwRkJReXhKUVVGakxFTkJRVU1zUTBGQlF6dEpRVVV4UXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRPMGxCUTJwRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVkQlFVY3NSMEZCUnl4RFFVRkRMRkZCUVZFc1NVRkJTU3hOUVVGTkxFTkJRVU03U1VGSGRFTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hMUVVGTExFdEJRVXNzUlVGQlJUdFJRVU4wUWl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEyaENMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzWVVGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhaUVVGSExFZEJRVU1zWjBKQlFVMHNRMEZCUXl4WFFVRlhMRWxCUVVjc1owSkJRVTBzUTBGQlF5eFBRVUZQTEUxQlFVVXNRMEZCUXp0VFFVTTFSVHRSUVVORUxFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NZVUZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMHRCUTNoRE8wbEJSVVFzTUVKQlFXZENMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJUVkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVWRFTEZOQlFWTXNkVUpCUVhWQ0xFTkJRVU1zUjBGQmMwSTdPMGxCUTI1RUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZPMUZCUTJZc1IwRkJSeXhEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTMEZEY2tJN1NVRkZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFRRVUZUTEV0QlFVc3NaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ5eEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhGUVVGRk8xRkJRemxFTEVkQlFVY3NRMEZCUXl4UlFVRlJMR2RDUVVGUExFZEJRVWNzUTBGQlF5eFJRVUZyUWl4bFFVRkhMR2RDUVVGTkxFTkJRVU1zVjBGQlZ5eEpRVUZITEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhOUVVGRExFTkJRVU03UzBGRGNFWTdTVUZIUkN4SlFVRk5MRVZCUVVVc1IwRkJSeXhoUVVGaExFVkJRVVVzUTBGQlF6dEpRVU16UWl4SFFVRkhMRU5CUVVNc1VVRkJVU3huUWtGQlR5eEZRVUZGTEVWQlFVc3NSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wbEJSM2hETEVsQlFVa3NaMEpCUVUwc1EwRkJReXhQUVVGUExFVkJRVVU3VVVGRGFFSXNSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhoUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRmxCUVVjc1IwRkJReXhuUWtGQlRTeERRVUZETEZkQlFWY3NTVUZCUnl4blFrRkJUU3hEUVVGRExFOUJRVThzVFVGQlJTeERRVUZETzB0QlF6VkZPMGxCUlVRc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eGhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZGY2tNc01FSkJRV2RDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSVFZDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxGTkJRVk1zWVVGQllUdEpRVU5zUWl4SlFVRkpMRVZCUVVVc1IwRkJVU3hGUVVGRkxFTkJRVU03U1VGRGFrSXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeExRVUZMTEZWQlFWVXNSVUZCUlR0UlFVTjZReXhGUVVGRkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRMUVVNMVFqdFRRVUZOTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExGVkJRVlVzUzBGQlN5eFJRVUZSTEVWQlFVVTdVVUZET1VNc1JVRkJSU3hIUVVGSExHZENRVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRPMHRCUXpGQ08wbEJRMFFzVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEWkN4RFFVRkRPMEZCUlVRc1UwRkJVeXhUUVVGVExFTkJRVU1zUjBGQmJVSTdTVUZEYkVNc1IwRkJSeXhIUVVGSExHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMmhETEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJReXhQUVVGUExFVkJRVVVzVFVGQlRUdFJRVU12UWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRMUFzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkhPMWxCUTFvc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEpRVUZKTzFsQlEyUXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhOUVVGTk8xbEJRMnhDTEUxQlFVMHNSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVU3V1VGRGVFSXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhSUVVGUkxFbEJRVWtzVFVGQlRUdFpRVU5vUXl4UFFVRlBMRmxCUVVNc1IwRkJiME03WjBKQlEzaERMRTlCUVU4c1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaENMRU5CUVVNN1dVRkRSQ3hKUVVGSkxGbEJRVU1zUjBGQk5rSTdaMEpCUXpsQ0xITkNRVUZaTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtNc1QwRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZGtJc1EwRkJRenRaUVVORUxGRkJRVkU3WjBKQlEwb3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhSUVVGUkxFdEJRVXNzVlVGQlZTeEZRVUZGTzI5Q1FVTndReXhIUVVGSExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdhVUpCUTJ4Q08yZENRVU5FTEVsQlFVa3NSMEZCUnl4RFFVRkRMRmRCUVZjc1JVRkJSVHR2UWtGRGFrSXNhVUpCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlFUdHBRa0ZEYWtJN1dVRkRUQ3hEUVVGRE8xTkJRMG9zUTBGQlF5eERRVUZCTzBsQlEwNHNRMEZCUXl4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzVTBGQlV5eFpRVUZaTEVOQlFVTXNSMEZCYzBJN1NVRkRlRU1zUjBGQlJ5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyNURMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTXZRaXhGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzFsQlExWXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSE8xbEJRMW9zVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4UlFVRlJMRWxCUVVrc1JVRkJSVHRaUVVNMVFpeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1NVRkJTU3hGUVVGRk8xbEJRM0JDTEZGQlFWRXNSVUZCUlN4SFFVRkhMRU5CUVVNc1VVRkJVVHRaUVVOMFFpeFBRVUZQTEZsQlFVTXNSMEZCZFVNN1owSkJRek5ETEU5QlFVOHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM2hDTEVOQlFVTTdXVUZEUkN4SlFVRkpMRmxCUVVNc1IwRkJOa0k3WjBKQlF6bENMSE5DUVVGWkxFTkJRVU1zVjBGQlZ5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRGJrTXNUMEZCVHl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGRrSXNRMEZCUXp0WlFVTkVMRkZCUVZFN1owSkJRMG9zU1VGQlNTeFBRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRlJMRXRCUVVzc1ZVRkJWU3hGUVVGRk8yOUNRVU53UXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03YVVKQlEyeENPMmRDUVVORUxFbEJRVWtzUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlR0dlFrRkRha0lzYVVKQlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRVHRwUWtGRGFrSTdXVUZEVEN4RFFVRkRPMU5CUTBvc1EwRkJReXhEUVVGQk8wbEJRMDRzUTBGQlF5eERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc1UwRkJVeXhQUVVGUExFTkJRVU1zUjBGQmJVSTdTVUZEYUVNc1QwRkJUeXhKUVVGSkxFOUJRVThzUTBGQlF5eFZRVUZETEU5QlFVOHNSVUZCUlN4TlFVRk5PMUZCUXk5Q0xFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZha0lzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSVHRaUVVOcVFpeEpRVUZKTEZsQlFWa3NSMEZCUnl4eFFrRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTjRReXhKUVVGSkxGbEJRVmtzUlVGQlJUdG5Ra0ZEWkN4SlFVRkpMRkZCUVZFc1IwRkJSeXg1UWtGQlpTeERRVUZETEZsQlFWa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlF6ZEVMRTlCUVU4c1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJGQlF6VkNPMU5CUTBvN1VVRkZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVTdXVUZEV0N4elFrRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTjZRanRSUVVWRUxIZENRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRM1pDTEU5QlFVOHNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGQk8xRkJRM3BDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGRExFZEJRVWM3V1VGRFVpeEpRVUZKTEZGQlFWRXNSMEZCUnl4NVFrRkJaU3hEUVVGRExFZEJRWE5ETEVWQlFVVXNSMEZCUnl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJRM1pHTEU5QlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJRemRDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGRExFTkJRVU03V1VGRFVDeFBRVUZQTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOeVFpeERRVUZETEVOQlFVTXNRMEZCUVR0SlFVTk9MRU5CUVVNc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlN4RFFVRkRMRWRCUVhOQ08wbEJRM1JETEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJReXhQUVVGUExFVkJRVVVzVFVGQlRUdFJRVU12UWl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJXcENMRWxCUVVrc1owSkJRVTBzUTBGQlF5eFJRVUZSTEVWQlFVVTdXVUZEYWtJc1NVRkJTU3haUVVGWkxFZEJRVWNzY1VKQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4WlFVRlpMRVZCUVVVN1owSkJRMlFzU1VGQlNTeFJRVUZSTEVkQlFVY3NlVUpCUVdVc1EwRkJReXhaUVVGWkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEZsQlFWa3NRMEZCUXl4RFFVRkRPMmRDUVVOb1JTeFBRVUZQTEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRoUVVNMVFqdFRRVU5LTzFGQlJVUXNkMEpCUVdNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEZGtJc1QwRkJUeXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdVVUZETlVJc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFVTXNSMEZCUnp0WlFVTlNMRWxCUVVrc1VVRkJVU3hIUVVGSExIbENRVUZsTEVOQlFVTXNSMEZCZVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzV1VGQldTeERRVUZETEVOQlFVTTdXVUZETjBZc1QwRkJUeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETjBJc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEZWQlFVTXNRMEZCUXp0WlFVTlFMRTlCUVU4c1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkNMRU5CUVVNc1EwRkJReXhEUVVGQk8wbEJRMDRzUTBGQlF5eERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeE5RVUZOTEZGQlFVRTdTVUZEVGl4UFFVRlBMRk5CUVVFN1NVRkRVQ3hWUVVGVkxGbEJRVUU3UTBGRFlpeERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUd4dllXUnBibWNnWm5KdmJTQW5MaTR2ZFhScGJDOXNiMkZrYVc1bkoxeHVhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdjM1JoZEhWeklHWnliMjBnSnk0dUwzTjBiM0psTDNOMFlYUjFjeWRjYm1sdGNHOXlkQ0J0YjJOclRXRnVZV2RsY2lCbWNtOXRJQ2N1TDIxdlkydE5ZVzVoWjJWeUoxeHVhVzF3YjNKMElHTmhZMmhsVFdGdVlXZGxjaUJtY205dElDY3VMMk5oWTJobFRXRnVZV2RsY2lkY2JtbHRjRzl5ZENCelpYTnphVzl1VFdGdVlXZGxjaUJtY205dElDY3VMM05sYzNOcGIyNU5ZVzVoWjJWeUoxeHVhVzF3YjNKMElISmxjM0J2Ym5ObFNHRnVaR3hsY2lCbWNtOXRJQ2N1TDNKbGMzQnZibk5sU0dGdVpHeGxjaWRjYm1sdGNHOXlkQ0JrZFhKaGRHbHZibEpsY0c5eWRHVnlJR1p5YjIwZ1hDSXVMMlIxY21GMGFXOXVVbVZ3YjNKMFpYSmNJbHh1YVcxd2IzSjBJSFZ5YkNCbWNtOXRJQ2N1TGk5MWRHbHNMM1Z5YkNkY2JtbHRjRzl5ZENCN1NWSmxjWFZsYzNSUGNIUnBiMjRzSUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1ZlNCbWNtOXRJRndpTGk0dmFXNTBaWEptWVdObFhDSmNibWx0Y0c5eWRDQmxjbkp2Y2toaGJtUnNaWElnWm5KdmJTQmNJaTR2WlhKeWIzSklZVzVrYkdWeVhDSTdYRzVjYmk4dklPYWd2T1c4aitXTWxuVnliRnh1Wm5WdVkzUnBiMjRnWm05eWJXRjBLRzl5YVdkcGJsVnliRG9nYzNSeWFXNW5LU0I3WEc0Z0lDQWdhV1lnS0c5eWFXZHBibFZ5YkM1emRHRnlkSE5YYVhSb0tDZG9kSFJ3SnlrcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHOXlhV2RwYmxWeWJGeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQjFjbXhRWlhKbWFYZ2dQU0JqYjI1bWFXY3VkWEpzVUdWeVptbDRPMXh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTUxY214UVpYSm1hWGdnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkWEpzVUdWeVptbDRJRDBnWTI5dVptbG5MblZ5YkZCbGNtWnBlQ2dwWEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWeWJGQmxjbVpwZUNBcklHOXlhV2RwYmxWeWJEdGNiaUFnSUNCOVhHNTlYRzVjYmk4dklPYUpnT2FjaWVpdnQrYXhndVdQa2VXSHV1V0pqZW1jZ09pbWdlV0JtdWVhaE9TNmkrYURoVnh1Wm5WdVkzUnBiMjRnY0hKbFJHODhWQ0JsZUhSbGJtUnpJRWxTWlhGMVpYTjBUM0IwYVc5dUlId2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNCtLRzlpYWpvZ1ZDazZJRlFnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnYjJKcUxtSmxabTl5WlZObGJtUWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vdVltVm1iM0psVTJWdVpDZ3BPMXh1SUNBZ0lIMWNiaUFnSUNBdkx5RG5tYnZsdlpYbWdJSGxwTEhtbFlqdnZJenBoNDNscEkzbm1idmx2WlhvcnFIbWxiQmNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHOWlhaTV5WlV4dloybHVRMjkxYm5RZ1BUMDlJRndpZFc1a1pXWnBibVZrWENJcElIdGNiaUFnSUNBZ0lDQWdiMkpxTG5KbFRHOW5hVzVEYjNWdWRDQTlJREE3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdiMkpxTG5KbFRHOW5hVzVEYjNWdWRDc3JPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h2WW1vdWMyaHZkMHh2WVdScGJtY3BJSHRjYmlBZ0lDQWdJQ0FnYkc5aFpHbHVaeTV6YUc5M0tHOWlhaTV6YUc5M1RHOWhaR2x1WnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRnZZbW91YjNKcFoybHVWWEpzS1NCN1hHNGdJQ0FnSUNBZ0lHOWlhaTV2Y21sbmFXNVZjbXdnUFNCdlltb3VkWEpzTzF4dUlDQWdJQ0FnSUNCdlltb3VkWEpzSUQwZ1ptOXliV0YwS0c5aWFpNTFjbXdwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnZZbW83WEc1OVhHNWNiaTh2SU9hZ3ZPVzhqK1dNbHVXa2hPZVFodWl2dCtheGd1ZWFoRzlpYXVXR2hlV3V1Vnh1Wm5WdVkzUnBiMjRnYVc1cGRHbGhiR2w2WlZKbGNYVmxjM1JQWW1vb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpa2dlMXh1WEc0Z0lDQWdhV1lnS0NGdlltb3VaR0YwWVNrZ2UxeHVJQ0FnSUNBZ0lDQnZZbW91WkdGMFlTQTlJSHQ5TzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodlltb3ViM0pwWjJsdVZYSnNJQ0U5UFNCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNTFjbXdnSmlZZ2MzUmhkSFZ6TG5ObGMzTnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2IySnFMbVJoZEdFZ1BTQjdMaTR1YjJKcUxtUmhkR0VnWVhNZ2IySnFaV04wTENCYlkyOXVabWxuTG5ObGMzTnBiMjVPWVcxbFhUb2djM1JoZEhWekxuTmxjM05wYjI1OU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklPV21ndWFlbk9hY2llV0ZxT1d4Z09XUGd1YVZzTys4ak9XSW1lYTN1K1dLb0Z4dUlDQWdJR052Ym5OMElHZGtJRDBnWjJWMFIyeHZZbUZzUkdGMFlTZ3BPMXh1SUNBZ0lHOWlhaTVrWVhSaElEMGdleTR1TG1ka0xDQXVMaTV2WW1vdVpHRjBZU0JoY3lCdlltcGxZM1I5TzF4dVhHNGdJQ0FnYjJKcUxtMWxkR2h2WkNBOUlHOWlhaTV0WlhSb2IyUWdmSHdnSjBkRlZDYzdYRzRnSUNBZ2IySnFMbVJoZEdGVWVYQmxJRDBnYjJKcUxtUmhkR0ZVZVhCbElIeDhJQ2RxYzI5dUp6dGNibHh1SUNBZ0lDOHZJT1dtZ3VhZW5PaXZ0K2F4Z3VTNGplYVlyMGRGVk8rOGpPV0ltZVdjcUZWU1RPUzRyZWlIcXVXS3FPV0tvT1M0aXVlWnUrVzlsZWFBZ2VXU2pPV0ZxT1d4Z09XUGd1YVZzRnh1SUNBZ0lHbG1JQ2h2WW1vdWJXVjBhRzlrSUNFOVBTQmNJa2RGVkZ3aUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoemRHRjBkWE11YzJWemMybHZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTG5WeWJDQTlJSFZ5YkM1elpYUlFZWEpoYlhNb2IySnFMblZ5YkN3Z2UxdGpiMjVtYVdjdWMyVnpjMmx2Yms1aGJXVmRPaUJ6ZEdGMGRYTXVjMlZ6YzJsdmJuMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUc5aWFpNTFjbXdnUFNCMWNtd3VjMlYwVUdGeVlXMXpLRzlpYWk1MWNtd3NJR2RrS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JrZFhKaGRHbHZibEpsY0c5eWRHVnlMbk4wWVhKMEtHOWlhaWs3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiMkpxTzF4dWZWeHVYRzR2THlEbW9Memx2SS9sakpibHBJVG5rSWJrdUlya3ZLRG1sb2ZrdTdibm1vUnZZbXJsaG9YbHJybGNibVoxYm1OMGFXOXVJR2x1YVhScFlXeHBlbVZWY0d4dllXUkdhV3hsVDJKcUtHOWlham9nU1ZWd2JHOWhaRVpwYkdWUGNIUnBiMjRwSUh0Y2JpQWdJQ0JwWmlBb0lXOWlhaTVtYjNKdFJHRjBZU2tnZTF4dUlDQWdJQ0FnSUNCdlltb3VabTl5YlVSaGRHRWdQU0I3ZlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2IySnFMbTl5YVdkcGJsVnliQ0FoUFQwZ1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVkWEpzSUNZbUlITjBZWFIxY3k1elpYTnphVzl1S1NCN1hHNGdJQ0FnSUNBZ0lHOWlhaTVtYjNKdFJHRjBZU0E5SUhzdUxpNXZZbW91Wm05eWJVUmhkR0VnWVhNZ2IySnFaV04wTENCYlkyOXVabWxuTG5ObGMzTnBiMjVPWVcxbFhUb2djM1JoZEhWekxuTmxjM05wYjI1OU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklPV21ndWFlbk9hY2llV0ZxT1d4Z09XUGd1YVZzTys4ak9XSW1lYTN1K1dLb0Z4dUlDQWdJR052Ym5OMElHZGtJRDBnWjJWMFIyeHZZbUZzUkdGMFlTZ3BPMXh1SUNBZ0lHOWlhaTVtYjNKdFJHRjBZU0E5SUhzdUxpNW5aQ3dnTGk0dWIySnFMbVp2Y20xRVlYUmhmVHRjYmx4dUlDQWdJQzh2SU9Xd2h1ZVp1K21aaHVhQWdlUzVuK1c0cHVXY3FIVnliT1M0aWx4dUlDQWdJR2xtSUNoemRHRjBkWE11YzJWemMybHZiaWtnZTF4dUlDQWdJQ0FnSUNCdlltb3VkWEpzSUQwZ2RYSnNMbk5sZEZCaGNtRnRjeWh2WW1vdWRYSnNMQ0I3VzJOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlYwNklITjBZWFIxY3k1elpYTnphVzl1ZlNrN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2SU9XRnFPV3hnT1dQZ3VhVnNPV1FqT2FYdHVhVXZ1V2NxSFZ5Yk9TNGlseHVJQ0FnSUc5aWFpNTFjbXdnUFNCMWNtd3VjMlYwVUdGeVlXMXpLRzlpYWk1MWNtd3NJR2RrS1R0Y2JseHVJQ0FnSUdSMWNtRjBhVzl1VW1Wd2IzSjBaWEl1YzNSaGNuUW9iMkpxS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ2WW1vN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdkbGRFZHNiMkpoYkVSaGRHRW9LU0I3WEc0Z0lDQWdiR1YwSUdka09pQmhibmtnUFNCN2ZUdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1bmJHOWlZV3hFWVhSaElEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdaMlFnUFNCamIyNW1hV2N1WjJ4dlltRnNSR0YwWVNncE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVuYkc5aVlXeEVZWFJoSUQwOVBTQmNJbTlpYW1WamRGd2lLU0I3WEc0Z0lDQWdJQ0FnSUdka0lEMGdZMjl1Wm1sbkxtZHNiMkpoYkVSaGRHRTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJuWkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWkc5U1pYRjFaWE4wS0c5aWFqb2dTVkpsY1hWbGMzUlBjSFJwYjI0cElIdGNiaUFnSUNCdlltb2dQU0JwYm1sMGFXRnNhWHBsVW1WeGRXVnpkRTlpYWlodlltb3BPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpTZ29jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhkNExuSmxjWFZsYzNRb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZFhKc09pQnZZbW91ZFhKc0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdGMFlUb2diMkpxTG1SaGRHRXNYRzRnSUNBZ0lDQWdJQ0FnSUNCdFpYUm9iMlE2SUc5aWFpNXRaWFJvYjJRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JvWldGa1pYSTZJRzlpYWk1b1pXRmtaWElnZkh3Z2UzMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCa1lYUmhWSGx3WlRvZ2IySnFMbVJoZEdGVWVYQmxJSHg4SUNkcWMyOXVKeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITjFZMk5sYzNNb2NtVnpPaUIzZUM1U1pYRjFaWE4wVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb2NtVnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCbVlXbHNLSEpsY3pvZ2QzZ3VSMlZ1WlhKaGJFTmhiR3hpWVdOclVtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlMbk41YzNSbGJVVnljbTl5S0c5aWFpd2djbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSEpsY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl0Y0d4bGRHVW9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdlltb3VZMjl0Y0d4bGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlltb3VZMjl0Y0d4bGRHVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHOWlhaTV6YUc5M1RHOWhaR2x1WnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYjJGa2FXNW5MbWhwWkdVb0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNCOUtWeHVmVnh1WEc1bWRXNWpkR2x2YmlCa2IxVndiRzloWkVacGJHVW9iMkpxT2lCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlrZ2UxeHVJQ0FnSUc5aWFpQTlJR2x1YVhScFlXeHBlbVZWY0d4dllXUkdhV3hsVDJKcUtHOWlhaWs3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2QzZ3VkWEJzYjJGa1JtbHNaU2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjFjbXc2SUc5aWFpNTFjbXdzWEc0Z0lDQWdJQ0FnSUNBZ0lDQm1hV3hsVUdGMGFEb2diMkpxTG1acGJHVlFZWFJvSUh4OElDY25MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JtRnRaVG9nYjJKcUxtNWhiV1VnZkh3Z0p5Y3NYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSnRSR0YwWVRvZ2IySnFMbVp2Y20xRVlYUmhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MzVmpZMlZ6Y3loeVpYTTZJSGQ0TGxWd2JHOWhaRVpwYkdWVGRXTmpaWE56UTJGc2JHSmhZMnRTWlhOMWJIUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHlaWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHWmhhV3dvY21Wek9pQjNlQzVIWlc1bGNtRnNRMkZzYkdKaFkydFNaWE4xYkhRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxjbkp2Y2toaGJtUnNaWEl1YzNsemRHVnRSWEp5YjNJb2IySnFMQ0J5WlhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjIxd2JHVjBaU2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHOWlhaTVqYjIxd2JHVjBaU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOWlhaTVqYjIxd2JHVjBaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iMkpxTG5Ob2IzZE1iMkZrYVc1bktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4dllXUnBibWN1YUdsa1pTZ3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lIMHBYRzU5WEc1Y2JtWjFibU4wYVc5dUlISmxjWFZsYzNRb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpazZJR0Z1ZVNCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0NoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdiMkpxSUQwZ2NISmxSRzhvYjJKcUtUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb1kyOXVabWxuTG0xdlkydEtjMjl1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2JXOWphMUpsYzNCdmJuTmxJRDBnYlc5amEwMWhibUZuWlhJdVoyVjBLRzlpYWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JXOWphMUpsYzNCdmJuTmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElISmxjM0J2Ym5ObElEMGdjbVZ6Y0c5dWMyVklZVzVrYkdWeUtHMXZZMnRTWlhOd2IyNXpaU3dnYjJKcUxDQW5jbVZ4ZFdWemRDY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtISmxjM0J2Ym5ObEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNodlltb3VZMkZqYUdVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaFkyaGxUV0Z1WVdkbGNpNW5aWFFvYjJKcUtUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhObGMzTnBiMjVOWVc1aFoyVnlMbTFoYVc0b0tTNTBhR1Z1S0NncElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2IxSmxjWFZsYzNRb2IySnFLVnh1SUNBZ0lDQWdJQ0I5S1M1MGFHVnVLQ2h5WlhNcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J5WlhOd2IyNXpaU0E5SUhKbGMzQnZibk5sU0dGdVpHeGxjaWh5WlhNZ1lYTWdkM2d1VW1WeGRXVnpkRk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZEN3Z2IySnFMQ0FuY21WeGRXVnpkQ2NwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb2NtVnpjRzl1YzJVcE8xeHVJQ0FnSUNBZ0lDQjlLUzVqWVhSamFDZ29aU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYW1WamRDaGxLVHRjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5S1Z4dWZWeHVYRzVtZFc1amRHbHZiaUIxY0d4dllXUkdhV3hsS0c5aWFqb2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBPaUJoYm5rZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJRzlpYWlBOUlIQnlaVVJ2S0c5aWFpazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZibVpwWnk1dGIyTnJTbk52YmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHMXZZMnRTWlhOd2IyNXpaU0E5SUcxdlkydE5ZVzVoWjJWeUxtZGxkQ2h2WW1vcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHMXZZMnRTWlhOd2IyNXpaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGRDQnlaWE53YjI1elpTQTlJSEpsYzNCdmJuTmxTR0Z1Wkd4bGNpaHRiMk5yVW1WemNHOXVjMlVzSUc5aWFpd2dKM1Z3Ykc5aFpFWnBiR1VuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemIyeDJaU2h5WlhOd2IyNXpaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCelpYTnphVzl1VFdGdVlXZGxjaTV0WVdsdUtDa3VkR2hsYmlnb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHOVZjR3h2WVdSR2FXeGxLRzlpYWlsY2JpQWdJQ0FnSUNBZ2ZTa3VkR2hsYmlnb2NtVnpLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NtVnpjRzl1YzJVZ1BTQnlaWE53YjI1elpVaGhibVJzWlhJb2NtVnpJR0Z6SUhkNExsVndiRzloWkVacGJHVlRkV05qWlhOelEyRnNiR0poWTJ0U1pYTjFiSFFzSUc5aWFpd2dKM1Z3Ykc5aFpFWnBiR1VuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtISmxjM0J2Ym5ObEtUdGNiaUFnSUNBZ0lDQWdmU2t1WTJGMFkyZ29LR1VwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9aU2s3WEc0Z0lDQWdJQ0FnSUgwcFhHNGdJQ0FnZlNsY2JuMWNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdlMXh1SUNBZ0lHWnZjbTFoZEN4Y2JpQWdJQ0J5WlhGMVpYTjBMRnh1SUNBZ0lIVndiRzloWkVacGJHVmNibjFjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgcmVxdWVzdEhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3JlcXVlc3RIYW5kbGVyXCIpO1xudmFyIGVycm9ySGFuZGxlcl8xID0gcmVxdWlyZShcIi4vZXJyb3JIYW5kbGVyXCIpO1xudmFyIGNhY2hlTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vY2FjaGVNYW5hZ2VyXCIpO1xudmFyIGR1cmF0aW9uUmVwb3J0ZXJfMSA9IHJlcXVpcmUoXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIik7XG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL3Nlc3Npb25NYW5hZ2VyXCIpO1xuZnVuY3Rpb24gcmVzcG9uc2UocmVzLCBvYmosIG1ldGhvZCkge1xuICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzLmRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzLmRhdGEgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5jYXRjaEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuZW5kKG9iaik7XG4gICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmxvZ2luVHJpZ2dlcihyZXMuZGF0YSkgJiYgb2JqLnJlTG9naW5Db3VudCAhPT0gdW5kZWZpbmVkICYmIG9iai5yZUxvZ2luQ291bnQgPCBjb25maWdfMS5kZWZhdWx0LnJlTG9naW5MaW1pdCkge1xuICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0LmRlbFNlc3Npb24oKTtcbiAgICAgICAgICAgIGlmIChtZXRob2QgPT09IFwicmVxdWVzdFwiKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LnJlcXVlc3Qob2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG1ldGhvZCA9PT0gXCJ1cGxvYWRGaWxlXCIpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQudXBsb2FkRmlsZShvYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc1RyaWdnZXIocmVzLmRhdGEpKSB7XG4gICAgICAgICAgICB2YXIgcmVhbERhdGEgPSBcIlwiO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRnVuY3Rpb24gc3VjY2Vzc0RhdGEgb2NjdXIgZXJyb3I6IFwiICsgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9iai5ub0NhY2hlRmxhc2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxEYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhY2hlTWFuYWdlcl8xLmRlZmF1bHQuc2V0KG9iaiwgcmVhbERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9iai5jYXRjaEVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1zZyA9IGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZ2V0RXJyb3JNc2cocmVzKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnLmNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5sb2dpY0Vycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKG9iai5jYXRjaEVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzLnN0YXR1c0NvZGUudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmxvZ2ljRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gcmVzcG9uc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ6Y0c5dWMyVklZVzVrYkdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDIxdlpIVnNaUzl5WlhOd2IyNXpaVWhoYm1Sc1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zYlVSQlFUWkRPMEZCUXpkRExDdERRVUY1UXp0QlFVTjZReXdyUTBGQmVVTTdRVUZEZWtNc2RVUkJRV2xFTzBGQlEycEVMRzFFUVVFMlF6dEJRVWMzUXl4VFFVRlRMRkZCUVZFc1EwRkRZaXhIUVVGNVJTeEZRVU42UlN4SFFVRjFReXhGUVVOMlF5eE5RVUZuUXp0SlFVVm9ReXhKUVVGSkxFZEJRVWNzUTBGQlF5eFZRVUZWTEV0QlFVc3NSMEZCUnl4RlFVRkZPMUZCUjNoQ0xFbEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4TFFVRkxMRkZCUVZFc1JVRkJSVHRaUVVNM1FpeEpRVUZKTzJkQ1FVTkJMRWRCUVVjc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRGJrTTdXVUZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHRuUWtGRFVpeEpRVUZITEVkQlFVY3NRMEZCUXl4VlFVRlZMRVZCUVVVN2IwSkJRMllzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRGRFSTdjVUpCUVUwN2IwSkJRMGdzYzBKQlFWa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTnNReXhQUVVGUE8ybENRVU5XTzJGQlEwbzdVMEZEU2p0UlFVVkVMREJDUVVGblFpeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVVeFFpeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1dVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hMUVVGTExGTkJRVk1zU1VGQlNTeEhRVUZITEVOQlFVTXNXVUZCV1N4SFFVRkhMR2RDUVVGTkxFTkJRVU1zV1VGQllTeEZRVUZGTzFsQlJUZEhMSGRDUVVGakxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdXVUZETlVJc1NVRkJSeXhOUVVGTkxFdEJRVXNzVTBGQlV5eEZRVUZGTzJkQ1FVTnlRaXgzUWtGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRnhRaXhEUVVGRExFTkJRVU03WVVGRGFrUTdhVUpCUVUwc1NVRkJSeXhOUVVGTkxFdEJRVXNzV1VGQldTeEZRVUZGTzJkQ1FVTXZRaXgzUWtGQll5eERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRjNRaXhEUVVGRExFTkJRVU03WVVGRGRrUTdVMEZEU2p0aFFVRk5MRWxCUVVrc1owSkJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJSWGhETEVsQlFVa3NVVUZCVVN4SFFVRnpReXhGUVVGRkxFTkJRVU03V1VGRGNrUXNTVUZCU1R0blFrRkRRU3hSUVVGUkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJGQlF6TkRPMWxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3WjBKQlExSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXh2UTBGQmIwTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVNelJEdFpRVU5FTEVsQlFVY3NRMEZCUlN4SFFVRnpRaXhEUVVGRExGbEJRVmtzUlVGQlJUdG5Ra0ZGZEVNc1NVRkJSeXhQUVVGUExFZEJRVWNzUTBGQlF5eFBRVUZQTEV0QlFVc3NWVUZCVlN4RlFVRkRPMjlDUVVOcVF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8ybENRVU42UWp0eFFrRkJUVHR2UWtGRFNDeFBRVUZQTEZGQlFWRXNRMEZCUXp0cFFrRkRia0k3WVVGRFNqdFpRVVZFTEhOQ1FVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0VFFVTnVRenRoUVVGTk8xbEJSVWdzU1VGQlJ5eEhRVUZITEVOQlFVTXNWVUZCVlN4RlFVRkZPMmRDUVVObUxFbEJRVWtzUjBGQlJ5eEhRVUZITEhOQ1FVRlpMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTjRReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRoUVVOb1F6dHBRa0ZCVFR0blFrRkRTQ3h6UWtGQldTeERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WVVGRGNrTTdVMEZEU2p0TFFVTktPMU5CUVUwN1VVRkZTQ3hKUVVGSExFZEJRVWNzUTBGQlF5eFZRVUZWTEVWQlFVVTdXVUZEWml4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNc1EwRkJRenRUUVVNNVF6dGhRVUZOTzFsQlEwZ3NjMEpCUVZrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTNKRE8wdEJRMG83UVVGRFRDeERRVUZETzBGQlJVUXNhMEpCUVdVc1VVRkJVU3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdjbVZ4ZFdWemRFaGhibVJzWlhJZ1puSnZiU0FuTGk5eVpYRjFaWE4wU0dGdVpHeGxjaWRjYm1sdGNHOXlkQ0JsY25KdmNraGhibVJzWlhJZ1puSnZiU0FuTGk5bGNuSnZja2hoYm1Sc1pYSW5YRzVwYlhCdmNuUWdZMkZqYUdWTllXNWhaMlZ5SUdaeWIyMGdKeTR2WTJGamFHVk5ZVzVoWjJWeUoxeHVhVzF3YjNKMElHUjFjbUYwYVc5dVVtVndiM0owWlhJZ1puSnZiU0FuTGk5a2RYSmhkR2x2YmxKbGNHOXlkR1Z5SjF4dWFXMXdiM0owSUhObGMzTnBiMjVOWVc1aFoyVnlJR1p5YjIwZ0p5NHZjMlZ6YzJsdmJrMWhibUZuWlhJblhHNXBiWEJ2Y25RZ2V5QkpVbVZ4ZFdWemRFOXdkR2x2Yml3Z1NWVndiRzloWkVacGJHVlBjSFJwYjI0Z2ZTQm1jbTl0SUZ3aUxpNHZhVzUwWlhKbVlXTmxYQ0k3WEc1Y2JtWjFibU4wYVc5dUlISmxjM0J2Ym5ObEtGeHVJQ0FnSUhKbGN6b2dkM2d1VW1WeGRXVnpkRk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENCOElIZDRMbFZ3Ykc5aFpFWnBiR1ZUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRc1hHNGdJQ0FnYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlCOElFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUxGeHVJQ0FnSUcxbGRHaHZaRG9nWENKeVpYRjFaWE4wWENJZ2ZDQmNJblZ3Ykc5aFpFWnBiR1ZjSWx4dUtUb2dZVzU1SUh0Y2JpQWdJQ0JwWmlBb2NtVnpMbk4wWVhSMWMwTnZaR1VnUFQwOUlESXdNQ2tnZTF4dVhHNGdJQ0FnSUNBZ0lDOHZJT1dGdk9XdXVYVndiRzloWkVacGJHWG92NVRsbTU3bm1vUnlaWE11WkdGMFllV1ByK2lEdmVhWXIrV3RsK2VzcHVTNHNseHVJQ0FnSUNBZ0lDQnBaaWgwZVhCbGIyWWdjbVZ6TG1SaGRHRWdQVDA5SUZ3aWMzUnlhVzVuWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZ6TG1SaGRHRWdQU0JLVTA5T0xuQmhjbk5sS0hKbGN5NWtZWFJoS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaHZZbW91WTJGMFkyaEZjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9aU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlMbXh2WjJsalJYSnliM0lvYjJKcUxDQnlaWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNWxibVFvYjJKcUtUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb1kyOXVabWxuTG14dloybHVWSEpwWjJkbGNpRW9jbVZ6TG1SaGRHRXBJQ1ltSUc5aWFpNXlaVXh2WjJsdVEyOTFiblFnSVQwOUlIVnVaR1ZtYVc1bFpDQW1KaUJ2WW1vdWNtVk1iMmRwYmtOdmRXNTBJRHdnWTI5dVptbG5MbkpsVEc5bmFXNU1hVzFwZENFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklPZVp1K1c5bGVhQWdlV2tzZWFWaU8rOGpPUzRsT21IamVpdmxlYXNvZWFWc09TNGplaTJoZWkvaCttRmplZTlybHh1SUNBZ0lDQWdJQ0FnSUNBZ2MyVnpjMmx2YmsxaGJtRm5aWEl1WkdWc1UyVnpjMmx2YmlncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZb2JXVjBhRzlrSUQwOVBTQmNJbkpsY1hWbGMzUmNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGNYVmxjM1JJWVc1a2JHVnlMbkpsY1hWbGMzUW9iMkpxSUdGeklFbFNaWEYxWlhOMFQzQjBhVzl1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaWh0WlhSb2IyUWdQVDA5SUZ3aWRYQnNiMkZrUm1sc1pWd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WeGRXVnpkRWhoYm1Sc1pYSXVkWEJzYjJGa1JtbHNaU2h2WW1vZ1lYTWdTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR052Ym1acFp5NXpkV05qWlhOelZISnBaMmRsY2loeVpYTXVaR0YwWVNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklPYU9wZVdQbytpL2xPV2JudWFJa09XS24rZWdnVnh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsWVd4RVlYUmhPaUJ6ZEhKcGJtY2dmQ0JKUVc1NVQySnFaV04wSUh3Z1FYSnlZWGxDZFdabVpYSWdQU0JjSWx3aU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaV0ZzUkdGMFlTQTlJR052Ym1acFp5NXpkV05qWlhOelJHRjBZU2h5WlhNdVpHRjBZU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMyOXNaUzVsY25KdmNpaGNJa1oxYm1OMGFXOXVJSE4xWTJObGMzTkVZWFJoSUc5alkzVnlJR1Z5Y205eU9pQmNJaUFySUdVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lvSVNodlltb2dZWE1nU1ZKbGNYVmxjM1JQY0hScGIyNHBMbTV2UTJGamFHVkdiR0Z6YUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJT1dtZ3VhZW5PUzR1dVM2aHVTL25laXZnZW1odGVtZG91UzRqZW1YcXVlRGdlKzhqT1dJbWVTNGplV2JudWl3ZysrOGpPV1BxdWFZcitlOGsrV3RtT2FjZ09hV3NPYVZzT2FOcnUrOGpPVytoZVM0aSthc29laS9tK1dGcGVXR2plZVVxRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0hSNWNHVnZaaUJ2WW1vdWMzVmpZMlZ6Y3lBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMkpxTG5OMVkyTmxjM01vY21WaGJFUmhkR0VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXRnNSR0YwWVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURudkpQbHJaamxyWmpsZ3FoY2JpQWdJQ0FnSUNBZ0lDQWdJR05oWTJobFRXRnVZV2RsY2k1elpYUW9iMkpxTENCeVpXRnNSR0YwWVNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlEbWpxWGxqNlBvdjVUbG01N2xwTEhvdEtYbm9JRmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUtHOWlhaTVqWVhSamFFVnljbTl5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJRzF6WnlBOUlHVnljbTl5U0dGdVpHeGxjaTVuWlhSRmNuSnZjazF6WnloeVpYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaHRjMmN1WTI5dWRHVnVkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnljbTl5U0dGdVpHeGxjaTVzYjJkcFkwVnljbTl5S0c5aWFpd2djbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQzh2SUdoMGRIQno2TCtVNVp1ZTU0cTI1b0NCNTZDQjZaMmVNakF3WEc0Z0lDQWdJQ0FnSUdsbUtHOWlhaTVqWVhSamFFVnljbTl5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9jbVZ6TG5OMFlYUjFjME52WkdVdWRHOVRkSEpwYm1jb0tTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGNuSnZja2hoYm1Sc1pYSXViRzluYVdORmNuSnZjaWh2WW1vc0lISmxjeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElISmxjM0J2Ym5ObE8xeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBlcnJvckhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2Vycm9ySGFuZGxlclwiKTtcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXF1ZXN0SGFuZGxlclwiKTtcbnZhciBjaGVja1Nlc3Npb25Qcm9taXNlID0gbnVsbDtcbmZ1bmN0aW9uIGNoZWNrU2Vzc2lvbigpIHtcbiAgICBpZiAoIWNoZWNrU2Vzc2lvblByb21pc2UpIHtcbiAgICAgICAgY2hlY2tTZXNzaW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwid3guY2hlY2tTZXNzaW9uKClcIik7XG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIHd4LmNoZWNrU2Vzc2lvbih7XG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0xvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5yZXBvcnQoJ3d4X2NoZWNrU2Vzc2lvbicsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNoZWNrU2Vzc2lvblByb21pc2U7XG59XG5mdW5jdGlvbiBpc1Nlc3Npb25FeHBpcmVPckVtcHR5KCkge1xuICAgIGlmICghc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSAmJiBuZXcgRGF0ZSgpLmdldFRpbWUoKSA+IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSkge1xuICAgICAgICBkZWxTZXNzaW9uKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBjaGVja0xvZ2luKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGlmIChpc1Nlc3Npb25FeHBpcmVPckVtcHR5KCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRvTG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxudmFyIGxvZ2luUHJvbWlzZSA9IG51bGw7XG5mdW5jdGlvbiBkb0xvZ2luKCkge1xuICAgIGlmICghbG9naW5Qcm9taXNlKSB7XG4gICAgICAgIGxvZ2luUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGxvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbG9naW5Qcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGxvZ2luUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbG9naW5Qcm9taXNlO1xufVxuZnVuY3Rpb24gbG9naW4oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3d4LmxvZ2luJyk7XG4gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB3eC5sb2dpbih7XG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGUyU2Vzc2lvbihyZXMuY29kZSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiBcIueZu+W9leWksei0pVwiLCBcImNvbnRlbnRcIjogXCLor7fnqI3lkI7ph43or5VbY29kZSDojrflj5blpLHotKVdXCIgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LnJlcG9ydCgnd3hfbG9naW4nLCBzdGFydCwgZW5kKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiBcIueZu+W9leWksei0pVwiLCBcImNvbnRlbnRcIjogcmVzLmVyck1zZyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzZXRTZXNzaW9uKHNlc3Npb24pIHtcbiAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSBzZXNzaW9uO1xuICAgIGNvbmZpZ18xLmRlZmF1bHQuZG9Ob3RDaGVja1Nlc3Npb24gPSB0cnVlO1xuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWU7XG4gICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xuICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgICAgICBkYXRhOiBTdHJpbmcoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSxcbiAgICAgICAgZGF0YTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjb2RlMlNlc3Npb24oY29kZSkge1xuICAgIHZhciBkYXRhO1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmRhdGEgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmRhdGEoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGRhdGEgPSBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YSB8fCB7fTtcbiAgICB9XG4gICAgZGF0YVtjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uY29kZU5hbWVdID0gY29kZTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgd3gucmVxdWVzdCh7XG4gICAgICAgICAgICB1cmw6IHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC5mb3JtYXQoY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCksXG4gICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgbWV0aG9kOiBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ucmVwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5yZXBvcnQoY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnJlcG9ydCwgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5zdWNjZXNzKHJlcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSAmJiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBTdHJpbmcoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmdldEVycm9yTXNnKHJlcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IFwi55m75b2V5aSx6LSlXCIsIFwiY29udGVudFwiOiBcIuivt+eojeWQjumHjeivlVwiIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IFwi55m75b2V5aSx6LSlXCIsIFwiY29udGVudFwiOiBcIuivt+eojeWQjumHjeivlVwiIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGRlbFNlc3Npb24oKSB7XG4gICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gJyc7XG4gICAgd3gucmVtb3ZlU3RvcmFnZSh7XG4gICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZVxuICAgIH0pO1xuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBJbmZpbml0eTtcbiAgICAgICAgd3gucmVtb3ZlU3RvcmFnZSh7XG4gICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleVxuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYWluKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJldHVybiBjaGVja0xvZ2luKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA/IFByb21pc2UucmVzb2x2ZSgpIDogY2hlY2tTZXNzaW9uKCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIHRpdGxlID0gX2EudGl0bGUsIGNvbnRlbnQgPSBfYS5jb250ZW50O1xuICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5kb0Vycm9yKHRpdGxlLCBjb250ZW50KTtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0aXRsZTogdGl0bGUsIGNvbnRlbnQ6IGNvbnRlbnQgfSk7XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBfYS50aXRsZSwgY29udGVudCA9IF9hLmNvbnRlbnQ7XG4gICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmRvRXJyb3IodGl0bGUsIGNvbnRlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiB0aXRsZSwgY29udGVudDogY29udGVudCB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgbWFpbjogbWFpbixcbiAgICBzZXRTZXNzaW9uOiBzZXRTZXNzaW9uLFxuICAgIGRlbFNlc3Npb246IGRlbFNlc3Npb25cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ6YzJsdmJrMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMM05sYzNOcGIyNU5ZVzVoWjJWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc01FTkJRVzlETzBGQlEzQkRMREJEUVVGdlF6dEJRVU53UXl3clEwRkJlVU03UVVGRGVrTXNkVVJCUVdsRU8wRkJRMnBFTEcxRVFVRTJRenRCUVVjM1F5eEpRVUZKTEcxQ1FVRnRRaXhIUVVGUkxFbEJRVWtzUTBGQlF6dEJRVVZ3UXl4VFFVRlRMRmxCUVZrN1NVRkRha0lzU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhGUVVGRk8xRkJRM1JDTEcxQ1FVRnRRaXhIUVVGSExFbEJRVWtzVDBGQlR5eERRVUZETEZWQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwN1dVRkRPVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eERRVUZETzFsQlEycERMRWxCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1dVRkRia01zUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXp0blFrRkRXaXhQUVVGUE8yOUNRVVZJTEU5QlFVOHNUMEZCVHl4RlFVRkZMRU5CUVVNN1owSkJRM0pDTEVOQlFVTTdaMEpCUTBRc1NVRkJTVHR2UWtGRlFTeFZRVUZWTEVWQlFVVXNRMEZCUXp0dlFrRkRZaXhQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXp0M1FrRkRiRUlzVDBGQlR5eFBRVUZQTEVWQlFVVXNRMEZCUXp0dlFrRkRja0lzUTBGQlF5eEZRVUZGTEZWQlFVTXNSMEZCVVR0M1FrRkRVaXhQUVVGUExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRka0lzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTFBc1EwRkJRenRuUWtGRFJDeFJRVUZSTzI5Q1FVTktMRWxCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN2IwSkJRMnBETERCQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUXpORUxFTkJRVU03WVVGRFNpeERRVUZETEVOQlFVRTdVVUZEVGl4RFFVRkRMRU5CUVVNc1EwRkJRVHRMUVVOTU8wbEJRMFFzVDBGQlR5eHRRa0ZCYlVJc1EwRkJRenRCUVVNdlFpeERRVUZETzBGQlIwUXNVMEZCVXl4elFrRkJjMEk3U1VGRE0wSXNTVUZCU1N4RFFVRkRMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFGQlJXcENMRTlCUVU4c1NVRkJTU3hEUVVGQk8wdEJRMlE3U1VGRFJDeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc2FVSkJRV2xDTEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSVHRSUVVWNlJTeFZRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTmlMRTlCUVU4c1NVRkJTU3hEUVVGQk8wdEJRMlE3U1VGRFJDeFBRVUZQTEV0QlFVc3NRMEZCUVR0QlFVTm9RaXhEUVVGRE8wRkJSVVFzVTBGQlV5eFZRVUZWTzBsQlEyWXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhWUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTzFGQlF5OUNMRWxCUVVrc2MwSkJRWE5DTEVWQlFVVXNSVUZCUlR0WlFVVXhRaXhuUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU5vUXl4UFFVRlBMRTlCUVU4c1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF6dG5Ra0ZEYkVJc1QwRkJUeXhQUVVGUExFVkJRVVVzUTBGQlF6dFpRVU55UWl4RFFVRkRMRVZCUVVVc1ZVRkJReXhIUVVGUk8yZENRVU5TTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM1pDTEVOQlFVTXNRMEZCUXl4RFFVRkJPMU5CUTB3N1lVRkJUVHRaUVVWSUxFOUJRVThzVDBGQlR5eEZRVUZGTEVOQlFVTTdVMEZEY0VJN1NVRkRUQ3hEUVVGRExFTkJRVU1zUTBGQlFUdEJRVU5PTEVOQlFVTTdRVUZIUkN4SlFVRkpMRmxCUVZrc1IwRkJVU3hKUVVGSkxFTkJRVU03UVVGRk4wSXNVMEZCVXl4UFFVRlBPMGxCUTFvc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJUdFJRVU5tTEZsQlFWa3NSMEZCUnl4SlFVRkpMRTlCUVU4c1EwRkJReXhWUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTzFsQlEzWkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF6dG5Ra0ZEVkN4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRE8yZENRVU53UWl4UFFVRlBMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJRM0pDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGRExFZEJRVWM3WjBKQlExUXNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGNFSXNUMEZCVHl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGRrSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hEUVVGRExFTkJRVU1zUTBGQlFUdExRVU5NTzBsQlEwUXNUMEZCVHl4WlFVRlpMRU5CUVVNN1FVRkRlRUlzUTBGQlF6dEJRVVZFTEZOQlFWTXNTMEZCU3p0SlFVTldMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTXZRaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMUZCUTNoQ0xFbEJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRGJrTXNSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVOTUxFOUJRVThzV1VGQlF5eEhRVUZITzJkQ1FVTlFMRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJUdHZRa0ZEVml4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0M1FrRkRlRUlzVDBGQlR5eFBRVUZQTEVWQlFVVXNRMEZCUXp0dlFrRkRja0lzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1IwRkJSenQzUWtGRFZDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGRrSXNRMEZCUXl4RFFVRkRMRU5CUVVFN2FVSkJRMHc3Y1VKQlFVMDdiMEpCUTBnc1QwRkJUeXhOUVVGTkxFTkJRVU1zUlVGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hyUWtGQmEwSXNSVUZCUXl4RFFVRkRMRU5CUVVNN2FVSkJRMnBGTzFsQlEwd3NRMEZCUXp0WlFVTkVMRkZCUVZFN1owSkJRMG9zU1VGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dG5Ra0ZEYWtNc01FSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEY0VRc1EwRkJRenRaUVVORUxFbEJRVWtzV1VGQlF5eEhRVUZITzJkQ1FVTktMRTlCUVU4c1RVRkJUU3hEUVVGRExFVkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlF5eERRVUZETEVOQlFVTTdXVUZETVVRc1EwRkJRenRUUVVOS0xFTkJRVU1zUTBGQlFUdEpRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVWRUxGTkJRVk1zVlVGQlZTeERRVUZETEU5QlFXVTdTVUZETDBJc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMGxCUlhwQ0xHZENRVUZOTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzU1VGQlNTeERRVUZETzBsQlJXaERMRWxCUVVrc1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJc1NVRkJTU3huUWtGQlRTeERRVUZETEdkQ1FVRm5RaXhGUVVGRk8xRkJRM0pFTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJc1EwRkJRenRSUVVOMlJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTFZc1IwRkJSeXhGUVVGRkxHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ08xbEJRelZDTEVsQlFVa3NSVUZCUlN4TlFVRk5MRU5CUVVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTTdVMEZEY2tNc1EwRkJReXhEUVVGQk8wdEJRMHc3U1VGRFJDeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTFZc1IwRkJSeXhGUVVGRkxHZENRVUZOTEVOQlFVTXNWMEZCY1VJN1VVRkRha01zU1VGQlNTeEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1QwRkJUenRMUVVOMlFpeERRVUZETEVOQlFVTTdRVUZEVUN4RFFVRkRPMEZCUlVRc1UwRkJVeXhaUVVGWkxFTkJRVU1zU1VGQldUdEpRVU01UWl4SlFVRkpMRWxCUVZNc1EwRkJRenRKUVVWa0xFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEycEVMRWxCUVVrc1IwRkJSeXhuUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRMUVVOMFF6dFRRVUZOTzFGQlEwZ3NTVUZCU1N4SFFVRkhMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNN1MwRkRNVU03U1VGRFJDeEpRVUZKTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlV5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUlRWRExFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUVHRSUVVNdlFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzFGQlEycERMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU03V1VGRFVDeEhRVUZITEVWQlFVVXNkMEpCUVdNc1EwRkJReXhOUVVGTkxFTkJRVU1zWjBKQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1IwRkJSeXhEUVVGRE8xbEJRM0JFTEVsQlFVa3NUVUZCUVR0WlFVTktMRTFCUVUwc1JVRkJSU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRWxCUVVrc1MwRkJTenRaUVVNMVF5eFBRVUZQTEZsQlFVTXNSMEZCYjBNN1owSkJRM2hETEVsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1MwRkJTeXhIUVVGSExFVkJRVVU3YjBKQlJYaENMRWxCUVVrc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RlFVRkZPM2RDUVVNM1FpeEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzNkQ1FVTXZRaXd3UWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlFUdHhRa0ZEYmtVN2IwSkJSVVFzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMjlDUVVOWUxFbEJRVWs3ZDBKQlEwRXNRMEZCUXl4SFFVRkhMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03Y1VKQlF6bERPMjlDUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTzNGQ1FVTllPMjlDUVVWRUxFbEJRVWtzUTBGQlF5eEZRVUZGTzNkQ1FVTklMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0M1FrRkZia0lzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTTdkMEpCUldoRExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMR2RDUVVGblFpeEZRVUZGT3pSQ1FVTnlSQ3huUWtGQlRTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdORUpCUTNaRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTTdaME5CUTFZc1IwRkJSeXhGUVVGRkxHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ08yZERRVU0xUWl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRPelpDUVVOeVF5eERRVUZETEVOQlFVRTdlVUpCUTB3N2QwSkJRMFFzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXpzMFFrRkRWaXhIUVVGSExFVkJRVVVzWjBKQlFVMHNRMEZCUXl4WFFVRlhPelJDUVVOMlFpeEpRVUZKTEVWQlFVVXNaMEpCUVUwc1EwRkJReXhQUVVGUE8zbENRVU4yUWl4RFFVRkRMRU5CUVVNN2QwSkJRMGdzVDBGQlR5eFBRVUZQTEVWQlFVVXNRMEZCUXp0eFFrRkRjRUk3ZVVKQlFVMDdkMEpCUTBnc1QwRkJUeXhOUVVGTkxFTkJRVU1zYzBKQlFWa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHhRa0ZEYUVRN2FVSkJRMG83Y1VKQlFVMDdiMEpCUTBnc1QwRkJUeXhOUVVGTkxFTkJRVU1zUlVGQlF5eExRVUZMTEVWQlFVVXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hQUVVGUExFVkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTjBSRHRaUVVOTUxFTkJRVU03V1VGRFJDeFJRVUZSTzFsQlExSXNRMEZCUXp0WlFVTkVMRWxCUVVrc1JVRkJSVHRuUWtGRFJpeFBRVUZQTEUxQlFVMHNRMEZCUXl4RlFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUXl4RFFVRkRMRU5CUVVNN1dVRkRka1FzUTBGQlF6dFRRVU5LTEVOQlFVTXNRMEZCUVR0SlFVTk9MRU5CUVVNc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVWRFTEZOQlFWTXNWVUZCVlR0SlFVTm1MR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTndRaXhGUVVGRkxFTkJRVU1zWVVGQllTeERRVUZETzFGQlEySXNSMEZCUnl4RlFVRkZMR2RDUVVGTkxFTkJRVU1zVjBGQmNVSTdTMEZEY0VNc1EwRkJReXhEUVVGRE8wbEJRMGdzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMR2xDUVVGcFFpeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1owSkJRV2RDTEVWQlFVVTdVVUZEY2tRc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVkQlFVY3NVVUZCVVN4RFFVRkRPMUZCUTJoRExFVkJRVVVzUTBGQlF5eGhRVUZoTEVOQlFVTTdXVUZEWWl4SFFVRkhMRVZCUVVVc1owSkJRVTBzUTBGQlF5eG5Ra0ZCWjBJN1UwRkRMMElzUTBGQlF5eERRVUZCTzB0QlEwdzdRVUZEVEN4RFFVRkRPMEZCUlVRc1UwRkJVeXhKUVVGSk8wbEJRMVFzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VlFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTk8xRkJReTlDTEU5QlFVOHNWVUZCVlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRM0pDTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRVHRSUVVONFJTeERRVUZETEVWQlFVVXNWVUZCUXl4RlFVRm5RanRuUWtGQlppeG5Ra0ZCU3l4RlFVRkZMRzlDUVVGUE8xbEJRMllzYzBKQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFsQlEzSkRMRTlCUVU4c1RVRkJUU3hEUVVGRExFVkJRVU1zUzBGQlN5eFBRVUZCTEVWQlFVVXNUMEZCVHl4VFFVRkJMRVZCUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVOS0xFOUJRVThzVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZEY2tJc1EwRkJReXhGUVVGRkxGVkJRVU1zUlVGQlowSTdaMEpCUVdZc1owSkJRVXNzUlVGQlJTeHZRa0ZCVHp0WlFVTm1MSE5DUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVOeVF5eFBRVUZQTEUxQlFVMHNRMEZCUXl4RlFVRkRMRXRCUVVzc1QwRkJRU3hGUVVGRkxFOUJRVThzVTBGQlFTeEZRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndReXhEUVVGRExFTkJRVU1zUTBGQlFUdEpRVU5PTEVOQlFVTXNRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVWRUxHdENRVUZsTzBsQlExZ3NTVUZCU1N4TlFVRkJPMGxCUTBvc1ZVRkJWU3haUVVGQk8wbEJRMVlzVlVGQlZTeFpRVUZCTzBOQlEySXNRMEZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCemRHRjBkWE1nWm5KdmJTQW5MaTR2YzNSdmNtVXZjM1JoZEhWekoxeHVhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YRzVwYlhCdmNuUWdaWEp5YjNKSVlXNWtiR1Z5SUdaeWIyMGdKeTR2WlhKeWIzSklZVzVrYkdWeUoxeHVhVzF3YjNKMElHUjFjbUYwYVc5dVVtVndiM0owWlhJZ1puSnZiU0FuTGk5a2RYSmhkR2x2YmxKbGNHOXlkR1Z5SjF4dWFXMXdiM0owSUhKbGNYVmxjM1JJWVc1a2JHVnlJR1p5YjIwZ0p5NHZjbVZ4ZFdWemRFaGhibVJzWlhJblhHNWNiaThxSU9lVW4rV1J2ZVdScU9hY24rV0doZVdQcXVXQm11UzRnT2Fzb2VlYWhHTm9aV05yVTJWemMybHZiaUFxTDF4dWJHVjBJR05vWldOclUyVnpjMmx2YmxCeWIyMXBjMlU2SUdGdWVTQTlJRzUxYkd3N1hHNWNibVoxYm1OMGFXOXVJR05vWldOclUyVnpjMmx2YmlncElIdGNiaUFnSUNCcFppQW9JV05vWldOclUyVnpjMmx2YmxCeWIyMXBjMlVwSUh0Y2JpQWdJQ0FnSUNBZ1kyaGxZMnRUWlhOemFXOXVVSEp2YldselpTQTlJRzVsZHlCUWNtOXRhWE5sS0NoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTnZiR1V1Ykc5bktGd2lkM2d1WTJobFkydFRaWE56YVc5dUtDbGNJaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCemRHRnlkQ0E5SUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZDNndVkyaGxZMnRUWlhOemFXOXVLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZFdOalpYTnpLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeURubWJ2bHZaWG1nSUhtbklubWxZanZ2SXprdUpUbG5Lam1uS3pubEovbGtiM2xrYWptbkovbGhvWG1sNkRwb2J2bGhvM21vNERwcW96a3VvWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzI5c2RtVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdaaGFXd29LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJT2VadStXOWxlYUFnZWkvaCthY24xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWld4VFpYTnphVzl1S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmtiMHh2WjJsdUtDa3VkR2hsYmlnb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUxDQW9jbVZ6T2lCaGJua3BQVDU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtISmxjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHVnVaQ0E5SUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrZFhKaGRHbHZibEpsY0c5eWRHVnlMbkpsY0c5eWRDZ25kM2hmWTJobFkydFRaWE56YVc5dUp5d2djM1JoY25Rc0lHVnVaQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU2xjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHTm9aV05yVTJWemMybHZibEJ5YjIxcGMyVTdYRzU5WEc1Y2JpOHFJT1dJcE9hV3JYTmxjM05wYjI3bW1LL2xrS2JrdUxybnFicm1pSmJsdDdMb3Y0Zm1uSjhnS2k5Y2JtWjFibU4wYVc5dUlHbHpVMlZ6YzJsdmJrVjRjR2x5WlU5eVJXMXdkSGtvS1NCN1hHNGdJQ0FnYVdZZ0tDRnpkR0YwZFhNdWMyVnpjMmx2YmlrZ2UxeHVJQ0FnSUNBZ0lDQXZMeURscG9MbW5wem52SlBsclpqa3VLM21zcUhtbklselpYTnphVzl1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbFhHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoamIyNW1hV2N1YzJWemMybHZia1Y0Y0dseVpWUnBiV1VnSmlZZ2JtVjNJRVJoZEdVb0tTNW5aWFJVYVcxbEtDa2dQaUJ6ZEdGMGRYTXVjMlZ6YzJsdmJrVjRjR2x5WlNrZ2UxeHVJQ0FnSUNBZ0lDQXZMeURscG9MbW5wem1uSW5vcnI3bnZhN21uS3psbkxCelpYTnphVzl1NTd5VDVhMlk1cGUyNlplMDc3eU01TGlVNTd5VDVhMlk1cGUyNlplMDViZXk1WWl3WEc0Z0lDQWdJQ0FnSUdSbGJGTmxjM05wYjI0b0tUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1ZjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTm9aV05yVEc5bmFXNG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6VTJWemMybHZia1Y0Y0dseVpVOXlSVzF3ZEhrb0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1cktoNXB5SjU1bTc2Wm1HNW9DQjc3eU01TGlONlp5QTZLYUI1WWFOWTJobFkydFRaWE56YVc5dVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1bWFXY3VaRzlPYjNSRGFHVmphMU5sYzNOcGIyNGdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1J2VEc5bmFXNG9LUzUwYUdWdUtDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemIyeDJaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU3dnS0hKbGN6b2dZVzU1S1QwK2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcFhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlEbnZKUGxyWmprdUszbW5JbHpaWE56YVc5dTVMaVU1cHlxNkwrSDVweWZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemIyeDJaU2dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlNsY2JuMWNibHh1THlvZzU1bTc2Wm1HNXJXQjU2aUw1NXFFY0hKdmJXbHpaU0FxTDF4dWJHVjBJR3h2WjJsdVVISnZiV2x6WlRvZ1lXNTVJRDBnYm5Wc2JEdGNibHh1Wm5WdVkzUnBiMjRnWkc5TWIyZHBiaWdwSUh0Y2JpQWdJQ0JwWmlBb0lXeHZaMmx1VUhKdmJXbHpaU2tnZTF4dUlDQWdJQ0FnSUNCc2IyZHBibEJ5YjIxcGMyVWdQU0J1WlhjZ1VISnZiV2x6WlNnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2IyZHBiaWdwTG5Sb1pXNG9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHZaMmx1VUhKdmJXbHpaU0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcExtTmhkR05vS0NoeVpYTXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc2IyZHBibEJ5YjIxcGMyVWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYkc5bmFXNVFjbTl0YVhObE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCc2IyZHBiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExteHZaeWduZDNndWJHOW5hVzRuS1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGNuUWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JpQWdJQ0FnSUNBZ2QzZ3ViRzluYVc0b2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNWalkyVnpjeWh5WlhNcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WekxtTnZaR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjlrWlRKVFpYTnphVzl1S0hKbGN5NWpiMlJsS1M1MGFHVnVLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTnZiSFpsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBwTG1OaGRHTm9LQ2h5WlhNcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb2NtVnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtIdDBhWFJzWlRvZ1hDTG5tYnZsdlpYbHBMSG90S1ZjSWl3Z1hDSmpiMjUwWlc1MFhDSTZJRndpNksrMzU2aU41WkNPNlllTjZLK1ZXMk52WkdVZzZJNjM1WStXNWFTeDZMU2xYVndpZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR052YlhCc1pYUmxLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1Z1WkNBOUlHNWxkeUJFWVhSbEtDa3VaMlYwVkdsdFpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSXVjbVZ3YjNKMEtDZDNlRjlzYjJkcGJpY3NJSE4wWVhKMExDQmxibVFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHWmhhV3dvY21WektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENoN2RHbDBiR1U2SUZ3aTU1bTc1YjJWNWFTeDZMU2xYQ0lzSUZ3aVkyOXVkR1Z1ZEZ3aU9pQnlaWE11WlhKeVRYTm5mU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmU2xjYm4xY2JseHVablZ1WTNScGIyNGdjMlYwVTJWemMybHZiaWh6WlhOemFXOXVPaUJ6ZEhKcGJtY3BJSHRjYmlBZ0lDQnpkR0YwZFhNdWMyVnpjMmx2YmlBOUlITmxjM05wYjI0N1hHNGdJQ0FnTHk4ZzVvMmk1WnVlNXAybDU1cUVjMlZ6YzJsdmJ1KzhqT1M0amVtY2dPaW1nZVdHaldOb1pXTnJVMlZ6YzJsdmJseHVJQ0FnSUdOdmJtWnBaeTVrYjA1dmRFTm9aV05yVTJWemMybHZiaUE5SUhSeWRXVTdYRzRnSUNBZ0x5OGc1YWFDNXA2YzVweUo2SzYrNTcydTVweXM1Wnl3YzJWemMybHZidWkvaCthY24rYVh0dW1YdEZ4dUlDQWdJR2xtSUNoamIyNW1hV2N1YzJWemMybHZia1Y0Y0dseVpWUnBiV1VnSmlZZ1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVkxaWGtwSUh0Y2JpQWdJQ0FnSUNBZ2MzUmhkSFZ6TG5ObGMzTnBiMjVGZUhCcGNtVWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1NBcklHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxWR2x0WlR0Y2JpQWdJQ0FnSUNBZ2QzZ3VjMlYwVTNSdmNtRm5aU2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnJaWGs2SUdOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFMyVjVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVG9nVTNSeWFXNW5LSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsS1Z4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgxY2JpQWdJQ0IzZUM1elpYUlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdhMlY1T2lCamIyNW1hV2N1YzJWemMybHZiazVoYldVZ1lYTWdjM1J5YVc1bkxGeHVJQ0FnSUNBZ0lDQmtZWFJoT2lCemRHRjBkWE11YzJWemMybHZibHh1SUNBZ0lIMHBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmpiMlJsTWxObGMzTnBiMjRvWTI5a1pUb2djM1J5YVc1bktTQjdYRzRnSUNBZ2JHVjBJR1JoZEdFNklHRnVlVHRjYmlBZ0lDQXZMeUJqYjJSbFZHOVRaWE56YVc5dUxtUmhkR0htbEsvbWpJSGxoNzNtbGJCY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVqYjJSbFZHOVRaWE56YVc5dUxtUmhkR0VnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCa1lYUmhJRDBnWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dVpHRjBZU2dwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR1JoZEdFZ1BTQmpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTVrWVhSaElIeDhJSHQ5TzF4dUlDQWdJSDFjYmlBZ0lDQmtZWFJoVzJOdmJtWnBaeTVqYjJSbFZHOVRaWE56YVc5dUxtTnZaR1ZPWVcxbElWMGdQU0JqYjJSbE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYkdWMElITjBZWEowSUQwZ2JtVjNJRVJoZEdVb0tTNW5aWFJVYVcxbEtDazdYRzRnSUNBZ0lDQWdJSGQ0TG5KbGNYVmxjM1FvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCeVpYRjFaWE4wU0dGdVpHeGxjaTVtYjNKdFlYUW9ZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1ZFhKc0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUdSaGRHRXNYRzRnSUNBZ0lDQWdJQ0FnSUNCdFpYUm9iMlE2SUdOdmJtWnBaeTVqYjJSbFZHOVRaWE56YVc5dUxtMWxkR2h2WkNCOGZDQW5SMFZVSnl4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4xWTJObGMzTW9jbVZ6T2lCM2VDNVNaWEYxWlhOMFUzVmpZMlZ6YzBOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjeTV6ZEdGMGRYTkRiMlJsSUQwOVBTQXlNREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnNklDWDVwZTI1TGlLNW9xbFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNXlaWEJ2Y25RcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0JsYm1RZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSXVjbVZ3YjNKMEtHTnZibVpwWnk1amIyUmxWRzlUWlhOemFXOXVMbkpsY0c5eWRDd2djM1JoY25Rc0lHVnVaQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGRDQnpJRDBnWENKY0lqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITWdQU0JqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1emRXTmpaWE56S0hKbGN5NWtZWFJoS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMFlYUjFjeTV6WlhOemFXOXVJRDBnY3p0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklPYU5vdVdibnVhZHBlZWFoSE5sYzNOcGIyN3Z2SXprdUkzcG5JRG9wb0hsaG8xamFHVmphMU5sYzNOcGIyNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibVpwWnk1a2IwNXZkRU5vWldOclUyVnpjMmx2YmlBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlEbHBvTG1ucHptbklub3JyN252YTdtbkt6bG5MQnpaWE56YVc5dTZMK0g1cHlmNXBlMjZaZTBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WVWFXMWxJQ1ltSUdOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFMyVjVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzUmhkSFZ6TG5ObGMzTnBiMjVGZUhCcGNtVWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1NBcklHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxWR2x0WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjNlQzV6WlhSVGRHOXlZV2RsS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJWNU9pQmpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVXRsZVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdGMFlUb2dVM1J5YVc1bktITjBZWFIxY3k1elpYTnphVzl1Ulhod2FYSmxLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCM2VDNXpaWFJUZEc5eVlXZGxLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCclpYazZJR052Ym1acFp5NXpaWE56YVc5dVRtRnRaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1lYUmhPaUJ6ZEdGMGRYTXVjMlZ6YzJsdmJseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENobGNuSnZja2hoYm1Sc1pYSXVaMlYwUlhKeWIzSk5jMmNvY21WektTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0h0MGFYUnNaVG9nWENMbm1idmx2WlhscExIb3RLVmNJaXdnWENKamIyNTBaVzUwWENJNklGd2k2SyszNTZpTjVaQ082WWVONksrVlhDSjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXRjR3hsZEdVb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWm1GcGJEb2dLQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvZTNScGRHeGxPaUJjSXVlWnUrVzlsZVdrc2VpMHBWd2lMQ0JjSW1OdmJuUmxiblJjSWpvZ1hDTG9yN2ZucUkzbGtJN3BoNDNvcjVWY0luMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lIMHBYRzU5WEc1Y2JpOHFJT2E0aGVlcHVuTmxjM05wYjI0Z0tpOWNibVoxYm1OMGFXOXVJR1JsYkZObGMzTnBiMjRvS1NCN1hHNGdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNGdQU0FuSnp0Y2JpQWdJQ0IzZUM1eVpXMXZkbVZUZEc5eVlXZGxLSHRjYmlBZ0lDQWdJQ0FnYTJWNU9pQmpiMjVtYVdjdWMyVnpjMmx2Yms1aGJXVWdZWE1nYzNSeWFXNW5YRzRnSUNBZ2ZTazdYRzRnSUNBZ2FXWWdLR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsVkdsdFpTQW1KaUJqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlV0bGVTa2dlMXh1SUNBZ0lDQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJrVjRjR2x5WlNBOUlFbHVabWx1YVhSNU8xeHVJQ0FnSUNBZ0lDQjNlQzV5WlcxdmRtVlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUd0bGVUb2dZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZMWlhsY2JpQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUcxaGFXNG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOb1pXTnJURzluYVc0b0tTNTBhR1Z1S0NncElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCamIyNW1hV2N1Wkc5T2IzUkRhR1ZqYTFObGMzTnBiMjRnUHlCUWNtOXRhWE5sTG5KbGMyOXNkbVVvS1NBNklHTm9aV05yVTJWemMybHZiaWdwWEc0Z0lDQWdJQ0FnSUgwc0lDaDdkR2wwYkdVc0lHTnZiblJsYm5SOUtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxjbkp2Y2toaGJtUnNaWEl1Wkc5RmNuSnZjaWgwYVhSc1pTd2dZMjl1ZEdWdWRDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSHQwYVhSc1pTd2dZMjl1ZEdWdWRIMHBPMXh1SUNBZ0lDQWdJQ0I5S1M1MGFHVnVLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLQ2s3WEc0Z0lDQWdJQ0FnSUgwc0lDaDdkR2wwYkdVc0lHTnZiblJsYm5SOUtUMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnljbTl5U0dGdVpHeGxjaTVrYjBWeWNtOXlLSFJwZEd4bExDQmpiMjUwWlc1MEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9lM1JwZEd4bExDQmpiMjUwWlc1MGZTazdYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmU2xjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2UxeHVJQ0FnSUcxaGFXNHNYRzRnSUNBZ2MyVjBVMlZ6YzJsdmJpeGNiaUFnSUNCa1pXeFRaWE56YVc5dVhHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGRlZmF1bHRDb25maWcgPSB7XG4gICAgc2Vzc2lvbk5hbWU6IFwic2Vzc2lvblwiLFxuICAgIGxvZ2luVHJpZ2dlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBjb2RlVG9TZXNzaW9uOiB7XG4gICAgICAgIHVybDogXCJcIixcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKCkgeyB9XG4gICAgfSxcbiAgICBzdWNjZXNzVHJpZ2dlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIHVybFBlcmZpeDogXCJcIixcbiAgICBzdWNjZXNzRGF0YTogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0sXG4gICAgZG9Ob3RDaGVja1Nlc3Npb246IGZhbHNlLFxuICAgIGVycm9yVGl0bGU6IFwi5pON5L2c5aSx6LSlXCIsXG4gICAgZXJyb3JDb250ZW50OiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICByZUxvZ2luTGltaXQ6IDMsXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcbiAgICByZXBvcnRDR0k6IGZhbHNlLFxuICAgIG1vY2tKc29uOiBmYWxzZSxcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcbiAgICBzZXNzaW9uRXhwaXJlS2V5OiBcInNlc3Npb25FeHBpcmVLZXlcIlxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IGRlZmF1bHRDb25maWc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMjl1Wm1sbkxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNOMGIzSmxMMk52Ym1acFp5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVWQkxFbEJRVTBzWVVGQllTeEhRVUZuUWp0SlFVTXZRaXhYUVVGWExFVkJRVVVzVTBGQlV6dEpRVU4wUWl4WlFVRlpPMUZCUTFJc1QwRkJUeXhMUVVGTExFTkJRVUU3U1VGRGFFSXNRMEZCUXp0SlFVTkVMR0ZCUVdFc1JVRkJSVHRSUVVOWUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNUMEZCVHl4RlFVRkZMR05CUVUwc1EwRkJRenRMUVVOdVFqdEpRVU5FTEdOQlFXTTdVVUZEVml4UFFVRlBMRWxCUVVrc1EwRkJRVHRKUVVObUxFTkJRVU03U1VGRFJDeFRRVUZUTEVWQlFVVXNSVUZCUlR0SlFVTmlMRmRCUVZjc1dVRkJReXhIUVVGUk8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkJPMGxCUTJRc1EwRkJRenRKUVVORUxHbENRVUZwUWl4RlFVRkZMRXRCUVVzN1NVRkRlRUlzVlVGQlZTeEZRVUZGTEUxQlFVMDdTVUZEYkVJc1dVRkJXU3haUVVGRExFZEJRVkU3VVVGRGFrSXNUMEZCVHl4SFFVRkhMRU5CUVVFN1NVRkRaQ3hEUVVGRE8wbEJRMFFzV1VGQldTeEZRVUZGTEVOQlFVTTdTVUZEWml4aFFVRmhMRVZCUVVVc1NVRkJTVHRKUVVOdVFpeFRRVUZUTEVWQlFVVXNTMEZCU3p0SlFVTm9RaXhSUVVGUkxFVkJRVVVzUzBGQlN6dEpRVU5tTEZWQlFWVXNSVUZCUlN4TFFVRkxPMGxCUldwQ0xHZENRVUZuUWl4RlFVRkZMR3RDUVVGclFqdERRVU4yUXl4RFFVRkRPMEZCUlVZc2EwSkJRV1VzWVVGQllTeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ1NVbHVhWFJQY0hScGIyNGdmU0JtY205dElDY3VMaTlwYm5SbGNtWmhZMlVuWEc1Y2JtTnZibk4wSUdSbFptRjFiSFJEYjI1bWFXYzZJRWxKYm1sMFQzQjBhVzl1SUQwZ2UxeHVJQ0FnSUhObGMzTnBiMjVPWVcxbE9pQmNJbk5sYzNOcGIyNWNJaXhjYmlBZ0lDQnNiMmRwYmxSeWFXZG5aWElvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVnh1SUNBZ0lIMHNYRzRnSUNBZ1kyOWtaVlJ2VTJWemMybHZiam9nZTF4dUlDQWdJQ0FnSUNCMWNtdzZJRndpWENJc1hHNGdJQ0FnSUNBZ0lITjFZMk5sYzNNNklDZ3BQVDRnZTMxY2JpQWdJQ0I5TEZ4dUlDQWdJSE4xWTJObGMzTlVjbWxuWjJWeUtDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlZ4dUlDQWdJSDBzWEc0Z0lDQWdkWEpzVUdWeVptbDRPaUJjSWx3aUxGeHVJQ0FnSUhOMVkyTmxjM05FWVhSaEtISmxjem9nWVc1NUtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE5jYmlBZ0lDQjlMRnh1SUNBZ0lHUnZUbTkwUTJobFkydFRaWE56YVc5dU9pQm1ZV3h6WlN4Y2JpQWdJQ0JsY25KdmNsUnBkR3hsT2lCY0l1YVRqZVM5bk9Xa3NlaTBwVndpTEZ4dUlDQWdJR1Z5Y205eVEyOXVkR1Z1ZENoeVpYTTZJR0Z1ZVNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpYRzRnSUNBZ2ZTeGNiaUFnSUNCeVpVeHZaMmx1VEdsdGFYUTZJRE1zWEc0Z0lDQWdaWEp5YjNKRFlXeHNZbUZqYXpvZ2JuVnNiQ3hjYmlBZ0lDQnlaWEJ2Y25SRFIwazZJR1poYkhObExGeHVJQ0FnSUcxdlkydEtjMjl1T2lCbVlXeHpaU3hjYmlBZ0lDQm5iRzlpWVd4RVlYUmhPaUJtWVd4elpTeGNiaUFnSUNBdkx5QnpaWE56YVc5dTVaeW81cHlzNVp5dzU3eVQ1YTJZNTVxRWEyVjVYRzRnSUNBZ2MyVnpjMmx2YmtWNGNHbHlaVXRsZVRvZ1hDSnpaWE56YVc5dVJYaHdhWEpsUzJWNVhDSmNibjA3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdSbFptRjFiSFJEYjI1bWFXYzdYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHNlc3Npb246ICcnLFxuICAgIHNlc3Npb25FeHBpcmU6IEluZmluaXR5XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzNSaGRIVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwzTjBiM0psTDNOMFlYUjFjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMR3RDUVVGbE8wbEJRMWdzVDBGQlR5eEZRVUZGTEVWQlFWazdTVUZGY2tJc1lVRkJZU3hGUVVGRkxGRkJRV3RDTzBOQlF6ZENMRU5CUVVFaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmxlSEJ2Y25RZ1pHVm1ZWFZzZENCN1hHNGdJQ0FnYzJWemMybHZiam9nSnljZ1lYTWdjM1J5YVc1bkxGeHVJQ0FnSUM4dklITmxjM05wYjI3b3Y0Zm1uSi9ubW9UbWw3YnBsN1RuZ3JsY2JpQWdJQ0J6WlhOemFXOXVSWGh3YVhKbE9pQkpibVpwYm1sMGVTQmhjeUJ1ZFcxaVpYSmNibjBnWVhNZ1lXNTVYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gc2hvdyh0eHQpIHtcbiAgICB3eC5zaG93VG9hc3Qoe1xuICAgICAgICB0aXRsZTogdHlwZW9mIHR4dCA9PT0gJ2Jvb2xlYW4nID8gJ+WKoOi9veS4rScgOiB0eHQsXG4gICAgICAgIGljb246ICdsb2FkaW5nJyxcbiAgICAgICAgbWFzazogdHJ1ZSxcbiAgICAgICAgZHVyYXRpb246IDYwMDAwXG4gICAgfSk7XG59XG5mdW5jdGlvbiBoaWRlKCkge1xuICAgIHd4LmhpZGVUb2FzdCh7fSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgc2hvdzogc2hvdyxcbiAgICBoaWRlOiBoaWRlXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYkc5aFpHbHVaeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OTFkR2xzTDJ4dllXUnBibWN1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3hUUVVGVExFbEJRVWtzUTBGQlF5eEhRVUZ4UWp0SlFVTXZRaXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETzFGQlExUXNTMEZCU3l4RlFVRkZMRTlCUVU4c1IwRkJSeXhMUVVGTExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSE8xRkJRemRETEVsQlFVa3NSVUZCUlN4VFFVRlRPMUZCUTJZc1NVRkJTU3hGUVVGRkxFbEJRVWs3VVVGRFZpeFJRVUZSTEVWQlFVVXNTMEZCU3p0TFFVTnNRaXhEUVVGRExFTkJRVUU3UVVGRFRpeERRVUZETzBGQlJVUXNVMEZCVXl4SlFVRkpPMGxCUTFRc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTnlRaXhEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4SlFVRkpMRTFCUVVFN1NVRkRTaXhKUVVGSkxFMUJRVUU3UTBGRFVDeERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpuVnVZM1JwYjI0Z2MyaHZkeWgwZUhRNklHSnZiMnhsWVc0Z2ZDQnpkSEpwYm1jcElIdGNiaUFnSUNCM2VDNXphRzkzVkc5aGMzUW9lMXh1SUNBZ0lDQWdJQ0IwYVhSc1pUb2dkSGx3Wlc5bUlIUjRkQ0E5UFQwZ0oySnZiMnhsWVc0bklEOGdKK1dLb09pOXZlUzRyU2NnT2lCMGVIUXNYRzRnSUNBZ0lDQWdJR2xqYjI0NklDZHNiMkZrYVc1bkp5eGNiaUFnSUNBZ0lDQWdiV0Z6YXpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnWkhWeVlYUnBiMjQ2SURZd01EQXdYRzRnSUNBZ2ZTbGNibjFjYmx4dVpuVnVZM1JwYjI0Z2FHbGtaU2dwSUh0Y2JpQWdJQ0IzZUM1b2FXUmxWRzloYzNRb2UzMHBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCN1hHNGdJQ0FnYzJodmR5eGNiaUFnSUNCb2FXUmxYRzU5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBzZXRQYXJhbXModXJsLCBwYXJhbXMpIHtcbiAgICBpZiAodXJsID09PSB2b2lkIDApIHsgdXJsID0gXCJcIjsgfVxuICAgIHZhciBxdWVyeVN0cmluZ0luZGV4ID0gdXJsLmluZGV4T2YoXCI/XCIpO1xuICAgIHZhciBrdnAgPSB7fTtcbiAgICBpZiAocXVlcnlTdHJpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgIHZhciBvbGRRdWVyeVN0cmluZ18xID0gdXJsLnN1YnN0cihxdWVyeVN0cmluZ0luZGV4ICsgMSkuc3BsaXQoXCImXCIpO1xuICAgICAgICBvbGRRdWVyeVN0cmluZ18xLmZvckVhY2goZnVuY3Rpb24gKHgsIGkpIHtcbiAgICAgICAgICAgIHZhciBrdiA9IG9sZFF1ZXJ5U3RyaW5nXzFbaV0uc3BsaXQoXCI9XCIpO1xuICAgICAgICAgICAga3ZwW2t2WzBdXSA9IGt2WzFdO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAga3ZwID0gX19hc3NpZ24oe30sIGt2cCwgcGFyYW1zKTtcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSBPYmplY3Qua2V5cyhrdnApXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ICsgXCI9XCIgKyBlbmNvZGVVUkkoa3ZwW2tleV0pO1xuICAgIH0pXG4gICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICBpZiAocXVlcnlTdHJpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDAsIHF1ZXJ5U3RyaW5nSW5kZXggKyAxKSArIHF1ZXJ5U3RyaW5nO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVybCArIFwiP1wiICsgcXVlcnlTdHJpbmc7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHNldFBhcmFtczogc2V0UGFyYW1zXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhKc0xtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDNWMGFXd3ZkWEpzTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdRVUZCUVN4VFFVRlRMRk5CUVZNc1EwRkJReXhIUVVGblFpeEZRVUZGTEUxQlFXTTdTVUZCYUVNc2IwSkJRVUVzUlVGQlFTeFJRVUZuUWp0SlFVTXZRaXhKUVVGTkxHZENRVUZuUWl4SFFVRlhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYkVRc1NVRkJTU3hIUVVGSExFZEJRVkVzUlVGQlJTeERRVUZETzBsQlEyeENMRWxCUVVrc1owSkJRV2RDTEVsQlFVa3NRMEZCUXl4RlFVRkZPMUZCUTNaQ0xFbEJRVTBzWjBKQlFXTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVnVSU3huUWtGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJRM2hDTEVsQlFVMHNSVUZCUlN4SFFVRmhMR2RDUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnhFTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka0lzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEVGp0SlFVVkVMRWRCUVVjc1owSkJRVThzUjBGQlJ5eEZRVUZMTEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlRGQ0xFbEJRVTBzVjBGQlZ5eEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8xTkJReTlDTEVkQlFVY3NRMEZCUXl4VlFVRkJMRWRCUVVjN1VVRkRTaXhQUVVGVkxFZEJRVWNzVTBGQlNTeFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGSExFTkJRVU03U1VGRE0wTXNRMEZCUXl4RFFVRkRPMU5CUTBRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXWXNTVUZCU1N4blFrRkJaMElzU1VGQlNTeERRVUZETEVWQlFVVTdVVUZEZGtJc1QwRkJUeXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4blFrRkJaMElzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1MwRkRMMFE3VTBGQlRUdFJRVU5JTEU5QlFVOHNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhYUVVGWExFTkJRVU03UzBGRGJFTTdRVUZEVEN4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeFRRVUZUTEZkQlFVRTdRMEZEV2l4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnYzJWMFVHRnlZVzF6S0hWeWJEb2djM1J5YVc1bklEMGdYQ0pjSWl3Z2NHRnlZVzF6T2lCdlltcGxZM1FwSUh0Y2JpQWdJQ0JqYjI1emRDQnhkV1Z5ZVZOMGNtbHVaMGx1WkdWNE9pQnVkVzFpWlhJZ1BTQjFjbXd1YVc1a1pYaFBaaWhjSWo5Y0lpazdYRzRnSUNBZ2JHVjBJR3QyY0RvZ1lXNTVJRDBnZTMwN1hHNGdJQ0FnYVdZZ0tIRjFaWEo1VTNSeWFXNW5TVzVrWlhnZ1BqMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J2YkdSUmRXVnllVk4wY21sdVp5QTlJSFZ5YkM1emRXSnpkSElvY1hWbGNubFRkSEpwYm1kSmJtUmxlQ0FySURFcExuTndiR2wwS0Z3aUpsd2lLVHRjYmlBZ0lDQWdJQ0FnTHk4Z1FIUnpMV2xuYm05eVpWeHVJQ0FnSUNBZ0lDQnZiR1JSZFdWeWVWTjBjbWx1Wnk1bWIzSkZZV05vS0NoNExDQnBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnJkam9nYzNSeWFXNW5XMTBnUFNCdmJHUlJkV1Z5ZVZOMGNtbHVaMXRwWFM1emNHeHBkQ2hjSWoxY0lpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcmRuQmJhM1piTUYxZElEMGdhM1piTVYwN1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHdDJjQ0E5SUhzdUxpNXJkbkFzSUM0dUxuQmhjbUZ0YzMwN1hHNWNiaUFnSUNCamIyNXpkQ0J4ZFdWeWVWTjBjbWx1WnlBOUlFOWlhbVZqZEM1clpYbHpLR3QyY0NsY2JpQWdJQ0FnSUNBZ0xtMWhjQ2hyWlhrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdBa2UydGxlWDA5Skh0bGJtTnZaR1ZWVWtrb2EzWndXMnRsZVYwcGZXQTdYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdJQ0FnSUM1cWIybHVLRndpSmx3aUtUdGNibHh1SUNBZ0lHbG1JQ2h4ZFdWeWVWTjBjbWx1WjBsdVpHVjRJRDQ5SURBcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIVnliQzV6ZFdKemRISnBibWNvTUN3Z2NYVmxjbmxUZEhKcGJtZEpibVJsZUNBcklERXBJQ3NnY1hWbGNubFRkSEpwYm1jN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ5YkNBcklGd2lQMXdpSUNzZ2NYVmxjbmxUZEhKcGJtYzdYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEc0Z0lDQWdjMlYwVUdGeVlXMXpYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB2ZXJzaW9uID0gX19WRVJTSU9OX187XG5leHBvcnRzLnZlcnNpb24gPSB2ZXJzaW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WeWMybHZiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMM055WXk5MlpYSnphVzl1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJSVUVzU1VGQlRTeFBRVUZQTEVkQlFVY3NWMEZCVnl4RFFVRkRPMEZCUlc1Q0xEQkNRVUZQSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpHVmpiR0Z5WlNCamIyNXpkQ0JmWDFaRlVsTkpUMDVmWHpvZ2MzUnlhVzVuTzF4dVhHNWpiMjV6ZENCMlpYSnphVzl1SUQwZ1gxOVdSVkpUU1U5T1gxODdYRzVjYm1WNGNHOXlkQ0I3SUhabGNuTnBiMjRnZlR0Y2JpSmRmUT09Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZVJlcXVlc3Qvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRDb25maWcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRTZXNzaW9uLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvaW5pdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL2xvZ2luLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL3NldFNlc3Npb24udHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS91cGxvYWRGaWxlLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhY2hlTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2R1cmF0aW9uUmVwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9tb2NrTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvcmVzcG9uc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvc2Vzc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3N0b3JlL2NvbmZpZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvc3RvcmUvc3RhdHVzLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL2xvYWRpbmcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3V0aWwvdXJsLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0RBQTBDLGdDQUFnQztBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUF3RCxrQkFBa0I7QUFDMUU7QUFDQSx5REFBaUQsY0FBYztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQXlDLGlDQUFpQztBQUMxRSx3SEFBZ0gsbUJBQW1CLEVBQUU7QUFDckk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ2xGYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELGVBQWUsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLDhDQUFpQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCwyQ0FBMkMsKzNCOzs7Ozs7Ozs7Ozs7QUNaOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkNBQTJDLG1hOzs7Ozs7Ozs7Ozs7QUNOOUI7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENB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dC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2luZGV4LnRzXCIpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdXJsUGVyZml4OiBjb25maWdfMS5kZWZhdWx0LnVybFBlcmZpeCxcbiAgICAgICAgc2Vzc2lvbkV4cGlyZVRpbWU6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUsXG4gICAgICAgIHNlc3Npb25FeHBpcmVLZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSxcbiAgICAgICAgc2Vzc2lvbkV4cGlyZTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlXG4gICAgfTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWjJWMFEyOXVabWxuTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMkZ3YVM5blpYUkRiMjVtYVdjdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN3d1EwRkJiME03UVVGRGNFTXNNRU5CUVc5RE8wRkJSWEJETEcxQ1FVRmxPMGxCUTFnc1QwRkJUenRSUVVOSUxGTkJRVk1zUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRk5CUVZNN1VVRkRNMElzYVVKQlFXbENMRVZCUVVVc1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJN1VVRkRNME1zWjBKQlFXZENMRVZCUVVVc1owSkJRVTBzUTBGQlF5eG5Ra0ZCWjBJN1VVRkRla01zWVVGQllTeEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1lVRkJZVHRMUVVOMFF5eERRVUZCTzBGQlEwd3NRMEZCUXl4RlFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnYzNSaGRIVnpJR1p5YjIwZ0p5NHVMM04wYjNKbEwzTjBZWFIxY3lkY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ0tDa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQWdJSFZ5YkZCbGNtWnBlRG9nWTI5dVptbG5MblZ5YkZCbGNtWnBlQ3hjYmlBZ0lDQWdJQ0FnYzJWemMybHZia1Y0Y0dseVpWUnBiV1U2SUdOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFZHbHRaU3hjYmlBZ0lDQWdJQ0FnYzJWemMybHZia1Y0Y0dseVpVdGxlVG9nWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WTFpYa3NYRzRnSUNBZ0lDQWdJSE5sYzNOcGIyNUZlSEJwY21VNklITjBZWFIxY3k1elpYTnphVzl1Ulhod2FYSmxYRzRnSUNBZ2ZWeHVmVHRjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb247XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVoyVjBVMlZ6YzJsdmJpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZaMlYwVTJWemMybHZiaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREJEUVVGdlF6dEJRVVZ3UXl4dFFrRkJaVHRKUVVOWUxFOUJRVThzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVFN1FVRkRla0lzUTBGQlF5eEZRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhOMFlYUjFjeUJtY205dElDY3VMaTl6ZEc5eVpTOXpkR0YwZFhNblhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElDZ3BJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjM1JoZEhWekxuTmxjM05wYjI1Y2JuMWNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKHBhcmFtcykge1xuICAgIE9iamVjdC5hc3NpZ24oY29uZmlnXzEuZGVmYXVsdCwgcGFyYW1zKTtcbiAgICB0cnkge1xuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lKSB8fCAnJztcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignd3guZ2V0U3RvcmFnZVN5bmM6ZmFpbCwgY2FuIG5vdCBnZXQgc2Vzc2lvbi4nKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlID0gd3guZ2V0U3RvcmFnZVN5bmMoY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5IHx8IFwic2Vzc2lvbkV4cGlyZUtleVwiKSB8fCBJbmZpbml0eTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignd3guZ2V0U3RvcmFnZVN5bmM6ZmFpbCwgY2FuIG5vdCBnZXQgc2Vzc2lvbkV4cGlyZS4nKTtcbiAgICB9XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNXBkQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2YVc1cGRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVTndReXd3UTBGQmIwTTdRVUZIY0VNc2JVSkJRV1VzVlVGQlF5eE5RVUZ0UWp0SlFVTXZRaXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEdkQ1FVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRE9VSXNTVUZCU1R0UlFVTkJMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1owSkJRVTBzUTBGQlF5eFhRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1MwRkRha1U3U1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0UlFVTlNMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zT0VOQlFUaERMRU5CUVVNc1EwRkJRVHRMUVVOb1JUdEpRVU5FTEVsQlFVazdVVUZEUVN4blFrRkJUU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWjBKQlFXZENMRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1MwRkRka2M3U1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0UlFVTlNMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zYjBSQlFXOUVMRU5CUVVNc1EwRkJRVHRMUVVOMFJUdEJRVU5NTEVOQlFVTXNSVUZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCamIyNW1hV2NnWm5KdmJTQW5MaTR2YzNSdmNtVXZZMjl1Wm1sbkoxeHVhVzF3YjNKMElITjBZWFIxY3lCbWNtOXRJQ2N1TGk5emRHOXlaUzl6ZEdGMGRYTW5YRzVwYlhCdmNuUWdleUJKU1c1cGRFOXdkR2x2YmlCOUlHWnliMjBnSnk0dUwybHVkR1Z5Wm1GalpTZGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdLSEJoY21GdGN6b2dTVWx1YVhSUGNIUnBiMjRwSUQwK0lIdGNiaUFnSUNCUFltcGxZM1F1WVhOemFXZHVLR052Ym1acFp5d2djR0Z5WVcxektUdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJpQTlJSGQ0TG1kbGRGTjBiM0poWjJWVGVXNWpLR052Ym1acFp5NXpaWE56YVc5dVRtRnRaU0VwSUh4OElDY25PMXh1SUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMyOXNaUzVsY25KdmNpZ25kM2d1WjJWMFUzUnZjbUZuWlZONWJtTTZabUZwYkN3Z1kyRnVJRzV2ZENCblpYUWdjMlZ6YzJsdmJpNG5LVnh1SUNBZ0lIMWNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJrVjRjR2x5WlNBOUlIZDRMbWRsZEZOMGIzSmhaMlZUZVc1aktHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxTMlY1SUh4OElGd2ljMlZ6YzJsdmJrVjRjR2x5WlV0bGVWd2lLU0I4ZkNCSmJtWnBibWwwZVR0Y2JpQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvSjNkNExtZGxkRk4wYjNKaFoyVlRlVzVqT21aaGFXd3NJR05oYmlCdWIzUWdaMlYwSUhObGMzTnBiMjVGZUhCcGNtVXVKeWxjYmlBZ0lDQjlYRzU5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzZXNzaW9uTWFuYWdlcl8xID0gcmVxdWlyZShcIi4uL21vZHVsZS9zZXNzaW9uTWFuYWdlclwiKTtcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHNlc3Npb25NYW5hZ2VyXzEuZGVmYXVsdC5tYWluKCk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHOW5hVzR1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZZWEJwTDJ4dloybHVMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlFVRXNNa1JCUVhGRU8wRkJSWEpFTEcxQ1FVRmxPMGxCUTFnc1QwRkJUeXgzUWtGQll5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkJPMEZCUTJoRExFTkJRVU1zUlVGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQnpaWE56YVc5dVRXRnVZV2RsY2lCbWNtOXRJQ2N1TGk5dGIyUjFiR1V2YzJWemMybHZiazFoYm1GblpYSW5YRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJQ2dwSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYzJWemMybHZiazFoYm1GblpYSXViV0ZwYmlncFhHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3JlcXVlc3RIYW5kbGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LnJlcXVlc3Qob2JqKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WeGRXVnpkQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2Y21WeGRXVnpkQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREpFUVVGeFJEdEJRVWR5UkN4dFFrRkJaU3hWUVVGRExFZEJRVzFDTzBsQlF5OUNMRTlCUVU4c2QwSkJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVFN1FVRkRkRU1zUTBGQlF5eEZRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhKbGNYVmxjM1JJWVc1a2JHVnlJR1p5YjIwZ0p5NHVMMjF2WkhWc1pTOXlaWEYxWlhOMFNHRnVaR3hsY2lkY2JtbHRjRzl5ZENCN0lFbFNaWEYxWlhOMFQzQjBhVzl1SUgwZ1puSnZiU0FuTGk0dmFXNTBaWEptWVdObEoxeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQW9iMkpxT2lCSlVtVnhkV1Z6ZEU5d2RHbHZiaWtnUFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJ5WlhGMVpYTjBTR0Z1Wkd4bGNpNXlaWEYxWlhOMEtHOWlhaWxjYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKHNlc3Npb24pIHtcbiAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQuc2V0U2Vzc2lvbihzZXNzaW9uKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmMyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVVnlSQ3h0UWtGQlpTeFZRVUZETEU5QlFXVTdTVUZETTBJc2QwSkJRV01zUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRka01zUTBGQlF5eEZRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhObGMzTnBiMjVOWVc1aFoyVnlJR1p5YjIwZ0p5NHVMMjF2WkhWc1pTOXpaWE56YVc5dVRXRnVZV2RsY2lkY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ0tITmxjM05wYjI0NklITjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG5ObGRGTmxjM05wYjI0b2MyVnpjMmx2YmlrN1hHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3JlcXVlc3RIYW5kbGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChvYmopIHtcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LnVwbG9hZEZpbGUob2JqKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhCc2IyRmtSbWxzWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmRYQnNiMkZrUm1sc1pTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFVZHlSQ3h0UWtGQlpTeFZRVUZETEVkQlFYTkNPMGxCUTJ4RExFOUJRVThzZDBKQlFXTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVUU3UVVGRGVrTXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5eVpYRjFaWE4wU0dGdVpHeGxjaWRjYm1sdGNHOXlkQ0I3SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1SUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0FvYjJKcU9pQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpa2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnlaWEYxWlhOMFNHRnVaR3hsY2k1MWNHeHZZV1JHYVd4bEtHOWlhaWxjYm4xY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW5pdF8xID0gcmVxdWlyZShcIi4vYXBpL2luaXRcIik7XG52YXIgcmVxdWVzdF8xID0gcmVxdWlyZShcIi4vYXBpL3JlcXVlc3RcIik7XG52YXIgdXBsb2FkRmlsZV8xID0gcmVxdWlyZShcIi4vYXBpL3VwbG9hZEZpbGVcIik7XG52YXIgc2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL3NldFNlc3Npb25cIik7XG52YXIgbG9naW5fMSA9IHJlcXVpcmUoXCIuL2FwaS9sb2dpblwiKTtcbnZhciBnZXRTZXNzaW9uXzEgPSByZXF1aXJlKFwiLi9hcGkvZ2V0U2Vzc2lvblwiKTtcbnZhciBnZXRDb25maWdfMSA9IHJlcXVpcmUoXCIuL2FwaS9nZXRDb25maWdcIik7XG52YXIgdmVyc2lvbl8xID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKTtcbnZhciB3ZVJlcXVlc3RPYmplY3QgPSB7XG4gICAgaW5pdDogaW5pdF8xLmRlZmF1bHQsXG4gICAgcmVxdWVzdDogcmVxdWVzdF8xLmRlZmF1bHQsXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZV8xLmRlZmF1bHQsXG4gICAgc2V0U2Vzc2lvbjogc2V0U2Vzc2lvbl8xLmRlZmF1bHQsXG4gICAgbG9naW46IGxvZ2luXzEuZGVmYXVsdCxcbiAgICBnZXRTZXNzaW9uOiBnZXRTZXNzaW9uXzEuZGVmYXVsdCxcbiAgICBnZXRDb25maWc6IGdldENvbmZpZ18xLmRlZmF1bHQsXG4gICAgdmVyc2lvbjogdmVyc2lvbl8xLnZlcnNpb25cbn07XG5leHBvcnRzLmRlZmF1bHQgPSB3ZVJlcXVlc3RPYmplY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVrWlhndWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk5emNtTXZhVzVrWlhndWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4dFEwRkJOa0k3UVVGRE4wSXNlVU5CUVcxRE8wRkJRMjVETEN0RFFVRjVRenRCUVVONlF5d3JRMEZCZVVNN1FVRkRla01zY1VOQlFTdENPMEZCUXk5Q0xDdERRVUY1UXp0QlFVTjZReXcyUTBGQmRVTTdRVUZGZGtNc2NVTkJRVzFETzBGQlJXNURMRWxCUVUwc1pVRkJaU3hIUVVGak8wbEJRMnBETEVsQlFVa3NaMEpCUVVFN1NVRkRTaXhQUVVGUExHMUNRVUZCTzBsQlExQXNWVUZCVlN4elFrRkJRVHRKUVVOV0xGVkJRVlVzYzBKQlFVRTdTVUZEVml4TFFVRkxMR2xDUVVGQk8wbEJRMHdzVlVGQlZTeHpRa0ZCUVR0SlFVTldMRk5CUVZNc2NVSkJRVUU3U1VGRFZDeFBRVUZQTEcxQ1FVRkJPME5CUTFJc1EwRkJRenRCUVVWR0xHdENRVUZsTEdWQlFXVXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCcGJtbDBJR1p5YjIwZ1hDSXVMMkZ3YVM5cGJtbDBYQ0pjYm1sdGNHOXlkQ0J5WlhGMVpYTjBJR1p5YjIwZ1hDSXVMMkZ3YVM5eVpYRjFaWE4wWENKY2JtbHRjRzl5ZENCMWNHeHZZV1JHYVd4bElHWnliMjBnWENJdUwyRndhUzkxY0d4dllXUkdhV3hsWENKY2JtbHRjRzl5ZENCelpYUlRaWE56YVc5dUlHWnliMjBnWENJdUwyRndhUzl6WlhSVFpYTnphVzl1WENKY2JtbHRjRzl5ZENCc2IyZHBiaUJtY205dElGd2lMaTloY0drdmJHOW5hVzVjSWx4dWFXMXdiM0owSUdkbGRGTmxjM05wYjI0Z1puSnZiU0JjSWk0dllYQnBMMmRsZEZObGMzTnBiMjVjSWx4dWFXMXdiM0owSUdkbGRFTnZibVpwWnlCbWNtOXRJRndpTGk5aGNHa3ZaMlYwUTI5dVptbG5YQ0pjYm1sdGNHOXlkQ0I3SUhkbFVtVnhkV1Z6ZENCOUlHWnliMjBnWENJdUwybHVkR1Z5Wm1GalpWd2lYRzVwYlhCdmNuUWdleUIyWlhKemFXOXVJSDBnWm5KdmJTQW5MaTkyWlhKemFXOXVKMXh1WEc1amIyNXpkQ0IzWlZKbGNYVmxjM1JQWW1wbFkzUTZJSGRsVW1WeGRXVnpkQ0E5SUh0Y2JpQWdhVzVwZEN4Y2JpQWdjbVZ4ZFdWemRDeGNiaUFnZFhCc2IyRmtSbWxzWlN4Y2JpQWdjMlYwVTJWemMybHZiaXhjYmlBZ2JHOW5hVzRzWEc0Z0lHZGxkRk5sYzNOcGIyNHNYRzRnSUdkbGRFTnZibVpwWnl4Y2JpQWdkbVZ5YzJsdmJseHVmVHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZDJWU1pYRjFaWE4wVDJKcVpXTjBPMXh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gZ2V0KG9iaikge1xuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHd4LmdldFN0b3JhZ2Uoe1xuICAgICAgICBrZXk6IG9iai5vcmlnaW5VcmwsXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgIGlmIChvYmouY2FjaGUgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICAodHlwZW9mIG9iai5jYWNoZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jYWNoZShyZXMuZGF0YSkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouc3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7IGlzQ2FjaGU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIG9iai5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzZXQob2JqLCByZWFsRGF0YSkge1xuICAgIGlmICghb2JqLm9yaWdpblVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChvYmouY2FjaGUgPT09IHRydWUgfHxcbiAgICAgICAgKHR5cGVvZiBvYmouY2FjaGUgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY2FjaGUocmVhbERhdGEpKSkge1xuICAgICAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAgICAgIGtleTogb2JqLm9yaWdpblVybCxcbiAgICAgICAgICAgIGRhdGE6IHJlYWxEYXRhXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBnZXQ6IGdldCxcbiAgICBzZXQ6IHNldFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyRmphR1ZOWVc1aFoyVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyMXZaSFZzWlM5allXTm9aVTFoYm1GblpYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGRlFTeFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRnRRanRKUVVNMVFpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1JVRkJSVHRSUVVOb1FpeFBRVUZQTzB0QlExWTdTVUZEUkN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4VFFVRlRPMUZCUTJ4Q0xFOUJRVThzV1VGQlJTeEhRVUZITzFsQlExSXNTVUZEU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFbEJRVWs3WjBKQlEyeENMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEZWQlFWVXNTVUZCU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVTXhSRHRuUWtGRFJTeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRTlCUVU4c1MwRkJTeXhWUVVGVkxFVkJRVVU3YjBKQlEyNURMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkRMRTlCUVU4c1JVRkJSU3hKUVVGSkxFVkJRVU1zUTBGQlF5eERRVUZCTzJsQ1FVTjZRenRoUVVOS08xbEJRMFFzU1VGQlJ5eFBRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRlJMRXRCUVVzc1ZVRkJWU3hGUVVGRk8yZENRVU51UXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03WVVGRGJFSTdVVUZEVEN4RFFVRkRPMHRCUTBvc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVVZFTEZOQlFWTXNSMEZCUnl4RFFVRkRMRWRCUVcxQ0xFVkJRVWNzVVVGQmVVSTdTVUZEZUVRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVWQlFVVTdVVUZEYUVJc1QwRkJUenRMUVVOV08wbEJRMFFzU1VGRFNTeEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRWxCUVVrN1VVRkRiRUlzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4TFFVRkxMRXRCUVVzc1ZVRkJWU3hKUVVGSkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkRNVVE3VVVGRFJTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTFZc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eFRRVUZUTzFsQlEyeENMRWxCUVVrc1JVRkJSU3hSUVVGUk8xTkJRMnBDTEVOQlFVTXNRMEZCUVR0TFFVTk1PMEZCUTB3c1EwRkJRenRCUVVWRUxHdENRVUZsTzBsQlExZ3NSMEZCUnl4TFFVRkJPMGxCUTBnc1IwRkJSeXhMUVVGQk8wTkJRMDRzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJRWxTWlhGMVpYTjBUM0IwYVc5dUlIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpWEc1Y2JtWjFibU4wYVc5dUlHZGxkQ2h2WW1vNklFbFNaWEYxWlhOMFQzQjBhVzl1S1NCN1hHNGdJQ0FnYVdZZ0tDRnZZbW91YjNKcFoybHVWWEpzS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc0Z0lDQWdkM2d1WjJWMFUzUnZjbUZuWlNoN1hHNGdJQ0FnSUNBZ0lHdGxlVG9nYjJKcUxtOXlhV2RwYmxWeWJDeGNiaUFnSUNBZ0lDQWdjM1ZqWTJWemN5QW9jbVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IySnFMbU5oWTJobElEMDlQU0IwY25WbElIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLSFI1Y0dWdlppQnZZbW91WTJGamFHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJ2WW1vdVkyRmphR1VvY21WekxtUmhkR0VwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdlltb3VjM1ZqWTJWemN5QTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5aWFpNXpkV05qWlhOektISmxjeTVrWVhSaExDQjdhWE5EWVdOb1pUb2dkSEoxWlgwcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lvZEhsd1pXOW1JRzlpYWk1amIyMXdiR1YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IySnFMbU52YlhCc1pYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlLVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnpaWFFvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlBc0lISmxZV3hFWVhSaE9pQnpkSEpwYm1jZ2ZDQnZZbXBsWTNRcElIdGNiaUFnSUNCcFppQW9JVzlpYWk1dmNtbG5hVzVWY213cElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lHOWlhaTVqWVdOb1pTQTlQVDBnZEhKMVpTQjhmRnh1SUNBZ0lDQWdJQ0FvZEhsd1pXOW1JRzlpYWk1allXTm9aU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUc5aWFpNWpZV05vWlNoeVpXRnNSR0YwWVNrcFhHNGdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lIZDRMbk5sZEZOMGIzSmhaMlVvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhMlY1T2lCdlltb3ViM0pwWjJsdVZYSnNMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVG9nY21WaGJFUmhkR0ZjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElIdGNiaUFnSUNCblpYUXNYRzRnSUNBZ2MyVjBYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgcmVxdWVzdF8xID0gcmVxdWlyZShcIi4uL2FwaS9yZXF1ZXN0XCIpO1xuZnVuY3Rpb24gc3RhcnQob2JqKSB7XG4gICAgb2JqLl9yZXBvcnRTdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbn1cbmZ1bmN0aW9uIGVuZChvYmopIHtcbiAgICBvYmouX3JlcG9ydEVuZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBpZiAob2JqLnJlcG9ydCAmJiBvYmouX3JlcG9ydFN0YXJ0VGltZSkge1xuICAgICAgICByZXBvcnQob2JqLnJlcG9ydCwgb2JqLl9yZXBvcnRTdGFydFRpbWUsIG9iai5fcmVwb3J0RW5kVGltZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVwb3J0KG5hbWUsIHN0YXJ0VGltZSwgZW5kVGltZSkge1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25maWdfMS5kZWZhdWx0LnJlcG9ydENHSShuYW1lLCBzdGFydFRpbWUsIGVuZFRpbWUsIHJlcXVlc3RfMS5kZWZhdWx0KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVuZDogZW5kLFxuICAgIHJlcG9ydDogcmVwb3J0XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OXRiMlIxYkdVdlpIVnlZWFJwYjI1U1pYQnZjblJsY2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERCRFFVRnZRenRCUVVOd1F5d3dRMEZCYjBNN1FVRkhjRU1zVTBGQlV5eExRVUZMTEVOQlFVTXNSMEZCZFVNN1NVRkRiRVFzUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRhRVFzUTBGQlF6dEJRVVZFTEZOQlFWTXNSMEZCUnl4RFFVRkRMRWRCUVhWRE8wbEJRMmhFTEVkQlFVY3NRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0SlFVTXhReXhKUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4RFFVRkRMR2RDUVVGblFpeEZRVUZGTzFGQlEyNURMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlowSXNSVUZCUlN4SFFVRkhMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNSMEZCUnl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRE8wdEJRekZGTzBGQlEwd3NRMEZCUXp0QlFVVkVMRk5CUVZNc1RVRkJUU3hEUVVGRExFbEJRVmtzUlVGQlJTeFRRVUZwUWl4RlFVRkZMRTlCUVdVN1NVRkROVVFzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1UwRkJVeXhMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU40UXl4blFrRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTlCUVU4c1JVRkJSU3hwUWtGQlR5eERRVUZETEVOQlFVTTdTMEZEZGtRN1FVRkRUQ3hEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4TFFVRkxMRTlCUVVFN1NVRkRUQ3hIUVVGSExFdEJRVUU3U1VGRFNDeE5RVUZOTEZGQlFVRTdRMEZEVkN4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEc1cGJYQnZjblFnY21WeGRXVnpkQ0JtY205dElDY3VMaTloY0drdmNtVnhkV1Z6ZENkY2JtbHRjRzl5ZENCN0lFbFNaWEYxWlhOMFQzQjBhVzl1TENCSlZYQnNiMkZrUm1sc1pVOXdkR2x2YmlCOUlHWnliMjBnWENJdUxpOXBiblJsY21aaFkyVmNJanRjYmx4dVpuVnVZM1JwYjI0Z2MzUmhjblFvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlCOElFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUtTQjdYRzRnSUNBZ2IySnFMbDl5WlhCdmNuUlRkR0Z5ZEZScGJXVWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWlc1a0tHOWlham9nU1ZKbGNYVmxjM1JQY0hScGIyNGdmQ0JKVlhCc2IyRmtSbWxzWlU5d2RHbHZiaWtnZTF4dUlDQWdJRzlpYWk1ZmNtVndiM0owUlc1a1ZHbHRaU0E5SUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncE8xeHVJQ0FnSUdsbUtHOWlhaTV5WlhCdmNuUWdKaVlnYjJKcUxsOXlaWEJ2Y25SVGRHRnlkRlJwYldVcElIdGNiaUFnSUNBZ0lDQWdjbVZ3YjNKMEtHOWlhaTV5WlhCdmNuUWdZWE1nYzNSeWFXNW5MQ0J2WW1vdVgzSmxjRzl5ZEZOMFlYSjBWR2x0WlN3Z2IySnFMbDl5WlhCdmNuUkZibVJVYVcxbEtUdGNiaUFnSUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUhKbGNHOXlkQ2h1WVcxbE9pQnpkSEpwYm1jc0lITjBZWEowVkdsdFpUb2diblZ0WW1WeUxDQmxibVJVYVcxbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1eVpYQnZjblJEUjBrZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjVtYVdjdWNtVndiM0owUTBkSktHNWhiV1VzSUhOMFlYSjBWR2x0WlN3Z1pXNWtWR2x0WlN3Z2NtVnhkV1Z6ZENrN1hHNGdJQ0FnZlZ4dWZWeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYRzRnSUNBZ2MzUmhjblFzWEc0Z0lDQWdaVzVrTEZ4dUlDQWdJSEpsY0c5eWRGeHVmVnh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbmZ1bmN0aW9uIHN5c3RlbUVycm9yKG9iaiwgcmVzKSB7XG4gICAgaWYgKHR5cGVvZiBvYmouZmFpbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9iai5mYWlsKHJlcyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkb0Vycm9yKFwiXCIsIHJlcy5lcnJNc2cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ2ljRXJyb3Iob2JqLCByZXMpIHtcbiAgICBpZiAodHlwZW9mIG9iai5mYWlsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqLmZhaWwocmVzKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBfYSA9IGdldEVycm9yTXNnKHJlcyksIHRpdGxlID0gX2EudGl0bGUsIGNvbnRlbnQgPSBfYS5jb250ZW50O1xuICAgICAgICBkb0Vycm9yKHRpdGxlLCBjb250ZW50KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25maWdfMS5kZWZhdWx0LmVycm9yQ2FsbGJhY2sob2JqLCByZXMpO1xuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKHJlcyk7XG59XG5mdW5jdGlvbiBnZXRFcnJvck1zZyhyZXMpIHtcbiAgICB2YXIgdGl0bGUgPSBcIlwiO1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRpdGxlID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvclRpdGxlKHJlcy5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGl0bGUgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGU7XG4gICAgfVxuICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudChyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5lcnJvckNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29udGVudCA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4geyB0aXRsZTogdGl0bGUsIGNvbnRlbnQ6IGNvbnRlbnQgfTtcbn1cbmZ1bmN0aW9uIGRvRXJyb3IodGl0bGUsIGNvbnRlbnQpIHtcbiAgICB3eC5zaG93TW9kYWwoe1xuICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQgfHwgXCLnvZHnu5zmiJbmnI3liqHlvILluLjvvIzor7fnqI3lkI7ph43or5VcIixcbiAgICAgICAgc2hvd0NhbmNlbDogZmFsc2VcbiAgICB9KTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzeXN0ZW1FcnJvcjogc3lzdGVtRXJyb3IsXG4gICAgbG9naWNFcnJvcjogbG9naWNFcnJvcixcbiAgICBkb0Vycm9yOiBkb0Vycm9yLFxuICAgIGdldEVycm9yTXNnOiBnZXRFcnJvck1zZ1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpYSnliM0pJWVc1a2JHVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyMXZaSFZzWlM5bGNuSnZja2hoYm1Sc1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkhjRU1zVTBGQlV5eFhRVUZYTEVOQlFVTXNSMEZCZFVNc1JVRkJSU3hIUVVFMlFqdEpRVU4yUml4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFbEJRVWtzUzBGQlN5eFZRVUZWTEVWQlFVVTdVVUZEYUVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTnFRanRUUVVGTk8xRkJRMGdzVDBGQlR5eERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRE0wSTdRVUZEVEN4RFFVRkRPMEZCUlVRc1UwRkJVeXhWUVVGVkxFTkJRVU1zUjBGQmRVTXNSVUZCUlN4SFFVRjVSVHRKUVVOc1NTeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRWxCUVVrc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRGFFTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU5xUWp0VFFVRk5PMUZCUTBjc1NVRkJRU3h4UWtGQmJVTXNSVUZCYkVNc1owSkJRVXNzUlVGQlJTeHZRa0ZCTWtJc1EwRkJRenRSUVVNeFF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRek5DTzBsQlIwUXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zWVVGQllTeExRVUZMTEZWQlFWVXNSVUZCUlR0UlFVTTFReXhuUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRGJFTTdTVUZGUkN4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEzWkNMRU5CUVVNN1FVRkZSQ3hUUVVGVExGZEJRVmNzUTBGQlF5eEhRVUY1UlR0SlFVTXhSaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEWml4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFZRVUZWTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUTNwRExFbEJRVWs3V1VGRFFTeExRVUZMTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkJPMU5CUTNSRE8xRkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVTdVMEZEV0R0TFFVTktPMU5CUVUwc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNWVUZCVlN4TFFVRkxMRkZCUVZFc1JVRkJSVHRSUVVNNVF5eExRVUZMTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03UzBGRE4wSTdTVUZGUkN4SlFVRkpMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGFrSXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zV1VGQldTeExRVUZMTEZWQlFWVXNSVUZCUlR0UlFVTXpReXhKUVVGSk8xbEJRMEVzVDBGQlR5eEhRVUZITEdkQ1FVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUVR0VFFVTXhRenRSUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTzFOQlExZzdTMEZEU2p0VFFVRk5MRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZsQlFWa3NTMEZCU3l4UlFVRlJMRVZCUVVVN1VVRkRhRVFzVDBGQlR5eEhRVUZITEdkQ1FVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRE8wdEJRMnBETzBsQlJVUXNUMEZCVHl4RlFVRkRMRXRCUVVzc1QwRkJRU3hGUVVGRkxFOUJRVThzVTBGQlFTeEZRVUZETEVOQlFVRTdRVUZETTBJc1EwRkJRenRCUVVWRUxGTkJRVk1zVDBGQlR5eERRVUZETEV0QlFXRXNSVUZCUlN4UFFVRmxPMGxCUXpORExFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTTdVVUZEVkN4TFFVRkxMRTlCUVVFN1VVRkRUQ3hQUVVGUExFVkJRVVVzVDBGQlR5eEpRVUZKTEdWQlFXVTdVVUZEYmtNc1ZVRkJWU3hGUVVGRkxFdEJRVXM3UzBGRGNFSXNRMEZCUXl4RFFVRkJPMEZCUTA0c1EwRkJRenRCUVVWRUxHdENRVUZsTzBsQlExZ3NWMEZCVnl4aFFVRkJPMGxCUTFnc1ZVRkJWU3haUVVGQk8wbEJRMVlzVDBGQlR5eFRRVUZCTzBsQlExQXNWMEZCVnl4aFFVRkJPME5CUTJRc1EwRkJRU0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JqYjI1bWFXY2dabkp2YlNBbkxpNHZjM1J2Y21VdlkyOXVabWxuSjF4dWFXMXdiM0owSUhzZ1NWSmxjWFZsYzNSUGNIUnBiMjRzSUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1SUgwZ1puSnZiU0JjSWk0dUwybHVkR1Z5Wm1GalpWd2lPMXh1WEc1bWRXNWpkR2x2YmlCemVYTjBaVzFGY25KdmNpaHZZbW82SUVsU1pYRjFaWE4wVDNCMGFXOXVJSHdnU1ZWd2JHOWhaRVpwYkdWUGNIUnBiMjRzSUhKbGN6b2dkM2d1UjJWdVpYSmhiRU5oYkd4aVlXTnJVbVZ6ZFd4MEtTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91Wm1GcGJDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1bVlXbHNLSEpsY3lrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnWkc5RmNuSnZjaWhjSWx3aUxDQnlaWE11WlhKeVRYTm5LVHRjYmlBZ0lDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlHeHZaMmxqUlhKeWIzSW9iMkpxT2lCSlVtVnhkV1Z6ZEU5d2RHbHZiaUI4SUVsVmNHeHZZV1JHYVd4bFQzQjBhVzl1TENCeVpYTTZJSGQ0TGxKbGNYVmxjM1JUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRZ2ZDQjNlQzVWY0d4dllXUkdhV3hsVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91Wm1GcGJDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJRzlpYWk1bVlXbHNLSEpsY3lrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdlM1JwZEd4bExDQmpiMjUwWlc1MGZTQTlJR2RsZEVWeWNtOXlUWE5uS0hKbGN5azdYRzRnSUNBZ0lDQWdJR1J2UlhKeWIzSW9kR2wwYkdVc0lHTnZiblJsYm5RcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklPV21ndWFlbk9hY2llbUZqZWU5cnVlN24rUzRnT21VbWVpdnIrV2JudWl3ZytXSHZlYVZzTys4ak9XSW1lYUpwK2loak9XdWcxeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1WeWNtOXlRMkZzYkdKaFkyc2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1bWFXY3VaWEp5YjNKRFlXeHNZbUZqYXlodlltb3NJSEpsY3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMyOXNaUzVsY25KdmNpaHlaWE1wTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJuWlhSRmNuSnZjazF6WnloeVpYTTZJSGQ0TGxKbGNYVmxjM1JUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRZ2ZDQjNlQzVWY0d4dllXUkdhV3hsVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtTQjdYRzRnSUNBZ2JHVjBJSFJwZEd4bElEMGdYQ0pjSWp0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVsY25KdmNsUnBkR3hsSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUnBkR3hsSUQwZ1kyOXVabWxuTG1WeWNtOXlWR2wwYkdVb2NtVnpMbVJoZEdFcFhHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NWxjbkp2Y2xScGRHeGxJRDA5UFNCY0luTjBjbWx1WjF3aUtTQjdYRzRnSUNBZ0lDQWdJSFJwZEd4bElEMGdZMjl1Wm1sbkxtVnljbTl5VkdsMGJHVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJR052Ym5SbGJuUWdQU0JjSWx3aU8xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1WeWNtOXlRMjl1ZEdWdWRDQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MFpXNTBJRDBnWTI5dVptbG5MbVZ5Y205eVEyOXVkR1Z1ZENoeVpYTXVaR0YwWVNsY2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtVnljbTl5UTI5dWRHVnVkQ0E5UFQwZ1hDSnpkSEpwYm1kY0lpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MFpXNTBJRDBnWTI5dVptbG5MbVZ5Y205eVEyOXVkR1Z1ZER0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlM1JwZEd4bExDQmpiMjUwWlc1MGZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCa2IwVnljbTl5S0hScGRHeGxPaUJ6ZEhKcGJtY3NJR052Ym5SbGJuUTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lIZDRMbk5vYjNkTmIyUmhiQ2g3WEc0Z0lDQWdJQ0FnSUhScGRHeGxMRnh1SUNBZ0lDQWdJQ0JqYjI1MFpXNTBPaUJqYjI1MFpXNTBJSHg4SUZ3aTU3MlI1N3VjNW9pVzVweU41WXFoNWJ5QzViaTQ3N3lNNksrMzU2aU41WkNPNlllTjZLK1ZYQ0lzWEc0Z0lDQWdJQ0FnSUhOb2IzZERZVzVqWld3NklHWmhiSE5sWEc0Z0lDQWdmU2xjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2UxeHVJQ0FnSUhONWMzUmxiVVZ5Y205eUxGeHVJQ0FnSUd4dloybGpSWEp5YjNJc1hHNGdJQ0FnWkc5RmNuSnZjaXhjYmlBZ0lDQm5aWFJGY25KdmNrMXpaMXh1ZlZ4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcbmZ1bmN0aW9uIGdldChvYmopIHtcbiAgICBpZiAoIShjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai51cmxdIHx8IChvYmoub3JpZ2luVXJsICYmIGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLm9yaWdpblVybF0pKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdtb2NrIOayoeacieWvueW6lOaOpeWPo+eahOaVsOaNricpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoudXJsXSB8fCAob2JqLm9yaWdpblVybCA/IGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLm9yaWdpblVybF0gOiAnJyk7XG4gICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIHZhciByZXMgPSB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMFxuICAgIH07XG4gICAgbG9hZGluZ18xLmRlZmF1bHQuaGlkZSgpO1xuICAgIHJldHVybiByZXM7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgZ2V0OiBnZXRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liVzlqYTAxaGJtRm5aWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZiVzlrZFd4bEwyMXZZMnROWVc1aFoyVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlFVRXNNRU5CUVc5RE8wRkJRM0JETERKRFFVRnhRenRCUVVkeVF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4SFFVRjFRenRKUVVWb1JDeEpRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkZha1lzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzFGQlEyaERMRTlCUVU4c1MwRkJTeXhEUVVGRE8wdEJRMmhDTzBsQlJVUXNTVUZCU1N4SlFVRkpMRWRCUVVjc1owSkJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1owSkJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVVTNSaXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVNc1NVRkJUU3hIUVVGSExFZEJRVWM3VVVGRFVpeEpRVUZKTEUxQlFVRTdVVUZEU2l4VlFVRlZMRVZCUVVVc1IwRkJSenRMUVVOc1FpeERRVUZETzBsQlJVWXNhVUpCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dEpRVU5tTEU5QlFVOHNSMEZCUnl4RFFVRkJPMEZCUTJRc1EwRkJRenRCUVVWRUxHdENRVUZsTzBsQlExZ3NSMEZCUnl4TFFVRkJPME5CUTA0c1EwRkJRU0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JqYjI1bWFXY2dabkp2YlNBbkxpNHZjM1J2Y21VdlkyOXVabWxuSjF4dWFXMXdiM0owSUd4dllXUnBibWNnWm5KdmJTQW5MaTR2ZFhScGJDOXNiMkZrYVc1bkoxeHVhVzF3YjNKMElIc2dTVkpsY1hWbGMzUlBjSFJwYjI0c0lFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUlIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpWEc1Y2JtWjFibU4wYVc5dUlHZGxkQ2h2WW1vNklFbFNaWEYxWlhOMFQzQjBhVzl1SUh3Z1NWVndiRzloWkVacGJHVlBjSFJwYjI0cE9pQmhibmtnZTF4dVhHNGdJQ0FnYVdZb0lTaGpiMjVtYVdjdWJXOWphMHB6YjI1YmIySnFMblZ5YkYwZ2ZId2dLRzlpYWk1dmNtbG5hVzVWY213Z0ppWWdZMjl1Wm1sbkxtMXZZMnRLYzI5dVcyOWlhaTV2Y21sbmFXNVZjbXhkS1NrcElIdGNiaUFnSUNBZ0lDQWdMeThnYlc5amF5RG1zcUhtbklubHI3bmx1cFRtanFYbGo2UG5tb1RtbGJEbWphNWNiaUFnSUNBZ0lDQWdZMjl1YzI5c1pTNWxjbkp2Y2lnbmJXOWpheURtc3FIbW5JbmxyN25sdXBUbWpxWGxqNlBubW9UbWxiRG1qYTRuS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JrWVhSaElEMGdZMjl1Wm1sbkxtMXZZMnRLYzI5dVcyOWlhaTUxY214ZElIeDhJQ2h2WW1vdWIzSnBaMmx1VlhKc0lEOGdZMjl1Wm1sbkxtMXZZMnRLYzI5dVcyOWlhaTV2Y21sbmFXNVZjbXhkSURvZ0p5Y3BPMXh1SUNBZ0lDOHZJR1JsWlhBZ1kyOXdlVnh1SUNBZ0lHUmhkR0VnUFNCS1UwOU9MbkJoY25ObEtFcFRUMDR1YzNSeWFXNW5hV1o1S0dSaGRHRXBLVHRjYmlBZ0lDQmpiMjV6ZENCeVpYTWdQU0I3WEc0Z0lDQWdJQ0FnSUdSaGRHRXNYRzRnSUNBZ0lDQWdJSE4wWVhSMWMwTnZaR1U2SURJd01GeHVJQ0FnSUgwN1hHNWNiaUFnSUNCc2IyRmthVzVuTG1ocFpHVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2NtVnpYRzU5WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUh0Y2JpQWdJQ0JuWlhSY2JuMWNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBsb2FkaW5nXzEgPSByZXF1aXJlKFwiLi4vdXRpbC9sb2FkaW5nXCIpO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XG52YXIgbW9ja01hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL21vY2tNYW5hZ2VyXCIpO1xudmFyIGNhY2hlTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vY2FjaGVNYW5hZ2VyXCIpO1xudmFyIHNlc3Npb25NYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9zZXNzaW9uTWFuYWdlclwiKTtcbnZhciByZXNwb25zZUhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3Jlc3BvbnNlSGFuZGxlclwiKTtcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xudmFyIHVybF8xID0gcmVxdWlyZShcIi4uL3V0aWwvdXJsXCIpO1xudmFyIGVycm9ySGFuZGxlcl8xID0gcmVxdWlyZShcIi4vZXJyb3JIYW5kbGVyXCIpO1xuZnVuY3Rpb24gZm9ybWF0KG9yaWdpblVybCkge1xuICAgIGlmIChvcmlnaW5Vcmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5Vcmw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdXJsUGVyZml4ID0gY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXg7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXggPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdXJsUGVyZml4ID0gY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXgoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsUGVyZml4ICsgb3JpZ2luVXJsO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHByZURvKG9iaikge1xuICAgIGlmICh0eXBlb2Ygb2JqLmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBvYmouYmVmb3JlU2VuZCgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iai5yZUxvZ2luQ291bnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgb2JqLnJlTG9naW5Db3VudCA9IDA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBvYmoucmVMb2dpbkNvdW50Kys7XG4gICAgfVxuICAgIGlmIChvYmouc2hvd0xvYWRpbmcpIHtcbiAgICAgICAgbG9hZGluZ18xLmRlZmF1bHQuc2hvdyhvYmouc2hvd0xvYWRpbmcpO1xuICAgIH1cbiAgICBpZiAoIW9iai5vcmlnaW5VcmwpIHtcbiAgICAgICAgb2JqLm9yaWdpblVybCA9IG9iai51cmw7XG4gICAgICAgIG9iai51cmwgPSBmb3JtYXQob2JqLnVybCk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBpbml0aWFsaXplUmVxdWVzdE9iaihvYmopIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghb2JqLmRhdGEpIHtcbiAgICAgICAgb2JqLmRhdGEgPSB7fTtcbiAgICB9XG4gICAgaWYgKG9iai5vcmlnaW5VcmwgIT09IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi51cmwgJiYgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XG4gICAgICAgIG9iai5kYXRhID0gX19hc3NpZ24oe30sIG9iai5kYXRhLCAoX2EgPSB7fSwgX2FbY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZV0gPSBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24sIF9hKSk7XG4gICAgfVxuICAgIHZhciBnZCA9IGdldEdsb2JhbERhdGEoKTtcbiAgICBvYmouZGF0YSA9IF9fYXNzaWduKHt9LCBnZCwgb2JqLmRhdGEpO1xuICAgIG9iai5tZXRob2QgPSBvYmoubWV0aG9kIHx8ICdHRVQnO1xuICAgIG9iai5kYXRhVHlwZSA9IG9iai5kYXRhVHlwZSB8fCAnanNvbic7XG4gICAgaWYgKG9iai5tZXRob2QgIT09IFwiR0VUXCIpIHtcbiAgICAgICAgaWYgKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xuICAgICAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIChfYiA9IHt9LCBfYltjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2IpKTtcbiAgICAgICAgfVxuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xuICAgIH1cbiAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5zdGFydChvYmopO1xuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBpbml0aWFsaXplVXBsb2FkRmlsZU9iaihvYmopIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghb2JqLmZvcm1EYXRhKSB7XG4gICAgICAgIG9iai5mb3JtRGF0YSA9IHt9O1xuICAgIH1cbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgb2JqLmZvcm1EYXRhID0gX19hc3NpZ24oe30sIG9iai5mb3JtRGF0YSwgKF9hID0ge30sIF9hW2NvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbk5hbWVdID0gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uLCBfYSkpO1xuICAgIH1cbiAgICB2YXIgZ2QgPSBnZXRHbG9iYWxEYXRhKCk7XG4gICAgb2JqLmZvcm1EYXRhID0gX19hc3NpZ24oe30sIGdkLCBvYmouZm9ybURhdGEpO1xuICAgIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIChfYiA9IHt9LCBfYltjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiwgX2IpKTtcbiAgICB9XG4gICAgb2JqLnVybCA9IHVybF8xLmRlZmF1bHQuc2V0UGFyYW1zKG9iai51cmwsIGdkKTtcbiAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5zdGFydChvYmopO1xuICAgIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBnZXRHbG9iYWxEYXRhKCkge1xuICAgIHZhciBnZCA9IHt9O1xuICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgZ2QgPSBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGEoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZ2xvYmFsRGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBnZCA9IGNvbmZpZ18xLmRlZmF1bHQuZ2xvYmFsRGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIGdkO1xufVxuZnVuY3Rpb24gZG9SZXF1ZXN0KG9iaikge1xuICAgIG9iaiA9IGluaXRpYWxpemVSZXF1ZXN0T2JqKG9iaik7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgd3gucmVxdWVzdCh7XG4gICAgICAgICAgICB1cmw6IG9iai51cmwsXG4gICAgICAgICAgICBkYXRhOiBvYmouZGF0YSxcbiAgICAgICAgICAgIG1ldGhvZDogb2JqLm1ldGhvZCxcbiAgICAgICAgICAgIGhlYWRlcjogb2JqLmhlYWRlciB8fCB7fSxcbiAgICAgICAgICAgIGRhdGFUeXBlOiBvYmouZGF0YVR5cGUgfHwgJ2pzb24nLFxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuc3lzdGVtRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLmNvbXBsZXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvYmouc2hvd0xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ18xLmRlZmF1bHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBkb1VwbG9hZEZpbGUob2JqKSB7XG4gICAgb2JqID0gaW5pdGlhbGl6ZVVwbG9hZEZpbGVPYmoob2JqKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB3eC51cGxvYWRGaWxlKHtcbiAgICAgICAgICAgIHVybDogb2JqLnVybCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiBvYmouZmlsZVBhdGggfHwgJycsXG4gICAgICAgICAgICBuYW1lOiBvYmoubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIGZvcm1EYXRhOiBvYmouZm9ybURhdGEsXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5zeXN0ZW1FcnJvcihvYmosIHJlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9iai5zaG93TG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nXzEuZGVmYXVsdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJlcXVlc3Qob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqKTtcbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb24pIHtcbiAgICAgICAgICAgIHZhciBtb2NrUmVzcG9uc2UgPSBtb2NrTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdChtb2NrUmVzcG9uc2UsIG9iaiwgJ3JlcXVlc3QnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iai5jYWNoZSkge1xuICAgICAgICAgICAgY2FjaGVNYW5hZ2VyXzEuZGVmYXVsdC5nZXQob2JqKTtcbiAgICAgICAgfVxuICAgICAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQubWFpbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvUmVxdWVzdChvYmopO1xuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQocmVzLCBvYmosICdyZXF1ZXN0Jyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHVwbG9hZEZpbGUob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgb2JqID0gcHJlRG8ob2JqKTtcbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb24pIHtcbiAgICAgICAgICAgIHZhciBtb2NrUmVzcG9uc2UgPSBtb2NrTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XG4gICAgICAgICAgICBpZiAobW9ja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdChtb2NrUmVzcG9uc2UsIG9iaiwgJ3VwbG9hZEZpbGUnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0Lm1haW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkb1VwbG9hZEZpbGUob2JqKTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0KHJlcywgb2JqLCAndXBsb2FkRmlsZScpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgcmVxdWVzdDogcmVxdWVzdCxcbiAgICB1cGxvYWRGaWxlOiB1cGxvYWRGaWxlXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WeGRXVnpkRWhoYm1Sc1pYSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdmJXOWtkV3hsTDNKbGNYVmxjM1JJWVc1a2JHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenM3T3pzN1FVRkJRU3d5UTBGQmNVTTdRVUZEY2tNc01FTkJRVzlETzBGQlEzQkRMREJEUVVGdlF6dEJRVU53UXl3MlEwRkJkVU03UVVGRGRrTXNLME5CUVhsRE8wRkJRM3BETEcxRVFVRTJRenRCUVVNM1F5eHhSRUZCSzBNN1FVRkRMME1zZFVSQlFXbEVPMEZCUTJwRUxHMURRVUUyUWp0QlFVVTNRaXdyUTBGQk1FTTdRVUZITVVNc1UwRkJVeXhOUVVGTkxFTkJRVU1zVTBGQmFVSTdTVUZETjBJc1NVRkJTU3hUUVVGVExFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPMUZCUXpsQ0xFOUJRVThzVTBGQlV5eERRVUZCTzB0QlEyNUNPMU5CUVUwN1VVRkRTQ3hKUVVGSkxGTkJRVk1zUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJRenRSUVVOcVF5eEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhUUVVGVExFdEJRVXNzVlVGQlZTeEZRVUZGTzFsQlEzaERMRk5CUVZNc1IwRkJSeXhuUWtGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkJPMU5CUTJwRE8xRkJRMFFzVDBGQlR5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRPMHRCUTJoRE8wRkJRMHdzUTBGQlF6dEJRVWRFTEZOQlFWTXNTMEZCU3l4RFFVRXJReXhIUVVGTk8wbEJReTlFTEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU4wUXl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03UzBGRGNFSTdTVUZGUkN4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExGbEJRVmtzUzBGQlN5eFhRVUZYTEVWQlFVVTdVVUZEZWtNc1IwRkJSeXhEUVVGRExGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEZUVJN1UwRkJUVHRSUVVOSUxFZEJRVWNzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0TFFVTjBRanRKUVVWRUxFbEJRVWtzUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlR0UlFVTnFRaXhwUWtGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03UzBGRGFrTTdTVUZGUkN4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUlVGQlJUdFJRVU5vUWl4SFFVRkhMRU5CUVVNc1UwRkJVeXhIUVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTTdVVUZEZUVJc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRemRDTzBsQlJVUXNUMEZCVHl4SFFVRkhMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSMFFzVTBGQlV5eHZRa0ZCYjBJc1EwRkJReXhIUVVGdFFqczdTVUZGTjBNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVTdVVUZEV0N4SFFVRkhMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dExRVU5xUWp0SlFVVkVMRWxCUVVrc1IwRkJSeXhEUVVGRExGTkJRVk1zUzBGQlN5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRVZCUVVVN1VVRkRPVVFzUjBGQlJ5eERRVUZETEVsQlFVa3NaMEpCUVU4c1IwRkJSeXhEUVVGRExFbEJRV01zWlVGQlJ5eG5Ra0ZCVFN4RFFVRkRMRmRCUVZjc1NVRkJSeXhuUWtGQlRTeERRVUZETEU5QlFVOHNUVUZCUXl4RFFVRkRPMHRCUXpWRk8wbEJSMFFzU1VGQlRTeEZRVUZGTEVkQlFVY3NZVUZCWVN4RlFVRkZMRU5CUVVNN1NVRkRNMElzUjBGQlJ5eERRVUZETEVsQlFVa3NaMEpCUVU4c1JVRkJSU3hGUVVGTExFZEJRVWNzUTBGQlF5eEpRVUZqTEVOQlFVTXNRMEZCUXp0SlFVVXhReXhIUVVGSExFTkJRVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRE8wbEJRMnBETEVkQlFVY3NRMEZCUXl4UlFVRlJMRWRCUVVjc1IwRkJSeXhEUVVGRExGRkJRVkVzU1VGQlNTeE5RVUZOTEVOQlFVTTdTVUZIZEVNc1NVRkJTU3hIUVVGSExFTkJRVU1zVFVGQlRTeExRVUZMTEV0QlFVc3NSVUZCUlR0UlFVTjBRaXhKUVVGSkxHZENRVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTJoQ0xFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NZVUZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eFpRVUZITEVkQlFVTXNaMEpCUVUwc1EwRkJReXhYUVVGWExFbEJRVWNzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRTFCUVVVc1EwRkJRenRUUVVNMVJUdFJRVU5FTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1lVRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wdEJRM2hETzBsQlJVUXNNRUpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUlRWQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVZEVMRk5CUVZNc2RVSkJRWFZDTEVOQlFVTXNSMEZCYzBJN08wbEJRMjVFTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRk8xRkJRMllzUjBGQlJ5eERRVUZETEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1MwRkRja0k3U1VGRlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4VFFVRlRMRXRCUVVzc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFGQlF6bEVMRWRCUVVjc1EwRkJReXhSUVVGUkxHZENRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRnJRaXhsUVVGSExHZENRVUZOTEVOQlFVTXNWMEZCVnl4SlFVRkhMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eE5RVUZETEVOQlFVTTdTMEZEY0VZN1NVRkhSQ3hKUVVGTkxFVkJRVVVzUjBGQlJ5eGhRVUZoTEVWQlFVVXNRMEZCUXp0SlFVTXpRaXhIUVVGSExFTkJRVU1zVVVGQlVTeG5Ra0ZCVHl4RlFVRkZMRVZCUVVzc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlIzaERMRWxCUVVrc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVTdVVUZEYUVJc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eGhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExGbEJRVWNzUjBGQlF5eG5Ra0ZCVFN4RFFVRkRMRmRCUVZjc1NVRkJSeXhuUWtGQlRTeERRVUZETEU5QlFVOHNUVUZCUlN4RFFVRkRPMHRCUXpWRk8wbEJSVVFzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4aFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkZja01zTUVKQlFXZENMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJUVkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVVZFTEZOQlFWTXNZVUZCWVR0SlFVTnNRaXhKUVVGSkxFVkJRVVVzUjBGQlVTeEZRVUZGTEVOQlFVTTdTVUZEYWtJc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNWVUZCVlN4TFFVRkxMRlZCUVZVc1JVRkJSVHRSUVVONlF5eEZRVUZGTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dExRVU0xUWp0VFFVRk5MRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZWQlFWVXNTMEZCU3l4UlFVRlJMRVZCUVVVN1VVRkRPVU1zUlVGQlJTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRE8wdEJRekZDTzBsQlEwUXNUMEZCVHl4RlFVRkZMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eFRRVUZUTEVOQlFVTXNSMEZCYlVJN1NVRkRiRU1zUjBGQlJ5eEhRVUZITEc5Q1FVRnZRaXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyaERMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTXZRaXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETzFsQlExQXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSE8xbEJRMW9zU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpPMWxCUTJRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eE5RVUZOTzFsQlEyeENMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEpRVUZKTEVWQlFVVTdXVUZEZUVJc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eFJRVUZSTEVsQlFVa3NUVUZCVFR0WlFVTm9ReXhQUVVGUExGbEJRVU1zUjBGQmIwTTdaMEpCUTNoRExFOUJRVThzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFTkJRVU03V1VGRFJDeEpRVUZKTEZsQlFVTXNSMEZCTmtJN1owSkJRemxDTEhOQ1FVRlpMRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRia01zVDBGQlR5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka0lzUTBGQlF6dFpRVU5FTEZGQlFWRTdaMEpCUTBvc1NVRkJTU3hQUVVGUExFZEJRVWNzUTBGQlF5eFJRVUZSTEV0QlFVc3NWVUZCVlN4RlFVRkZPMjlDUVVOd1F5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN2FVSkJRMnhDTzJkQ1FVTkVMRWxCUVVrc1IwRkJSeXhEUVVGRExGZEJRVmNzUlVGQlJUdHZRa0ZEYWtJc2FVSkJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUVR0cFFrRkRha0k3V1VGRFRDeERRVUZETzFOQlEwb3NRMEZCUXl4RFFVRkJPMGxCUTA0c1EwRkJReXhEUVVGRExFTkJRVUU3UVVGRFRpeERRVUZETzBGQlJVUXNVMEZCVXl4WlFVRlpMRU5CUVVNc1IwRkJjMEk3U1VGRGVFTXNSMEZCUnl4SFFVRkhMSFZDUVVGMVFpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTI1RExFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUVHRSUVVNdlFpeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUTFZc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITzFsQlExb3NVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhSUVVGUkxFbEJRVWtzUlVGQlJUdFpRVU0xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEzQkNMRkZCUVZFc1JVRkJSU3hIUVVGSExFTkJRVU1zVVVGQlVUdFpRVU4wUWl4UFFVRlBMRmxCUVVNc1IwRkJkVU03WjBKQlF6TkRMRTlCUVU4c1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaENMRU5CUVVNN1dVRkRSQ3hKUVVGSkxGbEJRVU1zUjBGQk5rSTdaMEpCUXpsQ0xITkNRVUZaTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtNc1QwRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZGtJc1EwRkJRenRaUVVORUxGRkJRVkU3WjBKQlEwb3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhSUVVGUkxFdEJRVXNzVlVGQlZTeEZRVUZGTzI5Q1FVTndReXhIUVVGSExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdhVUpCUTJ4Q08yZENRVU5FTEVsQlFVa3NSMEZCUnl4RFFVRkRMRmRCUVZjc1JVRkJSVHR2UWtGRGFrSXNhVUpCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlFUdHBRa0ZEYWtJN1dVRkRUQ3hEUVVGRE8xTkJRMG9zUTBGQlF5eERRVUZCTzBsQlEwNHNRMEZCUXl4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzVTBGQlV5eFBRVUZQTEVOQlFVTXNSMEZCYlVJN1NVRkRhRU1zVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VlFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTk8xRkJReTlDTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRmFrSXNTVUZCU1N4blFrRkJUU3hEUVVGRExGRkJRVkVzUlVGQlJUdFpRVU5xUWl4SlFVRkpMRmxCUVZrc1IwRkJSeXh4UWtGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVONFF5eEpRVUZKTEZsQlFWa3NSVUZCUlR0blFrRkRaQ3hKUVVGSkxGRkJRVkVzUjBGQlJ5eDVRa0ZCWlN4RFFVRkRMRmxCUVZrc1JVRkJSU3hIUVVGSExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdaMEpCUXpkRUxFOUJRVThzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMkZCUXpWQ08xTkJRMG83VVVGRlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVN1dVRkRXQ3h6UWtGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVONlFqdFJRVVZFTEhkQ1FVRmpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEzWkNMRTlCUVU4c1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZCTzFGQlEzcENMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZETEVkQlFVYzdXVUZEVWl4SlFVRkpMRkZCUVZFc1IwRkJSeXg1UWtGQlpTeERRVUZETEVkQlFYTkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFsQlEzWkdMRTlCUVU4c1QwRkJUeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlF6ZENMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eFZRVUZETEVOQlFVTTdXVUZEVUN4UFFVRlBMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU55UWl4RFFVRkRMRU5CUVVNc1EwRkJRVHRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVVkVMRk5CUVZNc1ZVRkJWU3hEUVVGRExFZEJRWE5DTzBsQlEzUkRMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlF5eFBRVUZQTEVWQlFVVXNUVUZCVFR0UlFVTXZRaXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUldwQ0xFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVN1dVRkRha0lzU1VGQlNTeFpRVUZaTEVkQlFVY3NjVUpCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3haUVVGWkxFVkJRVVU3WjBKQlEyUXNTVUZCU1N4UlFVRlJMRWRCUVVjc2VVSkJRV1VzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRE8yZENRVU5vUlN4UFFVRlBMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dGhRVU0xUWp0VFFVTktPMUZCUlVRc2QwSkJRV01zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRka0lzVDBGQlR5eFpRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVFN1VVRkROVUlzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVVNc1IwRkJSenRaUVVOU0xFbEJRVWtzVVVGQlVTeEhRVUZITEhsQ1FVRmxMRU5CUVVNc1IwRkJlVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNN1dVRkROMFlzVDBGQlR5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkROMElzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVVNc1EwRkJRenRaUVVOUUxFOUJRVThzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKQ0xFTkJRVU1zUTBGQlF5eERRVUZCTzBsQlEwNHNRMEZCUXl4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4TlFVRk5MRkZCUVVFN1NVRkRUaXhQUVVGUExGTkJRVUU3U1VGRFVDeFZRVUZWTEZsQlFVRTdRMEZEWWl4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR3h2WVdScGJtY2dabkp2YlNBbkxpNHZkWFJwYkM5c2IyRmthVzVuSjF4dWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhHNXBiWEJ2Y25RZ2MzUmhkSFZ6SUdaeWIyMGdKeTR1TDNOMGIzSmxMM04wWVhSMWN5ZGNibWx0Y0c5eWRDQnRiMk5yVFdGdVlXZGxjaUJtY205dElDY3VMMjF2WTJ0TllXNWhaMlZ5SjF4dWFXMXdiM0owSUdOaFkyaGxUV0Z1WVdkbGNpQm1jbTl0SUNjdUwyTmhZMmhsVFdGdVlXZGxjaWRjYm1sdGNHOXlkQ0J6WlhOemFXOXVUV0Z1WVdkbGNpQm1jbTl0SUNjdUwzTmxjM05wYjI1TllXNWhaMlZ5SjF4dWFXMXdiM0owSUhKbGMzQnZibk5sU0dGdVpHeGxjaUJtY205dElDY3VMM0psYzNCdmJuTmxTR0Z1Wkd4bGNpZGNibWx0Y0c5eWRDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUlHWnliMjBnWENJdUwyUjFjbUYwYVc5dVVtVndiM0owWlhKY0lseHVhVzF3YjNKMElIVnliQ0JtY205dElDY3VMaTkxZEdsc0wzVnliQ2RjYm1sdGNHOXlkQ0I3U1ZKbGNYVmxjM1JQY0hScGIyNHNJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVmU0JtY205dElGd2lMaTR2YVc1MFpYSm1ZV05sWENKY2JtbHRjRzl5ZENCbGNuSnZja2hoYm1Sc1pYSWdabkp2YlNCY0lpNHZaWEp5YjNKSVlXNWtiR1Z5WENJN1hHNWNiaTh2SU9hZ3ZPVzhqK1dNbG5WeWJGeHVablZ1WTNScGIyNGdabTl5YldGMEtHOXlhV2RwYmxWeWJEb2djM1J5YVc1bktTQjdYRzRnSUNBZ2FXWWdLRzl5YVdkcGJsVnliQzV6ZEdGeWRITlhhWFJvS0Nkb2RIUndKeWtwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUc5eWFXZHBibFZ5YkZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR3hsZENCMWNteFFaWEptYVhnZ1BTQmpiMjVtYVdjdWRYSnNVR1Z5Wm1sNE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NTFjbXhRWlhKbWFYZ2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RYSnNVR1Z5Wm1sNElEMGdZMjl1Wm1sbkxuVnliRkJsY21acGVDZ3BYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ5YkZCbGNtWnBlQ0FySUc5eWFXZHBibFZ5YkR0Y2JpQWdJQ0I5WEc1OVhHNWNiaTh2SU9hSmdPYWNpZWl2dCtheGd1V1BrZVdIdXVXSmplbWNnT2ltZ2VXQm11ZWFoT1M2aSthRGhWeHVablZ1WTNScGIyNGdjSEpsUkc4OFZDQmxlSFJsYm1SeklFbFNaWEYxWlhOMFQzQjBhVzl1SUh3Z1NWVndiRzloWkVacGJHVlBjSFJwYjI0K0tHOWlham9nVkNrNklGUWdlMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdiMkpxTG1KbFptOXlaVk5sYm1RZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnZZbW91WW1WbWIzSmxVMlZ1WkNncE8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlEbm1idmx2WlhtZ0lIbHBMSG1sWWp2dkl6cGg0M2xwSTNubWJ2bHZaWG9ycUhtbGJCY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNXlaVXh2WjJsdVEyOTFiblFnUFQwOUlGd2lkVzVrWldacGJtVmtYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ2IySnFMbkpsVEc5bmFXNURiM1Z1ZENBOUlEQTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2IySnFMbkpsVEc5bmFXNURiM1Z1ZENzck8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHZZbW91YzJodmQweHZZV1JwYm1jcElIdGNiaUFnSUNBZ0lDQWdiRzloWkdsdVp5NXphRzkzS0c5aWFpNXphRzkzVEc5aFpHbHVaeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGdlltb3ViM0pwWjJsdVZYSnNLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNXZjbWxuYVc1VmNtd2dQU0J2WW1vdWRYSnNPMXh1SUNBZ0lDQWdJQ0J2WW1vdWRYSnNJRDBnWm05eWJXRjBLRzlpYWk1MWNtd3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCdlltbzdYRzU5WEc1Y2JpOHZJT2Fndk9XOGorV01sdVdraE9lUWh1aXZ0K2F4Z3VlYWhHOWlhdVdHaGVXdXVWeHVablZ1WTNScGIyNGdhVzVwZEdsaGJHbDZaVkpsY1hWbGMzUlBZbW9vYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlrZ2UxeHVYRzRnSUNBZ2FXWWdLQ0Z2WW1vdVpHRjBZU2tnZTF4dUlDQWdJQ0FnSUNCdlltb3VaR0YwWVNBOUlIdDlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h2WW1vdWIzSnBaMmx1VlhKc0lDRTlQU0JqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1MWNtd2dKaVlnYzNSaGRIVnpMbk5sYzNOcGIyNHBJSHRjYmlBZ0lDQWdJQ0FnYjJKcUxtUmhkR0VnUFNCN0xpNHViMkpxTG1SaGRHRWdZWE1nYjJKcVpXTjBMQ0JiWTI5dVptbG5Mbk5sYzNOcGIyNU9ZVzFsWFRvZ2MzUmhkSFZ6TG5ObGMzTnBiMjU5TzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SU9XbWd1YWVuT2FjaWVXRnFPV3hnT1dQZ3VhVnNPKzhqT1dJbWVhM3UrV0tvRnh1SUNBZ0lHTnZibk4wSUdka0lEMGdaMlYwUjJ4dlltRnNSR0YwWVNncE8xeHVJQ0FnSUc5aWFpNWtZWFJoSUQwZ2V5NHVMbWRrTENBdUxpNXZZbW91WkdGMFlTQmhjeUJ2WW1wbFkzUjlPMXh1WEc0Z0lDQWdiMkpxTG0xbGRHaHZaQ0E5SUc5aWFpNXRaWFJvYjJRZ2ZId2dKMGRGVkNjN1hHNGdJQ0FnYjJKcUxtUmhkR0ZVZVhCbElEMGdiMkpxTG1SaGRHRlVlWEJsSUh4OElDZHFjMjl1Snp0Y2JseHVJQ0FnSUM4dklPV21ndWFlbk9pdnQrYXhndVM0amVhWXIwZEZWTys4ak9XSW1lV2NxRlZTVE9TNHJlaUhxdVdLcU9XS29PUzRpdWVadStXOWxlYUFnZVdTak9XRnFPV3hnT1dQZ3VhVnNGeHVJQ0FnSUdsbUlDaHZZbW91YldWMGFHOWtJQ0U5UFNCY0lrZEZWRndpS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h6ZEdGMGRYTXVjMlZ6YzJsdmJpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2IySnFMblZ5YkNBOUlIVnliQzV6WlhSUVlYSmhiWE1vYjJKcUxuVnliQ3dnZTF0amIyNW1hV2N1YzJWemMybHZiazVoYldWZE9pQnpkR0YwZFhNdWMyVnpjMmx2Ym4wcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJRzlpYWk1MWNtd2dQU0IxY213dWMyVjBVR0Z5WVcxektHOWlhaTUxY213c0lHZGtLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUxuTjBZWEowS0c5aWFpazdYRzVjYmlBZ0lDQnlaWFIxY200Z2IySnFPMXh1ZlZ4dVhHNHZMeURtb0x6bHZJL2xqSmJscElUbmtJYmt1SXJrdktEbWxvZmt1N2JubW9Sdlltcmxob1hscnJsY2JtWjFibU4wYVc5dUlHbHVhWFJwWVd4cGVtVlZjR3h2WVdSR2FXeGxUMkpxS0c5aWFqb2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJSHRjYmlBZ0lDQnBaaUFvSVc5aWFpNW1iM0p0UkdGMFlTa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vdVptOXliVVJoZEdFZ1BTQjdmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYjJKcUxtOXlhV2RwYmxWeWJDQWhQVDBnWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dWRYSnNJQ1ltSUhOMFlYUjFjeTV6WlhOemFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFpNW1iM0p0UkdGMFlTQTlJSHN1TGk1dlltb3VabTl5YlVSaGRHRWdZWE1nYjJKcVpXTjBMQ0JiWTI5dVptbG5Mbk5sYzNOcGIyNU9ZVzFsWFRvZ2MzUmhkSFZ6TG5ObGMzTnBiMjU5TzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SU9XbWd1YWVuT2FjaWVXRnFPV3hnT1dQZ3VhVnNPKzhqT1dJbWVhM3UrV0tvRnh1SUNBZ0lHTnZibk4wSUdka0lEMGdaMlYwUjJ4dlltRnNSR0YwWVNncE8xeHVJQ0FnSUc5aWFpNW1iM0p0UkdGMFlTQTlJSHN1TGk1blpDd2dMaTR1YjJKcUxtWnZjbTFFWVhSaGZUdGNibHh1SUNBZ0lDOHZJT1d3aHVlWnUrbVpodWFBZ2VTNW4rVzRwdVdjcUhWeWJPUzRpbHh1SUNBZ0lHbG1JQ2h6ZEdGMGRYTXVjMlZ6YzJsdmJpa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vdWRYSnNJRDBnZFhKc0xuTmxkRkJoY21GdGN5aHZZbW91ZFhKc0xDQjdXMk52Ym1acFp5NXpaWE56YVc5dVRtRnRaVjA2SUhOMFlYUjFjeTV6WlhOemFXOXVmU2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJT1dGcU9XeGdPV1BndWFWc09XUWpPYVh0dWFVdnVXY3FIVnliT1M0aWx4dUlDQWdJRzlpYWk1MWNtd2dQU0IxY213dWMyVjBVR0Z5WVcxektHOWlhaTUxY213c0lHZGtLVHRjYmx4dUlDQWdJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSXVjM1JoY25Rb2IySnFLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnZZbW83WEc1OVhHNWNibVoxYm1OMGFXOXVJR2RsZEVkc2IySmhiRVJoZEdFb0tTQjdYRzRnSUNBZ2JHVjBJR2RrT2lCaGJua2dQU0I3ZlR0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVuYkc5aVlXeEVZWFJoSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ1oyUWdQU0JqYjI1bWFXY3VaMnh2WW1Gc1JHRjBZU2dwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NW5iRzlpWVd4RVlYUmhJRDA5UFNCY0ltOWlhbVZqZEZ3aUtTQjdYRzRnSUNBZ0lDQWdJR2RrSUQwZ1kyOXVabWxuTG1kc2IySmhiRVJoZEdFN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQm5aRHRjYm4xY2JseHVablZ1WTNScGIyNGdaRzlTWlhGMVpYTjBLRzlpYWpvZ1NWSmxjWFZsYzNSUGNIUnBiMjRwSUh0Y2JpQWdJQ0J2WW1vZ1BTQnBibWwwYVdGc2FYcGxVbVZ4ZFdWemRFOWlhaWh2WW1vcE8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZiV2x6WlNnb2NtVnpiMngyWlN3Z2NtVnFaV04wS1NBOVBpQjdYRzRnSUNBZ0lDQWdJSGQ0TG5KbGNYVmxjM1FvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdlltb3VkWEpzTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaR0YwWVRvZ2IySnFMbVJoZEdFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WlhSb2IyUTZJRzlpYWk1dFpYUm9iMlFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQm9aV0ZrWlhJNklHOWlhaTVvWldGa1pYSWdmSHdnZTMwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaFZIbHdaVG9nYjJKcUxtUmhkR0ZVZVhCbElIeDhJQ2RxYzI5dUp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMVkyTmxjM01vY21Wek9pQjNlQzVTWlhGMVpYTjBVM1ZqWTJWemMwTmhiR3hpWVdOclVtVnpkV3gwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc0tISmxjem9nZDNndVIyVnVaWEpoYkVOaGJHeGlZV05yVW1WemRXeDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhKeWIzSklZVzVrYkdWeUxuTjVjM1JsYlVWeWNtOXlLRzlpYWl3Z2NtVnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtISmxjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXRjR3hsZEdVb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdVkyOXRjR3hsZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2WW1vdVkyOXRjR3hsZEdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c5aWFpNXphRzkzVEc5aFpHbHVaeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNiMkZrYVc1bkxtaHBaR1VvS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5S1Z4dWZWeHVYRzVtZFc1amRHbHZiaUJrYjFWd2JHOWhaRVpwYkdVb2IySnFPaUJKVlhCc2IyRmtSbWxzWlU5d2RHbHZiaWtnZTF4dUlDQWdJRzlpYWlBOUlHbHVhWFJwWVd4cGVtVlZjR3h2WVdSR2FXeGxUMkpxS0c5aWFpazdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnZDNndWRYQnNiMkZrUm1sc1pTaDdYRzRnSUNBZ0lDQWdJQ0FnSUNCMWNtdzZJRzlpYWk1MWNtd3NYRzRnSUNBZ0lDQWdJQ0FnSUNCbWFXeGxVR0YwYURvZ2IySnFMbVpwYkdWUVlYUm9JSHg4SUNjbkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnYm1GdFpUb2diMkpxTG01aGJXVWdmSHdnSnljc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNKdFJHRjBZVG9nYjJKcUxtWnZjbTFFWVhSaExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNWalkyVnpjeWh5WlhNNklIZDRMbFZ3Ykc5aFpFWnBiR1ZUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNoeVpYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUdaaGFXd29jbVZ6T2lCM2VDNUhaVzVsY21Gc1EyRnNiR0poWTJ0U1pYTjFiSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGNuSnZja2hoYm1Sc1pYSXVjM2x6ZEdWdFJYSnliM0lvYjJKcUxDQnlaWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9jbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjF3YkdWMFpTZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNWpiMjF3YkdWMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5aWFpNWpiMjF3YkdWMFpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2IySnFMbk5vYjNkTWIyRmthVzVuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3h2WVdScGJtY3VhR2xrWlNncFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgwcFhHNTlYRzVjYm1aMWJtTjBhVzl1SUhKbGNYVmxjM1FvYjJKcU9pQkpVbVZ4ZFdWemRFOXdkR2x2YmlrNklHRnVlU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2IySnFJRDBnY0hKbFJHOG9iMkpxS1R0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvWTI5dVptbG5MbTF2WTJ0S2MyOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYlc5amExSmxjM0J2Ym5ObElEMGdiVzlqYTAxaGJtRm5aWEl1WjJWMEtHOWlhaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYlc5amExSmxjM0J2Ym5ObEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUhKbGMzQnZibk5sSUQwZ2NtVnpjRzl1YzJWSVlXNWtiR1Z5S0cxdlkydFNaWE53YjI1elpTd2diMkpxTENBbmNtVnhkV1Z6ZENjcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTnZiSFpsS0hKbGMzQnZibk5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2h2WW1vdVkyRmphR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oWTJobFRXRnVZV2RsY2k1blpYUW9iMkpxS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSE5sYzNOcGIyNU5ZVzVoWjJWeUxtMWhhVzRvS1M1MGFHVnVLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrYjFKbGNYVmxjM1FvYjJKcUtWeHVJQ0FnSUNBZ0lDQjlLUzUwYUdWdUtDaHlaWE1wSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQnlaWE53YjI1elpTQTlJSEpsYzNCdmJuTmxTR0Z1Wkd4bGNpaHlaWE1nWVhNZ2QzZ3VVbVZ4ZFdWemRGTjFZMk5sYzNORFlXeHNZbUZqYTFKbGMzVnNkQ3dnYjJKcUxDQW5jbVZ4ZFdWemRDY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvY21WemNHOXVjMlVwTzF4dUlDQWdJQ0FnSUNCOUtTNWpZWFJqYUNnb1pTa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENobEtUdGNiaUFnSUNBZ0lDQWdmU2xjYmlBZ0lDQjlLVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQjFjR3h2WVdSR2FXeGxLRzlpYWpvZ1NWVndiRzloWkVacGJHVlBjSFJwYjI0cE9pQmhibmtnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2dvY21WemIyeDJaU3dnY21WcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHOWlhaUE5SUhCeVpVUnZLRzlpYWlrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJtWnBaeTV0YjJOclNuTnZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiR1YwSUcxdlkydFNaWE53YjI1elpTQTlJRzF2WTJ0TllXNWhaMlZ5TG1kbGRDaHZZbW9wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxdlkydFNaWE53YjI1elpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCeVpYTndiMjV6WlNBOUlISmxjM0J2Ym5ObFNHRnVaR3hsY2lodGIyTnJVbVZ6Y0c5dWMyVXNJRzlpYWl3Z0ozVndiRzloWkVacGJHVW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTaHlaWE53YjI1elpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J6WlhOemFXOXVUV0Z1WVdkbGNpNXRZV2x1S0NrdWRHaGxiaWdvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWkc5VmNHeHZZV1JHYVd4bEtHOWlhaWxjYmlBZ0lDQWdJQ0FnZlNrdWRHaGxiaWdvY21WektTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnY21WemNHOXVjMlVnUFNCeVpYTndiMjV6WlVoaGJtUnNaWElvY21WeklHRnpJSGQ0TGxWd2JHOWhaRVpwYkdWVGRXTmpaWE56UTJGc2JHSmhZMnRTWlhOMWJIUXNJRzlpYWl3Z0ozVndiRzloWkVacGJHVW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTnZiSFpsS0hKbGMzQnZibk5sS1R0Y2JpQWdJQ0FnSUNBZ2ZTa3VZMkYwWTJnb0tHVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb1pTazdYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdmU2xjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ2UxeHVJQ0FnSUdadmNtMWhkQ3hjYmlBZ0lDQnlaWEYxWlhOMExGeHVJQ0FnSUhWd2JHOWhaRVpwYkdWY2JuMWNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4vcmVxdWVzdEhhbmRsZXJcIik7XG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XG52YXIgY2FjaGVNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9jYWNoZU1hbmFnZXJcIik7XG52YXIgZHVyYXRpb25SZXBvcnRlcl8xID0gcmVxdWlyZShcIi4vZHVyYXRpb25SZXBvcnRlclwiKTtcbnZhciBzZXNzaW9uTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vc2Vzc2lvbk1hbmFnZXJcIik7XG5mdW5jdGlvbiByZXNwb25zZShyZXMsIG9iaiwgbWV0aG9kKSB7XG4gICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXMuZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXMuZGF0YSA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmNhdGNoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5sb2dpY0Vycm9yKG9iaiwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5lbmQob2JqKTtcbiAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQubG9naW5UcmlnZ2VyKHJlcy5kYXRhKSAmJiBvYmoucmVMb2dpbkNvdW50ICE9PSB1bmRlZmluZWQgJiYgb2JqLnJlTG9naW5Db3VudCA8IGNvbmZpZ18xLmRlZmF1bHQucmVMb2dpbkxpbWl0KSB7XG4gICAgICAgICAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQuZGVsU2Vzc2lvbigpO1xuICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXF1ZXN0XCIpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQucmVxdWVzdChvYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobWV0aG9kID09PSBcInVwbG9hZEZpbGVcIikge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC51cGxvYWRGaWxlKG9iaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzVHJpZ2dlcihyZXMuZGF0YSkpIHtcbiAgICAgICAgICAgIHZhciByZWFsRGF0YSA9IFwiXCI7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGdW5jdGlvbiBzdWNjZXNzRGF0YSBvY2N1ciBlcnJvcjogXCIgKyBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb2JqLm5vQ2FjaGVGbGFzaCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBvYmouc3VjY2VzcyhyZWFsRGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVhbERhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FjaGVNYW5hZ2VyXzEuZGVmYXVsdC5zZXQob2JqLCByZWFsRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob2JqLmNhdGNoRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgbXNnID0gZXJyb3JIYW5kbGVyXzEuZGVmYXVsdC5nZXRFcnJvck1zZyhyZXMpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cuY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmxvZ2ljRXJyb3Iob2JqLCByZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAob2JqLmNhdGNoRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuc3RhdHVzQ29kZS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQubG9naWNFcnJvcihvYmosIHJlcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSByZXNwb25zZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtVnpjRzl1YzJWSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOXlaWE53YjI1elpVaGhibVJzWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN3d1EwRkJiME03UVVGRGNFTXNiVVJCUVRaRE8wRkJRemRETEN0RFFVRjVRenRCUVVONlF5d3JRMEZCZVVNN1FVRkRla01zZFVSQlFXbEVPMEZCUTJwRUxHMUVRVUUyUXp0QlFVYzNReXhUUVVGVExGRkJRVkVzUTBGRFlpeEhRVUY1UlN4RlFVTjZSU3hIUVVGMVF5eEZRVU4yUXl4TlFVRm5RenRKUVVWb1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRXRCUVVzc1IwRkJSeXhGUVVGRk8xRkJSM2hDTEVsQlFVY3NUMEZCVHl4SFFVRkhMRU5CUVVNc1NVRkJTU3hMUVVGTExGRkJRVkVzUlVGQlJUdFpRVU0zUWl4SlFVRkpPMmRDUVVOQkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdZVUZEYmtNN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdG5Ra0ZEVWl4SlFVRkhMRWRCUVVjc1EwRkJReXhWUVVGVkxFVkJRVVU3YjBKQlEyWXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZEZEVJN2NVSkJRVTA3YjBKQlEwZ3NjMEpCUVZrc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOc1F5eFBRVUZQTzJsQ1FVTldPMkZCUTBvN1UwRkRTanRSUVVWRUxEQkNRVUZuUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVV4UWl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zV1VGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zV1VGQldTeExRVUZMTEZOQlFWTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hIUVVGSExHZENRVUZOTEVOQlFVTXNXVUZCWVN4RlFVRkZPMWxCUlRkSExIZENRVUZqTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1dVRkROVUlzU1VGQlJ5eE5RVUZOTEV0QlFVc3NVMEZCVXl4RlFVRkZPMmRDUVVOeVFpeDNRa0ZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGeFFpeERRVUZETEVOQlFVTTdZVUZEYWtRN2FVSkJRVTBzU1VGQlJ5eE5RVUZOTEV0QlFVc3NXVUZCV1N4RlFVRkZPMmRDUVVNdlFpeDNRa0ZCWXl4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGM1FpeERRVUZETEVOQlFVTTdZVUZEZGtRN1UwRkRTanRoUVVGTkxFbEJRVWtzWjBKQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzFsQlJYaERMRWxCUVVrc1VVRkJVU3hIUVVGelF5eEZRVUZGTEVOQlFVTTdXVUZEY2tRc1NVRkJTVHRuUWtGRFFTeEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhYUVVGWExFdEJRVXNzVlVGQlZTeEZRVUZGTzI5Q1FVTXhReXhSUVVGUkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJsQ1FVTXpRenR4UWtGQlRUdHZRa0ZEU0N4UlFVRlJMRWRCUVVjc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF6dHBRa0ZEZGtJN1lVRkRTanRaUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTzJkQ1FVTlNMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zYjBOQlFXOURMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRE0wUTdXVUZEUkN4SlFVRkhMRU5CUVVVc1IwRkJjMElzUTBGQlF5eFpRVUZaTEVWQlFVVTdaMEpCUlhSRExFbEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRlZCUVZVc1JVRkJRenR2UWtGRGFrTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dHBRa0ZEZWtJN2NVSkJRVTA3YjBKQlEwZ3NUMEZCVHl4UlFVRlJMRU5CUVVNN2FVSkJRMjVDTzJGQlEwbzdXVUZGUkN4elFrRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRia003WVVGQlRUdFpRVVZJTEVsQlFVY3NSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSVHRuUWtGRFppeEpRVUZKTEVkQlFVY3NSMEZCUnl4elFrRkJXU3hEUVVGRExGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRlRU1zVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03WVVGRGFFTTdhVUpCUVUwN1owSkJRMGdzYzBKQlFWa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEzSkRPMU5CUTBvN1MwRkRTanRUUVVGTk8xRkJSVWdzU1VGQlJ5eEhRVUZITEVOQlFVTXNWVUZCVlN4RlFVRkZPMWxCUTJZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFTkJRVU03VTBGRE9VTTdZVUZCVFR0WlFVTklMSE5DUVVGWkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOeVF6dExRVU5LTzBGQlEwd3NRMEZCUXp0QlFVVkVMR3RDUVVGbExGRkJRVkVzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQmpiMjVtYVdjZ1puSnZiU0FuTGk0dmMzUnZjbVV2WTI5dVptbG5KMXh1YVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dmNtVnhkV1Z6ZEVoaGJtUnNaWEluWEc1cGJYQnZjblFnWlhKeWIzSklZVzVrYkdWeUlHWnliMjBnSnk0dlpYSnliM0pJWVc1a2JHVnlKMXh1YVcxd2IzSjBJR05oWTJobFRXRnVZV2RsY2lCbWNtOXRJQ2N1TDJOaFkyaGxUV0Z1WVdkbGNpZGNibWx0Y0c5eWRDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUlHWnliMjBnSnk0dlpIVnlZWFJwYjI1U1pYQnZjblJsY2lkY2JtbHRjRzl5ZENCelpYTnphVzl1VFdGdVlXZGxjaUJtY205dElDY3VMM05sYzNOcGIyNU5ZVzVoWjJWeUoxeHVhVzF3YjNKMElIc2dTVkpsY1hWbGMzUlBjSFJwYjI0c0lFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUlIMGdabkp2YlNCY0lpNHVMMmx1ZEdWeVptRmpaVndpTzF4dVhHNW1kVzVqZEdsdmJpQnlaWE53YjI1elpTaGNiaUFnSUNCeVpYTTZJSGQ0TGxKbGNYVmxjM1JUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRZ2ZDQjNlQzVWY0d4dllXUkdhV3hsVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MExGeHVJQ0FnSUc5aWFqb2dTVkpsY1hWbGMzUlBjSFJwYjI0Z2ZDQkpWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpeGNiaUFnSUNCdFpYUm9iMlE2SUZ3aWNtVnhkV1Z6ZEZ3aUlId2dYQ0oxY0d4dllXUkdhV3hsWENKY2JpazZJR0Z1ZVNCN1hHNGdJQ0FnYVdZZ0tISmxjeTV6ZEdGMGRYTkRiMlJsSUQwOVBTQXlNREFwSUh0Y2JseHVJQ0FnSUNBZ0lDQXZMeURsaGJ6bHJybDFjR3h2WVdSR2FXeGw2TCtVNVp1ZTU1cUVjbVZ6TG1SaGRHSGxqNi9vZzczbW1LL2xyWmZucktia3VMSmNiaUFnSUNBZ0lDQWdhV1lvZEhsd1pXOW1JSEpsY3k1a1lYUmhJRDA5UFNCY0luTjBjbWx1WjF3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsY3k1a1lYUmhJRDBnU2xOUFRpNXdZWEp6WlNoeVpYTXVaR0YwWVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9iMkpxTG1OaGRHTm9SWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnljbTl5U0dGdVpHeGxjaTVzYjJkcFkwVnljbTl5S0c5aWFpd2djbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSXVaVzVrS0c5aWFpazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZibVpwWnk1c2IyZHBibFJ5YVdkblpYSWhLSEpsY3k1a1lYUmhLU0FtSmlCdlltb3VjbVZNYjJkcGJrTnZkVzUwSUNFOVBTQjFibVJsWm1sdVpXUWdKaVlnYjJKcUxuSmxURzluYVc1RGIzVnVkQ0E4SUdOdmJtWnBaeTV5WlV4dloybHVUR2x0YVhRaEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSGxwTEhtbFlqdnZJemt1SlRwaDQzb3I1WG1yS0htbGJEa3VJM290b1hvdjRmcGhZM252YTVjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5TG1SbGJGTmxjM05wYjI0b0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUtHMWxkR2h2WkNBOVBUMGdYQ0p5WlhGMVpYTjBYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYRjFaWE4wU0dGdVpHeGxjaTV5WlhGMVpYTjBLRzlpYWlCaGN5QkpVbVZ4ZFdWemRFOXdkR2x2YmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lvYldWMGFHOWtJRDA5UFNCY0luVndiRzloWkVacGJHVmNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGNYVmxjM1JJWVc1a2JHVnlMblZ3Ykc5aFpFWnBiR1VvYjJKcUlHRnpJRWxWY0d4dllXUkdhV3hsVDNCMGFXOXVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hqYjI1bWFXY3VjM1ZqWTJWemMxUnlhV2RuWlhJb2NtVnpMbVJoZEdFcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG1qcVhsajZQb3Y1VGxtNTdtaUpEbGlwL25vSUZjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J5WldGc1JHRjBZVG9nYzNSeWFXNW5JSHdnU1VGdWVVOWlhbVZqZENCOElFRnljbUY1UW5WbVptVnlJRDBnWENKY0lqdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VjM1ZqWTJWemMwUmhkR0VnUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVmhiRVJoZEdFZ1BTQmpiMjVtYVdjdWMzVmpZMlZ6YzBSaGRHRW9jbVZ6TG1SaGRHRXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbFlXeEVZWFJoSUQwZ2NtVnpMbVJoZEdFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvWENKR2RXNWpkR2x2YmlCemRXTmpaWE56UkdGMFlTQnZZMk4xY2lCbGNuSnZjam9nWENJZ0t5QmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUtDRW9iMkpxSUdGeklFbFNaWEYxWlhOMFQzQjBhVzl1S1M1dWIwTmhZMmhsUm14aGMyZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlEbHBvTG1ucHprdUxya3VvYmt2NTNvcjRIcG9iWHBuYUxrdUkzcGw2cm5nNEh2dkl6bGlKbmt1STNsbTU3b3NJUHZ2SXpsajZybW1LL252SlBsclpqbW5JRG1sckRtbGJEbWphN3Z2SXpsdm9Ya3VJdm1yS0hvdjV2bGhhWGxobzNubEtoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaDBlWEJsYjJZZ2IySnFMbk4xWTJObGMzTWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpbDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5aWFpNXpkV05qWlhOektISmxZV3hFWVhSaEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZoYkVSaGRHRTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzU3eVQ1YTJZNWEyWTVZS29YRzRnSUNBZ0lDQWdJQ0FnSUNCallXTm9aVTFoYm1GblpYSXVjMlYwS0c5aWFpd2djbVZoYkVSaGRHRXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1bzZsNVkrajZMK1U1WnVlNWFTeDZMU2w1NkNCWEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaWh2WW1vdVkyRjBZMmhGY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCdGMyY2dQU0JsY25KdmNraGhibVJzWlhJdVoyVjBSWEp5YjNKTmMyY29jbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYlhObkxtTnZiblJsYm5RcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsY25KdmNraGhibVJzWlhJdWJHOW5hV05GY25KdmNpaHZZbW9zSUhKbGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBdkx5Qm9kSFJ3YytpL2xPV2JudWVLdHVhQWdlZWdnZW1kbmpJd01GeHVJQ0FnSUNBZ0lDQnBaaWh2WW1vdVkyRjBZMmhGY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0hKbGN5NXpkR0YwZFhORGIyUmxMblJ2VTNSeWFXNW5LQ2twTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaWEp5YjNKSVlXNWtiR1Z5TG14dloybGpSWEp5YjNJb2IySnFMQ0J5WlhNcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0J5WlhOd2IyNXpaVHRjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xudmFyIGVycm9ySGFuZGxlcl8xID0gcmVxdWlyZShcIi4vZXJyb3JIYW5kbGVyXCIpO1xudmFyIGR1cmF0aW9uUmVwb3J0ZXJfMSA9IHJlcXVpcmUoXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIik7XG52YXIgcmVxdWVzdEhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3JlcXVlc3RIYW5kbGVyXCIpO1xudmFyIGNoZWNrU2Vzc2lvblByb21pc2UgPSBudWxsO1xuZnVuY3Rpb24gY2hlY2tTZXNzaW9uKCkge1xuICAgIGlmICghY2hlY2tTZXNzaW9uUHJvbWlzZSkge1xuICAgICAgICBjaGVja1Nlc3Npb25Qcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ3eC5jaGVja1Nlc3Npb24oKVwiKTtcbiAgICAgICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgd3guY2hlY2tTZXNzaW9uKHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbFNlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvTG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LnJlcG9ydCgnd3hfY2hlY2tTZXNzaW9uJywgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2hlY2tTZXNzaW9uUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIGlzU2Vzc2lvbkV4cGlyZU9yRW1wdHkoKSB7XG4gICAgaWYgKCFzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIG5ldyBEYXRlKCkuZ2V0VGltZSgpID4gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKSB7XG4gICAgICAgIGRlbFNlc3Npb24oKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNoZWNrTG9naW4oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgaWYgKGlzU2Vzc2lvbkV4cGlyZU9yRW1wdHkoKSkge1xuICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZG9Mb2dpbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG52YXIgbG9naW5Qcm9taXNlID0gbnVsbDtcbmZ1bmN0aW9uIGRvTG9naW4oKSB7XG4gICAgaWYgKCFsb2dpblByb21pc2UpIHtcbiAgICAgICAgbG9naW5Qcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgbG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsb2dpblByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgbG9naW5Qcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHJlcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsb2dpblByb21pc2U7XG59XG5mdW5jdGlvbiBsb2dpbigpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBjb25zb2xlLmxvZygnd3gubG9naW4nKTtcbiAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHd4LmxvZ2luKHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTJTZXNzaW9uKHJlcy5jb2RlKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IFwi55m75b2V5aSx6LSlXCIsIFwiY29udGVudFwiOiBcIuivt+eojeWQjumHjeivlVtjb2RlIOiOt+WPluWksei0pV1cIiB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQucmVwb3J0KCd3eF9sb2dpbicsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IFwi55m75b2V5aSx6LSlXCIsIFwiY29udGVudFwiOiByZXMuZXJyTXNnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHNldFNlc3Npb24oc2Vzc2lvbikge1xuICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgY29uZmlnXzEuZGVmYXVsdC5kb05vdENoZWNrU2Vzc2lvbiA9IHRydWU7XG4gICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUgJiYgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5KSB7XG4gICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZTtcbiAgICAgICAgd3guc2V0U3RvcmFnZSh7XG4gICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSxcbiAgICAgICAgICAgIGRhdGE6IFN0cmluZyhzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lLFxuICAgICAgICBkYXRhOiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNvZGUyU2Vzc2lvbihjb2RlKSB7XG4gICAgdmFyIGRhdGE7XG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGRhdGEgPSBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5kYXRhIHx8IHt9O1xuICAgIH1cbiAgICBkYXRhW2NvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5jb2RlTmFtZV0gPSBjb2RlO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB3eC5yZXF1ZXN0KHtcbiAgICAgICAgICAgIHVybDogcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LmZvcm1hdChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24udXJsKSxcbiAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICBtZXRob2Q6IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5tZXRob2QgfHwgJ0dFVCcsXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5yZXBvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LnJlcG9ydChjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ucmVwb3J0LCBzdGFydCwgZW5kKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnN1Y2Nlc3MocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiA9IHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfMS5kZWZhdWx0LmRvTm90Q2hlY2tTZXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFN0cmluZyhzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3eC5zZXRTdG9yYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZ2V0RXJyb3JNc2cocmVzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0aXRsZTogXCLnmbvlvZXlpLHotKVcIiwgXCJjb250ZW50XCI6IFwi6K+356iN5ZCO6YeN6K+VXCIgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyB0aXRsZTogXCLnmbvlvZXlpLHotKVcIiwgXCJjb250ZW50XCI6IFwi6K+356iN5ZCO6YeN6K+VXCIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZGVsU2Vzc2lvbigpIHtcbiAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSAnJztcbiAgICB3eC5yZW1vdmVTdG9yYWdlKHtcbiAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXG4gICAgfSk7XG4gICAgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUgJiYgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5KSB7XG4gICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IEluZmluaXR5O1xuICAgICAgICB3eC5yZW1vdmVTdG9yYWdlKHtcbiAgICAgICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1haW4oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrTG9naW4oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWdfMS5kZWZhdWx0LmRvTm90Q2hlY2tTZXNzaW9uID8gUHJvbWlzZS5yZXNvbHZlKCkgOiBjaGVja1Nlc3Npb24oKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgdGl0bGUgPSBfYS50aXRsZSwgY29udGVudCA9IF9hLmNvbnRlbnQ7XG4gICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0LmRvRXJyb3IodGl0bGUsIGNvbnRlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCh7IHRpdGxlOiB0aXRsZSwgY29udGVudDogY29udGVudCB9KTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IF9hLnRpdGxlLCBjb250ZW50ID0gX2EuY29udGVudDtcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQuZG9FcnJvcih0aXRsZSwgY29udGVudCk7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KHsgdGl0bGU6IHRpdGxlLCBjb250ZW50OiBjb250ZW50IH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBtYWluOiBtYWluLFxuICAgIHNldFNlc3Npb246IHNldFNlc3Npb24sXG4gICAgZGVsU2Vzc2lvbjogZGVsU2Vzc2lvblxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnpjMmx2YmsxaGJtRm5aWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZiVzlrZFd4bEwzTmxjM05wYjI1TllXNWhaMlZ5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTUVOQlFXOURPMEZCUTNCRExEQkRRVUZ2UXp0QlFVTndReXdyUTBGQmVVTTdRVUZEZWtNc2RVUkJRV2xFTzBGQlEycEVMRzFFUVVFMlF6dEJRVWMzUXl4SlFVRkpMRzFDUVVGdFFpeEhRVUZSTEVsQlFVa3NRMEZCUXp0QlFVVndReXhUUVVGVExGbEJRVms3U1VGRGFrSXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTzFGQlEzUkNMRzFDUVVGdFFpeEhRVUZITEVsQlFVa3NUMEZCVHl4RFFVRkRMRlZCUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTA3V1VGRE9VTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMWxCUTJwRExFbEJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03V1VGRGJrTXNSVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJRenRuUWtGRFdpeFBRVUZQTzI5Q1FVVklMRTlCUVU4c1QwRkJUeXhGUVVGRkxFTkJRVU03WjBKQlEzSkNMRU5CUVVNN1owSkJRMFFzU1VGQlNUdHZRa0ZGUVN4VlFVRlZMRVZCUVVVc1EwRkJRenR2UWtGRFlpeFBRVUZQTEU5QlFVOHNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenQzUWtGRGJFSXNUMEZCVHl4UFFVRlBMRVZCUVVVc1EwRkJRenR2UWtGRGNrSXNRMEZCUXl4RlFVRkZMRlZCUVVNc1IwRkJVVHQzUWtGRFVpeFBRVUZQTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGRrSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMUFzUTBGQlF6dG5Ra0ZEUkN4UlFVRlJPMjlDUVVOS0xFbEJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03YjBKQlEycERMREJDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRek5FTEVOQlFVTTdZVUZEU2l4RFFVRkRMRU5CUVVFN1VVRkRUaXhEUVVGRExFTkJRVU1zUTBGQlFUdExRVU5NTzBsQlEwUXNUMEZCVHl4dFFrRkJiVUlzUTBGQlF6dEJRVU12UWl4RFFVRkRPMEZCUjBRc1UwRkJVeXh6UWtGQmMwSTdTVUZETTBJc1NVRkJTU3hEUVVGRExHZENRVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZPMUZCUldwQ0xFOUJRVThzU1VGQlNTeERRVUZCTzB0QlEyUTdTVUZEUkN4SlFVRkpMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFVVXNSMEZCUnl4blFrRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJUdFJRVVY2UlN4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVOaUxFOUJRVThzU1VGQlNTeERRVUZCTzB0QlEyUTdTVUZEUkN4UFFVRlBMRXRCUVVzc1EwRkJRVHRCUVVOb1FpeERRVUZETzBGQlJVUXNVMEZCVXl4VlFVRlZPMGxCUTJZc1QwRkJUeXhKUVVGSkxFOUJRVThzUTBGQlF5eFZRVUZETEU5QlFVOHNSVUZCUlN4TlFVRk5PMUZCUXk5Q0xFbEJRVWtzYzBKQlFYTkNMRVZCUVVVc1JVRkJSVHRaUVVVeFFpeG5Ra0ZCVFN4RFFVRkRMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTm9ReXhQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXp0blFrRkRiRUlzVDBGQlR5eFBRVUZQTEVWQlFVVXNRMEZCUXp0WlFVTnlRaXhEUVVGRExFVkJRVVVzVlVGQlF5eEhRVUZSTzJkQ1FVTlNMRTlCUVU4c1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzWkNMRU5CUVVNc1EwRkJReXhEUVVGQk8xTkJRMHc3WVVGQlRUdFpRVVZJTEU5QlFVOHNUMEZCVHl4RlFVRkZMRU5CUVVNN1UwRkRjRUk3U1VGRFRDeERRVUZETEVOQlFVTXNRMEZCUVR0QlFVTk9MRU5CUVVNN1FVRkhSQ3hKUVVGSkxGbEJRVmtzUjBGQlVTeEpRVUZKTEVOQlFVTTdRVUZGTjBJc1UwRkJVeXhQUVVGUE8wbEJRMW9zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0UlFVTm1MRmxCUVZrc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eFZRVUZETEU5QlFVOHNSVUZCUlN4TlFVRk5PMWxCUTNaRExFdEJRVXNzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXp0blFrRkRWQ3haUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETzJkQ1FVTndRaXhQUVVGUExFOUJRVThzUlVGQlJTeERRVUZETzFsQlEzSkNMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eFZRVUZETEVkQlFVYzdaMEpCUTFRc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF6dG5Ra0ZEY0VJc1QwRkJUeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZGtJc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFVDeERRVUZETEVOQlFVTXNRMEZCUVR0TFFVTk1PMGxCUTBRc1QwRkJUeXhaUVVGWkxFTkJRVU03UVVGRGVFSXNRMEZCUXp0QlFVVkVMRk5CUVZNc1MwRkJTenRKUVVOV0xFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUVHRSUVVNdlFpeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8xRkJRM2hDTEVsQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZEYmtNc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU5NTEU5QlFVOHNXVUZCUXl4SFFVRkhPMmRDUVVOUUxFbEJRVWtzUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlR0dlFrRkRWaXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenQzUWtGRGVFSXNUMEZCVHl4UFFVRlBMRVZCUVVVc1EwRkJRenR2UWtGRGNrSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVU1zUjBGQlJ6dDNRa0ZEVkN4UFFVRlBMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEZGtJc1EwRkJReXhEUVVGRExFTkJRVUU3YVVKQlEwdzdjVUpCUVUwN2IwSkJRMGdzVDBGQlR5eE5RVUZOTEVOQlFVTXNSVUZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxGTkJRVk1zUlVGQlJTeHJRa0ZCYTBJc1JVRkJReXhEUVVGRExFTkJRVU03YVVKQlEycEZPMWxCUTB3c1EwRkJRenRaUVVORUxGRkJRVkU3WjBKQlEwb3NTVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0blFrRkRha01zTUVKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRjRVFzUTBGQlF6dFpRVU5FTEVsQlFVa3NXVUZCUXl4SFFVRkhPMmRDUVVOS0xFOUJRVThzVFVGQlRTeERRVUZETEVWQlFVTXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEUxQlFVMHNSVUZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNVVFzUTBGQlF6dFRRVU5LTEVOQlFVTXNRMEZCUVR0SlFVTk9MRU5CUVVNc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlN4RFFVRkRMRTlCUVdVN1NVRkRMMElzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wbEJSWHBDTEdkQ1FVRk5MRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUldoRExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMR2RDUVVGblFpeEZRVUZGTzFGQlEzSkVMR2RDUVVGTkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dFJRVU4yUlN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xbEJRMVlzUjBGQlJ5eEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1owSkJRV2RDTzFsQlF6VkNMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zWjBKQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNN1UwRkRja01zUTBGQlF5eERRVUZCTzB0QlEwdzdTVUZEUkN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRMVlzUjBGQlJ5eEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1YwRkJjVUk3VVVGRGFrTXNTVUZCU1N4RlFVRkZMR2RDUVVGTkxFTkJRVU1zVDBGQlR6dExRVU4yUWl4RFFVRkRMRU5CUVVNN1FVRkRVQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eFpRVUZaTEVOQlFVTXNTVUZCV1R0SlFVTTVRaXhKUVVGSkxFbEJRVk1zUTBGQlF6dEpRVVZrTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEV0QlFVc3NWVUZCVlN4RlFVRkZPMUZCUTJwRUxFbEJRVWtzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dExRVU4wUXp0VFFVRk5PMUZCUTBnc1NVRkJTU3hIUVVGSExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU03UzBGRE1VTTdTVUZEUkN4SlFVRkpMRU5CUVVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNVVUZCVXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJSVFZETEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJReXhQUVVGUExFVkJRVVVzVFVGQlRUdFJRVU12UWl4SlFVRkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMUZCUTJwRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTTdXVUZEVUN4SFFVRkhMRVZCUVVVc2QwSkJRV01zUTBGQlF5eE5RVUZOTEVOQlFVTXNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ5eERRVUZETzFsQlEzQkVMRWxCUVVrc1RVRkJRVHRaUVVOS0xFMUJRVTBzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhOUVVGTkxFbEJRVWtzUzBGQlN6dFpRVU0xUXl4UFFVRlBMRmxCUVVNc1IwRkJiME03WjBKQlEzaERMRWxCUVVrc1IwRkJSeXhEUVVGRExGVkJRVlVzUzBGQlN5eEhRVUZITEVWQlFVVTdiMEpCUlhoQ0xFbEJRVWtzWjBKQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRk8zZENRVU0zUWl4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPM2RDUVVNdlFpd3dRa0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zWjBKQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUVR0eFFrRkRia1U3YjBKQlJVUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8yOUNRVU5ZTEVsQlFVazdkMEpCUTBFc1EwRkJReXhIUVVGSExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdjVUpCUXpsRE8yOUNRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPM0ZDUVVOWU8yOUNRVVZFTEVsQlFVa3NRMEZCUXl4RlFVRkZPM2RDUVVOSUxHZENRVUZOTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJRenQzUWtGRmJrSXNaMEpCUVUwc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN2QwSkJSV2hETEVsQlFVa3NaMEpCUVUwc1EwRkJReXhwUWtGQmFVSXNTVUZCU1N4blFrRkJUU3hEUVVGRExHZENRVUZuUWl4RlFVRkZPelJDUVVOeVJDeG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4SFFVRkhMR2RDUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN05FSkJRM1pGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNN1owTkJRMVlzUjBGQlJ5eEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1owSkJRV2RDTzJkRFFVTTFRaXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRE96WkNRVU55UXl4RFFVRkRMRU5CUVVFN2VVSkJRMHc3ZDBKQlEwUXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJRenMwUWtGRFZpeEhRVUZITEVWQlFVVXNaMEpCUVUwc1EwRkJReXhYUVVGWE96UkNRVU4yUWl4SlFVRkpMRVZCUVVVc1owSkJRVTBzUTBGQlF5eFBRVUZQTzNsQ1FVTjJRaXhEUVVGRExFTkJRVU03ZDBKQlEwZ3NUMEZCVHl4UFFVRlBMRVZCUVVVc1EwRkJRenR4UWtGRGNFSTdlVUpCUVUwN2QwSkJRMGdzVDBGQlR5eE5RVUZOTEVOQlFVTXNjMEpCUVZrc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0eFFrRkRhRVE3YVVKQlEwbzdjVUpCUVUwN2IwSkJRMGdzVDBGQlR5eE5RVUZOTEVOQlFVTXNSVUZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxGTkJRVk1zUlVGQlJTeFBRVUZQTEVWQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOMFJEdFpRVU5NTEVOQlFVTTdXVUZEUkN4UlFVRlJPMWxCUTFJc1EwRkJRenRaUVVORUxFbEJRVWtzUlVGQlJUdG5Ra0ZEUml4UFFVRlBMRTFCUVUwc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTlCUVU4c1JVRkJReXhEUVVGRExFTkJRVU03V1VGRGRrUXNRMEZCUXp0VFFVTktMRU5CUVVNc1EwRkJRVHRKUVVOT0xFTkJRVU1zUTBGQlF5eERRVUZCTzBGQlEwNHNRMEZCUXp0QlFVZEVMRk5CUVZNc1ZVRkJWVHRKUVVObUxHZENRVUZOTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOd1FpeEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRPMUZCUTJJc1IwRkJSeXhGUVVGRkxHZENRVUZOTEVOQlFVTXNWMEZCY1VJN1MwRkRjRU1zUTBGQlF5eERRVUZETzBsQlEwZ3NTVUZCU1N4blFrRkJUU3hEUVVGRExHbENRVUZwUWl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVN1VVRkRja1FzWjBKQlFVMHNRMEZCUXl4aFFVRmhMRWRCUVVjc1VVRkJVU3hEUVVGRE8xRkJRMmhETEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNN1dVRkRZaXhIUVVGSExFVkJRVVVzWjBKQlFVMHNRMEZCUXl4blFrRkJaMEk3VTBGREwwSXNRMEZCUXl4RFFVRkJPMHRCUTB3N1FVRkRUQ3hEUVVGRE8wRkJSVVFzVTBGQlV5eEpRVUZKTzBsQlExUXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhWUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTzFGQlF5OUNMRTlCUVU4c1ZVRkJWU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEzSkNMRTlCUVU4c1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlFUdFJRVU40UlN4RFFVRkRMRVZCUVVVc1ZVRkJReXhGUVVGblFqdG5Ra0ZCWml4blFrRkJTeXhGUVVGRkxHOUNRVUZQTzFsQlEyWXNjMEpCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMWxCUTNKRExFOUJRVThzVFVGQlRTeERRVUZETEVWQlFVTXNTMEZCU3l4UFFVRkJMRVZCUVVVc1QwRkJUeXhUUVVGQkxFVkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dFpRVU5LTEU5QlFVOHNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkRja0lzUTBGQlF5eEZRVUZGTEZWQlFVTXNSVUZCWjBJN1owSkJRV1lzWjBKQlFVc3NSVUZCUlN4dlFrRkJUenRaUVVObUxITkNRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFpRVU55UXl4UFFVRlBMRTFCUVUwc1EwRkJReXhGUVVGRExFdEJRVXNzVDBGQlFTeEZRVUZGTEU5QlFVOHNVMEZCUVN4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1F5eERRVUZETEVOQlFVTXNRMEZCUVR0SlFVTk9MRU5CUVVNc1EwRkJReXhEUVVGQk8wRkJRMDRzUTBGQlF6dEJRVVZFTEd0Q1FVRmxPMGxCUTFnc1NVRkJTU3hOUVVGQk8wbEJRMG9zVlVGQlZTeFpRVUZCTzBsQlExWXNWVUZCVlN4WlFVRkJPME5CUTJJc1EwRkJRU0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0J6ZEdGMGRYTWdabkp2YlNBbkxpNHZjM1J2Y21VdmMzUmhkSFZ6SjF4dWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhHNXBiWEJ2Y25RZ1pYSnliM0pJWVc1a2JHVnlJR1p5YjIwZ0p5NHZaWEp5YjNKSVlXNWtiR1Z5SjF4dWFXMXdiM0owSUdSMWNtRjBhVzl1VW1Wd2IzSjBaWElnWm5KdmJTQW5MaTlrZFhKaGRHbHZibEpsY0c5eWRHVnlKMXh1YVcxd2IzSjBJSEpsY1hWbGMzUklZVzVrYkdWeUlHWnliMjBnSnk0dmNtVnhkV1Z6ZEVoaGJtUnNaWEluWEc1Y2JpOHFJT2VVbitXUnZlV1JxT2FjbitXR2hlV1BxdVdCbXVTNGdPYXNvZWVhaEdOb1pXTnJVMlZ6YzJsdmJpQXFMMXh1YkdWMElHTm9aV05yVTJWemMybHZibEJ5YjIxcGMyVTZJR0Z1ZVNBOUlHNTFiR3c3WEc1Y2JtWjFibU4wYVc5dUlHTm9aV05yVTJWemMybHZiaWdwSUh0Y2JpQWdJQ0JwWmlBb0lXTm9aV05yVTJWemMybHZibEJ5YjIxcGMyVXBJSHRjYmlBZ0lDQWdJQ0FnWTJobFkydFRaWE56YVc5dVVISnZiV2x6WlNBOUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OdmJHVXViRzluS0Z3aWQzZ3VZMmhsWTJ0VFpYTnphVzl1S0NsY0lpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6ZEdGeWRDQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkM2d1WTJobFkydFRaWE56YVc5dUtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkV05qWlhOektDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSG1uSW5tbFlqdnZJemt1SlRsbktqbW5Lem5sSi9sa2IzbGtham1uSi9saG9YbWw2RHBvYnZsaG8zbW80RHBxb3prdW9aY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMjlzZG1Vb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1poYVd3b0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklPZVp1K1c5bGVhQWdlaS9oK2FjbjF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV3hUWlhOemFXOXVLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2IweHZaMmx1S0NrdWRHaGxiaWdvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpiMngyWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5TENBb2NtVnpPaUJoYm5rcFBUNTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0hKbGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl0Y0d4bGRHVW9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdWdVpDQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUxuSmxjRzl5ZENnbmQzaGZZMmhsWTJ0VFpYTnphVzl1Snl3Z2MzUmhjblFzSUdWdVpDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTbGNiaUFnSUNBZ0lDQWdmU2xjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOb1pXTnJVMlZ6YzJsdmJsQnliMjFwYzJVN1hHNTlYRzVjYmk4cUlPV0lwT2FXclhObGMzTnBiMjdtbUsvbGtLYmt1THJucWJybWlKYmx0N0xvdjRmbW5KOGdLaTljYm1aMWJtTjBhVzl1SUdselUyVnpjMmx2YmtWNGNHbHlaVTl5Ulcxd2RIa29LU0I3WEc0Z0lDQWdhV1lnS0NGemRHRjBkWE11YzJWemMybHZiaWtnZTF4dUlDQWdJQ0FnSUNBdkx5RGxwb0xtbnB6bnZKUGxyWmprdUszbXNxSG1uSWx6WlhOemFXOXVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsWEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlZScGJXVWdKaVlnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrZ1BpQnpkR0YwZFhNdWMyVnpjMmx2YmtWNGNHbHlaU2tnZTF4dUlDQWdJQ0FnSUNBdkx5RGxwb0xtbnB6bW5Jbm9ycjdudmE3bW5LemxuTEJ6WlhOemFXOXU1N3lUNWEyWTVwZTI2WmUwNzd5TTVMaVU1N3lUNWEyWTVwZTI2WmUwNWJleTVZaXdYRzRnSUNBZ0lDQWdJR1JsYkZObGMzTnBiMjRvS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVmNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObFhHNTlYRzVjYm1aMWJtTjBhVzl1SUdOb1pXTnJURzluYVc0b0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHpVMlZ6YzJsdmJrVjRjR2x5WlU5eVJXMXdkSGtvS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVyS2g1cHlKNTVtNzZabUc1b0NCNzd5TTVMaU42WnlBNkthQjVZYU5ZMmhsWTJ0VFpYTnphVzl1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjVtYVdjdVpHOU9iM1JEYUdWamExTmxjM05wYjI0Z1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHUnZURzluYVc0b0tTNTBhR1Z1S0NncElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTd2dLSEpsY3pvZ1lXNTVLVDArZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9jbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURudkpQbHJaamt1SzNtbklselpYTnphVzl1NUxpVTVweXE2TCtINXB5ZlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpTZ3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU2xjYm4xY2JseHVMeW9nNTVtNzZabUc1cldCNTZpTDU1cUVjSEp2YldselpTQXFMMXh1YkdWMElHeHZaMmx1VUhKdmJXbHpaVG9nWVc1NUlEMGdiblZzYkR0Y2JseHVablZ1WTNScGIyNGdaRzlNYjJkcGJpZ3BJSHRjYmlBZ0lDQnBaaUFvSVd4dloybHVVSEp2YldselpTa2dlMXh1SUNBZ0lDQWdJQ0JzYjJkcGJsQnliMjFwYzJVZ1BTQnVaWGNnVUhKdmJXbHpaU2dvY21WemIyeDJaU3dnY21WcVpXTjBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYjJkcGJpZ3BMblJvWlc0b0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4dloybHVVSEp2YldselpTQTlJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVVvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTG1OaGRHTm9LQ2h5WlhNcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYjJkcGJsQnliMjFwYzJVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9jbVZ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiRzluYVc1UWNtOXRhWE5sTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJzYjJkcGJpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9LSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCamIyNXpiMnhsTG14dlp5Z25kM2d1Ykc5bmFXNG5LVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoY25RZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjYmlBZ0lDQWdJQ0FnZDNndWJHOW5hVzRvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjM1ZqWTJWemN5aHlaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZ6TG1OdlpHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOWtaVEpUWlhOemFXOXVLSEpsY3k1amIyUmxLUzUwYUdWdUtDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBMbU5oZEdOb0tDaHlaWE1wSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1FvY21WektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnFaV04wS0h0MGFYUnNaVG9nWENMbm1idmx2WlhscExIb3RLVmNJaXdnWENKamIyNTBaVzUwWENJNklGd2k2SyszNTZpTjVaQ082WWVONksrVlcyTnZaR1VnNkk2MzVZK1c1YVN4NkxTbFhWd2lmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiWEJzWlhSbEtDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHVnVaQ0E5SUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUjFjbUYwYVc5dVVtVndiM0owWlhJdWNtVndiM0owS0NkM2VGOXNiMmRwYmljc0lITjBZWEowTENCbGJtUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUdaaGFXd29jbVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGFtVmpkQ2g3ZEdsMGJHVTZJRndpNTVtNzViMlY1YVN4NkxTbFhDSXNJRndpWTI5dWRHVnVkRndpT2lCeVpYTXVaWEp5VFhObmZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dVpuVnVZM1JwYjI0Z2MyVjBVMlZ6YzJsdmJpaHpaWE56YVc5dU9pQnpkSEpwYm1jcElIdGNiaUFnSUNCemRHRjBkWE11YzJWemMybHZiaUE5SUhObGMzTnBiMjQ3WEc0Z0lDQWdMeThnNW8yaTVadWU1cDJsNTVxRWMyVnpjMmx2YnUrOGpPUzRqZW1jZ09pbWdlV0dqV05vWldOclUyVnpjMmx2Ymx4dUlDQWdJR052Ym1acFp5NWtiMDV2ZEVOb1pXTnJVMlZ6YzJsdmJpQTlJSFJ5ZFdVN1hHNGdJQ0FnTHk4ZzVhYUM1cDZjNXB5SjZLNis1NzJ1NXB5czVaeXdjMlZ6YzJsdmJ1aS9oK2FjbithWHR1bVh0Rnh1SUNBZ0lHbG1JQ2hqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlZScGJXVWdKaVlnWTI5dVptbG5Mbk5sYzNOcGIyNUZlSEJwY21WTFpYa3BJSHRjYmlBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21VZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LU0FySUdOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFZHbHRaVHRjYmlBZ0lDQWdJQ0FnZDNndWMyVjBVM1J2Y21GblpTaDdYRzRnSUNBZ0lDQWdJQ0FnSUNCclpYazZJR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsUzJWNUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdGMFlUb2dVM1J5YVc1bktITjBZWFIxY3k1elpYTnphVzl1Ulhod2FYSmxLVnh1SUNBZ0lDQWdJQ0I5S1Z4dUlDQWdJSDFjYmlBZ0lDQjNlQzV6WlhSVGRHOXlZV2RsS0h0Y2JpQWdJQ0FnSUNBZ2EyVjVPaUJqYjI1bWFXY3VjMlZ6YzJsdmJrNWhiV1VnWVhNZ2MzUnlhVzVuTEZ4dUlDQWdJQ0FnSUNCa1lYUmhPaUJ6ZEdGMGRYTXVjMlZ6YzJsdmJseHVJQ0FnSUgwcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCamIyUmxNbE5sYzNOcGIyNG9ZMjlrWlRvZ2MzUnlhVzVuS1NCN1hHNGdJQ0FnYkdWMElHUmhkR0U2SUdGdWVUdGNiaUFnSUNBdkx5QmpiMlJsVkc5VFpYTnphVzl1TG1SaGRHSG1sSy9taklIbGg3M21sYkJjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG1SaGRHRWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0JrWVhSaElEMGdZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFlTZ3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHUmhkR0VnUFNCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNWtZWFJoSUh4OElIdDlPMXh1SUNBZ0lIMWNiaUFnSUNCa1lYUmhXMk52Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG1OdlpHVk9ZVzFsSVYwZ1BTQmpiMlJsTzF4dVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0NoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdiR1YwSUhOMFlYSjBJRDBnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrN1hHNGdJQ0FnSUNBZ0lIZDRMbkpsY1hWbGMzUW9lMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RYSnNPaUJ5WlhGMVpYTjBTR0Z1Wkd4bGNpNW1iM0p0WVhRb1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVkWEpzS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JoZEdFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WlhSb2IyUTZJR052Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG0xbGRHaHZaQ0I4ZkNBblIwVlVKeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITjFZMk5sYzNNb2NtVnpPaUIzZUM1U1pYRjFaWE4wVTNWalkyVnpjME5oYkd4aVlXTnJVbVZ6ZFd4MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbGN5NXpkR0YwZFhORGIyUmxJRDA5UFNBeU1EQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGc2SUNYNXBlMjVMaUs1b3FsWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1eVpYQnZjblFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGRDQmxibVFnUFNCdVpYY2dSR0YwWlNncExtZGxkRlJwYldVb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUjFjbUYwYVc5dVVtVndiM0owWlhJdWNtVndiM0owS0dOdmJtWnBaeTVqYjJSbFZHOVRaWE56YVc5dUxuSmxjRzl5ZEN3Z2MzUmhjblFzSUdWdVpDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCeklEMGdYQ0pjSWp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhNZ1BTQmpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTV6ZFdOalpYTnpLSEpsY3k1a1lYUmhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tITXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wWVhSMWN5NXpaWE56YVc5dUlEMGdjenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SU9hTm91V2JudWFkcGVlYWhITmxjM05wYjI3dnZJemt1STNwbklEb3BvSGxobzFqYUdWamExTmxjM05wYjI1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJtWnBaeTVrYjA1dmRFTm9aV05yVTJWemMybHZiaUE5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeURscG9MbW5wem1uSW5vcnI3bnZhN21uS3psbkxCelpYTnphVzl1NkwrSDVweWY1cGUyNlplMFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ZMjl1Wm1sbkxuTmxjM05wYjI1RmVIQnBjbVZVYVcxbElDWW1JR052Ym1acFp5NXpaWE56YVc5dVJYaHdhWEpsUzJWNUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21VZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LU0FySUdOdmJtWnBaeTV6WlhOemFXOXVSWGh3YVhKbFZHbHRaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCM2VDNXpaWFJUZEc5eVlXZGxLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhMlY1T2lCamIyNW1hV2N1YzJWemMybHZia1Y0Y0dseVpVdGxlU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR0YwWVRvZ1UzUnlhVzVuS0hOMFlYUjFjeTV6WlhOemFXOXVSWGh3YVhKbEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IzZUM1elpYUlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JyWlhrNklHTnZibVpwWnk1elpYTnphVzl1VG1GdFpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaE9pQnpkR0YwZFhNdWMyVnpjMmx2Ymx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemIyeDJaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGFtVmpkQ2hsY25KdmNraGhibVJzWlhJdVoyVjBSWEp5YjNKTmMyY29jbVZ6S1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLSHQwYVhSc1pUb2dYQ0xubWJ2bHZaWGxwTEhvdEtWY0lpd2dYQ0pqYjI1MFpXNTBYQ0k2SUZ3aTZLKzM1NmlONVpDTzZZZU42SytWWENKOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1VvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdabUZwYkRvZ0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9lM1JwZEd4bE9pQmNJdWVadStXOWxlV2tzZWkwcFZ3aUxDQmNJbU52Ym5SbGJuUmNJam9nWENMb3I3Zm5xSTNsa0k3cGg0M29yNVZjSW4wcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUtWeHVJQ0FnSUgwcFhHNTlYRzVjYmk4cUlPYTRoZWVwdW5ObGMzTnBiMjRnS2k5Y2JtWjFibU4wYVc5dUlHUmxiRk5sYzNOcGIyNG9LU0I3WEc0Z0lDQWdjM1JoZEhWekxuTmxjM05wYjI0Z1BTQW5KenRjYmlBZ0lDQjNlQzV5WlcxdmRtVlRkRzl5WVdkbEtIdGNiaUFnSUNBZ0lDQWdhMlY1T2lCamIyNW1hV2N1YzJWemMybHZiazVoYldVZ1lYTWdjM1J5YVc1blhHNGdJQ0FnZlNrN1hHNGdJQ0FnYVdZZ0tHTnZibVpwWnk1elpYTnphVzl1Ulhod2FYSmxWR2x0WlNBbUppQmpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVXRsZVNrZ2UxeHVJQ0FnSUNBZ0lDQnpkR0YwZFhNdWMyVnpjMmx2YmtWNGNHbHlaU0E5SUVsdVptbHVhWFI1TzF4dUlDQWdJQ0FnSUNCM2VDNXlaVzF2ZG1WVGRHOXlZV2RsS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3RsZVRvZ1kyOXVabWxuTG5ObGMzTnBiMjVGZUhCcGNtVkxaWGxjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJRzFoYVc0b0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl0YVhObEtDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR05vWldOclRHOW5hVzRvS1M1MGFHVnVLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJqYjI1bWFXY3VaRzlPYjNSRGFHVmphMU5sYzNOcGIyNGdQeUJRY205dGFYTmxMbkpsYzI5c2RtVW9LU0E2SUdOb1pXTnJVMlZ6YzJsdmJpZ3BYRzRnSUNBZ0lDQWdJSDBzSUNoN2RHbDBiR1VzSUdOdmJuUmxiblI5S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGNuSnZja2hoYm1Sc1pYSXVaRzlGY25KdmNpaDBhWFJzWlN3Z1kyOXVkR1Z1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZxWldOMEtIdDBhWFJzWlN3Z1kyOXVkR1Z1ZEgwcE8xeHVJQ0FnSUNBZ0lDQjlLUzUwYUdWdUtDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE52YkhabEtDazdYRzRnSUNBZ0lDQWdJSDBzSUNoN2RHbDBiR1VzSUdOdmJuUmxiblI5S1QwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWeWNtOXlTR0Z1Wkd4bGNpNWtiMFZ5Y205eUtIUnBkR3hsTENCamIyNTBaVzUwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb2UzUnBkR3hsTENCamIyNTBaVzUwZlNrN1hHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ2ZTbGNibjFjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4dUlDQWdJRzFoYVc0c1hHNGdJQ0FnYzJWMFUyVnpjMmx2Yml4Y2JpQWdJQ0JrWld4VFpYTnphVzl1WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZGVmYXVsdENvbmZpZyA9IHtcbiAgICBzZXNzaW9uTmFtZTogXCJzZXNzaW9uXCIsXG4gICAgbG9naW5UcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGNvZGVUb1Nlc3Npb246IHtcbiAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7IH1cbiAgICB9LFxuICAgIHN1Y2Nlc3NUcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgdXJsUGVyZml4OiBcIlwiLFxuICAgIGRvTm90Q2hlY2tTZXNzaW9uOiBmYWxzZSxcbiAgICBlcnJvclRpdGxlOiBcIuaTjeS9nOWksei0pVwiLFxuICAgIGVycm9yQ29udGVudDogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0sXG4gICAgcmVMb2dpbkxpbWl0OiAzLFxuICAgIGVycm9yQ2FsbGJhY2s6IG51bGwsXG4gICAgcmVwb3J0Q0dJOiBmYWxzZSxcbiAgICBtb2NrSnNvbjogZmFsc2UsXG4gICAgZ2xvYmFsRGF0YTogZmFsc2UsXG4gICAgc2Vzc2lvbkV4cGlyZUtleTogXCJzZXNzaW9uRXhwaXJlS2V5XCJcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBkZWZhdWx0Q29uZmlnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTI5dVptbG5MbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwzTjBiM0psTDJOdmJtWnBaeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVVkJMRWxCUVUwc1lVRkJZU3hIUVVGblFqdEpRVU12UWl4WFFVRlhMRVZCUVVVc1UwRkJVenRKUVVOMFFpeFpRVUZaTzFGQlExSXNUMEZCVHl4TFFVRkxMRU5CUVVFN1NVRkRhRUlzUTBGQlF6dEpRVU5FTEdGQlFXRXNSVUZCUlR0UlFVTllMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzVDBGQlR5eEZRVUZGTEdOQlFVMHNRMEZCUXp0TFFVTnVRanRKUVVORUxHTkJRV003VVVGRFZpeFBRVUZQTEVsQlFVa3NRMEZCUVR0SlFVTm1MRU5CUVVNN1NVRkRSQ3hUUVVGVExFVkJRVVVzUlVGQlJUdEpRVU5pTEdsQ1FVRnBRaXhGUVVGRkxFdEJRVXM3U1VGRGVFSXNWVUZCVlN4RlFVRkZMRTFCUVUwN1NVRkRiRUlzV1VGQldTeFpRVUZETEVkQlFWRTdVVUZEYWtJc1QwRkJUeXhIUVVGSExFTkJRVUU3U1VGRFpDeERRVUZETzBsQlEwUXNXVUZCV1N4RlFVRkZMRU5CUVVNN1NVRkRaaXhoUVVGaExFVkJRVVVzU1VGQlNUdEpRVU51UWl4VFFVRlRMRVZCUVVVc1MwRkJTenRKUVVOb1FpeFJRVUZSTEVWQlFVVXNTMEZCU3p0SlFVTm1MRlZCUVZVc1JVRkJSU3hMUVVGTE8wbEJSV3BDTEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWp0RFFVTjJReXhEUVVGRE8wRkJSVVlzYTBKQlFXVXNZVUZCWVN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnU1VsdWFYUlBjSFJwYjI0Z2ZTQm1jbTl0SUNjdUxpOXBiblJsY21aaFkyVW5YRzVjYm1OdmJuTjBJR1JsWm1GMWJIUkRiMjVtYVdjNklFbEpibWwwVDNCMGFXOXVJRDBnZTF4dUlDQWdJSE5sYzNOcGIyNU9ZVzFsT2lCY0luTmxjM05wYjI1Y0lpeGNiaUFnSUNCc2IyZHBibFJ5YVdkblpYSW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpWeHVJQ0FnSUgwc1hHNGdJQ0FnWTI5a1pWUnZVMlZ6YzJsdmJqb2dlMXh1SUNBZ0lDQWdJQ0IxY213NklGd2lYQ0lzWEc0Z0lDQWdJQ0FnSUhOMVkyTmxjM002SUNncFBUNGdlMzFjYmlBZ0lDQjlMRnh1SUNBZ0lITjFZMk5sYzNOVWNtbG5aMlZ5S0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVnh1SUNBZ0lIMHNYRzRnSUNBZ2RYSnNVR1Z5Wm1sNE9pQmNJbHdpTEZ4dUlDQWdJR1J2VG05MFEyaGxZMnRUWlhOemFXOXVPaUJtWVd4elpTeGNiaUFnSUNCbGNuSnZjbFJwZEd4bE9pQmNJdWFUamVTOW5PV2tzZWkwcFZ3aUxGeHVJQ0FnSUdWeWNtOXlRMjl1ZEdWdWRDaHlaWE02SUdGdWVTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6WEc0Z0lDQWdmU3hjYmlBZ0lDQnlaVXh2WjJsdVRHbHRhWFE2SURNc1hHNGdJQ0FnWlhKeWIzSkRZV3hzWW1GamF6b2diblZzYkN4Y2JpQWdJQ0J5WlhCdmNuUkRSMGs2SUdaaGJITmxMRnh1SUNBZ0lHMXZZMnRLYzI5dU9pQm1ZV3h6WlN4Y2JpQWdJQ0JuYkc5aVlXeEVZWFJoT2lCbVlXeHpaU3hjYmlBZ0lDQXZMeUJ6WlhOemFXOXU1WnlvNXB5czVaeXc1N3lUNWEyWTU1cUVhMlY1WEc0Z0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlV0bGVUb2dYQ0p6WlhOemFXOXVSWGh3YVhKbFMyVjVYQ0pjYm4wN1hHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElHUmxabUYxYkhSRGIyNW1hV2M3WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzZXNzaW9uOiAnJyxcbiAgICBzZXNzaW9uRXhwaXJlOiBJbmZpbml0eVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzUmhkSFZ6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM04wYjNKbEwzTjBZWFIxY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTEd0Q1FVRmxPMGxCUTFnc1QwRkJUeXhGUVVGRkxFVkJRVms3U1VGRmNrSXNZVUZCWVN4RlFVRkZMRkZCUVd0Q08wTkJRemRDTEVOQlFVRWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYRzRnSUNBZ2MyVnpjMmx2YmpvZ0p5Y2dZWE1nYzNSeWFXNW5MRnh1SUNBZ0lDOHZJSE5sYzNOcGIyN292NGZtbkovbm1vVG1sN2JwbDdUbmdybGNiaUFnSUNCelpYTnphVzl1Ulhod2FYSmxPaUJKYm1acGJtbDBlU0JoY3lCdWRXMWlaWEpjYm4wZ1lYTWdZVzU1WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIHNob3codHh0KSB7XG4gICAgd3guc2hvd1RvYXN0KHtcbiAgICAgICAgdGl0bGU6IHR5cGVvZiB0eHQgPT09ICdib29sZWFuJyA/ICfliqDovb3kuK0nIDogdHh0LFxuICAgICAgICBpY29uOiAnbG9hZGluZycsXG4gICAgICAgIG1hc2s6IHRydWUsXG4gICAgICAgIGR1cmF0aW9uOiA2MDAwMFxuICAgIH0pO1xufVxuZnVuY3Rpb24gaGlkZSgpIHtcbiAgICB3eC5oaWRlVG9hc3Qoe30pO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHNob3c6IHNob3csXG4gICAgaGlkZTogaGlkZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHOWhaR2x1Wnk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTkxZEdsc0wyeHZZV1JwYm1jdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4VFFVRlRMRWxCUVVrc1EwRkJReXhIUVVGeFFqdEpRVU12UWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRE8xRkJRMVFzUzBGQlN5eEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhPMUZCUXpkRExFbEJRVWtzUlVGQlJTeFRRVUZUTzFGQlEyWXNTVUZCU1N4RlFVRkZMRWxCUVVrN1VVRkRWaXhSUVVGUkxFVkJRVVVzUzBGQlN6dExRVU5zUWl4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzVTBGQlV5eEpRVUZKTzBsQlExUXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU55UWl4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeEpRVUZKTEUxQlFVRTdTVUZEU2l4SlFVRkpMRTFCUVVFN1EwRkRVQ3hEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lablZ1WTNScGIyNGdjMmh2ZHloMGVIUTZJR0p2YjJ4bFlXNGdmQ0J6ZEhKcGJtY3BJSHRjYmlBZ0lDQjNlQzV6YUc5M1ZHOWhjM1FvZTF4dUlDQWdJQ0FnSUNCMGFYUnNaVG9nZEhsd1pXOW1JSFI0ZENBOVBUMGdKMkp2YjJ4bFlXNG5JRDhnSitXS29PaTl2ZVM0clNjZ09pQjBlSFFzWEc0Z0lDQWdJQ0FnSUdsamIyNDZJQ2RzYjJGa2FXNW5KeXhjYmlBZ0lDQWdJQ0FnYldGemF6b2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ1pIVnlZWFJwYjI0NklEWXdNREF3WEc0Z0lDQWdmU2xjYm4xY2JseHVablZ1WTNScGIyNGdhR2xrWlNncElIdGNiaUFnSUNCM2VDNW9hV1JsVkc5aGMzUW9lMzBwTzF4dWZWeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYRzRnSUNBZ2MyaHZkeXhjYmlBZ0lDQm9hV1JsWEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gc2V0UGFyYW1zKHVybCwgcGFyYW1zKSB7XG4gICAgaWYgKHVybCA9PT0gdm9pZCAwKSB7IHVybCA9IFwiXCI7IH1cbiAgICB2YXIgcXVlcnlTdHJpbmdJbmRleCA9IHVybC5pbmRleE9mKFwiP1wiKTtcbiAgICB2YXIga3ZwID0ge307XG4gICAgaWYgKHF1ZXJ5U3RyaW5nSW5kZXggPj0gMCkge1xuICAgICAgICB2YXIgb2xkUXVlcnlTdHJpbmdfMSA9IHVybC5zdWJzdHIocXVlcnlTdHJpbmdJbmRleCArIDEpLnNwbGl0KFwiJlwiKTtcbiAgICAgICAgb2xkUXVlcnlTdHJpbmdfMS5mb3JFYWNoKGZ1bmN0aW9uICh4LCBpKSB7XG4gICAgICAgICAgICB2YXIga3YgPSBvbGRRdWVyeVN0cmluZ18xW2ldLnNwbGl0KFwiPVwiKTtcbiAgICAgICAgICAgIGt2cFtrdlswXV0gPSBrdlsxXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGt2cCA9IF9fYXNzaWduKHt9LCBrdnAsIHBhcmFtcyk7XG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXMoa3ZwKVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleSArIFwiPVwiICsgZW5jb2RlVVJJKGt2cFtrZXldKTtcbiAgICB9KVxuICAgICAgICAuam9pbihcIiZcIik7XG4gICAgaWYgKHF1ZXJ5U3RyaW5nSW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZygwLCBxdWVyeVN0cmluZ0luZGV4ICsgMSkgKyBxdWVyeVN0cmluZztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB1cmwgKyBcIj9cIiArIHF1ZXJ5U3RyaW5nO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IHtcbiAgICBzZXRQYXJhbXM6IHNldFBhcmFtc1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYSnNMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwzVjBhV3d2ZFhKc0xuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3UVVGQlFTeFRRVUZUTEZOQlFWTXNRMEZCUXl4SFFVRm5RaXhGUVVGRkxFMUJRV003U1VGQmFFTXNiMEpCUVVFc1JVRkJRU3hSUVVGblFqdEpRVU12UWl4SlFVRk5MR2RDUVVGblFpeEhRVUZYTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGJFUXNTVUZCU1N4SFFVRkhMRWRCUVZFc1JVRkJSU3hEUVVGRE8wbEJRMnhDTEVsQlFVa3NaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eEZRVUZGTzFGQlEzWkNMRWxCUVUwc1owSkJRV01zUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVZ1UlN4blFrRkJZeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUTNoQ0xFbEJRVTBzUlVGQlJTeEhRVUZoTEdkQ1FVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJ4RUxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtJc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRFRqdEpRVVZFTEVkQlFVY3NaMEpCUVU4c1IwRkJSeXhGUVVGTExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlJURkNMRWxCUVUwc1YwRkJWeXhIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMU5CUXk5Q0xFZEJRVWNzUTBGQlF5eFZRVUZCTEVkQlFVYzdVVUZEU2l4UFFVRlZMRWRCUVVjc1UwRkJTU3hUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkhMRU5CUVVNN1NVRkRNME1zUTBGQlF5eERRVUZETzFOQlEwUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSV1lzU1VGQlNTeG5Ra0ZCWjBJc1NVRkJTU3hEUVVGRExFVkJRVVU3VVVGRGRrSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeG5Ra0ZCWjBJc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTTdTMEZETDBRN1UwRkJUVHRSUVVOSUxFOUJRVThzUjBGQlJ5eEhRVUZITEVkQlFVY3NSMEZCUnl4WFFVRlhMRU5CUVVNN1MwRkRiRU03UVVGRFRDeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hUUVVGVExGZEJRVUU3UTBGRFdpeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpuVnVZM1JwYjI0Z2MyVjBVR0Z5WVcxektIVnliRG9nYzNSeWFXNW5JRDBnWENKY0lpd2djR0Z5WVcxek9pQnZZbXBsWTNRcElIdGNiaUFnSUNCamIyNXpkQ0J4ZFdWeWVWTjBjbWx1WjBsdVpHVjRPaUJ1ZFcxaVpYSWdQU0IxY213dWFXNWtaWGhQWmloY0lqOWNJaWs3WEc0Z0lDQWdiR1YwSUd0MmNEb2dZVzU1SUQwZ2UzMDdYRzRnSUNBZ2FXWWdLSEYxWlhKNVUzUnlhVzVuU1c1a1pYZ2dQajBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdmJHUlJkV1Z5ZVZOMGNtbHVaeUE5SUhWeWJDNXpkV0p6ZEhJb2NYVmxjbmxUZEhKcGJtZEpibVJsZUNBcklERXBMbk53YkdsMEtGd2lKbHdpS1R0Y2JpQWdJQ0FnSUNBZ0x5OGdRSFJ6TFdsbmJtOXlaVnh1SUNBZ0lDQWdJQ0J2YkdSUmRXVnllVk4wY21sdVp5NW1iM0pGWVdOb0tDaDRMQ0JwS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JyZGpvZ2MzUnlhVzVuVzEwZ1BTQnZiR1JSZFdWeWVWTjBjbWx1WjF0cFhTNXpjR3hwZENoY0lqMWNJaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnJkbkJiYTNaYk1GMWRJRDBnYTNaYk1WMDdYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3QyY0NBOUlIc3VMaTVyZG5Bc0lDNHVMbkJoY21GdGMzMDdYRzVjYmlBZ0lDQmpiMjV6ZENCeGRXVnllVk4wY21sdVp5QTlJRTlpYW1WamRDNXJaWGx6S0d0MmNDbGNiaUFnSUNBZ0lDQWdMbTFoY0NoclpYa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHQWtlMnRsZVgwOUpIdGxibU52WkdWVlVra29hM1p3VzJ0bGVWMHBmV0E3WEc0Z0lDQWdJQ0FnSUgwcFhHNGdJQ0FnSUNBZ0lDNXFiMmx1S0Z3aUpsd2lLVHRjYmx4dUlDQWdJR2xtSUNoeGRXVnllVk4wY21sdVowbHVaR1Y0SUQ0OUlEQXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ5YkM1emRXSnpkSEpwYm1jb01Dd2djWFZsY25sVGRISnBibWRKYm1SbGVDQXJJREVwSUNzZ2NYVmxjbmxUZEhKcGJtYzdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWeWJDQXJJRndpUDF3aUlDc2djWFZsY25sVGRISnBibWM3WEc0Z0lDQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCN1hHNGdJQ0FnYzJWMFVHRnlZVzF6WEc1OU8xeHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdmVyc2lvbiA9IF9fVkVSU0lPTl9fO1xuZXhwb3J0cy52ZXJzaW9uID0gdmVyc2lvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRtVnljMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1TDNOeVl5OTJaWEp6YVc5dUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUlVFc1NVRkJUU3hQUVVGUExFZEJRVWNzVjBGQlZ5eERRVUZETzBGQlJXNUNMREJDUVVGUElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2laR1ZqYkdGeVpTQmpiMjV6ZENCZlgxWkZVbE5KVDA1Zlh6b2djM1J5YVc1bk8xeHVYRzVqYjI1emRDQjJaWEp6YVc5dUlEMGdYMTlXUlZKVFNVOU9YMTg3WEc1Y2JtVjRjRzl5ZENCN0lIWmxjbk5wYjI0Z2ZUdGNiaUpkZlE9PSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/build/weRequest.min.js b/build/weRequest.min.js index 9040dab..6765f47 100644 --- a/build/weRequest.min.js +++ b/build/weRequest.min.js @@ -1,5 +1,5 @@ /*! - * weRequest 1.2.5 + * weRequest 1.2.6 * https://github.com/IvinWu/weRequest */ -module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={sessionName:"session",loginTrigger:function(){return!1},codeToSession:{url:"",success:function(){}},successTrigger:function(){return!0},urlPerfix:"",successData:function(e){return e},doNotCheckSession:!1,errorTitle:"操作失败",errorContent:function(e){return e},reLoginLimit:3,errorCallback:null,reportCGI:!1,mockJson:!1,globalData:!1,sessionExpireKey:"sessionExpireKey"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={session:"",sessionExpire:1/0}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;nr.default.sessionExpire&&(d(),1)?(o.default.doNotCheckSession=!0,c().then(function(){return e()},function(e){return t(e)})):e()})}var l=null;function c(){return l||(l=new Promise(function(e,t){new Promise(function(e,t){console.log("wx.login");var n=(new Date).getTime();wx.login({success:function(n){if(!n.code)return t({title:"登录失败",content:"请稍后重试[code 获取失败]"});(function(e){var t;return(t="function"==typeof o.default.codeToSession.data?o.default.codeToSession.data():o.default.codeToSession.data||{})[o.default.codeToSession.codeName]=e,new Promise(function(e,n){var s=(new Date).getTime();wx.request({url:a.default.format(o.default.codeToSession.url),data:t,method:o.default.codeToSession.method||"GET",success:function(t){if(200===t.statusCode){if(o.default.codeToSession.report){var a=(new Date).getTime();i.default.report(o.default.codeToSession.report,s,a)}var f="";try{f=o.default.codeToSession.success(t.data)}catch(e){}return f?(r.default.session=f,o.default.doNotCheckSession=!0,o.default.sessionExpireTime&&o.default.sessionExpireKey&&(r.default.sessionExpire=(new Date).getTime()+o.default.sessionExpireTime,wx.setStorage({key:o.default.sessionExpireKey,data:String(r.default.sessionExpire)})),wx.setStorage({key:o.default.sessionName,data:r.default.session}),e()):n(u.default.getErrorMsg(t))}return n({title:"登录失败",content:"请稍后重试"})},complete:function(){},fail:function(){return n({title:"登录失败",content:"请稍后重试"})}})})})(n.code).then(function(){return e()}).catch(function(e){return t(e)})},complete:function(){var e=(new Date).getTime();i.default.report("wx_login",n,e)},fail:function(e){return t({title:"登录失败",content:e.errMsg})}})}).then(function(){return l=null,e()}).catch(function(e){return l=null,t(e)})})),l}function d(){r.default.session="",wx.removeStorage({key:o.default.sessionName}),o.default.sessionExpireTime&&o.default.sessionExpireKey&&(r.default.sessionExpire=1/0,wx.removeStorage({key:o.default.sessionExpireKey}))}t.default={main:function(){return new Promise(function(e,t){return f().then(function(){return o.default.doNotCheckSession?Promise.resolve():(s||(s=new Promise(function(e,t){console.log("wx.checkSession()");var n=(new Date).getTime();wx.checkSession({success:function(){return e()},fail:function(){return d(),c().then(function(){return e()},function(e){return t(e)})},complete:function(){var e=(new Date).getTime();i.default.report("wx_checkSession",n,e)}})})),s)},function(e){var n=e.title,r=e.content;return u.default.doError(n,r),t({title:n,content:r})}).then(function(){return e()},function(e){var n=e.title,r=e.content;return u.default.doError(n,r),t({title:n,content:r})})})},setSession:function(e){r.default.session=e,o.default.doNotCheckSession=!0,o.default.sessionExpireTime&&o.default.sessionExpireKey&&(r.default.sessionExpire=(new Date).getTime()+o.default.sessionExpireTime,wx.setStorage({key:o.default.sessionExpireKey,data:String(r.default.sessionExpire)})),wx.setStorage({key:o.default.sessionName,data:r.default.session})},delSession:d}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);function o(e){var t="";if("function"==typeof r.default.errorTitle)try{t=r.default.errorTitle(e.data)}catch(e){}else"string"==typeof r.default.errorTitle&&(t=r.default.errorTitle);var n="";if("function"==typeof r.default.errorContent)try{n=r.default.errorContent(e.data)}catch(e){}else"string"==typeof r.default.errorContent&&(n=r.default.errorContent);return{title:t,content:n}}function u(e,t){wx.showModal({title:e,content:t||"网络或服务异常,请稍后重试",showCancel:!1})}t.default={systemError:function(e,t){"function"==typeof e.fail?e.fail(t):u("",t.errMsg)},logicError:function(e,t){if("function"==typeof e.fail)e.fail(t);else{var n=o(t);u(n.title,n.content)}"function"==typeof r.default.errorCallback&&r.default.errorCallback(e,t),console.error(t)},doError:u,getErrorMsg:o}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(6);function u(e,t,n){"function"==typeof r.default.reportCGI&&r.default.reportCGI(e,t,n,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,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.default=function(e){return r.default.request(e)}},function(e,t,n){"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,n){"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,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(10),o=n(6),u=n(14),i=n(15),a=n(16),s=n(17),f=n(18),l=n(19),c={init:r.default,request:o.default,uploadFile:u.default,setSession:i.default,login:a.default,getSession:s.default,getConfig:f.default,version:l.version};t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(1);t.default=function(e){Object.assign(r.default,e);try{o.default.session=wx.getStorageSync(r.default.sessionName)||""}catch(e){console.error("wx.getStorageSync:fail, can not get session.")}try{o.default.sessionExpire=wx.getStorageSync(r.default.sessionExpireKey||"sessionExpireKey")||1/0}catch(e){console.error("wx.getStorageSync:fail, can not get sessionExpire.")}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(7);t.default={get:function(e){if(!(r.default.mockJson[e.url]||e.originUrl&&r.default.mockJson[e.originUrl]))return console.error("mock 没有对应接口的数据"),!1;var t=r.default.mockJson[e.url]||(e.originUrl?r.default.mockJson[e.originUrl]:""),n={data:t=JSON.parse(JSON.stringify(t)),statusCode:200};return o.default.hide(),n}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(2),u=n(4),i=n(8),a=n(5),s=n(3);t.default=function(e,t,n){if(200===e.statusCode){if("string"==typeof e.data)try{e.data=JSON.parse(e.data)}catch(n){if(t.catchError)throw new Error(n);return void u.default.logicError(t,e)}if(a.default.end(t),r.default.loginTrigger(e.data)&&void 0!==t.reLoginCount&&t.reLoginCount=0){var u=e.substr(n+1).split("&");u.forEach(function(e,t){var n=u[t].split("=");o[n[0]]=n[1]})}o=r({},o,t);var i=Object.keys(o).map(function(e){return e+"="+encodeURI(o[e])}).join("&");return n>=0?e.substring(0,n+1)+i:e+"?"+i}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.default=function(e){return r.default.uploadFile(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3);t.default=function(e){r.default.setSession(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3);t.default=function(){return r.default.main()}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1);t.default=function(){return r.default.session}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(1);t.default=function(){return{urlPerfix:r.default.urlPerfix,sessionExpireTime:r.default.sessionExpireTime,sessionExpireKey:r.default.sessionExpireKey,sessionExpire:o.default.sessionExpire}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.version="1.2.5"}]).default; \ No newline at end of file +module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={sessionName:"session",loginTrigger:function(){return!1},codeToSession:{url:"",success:function(){}},successTrigger:function(){return!0},urlPerfix:"",doNotCheckSession:!1,errorTitle:"操作失败",errorContent:function(e){return e},reLoginLimit:3,errorCallback:null,reportCGI:!1,mockJson:!1,globalData:!1,sessionExpireKey:"sessionExpireKey"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={session:"",sessionExpire:1/0}},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;nr.default.sessionExpire&&(d(),1)?(o.default.doNotCheckSession=!0,c().then(function(){return e()},function(e){return t(e)})):e()})}var l=null;function c(){return l||(l=new Promise(function(e,t){new Promise(function(e,t){console.log("wx.login");var n=(new Date).getTime();wx.login({success:function(n){if(!n.code)return t({title:"登录失败",content:"请稍后重试[code 获取失败]"});(function(e){var t;return(t="function"==typeof o.default.codeToSession.data?o.default.codeToSession.data():o.default.codeToSession.data||{})[o.default.codeToSession.codeName]=e,new Promise(function(e,n){var s=(new Date).getTime();wx.request({url:a.default.format(o.default.codeToSession.url),data:t,method:o.default.codeToSession.method||"GET",success:function(t){if(200===t.statusCode){if(o.default.codeToSession.report){var a=(new Date).getTime();i.default.report(o.default.codeToSession.report,s,a)}var f="";try{f=o.default.codeToSession.success(t.data)}catch(e){}return f?(r.default.session=f,o.default.doNotCheckSession=!0,o.default.sessionExpireTime&&o.default.sessionExpireKey&&(r.default.sessionExpire=(new Date).getTime()+o.default.sessionExpireTime,wx.setStorage({key:o.default.sessionExpireKey,data:String(r.default.sessionExpire)})),wx.setStorage({key:o.default.sessionName,data:r.default.session}),e()):n(u.default.getErrorMsg(t))}return n({title:"登录失败",content:"请稍后重试"})},complete:function(){},fail:function(){return n({title:"登录失败",content:"请稍后重试"})}})})})(n.code).then(function(){return e()}).catch(function(e){return t(e)})},complete:function(){var e=(new Date).getTime();i.default.report("wx_login",n,e)},fail:function(e){return t({title:"登录失败",content:e.errMsg})}})}).then(function(){return l=null,e()}).catch(function(e){return l=null,t(e)})})),l}function d(){r.default.session="",wx.removeStorage({key:o.default.sessionName}),o.default.sessionExpireTime&&o.default.sessionExpireKey&&(r.default.sessionExpire=1/0,wx.removeStorage({key:o.default.sessionExpireKey}))}t.default={main:function(){return new Promise(function(e,t){return f().then(function(){return o.default.doNotCheckSession?Promise.resolve():(s||(s=new Promise(function(e,t){console.log("wx.checkSession()");var n=(new Date).getTime();wx.checkSession({success:function(){return e()},fail:function(){return d(),c().then(function(){return e()},function(e){return t(e)})},complete:function(){var e=(new Date).getTime();i.default.report("wx_checkSession",n,e)}})})),s)},function(e){var n=e.title,r=e.content;return u.default.doError(n,r),t({title:n,content:r})}).then(function(){return e()},function(e){var n=e.title,r=e.content;return u.default.doError(n,r),t({title:n,content:r})})})},setSession:function(e){r.default.session=e,o.default.doNotCheckSession=!0,o.default.sessionExpireTime&&o.default.sessionExpireKey&&(r.default.sessionExpire=(new Date).getTime()+o.default.sessionExpireTime,wx.setStorage({key:o.default.sessionExpireKey,data:String(r.default.sessionExpire)})),wx.setStorage({key:o.default.sessionName,data:r.default.session})},delSession:d}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);function o(e){var t="";if("function"==typeof r.default.errorTitle)try{t=r.default.errorTitle(e.data)}catch(e){}else"string"==typeof r.default.errorTitle&&(t=r.default.errorTitle);var n="";if("function"==typeof r.default.errorContent)try{n=r.default.errorContent(e.data)}catch(e){}else"string"==typeof r.default.errorContent&&(n=r.default.errorContent);return{title:t,content:n}}function u(e,t){wx.showModal({title:e,content:t||"网络或服务异常,请稍后重试",showCancel:!1})}t.default={systemError:function(e,t){"function"==typeof e.fail?e.fail(t):u("",t.errMsg)},logicError:function(e,t){if("function"==typeof e.fail)e.fail(t);else{var n=o(t);u(n.title,n.content)}"function"==typeof r.default.errorCallback&&r.default.errorCallback(e,t),console.error(t)},doError:u,getErrorMsg:o}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(6);function u(e,t,n){"function"==typeof r.default.reportCGI&&r.default.reportCGI(e,t,n,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,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.default=function(e){return r.default.request(e)}},function(e,t,n){"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,n){"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,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(10),o=n(6),u=n(14),i=n(15),a=n(16),s=n(17),f=n(18),l=n(19),c={init:r.default,request:o.default,uploadFile:u.default,setSession:i.default,login:a.default,getSession:s.default,getConfig:f.default,version:l.version};t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(1);t.default=function(e){Object.assign(r.default,e);try{o.default.session=wx.getStorageSync(r.default.sessionName)||""}catch(e){console.error("wx.getStorageSync:fail, can not get session.")}try{o.default.sessionExpire=wx.getStorageSync(r.default.sessionExpireKey||"sessionExpireKey")||1/0}catch(e){console.error("wx.getStorageSync:fail, can not get sessionExpire.")}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(7);t.default={get:function(e){if(!(r.default.mockJson[e.url]||e.originUrl&&r.default.mockJson[e.originUrl]))return console.error("mock 没有对应接口的数据"),!1;var t=r.default.mockJson[e.url]||(e.originUrl?r.default.mockJson[e.originUrl]:""),n={data:t=JSON.parse(JSON.stringify(t)),statusCode:200};return o.default.hide(),n}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(2),u=n(4),i=n(8),a=n(5),s=n(3);t.default=function(e,t,n){if(200===e.statusCode){if("string"==typeof e.data)try{e.data=JSON.parse(e.data)}catch(n){if(t.catchError)throw new Error(n);return void u.default.logicError(t,e)}if(a.default.end(t),r.default.loginTrigger(e.data)&&void 0!==t.reLoginCount&&t.reLoginCount=0){var u=e.substr(n+1).split("&");u.forEach(function(e,t){var n=u[t].split("=");o[n[0]]=n[1]})}o=r({},o,t);var i=Object.keys(o).map(function(e){return e+"="+encodeURI(o[e])}).join("&");return n>=0?e.substring(0,n+1)+i:e+"?"+i}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.default=function(e){return r.default.uploadFile(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3);t.default=function(e){r.default.setSession(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3);t.default=function(){return r.default.main()}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1);t.default=function(){return r.default.session}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),o=n(1);t.default=function(){return{urlPerfix:r.default.urlPerfix,sessionExpireTime:r.default.sessionExpireTime,sessionExpireKey:r.default.sessionExpireKey,sessionExpire:o.default.sessionExpire}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.version="1.2.6"}]).default; \ No newline at end of file diff --git a/package.json b/package.json index e793998..7ec715f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "we-request", - "version": "1.2.5", + "version": "1.2.6", "description": "本工具通过拓展小程序的wx.request,让开发者通过简单的配置,实现自动管理登录态等功能", "keywords": [ "登录态", @@ -19,7 +19,7 @@ "type": "git", "url": "https://github.com/IvinWu/weRequest.git" }, - "main": "src/index.ts", + "main": "build/weRequest.js", "typings": "build/index.d.ts", "scripts": { "build": "webpack", diff --git a/src/interface.ts b/src/interface.ts index 9eb7bf4..aaeb2bb 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -35,7 +35,7 @@ export interface IInitOption { /* 触发请求成功的条件;参数为CGI返回的数据,返回接口逻辑成功的条件 */ successTrigger: (res: string | IAnyObject | ArrayBuffer) => boolean; /* 成功之后返回数据;参数为CGI返回的数据,返回逻辑需要使用的数据 */ - successData: (res: string | IAnyObject | ArrayBuffer) => string | IAnyObject | ArrayBuffer; + successData?: (res: string | IAnyObject | ArrayBuffer) => string | IAnyObject | ArrayBuffer; /* 接口逻辑失败时,错误弹窗的标题 */ errorTitle?: string | ((res: string | IAnyObject | ArrayBuffer) => string); /* 接口逻辑失败时,错误弹窗的内容 */ diff --git a/src/module/responseHandler.ts b/src/module/responseHandler.ts index f67c51f..a9f9128 100644 --- a/src/module/responseHandler.ts +++ b/src/module/responseHandler.ts @@ -41,7 +41,11 @@ function response( // 接口返回成功码 let realData: string | IAnyObject | ArrayBuffer = ""; try { - realData = config.successData(res.data); + if (typeof config.successData === 'function') { + realData = config.successData(res.data); + } else { + realData = res.data; + } } catch (e) { console.error("Function successData occur error: " + e); } diff --git a/src/store/config.ts b/src/store/config.ts index 05c0b8c..157bef6 100644 --- a/src/store/config.ts +++ b/src/store/config.ts @@ -13,9 +13,6 @@ const defaultConfig: IInitOption = { return true }, urlPerfix: "", - successData(res: any) { - return res - }, doNotCheckSession: false, errorTitle: "操作失败", errorContent(res: any) {