@esfaenza/extensions 15.2.35 → 15.2.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -85,7 +85,9 @@ export class AppEmbeddingExtensions {
85
85
  console.log(`Window message - navigate -> ${event?.data?.url}`);
86
86
  var newTab = event?.data?.newTab;
87
87
  var replaceState = event?.data?.replaceState;
88
- if (!window.location.href.includes(this.router.url)) {
88
+ // Controllo se il router sta seguendo la chiamata attuale. Escludo i query params che sono gli unici che possono essere seccati dai replaceState
89
+ // e che potrebbero fare del casino
90
+ if (!window.location.href.includes(this.router.url.split("?")[0])) {
89
91
  console.warn("Doppia chiamata di navigazione, ignoro il secondo evento scoordinato dal router");
90
92
  return;
91
93
  }
@@ -187,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
187
189
  type: Injectable,
188
190
  args: [{ providedIn: "root" }]
189
191
  }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.Router }, { type: i3.Location }]; } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUUvQixxR0FBcUc7QUFFckcsTUFBTSxPQUFPLHNCQUFzQjtJQWMvQixZQUFvQixVQUEwQixFQUFVLE1BQWMsRUFBVSxRQUFrQjtRQUE5RSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWjNGLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBRTNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFHM0Isb0JBQWUsR0FBdUMsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFFOUYsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFLbkMsSUFBSSxDQUFDLFVBQVUsR0FBMkMsTUFBTSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENB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QUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLElBQUksR0FBRyxFQUFFO1lBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGVBQWUsU0FBUyxLQUFLLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksSUFBSTtZQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7bUhBN01RLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRFQsTUFBTTsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBTZXJ2aWNlc1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZVwiO1xyXG5cclxuLy8gTGlicmFyaWVzXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuLyogQ2xhc3NlIGNoZSBjb250aWVuZSB0dXR0ZSBsZSBpbmZvcm1hemlvbmkgc3VsbCdlbWJlZGRpbmcgaW4gdW4gdW5pY28gY29udGVuaXRvcmUgcGVyIHNlbXBsaWNpdMOgICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIEFwcEVtYmVkZGluZ0V4dGVuc2lvbnMge1xyXG5cclxuICAgIHB1YmxpYyBzaWRlYmFyV2lkdGg6IG51bWJlciA9IDIzMDtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBFbWJlZGRpbmdMZXZlbDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBNYWluV2luZG93OiBhbnk7XHJcblxyXG4gICAgcHVibGljIE1lc3NhZ2VPYnNlcnZlcjogU3ViamVjdDx7IGV2ZW50OiBhbnksIGRhdGE6IGFueSB9PiA9IG5ldyBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfcmVsb2FkQWxsb3dlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGVkTW9kdWxlOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBtc2dTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24pIHtcclxuICAgICAgICB0aGlzLk1haW5XaW5kb3cgPSA8eyBwYXJlbnQ6IGFueSwgcG9zdE1lc3NhZ2U6IEZ1bmN0aW9uIH0+d2luZG93O1xyXG4gICAgICAgIHdoaWxlICh0aGlzLk1haW5XaW5kb3cucGFyZW50ICE9IHRoaXMuTWFpbldpbmRvdykge1xyXG4gICAgICAgICAgICB0aGlzLk1haW5XaW5kb3cgPSB0aGlzLk1haW5XaW5kb3cucGFyZW50O1xyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGluZ0xldmVsKys7XHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZE1vZHVsZSA9IHRoaXMubG9jYXRpb24ucGF0aCgpLm1hdGNoKC9tb2R1bGU9KFthLXpBLVpfXSspLylbMV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpXHJcbiAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5jb25maWd1cmVFbWJlZGRhYmlsaXR5KHRoaXMuTWFpbldpbmRvdywgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIElzUmVsb2FkQWxsb3dlZCgpIHtcclxuICAgICAgICBsZXQgcmV0ID0gdGhpcy5fcmVsb2FkQWxsb3dlZDtcclxuICAgICAgICB0aGlzLl9yZWxvYWRBbGxvd2VkID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkoKSB7XHJcbiAgICAgICAgd2luZG93Lm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIElnbm9ybyBpIG1pZWkgbWVzc2FnZ2kgZGF0byBjaGUgbWkgaW50ZXJlc3Nhbm8gc29sbyBxdWVsbGkgZGVnbGkgYWx0cmkgaWZyYW1lXHJcbiAgICAgICAgICAgIGlmIChldmVudC5zb3VyY2UgPT0gd2luZG93ICYmIGV2ZW50Py5kYXRhPy50eXBlICE9IFwibW9kYWwtb3BlblwiKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5NZXNzYWdlT2JzZXJ2ZXIubmV4dCh7IGV2ZW50OiBcIndpbmRvdy1tZXNzYWdlXCIsIGRhdGE6IGV2ZW50Py5kYXRhIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiYWxlcnRcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gYWxlcnQgLT4gTGV2ZWw6ICR7ZXZlbnQ/LmRhdGE/LmxldmVsfSwgTWVzc2FnZTogJHtldmVudD8uZGF0YT8ubXNnfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQ/LmRhdGE/LmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVN1Y2Nlc3MoZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiaW5mb1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlSW5mbyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJyZXBsYWNlLXN0YXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIHJlcGxhY2Utc3RhdGUgLT4gVXJsOiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoZXZlbnQ/LmRhdGE/LnVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJjb25maXJtXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGNvbmZpcm0gLT4gTGV2ZWw6ICR7ZXZlbnQ/LmRhdGE/LmxldmVsfSwgTWVzc2FnZTogJHtldmVudD8uZGF0YT8udGV4dH0sIFRpdGxlOiAke2V2ZW50Py5kYXRhPy50aXRsZX0sIElEOiAke2V2ZW50Py5kYXRhPy5ndWlkfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBzb3VyY2VXaW5kb3cgPSAoZXZlbnQuc291cmNlIGFzIFdpbmRvdyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmFzZVJlc3BvbnNlID0geyB0eXBlOiBcImNvbmZpcm0tcmVzcG9uc2VcIiwgZ3VpZDogZXZlbnQ/LmRhdGE/Lmd1aWQgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IHRydWUsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiBmYWxzZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIndhcm5pbmdcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBuYXZpZ2F0ZSAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3VGFiID0gZXZlbnQ/LmRhdGE/Lm5ld1RhYjtcclxuICAgICAgICAgICAgICAgIHZhciByZXBsYWNlU3RhdGUgPSBldmVudD8uZGF0YT8ucmVwbGFjZVN0YXRlXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRG9wcGlhIGNoaWFtYXRhIGRpIG5hdmlnYXppb25lLCBpZ25vcm8gaWwgc2Vjb25kbyBldmVudG8gc2Nvb3JkaW5hdG8gZGFsIHJvdXRlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1JlbGF0aXZlVXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2VVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHRoaXMucm91dGVyLnVybCwgJycpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1VybCA9IGJhc2VVcmwgKyBkZWNvZGVVUklDb21wb25lbnQobmV3UmVsYXRpdmVVcmwudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VTdGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IF9wdXNoZWQ6IHRydWUgfSwgXCJcIiwgbmV3VXJsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld1RhYilcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihuZXdVcmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlLWJhY2tcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUtYmFjayAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlzdG9yeS5zdGF0ZS5fcHVzaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVsb2FkQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVkaXJlY3RcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gcmVkaXJlY3QgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZXZlbnQ/LmRhdGE/LnVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTmF2aWdhdGlvbiAtPiAke2V2ZW50Py5kYXRhPy5pbnRlcm5hbE5hdmlnYXRpb24gPyBcIltpbnRlcm5hbF1cIiA6IFwiXCJ9ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJuYXZpZ2F0aW9uXCIsIGRhdGE6IGV2ZW50Py5kYXRhIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtb3BlblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXJTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3cmFwcGVyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1yaWdodFwiKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgT3BlbiAtPiBCYWNrZHJvcCBIZWlnaHQ6ICR7ZXZlbnQ/LmRhdGE/LmJhY2tkcm9wSGVpZ2h0fWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciB0b3BIZWlnaHQ6IG51bWJlciA9IDExNjsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgaWwgdG9wIGUgbCdpbml6aW8gZGVsbCdpZnJhbWUsIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIHJpZ2h0U3BhY2U6IG51bWJlciA9IHdyYXBwZXJQYWRkaW5nUmlnaHQ7IC8vIHZhbG9yZSBmaXNzbywgZGlzdGFuemEgZnJhIGxhIGZpbmUgZGVsbCdpZnJhbWUgZSBpbCBsYXRvIHNpbmlzdHJvIGRlbGxvIHNjaGVybW8sIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gdGhpcy5zaWRlYmFyV2lkdGggKyB3cmFwcGVyUGFkZGluZ0xlZnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbW1vblN0eWxlcyA9IFwicG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyBvcGFjaXR5OiAwLjU7IFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvd1wiLCBcImhpZGRlblwiLCBcImltcG9ydGFudFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgdG9wLmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtdG9wXCI7XHJcbiAgICAgICAgICAgICAgICB0b3Auc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6ICR7dG9wSGVpZ2h0fXB4OyB0b3A6IDA7IHdpZHRoOiBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZX1weCk7IGxlZnQ6ICR7bGVmdFNwYWNlfXB4YDtcclxuICAgICAgICAgICAgICAgIHRvcC5pZCA9IFwidG9wXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtbGVmdFwiO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogMTAwJTsgdG9wOiAwOyB3aWR0aDogJHtsZWZ0U3BhY2V9cHg7YDtcclxuICAgICAgICAgICAgICAgIGxlZnQuaWQgPSBcImxlZnRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICByaWdodC5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLXJpZ2h0XCI7XHJcbiAgICAgICAgICAgICAgICByaWdodC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogY2FsYygxMDAlIC0gJHt0b3BIZWlnaHR9cHgpOyB0b3A6ICR7dG9wSGVpZ2h0fXB4OyByaWdodDogMDsgd2lkdGg6ICR7cmlnaHRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQuaWQgPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtY2xvc2VcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgQ2xvc2VgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvd1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRvcClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJpZ2h0KVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvdy15XCIsIFwiYXV0b1wiLCBcImltcG9ydGFudFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVwbGFjZVN0YXRlKGJhc2VQYXRoOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gRXNlbXBpbyBiYXNlUGF0aDogcGFnZXNcclxuICAgICAgICAvLyBFc2VtcGlvIHVybDogcGFydGllcy9sZWFkc19zZWFyY2hcclxuXHJcbiAgICAgICAgLy8gTm9ybWFsaXp6YXppb25lIHNlbnphIHNsYXNoIHByaW1hIG8gZG9wb1xyXG4gICAgICAgIGJhc2VQYXRoID0gYmFzZVBhdGguZW5kc1dpdGgoXCIvXCIpID8gYmFzZVBhdGguc3Vic3RyaW5nKDAsIGJhc2VQYXRoLmxlbmd0aCAtMikgOiBiYXNlUGF0aDtcclxuICAgICAgICB1cmwgPSB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyB1cmwuc3Vic3RyaW5nKDEpIDogdXJsO1xyXG5cclxuICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShgJHtiYXNlUGF0aH0vJHt1cmx9YCk7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJyZXBsYWNlLXN0YXRlXCIsIHVybDogYHBhZ2VzL2VtYmVkLyR7dGhpcy5FbWJlZGRlZE1vZHVsZX0vJHt1cmx9YCB9LCBcIipcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZnJlc2hCb3VuZGFyaWVzT25NZW51Q29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gMjMwICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG5cclxuICAgICAgICBpZiAodG9wKSB7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgKGxlZnRTcGFjZSkgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBgY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgbGVmdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGxlZnRTcGFjZSArIFwicHhcIik7XHJcbiAgICB9XHJcbn0iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUUvQixxR0FBcUc7QUFFckcsTUFBTSxPQUFPLHNCQUFzQjtJQWMvQixZQUFvQixVQUEwQixFQUFVLE1BQWMsRUFBVSxRQUFrQjtRQUE5RSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWjNGLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBRTNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFHM0Isb0JBQWUsR0FBdUMsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFFOUYsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFLbkMsSUFBSSxDQUFDLFVBQVUsR0FBMkMsTUFBTSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENB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LENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0MsSUFBSSxHQUFHLEVBQUU7WUFDTCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxTQUFTLEtBQUssQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxJQUFJO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzttSEEvTVEsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlXCI7XHJcblxyXG4vLyBMaWJyYXJpZXNcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vKiBDbGFzc2UgY2hlIGNvbnRpZW5lIHR1dHRlIGxlIGluZm9ybWF6aW9uaSBzdWxsJ2VtYmVkZGluZyBpbiB1biB1bmljbyBjb250ZW5pdG9yZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgQXBwRW1iZWRkaW5nRXh0ZW5zaW9ucyB7XHJcblxyXG4gICAgcHVibGljIHNpZGViYXJXaWR0aDogbnVtYmVyID0gMjMwO1xyXG5cclxuICAgIHB1YmxpYyBFbWJlZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIEVtYmVkZGluZ0xldmVsOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIE1haW5XaW5kb3c6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgTWVzc2FnZU9ic2VydmVyOiBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+ID0gbmV3IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWxvYWRBbGxvd2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkZWRNb2R1bGU6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbikge1xyXG4gICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IDx7IHBhcmVudDogYW55LCBwb3N0TWVzc2FnZTogRnVuY3Rpb24gfT53aW5kb3c7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuTWFpbldpbmRvdy5wYXJlbnQgIT0gdGhpcy5NYWluV2luZG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IHRoaXMuTWFpbldpbmRvdy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkaW5nTGV2ZWwrKztcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGVkTW9kdWxlID0gdGhpcy5sb2NhdGlvbi5wYXRoKCkubWF0Y2goL21vZHVsZT0oW2EtekEtWl9dKykvKVsxXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlndXJlRW1iZWRkYWJpbGl0eSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZClcclxuICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLmNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkodGhpcy5NYWluV2luZG93LCB0aGlzLk1lc3NhZ2VPYnNlcnZlcilcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgSXNSZWxvYWRBbGxvd2VkKCkge1xyXG4gICAgICAgIGxldCByZXQgPSB0aGlzLl9yZWxvYWRBbGxvd2VkO1xyXG4gICAgICAgIHRoaXMuX3JlbG9hZEFsbG93ZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlndXJlRW1iZWRkYWJpbGl0eSgpIHtcclxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgLy8gSWdub3JvIGkgbWllaSBtZXNzYWdnaSBkYXRvIGNoZSBtaSBpbnRlcmVzc2FubyBzb2xvIHF1ZWxsaSBkZWdsaSBhbHRyaSBpZnJhbWVcclxuICAgICAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSA9PSB3aW5kb3cgJiYgZXZlbnQ/LmRhdGE/LnR5cGUgIT0gXCJtb2RhbC1vcGVuXCIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5uZXh0KHsgZXZlbnQ6IFwid2luZG93LW1lc3NhZ2VcIiwgZGF0YTogZXZlbnQ/LmRhdGEgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJhbGVydFwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBhbGVydCAtPiBMZXZlbDogJHtldmVudD8uZGF0YT8ubGV2ZWx9LCBNZXNzYWdlOiAke2V2ZW50Py5kYXRhPy5tc2d9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudD8uZGF0YT8ubGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlU3VjY2VzcyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIndhcm5pbmdcIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVdhcm5pbmcoZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJlcnJvclwiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IoZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbmZvXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVJbmZvKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcInJlcGxhY2Utc3RhdGVcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gcmVwbGFjZS1zdGF0ZSAtPiBVcmw6ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShldmVudD8uZGF0YT8udXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImNvbmZpcm1cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gY29uZmlybSAtPiBMZXZlbDogJHtldmVudD8uZGF0YT8ubGV2ZWx9LCBNZXNzYWdlOiAke2V2ZW50Py5kYXRhPy50ZXh0fSwgVGl0bGU6ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfSwgSUQ6ICR7ZXZlbnQ/LmRhdGE/Lmd1aWR9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHNvdXJjZVdpbmRvdyA9IChldmVudC5zb3VyY2UgYXMgV2luZG93KTtcclxuICAgICAgICAgICAgICAgIHZhciBiYXNlUmVzcG9uc2UgPSB7IHR5cGU6IFwiY29uZmlybS1yZXNwb25zZVwiLCBndWlkOiBldmVudD8uZGF0YT8uZ3VpZCB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQ/LmRhdGE/LmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKGV2ZW50Py5kYXRhPy50aXRsZSwgZXZlbnQ/LmRhdGE/LnRleHQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogdHJ1ZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGZhbHNlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZ1dpdGhDaG9pY2UoZXZlbnQ/LmRhdGE/LnRpdGxlLCBldmVudD8uZGF0YT8udGV4dCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiB0cnVlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogZmFsc2UsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIG5hdmlnYXRlIC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuICAgICAgICAgICAgICAgIHZhciBuZXdUYWIgPSBldmVudD8uZGF0YT8ubmV3VGFiO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlcGxhY2VTdGF0ZSA9IGV2ZW50Py5kYXRhPy5yZXBsYWNlU3RhdGVcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb250cm9sbG8gc2UgaWwgcm91dGVyIHN0YSBzZWd1ZW5kbyBsYSBjaGlhbWF0YSBhdHR1YWxlLiBFc2NsdWRvIGkgcXVlcnkgcGFyYW1zIGNoZSBzb25vIGdsaSB1bmljaSBjaGUgcG9zc29ubyBlc3NlcmUgc2VjY2F0aSBkYWkgcmVwbGFjZVN0YXRlXHJcbiAgICAgICAgICAgICAgICAvLyBlIGNoZSBwb3RyZWJiZXJvIGZhcmUgZGVsIGNhc2lub1xyXG4gICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwuc3BsaXQoXCI/XCIpWzBdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkRvcHBpYSBjaGlhbWF0YSBkaSBuYXZpZ2F6aW9uZSwgaWdub3JvIGlsIHNlY29uZG8gZXZlbnRvIHNjb29yZGluYXRvIGRhbCByb3V0ZXJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBuZXdSZWxhdGl2ZVVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2V2ZW50Py5kYXRhPy51cmxdKTtcclxuICAgICAgICAgICAgICAgIGxldCBiYXNlVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSh0aGlzLnJvdXRlci51cmwsICcnKTtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdVcmwgPSBiYXNlVXJsICsgZGVjb2RlVVJJQ29tcG9uZW50KG5ld1JlbGF0aXZlVXJsLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlU3RhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoeyBfcHVzaGVkOiB0cnVlIH0sIFwiXCIsIG5ld1VybCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXdUYWIpXHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4obmV3VXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0ZS1iYWNrXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIG5hdmlnYXRlLWJhY2sgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhpc3Rvcnkuc3RhdGUuX3B1c2hlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbG9hZEFsbG93ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcInJlZGlyZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIHJlZGlyZWN0IC0+ICR7ZXZlbnQ/LmRhdGE/LnVybH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGV2ZW50Py5kYXRhPy51cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQ/LmRhdGE/LnR5cGUgPT0gXCJuYXZpZ2F0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE5hdmlnYXRpb24gLT4gJHtldmVudD8uZGF0YT8uaW50ZXJuYWxOYXZpZ2F0aW9uID8gXCJbaW50ZXJuYWxdXCIgOiBcIlwifSAke2V2ZW50Py5kYXRhPy50aXRsZX1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5uZXh0KHsgZXZlbnQ6IFwibmF2aWdhdGlvblwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm1vZGFsLW9wZW5cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUod3JhcHBlcik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ0xlZnQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLWxlZnRcIikpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlclBhZGRpbmdSaWdodCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctcmlnaHRcIikpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE1vZGFsIE9wZW4gLT4gQmFja2Ryb3AgSGVpZ2h0OiAke2V2ZW50Py5kYXRhPy5iYWNrZHJvcEhlaWdodH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgdG9wSGVpZ2h0OiBudW1iZXIgPSAxMTY7IC8vIHZhbG9yZSBmaXNzbywgZGlzdGFuemEgZnJhIGlsIHRvcCBlIGwnaW5pemlvIGRlbGwnaWZyYW1lLCBub24gc2Fyw6AgbWFpIGRpdmVyc29cclxuICAgICAgICAgICAgICAgIHZhciByaWdodFNwYWNlOiBudW1iZXIgPSB3cmFwcGVyUGFkZGluZ1JpZ2h0OyAvLyB2YWxvcmUgZmlzc28sIGRpc3RhbnphIGZyYSBsYSBmaW5lIGRlbGwnaWZyYW1lIGUgaWwgbGF0byBzaW5pc3RybyBkZWxsbyBzY2hlcm1vLCBub24gc2Fyw6AgbWFpIGRpdmVyc29cclxuICAgICAgICAgICAgICAgIHZhciBsZWZ0U3BhY2U6IG51bWJlciA9IHRoaXMuc2lkZWJhcldpZHRoICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjb21tb25TdHlsZXMgPSBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogOTk5OTsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsgb3BhY2l0eTogMC41OyBcIjtcclxuXHJcbiAgICAgICAgICAgICAgICB3cmFwcGVyLnN0eWxlLnNldFByb3BlcnR5KFwib3ZlcmZsb3dcIiwgXCJoaWRkZW5cIiwgXCJpbXBvcnRhbnRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgdG9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICAgICAgICAgIHRvcC5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLXRvcFwiO1xyXG4gICAgICAgICAgICAgICAgdG9wLnN0eWxlLmNzc1RleHQgPSBjb21tb25TdHlsZXMgKyBgaGVpZ2h0OiAke3RvcEhlaWdodH1weDsgdG9wOiAwOyB3aWR0aDogY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpOyBsZWZ0OiAke2xlZnRTcGFjZX1weGA7XHJcbiAgICAgICAgICAgICAgICB0b3AuaWQgPSBcInRvcFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLWxlZnRcIjtcclxuICAgICAgICAgICAgICAgIGxlZnQuc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6IDEwMCU7IHRvcDogMDsgd2lkdGg6ICR7bGVmdFNwYWNlfXB4O2A7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LmlkID0gXCJsZWZ0XCI7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQuY2xhc3NOYW1lID0gXCJlbWJlZGRlZC1tb2RhbC1yaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQuc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6IGNhbGMoMTAwJSAtICR7dG9wSGVpZ2h0fXB4KTsgdG9wOiAke3RvcEhlaWdodH1weDsgcmlnaHQ6IDA7IHdpZHRoOiAke3JpZ2h0U3BhY2V9cHg7YDtcclxuICAgICAgICAgICAgICAgIHJpZ2h0LmlkID0gXCJyaWdodFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGVmdCk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJpZ2h0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm1vZGFsLWNsb3NlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIE1vZGFsIENsb3NlYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICB3cmFwcGVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwib3ZlcmZsb3dcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgdG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0b3BcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJpZ2h0XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0b3ApXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnQpXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyaWdodClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHJpZ2h0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKVxyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KFwib3ZlcmZsb3cteVwiLCBcImF1dG9cIiwgXCJpbXBvcnRhbnRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlcGxhY2VTdGF0ZShiYXNlUGF0aDogc3RyaW5nLCB1cmw6IHN0cmluZykge1xyXG4gICAgICAgIC8vIEVzZW1waW8gYmFzZVBhdGg6IHBhZ2VzXHJcbiAgICAgICAgLy8gRXNlbXBpbyB1cmw6IHBhcnRpZXMvbGVhZHNfc2VhcmNoXHJcblxyXG4gICAgICAgIC8vIE5vcm1hbGl6emF6aW9uZSBzZW56YSBzbGFzaCBwcmltYSBvIGRvcG9cclxuICAgICAgICBiYXNlUGF0aCA9IGJhc2VQYXRoLmVuZHNXaXRoKFwiL1wiKSA/IGJhc2VQYXRoLnN1YnN0cmluZygwLCBiYXNlUGF0aC5sZW5ndGggLTIpIDogYmFzZVBhdGg7XHJcbiAgICAgICAgdXJsID0gdXJsLnN0YXJ0c1dpdGgoXCIvXCIpID8gdXJsLnN1YnN0cmluZygxKSA6IHVybDtcclxuXHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoYCR7YmFzZVBhdGh9LyR7dXJsfWApO1xyXG4gICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwicmVwbGFjZS1zdGF0ZVwiLCB1cmw6IGBwYWdlcy9lbWJlZC8ke3RoaXMuRW1iZWRkZWRNb2R1bGV9LyR7dXJsfWAgfSwgXCIqXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWZyZXNoQm91bmRhcmllc09uTWVudUNvbGxhcHNlKCkge1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJtYWluLXdyYXBwZXJcIilbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgbGV0IHdyYXBwZXJTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3cmFwcGVyKTtcclxuICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ0xlZnQgPSBwYXJzZUludCh3cmFwcGVyU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLWxlZnRcIikpO1xyXG4gICAgICAgIHZhciBsZWZ0U3BhY2U6IG51bWJlciA9IDIzMCArIHdyYXBwZXJQYWRkaW5nTGVmdDtcclxuXHJcbiAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGVmdFwiKTtcclxuICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcCkge1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJsZWZ0XCIsIChsZWZ0U3BhY2UpICsgXCJweFwiKTtcclxuICAgICAgICAgICAgdG9wLnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIiwgYGNhbGMoMTAwJSAtICR7bGVmdFNwYWNlfXB4KWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxlZnQpXHJcbiAgICAgICAgICAgIGxlZnQuc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBsZWZ0U3BhY2UgKyBcInB4XCIpO1xyXG4gICAgfVxyXG59Il19
