raise-common-lib 0.0.226 → 0.0.228
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.
- package/bundles/raise-common-lib.umd.js +31 -15
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
- package/esm2015/lib/dashboard/dashboardPorlets.service.js +2 -2
- package/esm2015/lib/dashboard/dialog-group/download/index.component.js +2 -2
- package/esm2015/lib/dashboard/pane-group-new.component.js +2 -2
- package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
- package/esm2015/lib/float-box/index.component.js +19 -3
- package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
- package/esm5/lib/dashboard/dashboardPorlets.service.js +2 -2
- package/esm5/lib/dashboard/dialog-group/download/index.component.js +2 -2
- package/esm5/lib/dashboard/pane-group-new.component.js +2 -2
- package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
- package/esm5/lib/float-box/index.component.js +19 -3
- package/fesm2015/raise-common-lib.js +27 -12
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +27 -12
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +1 -1
- package/lib/dashboard/dashboardPorlets.service.d.ts +1 -1
- package/lib/dashboard/dialog-group/download/index.component.d.ts +1 -1
- package/lib/dashboard/pane-group-new.component.d.ts +2 -1
- package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +1 -1
- package/lib/float-box/index.component.d.ts +1 -0
- package/package.json +1 -1
- package/raise-common-lib.metadata.json +1 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as tslib_1 from "tslib";
|
|
7
7
|
import { Component, Inject, ChangeDetectorRef, Optional, } from "@angular/core";
|
|
8
|
-
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material";
|
|
8
|
+
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
|
|
9
9
|
import { ApiList } from "../../api";
|
|
10
10
|
import { DashboardService } from "../../dashboard.service";
|
|
11
11
|
import { DashboardPorletsService } from "../../dashboardPorlets.service";
|
|
@@ -769,4 +769,4 @@ if (false) {
|
|
|
769
769
|
*/
|
|
770
770
|
DataMartNewComponent.prototype.http;
|
|
771
771
|
}
|
|
772
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9kYXNoYm9hcmQtcHJvcGVydGllcy9kYXRhLW1hcnQtbmV3L2RhdGEtbWFydC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUNOLGlCQUFpQixFQUVqQixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFaEU7SUF1QkUsOEJBQ2tDLElBQVMsRUFDbEMsU0FBNkMsRUFDNUMsYUFBNEIsRUFDN0IsTUFBaUIsRUFDaEIsR0FBWSxFQUNiLGdCQUFrQyxFQUNsQyx1QkFBZ0QsRUFDL0MsR0FBc0IsRUFDUSxHQUFRLEVBQ0MsSUFBUztRQVYxRCxpQkFXSTtRQVY4QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNiLHFCQUFnQixHQUFo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Z0JBQ1AsZ0JBQWdCO2dCQUNoQix1QkFBdUI7Z0JBUDlCLGlCQUFpQjtnREE0Q2QsUUFBUSxZQUFJLE1BQU0sU0FBQyxTQUFTO2dEQUM1QixRQUFRLFlBQUksTUFBTSxTQUFDLGlCQUFpQjs7SUEwWnpDLDJCQUFDO0NBQUEsQUEzYkQsSUEyYkM7U0F0Ylksb0JBQW9COzs7SUFDL0IsMkNBQVk7O0lBQ1osd0NBQVM7O0lBQ1Qsb0NBQUs7O0lBQ0wsMENBQVc7O0lBQ1gsc0NBQU87O0lBRVAsMENBQXVCOztJQUN2Qix1Q0FBb0I7O0lBQ3BCLDRDQUF5Qjs7SUFDekIsd0NBQXFCOztJQUNyQixzQ0FBbUI7O0lBQ25CLDJDQUEyQjs7SUFDM0IsOENBQTJCOztJQUMzQix3Q0FBd0I7O0lBQ3hCLCtDQUE0Qjs7SUFDNUIsbURBQW1DOztJQWlUbkMsd0NBQTZEOztJQTlTM0Qsb0NBQXlDOztJQUN6Qyx5Q0FBb0Q7Ozs7O0lBQ3BELDZDQUFvQzs7SUFDcEMsc0NBQXdCOzs7OztJQUN4QixtQ0FBb0I7O0lBQ3BCLGdEQUF5Qzs7SUFDekMsdURBQXVEOzs7OztJQUN2RCxtQ0FBOEI7O0lBQzlCLG1DQUE4Qzs7Ozs7SUFDOUMsb0NBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIEluamVjdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9wdGlvbmFsLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IHsgQXBpTGlzdCB9IGZyb20gXCIuLi8uLi9hcGlcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkU2VydmljZSB9IGZyb20gXCIuLi8uLi9kYXNoYm9hcmQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSB9IGZyb20gXCIuLi8uLi9kYXNoYm9hcmRQb3JsZXRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgdGhyb3R0bGUgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEFQSV9TRVJWSUNFX1RPS0VOLCBQQkZfVE9LRU4gfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9JbmplY3Rpb25Ub2tlblwiO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRhdGEtbWFydC1uZXdcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGEtbWFydC1uZXcuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFNYXJ0TmV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICB0cmFuc2xhdGlvbjtcclxuICB1c2VySW5mbztcclxuICBsYW5nO1xyXG4gIGVudGl0eVR5cGU7XHJcbiAgY29uZmlnO1xyXG5cclxuICBwdWJsaWMgZmF0aGVyTGlzdCA9IFtdO1xyXG4gIHB1YmxpYyBzb25MaXN0ID0gW107XHJcbiAgcHVibGljIGdyYW5kc29uTGlzdCA9IFtdO1xyXG4gIHB1YmxpYyBmYXRoZXJJZCA9IFwiXCI7XHJcbiAgcHVibGljIHNvbklkcyA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEFsbCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBvcmdpbkdyYW5kRGF0YSA9IFtdO1xyXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYWNoZUVudGl0eVR5cGUgPSBcIlwiO1xyXG4gIHB1YmxpYyBpc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGF0YU1hcnROZXdDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBhcGk6IEFwaUxpc3QsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHB1YmxpYyBEYXNoYm9hcmRQb3JsZXRzU2VydmljZTogRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBCRl9UT0tFTikgcHVibGljIHBiZjogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUElfU0VSVklDRV9UT0tFTikgcHJpdmF0ZSBodHRwOiBhbnlcclxuICApIHt9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEluZm8oKTtcclxuICAgIHRoaXMuZ2V0U291cmNlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYmYuaW50cm9TdGVwLm5leHQoXCJuZXh0XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEluZm8oKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuICAgIHRoaXMudXNlckluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlckluZm9cIikpO1xyXG4gICAgdGhpcy5sYW5nID0gdGhpcy5wYmYuZ2V0TGFuZ3VhZ2VQYXJhbXMoKTtcclxuICAgIHRoaXMuY29uZmlnID1cclxuICAgICAgdGhpcy5kYXRhICYmIHRoaXMuZGF0YS5kYXNoYm9hcmRcclxuICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5kYXRhLmRhc2hib2FyZC5jb25maWcpXHJcbiAgICAgICAgOiB7fTtcclxuICB9XHJcbiAgZ2V0U291cmNlcygpIHtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB7XHJcbiAgICAgIGFjY291bnRJZDogdGhpcy51c2VySW5mby5hY2NvdW50SWQsXHJcbiAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmcsXHJcbiAgICAgIGRhc2hib2FyZFZlcnNpb246IDIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaS51cmxMaXN0LkdldFNvdXJjZXMsIGRhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnNvdXJjZXNEYXRhW3RoaXMuZGF0YS5kYXNoYm9hcmQuaWRdID0gcmVzO1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0U291cmNlc1JlcyA9IHJlcztcclxuICAgICAgICB0aGlzLmZhdGhlckxpc3QgPSByZXM7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhbWFydElkKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZmF0aGVySWQgPSB0aGlzLmNvbmZpZy5kYXRhbWFydElkO1xyXG4gICAgICAgICAgdGhpcy5zb25JZHMgPSB0aGlzLmNvbmZpZy5kYXRhbWFydFZpZXdJZFxyXG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLmRhdGFtYXJ0Vmlld0lkLnNwbGl0KFwiLFwiKVxyXG4gICAgICAgICAgICA6IHRoaXMuY29uZmlnLnZpZXdzXHJcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcudmlld3MubWFwKChpdGVtKSA9PiBpdGVtLmRhdGFtYXJ0Vmlld0lkKVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgbGV0IGRhdGFzb3VyY2UgPSByZXMuZmluZCgoZWwpID0+IGVsLmlkID09IHRoaXMuZmF0aGVySWQpO1xyXG4gICAgICAgICAgaWYgKGRhdGFzb3VyY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRkYXRhTWFydChkYXRhc291cmNlLCB0cnVlKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNvbmZpZy5kYXRhbWFydElkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgPSB0aGlzLmVudGl0eVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBkYXRhdmlldyA9IGRhdGFzb3VyY2Uudmlld3MuZmlsdGVyKChlbCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLnNvbklkcy5pbmNsdWRlcyhlbC5pZClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVJdGVtQ2hhbmdlKGRhdGF2aWV3LCB0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRTZWxlY3RlZEFsbFN0YXR1cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkQWxsU3RhdHVzKCkge1xyXG4gICAgbGV0IG51bSA9IDA7XHJcbiAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoc29uKSA9PiB7XHJcbiAgICAgIGlmIChzb24uY2hlY2tlZCAmJiBzb24ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgIG51bSsrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChudW0gPT09IHRoaXMuc29uTGlzdC5sZW5ndGggLSAxKSB0aGlzLnNlbGVjdGVkQWxsID0gdHJ1ZTtcclxuICAgIGVsc2UgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmV4dFN0ZXAoKSB7XHJcbiAgICB0aGlzLnBiZi5pbnRyb1N0ZXAubmV4dChcIm5leHRcIik7XHJcbiAgfVxyXG5cclxuICBnZXRkYXRhTWFydChpdGVtLCBpc0luaXQgPSBmYWxzZSkge1xyXG4gICAgaWYgKHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY2FjaGVFbnRpdHlUeXBlID09PSBpdGVtLmVudGl0eVR5cGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICAhaXNJbml0ICYmXHJcbiAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmXHJcbiAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICE9PSBpdGVtLmVudGl0eVR5cGVcclxuICAgICkge1xyXG4gICAgICBjb25zdCBfdGl0bGUgPVxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24uQVJFX1lPVV9TVVJFX1RPX0NIQU5HRV9EQVRBX01BUlQgfHxcclxuICAgICAgICBcIi5BcmUgeW91IHN1cmUgdG8gY2hhbmdlIGVudGl0eSB0eXBlIG9mIGRhdGEgbWFydD8gRGFzaGJvYXJkIHdpbGwgYmUgcmVzZXQgc2luY2UgZW50aXR5IHR5cGUgaXMgY2hhbmdlZC5cIjtcclxuICAgICAgY29uc3QgX25vID0gdGhpcy50cmFuc2xhdGlvbi5OTyB8fCBcIi5OT1wiO1xyXG4gICAgICBjb25zdCBfeWVzID0gdGhpcy50cmFuc2xhdGlvbi5ZRVMgfHwgXCIuWUVTXCI7XHJcbiAgICAgIC8vIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubGF5b3V0VXRpbHNTZXJ2aWNlLmFsZXJ0RWxlbWVudChcclxuICAgICAgLy8gXHR0aGlzLnRyYW5zbGF0aW9uLldBUk5JTkcgfHwgXCIuV0FSTklOR1wiLFxyXG4gICAgICAvLyBcdF90aXRsZSxcclxuICAgICAgLy8gXHRfbm8sXHJcbiAgICAgIC8vIFx0X3llcyxcclxuICAgICAgLy8gXHR0cnVlLFxyXG4gICAgICAvLyBcdHRydWUsXHJcbiAgICAgIC8vIFx0XCI0ODBweFwiLFxyXG4gICAgICAvLyBcdFwiMzI0cHhcIlxyXG4gICAgICAvLyApO1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NvbW1vbkRpbGFvZyh7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRpb24uV0FSTklORyB8fCBcIi5XQVJOSU5HXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IF90aXRsZSxcclxuICAgICAgICBzYXZlQnRuTGFiZWw6IF95ZXMsXHJcbiAgICAgICAgY2FuY2VsQnRuTGFiZWw6IF9ubyxcclxuICAgICAgfSk7XHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXMpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RmF0aGVySWQoaXRlbSwgaXNJbml0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmF0aGVySWQoaXRlbSwgaXNJbml0KSB7XHJcbiAgICB0aGlzLmZhdGhlcklkID0gaXRlbS5pZDtcclxuICAgIHRoaXMuZW50aXR5VHlwZSA9IGl0ZW0uZW50aXR5VHlwZTtcclxuICAgIGxldCBpc0ZpZ3VyZXNDaGVja2VkID0gZmFsc2U7XHJcbiAgICBsZXQgaXNPdGhlckNoZWNrZWQgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgaXRlbS52aWV3cy5maW5kKFxyXG4gICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmIHRoaXMuc29uSWRzLmluY2x1ZGVzKGl0ZW0uaWQpXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBpc0ZpZ3VyZXNDaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgaXRlbS52aWV3cy5maW5kKFxyXG4gICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmIHRoaXMuc29uSWRzLmluY2x1ZGVzKGl0ZW0uaWQpXHJcbiAgICAgIClcclxuICAgIClcclxuICAgICAgaXNPdGhlckNoZWNrZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuc29uTGlzdCA9IGl0ZW0udmlld3MubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCBpc0Rpc2FibGVkID1cclxuICAgICAgICAoaXNGaWd1cmVzQ2hlY2tlZCAmJiBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHx8XHJcbiAgICAgICAgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIiAmJiBpc090aGVyQ2hlY2tlZCk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICBjaGVja2VkOlxyXG4gICAgICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IHRoaXMuZW50aXR5VHlwZVxyXG4gICAgICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgICAgIDogdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZCksXHJcbiAgICAgICAgZGlzYWJsZWQ6XHJcbiAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgICAgID8gZmFsc2VcclxuICAgICAgICAgICAgOiBpc0Rpc2FibGVkLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgPSBpdGVtLmVudGl0eVR5cGU7XHJcblxyXG4gICAgaWYgKCFpc0luaXQpIHtcclxuICAgICAgdGhpcy5zb25JZHMgPSBbXTtcclxuICAgICAgdGhpcy5ncmFuZHNvbkxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGxEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IGl0ZW0uZW50aXR5VHlwZSkge1xyXG4gICAgICAgIHRoaXMuc29uTGlzdCA9IGl0ZW0udmlld3MubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSXRlbUNoYW5nZShkYXRhLCB2YWw/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWRhdGEpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zb25JZHMucHVzaChpdGVtLmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0udGFibGVzKSkge1xyXG4gICAgICAgICAgICBpdGVtLnRhYmxlcy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5ncmFuZHNvbkxpc3Quc29tZSgoZWwpID0+IGVsLmlkID09PSBjaGlsZC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JhbmRzb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZmluYW5jaWFsIGZpZ3VyZXMgY2Fu4oCZdCBiZSBzZWxlY3RlZCB0b2dldGhlciB3aXRoIG90aGVyIGdyb3Vwc1xyXG4gICAgICAgIGlmIChkYXRhLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgIXRoaXMuc29uTGlzdC5maW5kKFxyXG4gICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNoZWNrZWQgJiYgaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YS50YWJsZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JhbmRzb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5zb25JZHMuaW5jbHVkZXMoZGF0YS5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuc29uSWRzLnB1c2goZGF0YS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNTZWxlY3RBbGxEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5pZCA9PSBkYXRhLmlkKSB7XHJcbiAgICAgICAgICBpdGVtLmNoZWNrZWQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKHNvbkl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IHNvbkl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAuLi5zb25JdGVtLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZGF0YS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmXHJcbiAgICAgICAgIXRoaXMuc29uTGlzdC5maW5kKFxyXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCAmJiBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCJcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChvYmopID0+IHtcclxuICAgICAgICAgIGlmIChvYmoubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgb2JqLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zb25JZHMgPSB0aGlzLnNvbklkcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gZGF0YS5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFNlbGVjdGVkQWxsU3RhdHVzKCk7XHJcbiAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyYW5kc29uTGlzdCkpO1xyXG4gICAgaWYgKCF0aGlzLnJlZltcImRlc3Ryb3llZFwiXSkge1xyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcztcclxuICAgIH1cclxuICB9XHJcbiAgc2VsZWN0QWxsKHZhbCkge1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncmFuZHNvbkxpc3QgPSBbXTtcclxuICAgIHRoaXMuc29uSWRzID0gW107XHJcbiAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBpdGVtLmNoZWNrZWQgPSB2YWw7XHJcbiAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICBpZiAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB7XHJcbiAgICAgICAgICBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zb25JZHMucHVzaChpdGVtLmlkKTtcclxuICAgICAgICBpdGVtLnRhYmxlcy5mb3JFYWNoKChzb25JdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gc29uSXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgLi4uc29uSXRlbSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JnaW5HcmFuZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JhbmRzb25MaXN0KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9GaWx0ZXIgPSB0aHJvdHRsZSgodmFsKSA9PiB0aGlzLmRvU2VhcmNoKHZhbCksIDIwMCk7XHJcbiAgcHVibGljIGRvU2VhcmNoKHZhbCkge1xyXG4gICAgbGV0IHRlbXBMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLm9yZ2luR3JhbmREYXRhKSk7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gdGVtcExpc3QuZmlsdGVyKChpdGVtKSA9PlxyXG4gICAgICAgIGl0ZW0ubGFuZ1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IHRlbXBMaXN0O1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyDkv53lrZjlvLnnqpfnrZvpgInmlbDmja5cclxuICBzYXZlRGF0YSgpIHtcclxuICAgIHRoaXMucGJmLmludHJvU3RlcC5uZXh0KFwiY29tcGxldGVcIik7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgY29uZmlnO1xyXG4gICAgbGV0IGRhdGFtYXJ0Vmlld0NvZGUgPSB0aGlzLnNvbkxpc3QuZmlsdGVyKChlbCkgPT5cclxuICAgICAgdGhpcy5zb25JZHMuaW5jbHVkZXMoZWwuaWQpXHJcbiAgICApO1xyXG4gICAgY29uZmlnID0ge1xyXG4gICAgICBkYXRhbWFydElkOiB0aGlzLmZhdGhlcklkLFxyXG4gICAgICBkYXRhbWFydFZpZXdJZDogdGhpcy5zb25JZHMuam9pbihcIixcIiksXHJcbiAgICAgIHZpZXdzOiBkYXRhbWFydFZpZXdDb2RlLm1hcCgoZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkYXRhbWFydFZpZXdJZDogZS5pZCxcclxuICAgICAgICAgIGRhdGFtYXJ0Vmlld0NvZGU6IGUubGFuZ0NvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG4gICAgY29uc3QgZW50aXR5TGlzdCA9XHJcbiAgICAgIHRoaXMuZGF0YS5kYXNoYm9hcmQuZW50aXR5VHlwZSA9PT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgPyB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmVudGl0eUxpc3RcclxuICAgICAgICA6IFtdO1xyXG5cclxuICAgIGNvbnN0IGRhdGFPYmogPSB7XHJcbiAgICAgIGVudGl0eUxpc3QsXHJcbiAgICAgIGFjY291bnRJZDogdGhpcy51c2VySW5mby5hY2NvdW50SWQsXHJcbiAgICAgIHVzZXJJZDogdGhpcy51c2VySW5mby5pZCxcclxuICAgICAgZGFzaGJvYXJkSWQ6IHRoaXMuZGF0YS5kYXNoYm9hcmRJZCxcclxuICAgICAgZGF0YU1hcnRUYWJsZXM6IHRoaXMuZ3JhbmRzb25MaXN0LFxyXG4gICAgICBlbnRpdHlUeXBlOiB0aGlzLmVudGl0eVR5cGUgfHwgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlLFxyXG4gICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KGNvbmZpZyksXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpLnVybExpc3QuQWRkRGF0YU1hcnRUYWJsZXMsIGRhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgY29uc3QgX3NhdmVNZXNzYWdlID1cclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24uREFTSEJPQVJEX1BST1BFUlRJRVNfU0FWRUQgfHxcclxuICAgICAgICAgIFwiLkRBU0hCT0FSRF9QUk9QRVJUSUVTX1NBVkVEXCI7XHJcbiAgICAgICAgdGhpcy5zaG93VG9hc3QoX3NhdmVNZXNzYWdlLCBcIlN1Y2Nlc3NcIik7XHJcbiAgICAgICAgdGhpcy5jb25maWcuZGF0YW1hcnRWaWV3SWQgPSB0aGlzLnNvbklkcy5qb2luKFwiLFwiKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy52aWV3cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNvbklkcy5mb3JFYWNoKChzb25JZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gc29uSWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy52aWV3cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGRhdGFtYXJ0Vmlld0NvZGU6IGl0ZW0ubGFuZ0NvZGUsXHJcbiAgICAgICAgICAgICAgICBkYXRhbWFydFZpZXdJZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5kYXNoYm9hcmQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuZWRpdCkge1xyXG4gICAgICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5wb3J0bGV0RmllbGRzX1RlbXAgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZW50aXR5TGlzdCAmJlxyXG4gICAgICAgICAgZW50aXR5TGlzdC5sZW5ndGggJiZcclxuICAgICAgICAgIHRoaXMuZGF0YS5kYXNoYm9hcmQuZW50aXR5VHlwZSA9PT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnBiZi50cmlnZ2VyRGFzaGJvYXJkUmVmcmVzaC5uZXh0KHtcclxuICAgICAgICAgICAgZW50aXR5TGlzdCxcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5kYXNoYm9hcmQuaWQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkdldERhc2hib2FyZFYxKFxyXG4gICAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZElkLFxyXG4gICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgIChyZXMsIHBvcnRsZXRzID0gW10pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmNoYW5nZWxheW91dC5uZXh0KHtcclxuICAgICAgICAgICAgICBzdGF0dXM6IFwidHJ1ZVwiLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLmRhdGEuZGFzaGJvYXJkLmlkLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xyXG4gICAgICAgICAgICAgIHB1c2hfYnRuOiBmYWxzZSxcclxuICAgICAgICAgICAgICBwb3J0bGV0OiB7fSxcclxuICAgICAgICAgICAgICBwb3J0bGV0cyxcclxuICAgICAgICAgICAgICBkYXNoYm9hcmQ6IHJlcyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICBjb25zdCBfc2F2ZU1lc3NhZ2UgPSByZXMubWVzc2FnZXNbMF0ubWVzc2FnZSB8fCBcImVycm9yXCI7XHJcbiAgICAgICAgdGhpcy5zaG93VG9hc3QoX3NhdmVNZXNzYWdlLCBcIkVycm9yXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8gdG9hc3QgbXNnXHJcbiAgcHVibGljIHNob3dUb2FzdChtc2csIHN0YXR1czogXCJTdWNjZXNzXCIgfCBcIkVycm9yXCIpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93Tm90aWZpY2F0aW9uKG1zZywge1xyXG4gICAgICBzdGF0dXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8g5YWz6Zet5by556qXXHJcbiAgcHVibGljIGNsb3NlUG9wdXAoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
772
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9kYXNoYm9hcmQtcHJvcGVydGllcy9kYXRhLW1hcnQtbmV3L2RhdGEtbWFydC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUNOLGlCQUFpQixFQUVqQixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFaEU7SUF1QkUsOEJBQ2tDLElBQVMsRUFDbEMsU0FBNkMsRUFDNUMsYUFBNEIsRUFDN0IsTUFBaUIsRUFDaEIsR0FBWSxFQUNiLGdCQUFrQyxFQUNsQyx1QkFBZ0QsRUFDL0MsR0FBc0IsRUFDUSxHQUFRLEVBQ0MsSUFBUztRQVYxRCxpQkFXSTtRQVY4QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNiLHFCQUFnQixHQUFo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Z0JBQ1AsZ0JBQWdCO2dCQUNoQix1QkFBdUI7Z0JBUDlCLGlCQUFpQjtnREE0Q2QsUUFBUSxZQUFJLE1BQU0sU0FBQyxTQUFTO2dEQUM1QixRQUFRLFlBQUksTUFBTSxTQUFDLGlCQUFpQjs7SUEwWnpDLDJCQUFDO0NBQUEsQUEzYkQsSUEyYkM7U0F0Ylksb0JBQW9COzs7SUFDL0IsMkNBQVk7O0lBQ1osd0NBQVM7O0lBQ1Qsb0NBQUs7O0lBQ0wsMENBQVc7O0lBQ1gsc0NBQU87O0lBRVAsMENBQXVCOztJQUN2Qix1Q0FBb0I7O0lBQ3BCLDRDQUF5Qjs7SUFDekIsd0NBQXFCOztJQUNyQixzQ0FBbUI7O0lBQ25CLDJDQUEyQjs7SUFDM0IsOENBQTJCOztJQUMzQix3Q0FBd0I7O0lBQ3hCLCtDQUE0Qjs7SUFDNUIsbURBQW1DOztJQWlUbkMsd0NBQTZEOztJQTlTM0Qsb0NBQXlDOztJQUN6Qyx5Q0FBb0Q7Ozs7O0lBQ3BELDZDQUFvQzs7SUFDcEMsc0NBQXdCOzs7OztJQUN4QixtQ0FBb0I7O0lBQ3BCLGdEQUF5Qzs7SUFDekMsdURBQXVEOzs7OztJQUN2RCxtQ0FBOEI7O0lBQzlCLG1DQUE4Qzs7Ozs7SUFDOUMsb0NBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIEluamVjdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9wdGlvbmFsLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IEFwaUxpc3QgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZGFzaGJvYXJkUG9ybGV0cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IHRocm90dGxlIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgeyBBUElfU0VSVklDRV9UT0tFTiwgUEJGX1RPS0VOIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvSW5qZWN0aW9uVG9rZW5cIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpYWxvZy5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1kYXRhLW1hcnQtbmV3XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRhLW1hcnQtbmV3LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2RhdGEtbWFydC1uZXcuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhTWFydE5ld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgdHJhbnNsYXRpb247XHJcbiAgdXNlckluZm87XHJcbiAgbGFuZztcclxuICBlbnRpdHlUeXBlO1xyXG4gIGNvbmZpZztcclxuXHJcbiAgcHVibGljIGZhdGhlckxpc3QgPSBbXTtcclxuICBwdWJsaWMgc29uTGlzdCA9IFtdO1xyXG4gIHB1YmxpYyBncmFuZHNvbkxpc3QgPSBbXTtcclxuICBwdWJsaWMgZmF0aGVySWQgPSBcIlwiO1xyXG4gIHB1YmxpYyBzb25JZHMgPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRBbGwgPSBmYWxzZTtcclxuICBwdWJsaWMgb3JnaW5HcmFuZERhdGEgPSBbXTtcclxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgY2FjaGVFbnRpdHlUeXBlID0gXCJcIjtcclxuICBwdWJsaWMgaXNTZWxlY3RBbGxEaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERhdGFNYXJ0TmV3Q29tcG9uZW50PixcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgYXBpOiBBcGlMaXN0LFxyXG4gICAgcHVibGljIGRhc2hib2FyZFNlcnZpY2U6IERhc2hib2FyZFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2U6IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQQkZfVE9LRU4pIHB1YmxpYyBwYmY6IGFueSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBJX1NFUlZJQ0VfVE9LRU4pIHByaXZhdGUgaHR0cDogYW55XHJcbiAgKSB7fVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRJbmZvKCk7XHJcbiAgICB0aGlzLmdldFNvdXJjZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGJmLmludHJvU3RlcC5uZXh0KFwibmV4dFwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJbmZvKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSk7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXJJbmZvXCIpKTtcclxuICAgIHRoaXMubGFuZyA9IHRoaXMucGJmLmdldExhbmd1YWdlUGFyYW1zKCk7XHJcbiAgICB0aGlzLmNvbmZpZyA9XHJcbiAgICAgIHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEuZGFzaGJvYXJkXHJcbiAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMuZGF0YS5kYXNoYm9hcmQuY29uZmlnKVxyXG4gICAgICAgIDoge307XHJcbiAgfVxyXG4gIGdldFNvdXJjZXMoKSB7XHJcbiAgICBjb25zdCBkYXRhT2JqID0ge1xyXG4gICAgICBhY2NvdW50SWQ6IHRoaXMudXNlckluZm8uYWNjb3VudElkLFxyXG4gICAgICBsYW5ndWFnZTogdGhpcy5sYW5nLFxyXG4gICAgICBkYXNoYm9hcmRWZXJzaW9uOiAyLFxyXG4gICAgfTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5HZXRTb3VyY2VzLCBkYXRhT2JqLCAocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5zb3VyY2VzRGF0YVt0aGlzLmRhdGEuZGFzaGJvYXJkLmlkXSA9IHJlcztcclxuICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkdldFNvdXJjZXNSZXMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5mYXRoZXJMaXN0ID0gcmVzO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25maWcuZGF0YW1hcnRJZCkge1xyXG4gICAgICAgICAgLy8gdGhpcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmZhdGhlcklkID0gdGhpcy5jb25maWcuZGF0YW1hcnRJZDtcclxuICAgICAgICAgIHRoaXMuc29uSWRzID0gdGhpcy5jb25maWcuZGF0YW1hcnRWaWV3SWRcclxuICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy5kYXRhbWFydFZpZXdJZC5zcGxpdChcIixcIilcclxuICAgICAgICAgICAgOiB0aGlzLmNvbmZpZy52aWV3c1xyXG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLnZpZXdzLm1hcCgoaXRlbSkgPT4gaXRlbS5kYXRhbWFydFZpZXdJZClcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIGxldCBkYXRhc291cmNlID0gcmVzLmZpbmQoKGVsKSA9PiBlbC5pZCA9PSB0aGlzLmZhdGhlcklkKTtcclxuICAgICAgICAgIGlmIChkYXRhc291cmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0ZGF0YU1hcnQoZGF0YXNvdXJjZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jb25maWcuZGF0YW1hcnRJZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlID0gdGhpcy5lbnRpdHlUeXBlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgZGF0YXZpZXcgPSBkYXRhc291cmNlLnZpZXdzLmZpbHRlcigoZWwpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5zb25JZHMuaW5jbHVkZXMoZWwuaWQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSXRlbUNoYW5nZShkYXRhdmlldywgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRBbGxTdGF0dXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEFsbFN0YXR1cygpIHtcclxuICAgIGxldCBudW0gPSAwO1xyXG4gICAgdGhpcy5zb25MaXN0LmZvckVhY2goKHNvbikgPT4ge1xyXG4gICAgICBpZiAoc29uLmNoZWNrZWQgJiYgc29uLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICBudW0rKztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAobnVtID09PSB0aGlzLnNvbkxpc3QubGVuZ3RoIC0gMSkgdGhpcy5zZWxlY3RlZEFsbCA9IHRydWU7XHJcbiAgICBlbHNlIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5leHRTdGVwKCkge1xyXG4gICAgdGhpcy5wYmYuaW50cm9TdGVwLm5leHQoXCJuZXh0XCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0ZGF0YU1hcnQoaXRlbSwgaXNJbml0ID0gZmFsc2UpIHtcclxuICAgIGlmICh0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSA9PT0gaXRlbS5lbnRpdHlUeXBlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgIWlzSW5pdCAmJlxyXG4gICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSAmJlxyXG4gICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gaXRlbS5lbnRpdHlUeXBlXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgX3RpdGxlID1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLkFSRV9ZT1VfU1VSRV9UT19DSEFOR0VfREFUQV9NQVJUIHx8XHJcbiAgICAgICAgXCIuQXJlIHlvdSBzdXJlIHRvIGNoYW5nZSBlbnRpdHkgdHlwZSBvZiBkYXRhIG1hcnQ/IERhc2hib2FyZCB3aWxsIGJlIHJlc2V0IHNpbmNlIGVudGl0eSB0eXBlIGlzIGNoYW5nZWQuXCI7XHJcbiAgICAgIGNvbnN0IF9ubyA9IHRoaXMudHJhbnNsYXRpb24uTk8gfHwgXCIuTk9cIjtcclxuICAgICAgY29uc3QgX3llcyA9IHRoaXMudHJhbnNsYXRpb24uWUVTIHx8IFwiLllFU1wiO1xyXG4gICAgICAvLyBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmxheW91dFV0aWxzU2VydmljZS5hbGVydEVsZW1lbnQoXHJcbiAgICAgIC8vIFx0dGhpcy50cmFuc2xhdGlvbi5XQVJOSU5HIHx8IFwiLldBUk5JTkdcIixcclxuICAgICAgLy8gXHRfdGl0bGUsXHJcbiAgICAgIC8vIFx0X25vLFxyXG4gICAgICAvLyBcdF95ZXMsXHJcbiAgICAgIC8vIFx0dHJ1ZSxcclxuICAgICAgLy8gXHR0cnVlLFxyXG4gICAgICAvLyBcdFwiNDgwcHhcIixcclxuICAgICAgLy8gXHRcIjMyNHB4XCJcclxuICAgICAgLy8gKTtcclxuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb21tb25EaWxhb2coe1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0aW9uLldBUk5JTkcgfHwgXCIuV0FSTklOR1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBfdGl0bGUsXHJcbiAgICAgICAgc2F2ZUJ0bkxhYmVsOiBfeWVzLFxyXG4gICAgICAgIGNhbmNlbEJ0bkxhYmVsOiBfbm8sXHJcbiAgICAgIH0pO1xyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0RmF0aGVySWQoaXRlbSwgaXNJbml0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZhdGhlcklkKGl0ZW0sIGlzSW5pdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZhdGhlcklkKGl0ZW0sIGlzSW5pdCkge1xyXG4gICAgdGhpcy5mYXRoZXJJZCA9IGl0ZW0uaWQ7XHJcbiAgICB0aGlzLmVudGl0eVR5cGUgPSBpdGVtLmVudGl0eVR5cGU7XHJcbiAgICBsZXQgaXNGaWd1cmVzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgbGV0IGlzT3RoZXJDaGVja2VkID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAgIGl0ZW0udmlld3MuZmluZChcclxuICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgIGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIiAmJiB0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKVxyXG4gICAgICApXHJcbiAgICApIHtcclxuICAgICAgaXNGaWd1cmVzQ2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGxEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGl0ZW0udmlld3MuZmluZChcclxuICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIiAmJiB0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgICAgIGlzT3RoZXJDaGVja2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNvbkxpc3QgPSBpdGVtLnZpZXdzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgaXNEaXNhYmxlZCA9XHJcbiAgICAgICAgKGlzRmlndXJlc0NoZWNrZWQgJiYgaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB8fFxyXG4gICAgICAgIChpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiYgaXNPdGhlckNoZWNrZWQpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgY2hlY2tlZDpcclxuICAgICAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY2FjaGVFbnRpdHlUeXBlICE9PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgICAgICA6IHRoaXMuc29uSWRzLmluY2x1ZGVzKGl0ZW0uaWQpLFxyXG4gICAgICAgIGRpc2FibGVkOlxyXG4gICAgICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IHRoaXMuZW50aXR5VHlwZVxyXG4gICAgICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgICAgIDogaXNEaXNhYmxlZCxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlID0gaXRlbS5lbnRpdHlUeXBlO1xyXG5cclxuICAgIGlmICghaXNJbml0KSB7XHJcbiAgICAgIHRoaXMuc29uSWRzID0gW107XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgICAgIHRoaXMub3JnaW5HcmFuZERhdGEgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY2FjaGVFbnRpdHlUeXBlICE9PSBpdGVtLmVudGl0eVR5cGUpIHtcclxuICAgICAgICB0aGlzLnNvbkxpc3QgPSBpdGVtLnZpZXdzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUl0ZW1DaGFuZ2UoZGF0YSwgdmFsPzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFkYXRhKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuc29uSWRzLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29uSWRzLnB1c2goaXRlbS5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLnRhYmxlcykpIHtcclxuICAgICAgICAgICAgaXRlbS50YWJsZXMuZm9yRWFjaCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gY2hpbGQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGZpbmFuY2lhbCBmaWd1cmVzIGNhbuKAmXQgYmUgc2VsZWN0ZWQgdG9nZXRoZXIgd2l0aCBvdGhlciBncm91cHNcclxuICAgICAgICBpZiAoZGF0YS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICF0aGlzLnNvbkxpc3QuZmluZChcclxuICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5jaGVja2VkICYmIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RBbGxEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRhdGEudGFibGVzLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5ncmFuZHNvbkxpc3Quc29tZSgoZWwpID0+IGVsLmlkID09PSBpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIXRoaXMuc29uSWRzLmluY2x1ZGVzKGRhdGEuaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnNvbklkcy5wdXNoKGRhdGEuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncmFuZHNvbkxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB7XHJcbiAgICAgICAgICBpdGVtLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uaWQgPT0gZGF0YS5pZCkge1xyXG4gICAgICAgICAgaXRlbS5jaGVja2VkID0gdmFsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5jaGVja2VkKSB7XHJcbiAgICAgICAgICBpdGVtLnRhYmxlcy5mb3JFYWNoKChzb25JdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5ncmFuZHNvbkxpc3Quc29tZSgoZWwpID0+IGVsLmlkID09PSBzb25JdGVtLmlkKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JhbmRzb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgLi4uc29uSXRlbSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGRhdGEubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIiAmJlxyXG4gICAgICAgICF0aGlzLnNvbkxpc3QuZmluZChcclxuICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNoZWNrZWQgJiYgaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgob2JqKSA9PiB7XHJcbiAgICAgICAgICBpZiAob2JqLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIG9iai5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc29uSWRzID0gdGhpcy5zb25JZHMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IGRhdGEuaWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRTZWxlY3RlZEFsbFN0YXR1cygpO1xyXG4gICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmFuZHNvbkxpc3QpKTtcclxuICAgIGlmICghdGhpcy5yZWZbXCJkZXN0cm95ZWRcIl0pIHtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdEFsbCh2YWwpIHtcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHRoaXMub3JnaW5HcmFuZERhdGEgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgICB0aGlzLnNvbklkcyA9IFtdO1xyXG4gICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5jaGVja2VkID0gdmFsO1xyXG4gICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc29uSWRzLnB1c2goaXRlbS5pZCk7XHJcbiAgICAgICAgaXRlbS50YWJsZXMuZm9yRWFjaCgoc29uSXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IHNvbkl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JhbmRzb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIC4uLnNvbkl0ZW0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyYW5kc29uTGlzdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvRmlsdGVyID0gdGhyb3R0bGUoKHZhbCkgPT4gdGhpcy5kb1NlYXJjaCh2YWwpLCAyMDApO1xyXG4gIHB1YmxpYyBkb1NlYXJjaCh2YWwpIHtcclxuICAgIGxldCB0ZW1wTGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5vcmdpbkdyYW5kRGF0YSkpO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IHRlbXBMaXN0LmZpbHRlcigoaXRlbSkgPT5cclxuICAgICAgICBpdGVtLmxhbmdWYWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncmFuZHNvbkxpc3QgPSB0ZW1wTGlzdDtcclxuICAgIH1cclxuICB9XHJcbiAgLy8g5L+d5a2Y5by556qX562b6YCJ5pWw5o2uXHJcbiAgc2F2ZURhdGEoKSB7XHJcbiAgICB0aGlzLnBiZi5pbnRyb1N0ZXAubmV4dChcImNvbXBsZXRlXCIpO1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbGV0IGNvbmZpZztcclxuICAgIGxldCBkYXRhbWFydFZpZXdDb2RlID0gdGhpcy5zb25MaXN0LmZpbHRlcigoZWwpID0+XHJcbiAgICAgIHRoaXMuc29uSWRzLmluY2x1ZGVzKGVsLmlkKVxyXG4gICAgKTtcclxuICAgIGNvbmZpZyA9IHtcclxuICAgICAgZGF0YW1hcnRJZDogdGhpcy5mYXRoZXJJZCxcclxuICAgICAgZGF0YW1hcnRWaWV3SWQ6IHRoaXMuc29uSWRzLmpvaW4oXCIsXCIpLFxyXG4gICAgICB2aWV3czogZGF0YW1hcnRWaWV3Q29kZS5tYXAoKGUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGF0YW1hcnRWaWV3SWQ6IGUuaWQsXHJcbiAgICAgICAgICBkYXRhbWFydFZpZXdDb2RlOiBlLmxhbmdDb2RlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGVudGl0eUxpc3QgPVxyXG4gICAgICB0aGlzLmRhdGEuZGFzaGJvYXJkLmVudGl0eVR5cGUgPT09IHRoaXMuZW50aXR5VHlwZVxyXG4gICAgICAgID8gdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5lbnRpdHlMaXN0XHJcbiAgICAgICAgOiBbXTtcclxuXHJcbiAgICBjb25zdCBkYXRhT2JqID0ge1xyXG4gICAgICBlbnRpdHlMaXN0LFxyXG4gICAgICBhY2NvdW50SWQ6IHRoaXMudXNlckluZm8uYWNjb3VudElkLFxyXG4gICAgICB1c2VySWQ6IHRoaXMudXNlckluZm8uaWQsXHJcbiAgICAgIGRhc2hib2FyZElkOiB0aGlzLmRhdGEuZGFzaGJvYXJkSWQsXHJcbiAgICAgIGRhdGFNYXJ0VGFibGVzOiB0aGlzLmdyYW5kc29uTGlzdCxcclxuICAgICAgZW50aXR5VHlwZTogdGhpcy5lbnRpdHlUeXBlIHx8IHRoaXMuZGF0YS5kYXNoYm9hcmQuZW50aXR5VHlwZSxcclxuICAgICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeShjb25maWcpLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaS51cmxMaXN0LkFkZERhdGFNYXJ0VGFibGVzLCBkYXRhT2JqLCAocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMuc3RhdHVzID09PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIGNvbnN0IF9zYXZlTWVzc2FnZSA9XHJcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLkRBU0hCT0FSRF9QUk9QRVJUSUVTX1NBVkVEIHx8XHJcbiAgICAgICAgICBcIi5EQVNIQk9BUkRfUFJPUEVSVElFU19TQVZFRFwiO1xyXG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KF9zYXZlTWVzc2FnZSwgXCJTdWNjZXNzXCIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmRhdGFtYXJ0Vmlld0lkID0gdGhpcy5zb25JZHMuam9pbihcIixcIik7XHJcbiAgICAgICAgdGhpcy5jb25maWcudmlld3MgPSBbXTtcclxuICAgICAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zb25JZHMuZm9yRWFjaCgoc29uSWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHNvbklkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcudmlld3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhbWFydFZpZXdDb2RlOiBpdGVtLmxhbmdDb2RlLFxyXG4gICAgICAgICAgICAgICAgZGF0YW1hcnRWaWV3SWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEuZGFzaGJvYXJkLmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICBpZiAodGhpcy5kYXRhLmVkaXQpIHtcclxuICAgICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UucG9ydGxldEZpZWxkc19UZW1wID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGVudGl0eUxpc3QgJiZcclxuICAgICAgICAgIGVudGl0eUxpc3QubGVuZ3RoICYmXHJcbiAgICAgICAgICB0aGlzLmRhdGEuZGFzaGJvYXJkLmVudGl0eVR5cGUgPT09IHRoaXMuZW50aXR5VHlwZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5wYmYudHJpZ2dlckRhc2hib2FyZFJlZnJlc2gubmV4dCh7XHJcbiAgICAgICAgICAgIGVudGl0eUxpc3QsXHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmRhdGEuZGFzaGJvYXJkLmlkLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5HZXREYXNoYm9hcmRWMShcclxuICAgICAgICAgIHRoaXMuZGF0YS5kYXNoYm9hcmRJZCxcclxuICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAocmVzLCBwb3J0bGV0cyA9IFtdKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jaGFuZ2VsYXlvdXQubmV4dCh7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiBcInRydWVcIixcclxuICAgICAgICAgICAgICBpZDogdGhpcy5kYXRhLmRhc2hib2FyZC5pZCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcclxuICAgICAgICAgICAgICBwdXNoX2J0bjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgcG9ydGxldDoge30sXHJcbiAgICAgICAgICAgICAgcG9ydGxldHMsXHJcbiAgICAgICAgICAgICAgZGFzaGJvYXJkOiByZXMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgY29uc3QgX3NhdmVNZXNzYWdlID0gcmVzLm1lc3NhZ2VzWzBdLm1lc3NhZ2UgfHwgXCJlcnJvclwiO1xyXG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KF9zYXZlTWVzc2FnZSwgXCJFcnJvclwiKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIHRvYXN0IG1zZ1xyXG4gIHB1YmxpYyBzaG93VG9hc3QobXNnLCBzdGF0dXM6IFwiU3VjY2Vzc1wiIHwgXCJFcnJvclwiKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbihtc2csIHtcclxuICAgICAgc3RhdHVzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIOWFs+mXreW8ueeql1xyXG4gIHB1YmxpYyBjbG9zZVBvcHVwKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcbn1cclxuIl19
|