tango-app-ui-store-builder 1.0.37 → 1.0.39

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.
Files changed (21) hide show
  1. package/esm2022/lib/components/manage-plano/popups/create-planogram/create-planogram.component.mjs +19 -8
  2. package/esm2022/lib/components/manage-plano/verification-table/verification-table.component.mjs +8 -2
  3. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +60 -39
  4. package/esm2022/lib/components/manage-store-plano/verification-feedback/editable-fixture/editable-fixture.component.mjs +14 -15
  5. package/esm2022/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.mjs +13 -14
  6. package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +30 -31
  7. package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +54 -7
  8. package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +3 -3
  9. package/esm2022/lib/components/planogram/plano-table/plano-filter/plano-filter.component.mjs +13 -12
  10. package/esm2022/lib/components/planogram/plano-table/plano-table.component.mjs +4 -4
  11. package/fesm2022/tango-app-ui-store-builder.mjs +207 -125
  12. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  13. package/lib/components/manage-plano/popups/create-planogram/create-planogram.component.d.ts +1 -0
  14. package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +1 -1
  15. package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +2 -2
  16. package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +2 -4
  17. package/lib/components/manage-store-plano/verification-feedback/editable-fixture/editable-fixture.component.d.ts +1 -4
  18. package/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.d.ts +1 -4
  19. package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +1 -4
  20. package/lib/components/plano-tools/plano-migrate/plano-migrate.component.d.ts +1 -0
  21. package/package.json +1 -1
@@ -50,10 +50,10 @@ export class ToolsParentComponent {
50
50
  this.destroy$.complete();
51
51
  }