@@ -245,29 +245,13 @@ export class MessageService {
245
245
  return providerOverride;
246
246
  return "swal";
247
247
  }
248
- /**
249
- * Mostra un messaggio di avviso con richiesta di conferma e gestisce il risultato chiamato i callback **onsuccess** o **onerror**
250
- *
251
- * @param {string} title Titolo del messaggio
252
- * @param {string} text Contenuto del messaggio
253
- * @param {Function} onsuccess Callback da chimare su conferma
254
- * @param {Function} onerror Callback da chimare su errori
255
- */
256
- _simpleWarningWithChoice(title, text, onsuccess = null, onerror = null) {
257
- this.warningSwalWithCancel.fire(title, text).then((result) => {
258
- if (result.value && onsuccess)
259
- onsuccess();
260
- else if (onerror)
261
- onerror();
262
- });
263
- }
264
- simpleWarningWithChoice(title, text, onsuccess, onerror) {
265
- this.withChoiceBase("warning", title, text, onsuccess, onerror);
248
+ simpleWarningWithChoice(title, text, onsuccess, onerror, confirmtext = "", aborttext = '') {
249
+ this.withChoiceBase("warning", title, text, onsuccess, onerror, confirmtext, aborttext);
266
250
  }
267
- simpleSuccessWithChoice(title, text, onsuccess, onerror) {
268
- this.withChoiceBase("success", title, text, onsuccess, onerror);
251
+ simpleSuccessWithChoice(title, text, onsuccess, onerror, confirmtext = "", aborttext = '') {
252
+ this.withChoiceBase("success", title, text, onsuccess, onerror, confirmtext, aborttext);
269
253
  }
270
- withChoiceBase(level, title, text, onsuccess, onerror) {
254
+ withChoiceBase(level, title, text, onsuccess, onerror, confirmtext = "", aborttext = '') {
271
255
  if (this.Embedded) {
272
256
  let guid = this.hash.getGUID();
273
257
  this.GuidRepsonseFunctionsMap[guid] = { onsuccess, onerror };
@@ -283,7 +267,18 @@ export class MessageService {
283
267
  });
284
268
  }
285
269
  else
286
- (level == "warning" ? this._simpleWarningWithChoice.bind(this) : this._simpleSuccessWithChoice.bind(this))(title, text, onsuccess, onerror);
270
+ (level == "warning" ? this._simpleWarningWithChoice.bind(this) : this._simpleSuccessWithChoice.bind(this))(title, text, onsuccess, onerror, confirmtext, aborttext);
271
+ }
272
+ /**
273
+ * Mostra un messaggio di avviso con richiesta di conferma e gestisce il risultato chiamato i callback **onsuccess** o **onerror**
274
+ *
275
+ * @param {string} title Titolo del messaggio
276
+ * @param {string} text Contenuto del messaggio
277
+ * @param {Function} onsuccess Callback da chimare su conferma
278
+ * @param {Function} onerror Callback da chimare su errori
279
+ */
280
+ _simpleWarningWithChoice(title, text, onconfirm = null, onabort = null, confirmtext = "", aborttext = '') {
281
+ this._simpleWithChoice(this.warningSwalWithCancel, title, text, onconfirm, onabort, confirmtext, aborttext);
287
282
  }
288
283
  /**
289
284
  * Mostra un messaggio di success con richiesta di conferma e gestisce il risultato chiamato i callback **onconfirm** o **onabort**
@@ -296,6 +291,20 @@ export class MessageService {
296
291
  * @param {string} aborttext Testo del pulsante di annullamento
297
292
  */
298
293
  _simpleSuccessWithChoice(title, text, onconfirm = null, onabort = null, confirmtext = "", aborttext = '') {
294
+ this._simpleWithChoice(this.successSwalWithCancel, title, text, onconfirm, onabort, confirmtext, aborttext);
295
+ }
296
+ /**
297
+ * Metodo base per richiedere una scelta all'utente
298
+ *
299
+ * @param {any} swal Swal mixin da utilizzare per visualizzare il messaggio di choice
300
+ * @param {string} title Titolo del messaggio
301
+ * @param {string} text Contenuto del messaggio
302
+ * @param {Function} onconfirm Callback da chimare su conferma
303
+ * @param {Function} onabort Callback da chimare su annullamento
304
+ * @param {string} confirmtext Testo del pulsante di azione
305
+ * @param {string} aborttext Testo del pulsante di annullamento
306
+ */
307
+ _simpleWithChoice(swal, title, text, onconfirm = null, onabort = null, confirmtext = "", aborttext = '') {
299
308
  var configuration = {
300
309
  title: title,
301
310
  html: text
@@ -304,7 +313,7 @@ export class MessageService {
304
313
  configuration["confirmButtonText"] = confirmtext;
305
314
  if (aborttext)
306
315
  configuration["cancelButtonText"] = aborttext;
307
- this.successSwalWithCancel.fire(configuration).then((result) => {
316
+ swal.fire(configuration).then((result) => {
308
317
  if (result.value && onconfirm)
309
318
  onconfirm();
310
319
  else if (onabort)
@@ -420,4 +429,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
420
429
  }] }, { type: i1.BaseLocalization, decorators: [{
421
430
  type: Optional
422
431
  }] }, { type: i2.HashingService }]; } });
423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt2RSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTztBQUNQLE9BQU8sRUFBdUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVMxRDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBNEN2QiwyQkFBMkI7SUFDM0IsWUFBNkMsUUFBa0IsRUFBc0IsV0FBNkIsRUFBVSxJQUFvQjtRQUFuRyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQXNCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWdCO1FBM0NoSixzREFBc0Q7UUFDOUMsUUFBRyxHQUFHO1lBQ1YsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHO1lBQ3ZELFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsR0FBRztZQUNwRCxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEdBQUc7WUFDakQsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFB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QUFHLFFBQVEsQ0FBQyxDQUFDO1lBRWpELElBQUksV0FBVztnQkFBRSxXQUFXLEVBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLHdCQUF3QixDQUFDLFFBQWlCLEVBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFLGNBQXdCLElBQUksRUFBRSxjQUF3QixJQUFJO1FBQy9JLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxVQUFVO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFbkMsSUFBSSxXQUFXO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDSCxJQUFJLFFBQVE7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUvQixJQUFJLFdBQVc7Z0JBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEM7SUFDTCxDQUFDOzsyR0EvYlEsY0FBYyxrQkE2Q0ksUUFBUTsrR0E3QzFCLGNBQWMsY0FERCxNQUFNOzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBOENWLE1BQU07MkJBQUMsUUFBUTs7MEJBQStCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwsIEluamVjdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIEVzXHJcbmltcG9ydCB7IEJhc2VMb2NhbGl6YXRpb24gfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgc3dhbCBmcm9tIFwic3dlZXRhbGVydDJcIjtcclxuXHJcbi8vIFJYSlNcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtYXAsIHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQ2FsbFJlc3VsdCB9IGZyb20gXCIuLi9tb2RlbHMvQ2FsbFJlc3VsdFwiO1xyXG5cclxuLy8gU2Vydml6aVxyXG5pbXBvcnQgeyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIYXNoaW5nU2VydmljZSB9IGZyb20gXCIuL2V4dGVuc2lvbnMuaGFzaGluZy5zZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgZnVuemlvbmFsaXTDoCBkaSBhbGVydCBuZWkgdGlwaSBmb25kYW1lbnRhbGk6IHN1Y2Nlc3MsIGluZm8sIHdhcm5pbmcgZSBkYW5nZXJcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcclxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgICAvKiogT2dnZXR0byBzdGF0aWNvIGluIHN1cHBvcnRvIGFsbGEgbG9jYWxpenphemlvbmUgKi9cclxuICAgIHByaXZhdGUgbG9jID0ge1xyXG4gICAgICAgICdDb25maXJtJzogeyAnZW4tVVMnOiBcIkNvbmZpcm1cIiwgJ2l0LUlUJzogXCJDb25mZXJtYVwiLCB9LFxyXG4gICAgICAgICdDYW5jZWwnOiB7ICdlbi1VUyc6IFwiQ2FuY2VsXCIsICdpdC1JVCc6IFwiQW5udWxsYVwiLCB9LFxyXG4gICAgICAgICdDbG9zZSc6IHsgJ2VuLVVTJzogXCJDbG9zZVwiLCAnaXQtSVQnOiBcIkNoaXVkaVwiLCB9LFxyXG4gICAgICAgICdFcnJvcic6IHsgJ2VuLVVTJzogXCJFcnJvclwiLCAnaXQtSVQnOiBcIkVycm9yZVwiLCB9LFxyXG4gICAgICAgICdJbmZvJzogeyAnZW4tVVMnOiBcIkluZm9cIiwgJ2l0LUlUJzogXCJJbmZvcm1hemlvbmVcIiwgfSxcclxuICAgICAgICAnU3VjY2Vzcyc6IHsgJ2VuLVVTJzogXCJTdWNjZXNzXCIsICdpdC1JVCc6IFwiU3VjY2Vzc29cIiwgfSxcclxuICAgICAgICAnV2FybmluZyc6IHsgJ2VuLVVTJzogXCJXYXJuaW5nXCIsICdpdC1JVCc6IFwiQXR0ZW56aW9uZVwiLCB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgKi9cclxuICAgIHByaXZhdGUgd2FybmluZ1N3YWxXaXRoQ2FuY2VsOiBhbnk7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGRpIHVuIHdhcm5pbmcgY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSAqL1xyXG4gICAgcHJpdmF0ZSBzdWNjZXNzU3dhbFdpdGhDYW5jZWw6IGFueTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZGkgdW4gZXJyb3JlICovXHJcbiAgICBwcml2YXRlIGVycm9yU3dhbDogYW55O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biBtZXNzYWdnaW8gZGkgc3VjY2Vzc28gKi9cclxuICAgIHByaXZhdGUgc3VjY2Vzc1N3YWw6IGFueTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZGkgdW4gYXZ2aXNvICovXHJcbiAgICBwcml2YXRlIHdhcm5pbmdTd2FsOiBhbnk7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGRpIHVuIG1lc3NhZ2dpbyBpbmZvcm1hdGl2byAqL1xyXG4gICAgcHJpdmF0ZSBpbmZvU3dhbDogYW55O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIHBlciBsYSBzZXNzaW9uZSBzY2FkdXRhICovXHJcbiAgICBwcml2YXRlIGV4cGlyZWRTZXNzaW9uU3dhbDogYW55O1xyXG5cclxuICAgIC8qKiBHZXR0ZXIgcGVyIGlsIHNlcnZpemlvIGRlaSB0b2FzdC4gbmd4LXRvYXN0ciDDqCBmYXR0YSB0YWxtZW50ZSBtYWxlIGNoZSBsYSBzZXJ2aWNlIGRldidlc3NlcmUgcmVjdXBlcmF0YSBpbiBxdWVzdG8gbW9kbyAqL1xyXG4gICAgcHJpdmF0ZSBnZXQgdG9hc3RyKCk6IFRvYXN0clNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChUb2FzdHJTZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogU3VwcG9ydG8gYWxsJ0VtYmVkZGluZyAqL1xyXG4gICAgRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIE1haW5XaW5kb3c6IFdpbmRvdyA9IG51bGw7XHJcbiAgICBNZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4gPSBudWxsO1xyXG5cclxuICAgIC8qKiBDb3N0cnV0dG9yZSAgQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBAT3B0aW9uYWwoKSBwcml2YXRlIGxvY1Byb3ZpZGVyOiBCYXNlTG9jYWxpemF0aW9uLCBwcml2YXRlIGhhc2g6IEhhc2hpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbmZpZ3VyZUVtYmVkZGFiaWxpdHkobWFpbldpbmRvdzogV2luZG93LCBtZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4pIHtcclxuICAgICAgICB0aGlzLkVtYmVkZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLk1haW5XaW5kb3cgPSBtYWluV2luZG93O1xyXG4gICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyID0gbWVzc2FnZU9ic2VydmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQoKSB7XHJcbiAgICAgICAgbGV0IExPQ0FMRSA9IHRoaXMubG9jUHJvdmlkZXIgPyBhd2FpdCB0aGlzLmxvY1Byb3ZpZGVyLkxvY2FsZS5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpIDogJ2l0LUlUJztcclxuXHJcbiAgICAgICAgdGhpcy5leHBpcmVkU2Vzc2lvblN3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnTG9naW4nLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiBmYWxzZSxcclxuICAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1Y2Nlc3NTd2FsV2l0aENhbmNlbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJTdWNjZXNzXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTBcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDb25maXJtXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2FuY2VsXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIldhcm5pbmdcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b246IFwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xMFwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNvbmZpcm1cIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDYW5jZWxcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy53YXJuaW5nU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJXYXJuaW5nXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnN1Y2Nlc3NTd2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIlN1Y2Nlc3NcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNsb3NlXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwic3VjY2Vzc1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZXJyb3JTd2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIkVycm9yXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcImVycm9yXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pbmZvU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJJbmZvXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcImluZm9cIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXNlbnRhemlvbmUgZGkgdW4gc2VtcGxpY2UgbWVzc2FnZ2lvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBcclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBsZSBpbXBvc3RhemlvbmkgZGkgZGVmYXVsdCBlIHRvYXN0ciDDqCBhYmlsaXRhdG8sIHZpZW5lIG1vc3RyYXRvIGFsIGNlbnRyb1xyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIG92ZXJyaWRlIHN1IHRvYXN0ciB2dW9sIGRpcmUgY2hlIMOoIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhIGUgYXBwYXJlIGluIGFsdG8gYSBkZXN0cmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgbW9zdHJhcmVcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSBRdWFsb3JhIHNpYSB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSwgbmUgaW5kaWNhIGlsIHRpcG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZVN1Y2Nlc3ModGV4dDogc3RyaW5nLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsID0gbnVsbCwgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dDogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiYWxlcnRcIiwgbGV2ZWw6ICdzdWNjZXNzJywgbXNnOiB0ZXh0IH0sIFwiKlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLnN1Y2Nlc3NTd2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5zdWNjZXNzKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBpbmZvcm1hemlvbmVcclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlSW5mbyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJhbGVydFwiLCBsZXZlbDogJ2luZm8nLCBtc2c6IHRleHQgfSwgXCIqXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9zID0gdGhpcy50b2FzdHJPclN3YWwoc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSk7XHJcblxyXG4gICAgICAgIGlmICh0b3MgPT0gXCJzd2FsXCIpIHRoaXMuaW5mb1N3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLmluZm8odGV4dCwgbnVsbCwgeyBwb3NpdGlvbkNsYXNzOiB0b3MgPT0gXCJ0b2FzdHJcIiA/IFwidG9hc3QtdG9wLXJpZ2h0XCIgOiBcInRvYXN0LXRvcC1jZW50ZXJcIiwgdGltZU91dDogc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dCB8fCAodG9zID09IFwidG9hc3RyXCIgPyAwIDogNTAwMCksIGV4dGVuZGVkVGltZU91dDogdG9zID09IFwidG9hc3RyXCIgPyAwIDogMTAwMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXNlbnRhemlvbmUgZGkgdW4gc2VtcGxpY2UgbWVzc2FnZ2lvIGRpIGVycm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gbGUgaW1wb3N0YXppb25pIGRpIGRlZmF1bHQgZSB0b2FzdHIgw6ggYWJpbGl0YXRvLCB2aWVuZSBtb3N0cmF0byBhbCBjZW50cm9cclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBvdmVycmlkZSBzdSB0b2FzdHIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSBlIGFwcGFyZSBpbiBhbHRvIGEgZGVzdHJhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIG1vc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUgUXVhbG9yYSBzaWEgdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEsIG5lIGluZGljYSBpbCB0aXBvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVFcnJvcih0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJhbGVydFwiLCBsZXZlbDogJ2Vycm9yJywgbXNnOiB0ZXh0IH0sIFwiKlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLmVycm9yU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIuZXJyb3IodGV4dCwgbnVsbCwgeyBwb3NpdGlvbkNsYXNzOiB0b3MgPT0gXCJ0b2FzdHJcIiA/IFwidG9hc3QtdG9wLXJpZ2h0XCIgOiBcInRvYXN0LXRvcC1jZW50ZXJcIiwgdGltZU91dDogc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dCB8fCAodG9zID09IFwidG9hc3RyXCIgPyAwIDogNTAwMCksIGV4dGVuZGVkVGltZU91dDogdG9zID09IFwidG9hc3RyXCIgPyAwIDogMTAwMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXNlbnRhemlvbmUgZGkgdW4gc2VtcGxpY2UgbWVzc2FnZ2lvIGRpIGF2dmlzb1xyXG4gICAgICogXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gbGUgaW1wb3N0YXppb25pIGRpIGRlZmF1bHQgZSB0b2FzdHIgw6ggYWJpbGl0YXRvLCB2aWVuZSBtb3N0cmF0byBhbCBjZW50cm9cclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBvdmVycmlkZSBzdSB0b2FzdHIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSBlIGFwcGFyZSBpbiBhbHRvIGEgZGVzdHJhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIG1vc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUgUXVhbG9yYSBzaWEgdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEsIG5lIGluZGljYSBpbCB0aXBvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVXYXJuaW5nKHRleHQ6IHN0cmluZywgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCA9IG51bGwsIHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQ6IG51bWJlciA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImFsZXJ0XCIsIGxldmVsOiAnd2FybmluZycsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy53YXJuaW5nU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIud2FybmluZyh0ZXh0LCBudWxsLCB7IHBvc2l0aW9uQ2xhc3M6IHRvcyA9PSBcInRvYXN0clwiID8gXCJ0b2FzdC10b3AtcmlnaHRcIiA6IFwidG9hc3QtdG9wLWNlbnRlclwiLCB0aW1lT3V0OiBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0IHx8ICh0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiA1MDAwKSwgZXh0ZW5kZWRUaW1lT3V0OiB0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiAxMDAwIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmlwdWxpc2NlIHR1dHRpIGkgbWVzc2FnZ2kgcHJlc2VudGkgaW4gdW4gZGF0byBtb21lbnRvIHN1bGxvIHNjaGVybW9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFyTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuY2xlYXIoKTtcclxuICAgICAgICBzd2FsLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIGF2dmlzbyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1Byb21pc2V9IFJlc3RpdHVpc2NlIHVuYSBQcm9taXNlIGNvbCByaXN1bHRhdG8gc2NlbHRvIGRhbGwndXRlbnRlIChjb25mZXJtYSBvIG5vKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJvbWlzZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsLmZpcmUodGl0bGUsIHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW4gYmFzZSBhbGxhIGNvbmZpZ3VyYXppb25lIGF0dHVhbGUgZSBhbGwnZXZlbnR1YWxlIG92ZXJyaWRlIHBlciBsYSBjaGlhbWF0YSBkZWwgY2FzbyBpbmRpY2Egc2UgYmlzb2duYSB1dGlsaXp6YXJlIHRvYXN0ciBvIHN3ZWV0YWxlcnRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBwcm92aWRlck92ZXJyaWRlIE92ZXJyaWRlIGFsbGEgbW9kYWxpdMOgIGNvbmZpZ3VyYXRhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtcInRvYXN0clwiIHwgXCJzd2FsXCJ9IEluZGljYXppb25lIHN1IGNoZSBwcm92aWRlciBkaSBtZXNzYWdnaSBkaSBhdnZpc28gZGViYmEgZXNzZXJlIHV0aWxpenphdG9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b2FzdHJPclN3YWwocHJvdmlkZXJPdmVycmlkZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCk6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB7XHJcbiAgICAgICAgaWYgKHByb3ZpZGVyT3ZlcnJpZGUgIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyT3ZlcnJpZGU7XHJcbiAgICAgICAgcmV0dXJuIFwic3dhbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25zdWNjZXNzKiogbyAqKm9uZXJyb3IqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbnN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBjb25mZXJtYVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25lcnJvciBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGVycm9yaVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zaW1wbGVXYXJuaW5nV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uc3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBvbmVycm9yOiBGdW5jdGlvbiA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBvbnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICBvbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAob25lcnJvcilcclxuICAgICAgICAgICAgICAgIG9uZXJyb3IoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIEd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcDogeyBbaWQ6IHN0cmluZ106IHsgb25zdWNjZXNzOiBGdW5jdGlvbiwgb25lcnJvcjogRnVuY3Rpb24gfSB9ID0ge307XHJcblxyXG4gICAgcHVibGljIHNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzPzogRnVuY3Rpb24sIG9uZXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMud2l0aENob2ljZUJhc2UoXCJ3YXJuaW5nXCIsIHRpdGxlLCB0ZXh0LCBvbnN1Y2Nlc3MsIG9uZXJyb3IpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNpbXBsZVN1Y2Nlc3NXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzPzogRnVuY3Rpb24sIG9uZXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMud2l0aENob2ljZUJhc2UoXCJzdWNjZXNzXCIsIHRpdGxlLCB0ZXh0LCBvbnN1Y2Nlc3MsIG9uZXJyb3IpXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB3aXRoQ2hvaWNlQmFzZShsZXZlbDogXCJ3YXJuaW5nXCIgfCBcInN1Y2Nlc3NcIiwgdGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBvbnN1Y2Nlc3M/OiBGdW5jdGlvbiwgb25lcnJvcj86IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgbGV0IGd1aWQgPSB0aGlzLmhhc2guZ2V0R1VJRCgpO1xyXG4gICAgICAgICAgICB0aGlzLkd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcFtndWlkXSA9IHsgb25zdWNjZXNzLCBvbmVycm9yIH07XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiY29uZmlybVwiLCBsZXZlbCwgdGl0bGUsIHRleHQsIGd1aWQgfSwgXCIqXCIpO1xyXG5cclxuICAgICAgICAgICAgLy8gT2JzZXJ2ZSBzdWxsYSByaXNwb3N0YVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkludmlhdGEgY29uZmlybSByZXF1ZXN0IGFsbGEgcGFnaW5hIHByaW5jaXBhbGUsIGluIGF0dGVzYSBkaSByaXNwb3N0YS4uLlwiKVxyXG4gICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5waXBlKGZpbHRlcihldmVudCA9PiBldmVudD8uZGF0YT8udHlwZSA9PSBcImNvbmZpcm0tcmVzcG9uc2VcIiAmJiBldmVudD8uZGF0YT8uZ3VpZCA9PSBndWlkKSwgdGFrZSgxKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXZlbnQgbGlzdGVuZXIgc3Ugd2luZG93LW1lc3NhZ2UuIFJpc3Bvc3RhIHBlcmdpdW50YVwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmRhdGE/LnJlc3VsdCA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcFtndWlkXS5vbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy5yZXN1bHQgPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5HdWlkUmVwc29uc2VGdW5jdGlvbnNNYXBbZ3VpZF0ub25lcnJvcigpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIChsZXZlbCA9PSBcIndhcm5pbmdcIiA/IHRoaXMuX3NpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlLmJpbmQodGhpcykgOiB0aGlzLl9zaW1wbGVTdWNjZXNzV2l0aENob2ljZS5iaW5kKHRoaXMpKSh0aXRsZSwgdGV4dCwgb25zdWNjZXNzLCBvbmVycm9yKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIHN1Y2Nlc3MgY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25jb25maXJtKiogbyAqKm9uYWJvcnQqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbmNvbmZpcm0gQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBjb25mZXJtYVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25hYm9ydCBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGFubnVsbGFtZW50b1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm10ZXh0IFRlc3RvIGRlbCBwdWxzYW50ZSBkaSBhemlvbmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhYm9ydHRleHQgVGVzdG8gZGVsIHB1bHNhbnRlIGRpIGFubnVsbGFtZW50b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zaW1wbGVTdWNjZXNzV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uY29uZmlybTogRnVuY3Rpb24gPSBudWxsLCBvbmFib3J0OiBGdW5jdGlvbiA9IG51bGwsIGNvbmZpcm10ZXh0OiBzdHJpbmcgPSBcIlwiLCBhYm9ydHRleHQ6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgaHRtbDogdGV4dFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGNvbmZpcm10ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY29uZmlybUJ1dHRvblRleHRcIl0gPSBjb25maXJtdGV4dDtcclxuICAgICAgICBpZiAoYWJvcnR0ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY2FuY2VsQnV0dG9uVGV4dFwiXSA9IGFib3J0dGV4dDtcclxuXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3dhbFdpdGhDYW5jZWwuZmlyZShjb25maWd1cmF0aW9uKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAmJiBvbmNvbmZpcm0pXHJcbiAgICAgICAgICAgICAgICBvbmNvbmZpcm0oKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAob25hYm9ydClcclxuICAgICAgICAgICAgICAgIG9uYWJvcnQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgYXZ2aXNvIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgZSBnZXN0aXNjZSBpbCByaXN1bHRhdG8gY2hpYW1hdG8gaSBjYWxsYmFjayAqKm9uc3VjY2VzcyoqIG8gKipvbmVycm9yKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRpdG9sbyBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBDb250ZW51dG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb2JzZXJ2YWJsZVNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiBvZih0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KSkucGlwZShtYXAodCA9PiAhIXQudmFsdWUpKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY2hlIGxhIHNlc3Npb25lIGNvcnJlbnRlIMOoIHNjYWR1dGEgZSBwcm9wb25lIGFsbCd1dGVudGUgZGkgbmF2aWdhcmUgYWwgbG9naW4uIFF1YWxvcmEgbCd1dGVudGUgZGVjaWRlc3NlIGRpIGZhcmxvIFxyXG4gICAgICogdmVycsOgIGNoaWFtYXRhIGxhIGZ1bnppb25lIGRpIGNhbGxiYWNrICoqb25uYXZpZ2F0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbm5hdmlnYXRlIENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgbmF2aWdhemlvbmUgaW4gY29yc29cclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4cGlyZWRTZXNzaW9uTWVzc2FnZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9ubmF2aWdhdGU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuZXhwaXJlZFNlc3Npb25Td2FsLmZpcmUodGl0bGUsIHRleHQpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIG9ubmF2aWdhdGUpXHJcbiAgICAgICAgICAgICAgICBvbm5hdmlnYXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipDYWxsUmVzdWx0KipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtDYWxsUmVzdWx0fSByZXNwb25zZSBSaXNwb3N0YSByaWNldnV0YSBkYWwgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzc01zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdFN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0RmFpbHVyZSBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFuYWdlQ2FsbFJlc3VsdFJlc3BvbnNlKHJlc3BvbnNlOiBDYWxsUmVzdWx0LCBzdWNjZXNzTXNnOiBzdHJpbmcsIGVycm9yTXNnOiBzdHJpbmcsIHBvc3RTdWNjZXNzOiBGdW5jdGlvbiA9IG51bGwsIHBvc3RGYWlsdXJlOiBGdW5jdGlvbiA9IG51bGwpIHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzd2FybmluZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlV2FybmluZyhyZXNwb25zZS53YXJuaW5nKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHN1Y2Nlc3NNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZVN1Y2Nlc3Moc3VjY2Vzc01zZyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocG9zdFN1Y2Nlc3MpIHBvc3RTdWNjZXNzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaW1wbGVFcnJvcigoZXJyb3JNc2cgPyBlcnJvck1zZyArIFwiOiBcIiA6IFwiXCIpICsgcmVzcG9uc2UuaGFzZXJyb3IgPyByZXNwb25zZS5lcnJvciA6ICdbTk8gRVJSLl0nKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipzdHJpbmcqKiwgY29uc2lkZXJhbmRvIGNoZTpcclxuICAgICAqIFxyXG4gICAgICogU3RyaW5nYSB2dW90YSAtLT4gVHV0dG8gYmVuZVxyXG4gICAgICogXHJcbiAgICAgKiBTdHJpbmdhIHBpZW5hIC0tPiBRdWVzdG8gw6ggaWwgbWVzc2FnZ2lvIGQnZXJyb3JlIHBlciBjdWkgbGEgY2hpYW1hdGEgw6ggZmFsbGl0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVzcG9uc2UgUmlzcG9zdGEgcmljZXZ1dGEgZGFsIHNlcnZlclxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RTdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdEZhaWx1cmUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIG1hbmFnZVN0cmluZ1Jlc3BvbnNlKHJlc3BvbnNlOiBzdHJpbmcsIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgaWYgKHN1Y2Nlc3NNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZVN1Y2Nlc3Moc3VjY2Vzc01zZyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocG9zdFN1Y2Nlc3MpIHBvc3RTdWNjZXNzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGVycm9yTXNnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVFcnJvcihlcnJvck1zZyArIFwiOiBcIiArIHJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gaGVscGVyIHBlciBnZXN0aXJlIGluIG1hbmllcmEgc3RhbmRhcmRpenphdGEgdW5hIHJpc3Bvc3RhIGRpIHRpcG8gKipib29sZWFuKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJlc3BvbnNlIFJpc3Bvc3RhIHJpY2V2dXRhIGRhbCBzZXJ2ZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0U3VjY2VzcyBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RGYWlsdXJlIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYW5hZ2VTdHJpbmdSZXNwb25zZUJvb2wocmVzcG9uc2U6IGJvb2xlYW4sIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKGVycm9yTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0RmFpbHVyZSkgcG9zdEZhaWx1cmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt2RSxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFFL0IsT0FBTztBQUNQLE9BQU8sRUFBdUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVMxRDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBNEN2QiwyQkFBMkI7SUFDM0IsWUFBNkMsUUFBa0IsRUFBc0IsV0FBNkIsRUFBVSxJQUFvQjtRQUFuRyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQXNCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWdCO1FBM0NoSixzREFBc0Q7UUFDOUMsUUFBRyxHQUFHO1lBQ1YsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxHQUFHO1lBQ3ZELFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsR0FBRztZQUNwRCxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEdBQUc7WUFDakQsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFB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dWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBFc1xyXG5pbXBvcnQgeyBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XHJcblxyXG4vLyBSWEpTXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwLCB0YWtlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IENhbGxSZXN1bHQgfSBmcm9tIFwiLi4vbW9kZWxzL0NhbGxSZXN1bHRcIjtcclxuXHJcbi8vIFNlcnZpemlcclxuaW1wb3J0IHsgQXBwRW1iZWRkaW5nRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbnMuZW1iZWRkaW5nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSGFzaGluZ1NlcnZpY2UgfSBmcm9tIFwiLi9leHRlbnNpb25zLmhhc2hpbmcuc2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIGZvcm5pc2NlIGZ1bnppb25hbGl0w6AgZGkgYWxlcnQgbmVpIHRpcGkgZm9uZGFtZW50YWxpOiBzdWNjZXNzLCBpbmZvLCB3YXJuaW5nIGUgZGFuZ2VyXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXHJcbmV4cG9ydCBjbGFzcyBNZXNzYWdlU2VydmljZSB7XHJcblxyXG4gICAgLyoqIE9nZ2V0dG8gc3RhdGljbyBpbiBzdXBwb3J0byBhbGxhIGxvY2FsaXp6YXppb25lICovXHJcbiAgICBwcml2YXRlIGxvYyA9IHtcclxuICAgICAgICAnQ29uZmlybSc6IHsgJ2VuLVVTJzogXCJDb25maXJtXCIsICdpdC1JVCc6IFwiQ29uZmVybWFcIiwgfSxcclxuICAgICAgICAnQ2FuY2VsJzogeyAnZW4tVVMnOiBcIkNhbmNlbFwiLCAnaXQtSVQnOiBcIkFubnVsbGFcIiwgfSxcclxuICAgICAgICAnQ2xvc2UnOiB7ICdlbi1VUyc6IFwiQ2xvc2VcIiwgJ2l0LUlUJzogXCJDaGl1ZGlcIiwgfSxcclxuICAgICAgICAnRXJyb3InOiB7ICdlbi1VUyc6IFwiRXJyb3JcIiwgJ2l0LUlUJzogXCJFcnJvcmVcIiwgfSxcclxuICAgICAgICAnSW5mbyc6IHsgJ2VuLVVTJzogXCJJbmZvXCIsICdpdC1JVCc6IFwiSW5mb3JtYXppb25lXCIsIH0sXHJcbiAgICAgICAgJ1N1Y2Nlc3MnOiB7ICdlbi1VUyc6IFwiU3VjY2Vzc1wiLCAnaXQtSVQnOiBcIlN1Y2Nlc3NvXCIsIH0sXHJcbiAgICAgICAgJ1dhcm5pbmcnOiB7ICdlbi1VUyc6IFwiV2FybmluZ1wiLCAnaXQtSVQnOiBcIkF0dGVuemlvbmVcIiwgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZGkgdW4gd2FybmluZyBjb24gcmljaGllc3RhIGRpIGNvbmZlcm1hICovXHJcbiAgICBwcml2YXRlIHdhcm5pbmdTd2FsV2l0aENhbmNlbDogYW55O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biB3YXJuaW5nIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgKi9cclxuICAgIHByaXZhdGUgc3VjY2Vzc1N3YWxXaXRoQ2FuY2VsOiBhbnk7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGRpIHVuIGVycm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBlcnJvclN3YWw6IGFueTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZGkgdW4gbWVzc2FnZ2lvIGRpIHN1Y2Nlc3NvICovXHJcbiAgICBwcml2YXRlIHN1Y2Nlc3NTd2FsOiBhbnk7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGRpIHVuIGF2dmlzbyAqL1xyXG4gICAgcHJpdmF0ZSB3YXJuaW5nU3dhbDogYW55O1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBkaSB1biBtZXNzYWdnaW8gaW5mb3JtYXRpdm8gKi9cclxuICAgIHByaXZhdGUgaW5mb1N3YWw6IGFueTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZGkgdW4gd2FybmluZyBwZXIgbGEgc2Vzc2lvbmUgc2NhZHV0YSAqL1xyXG4gICAgcHJpdmF0ZSBleHBpcmVkU2Vzc2lvblN3YWw6IGFueTtcclxuXHJcbiAgICAvKiogR2V0dGVyIHBlciBpbCBzZXJ2aXppbyBkZWkgdG9hc3QuIG5neC10b2FzdHIgw6ggZmF0dGEgdGFsbWVudGUgbWFsZSBjaGUgbGEgc2VydmljZSBkZXYnZXNzZXJlIHJlY3VwZXJhdGEgaW4gcXVlc3RvIG1vZG8gKi9cclxuICAgIHByaXZhdGUgZ2V0IHRvYXN0cigpOiBUb2FzdHJTZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoVG9hc3RyU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFN1cHBvcnRvIGFsbCdFbWJlZGRpbmcgKi9cclxuICAgIEVtYmVkZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBNYWluV2luZG93OiBXaW5kb3cgPSBudWxsO1xyXG4gICAgTWVzc2FnZU9ic2VydmVyOiBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+ID0gbnVsbDtcclxuXHJcbiAgICAvKiogQ29zdHJ1dHRvcmUgIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihASW5qZWN0KEluamVjdG9yKSBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2NQcm92aWRlcjogQmFzZUxvY2FsaXphdGlvbiwgcHJpdmF0ZSBoYXNoOiBIYXNoaW5nU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25maWd1cmVFbWJlZGRhYmlsaXR5KG1haW5XaW5kb3c6IFdpbmRvdywgbWVzc2FnZU9ic2VydmVyOiBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+KSB7XHJcbiAgICAgICAgdGhpcy5FbWJlZGRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93ID0gbWFpbldpbmRvdztcclxuICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlciA9IG1lc3NhZ2VPYnNlcnZlcjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbml0KCkge1xyXG4gICAgICAgIGxldCBMT0NBTEUgPSB0aGlzLmxvY1Byb3ZpZGVyID8gYXdhaXQgdGhpcy5sb2NQcm92aWRlci5Mb2NhbGUucGlwZShmaXJzdCgpKS50b1Byb21pc2UoKSA6ICdpdC1JVCc7XHJcblxyXG4gICAgICAgIHRoaXMuZXhwaXJlZFNlc3Npb25Td2FsID0gc3dhbC5taXhpbih7XHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ0xvZ2luJyxcclxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogZmFsc2UsXHJcbiAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcclxuICAgICAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3dhbFdpdGhDYW5jZWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiU3VjY2Vzc1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJidG4gYnRuLXNlY29uZGFyeSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIsXHJcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uc1N0eWxpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ29uZmlybVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNhbmNlbFwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJXYXJuaW5nXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTBcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDb25maXJtXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2FuY2VsXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMud2FybmluZ1N3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiV2FybmluZ1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJ3YXJuaW5nXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWNjZXNzU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJTdWNjZXNzXCJdW0xPQ0FMRV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiBcImJ0biBidG4tcHJpbWFyeVwiLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBcImFwcC13cmFwXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnNTdHlsaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogdGhpcy5sb2NbXCJDbG9zZVwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBpY29uOiBcInN1Y2Nlc3NcIlxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmVycm9yU3dhbCA9IHN3YWwubWl4aW4oe1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5sb2NbXCJFcnJvclwiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJlcnJvclwiXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5mb1N3YWwgPSBzd2FsLm1peGluKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiSW5mb1wiXVtMT0NBTEVdLFxyXG4gICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidXR0b25zU3R5bGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2xvc2VcIl1bTE9DQUxFXSxcclxuICAgICAgICAgICAgaWNvbjogXCJpbmZvXCJcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBzdWNjZXNzb1xyXG4gICAgICogXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gbGUgaW1wb3N0YXppb25pIGRpIGRlZmF1bHQgZSB0b2FzdHIgw6ggYWJpbGl0YXRvLCB2aWVuZSBtb3N0cmF0byBhbCBjZW50cm9cclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBvdmVycmlkZSBzdSB0b2FzdHIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSBlIGFwcGFyZSBpbiBhbHRvIGEgZGVzdHJhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIG1vc3RyYXJlXHJcbiAgICAgKiBAcGFyYW0ge1widG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGx9IHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUgUXVhbG9yYSBzaWEgdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEsIG5lIGluZGljYSBpbCB0aXBvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW1wbGVTdWNjZXNzKHRleHQ6IHN0cmluZywgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZTogXCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbCA9IG51bGwsIHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQ6IG51bWJlciA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5FbWJlZGRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLk1haW5XaW5kb3cucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImFsZXJ0XCIsIGxldmVsOiAnc3VjY2VzcycsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy5zdWNjZXNzU3dhbC5maXJlKFwiXCIsIHRleHQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy50b2FzdHIuc3VjY2Vzcyh0ZXh0LCBudWxsLCB7IHBvc2l0aW9uQ2xhc3M6IHRvcyA9PSBcInRvYXN0clwiID8gXCJ0b2FzdC10b3AtcmlnaHRcIiA6IFwidG9hc3QtdG9wLWNlbnRlclwiLCB0aW1lT3V0OiBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0IHx8ICh0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiA1MDAwKSwgZXh0ZW5kZWRUaW1lT3V0OiB0b3MgPT0gXCJ0b2FzdHJcIiA/IDAgOiAxMDAwIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlc2VudGF6aW9uZSBkaSB1biBzZW1wbGljZSBtZXNzYWdnaW8gZGkgaW5mb3JtYXppb25lXHJcbiAgICAgKiBcclxuICAgICAqIFNlIHZpZW5lIGNoaWFtYXRvIGNvbiBsZSBpbXBvc3RhemlvbmkgZGkgZGVmYXVsdCBlIHRvYXN0ciDDqCBhYmlsaXRhdG8sIHZpZW5lIG1vc3RyYXRvIGFsIGNlbnRyb1xyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIG92ZXJyaWRlIHN1IHRvYXN0ciB2dW9sIGRpcmUgY2hlIMOoIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhIGUgYXBwYXJlIGluIGFsdG8gYSBkZXN0cmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgbW9zdHJhcmVcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSBRdWFsb3JhIHNpYSB1bmEgbm90aWZpY2Egc2Vjb25kYXJpYSwgbmUgaW5kaWNhIGlsIHRpcG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpbXBsZUluZm8odGV4dDogc3RyaW5nLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsID0gbnVsbCwgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dDogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiYWxlcnRcIiwgbGV2ZWw6ICdpbmZvJywgbXNnOiB0ZXh0IH0sIFwiKlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRvcyA9IHRoaXMudG9hc3RyT3JTd2FsKHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGUpO1xyXG5cclxuICAgICAgICBpZiAodG9zID09IFwic3dhbFwiKSB0aGlzLmluZm9Td2FsLmZpcmUoXCJcIiwgdGV4dCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5pbmZvKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBlcnJvcmVcclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlRXJyb3IodGV4dDogc3RyaW5nLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlOiBcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsID0gbnVsbCwgc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dDogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiYWxlcnRcIiwgbGV2ZWw6ICdlcnJvcicsIG1zZzogdGV4dCB9LCBcIipcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0b3MgPSB0aGlzLnRvYXN0ck9yU3dhbChzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlKTtcclxuXHJcbiAgICAgICAgaWYgKHRvcyA9PSBcInN3YWxcIikgdGhpcy5lcnJvclN3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLmVycm9yKHRleHQsIG51bGwsIHsgcG9zaXRpb25DbGFzczogdG9zID09IFwidG9hc3RyXCIgPyBcInRvYXN0LXRvcC1yaWdodFwiIDogXCJ0b2FzdC10b3AtY2VudGVyXCIsIHRpbWVPdXQ6IHNlY29uZGFyeU5vdGlmaWNhdGlvblRpbWVvdXQgfHwgKHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDUwMDApLCBleHRlbmRlZFRpbWVPdXQ6IHRvcyA9PSBcInRvYXN0clwiID8gMCA6IDEwMDAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVzZW50YXppb25lIGRpIHVuIHNlbXBsaWNlIG1lc3NhZ2dpbyBkaSBhdnZpc29cclxuICAgICAqIFxyXG4gICAgICogU2UgdmllbmUgY2hpYW1hdG8gY29uIGxlIGltcG9zdGF6aW9uaSBkaSBkZWZhdWx0IGUgdG9hc3RyIMOoIGFiaWxpdGF0bywgdmllbmUgbW9zdHJhdG8gYWwgY2VudHJvXHJcbiAgICAgKiBTZSB2aWVuZSBjaGlhbWF0byBjb24gb3ZlcnJpZGUgc3UgdG9hc3RyIHZ1b2wgZGlyZSBjaGUgw6ggdW5hIG5vdGlmaWNhIHNlY29uZGFyaWEgZSBhcHBhcmUgaW4gYWx0byBhIGRlc3RyYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBtb3N0cmFyZVxyXG4gICAgICogQHBhcmFtIHtcInRvYXN0clwiIHwgXCJzd2FsXCIgfCBudWxsfSBzZWNvbmRhcnlOb3RpZmljYXRpb25UeXBlIFF1YWxvcmEgc2lhIHVuYSBub3RpZmljYSBzZWNvbmRhcmlhLCBuZSBpbmRpY2EgaWwgdGlwb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2ltcGxlV2FybmluZyh0ZXh0OiBzdHJpbmcsIHNlY29uZGFyeU5vdGlmaWNhdGlvblR5cGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwgPSBudWxsLCBzZWNvbmRhcnlOb3RpZmljYXRpb25UaW1lb3V0OiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJhbGVydFwiLCBsZXZlbDogJ3dhcm5pbmcnLCBtc2c6IHRleHQgfSwgXCIqXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9zID0gdGhpcy50b2FzdHJPclN3YWwoc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVHlwZSk7XHJcblxyXG4gICAgICAgIGlmICh0b3MgPT0gXCJzd2FsXCIpIHRoaXMud2FybmluZ1N3YWwuZmlyZShcIlwiLCB0ZXh0KTtcclxuICAgICAgICBlbHNlIHRoaXMudG9hc3RyLndhcm5pbmcodGV4dCwgbnVsbCwgeyBwb3NpdGlvbkNsYXNzOiB0b3MgPT0gXCJ0b2FzdHJcIiA/IFwidG9hc3QtdG9wLXJpZ2h0XCIgOiBcInRvYXN0LXRvcC1jZW50ZXJcIiwgdGltZU91dDogc2Vjb25kYXJ5Tm90aWZpY2F0aW9uVGltZW91dCB8fCAodG9zID09IFwidG9hc3RyXCIgPyAwIDogNTAwMCksIGV4dGVuZGVkVGltZU91dDogdG9zID09IFwidG9hc3RyXCIgPyAwIDogMTAwMCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpcHVsaXNjZSB0dXR0aSBpIG1lc3NhZ2dpIHByZXNlbnRpIGluIHVuIGRhdG8gbW9tZW50byBzdWxsbyBzY2hlcm1vXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhck1lc3NhZ2VzKCkge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmNsZWFyKCk7XHJcbiAgICAgICAgc3dhbC5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBSZXN0aXR1aXNjZSB1bmEgUHJvbWlzZSBjb2wgcmlzdWx0YXRvIHNjZWx0byBkYWxsJ3V0ZW50ZSAoY29uZmVybWEgbyBubylcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb21pc2VXYXJuaW5nV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLndhcm5pbmdTd2FsV2l0aENhbmNlbC5maXJlKHRpdGxlLCB0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluIGJhc2UgYWxsYSBjb25maWd1cmF6aW9uZSBhdHR1YWxlIGUgYWxsJ2V2ZW50dWFsZSBvdmVycmlkZSBwZXIgbGEgY2hpYW1hdGEgZGVsIGNhc28gaW5kaWNhIHNlIGJpc29nbmEgdXRpbGl6emFyZSB0b2FzdHIgbyBzd2VldGFsZXJ0XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7XCJ0b2FzdHJcIiB8IFwic3dhbFwiIHwgbnVsbH0gcHJvdmlkZXJPdmVycmlkZSBPdmVycmlkZSBhbGxhIG1vZGFsaXTDoCBjb25maWd1cmF0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7XCJ0b2FzdHJcIiB8IFwic3dhbFwifSBJbmRpY2F6aW9uZSBzdSBjaGUgcHJvdmlkZXIgZGkgbWVzc2FnZ2kgZGkgYXZ2aXNvIGRlYmJhIGVzc2VyZSB1dGlsaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9hc3RyT3JTd2FsKHByb3ZpZGVyT3ZlcnJpZGU6IFwidG9hc3RyXCIgfCBcInN3YWxcIiB8IG51bGwpOiBcInRvYXN0clwiIHwgXCJzd2FsXCIge1xyXG4gICAgICAgIGlmIChwcm92aWRlck92ZXJyaWRlICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlck92ZXJyaWRlO1xyXG4gICAgICAgIHJldHVybiBcInN3YWxcIjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIEd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcDogeyBbaWQ6IHN0cmluZ106IHsgb25zdWNjZXNzOiBGdW5jdGlvbiwgb25lcnJvcjogRnVuY3Rpb24gfSB9ID0ge307XHJcblxyXG4gICAgcHVibGljIHNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25zdWNjZXNzPzogRnVuY3Rpb24sIG9uZXJyb3I/OiBGdW5jdGlvbiwgY29uZmlybXRleHQ6IHN0cmluZyA9IFwiXCIsIGFib3J0dGV4dDogc3RyaW5nID0gJycpIHtcclxuICAgICAgICB0aGlzLndpdGhDaG9pY2VCYXNlKFwid2FybmluZ1wiLCB0aXRsZSwgdGV4dCwgb25zdWNjZXNzLCBvbmVycm9yLCBjb25maXJtdGV4dCwgYWJvcnR0ZXh0KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaW1wbGVTdWNjZXNzV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uc3VjY2Vzcz86IEZ1bmN0aW9uLCBvbmVycm9yPzogRnVuY3Rpb24sIGNvbmZpcm10ZXh0OiBzdHJpbmcgPSBcIlwiLCBhYm9ydHRleHQ6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgdGhpcy53aXRoQ2hvaWNlQmFzZShcInN1Y2Nlc3NcIiwgdGl0bGUsIHRleHQsIG9uc3VjY2Vzcywgb25lcnJvciwgY29uZmlybXRleHQsIGFib3J0dGV4dClcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHdpdGhDaG9pY2VCYXNlKGxldmVsOiBcIndhcm5pbmdcIiB8IFwic3VjY2Vzc1wiLCB0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uc3VjY2Vzcz86IEZ1bmN0aW9uLCBvbmVycm9yPzogRnVuY3Rpb24sIGNvbmZpcm10ZXh0OiBzdHJpbmcgPSBcIlwiLCBhYm9ydHRleHQ6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpIHtcclxuICAgICAgICAgICAgbGV0IGd1aWQgPSB0aGlzLmhhc2guZ2V0R1VJRCgpO1xyXG4gICAgICAgICAgICB0aGlzLkd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcFtndWlkXSA9IHsgb25zdWNjZXNzLCBvbmVycm9yIH07XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiY29uZmlybVwiLCBsZXZlbCwgdGl0bGUsIHRleHQsIGd1aWQgfSwgXCIqXCIpO1xyXG5cclxuICAgICAgICAgICAgLy8gT2JzZXJ2ZSBzdWxsYSByaXNwb3N0YVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkludmlhdGEgY29uZmlybSByZXF1ZXN0IGFsbGEgcGFnaW5hIHByaW5jaXBhbGUsIGluIGF0dGVzYSBkaSByaXNwb3N0YS4uLlwiKVxyXG4gICAgICAgICAgICB0aGlzLk1lc3NhZ2VPYnNlcnZlci5waXBlKGZpbHRlcihldmVudCA9PiBldmVudD8uZGF0YT8udHlwZSA9PSBcImNvbmZpcm0tcmVzcG9uc2VcIiAmJiBldmVudD8uZGF0YT8uZ3VpZCA9PSBndWlkKSwgdGFrZSgxKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXZlbnQgbGlzdGVuZXIgc3Ugd2luZG93LW1lc3NhZ2UuIFJpc3Bvc3RhIHBlcmdpdW50YVwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmRhdGE/LnJlc3VsdCA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkd1aWRSZXBzb25zZUZ1bmN0aW9uc01hcFtndWlkXS5vbnN1Y2Nlc3MoKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy5yZXN1bHQgPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5HdWlkUmVwc29uc2VGdW5jdGlvbnNNYXBbZ3VpZF0ub25lcnJvcigpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIChsZXZlbCA9PSBcIndhcm5pbmdcIiA/IHRoaXMuX3NpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlLmJpbmQodGhpcykgOiB0aGlzLl9zaW1wbGVTdWNjZXNzV2l0aENob2ljZS5iaW5kKHRoaXMpKSh0aXRsZSwgdGV4dCwgb25zdWNjZXNzLCBvbmVycm9yLCBjb25maXJtdGV4dCwgYWJvcnR0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vc3RyYSB1biBtZXNzYWdnaW8gZGkgYXZ2aXNvIGNvbiByaWNoaWVzdGEgZGkgY29uZmVybWEgZSBnZXN0aXNjZSBpbCByaXN1bHRhdG8gY2hpYW1hdG8gaSBjYWxsYmFjayAqKm9uc3VjY2VzcyoqIG8gKipvbmVycm9yKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRpdG9sbyBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBDb250ZW51dG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25zdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgc3UgY29uZmVybWFcclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9uZXJyb3IgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBlcnJvcmlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc2ltcGxlV2FybmluZ1dpdGhDaG9pY2UodGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBvbmNvbmZpcm06IEZ1bmN0aW9uID0gbnVsbCwgb25hYm9ydDogRnVuY3Rpb24gPSBudWxsLCBjb25maXJtdGV4dDogc3RyaW5nID0gXCJcIiwgYWJvcnR0ZXh0OiBzdHJpbmcgPSAnJykge1xyXG4gICAgICAgIHRoaXMuX3NpbXBsZVdpdGhDaG9pY2UodGhpcy53YXJuaW5nU3dhbFdpdGhDYW5jZWwsIHRpdGxlLCB0ZXh0LCBvbmNvbmZpcm0sIG9uYWJvcnQsIGNvbmZpcm10ZXh0LCBhYm9ydHRleHQpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIHN1Y2Nlc3MgY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25jb25maXJtKiogbyAqKm9uYWJvcnQqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbmNvbmZpcm0gQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBjb25mZXJtYVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25hYm9ydCBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGFubnVsbGFtZW50b1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm10ZXh0IFRlc3RvIGRlbCBwdWxzYW50ZSBkaSBhemlvbmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhYm9ydHRleHQgVGVzdG8gZGVsIHB1bHNhbnRlIGRpIGFubnVsbGFtZW50b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zaW1wbGVTdWNjZXNzV2l0aENob2ljZSh0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIG9uY29uZmlybTogRnVuY3Rpb24gPSBudWxsLCBvbmFib3J0OiBGdW5jdGlvbiA9IG51bGwsIGNvbmZpcm10ZXh0OiBzdHJpbmcgPSBcIlwiLCBhYm9ydHRleHQ6IHN0cmluZyA9ICcnKSB7XHJcbiAgICAgICAgdGhpcy5fc2ltcGxlV2l0aENob2ljZSh0aGlzLnN1Y2Nlc3NTd2FsV2l0aENhbmNlbCwgdGl0bGUsIHRleHQsIG9uY29uZmlybSwgb25hYm9ydCwgY29uZmlybXRleHQsIGFib3J0dGV4dClcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBiYXNlIHBlciByaWNoaWVkZXJlIHVuYSBzY2VsdGEgYWxsJ3V0ZW50ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gc3dhbCBTd2FsIG1peGluIGRhIHV0aWxpenphcmUgcGVyIHZpc3VhbGl6emFyZSBpbCBtZXNzYWdnaW8gZGkgY2hvaWNlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbmNvbmZpcm0gQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBjb25mZXJtYVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb25hYm9ydCBDYWxsYmFjayBkYSBjaGltYXJlIHN1IGFubnVsbGFtZW50b1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm10ZXh0IFRlc3RvIGRlbCBwdWxzYW50ZSBkaSBhemlvbmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhYm9ydHRleHQgVGVzdG8gZGVsIHB1bHNhbnRlIGRpIGFubnVsbGFtZW50b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zaW1wbGVXaXRoQ2hvaWNlKHN3YWw6IGFueSwgdGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBvbmNvbmZpcm06IEZ1bmN0aW9uID0gbnVsbCwgb25hYm9ydDogRnVuY3Rpb24gPSBudWxsLCBjb25maXJtdGV4dDogc3RyaW5nID0gXCJcIiwgYWJvcnR0ZXh0OiBzdHJpbmcgPSAnJyl7XHJcbiAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgaHRtbDogdGV4dFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGNvbmZpcm10ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY29uZmlybUJ1dHRvblRleHRcIl0gPSBjb25maXJtdGV4dDtcclxuICAgICAgICBpZiAoYWJvcnR0ZXh0KVxyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uW1wiY2FuY2VsQnV0dG9uVGV4dFwiXSA9IGFib3J0dGV4dDtcclxuXHJcbiAgICAgICAgc3dhbC5maXJlKGNvbmZpZ3VyYXRpb24pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICYmIG9uY29uZmlybSlcclxuICAgICAgICAgICAgICAgIG9uY29uZmlybSgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChvbmFib3J0KVxyXG4gICAgICAgICAgICAgICAgb25hYm9ydCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9zdHJhIHVuIG1lc3NhZ2dpbyBkaSBhdnZpc28gY29uIHJpY2hpZXN0YSBkaSBjb25mZXJtYSBlIGdlc3Rpc2NlIGlsIHJpc3VsdGF0byBjaGlhbWF0byBpIGNhbGxiYWNrICoqb25zdWNjZXNzKiogbyAqKm9uZXJyb3IqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGl0b2xvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IENvbnRlbnV0byBkZWwgbWVzc2FnZ2lvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvYnNlcnZhYmxlU2ltcGxlV2FybmluZ1dpdGhDaG9pY2UodGl0bGU6IHN0cmluZywgdGV4dDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMud2FybmluZ1N3YWxXaXRoQ2FuY2VsLmZpcmUodGl0bGUsIHRleHQpKS5waXBlKG1hcCh0ID0+ICEhdC52YWx1ZSkpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gbWVzc2FnZ2lvIGRpIGF2dmlzbyBjaGUgbGEgc2Vzc2lvbmUgY29ycmVudGUgw6ggc2NhZHV0YSBlIHByb3BvbmUgYWxsJ3V0ZW50ZSBkaSBuYXZpZ2FyZSBhbCBsb2dpbi4gUXVhbG9yYSBsJ3V0ZW50ZSBkZWNpZGVzc2UgZGkgZmFybG8gXHJcbiAgICAgKiB2ZXJyw6AgY2hpYW1hdGEgbGEgZnVuemlvbmUgZGkgY2FsbGJhY2sgKipvbm5hdmlnYXRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaXRvbG8gZGVsIG1lc3NhZ2dpb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ29udGVudXRvIGRlbCBtZXNzYWdnaW9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9ubmF2aWdhdGUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBzdSBuYXZpZ2F6aW9uZSBpbiBjb3Jzb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXhwaXJlZFNlc3Npb25NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgb25uYXZpZ2F0ZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5leHBpcmVkU2Vzc2lvblN3YWwuZmlyZSh0aXRsZSwgdGV4dCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUgJiYgb25uYXZpZ2F0ZSlcclxuICAgICAgICAgICAgICAgIG9ubmF2aWdhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKkNhbGxSZXN1bHQqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0NhbGxSZXN1bHR9IHJlc3BvbnNlIFJpc3Bvc3RhIHJpY2V2dXRhIGRhbCBzZXJ2ZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTXNnIE1lc3NhZ2dpbyBkYSB2aXN1YWxpenphcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0U3VjY2VzcyBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RGYWlsdXJlIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBmYWxsaW1lbnRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzcG9uc2U6IENhbGxSZXN1bHQsIHN1Y2Nlc3NNc2c6IHN0cmluZywgZXJyb3JNc2c6IHN0cmluZywgcG9zdFN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCwgcG9zdEZhaWx1cmU6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXN3YXJuaW5nKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVXYXJuaW5nKHJlc3BvbnNlLndhcm5pbmcpO1xyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKChlcnJvck1zZyA/IGVycm9yTXNnICsgXCI6IFwiIDogXCJcIikgKyByZXNwb25zZS5oYXNlcnJvciA/IHJlc3BvbnNlLmVycm9yIDogJ1tOTyBFUlIuXScpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKnN0cmluZyoqLCBjb25zaWRlcmFuZG8gY2hlOlxyXG4gICAgICogXHJcbiAgICAgKiBTdHJpbmdhIHZ1b3RhIC0tPiBUdXR0byBiZW5lXHJcbiAgICAgKiBcclxuICAgICAqIFN0cmluZ2EgcGllbmEgLS0+IFF1ZXN0byDDqCBpbCBtZXNzYWdnaW8gZCdlcnJvcmUgcGVyIGN1aSBsYSBjaGlhbWF0YSDDqCBmYWxsaXRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZXNwb25zZSBSaXNwb3N0YSByaWNldnV0YSBkYWwgc2VydmVyXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzc01zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgc3VjY2Vzc29cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1zZyBNZXNzYWdnaW8gZGEgdmlzdWFsaXp6YXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdFN1Y2Nlc3MgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb3N0RmFpbHVyZSBDYWxsYmFjayBkYSBjaGltYXJlIGluIGNhc28gZGkgZmFsbGltZW50b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFuYWdlU3RyaW5nUmVzcG9uc2UocmVzcG9uc2U6IHN0cmluZywgc3VjY2Vzc01zZzogc3RyaW5nLCBlcnJvck1zZzogc3RyaW5nLCBwb3N0U3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBwb3N0RmFpbHVyZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzc01zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlU3VjY2VzcyhzdWNjZXNzTXNnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwb3N0U3VjY2VzcykgcG9zdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3JNc2cpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZUVycm9yKGVycm9yTXNnICsgXCI6IFwiICsgcmVzcG9uc2UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBoZWxwZXIgcGVyIGdlc3RpcmUgaW4gbWFuaWVyYSBzdGFuZGFyZGl6emF0YSB1bmEgcmlzcG9zdGEgZGkgdGlwbyAqKmJvb2xlYW4qKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVzcG9uc2UgUmlzcG9zdGEgcmljZXZ1dGEgZGFsIHNlcnZlclxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3NNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIHN1Y2Nlc3NvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNc2cgTWVzc2FnZ2lvIGRhIHZpc3VhbGl6emFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHBvc3RTdWNjZXNzIENhbGxiYWNrIGRhIGNoaW1hcmUgaW4gY2FzbyBkaSBzdWNjZXNzb1xyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcG9zdEZhaWx1cmUgQ2FsbGJhY2sgZGEgY2hpbWFyZSBpbiBjYXNvIGRpIGZhbGxpbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIG1hbmFnZVN0cmluZ1Jlc3BvbnNlQm9vbChyZXNwb25zZTogYm9vbGVhbiwgc3VjY2Vzc01zZzogc3RyaW5nLCBlcnJvck1zZzogc3RyaW5nLCBwb3N0U3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBwb3N0RmFpbHVyZTogRnVuY3Rpb24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGlmIChzdWNjZXNzTXNnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGVTdWNjZXNzKHN1Y2Nlc3NNc2cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RTdWNjZXNzKSBwb3N0U3VjY2VzcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvck1zZylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2ltcGxlRXJyb3IoZXJyb3JNc2cpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBvc3RGYWlsdXJlKSBwb3N0RmFpbHVyZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -864,29 +864,13 @@ class MessageService {
864
864
  return providerOverride;
865
865
  return "swal";
866
866
  }
867
- /**
868
- * Mostra un messaggio di avviso con richiesta di conferma e gestisce il risultato chiamato i callback **onsuccess** o **onerror**
869
- *
870
- * @param {string} title Titolo del messaggio
871
- * @param {string} text Contenuto del messaggio
872
- * @param {Function} onsuccess Callback da chimare su conferma
873
- * @param {Function} onerror Callback da chimare su errori
874
- */
875
- _simpleWarningWithChoice(title, text, onsuccess = null, onerror = null) {
876
- this.warningSwalWithCancel.fire(title, text).then((result) => {
877
- if (result.value && onsuccess)
878
- onsuccess();
879
- else if (onerror)
880
- onerror();
881
- });
882
- }
883
- simpleWarningWithChoice(title, text, onsuccess, onerror) {
884
- this.withChoiceBase("warning", title, text, onsuccess, onerror);
867
+ simpleWarningWithChoice(title, text, onsuccess, onerror, confirmtext = "", aborttext = '') {
868
+ this.withChoiceBase("warning", title, text, onsuccess, onerror, confirmtext, aborttext);
885
869
  }
886
- simpleSuccessWithChoice(title, text, onsuccess, onerror) {
887
- this.withChoiceBase("success", title, text, onsuccess, onerror);
870
+ simpleSuccessWithChoice(title, text, onsuccess, onerror, confirmtext = "", aborttext = '') {
871
+ this.withChoiceBase("success", title, text, onsuccess, onerror, confirmtext, aborttext);
888
872
  }
889
- withChoiceBase(level, title, text, onsuccess, onerror) {
873
+ withChoiceBase(level, title, text, onsuccess, onerror, confirmtext = "", aborttext = '') {
890
874
  if (this.Embedded) {
891
875
  let guid = this.hash.getGUID();
892
876
  this.GuidRepsonseFunctionsMap[guid] = { onsuccess, onerror };
@@ -903,7 +887,18 @@ class MessageService {
903
887
  });
904
888
  }
905
889
  else
906
- (level == "warning" ? this._simpleWarningWithChoice.bind(this) : this._simpleSuccessWithChoice.bind(this))(title, text, onsuccess, onerror);
890
+ (level == "warning" ? this._simpleWarningWithChoice.bind(this) : this._simpleSuccessWithChoice.bind(this))(title, text, onsuccess, onerror, confirmtext, aborttext);
891
+ }
892
+ /**
893
+ * Mostra un messaggio di avviso con richiesta di conferma e gestisce il risultato chiamato i callback **onsuccess** o **onerror**
894
+ *
895
+ * @param {string} title Titolo del messaggio
896
+ * @param {string} text Contenuto del messaggio
897
+ * @param {Function} onsuccess Callback da chimare su conferma
898
+ * @param {Function} onerror Callback da chimare su errori
899
+ */
900
+ _simpleWarningWithChoice(title, text, onconfirm = null, onabort = null, confirmtext = "", aborttext = '') {
901
+ this._simpleWithChoice(this.warningSwalWithCancel, title, text, onconfirm, onabort, confirmtext, aborttext);
907
902
  }
908
903
  /**
909
904
  * Mostra un messaggio di success con richiesta di conferma e gestisce il risultato chiamato i callback **onconfirm** o **onabort**
@@ -916,6 +911,20 @@ class MessageService {
916
911
  * @param {string} aborttext Testo del pulsante di annullamento
917
912
  */
918
913
  _simpleSuccessWithChoice(title, text, onconfirm = null, onabort = null, confirmtext = "", aborttext = '') {
914
+ this._simpleWithChoice(this.successSwalWithCancel, title, text, onconfirm, onabort, confirmtext, aborttext);
915
+ }
916
+ /**
917
+ * Metodo base per richiedere una scelta all'utente
918
+ *
919
+ * @param {any} swal Swal mixin da utilizzare per visualizzare il messaggio di choice
920
+ * @param {string} title Titolo del messaggio
921
+ * @param {string} text Contenuto del messaggio
922
+ * @param {Function} onconfirm Callback da chimare su conferma
923
+ * @param {Function} onabort Callback da chimare su annullamento
924
+ * @param {string} confirmtext Testo del pulsante di azione
925
+ * @param {string} aborttext Testo del pulsante di annullamento
926
+ */
927
+ _simpleWithChoice(swal, title, text, onconfirm = null, onabort = null, confirmtext = "", aborttext = '') {
919
928
  var configuration = {
920
929
  title: title,
921
930
  html: text
@@ -924,7 +933,7 @@ class MessageService {
924
933
  configuration["confirmButtonText"] = confirmtext;
925
934
  if (aborttext)
926
935
  configuration["cancelButtonText"] = aborttext;
927
- this.successSwalWithCancel.fire(configuration).then((result) => {
936
+ swal.fire(configuration).then((result) => {
928
937
  if (result.value && onconfirm)
929
938
  onconfirm();
930
939
  else if (onabort)
@@ -1124,7 +1133,9 @@ class AppEmbeddingExtensions {
1124
1133
  console.log(`Window message - navigate -> ${(_0 = event === null || event === void 0 ? void 0 : event.data) === null || _0 === void 0 ? void 0 : _0.url}`);
1125
1134
  var newTab = (_1 = event === null || event === void 0 ? void 0 : event.data) === null || _1 === void 0 ? void 0 : _1.newTab;
1126
1135
  var replaceState = (_2 = event === null || event === void 0 ? void 0 : event.data) === null || _2 === void 0 ? void 0 : _2.replaceState;
1127
- if (!window.location.href.includes(this.router.url)) {
1136
+ // Controllo se il router sta seguendo la chiamata attuale. Escludo i query params che sono gli unici che possono essere seccati dai replaceState
1137
+ // e che potrebbero fare del casino
1138
+ if (!window.location.href.includes(this.router.url.split("?")[0])) {
1128
1139
  console.warn("Doppia chiamata di navigazione, ignoro il secondo evento scoordinato dal router");
1129
1140
  return;
1130
1141
  }