From ae3d02ca14b9d97fb9675d1df9cb5c5143838996 Mon Sep 17 00:00:00 2001 From: Greg Hecquet Date: Tue, 19 Nov 2019 09:37:15 +0100 Subject: [PATCH] Fixing logout redirection --- .../res/build/AuthfrontCoreActions.js | 19 ++++-------------- .../res/build/AuthfrontCoreActions.js.gz | Bin 16156 -> 15889 bytes .../core.authfront/res/build/CoreActions.js | 17 +++------------- .../core.authfront/res/js/CoreActions.js | 2 +- 4 files changed, 8 insertions(+), 30 deletions(-) diff --git a/frontend/front-srv/assets/core.authfront/res/build/AuthfrontCoreActions.js b/frontend/front-srv/assets/core.authfront/res/build/AuthfrontCoreActions.js index 99bf132ba7..09d93e6da8 100644 --- a/frontend/front-srv/assets/core.authfront/res/build/AuthfrontCoreActions.js +++ b/frontend/front-srv/assets/core.authfront/res/build/AuthfrontCoreActions.js @@ -401,7 +401,7 @@ var Callbacks = (function () { return; } - _pydioHttpApi2['default'].getRestClient().sessionLogout()['finally'](function (e) { + _pydioHttpApi2['default'].getRestClient().sessionLogout()['catch'](function (e) { return window.location.href = pydio.Parameters.get('FRONTEND_URL') + '/logout'; }); } @@ -416,20 +416,9 @@ var Callbacks = (function () { var _ref = args[0] || {}; - var _ref$createAuthRequest = _ref.createAuthRequest; - var createAuthRequest = _ref$createAuthRequest === undefined ? true : _ref$createAuthRequest; + var props = _objectWithoutProperties(_ref, []); - var props = _objectWithoutProperties(_ref, ['createAuthRequest']); - - var fn = function fn() { - return pydio.UI.openComponentInModal('AuthfrontCoreActions', 'LoginPasswordDialog', _extends({}, props, { blur: true })); - }; - - if (createAuthRequest) { - _pydioHttpApi2['default'].getRestClient().jwtWithAuthInfo({ type: "create_auth_request" }).then(fn); - } else { - fn(); - } + pydio.UI.openComponentInModal('AuthfrontCoreActions', 'LoginPasswordDialog', _extends({}, props, { blur: true })); } }]); @@ -634,4 +623,4 @@ exports.LanguagePicker = LanguagePicker; },{"material-ui":"material-ui","material-ui/styles":"material-ui/styles","pydio":"pydio","pydio/http/api":"pydio/http/api","pydio/http/rest-api":"pydio/http/rest-api"}]},{},[1])(1) }); -//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJyZXMvYnVpbGQvQ29yZUFjdGlvbnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDE3IENoYXJsZXMgZHUgSmV1IC0gQWJzdHJpdW0gU0FTIDx0ZWFtIChhdCkgcHlkLmlvPlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgUHlkaW8uXG4gKlxuICogUHlkaW8gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBQeWRpbyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBQeWRpby4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqXG4gKiBUaGUgbGF0ZXN0IGNvZGUgY2FuIGJlIGZvdW5kIGF0IDxodHRwczovL3B5ZGlvLmNvbT4uXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeDIsIF94MywgX3g0KSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94MiwgcHJvcGVydHkgPSBfeDMsIHJlY2VpdmVyID0gX3g0OyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94MiA9IHBhcmVudDsgX3gzID0gcHJvcGVydHk7IF94NCA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9tYXRlcmlhbFVpU3R5bGVzID0gcmVxdWlyZSgnbWF0ZXJpYWwtdWkvc3R5bGVzJyk7XG5cbnZhciBfbWF0ZXJpYWxVaSA9IHJlcXVpcmUoJ21hdGVyaWFsLXVpJyk7XG5cbnZhciBfcHlkaW9IdHRwQXBpID0gcmVxdWlyZShcInB5ZGlvL2h0dHAvYXBpXCIpO1xuXG52YXIgX3B5ZGlvSHR0cEFwaTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9weWRpb0h0dHBBcGkpO1xuXG52YXIgX3B5ZGlvSHR0cFJlc3RBcGkgPSByZXF1aXJlKFwicHlkaW8vaHR0cC9yZXN0LWFwaVwiKTtcblxudmFyIHB5ZGlvID0gd2luZG93LnB5ZGlvO1xuXG52YXIgTGFuZ3VhZ2VQaWNrZXIgPSBmdW5jdGlvbiBMYW5ndWFnZVBpY2tlcigpIHtcbiAgICB2YXIgaXRlbXMgPSBbXTtcblxuICAgIHB5ZGlvLmxpc3RMYW5ndWFnZXNXaXRoQ2FsbGJhY2soZnVuY3Rpb24gKGtleSwgbGFiZWwsIGN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChfbWF0ZXJpYWxVaS5NZW51SXRlbSwge1xuICAgICAgICAgICAgcHJpbWFyeVRleHQ6IGxhYmVsLFxuICAgICAgICAgICAgdmFsdWU6IGtleSxcbiAgICAgICAgICAgIHJpZ2h0SWNvbjogY3VycmVudCA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuRm9udEljb24sIHsgY2xhc3NOYW1lOiAnbWRpIG1kaS1jaGVjaycgfSkgOiBudWxsXG4gICAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICBfbWF0ZXJpYWxVaS5JY29uTWVudSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbkJ1dHRvbkVsZW1lbnQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuSWNvbkJ1dHRvbiwgeyB0b29sdGlwOiBweWRpby5NZXNzYWdlSGFzaFs2MThdLCBpY29uQ2xhc3NOYW1lOiAnbWRpIG1kaS1mbGFnLW91dGxpbmUtdmFyaWFudCcsIGljb25TdHlsZTogeyBmb250U2l6ZTogMjAsIGNvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwuNjcpJyB9IH0pLFxuICAgICAgICAgICAgb25JdGVtVG91Y2hUYXA6IGZ1bmN0aW9uIChlLCBvKSB7XG4gICAgICAgICAgICAgICAgcHlkaW8ubG9hZEkxOE5NZXNzYWdlcyhvLnByb3BzLnZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXNrdG9wOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGl0ZW1zXG4gICAgKTtcbn07XG5cbnZhciBMb2dpbkRpYWxvZ01peGluID0ge1xuXG4gICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnbG9iYWxQYXJhbWV0ZXJzOiBweWRpby5QYXJhbWV0ZXJzLFxuICAgICAgICAgICAgYXV0aFBhcmFtZXRlcnM6IHB5ZGlvLmdldFBsdWdpbkNvbmZpZ3MoJ2F1dGgnKSxcbiAgICAgICAgICAgIGVycm9ySWQ6IG51bGwsXG4gICAgICAgICAgICBkaXNwbGF5Q2FwdGNoYTogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgcG9zdExvZ2luRGF0YTogZnVuY3Rpb24gcG9zdExvZ2luRGF0YShyZXN0Q2xpZW50KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHBhc3N3b3JkT25seSA9IHRoaXMuc3RhdGUuZ2xvYmFsUGFyYW1ldGVycy5nZXQoJ1BBU1NXT1JEX0FVVEhfT05MWScpO1xuICAgICAgICB2YXIgbG9naW4gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChwYXNzd29yZE9ubHkpIHtcbiAgICAgICAgICAgIGxvZ2luID0gdGhpcy5zdGF0ZS5nbG9iYWxQYXJhbWV0ZXJzLmdldCgnUFJFU0VUX0xPR0lOJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dpbiA9IHRoaXMucmVmcy5sb2dpbi5nZXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3RDbGllbnQuand0RnJvbUNyZWRlbnRpYWxzKGxvZ2luLCB0aGlzLnJlZnMucGFzc3dvcmQuZ2V0VmFsdWUoKSkudGhlbihmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgaWYgKHIuZGF0YSAmJiByLmRhdGEuVHJpZ2dlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3RoaXMuZGlzbWlzcygpO1xuICAgICAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaWYgKGUucmVzcG9uc2UgJiYgZS5yZXNwb25zZS5ib2R5KSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBlcnJvcklkOiBlLnJlc3BvbnNlLmJvZHkuVGl0bGUgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUucmVzcG9uc2UgJiYgZS5yZXNwb25zZS50ZXh0KSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBlcnJvcklkOiBlLnJlc3BvbnNlLnRleHQgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZXJyb3JJZDogZS5tZXNzYWdlIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGVycm9ySWQ6ICdMb2dpbiBmYWlsZWQhJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxudmFyIExvZ2luUGFzc3dvcmREaWFsb2cgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAgZGlzcGxheU5hbWU6ICdMb2dpblBhc3N3b3JkRGlhbG9nJyxcblxuICAgIG1peGluczogW1B5ZGlvUmVhY3RVSS5BY3Rpb25EaWFsb2dNaXhpbiwgUHlkaW9SZWFjdFVJLlN1Ym1pdEJ1dHRvblByb3ZpZGVyTWl4aW4sIExvZ2luRGlhbG9nTWl4aW5dLFxuXG4gICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiBnZXREZWZhdWx0UHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkaWFsb2dUaXRsZTogJycsIC8vcHlkaW8uTWVzc2FnZUhhc2hbMTYzXSxcbiAgICAgICAgICAgIGRpYWxvZ0lzTW9kYWw6IHRydWUsXG4gICAgICAgICAgICBkaWFsb2dTaXplOiAnc20nXG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24gZ2V0SW5pdGlhbFN0YXRlKCkge1xuICAgICAgICByZXR1cm4geyByZW1lbWJlckNoZWNrZWQ6IGZhbHNlIH07XG4gICAgfSxcblxuICAgIHN1Ym1pdDogZnVuY3Rpb24gc3VibWl0KCkge1xuICAgICAgICB2YXIgY2xpZW50ID0gX3B5ZGlvSHR0cEFwaTJbJ2RlZmF1bHQnXS5nZXRSZXN0Q2xpZW50KCk7XG4gICAgICAgIHRoaXMucG9zdExvZ2luRGF0YShjbGllbnQpO1xuICAgIH0sXG5cbiAgICBmaXJlRm9yZ290UGFzc3dvcmQ6IGZ1bmN0aW9uIGZpcmVGb3Jnb3RQYXNzd29yZChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHB5ZGlvLmdldENvbnRyb2xsZXIoKS5maXJlQWN0aW9uKHRoaXMuc3RhdGUuYXV0aFBhcmFtZXRlcnMuZ2V0KFwiRk9SR09UX1BBU1NXT1JEX0FDVElPTlwiKSk7XG4gICAgfSxcblxuICAgIHVzZUJsdXI6IGZ1bmN0aW9uIHVzZUJsdXIoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG5cbiAgICBnZXRCdXR0b25zOiBmdW5jdGlvbiBnZXRCdXR0b25zKCkge1xuICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICB2YXIgcGFzc3dvcmRPbmx5ID0gdGhpcy5zdGF0ZS5nbG9iYWxQYXJhbWV0ZXJzLmdldCgnUEFTU1dPUkRfQVVUSF9PTkxZJyk7XG4gICAgICAgIHZhciBzZWN1cmVMb2dpbkZvcm0gPSBwYXNzd29yZE9ubHkgfHwgdGhpcy5zdGF0ZS5hdXRoUGFyYW1ldGVycy5nZXQoJ1NFQ1VSRV9MT0dJTl9GT1JNJyk7XG5cbiAgICAgICAgdmFyIGVudGVyQnV0dG9uID0gUmVhY3QuY3JlYXRlRWxlbWVudChfbWF0ZXJpYWxVaS5GbGF0QnV0dG9uLCB7IGlkOiAnZGlhbG9nLWxvZ2luLXN1Ym1pdCcsICdkZWZhdWx0JzogdHJ1ZSwgbGFiZWxTdHlsZTogeyBjb2xvcjogJ3doaXRlJyB9LCBrZXk6ICdlbnRlcicsIGxhYmVsOiBweWRpby5NZXNzYWdlSGFzaFs2MTddLCBvblRvdWNoVGFwOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5zdWJtaXQoKTtcbiAgICAgICAgICAgIH0gfSk7XG4gICAgICAgIHZhciBidXR0b25zID0gW107XG4gICAgICAgIGlmIChmYWxzZSAmJiAhc2VjdXJlTG9naW5Gb3JtKSB7XG4gICAgICAgICAgICBidXR0b25zLnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBEYXJrVGhlbWVDb250YWluZXIsXG4gICAgICAgICAgICAgICAgeyBrZXk6ICdyZW1lbWJlcicsIHN0eWxlOiB7IGZsZXg6IDEsIHRleHRBbGlnbjogJ2xlZnQnLCBwYWRkaW5nTGVmdDogMTYgfSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuQ2hlY2tib3gsIHsgbGFiZWw6IHB5ZGlvLk1lc3NhZ2VIYXNoWzI2MV0sIGxhYmVsU3R5bGU6IHsgZm9udFNpemU6IDEzIH0sIG9uQ2hlY2s6IGZ1bmN0aW9uIChlLCBjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuc2V0U3RhdGUoeyByZW1lbWJlckNoZWNrZWQ6IGMgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gfSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgYnV0dG9ucy5wdXNoKGVudGVyQnV0dG9uKTtcbiAgICAgICAgICAgIHJldHVybiBbUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7IHN0eWxlOiB7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfSB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbnNcbiAgICAgICAgICAgICldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtlbnRlckJ1dHRvbl07XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAgIHZhciBwYXNzd29yZE9ubHkgPSB0aGlzLnN0YXRlLmdsb2JhbFBhcmFtZXRlcnMuZ2V0KCdQQVNTV09SRF9BVVRIX09OTFknKTtcbiAgICAgICAgdmFyIHNlY3VyZUxvZ2luRm9ybSA9IHBhc3N3b3JkT25seSB8fCB0aGlzLnN0YXRlLmF1dGhQYXJhbWV0ZXJzLmdldCgnU0VDVVJFX0xPR0lOX0ZPUk0nKTtcbiAgICAgICAgdmFyIGZvcmdvdFBhc3N3b3JkTGluayA9IHRoaXMuc3RhdGUuYXV0aFBhcmFtZXRlcnMuZ2V0KCdFTkFCTEVfRk9SR09UX1BBU1NXT1JEJykgJiYgIXBhc3N3b3JkT25seTtcblxuICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcklkKSB7XG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnYWp4cF9sb2dpbl9lcnJvcicgfSxcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9ySWRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZvcmdvdExpbmsgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChmb3Jnb3RQYXNzd29yZExpbmspIHtcbiAgICAgICAgICAgIGZvcmdvdExpbmsgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnZm9yZ290LXBhc3N3b3JkLWxpbmsnIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgJ2EnLFxuICAgICAgICAgICAgICAgICAgICB7IHN0eWxlOiB7IGN1cnNvcjogJ3BvaW50ZXInIH0sIG9uQ2xpY2s6IHRoaXMuZmlyZUZvcmdvdFBhc3N3b3JkIH0sXG4gICAgICAgICAgICAgICAgICAgIHB5ZGlvLk1lc3NhZ2VIYXNoWzQ3OV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhZGRpdGlvbmFsQ29tcG9uZW50c1RvcCA9IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxDb21wb25lbnRzQm90dG9tID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5tb2RpZmllcnMpIHtcbiAgICAgICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbXBzID0geyB0b3A6IFtdLCBib3R0b206IFtdIH07XG4gICAgICAgICAgICAgICAgX3RoaXMzLnByb3BzLm1vZGlmaWVycy5tYXAoKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgICAgICAgICAgIG0ucmVuZGVyQWRkaXRpb25hbENvbXBvbmVudHModGhpcy5wcm9wcywgdGhpcy5zdGF0ZSwgY29tcHMpO1xuICAgICAgICAgICAgICAgIH0pLmJpbmQoX3RoaXMzKSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBzLnRvcC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbXBvbmVudHNUb3AgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHMudG9wXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb21wcy5ib3R0b20ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb21wb25lbnRzQm90dG9tID0gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBzLmJvdHRvbVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3VzdG9tID0gdGhpcy5wcm9wcy5weWRpby5QYXJhbWV0ZXJzLmdldCgnY3VzdG9tV29yZGluZycpO1xuICAgICAgICB2YXIgbG9nb1VybCA9IGN1c3RvbS5pY29uO1xuICAgICAgICBpZiAoY3VzdG9tLmljb25CaW5hcnkpIHtcbiAgICAgICAgICAgIGxvZ29VcmwgPSBweWRpby5QYXJhbWV0ZXJzLmdldCgnRU5EUE9JTlRfUkVTVF9BUEknKSArIFwiL2Zyb250ZW5kL2JpbmFyaWVzL0dMT0JBTC9cIiArIGN1c3RvbS5pY29uQmluYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvZ29TdHlsZSA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiAnY29udGFpbicsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICd1cmwoJyArIGxvZ29VcmwgKyAnKScsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ25vLXJlcGVhdCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogLTEzMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICB3aWR0aDogMzIwLFxuICAgICAgICAgICAgaGVpZ2h0OiAxMjBcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIERhcmtUaGVtZUNvbnRhaW5lcixcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBsb2dvVXJsICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHsgc3R5bGU6IGxvZ29TdHlsZSB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdkaWFsb2dMZWdlbmQnLCBzdHlsZTogeyBmb250U2l6ZTogMjIsIHBhZGRpbmdCb3R0b206IDEyLCBsaW5lSGVpZ2h0OiAnMjhweCcgfSB9LFxuICAgICAgICAgICAgICAgIHB5ZGlvLk1lc3NhZ2VIYXNoW3Bhc3N3b3JkT25seSA/IDU1MiA6IDE4MF0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYW5ndWFnZVBpY2tlciwgbnVsbClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBhZGRpdGlvbmFsQ29tcG9uZW50c1RvcCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2Zvcm0nLFxuICAgICAgICAgICAgICAgIHsgYXV0b0NvbXBsZXRlOiBzZWN1cmVMb2dpbkZvcm0gPyBcIm9mZlwiIDogXCJvblwiIH0sXG4gICAgICAgICAgICAgICAgIXBhc3N3b3JkT25seSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KF9tYXRlcmlhbFVpLlRleHRGaWVsZCwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdibHVyRGlhbG9nVGV4dEZpZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBzZWN1cmVMb2dpbkZvcm0gPyBcIm9mZlwiIDogXCJvblwiLFxuICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ0xhYmVsVGV4dDogcHlkaW8uTWVzc2FnZUhhc2hbMTgxXSxcbiAgICAgICAgICAgICAgICAgICAgcmVmOiAnbG9naW4nLFxuICAgICAgICAgICAgICAgICAgICBvbktleURvd246IHRoaXMuc3VibWl0T25FbnRlcktleSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpZDogJ2FwcGxpY2F0aW9uLWxvZ2luJ1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuVGV4dEZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYXBwbGljYXRpb24tcGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdibHVyRGlhbG9nVGV4dEZpZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBzZWN1cmVMb2dpbkZvcm0gPyBcIm9mZlwiIDogXCJvblwiLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ0xhYmVsVGV4dDogcHlkaW8uTWVzc2FnZUhhc2hbMTgyXSxcbiAgICAgICAgICAgICAgICAgICAgcmVmOiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICBvbktleURvd246IHRoaXMuc3VibWl0T25FbnRlcktleSxcbiAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRpdGlvbmFsQ29tcG9uZW50c0JvdHRvbSxcbiAgICAgICAgICAgIGZvcmdvdExpbmtcbiAgICAgICAgKTtcbiAgICB9XG5cbn0pO1xuXG52YXIgRGFya1RoZW1lQ29udGFpbmVyID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gICAgX2luaGVyaXRzKERhcmtUaGVtZUNvbnRhaW5lciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgICBmdW5jdGlvbiBEYXJrVGhlbWVDb250YWluZXIoKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXJrVGhlbWVDb250YWluZXIpO1xuXG4gICAgICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKERhcmtUaGVtZUNvbnRhaW5lci5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhEYXJrVGhlbWVDb250YWluZXIsIFt7XG4gICAgICAgIGtleTogJ3JlbmRlcicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgICAgICB2YXIgX3Byb3BzID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHZhciBtdWlUaGVtZSA9IF9wcm9wcy5tdWlUaGVtZTtcblxuICAgICAgICAgICAgdmFyIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9wcm9wcywgWydtdWlUaGVtZSddKTtcblxuICAgICAgICAgICAgdmFyIGJhc2VUaGVtZSA9IF9leHRlbmRzKHt9LCBfbWF0ZXJpYWxVaVN0eWxlcy5kYXJrQmFzZVRoZW1lKTtcbiAgICAgICAgICAgIGJhc2VUaGVtZS5wYWxldHRlLnByaW1hcnkxQ29sb3IgPSBtdWlUaGVtZS5wYWxldHRlLmFjY2VudDFDb2xvcjtcbiAgICAgICAgICAgIHZhciBkYXJrVGhlbWUgPSAoMCwgX21hdGVyaWFsVWlTdHlsZXMuZ2V0TXVpVGhlbWUpKGJhc2VUaGVtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIF9tYXRlcmlhbFVpLk11aVRoZW1lUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgeyBtdWlUaGVtZTogZGFya1RoZW1lIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2JywgcHJvcHMpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIERhcmtUaGVtZUNvbnRhaW5lcjtcbn0pKFJlYWN0LkNvbXBvbmVudCk7XG5cbkRhcmtUaGVtZUNvbnRhaW5lciA9ICgwLCBfbWF0ZXJpYWxVaVN0eWxlcy5tdWlUaGVtZWFibGUpKCkoRGFya1RoZW1lQ29udGFpbmVyKTtcblxudmFyIE11bHRpQXV0aFNlbGVjdG9yID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgIGRpc3BsYXlOYW1lOiAnTXVsdGlBdXRoU2VsZWN0b3InLFxuXG4gICAgZ2V0VmFsdWU6IGZ1bmN0aW9uIGdldFZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgICB9LFxuXG4gICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiBPYmplY3Qua2V5cyh0aGlzLnByb3BzLmF1dGhTb3VyY2VzKS5zaGlmdCgpIH07XG4gICAgfSxcblxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShvYmplY3QsIGtleSwgcGF5bG9hZCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IHBheWxvYWQgfSk7XG4gICAgfSxcblxuICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB2YXIgbWVudUl0ZW1zID0gW107XG4gICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLnByb3BzLmF1dGhTb3VyY2VzKSB7XG4gICAgICAgICAgICBtZW51SXRlbXMucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KF9tYXRlcmlhbFVpLk1lbnVJdGVtLCB7IHZhbHVlOiBrZXksIHByaW1hcnlUZXh0OiB0aGlzLnByb3BzLmF1dGhTb3VyY2VzW2tleV0gfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgX21hdGVyaWFsVWkuU2VsZWN0RmllbGQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc3RhdGUudmFsdWUsXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UsXG4gICAgICAgICAgICAgICAgZmxvYXRpbmdMYWJlbFRleHQ6ICdMb2dpbiBhcy4uLidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZW51SXRlbXNcbiAgICAgICAgKTtcbiAgICB9XG59KTtcblxudmFyIE11bHRpQXV0aE1vZGlmaWVyID0gKGZ1bmN0aW9uIChfUHlkaW9SZWFjdFVJJEFic3RyYWN0RGlhbG9nTW9kaWZpZXIpIHtcbiAgICBfaW5oZXJpdHMoTXVsdGlBdXRoTW9kaWZpZXIsIF9QeWRpb1JlYWN0VUkkQWJzdHJhY3REaWFsb2dNb2RpZmllcik7XG5cbiAgICBmdW5jdGlvbiBNdWx0aUF1dGhNb2RpZmllcigpIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE11bHRpQXV0aE1vZGlmaWVyKTtcblxuICAgICAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihNdWx0aUF1dGhNb2RpZmllci5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhNdWx0aUF1dGhNb2RpZmllciwgW3tcbiAgICAgICAga2V5OiAnZW5yaWNoU3VibWl0UGFyYW1ldGVycycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBlbnJpY2hTdWJtaXRQYXJhbWV0ZXJzKHByb3BzLCBzdGF0ZSwgcmVmcywgcGFyYW1zKSB7XG5cbiAgICAgICAgICAgIHZhciBzZWxlY3RlZFNvdXJjZSA9IHJlZnMubXVsdGlfc2VsZWN0b3IuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIHBhcmFtc1snYXV0aF9zb3VyY2UnXSA9IHNlbGVjdGVkU291cmNlO1xuICAgICAgICAgICAgaWYgKHByb3BzLm1hc3RlckF1dGhTb3VyY2UgJiYgc2VsZWN0ZWRTb3VyY2UgPT09IHByb3BzLm1hc3RlckF1dGhTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXNbJ3VzZXJpZCddID0gc2VsZWN0ZWRTb3VyY2UgKyBwcm9wcy51c2VySWRTZXBhcmF0b3IgKyBwYXJhbXNbJ3VzZXJpZCddO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdyZW5kZXJBZGRpdGlvbmFsQ29tcG9uZW50cycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJBZGRpdGlvbmFsQ29tcG9uZW50cyhwcm9wcywgc3RhdGUsIGFjY3VtdWxhdG9yKSB7XG5cbiAgICAgICAgICAgIGlmICghcHJvcHMuYXV0aFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZmluZCBhdXRoU291cmNlcycpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjY3VtdWxhdG9yLnRvcC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTXVsdGlBdXRoU2VsZWN0b3IsIF9leHRlbmRzKHsgcmVmOiAnbXVsdGlfc2VsZWN0b3InIH0sIHByb3BzLCB7IHBhcmVudFN0YXRlOiBzdGF0ZSB9KSkpO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIE11bHRpQXV0aE1vZGlmaWVyO1xufSkoUHlkaW9SZWFjdFVJLkFic3RyYWN0RGlhbG9nTW9kaWZpZXIpO1xuXG52YXIgQ2FsbGJhY2tzID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDYWxsYmFja3MoKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYWxsYmFja3MpO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhDYWxsYmFja3MsIG51bGwsIFt7XG4gICAgICAgIGtleTogJ3Nlc3Npb25Mb2dvdXQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2Vzc2lvbkxvZ291dCgpIHtcblxuICAgICAgICAgICAgaWYgKFB5ZGlvLmdldEluc3RhbmNlKCkuUGFyYW1ldGVycy5nZXQoXCJQUkVMT0dfVVNFUlwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3B5ZGlvSHR0cEFwaTJbJ2RlZmF1bHQnXS5nZXRSZXN0Q2xpZW50KCkuc2Vzc2lvbkxvZ291dCgpWydmaW5hbGx5J10oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWYgPSBweWRpby5QYXJhbWV0ZXJzLmdldCgnRlJPTlRFTkRfVVJMJykgKyAnL2xvZ291dCc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9naW5QYXNzd29yZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBsb2dpblBhc3N3b3JkKG1hbmFnZXIpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gW10gOiBhcmd1bWVudHNbMV07XG5cbiAgICAgICAgICAgIGlmIChQeWRpby5nZXRJbnN0YW5jZSgpLlBhcmFtZXRlcnMuZ2V0KFwiUFJFTE9HX1VTRVJcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBfcmVmID0gYXJnc1swXSB8fCB7fTtcblxuICAgICAgICAgICAgdmFyIF9yZWYkY3JlYXRlQXV0aFJlcXVlc3QgPSBfcmVmLmNyZWF0ZUF1dGhSZXF1ZXN0O1xuICAgICAgICAgICAgdmFyIGNyZWF0ZUF1dGhSZXF1ZXN0ID0gX3JlZiRjcmVhdGVBdXRoUmVxdWVzdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYkY3JlYXRlQXV0aFJlcXVlc3Q7XG5cbiAgICAgICAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBbJ2NyZWF0ZUF1dGhSZXF1ZXN0J10pO1xuXG4gICAgICAgICAgICB2YXIgZm4gPSBmdW5jdGlvbiBmbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHlkaW8uVUkub3BlbkNvbXBvbmVudEluTW9kYWwoJ0F1dGhmcm9udENvcmVBY3Rpb25zJywgJ0xvZ2luUGFzc3dvcmREaWFsb2cnLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHsgYmx1cjogdHJ1ZSB9KSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoY3JlYXRlQXV0aFJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICBfcHlkaW9IdHRwQXBpMlsnZGVmYXVsdCddLmdldFJlc3RDbGllbnQoKS5qd3RXaXRoQXV0aEluZm8oeyB0eXBlOiBcImNyZWF0ZV9hdXRoX3JlcXVlc3RcIiB9KS50aGVuKGZuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBDYWxsYmFja3M7XG59KSgpO1xuXG52YXIgUmVzZXRQYXNzd29yZFJlcXVpcmUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAgZGlzcGxheU5hbWU6ICdSZXNldFBhc3N3b3JkUmVxdWlyZScsXG5cbiAgICBtaXhpbnM6IFtQeWRpb1JlYWN0VUkuQWN0aW9uRGlhbG9nTWl4aW4sIFB5ZGlvUmVhY3RVSS5TdWJtaXRCdXR0b25Qcm92aWRlck1peGluLCBQeWRpb1JlYWN0VUkuQ2FuY2VsQnV0dG9uUHJvdmlkZXJNaXhpbl0sXG5cbiAgICBzdGF0aWNzOiB7XG4gICAgICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4oKSB7XG4gICAgICAgICAgICBweWRpby5VSS5vcGVuQ29tcG9uZW50SW5Nb2RhbCgnQXV0aGZyb250Q29yZUFjdGlvbnMnLCAnUmVzZXRQYXNzd29yZFJlcXVpcmUnLCB7IGJsdXI6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiBnZXREZWZhdWx0UHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkaWFsb2dUaXRsZTogcHlkaW8uTWVzc2FnZUhhc2hbJ2d1aS51c2VyLjEnXSxcbiAgICAgICAgICAgIGRpYWxvZ0lzTW9kYWw6IHRydWUsXG4gICAgICAgICAgICBkaWFsb2dTaXplOiAnc20nXG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIHVzZUJsdXI6IGZ1bmN0aW9uIHVzZUJsdXIoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG5cbiAgICBjYW5jZWw6IGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICAgICAgcHlkaW8uQ29udHJvbGxlci5maXJlQWN0aW9uKCdsb2dpbicpO1xuICAgIH0sXG5cbiAgICBzdWJtaXQ6IGZ1bmN0aW9uIHN1Ym1pdCgpIHtcbiAgICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHZhbHVlU3VibWl0dGVkID0gdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLnZhbHVlU3VibWl0dGVkO1xuICAgICAgICBpZiAodmFsdWVTdWJtaXR0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5yZWZzLmlucHV0ICYmIHRoaXMucmVmcy5pbnB1dC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYXBpID0gbmV3IF9weWRpb0h0dHBSZXN0QXBpLlRva2VuU2VydmljZUFwaShfcHlkaW9IdHRwQXBpMlsnZGVmYXVsdCddLmdldFJlc3RDbGllbnQoKSk7XG4gICAgICAgIGFwaS5yZXNldFBhc3N3b3JkVG9rZW4odmFsdWUpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXM0LnNldFN0YXRlKHsgdmFsdWVTdWJtaXR0ZWQ6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIG1lc3MgPSB0aGlzLnByb3BzLnB5ZGlvLk1lc3NhZ2VIYXNoO1xuICAgICAgICB2YXIgdmFsdWVTdWJtaXR0ZWQgPSB0aGlzLnN0YXRlICYmIHRoaXMuc3RhdGUudmFsdWVTdWJtaXR0ZWQ7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgIXZhbHVlU3VibWl0dGVkICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdkaWFsb2dMZWdlbmQnIH0sXG4gICAgICAgICAgICAgICAgICAgIG1lc3NbJ2d1aS51c2VyLjMnXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChfbWF0ZXJpYWxVaS5UZXh0RmllbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYmx1ckRpYWxvZ1RleHRGaWVsZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlZjogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ0xhYmVsVGV4dDogbWVzc1snZ3VpLnVzZXIuNCddXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB2YWx1ZVN1Ym1pdHRlZCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgbWVzc1snZ3VpLnVzZXIuNSddXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG59KTtcblxudmFyIFJlc2V0UGFzc3dvcmREaWFsb2cgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAgZGlzcGxheU5hbWU6ICdSZXNldFBhc3N3b3JkRGlhbG9nJyxcblxuICAgIG1peGluczogW1B5ZGlvUmVhY3RVSS5BY3Rpb25EaWFsb2dNaXhpbiwgUHlkaW9SZWFjdFVJLlN1Ym1pdEJ1dHRvblByb3ZpZGVyTWl4aW5dLFxuXG4gICAgc3RhdGljczoge1xuICAgICAgICBvcGVuOiBmdW5jdGlvbiBvcGVuKCkge1xuICAgICAgICAgICAgcHlkaW8uVUkub3BlbkNvbXBvbmVudEluTW9kYWwoJ0F1dGhmcm9udENvcmVBY3Rpb25zJywgJ1Jlc2V0UGFzc3dvcmREaWFsb2cnLCB7IGJsdXI6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbiBnZXREZWZhdWx0UHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkaWFsb2dUaXRsZTogcHlkaW8uTWVzc2FnZUhhc2hbJ2d1aS51c2VyLjEnXSxcbiAgICAgICAgICAgIGRpYWxvZ0lzTW9kYWw6IHRydWUsXG4gICAgICAgICAgICBkaWFsb2dTaXplOiAnc20nXG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24gZ2V0SW5pdGlhbFN0YXRlKCkge1xuICAgICAgICByZXR1cm4geyB2YWx1ZVN1Ym1pdHRlZDogZmFsc2UsIGZvcm1Mb2FkZWQ6IGZhbHNlLCBwYXNzVmFsdWU6IG51bGwsIHVzZXJJZDogbnVsbCB9O1xuICAgIH0sXG5cbiAgICB1c2VCbHVyOiBmdW5jdGlvbiB1c2VCbHVyKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuXG4gICAgc3VibWl0OiBmdW5jdGlvbiBzdWJtaXQoKSB7XG4gICAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICAgIHZhciBweWRpbyA9IHRoaXMucHJvcHMucHlkaW87XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUudmFsdWVTdWJtaXR0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25EaXNtaXNzKCk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHB5ZGlvLlBhcmFtZXRlcnMuZ2V0KCdGUk9OVEVORF9VUkwnKSArICcvbG9naW4nO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1lc3MgPSBweWRpby5NZXNzYWdlSGFzaDtcbiAgICAgICAgdmFyIGFwaSA9IG5ldyBfcHlkaW9IdHRwUmVzdEFwaS5Ub2tlblNlcnZpY2VBcGkoX3B5ZGlvSHR0cEFwaTJbJ2RlZmF1bHQnXS5nZXRSZXN0Q2xpZW50KCkpO1xuICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBfcHlkaW9IdHRwUmVzdEFwaS5SZXN0UmVzZXRQYXNzd29yZFJlcXVlc3QoKTtcbiAgICAgICAgcmVxdWVzdC5Vc2VyTG9naW4gPSB0aGlzLnN0YXRlLnVzZXJJZDtcbiAgICAgICAgcmVxdWVzdC5SZXNldFBhc3N3b3JkVG9rZW4gPSBweWRpby5QYXJhbWV0ZXJzLmdldCgnVVNFUl9BQ1RJT05fS0VZJyk7XG4gICAgICAgIHJlcXVlc3QuTmV3UGFzc3dvcmQgPSB0aGlzLnN0YXRlLnBhc3NWYWx1ZTtcbiAgICAgICAgYXBpLnJlc2V0UGFzc3dvcmQocmVxdWVzdCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpczUuc2V0U3RhdGUoeyB2YWx1ZVN1Ym1pdHRlZDogdHJ1ZSB9KTtcbiAgICAgICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGFsZXJ0KG1lc3NbMjQwXSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICAgIFByb21pc2UucmVzb2x2ZShyZXF1aXJlKCdweWRpbycpLnJlcXVpcmVMaWIoJ2Zvcm0nLCB0cnVlKSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpczYuc2V0U3RhdGUoeyBmb3JtTG9hZGVkOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgb25QYXNzQ2hhbmdlOiBmdW5jdGlvbiBvblBhc3NDaGFuZ2UobmV3VmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBwYXNzVmFsdWU6IG5ld1ZhbHVlIH0pO1xuICAgIH0sXG5cbiAgICBvblVzZXJJZENoYW5nZTogZnVuY3Rpb24gb25Vc2VySWRDaGFuZ2UoZXZlbnQsIG5ld1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB1c2VySWQ6IG5ld1ZhbHVlIH0pO1xuICAgIH0sXG5cbiAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIG1lc3MgPSB0aGlzLnByb3BzLnB5ZGlvLk1lc3NhZ2VIYXNoO1xuICAgICAgICB2YXIgX3N0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgdmFyIHZhbHVlU3VibWl0dGVkID0gX3N0YXRlLnZhbHVlU3VibWl0dGVkO1xuICAgICAgICB2YXIgZm9ybUxvYWRlZCA9IF9zdGF0ZS5mb3JtTG9hZGVkO1xuICAgICAgICB2YXIgcGFzc1ZhbHVlID0gX3N0YXRlLnBhc3NWYWx1ZTtcbiAgICAgICAgdmFyIHVzZXJJZCA9IF9zdGF0ZS51c2VySWQ7XG5cbiAgICAgICAgaWYgKCF2YWx1ZVN1Ym1pdHRlZCAmJiBmb3JtTG9hZGVkKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnZGlhbG9nTGVnZW5kJyB9LFxuICAgICAgICAgICAgICAgICAgICBtZXNzWydndWkudXNlci44J11cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuVGV4dEZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2JsdXJEaWFsb2dUZXh0RmllbGQnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdXNlcklkLFxuICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ0xhYmVsVGV4dDogbWVzc1snZ3VpLnVzZXIuNCddLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vblVzZXJJZENoYW5nZS5iaW5kKHRoaXMpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQeWRpb0Zvcm0uVmFsaWRQYXNzd29yZCwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdibHVyRGlhbG9nVGV4dEZpZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25QYXNzQ2hhbmdlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgbmFtZTogJ3Bhc3N3b3JkJywgbGFiZWw6IG1lc3NbMTk4XSB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFzc1ZhbHVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVTdWJtaXR0ZWQpIHtcblxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICBtZXNzWydndWkudXNlci42J11cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChQeWRpb1JlYWN0VUkuTG9hZGVyLCBudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxufSk7XG5cbmV4cG9ydHMuQ2FsbGJhY2tzID0gQ2FsbGJhY2tzO1xuZXhwb3J0cy5Mb2dpblBhc3N3b3JkRGlhbG9nID0gTG9naW5QYXNzd29yZERpYWxvZztcbmV4cG9ydHMuUmVzZXRQYXNzd29yZFJlcXVpcmUgPSBSZXNldFBhc3N3b3JkUmVxdWlyZTtcbmV4cG9ydHMuUmVzZXRQYXNzd29yZERpYWxvZyA9IFJlc2V0UGFzc3dvcmREaWFsb2c7XG5leHBvcnRzLk11bHRpQXV0aE1vZGlmaWVyID0gTXVsdGlBdXRoTW9kaWZpZXI7XG5leHBvcnRzLkxhbmd1YWdlUGlja2VyID0gTGFuZ3VhZ2VQaWNrZXI7XG4iXX0= +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJyZXMvYnVpbGQvQ29yZUFjdGlvbnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwiLypcbiAqIENvcHlyaWdodCAyMDA3LTIwMTcgQ2hhcmxlcyBkdSBKZXUgLSBBYnN0cml1bSBTQVMgPHRlYW0gKGF0KSBweWQuaW8+XG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBQeWRpby5cbiAqXG4gKiBQeWRpbyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFB5ZGlvIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIFB5ZGlvLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICpcbiAqIFRoZSBsYXRlc3QgY29kZSBjYW4gYmUgZm91bmQgYXQgPGh0dHBzOi8vcHlkaW8uY29tPi5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94MiwgX3gzLCBfeDQpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gyLCBwcm9wZXJ0eSA9IF94MywgcmVjZWl2ZXIgPSBfeDQ7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3gyID0gcGFyZW50OyBfeDMgPSBwcm9wZXJ0eTsgX3g0ID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX21hdGVyaWFsVWlTdHlsZXMgPSByZXF1aXJlKCdtYXRlcmlhbC11aS9zdHlsZXMnKTtcblxudmFyIF9tYXRlcmlhbFVpID0gcmVxdWlyZSgnbWF0ZXJpYWwtdWknKTtcblxudmFyIF9weWRpb0h0dHBBcGkgPSByZXF1aXJlKFwicHlkaW8vaHR0cC9hcGlcIik7XG5cbnZhciBfcHlkaW9IdHRwQXBpMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3B5ZGlvSHR0cEFwaSk7XG5cbnZhciBfcHlkaW9IdHRwUmVzdEFwaSA9IHJlcXVpcmUoXCJweWRpby9odHRwL3Jlc3QtYXBpXCIpO1xuXG52YXIgcHlkaW8gPSB3aW5kb3cucHlkaW87XG5cbnZhciBMYW5ndWFnZVBpY2tlciA9IGZ1bmN0aW9uIExhbmd1YWdlUGlja2VyKCkge1xuICAgIHZhciBpdGVtcyA9IFtdO1xuXG4gICAgcHlkaW8ubGlzdExhbmd1YWdlc1dpdGhDYWxsYmFjayhmdW5jdGlvbiAoa2V5LCBsYWJlbCwgY3VycmVudCkge1xuICAgICAgICByZXR1cm4gaXRlbXMucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KF9tYXRlcmlhbFVpLk1lbnVJdGVtLCB7XG4gICAgICAgICAgICBwcmltYXJ5VGV4dDogbGFiZWwsXG4gICAgICAgICAgICB2YWx1ZToga2V5LFxuICAgICAgICAgICAgcmlnaHRJY29uOiBjdXJyZW50ID8gUmVhY3QuY3JlYXRlRWxlbWVudChfbWF0ZXJpYWxVaS5Gb250SWNvbiwgeyBjbGFzc05hbWU6ICdtZGkgbWRpLWNoZWNrJyB9KSA6IG51bGxcbiAgICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIF9tYXRlcmlhbFVpLkljb25NZW51LFxuICAgICAgICB7XG4gICAgICAgICAgICBpY29uQnV0dG9uRWxlbWVudDogUmVhY3QuY3JlYXRlRWxlbWVudChfbWF0ZXJpYWxVaS5JY29uQnV0dG9uLCB7IHRvb2x0aXA6IHB5ZGlvLk1lc3NhZ2VIYXNoWzYxOF0sIGljb25DbGFzc05hbWU6ICdtZGkgbWRpLWZsYWctb3V0bGluZS12YXJpYW50JywgaWNvblN0eWxlOiB7IGZvbnRTaXplOiAyMCwgY29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LC42NyknIH0gfSksXG4gICAgICAgICAgICBvbkl0ZW1Ub3VjaFRhcDogZnVuY3Rpb24gKGUsIG8pIHtcbiAgICAgICAgICAgICAgICBweWRpby5sb2FkSTE4Tk1lc3NhZ2VzKG8ucHJvcHMudmFsdWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlc2t0b3A6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgaXRlbXNcbiAgICApO1xufTtcblxudmFyIExvZ2luRGlhbG9nTWl4aW4gPSB7XG5cbiAgICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdsb2JhbFBhcmFtZXRlcnM6IHB5ZGlvLlBhcmFtZXRlcnMsXG4gICAgICAgICAgICBhdXRoUGFyYW1ldGVyczogcHlkaW8uZ2V0UGx1Z2luQ29uZmlncygnYXV0aCcpLFxuICAgICAgICAgICAgZXJyb3JJZDogbnVsbCxcbiAgICAgICAgICAgIGRpc3BsYXlDYXB0Y2hhOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBwb3N0TG9naW5EYXRhOiBmdW5jdGlvbiBwb3N0TG9naW5EYXRhKHJlc3RDbGllbnQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICB2YXIgcGFzc3dvcmRPbmx5ID0gdGhpcy5zdGF0ZS5nbG9iYWxQYXJhbWV0ZXJzLmdldCgnUEFTU1dPUkRfQVVUSF9PTkxZJyk7XG4gICAgICAgIHZhciBsb2dpbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHBhc3N3b3JkT25seSkge1xuICAgICAgICAgICAgbG9naW4gPSB0aGlzLnN0YXRlLmdsb2JhbFBhcmFtZXRlcnMuZ2V0KCdQUkVTRVRfTE9HSU4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2luID0gdGhpcy5yZWZzLmxvZ2luLmdldFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdENsaWVudC5qd3RGcm9tQ3JlZGVudGlhbHMobG9naW4sIHRoaXMucmVmcy5wYXNzd29yZC5nZXRWYWx1ZSgpKS50aGVuKGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICBpZiAoci5kYXRhICYmIHIuZGF0YS5UcmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfdGhpcy5kaXNtaXNzKCk7XG4gICAgICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoZS5yZXNwb25zZSAmJiBlLnJlc3BvbnNlLmJvZHkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGVycm9ySWQ6IGUucmVzcG9uc2UuYm9keS5UaXRsZSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5yZXNwb25zZSAmJiBlLnJlc3BvbnNlLnRleHQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGVycm9ySWQ6IGUucmVzcG9uc2UudGV4dCB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBlcnJvcklkOiBlLm1lc3NhZ2UgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZXJyb3JJZDogJ0xvZ2luIGZhaWxlZCEnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG52YXIgTG9naW5QYXNzd29yZERpYWxvZyA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICBkaXNwbGF5TmFtZTogJ0xvZ2luUGFzc3dvcmREaWFsb2cnLFxuXG4gICAgbWl4aW5zOiBbUHlkaW9SZWFjdFVJLkFjdGlvbkRpYWxvZ01peGluLCBQeWRpb1JlYWN0VUkuU3VibWl0QnV0dG9uUHJvdmlkZXJNaXhpbiwgTG9naW5EaWFsb2dNaXhpbl0sXG5cbiAgICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uIGdldERlZmF1bHRQcm9wcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRpYWxvZ1RpdGxlOiAnJywgLy9weWRpby5NZXNzYWdlSGFzaFsxNjNdLFxuICAgICAgICAgICAgZGlhbG9nSXNNb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgIGRpYWxvZ1NpemU6ICdzbSdcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB7IHJlbWVtYmVyQ2hlY2tlZDogZmFsc2UgfTtcbiAgICB9LFxuXG4gICAgc3VibWl0OiBmdW5jdGlvbiBzdWJtaXQoKSB7XG4gICAgICAgIHZhciBjbGllbnQgPSBfcHlkaW9IdHRwQXBpMlsnZGVmYXVsdCddLmdldFJlc3RDbGllbnQoKTtcbiAgICAgICAgdGhpcy5wb3N0TG9naW5EYXRhKGNsaWVudCk7XG4gICAgfSxcblxuICAgIGZpcmVGb3Jnb3RQYXNzd29yZDogZnVuY3Rpb24gZmlyZUZvcmdvdFBhc3N3b3JkKGUpIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcHlkaW8uZ2V0Q29udHJvbGxlcigpLmZpcmVBY3Rpb24odGhpcy5zdGF0ZS5hdXRoUGFyYW1ldGVycy5nZXQoXCJGT1JHT1RfUEFTU1dPUkRfQUNUSU9OXCIpKTtcbiAgICB9LFxuXG4gICAgdXNlQmx1cjogZnVuY3Rpb24gdXNlQmx1cigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcblxuICAgIGdldEJ1dHRvbnM6IGZ1bmN0aW9uIGdldEJ1dHRvbnMoKSB7XG4gICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAgIHZhciBwYXNzd29yZE9ubHkgPSB0aGlzLnN0YXRlLmdsb2JhbFBhcmFtZXRlcnMuZ2V0KCdQQVNTV09SRF9BVVRIX09OTFknKTtcbiAgICAgICAgdmFyIHNlY3VyZUxvZ2luRm9ybSA9IHBhc3N3b3JkT25seSB8fCB0aGlzLnN0YXRlLmF1dGhQYXJhbWV0ZXJzLmdldCgnU0VDVVJFX0xPR0lOX0ZPUk0nKTtcblxuICAgICAgICB2YXIgZW50ZXJCdXR0b24gPSBSZWFjdC5jcmVhdGVFbGVtZW50KF9tYXRlcmlhbFVpLkZsYXRCdXR0b24sIHsgaWQ6ICdkaWFsb2ctbG9naW4tc3VibWl0JywgJ2RlZmF1bHQnOiB0cnVlLCBsYWJlbFN0eWxlOiB7IGNvbG9yOiAnd2hpdGUnIH0sIGtleTogJ2VudGVyJywgbGFiZWw6IHB5ZGlvLk1lc3NhZ2VIYXNoWzYxN10sIG9uVG91Y2hUYXA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLnN1Ym1pdCgpO1xuICAgICAgICAgICAgfSB9KTtcbiAgICAgICAgdmFyIGJ1dHRvbnMgPSBbXTtcbiAgICAgICAgaWYgKGZhbHNlICYmICFzZWN1cmVMb2dpbkZvcm0pIHtcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIERhcmtUaGVtZUNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICB7IGtleTogJ3JlbWVtYmVyJywgc3R5bGU6IHsgZmxleDogMSwgdGV4dEFsaWduOiAnbGVmdCcsIHBhZGRpbmdMZWZ0OiAxNiB9IH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChfbWF0ZXJpYWxVaS5DaGVja2JveCwgeyBsYWJlbDogcHlkaW8uTWVzc2FnZUhhc2hbMjYxXSwgbGFiZWxTdHlsZTogeyBmb250U2l6ZTogMTMgfSwgb25DaGVjazogZnVuY3Rpb24gKGUsIGMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7IHJlbWVtYmVyQ2hlY2tlZDogYyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSB9KVxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICBidXR0b25zLnB1c2goZW50ZXJCdXR0b24pO1xuICAgICAgICAgICAgcmV0dXJuIFtSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgc3R5bGU6IHsgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9IH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uc1xuICAgICAgICAgICAgKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW2VudGVyQnV0dG9uXTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHBhc3N3b3JkT25seSA9IHRoaXMuc3RhdGUuZ2xvYmFsUGFyYW1ldGVycy5nZXQoJ1BBU1NXT1JEX0FVVEhfT05MWScpO1xuICAgICAgICB2YXIgc2VjdXJlTG9naW5Gb3JtID0gcGFzc3dvcmRPbmx5IHx8IHRoaXMuc3RhdGUuYXV0aFBhcmFtZXRlcnMuZ2V0KCdTRUNVUkVfTE9HSU5fRk9STScpO1xuICAgICAgICB2YXIgZm9yZ290UGFzc3dvcmRMaW5rID0gdGhpcy5zdGF0ZS5hdXRoUGFyYW1ldGVycy5nZXQoJ0VOQUJMRV9GT1JHT1RfUEFTU1dPUkQnKSAmJiAhcGFzc3dvcmRPbmx5O1xuXG4gICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmVycm9ySWQpIHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdhanhwX2xvZ2luX2Vycm9yJyB9LFxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3JJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm9yZ290TGluayA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGZvcmdvdFBhc3N3b3JkTGluaykge1xuICAgICAgICAgICAgZm9yZ290TGluayA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdmb3Jnb3QtcGFzc3dvcmQtbGluaycgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAnYScsXG4gICAgICAgICAgICAgICAgICAgIHsgc3R5bGU6IHsgY3Vyc29yOiAncG9pbnRlcicgfSwgb25DbGljazogdGhpcy5maXJlRm9yZ290UGFzc3dvcmQgfSxcbiAgICAgICAgICAgICAgICAgICAgcHlkaW8uTWVzc2FnZUhhc2hbNDc5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFkZGl0aW9uYWxDb21wb25lbnRzVG9wID0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgYWRkaXRpb25hbENvbXBvbmVudHNCb3R0b20gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm1vZGlmaWVycykge1xuICAgICAgICAgICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29tcHMgPSB7IHRvcDogW10sIGJvdHRvbTogW10gfTtcbiAgICAgICAgICAgICAgICBfdGhpczMucHJvcHMubW9kaWZpZXJzLm1hcCgoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgbS5yZW5kZXJBZGRpdGlvbmFsQ29tcG9uZW50cyh0aGlzLnByb3BzLCB0aGlzLnN0YXRlLCBjb21wcyk7XG4gICAgICAgICAgICAgICAgfSkuYmluZChfdGhpczMpKTtcbiAgICAgICAgICAgICAgICBpZiAoY29tcHMudG9wLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQ29tcG9uZW50c1RvcCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wcy50b3BcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBzLmJvdHRvbS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbXBvbmVudHNCb3R0b20gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHMuYm90dG9tXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXN0b20gPSB0aGlzLnByb3BzLnB5ZGlvLlBhcmFtZXRlcnMuZ2V0KCdjdXN0b21Xb3JkaW5nJyk7XG4gICAgICAgIHZhciBsb2dvVXJsID0gY3VzdG9tLmljb247XG4gICAgICAgIGlmIChjdXN0b20uaWNvbkJpbmFyeSkge1xuICAgICAgICAgICAgbG9nb1VybCA9IHB5ZGlvLlBhcmFtZXRlcnMuZ2V0KCdFTkRQT0lOVF9SRVNUX0FQSScpICsgXCIvZnJvbnRlbmQvYmluYXJpZXMvR0xPQkFML1wiICsgY3VzdG9tLmljb25CaW5hcnk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9nb1N0eWxlID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZFNpemU6ICdjb250YWluJyxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogJ3VybCgnICsgbG9nb1VybCArICcpJyxcbiAgICAgICAgICAgIGJhY2tncm91bmRQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0OiAnbm8tcmVwZWF0JyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAtMTMwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHdpZHRoOiAzMjAsXG4gICAgICAgICAgICBoZWlnaHQ6IDEyMFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgRGFya1RoZW1lQ29udGFpbmVyLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGxvZ29VcmwgJiYgUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2JywgeyBzdHlsZTogbG9nb1N0eWxlIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2RpYWxvZ0xlZ2VuZCcsIHN0eWxlOiB7IGZvbnRTaXplOiAyMiwgcGFkZGluZ0JvdHRvbTogMTIsIGxpbmVIZWlnaHQ6ICcyOHB4JyB9IH0sXG4gICAgICAgICAgICAgICAgcHlkaW8uTWVzc2FnZUhhc2hbcGFzc3dvcmRPbmx5ID8gNTUyIDogMTgwXSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExhbmd1YWdlUGlja2VyLCBudWxsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxDb21wb25lbnRzVG9wLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZm9ybScsXG4gICAgICAgICAgICAgICAgeyBhdXRvQ29tcGxldGU6IHNlY3VyZUxvZ2luRm9ybSA/IFwib2ZmXCIgOiBcIm9uXCIgfSxcbiAgICAgICAgICAgICAgICAhcGFzc3dvcmRPbmx5ICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuVGV4dEZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2JsdXJEaWFsb2dUZXh0RmllbGQnLFxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU6IHNlY3VyZUxvZ2luRm9ybSA/IFwib2ZmXCIgOiBcIm9uXCIsXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nTGFiZWxUZXh0OiBweWRpby5NZXNzYWdlSGFzaFsxODFdLFxuICAgICAgICAgICAgICAgICAgICByZWY6ICdsb2dpbicsXG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5zdWJtaXRPbkVudGVyS2V5LFxuICAgICAgICAgICAgICAgICAgICBmdWxsV2lkdGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYXBwbGljYXRpb24tbG9naW4nXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChfbWF0ZXJpYWxVaS5UZXh0RmllbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdhcHBsaWNhdGlvbi1wYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2JsdXJEaWFsb2dUZXh0RmllbGQnLFxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU6IHNlY3VyZUxvZ2luRm9ybSA/IFwib2ZmXCIgOiBcIm9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nTGFiZWxUZXh0OiBweWRpby5NZXNzYWdlSGFzaFsxODJdLFxuICAgICAgICAgICAgICAgICAgICByZWY6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5zdWJtaXRPbkVudGVyS2V5LFxuICAgICAgICAgICAgICAgICAgICBmdWxsV2lkdGg6IHRydWVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxDb21wb25lbnRzQm90dG9tLFxuICAgICAgICAgICAgZm9yZ290TGlua1xuICAgICAgICApO1xuICAgIH1cblxufSk7XG5cbnZhciBEYXJrVGhlbWVDb250YWluZXIgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoRGFya1RoZW1lQ29udGFpbmVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICAgIGZ1bmN0aW9uIERhcmtUaGVtZUNvbnRhaW5lcigpIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERhcmtUaGVtZUNvbnRhaW5lcik7XG5cbiAgICAgICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoRGFya1RoZW1lQ29udGFpbmVyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKERhcmtUaGVtZUNvbnRhaW5lciwgW3tcbiAgICAgICAga2V5OiAncmVuZGVyJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgICAgIHZhciBfcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgdmFyIG11aVRoZW1lID0gX3Byb3BzLm11aVRoZW1lO1xuXG4gICAgICAgICAgICB2YXIgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3Byb3BzLCBbJ211aVRoZW1lJ10pO1xuXG4gICAgICAgICAgICB2YXIgYmFzZVRoZW1lID0gX2V4dGVuZHMoe30sIF9tYXRlcmlhbFVpU3R5bGVzLmRhcmtCYXNlVGhlbWUpO1xuICAgICAgICAgICAgYmFzZVRoZW1lLnBhbGV0dGUucHJpbWFyeTFDb2xvciA9IG11aVRoZW1lLnBhbGV0dGUuYWNjZW50MUNvbG9yO1xuICAgICAgICAgICAgdmFyIGRhcmtUaGVtZSA9ICgwLCBfbWF0ZXJpYWxVaVN0eWxlcy5nZXRNdWlUaGVtZSkoYmFzZVRoZW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgX21hdGVyaWFsVWkuTXVpVGhlbWVQcm92aWRlcixcbiAgICAgICAgICAgICAgICB7IG11aVRoZW1lOiBkYXJrVGhlbWUgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnLCBwcm9wcylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gRGFya1RoZW1lQ29udGFpbmVyO1xufSkoUmVhY3QuQ29tcG9uZW50KTtcblxuRGFya1RoZW1lQ29udGFpbmVyID0gKDAsIF9tYXRlcmlhbFVpU3R5bGVzLm11aVRoZW1lYWJsZSkoKShEYXJrVGhlbWVDb250YWluZXIpO1xuXG52YXIgTXVsdGlBdXRoU2VsZWN0b3IgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAgZGlzcGxheU5hbWU6ICdNdWx0aUF1dGhTZWxlY3RvcicsXG5cbiAgICBnZXRWYWx1ZTogZnVuY3Rpb24gZ2V0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnZhbHVlO1xuICAgIH0sXG5cbiAgICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IE9iamVjdC5rZXlzKHRoaXMucHJvcHMuYXV0aFNvdXJjZXMpLnNoaWZ0KCkgfTtcbiAgICB9LFxuXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKG9iamVjdCwga2V5LCBwYXlsb2FkKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogcGF5bG9hZCB9KTtcbiAgICB9LFxuXG4gICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBtZW51SXRlbXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMucHJvcHMuYXV0aFNvdXJjZXMpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtcy5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuTWVudUl0ZW0sIHsgdmFsdWU6IGtleSwgcHJpbWFyeVRleHQ6IHRoaXMucHJvcHMuYXV0aFNvdXJjZXNba2V5XSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBfbWF0ZXJpYWxVaS5TZWxlY3RGaWVsZCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zdGF0ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZSxcbiAgICAgICAgICAgICAgICBmbG9hdGluZ0xhYmVsVGV4dDogJ0xvZ2luIGFzLi4uJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVJdGVtc1xuICAgICAgICApO1xuICAgIH1cbn0pO1xuXG52YXIgTXVsdGlBdXRoTW9kaWZpZXIgPSAoZnVuY3Rpb24gKF9QeWRpb1JlYWN0VUkkQWJzdHJhY3REaWFsb2dNb2RpZmllcikge1xuICAgIF9pbmhlcml0cyhNdWx0aUF1dGhNb2RpZmllciwgX1B5ZGlvUmVhY3RVSSRBYnN0cmFjdERpYWxvZ01vZGlmaWVyKTtcblxuICAgIGZ1bmN0aW9uIE11bHRpQXV0aE1vZGlmaWVyKCkge1xuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTXVsdGlBdXRoTW9kaWZpZXIpO1xuXG4gICAgICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKE11bHRpQXV0aE1vZGlmaWVyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKE11bHRpQXV0aE1vZGlmaWVyLCBbe1xuICAgICAgICBrZXk6ICdlbnJpY2hTdWJtaXRQYXJhbWV0ZXJzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGVucmljaFN1Ym1pdFBhcmFtZXRlcnMocHJvcHMsIHN0YXRlLCByZWZzLCBwYXJhbXMpIHtcblxuICAgICAgICAgICAgdmFyIHNlbGVjdGVkU291cmNlID0gcmVmcy5tdWx0aV9zZWxlY3Rvci5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgcGFyYW1zWydhdXRoX3NvdXJjZSddID0gc2VsZWN0ZWRTb3VyY2U7XG4gICAgICAgICAgICBpZiAocHJvcHMubWFzdGVyQXV0aFNvdXJjZSAmJiBzZWxlY3RlZFNvdXJjZSA9PT0gcHJvcHMubWFzdGVyQXV0aFNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1sndXNlcmlkJ10gPSBzZWxlY3RlZFNvdXJjZSArIHByb3BzLnVzZXJJZFNlcGFyYXRvciArIHBhcmFtc1sndXNlcmlkJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3JlbmRlckFkZGl0aW9uYWxDb21wb25lbnRzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckFkZGl0aW9uYWxDb21wb25lbnRzKHByb3BzLCBzdGF0ZSwgYWNjdW11bGF0b3IpIHtcblxuICAgICAgICAgICAgaWYgKCFwcm9wcy5hdXRoU291cmNlcykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGF1dGhTb3VyY2VzJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWNjdW11bGF0b3IudG9wLnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChNdWx0aUF1dGhTZWxlY3RvciwgX2V4dGVuZHMoeyByZWY6ICdtdWx0aV9zZWxlY3RvcicgfSwgcHJvcHMsIHsgcGFyZW50U3RhdGU6IHN0YXRlIH0pKSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gTXVsdGlBdXRoTW9kaWZpZXI7XG59KShQeWRpb1JlYWN0VUkuQWJzdHJhY3REaWFsb2dNb2RpZmllcik7XG5cbnZhciBDYWxsYmFja3MgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENhbGxiYWNrcygpIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENhbGxiYWNrcyk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKENhbGxiYWNrcywgbnVsbCwgW3tcbiAgICAgICAga2V5OiAnc2Vzc2lvbkxvZ291dCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXNzaW9uTG9nb3V0KCkge1xuXG4gICAgICAgICAgICBpZiAoUHlkaW8uZ2V0SW5zdGFuY2UoKS5QYXJhbWV0ZXJzLmdldChcIlBSRUxPR19VU0VSXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfcHlkaW9IdHRwQXBpMlsnZGVmYXVsdCddLmdldFJlc3RDbGllbnQoKS5zZXNzaW9uTG9nb3V0KClbJ2NhdGNoJ10oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWYgPSBweWRpby5QYXJhbWV0ZXJzLmdldCgnRlJPTlRFTkRfVVJMJykgKyAnL2xvZ291dCc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbG9naW5QYXNzd29yZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBsb2dpblBhc3N3b3JkKG1hbmFnZXIpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gW10gOiBhcmd1bWVudHNbMV07XG5cbiAgICAgICAgICAgIGlmIChQeWRpby5nZXRJbnN0YW5jZSgpLlBhcmFtZXRlcnMuZ2V0KFwiUFJFTE9HX1VTRVJcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBfcmVmID0gYXJnc1swXSB8fCB7fTtcblxuICAgICAgICAgICAgdmFyIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIFtdKTtcblxuICAgICAgICAgICAgcHlkaW8uVUkub3BlbkNvbXBvbmVudEluTW9kYWwoJ0F1dGhmcm9udENvcmVBY3Rpb25zJywgJ0xvZ2luUGFzc3dvcmREaWFsb2cnLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHsgYmx1cjogdHJ1ZSB9KSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gQ2FsbGJhY2tzO1xufSkoKTtcblxudmFyIFJlc2V0UGFzc3dvcmRSZXF1aXJlID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgIGRpc3BsYXlOYW1lOiAnUmVzZXRQYXNzd29yZFJlcXVpcmUnLFxuXG4gICAgbWl4aW5zOiBbUHlkaW9SZWFjdFVJLkFjdGlvbkRpYWxvZ01peGluLCBQeWRpb1JlYWN0VUkuU3VibWl0QnV0dG9uUHJvdmlkZXJNaXhpbiwgUHlkaW9SZWFjdFVJLkNhbmNlbEJ1dHRvblByb3ZpZGVyTWl4aW5dLFxuXG4gICAgc3RhdGljczoge1xuICAgICAgICBvcGVuOiBmdW5jdGlvbiBvcGVuKCkge1xuICAgICAgICAgICAgcHlkaW8uVUkub3BlbkNvbXBvbmVudEluTW9kYWwoJ0F1dGhmcm9udENvcmVBY3Rpb25zJywgJ1Jlc2V0UGFzc3dvcmRSZXF1aXJlJywgeyBibHVyOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gZ2V0RGVmYXVsdFByb3BzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGlhbG9nVGl0bGU6IHB5ZGlvLk1lc3NhZ2VIYXNoWydndWkudXNlci4xJ10sXG4gICAgICAgICAgICBkaWFsb2dJc01vZGFsOiB0cnVlLFxuICAgICAgICAgICAgZGlhbG9nU2l6ZTogJ3NtJ1xuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICB1c2VCbHVyOiBmdW5jdGlvbiB1c2VCbHVyKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuXG4gICAgY2FuY2VsOiBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIHB5ZGlvLkNvbnRyb2xsZXIuZmlyZUFjdGlvbignbG9naW4nKTtcbiAgICB9LFxuXG4gICAgc3VibWl0OiBmdW5jdGlvbiBzdWJtaXQoKSB7XG4gICAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICAgIHZhciB2YWx1ZVN1Ym1pdHRlZCA9IHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS52YWx1ZVN1Ym1pdHRlZDtcbiAgICAgICAgaWYgKHZhbHVlU3VibWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMucmVmcy5pbnB1dCAmJiB0aGlzLnJlZnMuaW5wdXQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFwaSA9IG5ldyBfcHlkaW9IdHRwUmVzdEFwaS5Ub2tlblNlcnZpY2VBcGkoX3B5ZGlvSHR0cEFwaTJbJ2RlZmF1bHQnXS5nZXRSZXN0Q2xpZW50KCkpO1xuICAgICAgICBhcGkucmVzZXRQYXNzd29yZFRva2VuKHZhbHVlKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzNC5zZXRTdGF0ZSh7IHZhbHVlU3VibWl0dGVkOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBtZXNzID0gdGhpcy5wcm9wcy5weWRpby5NZXNzYWdlSGFzaDtcbiAgICAgICAgdmFyIHZhbHVlU3VibWl0dGVkID0gdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLnZhbHVlU3VibWl0dGVkO1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICF2YWx1ZVN1Ym1pdHRlZCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnZGlhbG9nTGVnZW5kJyB9LFxuICAgICAgICAgICAgICAgICAgICBtZXNzWydndWkudXNlci4zJ11cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoX21hdGVyaWFsVWkuVGV4dEZpZWxkLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2JsdXJEaWFsb2dUZXh0RmllbGQnLFxuICAgICAgICAgICAgICAgICAgICByZWY6ICdpbnB1dCcsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdMYWJlbFRleHQ6IG1lc3NbJ2d1aS51c2VyLjQnXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdmFsdWVTdWJtaXR0ZWQgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIG1lc3NbJ2d1aS51c2VyLjUnXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxufSk7XG5cbnZhciBSZXNldFBhc3N3b3JkRGlhbG9nID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgIGRpc3BsYXlOYW1lOiAnUmVzZXRQYXNzd29yZERpYWxvZycsXG5cbiAgICBtaXhpbnM6IFtQeWRpb1JlYWN0VUkuQWN0aW9uRGlhbG9nTWl4aW4sIFB5ZGlvUmVhY3RVSS5TdWJtaXRCdXR0b25Qcm92aWRlck1peGluXSxcblxuICAgIHN0YXRpY3M6IHtcbiAgICAgICAgb3BlbjogZnVuY3Rpb24gb3BlbigpIHtcbiAgICAgICAgICAgIHB5ZGlvLlVJLm9wZW5Db21wb25lbnRJbk1vZGFsKCdBdXRoZnJvbnRDb3JlQWN0aW9ucycsICdSZXNldFBhc3N3b3JkRGlhbG9nJywgeyBibHVyOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gZ2V0RGVmYXVsdFByb3BzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGlhbG9nVGl0bGU6IHB5ZGlvLk1lc3NhZ2VIYXNoWydndWkudXNlci4xJ10sXG4gICAgICAgICAgICBkaWFsb2dJc01vZGFsOiB0cnVlLFxuICAgICAgICAgICAgZGlhbG9nU2l6ZTogJ3NtJ1xuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uIGdldEluaXRpYWxTdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWVTdWJtaXR0ZWQ6IGZhbHNlLCBmb3JtTG9hZGVkOiBmYWxzZSwgcGFzc1ZhbHVlOiBudWxsLCB1c2VySWQ6IG51bGwgfTtcbiAgICB9LFxuXG4gICAgdXNlQmx1cjogZnVuY3Rpb24gdXNlQmx1cigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcblxuICAgIHN1Ym1pdDogZnVuY3Rpb24gc3VibWl0KCkge1xuICAgICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgICB2YXIgcHlkaW8gPSB0aGlzLnByb3BzLnB5ZGlvO1xuXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnZhbHVlU3VibWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uRGlzbWlzcygpO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBweWRpby5QYXJhbWV0ZXJzLmdldCgnRlJPTlRFTkRfVVJMJykgKyAnL2xvZ2luJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBtZXNzID0gcHlkaW8uTWVzc2FnZUhhc2g7XG4gICAgICAgIHZhciBhcGkgPSBuZXcgX3B5ZGlvSHR0cFJlc3RBcGkuVG9rZW5TZXJ2aWNlQXBpKF9weWRpb0h0dHBBcGkyWydkZWZhdWx0J10uZ2V0UmVzdENsaWVudCgpKTtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgX3B5ZGlvSHR0cFJlc3RBcGkuUmVzdFJlc2V0UGFzc3dvcmRSZXF1ZXN0KCk7XG4gICAgICAgIHJlcXVlc3QuVXNlckxvZ2luID0gdGhpcy5zdGF0ZS51c2VySWQ7XG4gICAgICAgIHJlcXVlc3QuUmVzZXRQYXNzd29yZFRva2VuID0gcHlkaW8uUGFyYW1ldGVycy5nZXQoJ1VTRVJfQUNUSU9OX0tFWScpO1xuICAgICAgICByZXF1ZXN0Lk5ld1Bhc3N3b3JkID0gdGhpcy5zdGF0ZS5wYXNzVmFsdWU7XG4gICAgICAgIGFwaS5yZXNldFBhc3N3b3JkKHJlcXVlc3QpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXM1LnNldFN0YXRlKHsgdmFsdWVTdWJtaXR0ZWQ6IHRydWUgfSk7XG4gICAgICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBhbGVydChtZXNzWzI0MF0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgICAgICBQcm9taXNlLnJlc29sdmUocmVxdWlyZSgncHlkaW8nKS5yZXF1aXJlTGliKCdmb3JtJywgdHJ1ZSkpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXM2LnNldFN0YXRlKHsgZm9ybUxvYWRlZDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIG9uUGFzc0NoYW5nZTogZnVuY3Rpb24gb25QYXNzQ2hhbmdlKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgcGFzc1ZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICB9LFxuXG4gICAgb25Vc2VySWRDaGFuZ2U6IGZ1bmN0aW9uIG9uVXNlcklkQ2hhbmdlKGV2ZW50LCBuZXdWYWx1ZSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdXNlcklkOiBuZXdWYWx1ZSB9KTtcbiAgICB9LFxuXG4gICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBtZXNzID0gdGhpcy5wcm9wcy5weWRpby5NZXNzYWdlSGFzaDtcbiAgICAgICAgdmFyIF9zdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHZhciB2YWx1ZVN1Ym1pdHRlZCA9IF9zdGF0ZS52YWx1ZVN1Ym1pdHRlZDtcbiAgICAgICAgdmFyIGZvcm1Mb2FkZWQgPSBfc3RhdGUuZm9ybUxvYWRlZDtcbiAgICAgICAgdmFyIHBhc3NWYWx1ZSA9IF9zdGF0ZS5wYXNzVmFsdWU7XG4gICAgICAgIHZhciB1c2VySWQgPSBfc3RhdGUudXNlcklkO1xuXG4gICAgICAgIGlmICghdmFsdWVTdWJtaXR0ZWQgJiYgZm9ybUxvYWRlZCkge1xuXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2RpYWxvZ0xlZ2VuZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc1snZ3VpLnVzZXIuOCddXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KF9tYXRlcmlhbFVpLlRleHRGaWVsZCwge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdibHVyRGlhbG9nVGV4dEZpZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVzZXJJZCxcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdMYWJlbFRleHQ6IG1lc3NbJ2d1aS51c2VyLjQnXSxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25Vc2VySWRDaGFuZ2UuYmluZCh0aGlzKVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHlkaW9Gb3JtLlZhbGlkUGFzc3dvcmQsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYmx1ckRpYWxvZ1RleHRGaWVsZCcsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uUGFzc0NoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IG5hbWU6ICdwYXNzd29yZCcsIGxhYmVsOiBtZXNzWzE5OF0gfSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhc3NWYWx1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlU3VibWl0dGVkKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgbWVzc1snZ3VpLnVzZXIuNiddXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHlkaW9SZWFjdFVJLkxvYWRlciwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn0pO1xuXG5leHBvcnRzLkNhbGxiYWNrcyA9IENhbGxiYWNrcztcbmV4cG9ydHMuTG9naW5QYXNzd29yZERpYWxvZyA9IExvZ2luUGFzc3dvcmREaWFsb2c7XG5leHBvcnRzLlJlc2V0UGFzc3dvcmRSZXF1aXJlID0gUmVzZXRQYXNzd29yZFJlcXVpcmU7XG5leHBvcnRzLlJlc2V0UGFzc3dvcmREaWFsb2cgPSBSZXNldFBhc3N3b3JkRGlhbG9nO1xuZXhwb3J0cy5NdWx0aUF1dGhNb2RpZmllciA9IE11bHRpQXV0aE1vZGlmaWVyO1xuZXhwb3J0cy5MYW5ndWFnZVBpY2tlciA9IExhbmd1YWdlUGlja2VyO1xuIl19 diff --git a/frontend/front-srv/assets/core.authfront/res/build/AuthfrontCoreActions.js.gz b/frontend/front-srv/assets/core.authfront/res/build/AuthfrontCoreActions.js.gz index 05acc031b5a9b57b0c01d2642ae9d97026a298aa..a631604356b93d59c52e28ce19feb9a2fac24527 100644 GIT binary patch literal 15889 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 literal 16156 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 window.location.href = pydio.Parameters.get('FRONTEND_URL') + '/logout'); + .catch((e) => window.location.href = pydio.Parameters.get('FRONTEND_URL') + '/logout'); }