52
52
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolsParentComponent, deps: [{ token: i1.NgbModal }, { token: i2.Router }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
53
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolsParentComponent, selector: "lib-tools-parent", ngImport: i0, template: "<div class=\"d-flex mb-3\">\r\n <div class=\"d-flex gap-3\">\r\n\r\n <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/builder\">\r\n Plano Builder\r\n </button>\r\n\r\n <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/migrate\">\r\n Update Layout / Download Canvas\r\n </button>\r\n\r\n <button class=\"btn btn-success\" (click)=\"onClickCreateFixtureTemplate()\">\r\n Create Template\r\n </button>\r\n\r\n </div>\r\n</div>\r\n<hr>\r\n<router-outlet></router-outlet>", styles: [""], dependencies: [{ kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolsParentComponent, selector: "lib-tools-parent", ngImport: i0, template: "<div class=\"d-flex mb-3\">\r\n <div class=\"d-flex gap-3\">\r\n\r\n <!-- <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/builder\">\r\n Plano Builder\r\n </button> -->\r\n\r\n <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/migrate\">\r\n Update Layout / Download Canvas\r\n </button>\r\n\r\n <button class=\"btn btn-success\" (click)=\"onClickCreateFixtureTemplate()\">\r\n Create Template\r\n </button>\r\n\r\n </div>\r\n</div>\r\n<hr>\r\n<router-outlet></router-outlet>", styles: [""], dependencies: [{ kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
54
54
  }
55
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolsParentComponent, decorators: [{
56
56
  type: Component,
57
- args: [{ selector: "lib-tools-parent", template: "<div class=\"d-flex mb-3\">\r\n <div class=\"d-flex gap-3\">\r\n\r\n <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/builder\">\r\n Plano Builder\r\n </button>\r\n\r\n <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/migrate\">\r\n Update Layout / Download Canvas\r\n </button>\r\n\r\n <button class=\"btn btn-success\" (click)=\"onClickCreateFixtureTemplate()\">\r\n Create Template\r\n </button>\r\n\r\n </div>\r\n</div>\r\n<hr>\r\n<router-outlet></router-outlet>" }]
57
+ args: [{ selector: "lib-tools-parent", template: "<div class=\"d-flex mb-3\">\r\n <div class=\"d-flex gap-3\">\r\n\r\n <!-- <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/builder\">\r\n Plano Builder\r\n </button> -->\r\n\r\n <button class=\"btn btn-outline\" routerLink=\"/manage/planogram/plano-tools/migrate\">\r\n Update Layout / Download Canvas\r\n </button>\r\n\r\n <button class=\"btn btn-success\" (click)=\"onClickCreateFixtureTemplate()\">\r\n Create Template\r\n </button>\r\n\r\n </div>\r\n</div>\r\n<hr>\r\n<router-outlet></router-outlet>" }]
58
58
  }], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.Router }, { type: i3.GlobalStateService }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMtcGFyZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vLXRvb2xzL3Rvb2xzLXBhcmVudC90b29scy1wYXJlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvdG9vbHMtcGFyZW50L3Rvb2xzLXBhcmVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtGQUErRixDQUFDO0FBRy9JLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7OztBQU9kLE1BQU0sT0FBTyxvQkFBb0I7SUFLckI7SUFDQTtJQUNBO0lBTlYsUUFBUSxDQUFTO0lBRUEsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDaEQsWUFDVSxRQUFrQixFQUNsQixNQUFjLEVBQ2QsRUFBc0I7UUFGdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7SUFDN0IsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWM7YUFDbkIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsdURBQXVEO1FBQ2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxxQ0FBcUM7UUFDeEQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsNEJBQTRCO1FBQ3RELG9CQUFvQixFQUFFLENBQUMsMkRBQTJEO1NBQ25GO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxNQUFNLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBVyxDQUNqRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUNsRSxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2xCLENBQUMsa0RBQWtELENBQUMsRUFDcEQsRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDMUQsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQWpEVSxvQkFBb0I7NEZBQXBCLG9CQUFvQix3RENsQmpDLDhsQkFrQitCOzs0RkRBbEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ3JlYXRlRml4dHVyZVRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2ZpeHR1cmUtdGVtcGxhdGUtdGFibGUvcG9wdXBzL2NyZWF0ZS1maXh0dXJlLXRlbXBsYXRlL2NyZWF0ZS1maXh0dXJlLXRlbXBsYXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7XHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIGZpbHRlcixcclxuICBTdWJqZWN0LFxyXG4gIHRha2VVbnRpbCxcclxufSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRvb2xzLXBhcmVudFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdG9vbHMtcGFyZW50LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi90b29scy1wYXJlbnQuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvb2xzUGFyZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdiTW9kYWw6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgLy8gU3Vic2NyaXB0aW9uIHdpbGwgYmUgY2FuY2VsbGVkIG9uIGNvbXBvbmVudCBkZXN0cm95LlxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLCAvLyBUbyBhdm9pZCBpbW1lZGlhdGUgZnJlcXVlbnQgY2FsbHMuXHJcbiAgICAgICAgZmlsdGVyKChkYXRhKSA9PiAhIWRhdGEpLCAvLyBGaWx0ZXJpbmcgbnVsbC91bmRlZmluZWQuXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyBFbWl0dGluZyBvbmx5IGRpZmZlcmVudCB2YWx1ZXMuIChJZ25vcmVzIHNhbWUgY2xpZW50SWQpLlxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBoZWFkZXJEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSBhcyBzdHJpbmdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gaGVhZGVyRGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ3JlYXRlRml4dHVyZVRlbXBsYXRlKCkge1xyXG4gICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oQ3JlYXRlRml4dHVyZVRlbXBsYXRlQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICB9KTtcclxuICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgIG1vZGVsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgW1wiL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZS9iYXNpYy1kZXRhaWxzXCJdLFxyXG4gICAgICAgICAgeyBxdWVyeVBhcmFtczogeyB0ZW1wbGF0ZUlkOiByZXN1bHQuX2lkLCBpc0VkaXQ6IHRydWUgfSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggIGdhcC0zXCI+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvYnVpbGRlclwiPlxyXG4gICAgICAgICAgICBQbGFubyBCdWlsZGVyXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvbWlncmF0ZVwiPlxyXG4gICAgICAgICAgICBVcGRhdGUgTGF5b3V0IC8gRG93bmxvYWQgQ2FudmFzXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwib25DbGlja0NyZWF0ZUZpeHR1cmVUZW1wbGF0ZSgpXCI+XHJcbiAgICAgICAgICAgIENyZWF0ZSBUZW1wbGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGhyPlxyXG48cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMtcGFyZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vLXRvb2xzL3Rvb2xzLXBhcmVudC90b29scy1wYXJlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvdG9vbHMtcGFyZW50L3Rvb2xzLXBhcmVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtGQUErRixDQUFDO0FBRy9JLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDOzs7OztBQU9kLE1BQU0sT0FBTyxvQkFBb0I7SUFLckI7SUFDQTtJQUNBO0lBTlYsUUFBUSxDQUFTO0lBRUEsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDaEQsWUFDVSxRQUFrQixFQUNsQixNQUFjLEVBQ2QsRUFBc0I7UUFGdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7SUFDN0IsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWM7YUFDbkIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsdURBQXVEO1FBQ2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxxQ0FBcUM7UUFDeEQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsNEJBQTRCO1FBQ3RELG9CQUFvQixFQUFFLENBQUMsMkRBQTJEO1NBQ25GO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxNQUFNLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBVyxDQUNqRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUNsRSxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2xCLENBQUMsa0RBQWtELENBQUMsRUFDcEQsRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDMUQsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQWpEVSxvQkFBb0I7NEZBQXBCLG9CQUFvQix3RENsQmpDLHVtQkFrQitCOzs0RkRBbEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ3JlYXRlRml4dHVyZVRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2ZpeHR1cmUtdGVtcGxhdGUtdGFibGUvcG9wdXBzL2NyZWF0ZS1maXh0dXJlLXRlbXBsYXRlL2NyZWF0ZS1maXh0dXJlLXRlbXBsYXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7XHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIGZpbHRlcixcclxuICBTdWJqZWN0LFxyXG4gIHRha2VVbnRpbCxcclxufSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRvb2xzLXBhcmVudFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdG9vbHMtcGFyZW50LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi90b29scy1wYXJlbnQuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvb2xzUGFyZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdiTW9kYWw6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgLy8gU3Vic2NyaXB0aW9uIHdpbGwgYmUgY2FuY2VsbGVkIG9uIGNvbXBvbmVudCBkZXN0cm95LlxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLCAvLyBUbyBhdm9pZCBpbW1lZGlhdGUgZnJlcXVlbnQgY2FsbHMuXHJcbiAgICAgICAgZmlsdGVyKChkYXRhKSA9PiAhIWRhdGEpLCAvLyBGaWx0ZXJpbmcgbnVsbC91bmRlZmluZWQuXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyBFbWl0dGluZyBvbmx5IGRpZmZlcmVudCB2YWx1ZXMuIChJZ25vcmVzIHNhbWUgY2xpZW50SWQpLlxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBoZWFkZXJEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSBhcyBzdHJpbmdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gaGVhZGVyRGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ3JlYXRlRml4dHVyZVRlbXBsYXRlKCkge1xyXG4gICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oQ3JlYXRlRml4dHVyZVRlbXBsYXRlQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICB9KTtcclxuICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgIG1vZGVsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgW1wiL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZS9iYXNpYy1kZXRhaWxzXCJdLFxyXG4gICAgICAgICAgeyBxdWVyeVBhcmFtczogeyB0ZW1wbGF0ZUlkOiByZXN1bHQuX2lkLCBpc0VkaXQ6IHRydWUgfSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggIGdhcC0zXCI+XHJcblxyXG4gICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHJvdXRlckxpbms9XCIvbWFuYWdlL3BsYW5vZ3JhbS9wbGFuby10b29scy9idWlsZGVyXCI+XHJcbiAgICAgICAgICAgIFBsYW5vIEJ1aWxkZXJcclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiByb3V0ZXJMaW5rPVwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHMvbWlncmF0ZVwiPlxyXG4gICAgICAgICAgICBVcGRhdGUgTGF5b3V0IC8gRG93bmxvYWQgQ2FudmFzXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwib25DbGlja0NyZWF0ZUZpeHR1cmVUZW1wbGF0ZSgpXCI+XHJcbiAgICAgICAgICAgIENyZWF0ZSBUZW1wbGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGhyPlxyXG48cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
@@ -36,15 +36,16 @@ export class PlanoFilterComponent {
36
36
  { name: "( ) Between", value: "between", checked: false },
37
37
  ],
38
38
  },
39
- // {
40
- // title: "Store method",
41
- // type: "single",
42
- // isOpened: false,
43
- // options: [
44
- // { name: "IVM", value: "ivm", checked: false },
45
- // { name: "Non IVM", value: "nonIvm", checked: false },
46
- // ],
47
- // },
39
+ {
40
+ title: "Store category",
41
+ type: "single",
42
+ isOpened: false,
43
+ options: [
44
+ { name: "All", value: "", checked: false },
45
+ { name: "IVM", value: "ivm", checked: false },
46
+ { name: "Non IVM", value: "nonivm", checked: false },
47
+ ],
48
+ },
48
49
  ];
49
50
  applyFilters = new EventEmitter();
50
51
  resetFilters = new EventEmitter();
@@ -352,8 +353,8 @@ export class PlanoFilterComponent {
352
353
  const country = finalData[0].selected;
353
354
  const city = finalData[1].selected;
354
355
  const compliance = finalData[2].selected;
355
- // const method = event[3].selected;
356
- if (country.length || city.length || compliance) {
356
+ const planoStrategy = finalData[3].selected;
357
+ if (country.length || city.length || compliance || planoStrategy) {
357
358
  this.isFilterApplied = true;
358
359
  }
359
360
  else {
@@ -405,4 +406,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
405
406
  type: HostListener,
406
407
  args: ["document:click", ["$event"]]
407
408
  }] } });
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbm8tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vZ3JhbS9wbGFuby10YWJsZS9wbGFuby1maWx0ZXIvcGxhbm8tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vZ3JhbS9wbGFuby10YWJsZS9wbGFuby1maWx0ZXIvcGxhbm8tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFVMUMsTUFBTSxPQUFPLG9CQUFvQjtJQXFEWDtJQXBEWCxRQUFRLENBQVM7SUFDakIsSUFBSSxHQUFLLEVBQUUsQ0FBQztJQUVyQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLGdCQUFnQixHQUFZLEVBQUUsQ0FBQztJQUMvQixjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFFakMsT0FBTyxHQUFHO1FBQ1IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBVyxFQUFFO1FBQzFFLEVBQUUsS0FBSyxFQUFFLE1BQU0s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QUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0E1Y1Usb0JBQW9COzRGQUFwQixvQkFBb0IsZ1VDdkJqQyw4MUxBaUlNLDAwR0Q5R00sV0FBVywybENBQUUsWUFBWTs7NEZBSXhCLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQzt3RkFLM0IsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBeUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQTJGUCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInBsYW5vLWZpbHRlclwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcGxhbm8tZmlsdGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9wbGFuby1maWx0ZXIuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYW5vRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgY2xpZW50SWQ6IHN0cmluZztcclxuICBASW5wdXQoKSBkYXRhOmFueT1bXTtcclxuXHJcbiAgaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgZGlzcGxheWVkT3B0aW9uczogYW55W11bXSA9IFtdO1xyXG4gIGlzRmlsdGVyUHJvcGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0ZpbHRlckFwcGxpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZmlsdGVycyA9IFtcclxuICAgIHsgdGl0bGU6IFwiQ291bnRyeVwiLCB0eXBlOiBcIm11bHRpXCIsIGlzT3BlbmVkOiBmYWxzZSwgb3B0aW9uczogW10gYXMgYW55W10gfSxcclxuICAgIHsgdGl0bGU6IFwiQ2l0eVwiLCB0eXBlOiBcIm11bHRpXCIsIGlzT3BlbmVkOiBmYWxzZSwgb3B0aW9uczogW10gYXMgYW55W10gfSxcclxuICAgIHtcclxuICAgICAgdGl0bGU6IFwiTWVyY2hhbmRpc2UgY29tcGxpYW5jZVwiLFxyXG4gICAgICB0eXBlOiBcImN1c3RvbVwiLFxyXG4gICAgICBpc09wZW5lZDogZmFsc2UsXHJcbiAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICB7IG5hbWU6IFwiPiBHcmVhdGVyIHRoYW5cIiwgdmFsdWU6IFwiZ3JlYXRlclRoYW5cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiPCBMZXNzZXIgdGhhblwiLCB2YWx1ZTogXCJsZXNzZXJUaGFuXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCI+PSBHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG9cIixcclxuICAgICAgICAgIHZhbHVlOiBcImdyZWF0ZXJUaGFuQW5kRXF1YWxcIixcclxuICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCI8PSBMZXNzZXIgdGhhbiBvciBlcXVhbCB0b1wiLFxyXG4gICAgICAgICAgdmFsdWU6IFwibGVzc2VyVGhhbkFuZEVxdWFsXCIsXHJcbiAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgbmFtZTogXCIoICkgQmV0d2VlblwiLCB2YWx1ZTogXCJiZXR3ZWVuXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAgLy8ge1xyXG4gICAgLy8gICB0aXRsZTogXCJTdG9yZSBtZXRob2RcIixcclxuICAgIC8vICAgdHlwZTogXCJzaW5nbGVcIixcclxuICAgIC8vICAgaXNPcGVuZWQ6IGZhbHNlLFxyXG4gICAgLy8gICBvcHRpb25zOiBbXHJcbiAgICAvLyAgICAgeyBuYW1lOiBcIklWTVwiLCB2YWx1ZTogXCJpdm1cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgIC8vICAgICB7IG5hbWU6IFwiTm9uIElWTVwiLCB2YWx1ZTogXCJub25Jdm1cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgXTtcclxuXHJcbiAgQE91dHB1dCgpIGFwcGx5RmlsdGVycyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSByZXNldEZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjdXN0b21EYXRhOiB7XHJcbiAgICB0eXBlOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbWluOiBudW1iZXIgfCBudWxsO1xyXG4gICAgbWF4OiBudW1iZXIgfCBudWxsO1xyXG4gIH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVCdWlsZGVyU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc3BsYXllZE9wdGlvbnMgPSB0aGlzLmZpbHRlcnMubWFwKChmKSA9PlxyXG4gICAgICBmLm9wdGlvbnMgPyBbLi4uZi5vcHRpb25zXSA6IFtdXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChfLCBpKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVtpXSA9IHsgdHlwZTogbnVsbCwgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJjbGllbnRJZFwiXT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9hZENvdW50cmllcygpO1xyXG4gICAgICB0aGlzLmxvYWRDaXRpZXMoW10pO1xyXG4gICAgfVxyXG4gICAgaWYoY2hhbmdlc1snZGF0YSddPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goLi4udGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcigoZWxlKSA9PiBlbGUudGl0bGUgIT0gJ01lcmNoYW5kaXNlIGNvbXBsaWFuY2UnICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkQ291bnRyaWVzKCkge1xyXG4gICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb3VudHJpZXMoeyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cmllcyA9XHJcbiAgICAgICAgICAgICAgcmVzPy5kYXRhPy5jb3VudHJ5RGF0YS5tYXAoKGM6IGFueSkgPT4gYy5jb3VudHJ5KSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1swXS5vcHRpb25zID0gY291bnRyaWVzLm1hcCgoYzogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgIG5hbWU6IGMsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGMsXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zWzBdID0gWy4uLnRoaXMuZmlsdGVyc1swXS5vcHRpb25zXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkBAIH4gbG9hZENvdW50cmllcyBbRVJSXTpcIiwgZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRDaXRpZXMoc2VsZWN0ZWRDb3VudHJpZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgY291bnRyeTogc2VsZWN0ZWRDb3VudHJpZXMsXHJcbiAgICAgIGNpdHk6IFtdLFxyXG4gICAgICBncm91cDogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRSZWdpb25zKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgcmVnaW9ucyA9XHJcbiAgICAgICAgICAgICAgcmVzPy5kYXRhPy5sb2NhdGlvbkRhdGE/Lm1hcCgocjogYW55KSA9PiByPy5jaXR5KSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG9sZENoZWNrZWQgPSB0aGlzLmZpbHRlcnNbMV0ub3B0aW9uc1xyXG4gICAgICAgICAgICAgIC5maWx0ZXIoKG8pID0+IG8uY2hlY2tlZClcclxuICAgICAgICAgICAgICAubWFwKChvKSA9PiBvLnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1sxXS5vcHRpb25zID0gcmVnaW9ucy5tYXAoKGNpdHk6IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICBuYW1lOiBjaXR5LFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjaXR5LFxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IG9sZENoZWNrZWQuaW5jbHVkZXMoY2l0eSksXHJcbiAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1sxXSA9IFsuLi50aGlzLmZpbHRlcnNbMV0ub3B0aW9uc107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJAQCB+IGxvYWRDaXRpZXMgW0VSUl06XCIsIGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGhhbmRsZURvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoXCIuaXRlbS1idXR0b25cIikgfHwgdGFyZ2V0LmNsb3Nlc3QoXCIuaXRlbS1kcm9wZG93blwiKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmLCBpKSA9PiB7XHJcbiAgICAgIGlmIChmLmlzT3BlbmVkKSB0aGlzLnJlc2V0U2VhcmNoKGkpO1xyXG4gICAgICBmLmlzT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoXCIuZmlsdGVyLWRyb3Bkb3duXCIpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZpbHRlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9ICF0aGlzLmlzRmlsdGVyT3BlbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0ZW0oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW1JbmRleDogbnVtYmVyKSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZiwgaSkgPT4ge1xyXG4gICAgICBpZiAoaSA9PT0gaXRlbUluZGV4KSB7XHJcbiAgICAgICAgZi5pc09wZW5lZCA9ICFmLmlzT3BlbmVkO1xyXG4gICAgICAgIGlmICghZi5pc09wZW5lZCkgdGhpcy5yZXNldFNlYXJjaChpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZi5pc09wZW5lZCkgdGhpcy5yZXNldFNlYXJjaChpKTtcclxuICAgICAgICBmLmlzT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTZWFyY2goZmlsdGVySW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zW2ZpbHRlckluZGV4XSA9IFsuLi50aGlzLmZpbHRlcnNbZmlsdGVySW5kZXhdLm9wdGlvbnNdO1xyXG4gIH1cclxuXHJcbiAgb25TaW5nbGVTZWxlY3QoZmlsdGVyOiBhbnksIG9wdGlvbjogYW55KSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVycy5pbmRleE9mKGZpbHRlcik7XHJcbiAgICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5maWx0ZXJzW2luZGV4XS5vcHRpb25zLmZvckVhY2goKG8pID0+IChvLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgb3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1tpbmRleF0gPSBbLi4udGhpcy5maWx0ZXJzW2luZGV4XS5vcHRpb25zXTtcclxuICAgIHRoaXMuZmlsdGVyc1tpbmRleF0uaXNPcGVuZWQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoZmlsdGVyLnRpdGxlID09PSBcIkNvdW50cnlcIikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNpdHlMaXN0RnJvbUFQSSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdEZpbHRlckNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uQ3VzdG9tU2VsZWN0KGZpOiBudW1iZXIsIGZpbHRlcjogYW55LCBvcHRpb246IGFueSkge1xyXG4gICAgdGhpcy5maWx0ZXJzW2ZpXS5vcHRpb25zLmZvckVhY2goKG8pID0+IChvLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgb3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1tmaV0gPSBbLi4udGhpcy5maWx0ZXJzW2ZpXS5vcHRpb25zXTtcclxuICAgIHRoaXMuZmlsdGVyc1tmaV0uaXNPcGVuZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmN1c3RvbURhdGFbZmldID0ge1xyXG4gICAgICB0eXBlOiBvcHRpb24udmFsdWUsXHJcbiAgICAgIG1pbjogbnVsbCxcclxuICAgICAgbWF4OiBudWxsLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlQ3VzdG9tRmlsdGVyKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbk9wdGlvbkNoYW5nZShmaWx0ZXI6IGFueSwgb3B0aW9uOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzLmluZGV4T2YoZmlsdGVyKTtcclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybjtcclxuXHJcbiAgICBpZiAoZmlsdGVyLnRpdGxlID09PSBcIkNvdW50cnlcIikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNpdHlMaXN0RnJvbUFQSSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdEZpbHRlckNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNpdHlMaXN0RnJvbUFQSSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkQ291bnRyaWVzID0gdGhpcy5maWx0ZXJzWzBdLm9wdGlvbnNcclxuICAgICAgLmZpbHRlcigobykgPT4gby5jaGVja2VkKVxyXG4gICAgICAubWFwKChvKSA9PiBvLnZhbHVlKTtcclxuICAgIHRoaXMubG9hZENpdGllcyhzZWxlY3RlZENvdW50cmllcyk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZU51bWJlcihmaTogbnVtYmVyLCBmaWVsZDogXCJtaW5cIiB8IFwibWF4XCIpIHtcclxuICAgIGxldCBuID0gdGhpcy5jdXN0b21EYXRhW2ZpXVtmaWVsZF07XHJcblxyXG4gICAgaWYgKG4gPT09IG51bGwgfHwgbiA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKE51bWJlcihuKSkpIHtcclxuICAgICAgdGhpcy5jdXN0b21EYXRhW2ZpXVtmaWVsZF0gPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXN0b21EYXRhW2ZpXVtmaWVsZF0gPSBNYXRoLm1pbihOdW1iZXIobiksIDEwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWxpZGF0ZUN1c3RvbUZpbHRlcigpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBsZXQgdiA9IGlucHV0LnZhbHVlLnJlcGxhY2UoL1teMC05XS9nLCBcIlwiKS5zbGljZSgwLCAzKTtcclxuICAgIGlucHV0LnZhbHVlID0gdjtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlQ3VzdG9tRmlsdGVyKCkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnMuZmluZEluZGV4KChmKSA9PiBmLnR5cGUgPT09IFwiY3VzdG9tXCIpO1xyXG5cclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5pc0ZpbHRlclByb3BlciA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25mID0gdGhpcy5jdXN0b21EYXRhW2luZGV4XTtcclxuXHJcbiAgICBpZiAoIWNvbmYudHlwZSkge1xyXG4gICAgICB0aGlzLmlzRmlsdGVyUHJvcGVyID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1pbiA9IGNvbmYubWluO1xyXG4gICAgY29uc3QgbWF4ID0gY29uZi5tYXg7XHJcblxyXG4gICAgc3dpdGNoIChjb25mLnR5cGUpIHtcclxuICAgICAgY2FzZSBcImdyZWF0ZXJUaGFuXCI6XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlclByb3BlciA9IG1pbiAhPT0gbnVsbCAmJiBtaW4gPj0gMCAmJiBtaW4gPCAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwibGVzc2VyVGhhblwiOlxyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJQcm9wZXIgPSBtaW4gIT09IG51bGwgJiYgbWluID4gMCAmJiBtaW4gPD0gMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImdyZWF0ZXJUaGFuQW5kRXF1YWxcIjpcclxuICAgICAgICB0aGlzLmlzRmlsdGVyUHJvcGVyID0gbWluICE9PSBudWxsICYmIG1pbiA+PSAwICYmIG1pbiA8PSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwibGVzc2VyVGhhbkFuZEVxdWFsXCI6XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlclByb3BlciA9IG1pbiAhPT0gbnVsbCAmJiBtaW4gPj0gMCAmJiBtaW4gPD0gMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImJldHdlZW5cIjpcclxuICAgICAgICB0aGlzLmlzRmlsdGVyUHJvcGVyID1cclxuICAgICAgICAgIG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID49IDAgJiYgbWF4IDw9IDEwMCAmJiBtaW4gPCBtYXg7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJQcm9wZXIgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBbGxWaXNpYmxlU2VsZWN0ZWQoZmlsdGVySW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdmlzaWJsZSA9IHRoaXMuZGlzcGxheWVkT3B0aW9uc1tmaWx0ZXJJbmRleF07XHJcbiAgICByZXR1cm4gdmlzaWJsZS5sZW5ndGggPiAwICYmIHZpc2libGUuZXZlcnkoKHYpID0+IHYuY2hlY2tlZCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFZpc2libGVTZWxlY3RlZEJ5RmlsdGVyKGZpbHRlcjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpID0gdGhpcy5maWx0ZXJzLmluZGV4T2YoZmlsdGVyKTtcclxuICAgIGlmIChpID09PSAtMSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNBbGxWaXNpYmxlU2VsZWN0ZWQoaSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGxWaXNpYmxlKGV2ZW50OiBhbnksIGZpbHRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1tmaWx0ZXJJbmRleF0uZm9yRWFjaChcclxuICAgICAgKG9wdCkgPT4gKG9wdC5jaGVja2VkID0gY2hlY2tlZClcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsdGVyc1tmaWx0ZXJJbmRleF0udGl0bGUgPT09IFwiQ291bnRyeVwiKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ2l0eUxpc3RGcm9tQVBJKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsVmlzaWJsZUJ5RmlsdGVyKGV2ZW50OiBhbnksIGZpbHRlcjogYW55KSB7XHJcbiAgICBjb25zdCBpID0gdGhpcy5maWx0ZXJzLmluZGV4T2YoZmlsdGVyKTtcclxuICAgIGlmIChpID09PSAtMSkgcmV0dXJuO1xyXG4gICAgdGhpcy50b2dnbGVTZWxlY3RBbGxWaXNpYmxlKGV2ZW50LCBpKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKGV2ZW50OiBhbnksIGZpbHRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHRlcm0gPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XHJcbiAgICBjb25zdCBmdWxsTGlzdCA9IHRoaXMuZmlsdGVyc1tmaWx0ZXJJbmRleF0ub3B0aW9ucztcclxuXHJcbiAgICBpZiAoIXRlcm0pIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zW2ZpbHRlckluZGV4XSA9IFsuLi5mdWxsTGlzdF07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpc3BsYXllZE9wdGlvbnNbZmlsdGVySW5kZXhdID0gZnVsbExpc3QuZmlsdGVyKChvKSA9PlxyXG4gICAgICBvLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnMubWFwKChmLCBpKSA9PiB7XHJcbiAgICAgIGlmIChmLnR5cGUgPT09IFwiY3VzdG9tXCIpIHtcclxuICAgICAgICBjb25zdCBjZCA9IHRoaXMuY3VzdG9tRGF0YVtpXTtcclxuXHJcbiAgICAgICAgaWYgKCFjZC50eXBlKSB7XHJcbiAgICAgICAgICByZXR1cm4geyB0aXRsZTogZi50aXRsZSwgc2VsZWN0ZWQ6IG51bGwgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBtaW4gPSBjZC5taW47XHJcbiAgICAgICAgbGV0IG1heCA9IGNkLm1heDtcclxuXHJcbiAgICAgICAgc3dpdGNoIChjZC50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwibGVzc2VyVGhhblwiOlxyXG4gICAgICAgICAgICBpZiAobWluICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGYudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogeyB0eXBlOiBjZC50eXBlLCBtaW46IDAsIG1heDogbWluIC0gMC4xIH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiZ3JlYXRlclRoYW5cIjpcclxuICAgICAgICAgICAgaWYgKG1pbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBmLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHsgdHlwZTogY2QudHlwZSwgbWluOiBtaW4gKyAwLjEsIG1heDogMTAwIH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwibGVzc2VyVGhhbkFuZEVxdWFsXCI6XHJcbiAgICAgICAgICAgIGlmIChtaW4gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZi50aXRsZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB7IHR5cGU6IGNkLnR5cGUsIG1pbjogMCwgbWF4OiBtaW4gfSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJncmVhdGVyVGhhbkFuZEVxdWFsXCI6XHJcbiAgICAgICAgICAgIGlmIChtaW4gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZi50aXRsZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB7IHR5cGU6IGNkLnR5cGUsIG1pbjogbWluLCBtYXg6IDEwMCB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcImJldHdlZW5cIjpcclxuICAgICAgICAgICAgaWYgKG1pbiAhPSBudWxsICYmIG1heCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdGl0bGU6IGYudGl0bGUsIHNlbGVjdGVkOiB7IHR5cGU6IGNkLnR5cGUsIG1pbiwgbWF4IH0gfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEludmFsaWQg4oaSIHJldHVybiBudWxsXHJcbiAgICAgICAgcmV0dXJuIHsgdGl0bGU6IGYudGl0bGUsIHNlbGVjdGVkOiBudWxsIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmLnR5cGUgPT09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICBjb25zdCBzZWwgPSBmLm9wdGlvbnMuZmluZCgobykgPT4gby5jaGVja2VkKTtcclxuICAgICAgICByZXR1cm4geyB0aXRsZTogZi50aXRsZSwgc2VsZWN0ZWQ6IHNlbCA/IHNlbC52YWx1ZSA6IG51bGwgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0aXRsZTogZi50aXRsZSxcclxuICAgICAgICBzZWxlY3RlZDogZi5vcHRpb25zLmZpbHRlcigobykgPT4gby5jaGVja2VkKS5tYXAoKG8pID0+IG8udmFsdWUpLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBlbWl0RmlsdGVyQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlZC5lbWl0KHRoaXMuZ2V0U2VsZWN0ZWREYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseUZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZikgPT4gKGYuaXNPcGVuZWQgPSBmYWxzZSkpO1xyXG4gICAgY29uc3QgZmluYWxEYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzLmVtaXQoZmluYWxEYXRhKTtcclxuXHJcbiAgICBjb25zdCBjb3VudHJ5ID0gZmluYWxEYXRhWzBdLnNlbGVjdGVkO1xyXG4gICAgY29uc3QgY2l0eSA9IGZpbmFsRGF0YVsxXS5zZWxlY3RlZDtcclxuICAgIGNvbnN0IGNvbXBsaWFuY2UgPSBmaW5hbERhdGFbMl0uc2VsZWN0ZWQ7XHJcbiAgICAvLyBjb25zdCBtZXRob2QgPSBldmVudFszXS5zZWxlY3RlZDtcclxuXHJcbiAgICBpZiAoY291bnRyeS5sZW5ndGggfHwgY2l0eS5sZW5ndGggfHwgY29tcGxpYW5jZSkge1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQXBwbGllZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRmlsdGVyQXBwbGllZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXNldEZpbHRlcigpIHtcclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmKSA9PiBmLm9wdGlvbnMuZm9yRWFjaCgobykgPT4gKG8uY2hlY2tlZCA9IGZhbHNlKSkpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyc1sxXS5vcHRpb25zID0gW107XHJcbiAgICB0aGlzLmRpc3BsYXllZE9wdGlvbnNbMV0gPSBbXTtcclxuXHJcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoXywgaSkgPT4ge1xyXG4gICAgICB0aGlzLmN1c3RvbURhdGFbaV0gPSB7IHR5cGU6IG51bGwsIG1pbjogbnVsbCwgbWF4OiBudWxsIH07XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1tpXSA9IFsuLi50aGlzLmZpbHRlcnNbaV0ub3B0aW9uc107XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZpbHRlclByb3BlciA9IHRydWU7XHJcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZikgPT4gKGYuaXNPcGVuZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy5sb2FkQ2l0aWVzKFtdKTtcclxuXHJcbiAgICB0aGlzLnJlc2V0RmlsdGVycy5lbWl0KHRoaXMuZ2V0U2VsZWN0ZWREYXRhKCkpO1xyXG4gICAgdGhpcy5pc0ZpbHRlckFwcGxpZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ291bnQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyc1tpbmRleF0ub3B0aW9ucy5maWx0ZXIoKG8pID0+IG8uY2hlY2tlZCkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRJdGVtKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnNbaW5kZXhdLm9wdGlvbnMuZmluZCgobykgPT4gby5jaGVja2VkKSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBmaWx0ZXItYnV0dG9uIHBvc2l0aW9uLXJlbGF0aXZlXCIgKGNsaWNrKT1cInRvZ2dsZUZpbHRlcigkZXZlbnQpXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk01IDEwSDE1TTIuNSA1SDE3LjVNNy41IDE1SDEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIEZpbHRlclxyXG4gICAgICAgIEBpZihpc0ZpbHRlckFwcGxpZWQpe1xyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImFjdGl2ZS1maWx0ZXJcIj5cclxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCIxMFwiIHI9XCI1XCIgZmlsbD1cInJlZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgfVxyXG5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIEBpZihpc0ZpbHRlck9wZW4pe1xyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1kcm9wZG93blwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDI+RmlsdGVyIE9wdGlvbnM8L2gyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvblJlc2V0RmlsdGVyKClcIj5SZXNldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwib25BcHBseUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRmlsdGVyUHJvcGVyXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItYm9keVwiPlxyXG5cclxuICAgICAgICAgICAgQGZvciAoZmlsdGVyIG9mIGZpbHRlcnM7IGxldCBmaSA9ICRpbmRleDsgdHJhY2sgZmkpIHtcclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXdyYXBwZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1idXR0b24gZm9ybS1zZWxlY3RcIiAoY2xpY2spPVwidG9nZ2xlSXRlbSgkZXZlbnQsIGZpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoZmlsdGVyLnR5cGUgPT09ICdtdWx0aScpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2ZpbHRlci50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihnZXRTZWxlY3RlZENvdW50KGZpKSA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlLWNvdW50XCI+e3sgZ2V0U2VsZWN0ZWRDb3VudChmaSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFNlbGVjdGVkSXRlbShmaSk/Lm5hbWUgPz8gZmlsdGVyLnRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGZpbHRlci50eXBlID09PSAnY3VzdG9tJyAmJiBnZXRTZWxlY3RlZEl0ZW0oZmkpPy52YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGN1c3RvbS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF4bGVuZ3RoKT1cIjNcIiBbKG5nTW9kZWwpXT1cImN1c3RvbURhdGFbZmldLm1pblwiIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlTnVtYmVyKGZpLCAnbWluJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCIwLTEwMCVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGdldFNlbGVjdGVkSXRlbShmaSk/LnZhbHVlID09PSAnYmV0d2Vlbicpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBjdXN0b20taW5wdXRcIiB0eXBlPVwidGV4dFwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBwYXR0ZXJuPVwiWzAtOV0qXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21EYXRhW2ZpXS5tYXhcIiAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZU51bWJlcihmaSwgJ21heCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiMC0xMDAlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgQGlmKGZpbHRlci5pc09wZW5lZCl7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kcm9wZG93blwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoZmlsdGVyLnR5cGUgPT09ICdtdWx0aScpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwiJ3NlbGVjdEFsbCcgKyBmaVwiIFtjaGVja2VkXT1cImlzQWxsVmlzaWJsZVNlbGVjdGVkQnlGaWx0ZXIoZmlsdGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFZpc2libGVCeUZpbHRlcigkZXZlbnQsIGZpbHRlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3NlbGVjdEFsbCcgKyBmaVwiPlNlbGVjdCBhbGw8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8aHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VhcmNoLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE3XCIgdmlld0JveD1cIjAgMCAxNiAxN1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNCAxNC41TDExLjEgMTEuNk0xMi42NjY3IDcuODMzMzNDMTIuNjY2NyAxMC43Nzg5IDEwLjI3ODkgMTMuMTY2NyA3LjMzMzMzIDEzLjE2NjdDNC4zODc4MSAxMy4xNjY3IDIgMTAuNzc4OSAyIDcuODMzMzNDMiA0Ljg4NzgxIDQuMzg3ODEgMi41IDcuMzMzMzMgMi41QzEwLjI3ODkgMi41IDEyLjY2NjcgNC44ODc4MSAxMi42NjY3IDcuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaC1maWVsZFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQsIGZpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGRpc3BsYXllZE9wdGlvbnNbZmldLmxlbmd0aCA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vLWRhdGFcIj5ObyBEYXRhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBAZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3Iob3B0aW9uIG9mIGRpc3BsYXllZE9wdGlvbnNbZmldOyBsZXQgb2kgPSAkaW5kZXg7IHRyYWNrIG9pKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGZpbHRlci50eXBlID09PSAnc2luZ2xlJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1vcHRpb25cIiAoY2xpY2spPVwib25TaW5nbGVTZWxlY3QoZmlsdGVyLCBvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmFkaW8tY2lyY2xlXCIgW2NsYXNzLnNlbGVjdGVkXT1cIm9wdGlvbi5jaGVja2VkXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgb3B0aW9uLm5hbWUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGZpbHRlci50eXBlID09PSAnbXVsdGknKXtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIm9wdGlvbi52YWx1ZVwiIFsobmdNb2RlbCldPVwib3B0aW9uLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvbkNoYW5nZShmaWx0ZXIsIG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwib3B0aW9uLnZhbHVlXCI+e3sgb3B0aW9uLm5hbWUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGZpbHRlci50eXBlID09PSAnY3VzdG9tJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1vcHRpb25cIiBbY2xhc3Muc2VsZWN0ZWRdPVwiZ2V0U2VsZWN0ZWRJdGVtKGZpKT8udmFsdWUgPT09IG9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkN1c3RvbVNlbGVjdChmaSwgZmlsdGVyLCBvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBvcHRpb24ubmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvZGl2PiJdfQ==
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbm8tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vZ3JhbS9wbGFuby10YWJsZS9wbGFuby1maWx0ZXIvcGxhbm8tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vZ3JhbS9wbGFuby10YWJsZS9wbGFuby1maWx0ZXIvcGxhbm8tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFVMUMsTUFBTSxPQUFPLG9CQUFvQjtJQXNEWDtJQXJEWCxRQUFRLENBQVM7SUFDakIsSUFBSSxHQUFLLEVBQUUsQ0FBQztJQUVyQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLGdCQUFnQixHQUFZLEVBQUUsQ0FBQztJQUMvQixjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFFakMsT0FBTyxHQUFHO1FBQ1IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBVyxFQUFFO1FBQzFFLEVBQUUsS0FBSyxFQUFFLE1BQU0s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QUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNwRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTljVSxvQkFBb0I7NEZBQXBCLG9CQUFvQixnVUN2QmpDLDgxTEFpSU0sMDBHRDlHTSxXQUFXLDJsQ0FBRSxZQUFZOzs0RkFJeEIsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO3dGQUszQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkEwQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBMkZQLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicGxhbm8tZmlsdGVyXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIENvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9wbGFuby1maWx0ZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3BsYW5vLWZpbHRlci5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhbm9GaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRhdGE6YW55PVtdO1xyXG5cclxuICBpc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICBkaXNwbGF5ZWRPcHRpb25zOiBhbnlbXVtdID0gW107XHJcbiAgaXNGaWx0ZXJQcm9wZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBmaWx0ZXJzID0gW1xyXG4gICAgeyB0aXRsZTogXCJDb3VudHJ5XCIsIHR5cGU6IFwibXVsdGlcIiwgaXNPcGVuZWQ6IGZhbHNlLCBvcHRpb25zOiBbXSBhcyBhbnlbXSB9LFxyXG4gICAgeyB0aXRsZTogXCJDaXR5XCIsIHR5cGU6IFwibXVsdGlcIiwgaXNPcGVuZWQ6IGZhbHNlLCBvcHRpb25zOiBbXSBhcyBhbnlbXSB9LFxyXG4gICAge1xyXG4gICAgICB0aXRsZTogXCJNZXJjaGFuZGlzZSBjb21wbGlhbmNlXCIsXHJcbiAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXHJcbiAgICAgIGlzT3BlbmVkOiBmYWxzZSxcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbmFtZTogXCI+IEdyZWF0ZXIgdGhhblwiLCB2YWx1ZTogXCJncmVhdGVyVGhhblwiLCBjaGVja2VkOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbmFtZTogXCI8IExlc3NlciB0aGFuXCIsIHZhbHVlOiBcImxlc3NlclRoYW5cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBcIj49IEdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1wiLFxyXG4gICAgICAgICAgdmFsdWU6IFwiZ3JlYXRlclRoYW5BbmRFcXVhbFwiLFxyXG4gICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBcIjw9IExlc3NlciB0aGFuIG9yIGVxdWFsIHRvXCIsXHJcbiAgICAgICAgICB2YWx1ZTogXCJsZXNzZXJUaGFuQW5kRXF1YWxcIixcclxuICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIiggKSBCZXR3ZWVuXCIsIHZhbHVlOiBcImJldHdlZW5cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHRpdGxlOiBcIlN0b3JlIGNhdGVnb3J5XCIsXHJcbiAgICAgIHR5cGU6IFwic2luZ2xlXCIsXHJcbiAgICAgIGlzT3BlbmVkOiBmYWxzZSxcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbmFtZTogXCJBbGxcIiwgdmFsdWU6IFwiXCIsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBuYW1lOiBcIklWTVwiLCB2YWx1ZTogXCJpdm1cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgICB7IG5hbWU6IFwiTm9uIElWTVwiLCB2YWx1ZTogXCJub25pdm1cIiwgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgQE91dHB1dCgpIGFwcGx5RmlsdGVycyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSByZXNldEZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjdXN0b21EYXRhOiB7XHJcbiAgICB0eXBlOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbWluOiBudW1iZXIgfCBudWxsO1xyXG4gICAgbWF4OiBudW1iZXIgfCBudWxsO1xyXG4gIH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmVCdWlsZGVyU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc3BsYXllZE9wdGlvbnMgPSB0aGlzLmZpbHRlcnMubWFwKChmKSA9PlxyXG4gICAgICBmLm9wdGlvbnMgPyBbLi4uZi5vcHRpb25zXSA6IFtdXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChfLCBpKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVtpXSA9IHsgdHlwZTogbnVsbCwgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJjbGllbnRJZFwiXT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9hZENvdW50cmllcygpO1xyXG4gICAgICB0aGlzLmxvYWRDaXRpZXMoW10pO1xyXG4gICAgfVxyXG4gICAgaWYoY2hhbmdlc1snZGF0YSddPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goLi4udGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcigoZWxlKSA9PiBlbGUudGl0bGUgIT0gJ01lcmNoYW5kaXNlIGNvbXBsaWFuY2UnICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkQ291bnRyaWVzKCkge1xyXG4gICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb3VudHJpZXMoeyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cmllcyA9XHJcbiAgICAgICAgICAgICAgcmVzPy5kYXRhPy5jb3VudHJ5RGF0YS5tYXAoKGM6IGFueSkgPT4gYy5jb3VudHJ5KSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1swXS5vcHRpb25zID0gY291bnRyaWVzLm1hcCgoYzogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgIG5hbWU6IGMsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGMsXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zWzBdID0gWy4uLnRoaXMuZmlsdGVyc1swXS5vcHRpb25zXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkBAIH4gbG9hZENvdW50cmllcyBbRVJSXTpcIiwgZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRDaXRpZXMoc2VsZWN0ZWRDb3VudHJpZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgY291bnRyeTogc2VsZWN0ZWRDb3VudHJpZXMsXHJcbiAgICAgIGNpdHk6IFtdLFxyXG4gICAgICBncm91cDogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRSZWdpb25zKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgcmVnaW9ucyA9XHJcbiAgICAgICAgICAgICAgcmVzPy5kYXRhPy5sb2NhdGlvbkRhdGE/Lm1hcCgocjogYW55KSA9PiByPy5jaXR5KSA/PyBbXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG9sZENoZWNrZWQgPSB0aGlzLmZpbHRlcnNbMV0ub3B0aW9uc1xyXG4gICAgICAgICAgICAgIC5maWx0ZXIoKG8pID0+IG8uY2hlY2tlZClcclxuICAgICAgICAgICAgICAubWFwKChvKSA9PiBvLnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1sxXS5vcHRpb25zID0gcmVnaW9ucy5tYXAoKGNpdHk6IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICBuYW1lOiBjaXR5LFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjaXR5LFxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IG9sZENoZWNrZWQuaW5jbHVkZXMoY2l0eSksXHJcbiAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1sxXSA9IFsuLi50aGlzLmZpbHRlcnNbMV0ub3B0aW9uc107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJAQCB+IGxvYWRDaXRpZXMgW0VSUl06XCIsIGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGhhbmRsZURvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoXCIuaXRlbS1idXR0b25cIikgfHwgdGFyZ2V0LmNsb3Nlc3QoXCIuaXRlbS1kcm9wZG93blwiKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmLCBpKSA9PiB7XHJcbiAgICAgIGlmIChmLmlzT3BlbmVkKSB0aGlzLnJlc2V0U2VhcmNoKGkpO1xyXG4gICAgICBmLmlzT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoXCIuZmlsdGVyLWRyb3Bkb3duXCIpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZpbHRlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9ICF0aGlzLmlzRmlsdGVyT3BlbjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0ZW0oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW1JbmRleDogbnVtYmVyKSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZiwgaSkgPT4ge1xyXG4gICAgICBpZiAoaSA9PT0gaXRlbUluZGV4KSB7XHJcbiAgICAgICAgZi5pc09wZW5lZCA9ICFmLmlzT3BlbmVkO1xyXG4gICAgICAgIGlmICghZi5pc09wZW5lZCkgdGhpcy5yZXNldFNlYXJjaChpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZi5pc09wZW5lZCkgdGhpcy5yZXNldFNlYXJjaChpKTtcclxuICAgICAgICBmLmlzT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTZWFyY2goZmlsdGVySW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zW2ZpbHRlckluZGV4XSA9IFsuLi50aGlzLmZpbHRlcnNbZmlsdGVySW5kZXhdLm9wdGlvbnNdO1xyXG4gIH1cclxuXHJcbiAgb25TaW5nbGVTZWxlY3QoZmlsdGVyOiBhbnksIG9wdGlvbjogYW55KSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVycy5pbmRleE9mKGZpbHRlcik7XHJcbiAgICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5maWx0ZXJzW2luZGV4XS5vcHRpb25zLmZvckVhY2goKG8pID0+IChvLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgb3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1tpbmRleF0gPSBbLi4udGhpcy5maWx0ZXJzW2luZGV4XS5vcHRpb25zXTtcclxuICAgIHRoaXMuZmlsdGVyc1tpbmRleF0uaXNPcGVuZWQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoZmlsdGVyLnRpdGxlID09PSBcIkNvdW50cnlcIikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNpdHlMaXN0RnJvbUFQSSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdEZpbHRlckNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uQ3VzdG9tU2VsZWN0KGZpOiBudW1iZXIsIGZpbHRlcjogYW55LCBvcHRpb246IGFueSkge1xyXG4gICAgdGhpcy5maWx0ZXJzW2ZpXS5vcHRpb25zLmZvckVhY2goKG8pID0+IChvLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgb3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1tmaV0gPSBbLi4udGhpcy5maWx0ZXJzW2ZpXS5vcHRpb25zXTtcclxuICAgIHRoaXMuZmlsdGVyc1tmaV0uaXNPcGVuZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmN1c3RvbURhdGFbZmldID0ge1xyXG4gICAgICB0eXBlOiBvcHRpb24udmFsdWUsXHJcbiAgICAgIG1pbjogbnVsbCxcclxuICAgICAgbWF4OiBudWxsLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlQ3VzdG9tRmlsdGVyKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbk9wdGlvbkNoYW5nZShmaWx0ZXI6IGFueSwgb3B0aW9uOiBhbnkpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzLmluZGV4T2YoZmlsdGVyKTtcclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybjtcclxuXHJcbiAgICBpZiAoZmlsdGVyLnRpdGxlID09PSBcIkNvdW50cnlcIikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNpdHlMaXN0RnJvbUFQSSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdEZpbHRlckNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNpdHlMaXN0RnJvbUFQSSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkQ291bnRyaWVzID0gdGhpcy5maWx0ZXJzWzBdLm9wdGlvbnNcclxuICAgICAgLmZpbHRlcigobykgPT4gby5jaGVja2VkKVxyXG4gICAgICAubWFwKChvKSA9PiBvLnZhbHVlKTtcclxuICAgIHRoaXMubG9hZENpdGllcyhzZWxlY3RlZENvdW50cmllcyk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZU51bWJlcihmaTogbnVtYmVyLCBmaWVsZDogXCJtaW5cIiB8IFwibWF4XCIpIHtcclxuICAgIGxldCBuID0gdGhpcy5jdXN0b21EYXRhW2ZpXVtmaWVsZF07XHJcblxyXG4gICAgaWYgKG4gPT09IG51bGwgfHwgbiA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKE51bWJlcihuKSkpIHtcclxuICAgICAgdGhpcy5jdXN0b21EYXRhW2ZpXVtmaWVsZF0gPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXN0b21EYXRhW2ZpXVtmaWVsZF0gPSBNYXRoLm1pbihOdW1iZXIobiksIDEwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWxpZGF0ZUN1c3RvbUZpbHRlcigpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBsZXQgdiA9IGlucHV0LnZhbHVlLnJlcGxhY2UoL1teMC05XS9nLCBcIlwiKS5zbGljZSgwLCAzKTtcclxuICAgIGlucHV0LnZhbHVlID0gdjtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlQ3VzdG9tRmlsdGVyKCkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnMuZmluZEluZGV4KChmKSA9PiBmLnR5cGUgPT09IFwiY3VzdG9tXCIpO1xyXG5cclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5pc0ZpbHRlclByb3BlciA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25mID0gdGhpcy5jdXN0b21EYXRhW2luZGV4XTtcclxuXHJcbiAgICBpZiAoIWNvbmYudHlwZSkge1xyXG4gICAgICB0aGlzLmlzRmlsdGVyUHJvcGVyID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1pbiA9IGNvbmYubWluO1xyXG4gICAgY29uc3QgbWF4ID0gY29uZi5tYXg7XHJcblxyXG4gICAgc3dpdGNoIChjb25mLnR5cGUpIHtcclxuICAgICAgY2FzZSBcImdyZWF0ZXJUaGFuXCI6XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlclByb3BlciA9IG1pbiAhPT0gbnVsbCAmJiBtaW4gPj0gMCAmJiBtaW4gPCAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwibGVzc2VyVGhhblwiOlxyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJQcm9wZXIgPSBtaW4gIT09IG51bGwgJiYgbWluID4gMCAmJiBtaW4gPD0gMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImdyZWF0ZXJUaGFuQW5kRXF1YWxcIjpcclxuICAgICAgICB0aGlzLmlzRmlsdGVyUHJvcGVyID0gbWluICE9PSBudWxsICYmIG1pbiA+PSAwICYmIG1pbiA8PSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwibGVzc2VyVGhhbkFuZEVxdWFsXCI6XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlclByb3BlciA9IG1pbiAhPT0gbnVsbCAmJiBtaW4gPj0gMCAmJiBtaW4gPD0gMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcImJldHdlZW5cIjpcclxuICAgICAgICB0aGlzLmlzRmlsdGVyUHJvcGVyID1cclxuICAgICAgICAgIG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID49IDAgJiYgbWF4IDw9IDEwMCAmJiBtaW4gPCBtYXg7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJQcm9wZXIgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBbGxWaXNpYmxlU2VsZWN0ZWQoZmlsdGVySW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdmlzaWJsZSA9IHRoaXMuZGlzcGxheWVkT3B0aW9uc1tmaWx0ZXJJbmRleF07XHJcbiAgICByZXR1cm4gdmlzaWJsZS5sZW5ndGggPiAwICYmIHZpc2libGUuZXZlcnkoKHYpID0+IHYuY2hlY2tlZCk7XHJcbiAgfVxyXG5cclxuICBpc0FsbFZpc2libGVTZWxlY3RlZEJ5RmlsdGVyKGZpbHRlcjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpID0gdGhpcy5maWx0ZXJzLmluZGV4T2YoZmlsdGVyKTtcclxuICAgIGlmIChpID09PSAtMSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNBbGxWaXNpYmxlU2VsZWN0ZWQoaSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGxWaXNpYmxlKGV2ZW50OiBhbnksIGZpbHRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1tmaWx0ZXJJbmRleF0uZm9yRWFjaChcclxuICAgICAgKG9wdCkgPT4gKG9wdC5jaGVja2VkID0gY2hlY2tlZClcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsdGVyc1tmaWx0ZXJJbmRleF0udGl0bGUgPT09IFwiQ291bnRyeVwiKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ2l0eUxpc3RGcm9tQVBJKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWl0RmlsdGVyQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsVmlzaWJsZUJ5RmlsdGVyKGV2ZW50OiBhbnksIGZpbHRlcjogYW55KSB7XHJcbiAgICBjb25zdCBpID0gdGhpcy5maWx0ZXJzLmluZGV4T2YoZmlsdGVyKTtcclxuICAgIGlmIChpID09PSAtMSkgcmV0dXJuO1xyXG4gICAgdGhpcy50b2dnbGVTZWxlY3RBbGxWaXNpYmxlKGV2ZW50LCBpKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKGV2ZW50OiBhbnksIGZpbHRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHRlcm0gPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XHJcbiAgICBjb25zdCBmdWxsTGlzdCA9IHRoaXMuZmlsdGVyc1tmaWx0ZXJJbmRleF0ub3B0aW9ucztcclxuXHJcbiAgICBpZiAoIXRlcm0pIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zW2ZpbHRlckluZGV4XSA9IFsuLi5mdWxsTGlzdF07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpc3BsYXllZE9wdGlvbnNbZmlsdGVySW5kZXhdID0gZnVsbExpc3QuZmlsdGVyKChvKSA9PlxyXG4gICAgICBvLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkRGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnMubWFwKChmLCBpKSA9PiB7XHJcbiAgICAgIGlmIChmLnR5cGUgPT09IFwiY3VzdG9tXCIpIHtcclxuICAgICAgICBjb25zdCBjZCA9IHRoaXMuY3VzdG9tRGF0YVtpXTtcclxuXHJcbiAgICAgICAgaWYgKCFjZC50eXBlKSB7XHJcbiAgICAgICAgICByZXR1cm4geyB0aXRsZTogZi50aXRsZSwgc2VsZWN0ZWQ6IG51bGwgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBtaW4gPSBjZC5taW47XHJcbiAgICAgICAgbGV0IG1heCA9IGNkLm1heDtcclxuXHJcbiAgICAgICAgc3dpdGNoIChjZC50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwibGVzc2VyVGhhblwiOlxyXG4gICAgICAgICAgICBpZiAobWluICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGYudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogeyB0eXBlOiBjZC50eXBlLCBtaW46IDAsIG1heDogbWluIC0gMC4xIH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiZ3JlYXRlclRoYW5cIjpcclxuICAgICAgICAgICAgaWYgKG1pbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBmLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHsgdHlwZTogY2QudHlwZSwgbWluOiBtaW4gKyAwLjEsIG1heDogMTAwIH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwibGVzc2VyVGhhbkFuZEVxdWFsXCI6XHJcbiAgICAgICAgICAgIGlmIChtaW4gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZi50aXRsZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB7IHR5cGU6IGNkLnR5cGUsIG1pbjogMCwgbWF4OiBtaW4gfSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJncmVhdGVyVGhhbkFuZEVxdWFsXCI6XHJcbiAgICAgICAgICAgIGlmIChtaW4gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZi50aXRsZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB7IHR5cGU6IGNkLnR5cGUsIG1pbjogbWluLCBtYXg6IDEwMCB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcImJldHdlZW5cIjpcclxuICAgICAgICAgICAgaWYgKG1pbiAhPSBudWxsICYmIG1heCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdGl0bGU6IGYudGl0bGUsIHNlbGVjdGVkOiB7IHR5cGU6IGNkLnR5cGUsIG1pbiwgbWF4IH0gfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEludmFsaWQg4oaSIHJldHVybiBudWxsXHJcbiAgICAgICAgcmV0dXJuIHsgdGl0bGU6IGYudGl0bGUsIHNlbGVjdGVkOiBudWxsIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmLnR5cGUgPT09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICBjb25zdCBzZWwgPSBmLm9wdGlvbnMuZmluZCgobykgPT4gby5jaGVja2VkKTtcclxuICAgICAgICByZXR1cm4geyB0aXRsZTogZi50aXRsZSwgc2VsZWN0ZWQ6IHNlbCA/IHNlbC52YWx1ZSA6IG51bGwgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0aXRsZTogZi50aXRsZSxcclxuICAgICAgICBzZWxlY3RlZDogZi5vcHRpb25zLmZpbHRlcigobykgPT4gby5jaGVja2VkKS5tYXAoKG8pID0+IG8udmFsdWUpLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBlbWl0RmlsdGVyQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlZC5lbWl0KHRoaXMuZ2V0U2VsZWN0ZWREYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgb25BcHBseUZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZikgPT4gKGYuaXNPcGVuZWQgPSBmYWxzZSkpO1xyXG4gICAgY29uc3QgZmluYWxEYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGEoKTtcclxuXHJcbiAgICB0aGlzLmFwcGx5RmlsdGVycy5lbWl0KGZpbmFsRGF0YSk7XHJcblxyXG4gICAgY29uc3QgY291bnRyeSA9IGZpbmFsRGF0YVswXS5zZWxlY3RlZDtcclxuICAgIGNvbnN0IGNpdHkgPSBmaW5hbERhdGFbMV0uc2VsZWN0ZWQ7XHJcbiAgICBjb25zdCBjb21wbGlhbmNlID0gZmluYWxEYXRhWzJdLnNlbGVjdGVkO1xyXG4gICAgY29uc3QgcGxhbm9TdHJhdGVneSA9IGZpbmFsRGF0YVszXS5zZWxlY3RlZDtcclxuXHJcbiAgICBpZiAoY291bnRyeS5sZW5ndGggfHwgY2l0eS5sZW5ndGggfHwgY29tcGxpYW5jZSB8fCBwbGFub1N0cmF0ZWd5KSB7XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlc2V0RmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJzLmZvckVhY2goKGYpID0+IGYub3B0aW9ucy5mb3JFYWNoKChvKSA9PiAoby5jaGVja2VkID0gZmFsc2UpKSk7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJzWzFdLm9wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMuZGlzcGxheWVkT3B0aW9uc1sxXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChfLCBpKSA9PiB7XHJcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVtpXSA9IHsgdHlwZTogbnVsbCwgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zW2ldID0gWy4uLnRoaXMuZmlsdGVyc1tpXS5vcHRpb25zXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRmlsdGVyUHJvcGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmKSA9PiAoZi5pc09wZW5lZCA9IGZhbHNlKSk7XHJcbiAgICB0aGlzLmxvYWRDaXRpZXMoW10pO1xyXG5cclxuICAgIHRoaXMucmVzZXRGaWx0ZXJzLmVtaXQodGhpcy5nZXRTZWxlY3RlZERhdGEoKSk7XHJcbiAgICB0aGlzLmlzRmlsdGVyQXBwbGllZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRDb3VudChpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzW2luZGV4XS5vcHRpb25zLmZpbHRlcigobykgPT4gby5jaGVja2VkKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZEl0ZW0oaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyc1tpbmRleF0ub3B0aW9ucy5maW5kKChvKSA9PiBvLmNoZWNrZWQpID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGZpbHRlci1idXR0b24gcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2spPVwidG9nZ2xlRmlsdGVyKCRldmVudClcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTUgMTBIMTVNMi41IDVIMTcuNU03LjUgMTVIMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgQGlmKGlzRmlsdGVyQXBwbGllZCl7XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiYWN0aXZlLWZpbHRlclwiPlxyXG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjVcIiBmaWxsPVwicmVkXCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICB9XHJcblxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgQGlmKGlzRmlsdGVyT3Blbil7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duXCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxoMj5GaWx0ZXIgT3B0aW9uczwvaDI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uUmVzZXRGaWx0ZXIoKVwiPlJlc2V0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJvbkFwcGx5RmlsdGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNGaWx0ZXJQcm9wZXJcIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1ib2R5XCI+XHJcblxyXG4gICAgICAgICAgICBAZm9yIChmaWx0ZXIgb2YgZmlsdGVyczsgbGV0IGZpID0gJGluZGV4OyB0cmFjayBmaSkge1xyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0td3JhcHBlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWJ1dHRvbiBmb3JtLXNlbGVjdFwiIChjbGljayk9XCJ0b2dnbGVJdGVtKCRldmVudCwgZmkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihmaWx0ZXIudHlwZSA9PT0gJ211bHRpJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmlsdGVyLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGdldFNlbGVjdGVkQ291bnQoZmkpID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UtY291bnRcIj57eyBnZXRTZWxlY3RlZENvdW50KGZpKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0U2VsZWN0ZWRJdGVtKGZpKT8ubmFtZSA/PyBmaWx0ZXIudGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoZmlsdGVyLnR5cGUgPT09ICdjdXN0b20nICYmIGdldFNlbGVjdGVkSXRlbShmaSk/LnZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY3VzdG9tLWlucHV0XCIgdHlwZT1cInRleHRcIiBpbnB1dG1vZGU9XCJudW1lcmljXCIgcGF0dGVybj1cIlswLTldKlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXhsZW5ndGgpPVwiM1wiIFsobmdNb2RlbCldPVwiY3VzdG9tRGF0YVtmaV0ubWluXCIgKG5nTW9kZWxDaGFuZ2UpPVwidmFsaWRhdGVOdW1iZXIoZmksICdtaW4nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIiBwbGFjZWhvbGRlcj1cIjAtMTAwJVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoZ2V0U2VsZWN0ZWRJdGVtKGZpKT8udmFsdWUgPT09ICdiZXR3ZWVuJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGN1c3RvbS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgaW5wdXRtb2RlPVwibnVtZXJpY1wiIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1c3RvbURhdGFbZmldLm1heFwiIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlTnVtYmVyKGZpLCAnbWF4JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCIwLTEwMCVcIj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYoZmlsdGVyLmlzT3BlbmVkKXtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRyb3Bkb3duXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihmaWx0ZXIudHlwZSA9PT0gJ211bHRpJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCInc2VsZWN0QWxsJyArIGZpXCIgW2NoZWNrZWRdPVwiaXNBbGxWaXNpYmxlU2VsZWN0ZWRCeUZpbHRlcihmaWx0ZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsVmlzaWJsZUJ5RmlsdGVyKCRldmVudCwgZmlsdGVyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInc2VsZWN0QWxsJyArIGZpXCI+U2VsZWN0IGFsbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxocj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE2IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0IDE0LjVMMTEuMSAxMS42TTEyLjY2NjcgNy44MzMzM0MxMi42NjY3IDEwLjc3ODkgMTAuMjc4OSAxMy4xNjY3IDcuMzMzMzMgMTMuMTY2N0M0LjM4NzgxIDEzLjE2NjcgMiAxMC43Nzg5IDIgNy44MzMzM0MyIDQuODg3ODEgNC4zODc4MSAyLjUgNy4zMzMzMyAyLjVDMTAuMjc4OSAyLjUgMTIuNjY2NyA0Ljg4NzgxIDEyLjY2NjcgNy44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoLWZpZWxkXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoKCRldmVudCwgZmkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoZGlzcGxheWVkT3B0aW9uc1tmaV0ubGVuZ3RoID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm8tZGF0YVwiPk5vIERhdGE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGZvcihvcHRpb24gb2YgZGlzcGxheWVkT3B0aW9uc1tmaV07IGxldCBvaSA9ICRpbmRleDsgdHJhY2sgb2kpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoZmlsdGVyLnR5cGUgPT09ICdzaW5nbGUnKXtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLW9wdGlvblwiIChjbGljayk9XCJvblNpbmdsZVNlbGVjdChmaWx0ZXIsIG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyYWRpby1jaXJjbGVcIiBbY2xhc3Muc2VsZWN0ZWRdPVwib3B0aW9uLmNoZWNrZWRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBvcHRpb24ubmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoZmlsdGVyLnR5cGUgPT09ICdtdWx0aScpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwib3B0aW9uLnZhbHVlXCIgWyhuZ01vZGVsKV09XCJvcHRpb24uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uT3B0aW9uQ2hhbmdlKGZpbHRlciwgb3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoZmlsdGVyLnR5cGUgPT09ICdjdXN0b20nKXtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW9wdGlvblwiIFtjbGFzcy5zZWxlY3RlZF09XCJnZXRTZWxlY3RlZEl0ZW0oZmkpPy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ3VzdG9tU2VsZWN0KGZpLCBmaWx0ZXIsIG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IG9wdGlvbi5uYW1lIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuPC9kaXY+Il19