asp-lib 1.1.4 → 1.1.5
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/esm2022/lib/asp-lib.module.mjs +5 -2
- package/esm2022/lib/change-password/change-password.component.mjs +1 -1
- package/esm2022/lib/entity-admin/entity-admin.component.mjs +9 -5
- package/esm2022/lib/form/form.component.mjs +44 -11
- package/esm2022/lib/header/header.component.mjs +2 -2
- package/esm2022/lib/items-selector/items-selector.component.mjs +15 -4
- package/esm2022/lib/items-viewer/items-viewer.component.mjs +5 -2
- package/esm2022/lib/menu-admin/menu-admin.component.mjs +3 -3
- package/esm2022/lib/nested-items-selector/nested-items-selector.component.mjs +1 -1
- package/esm2022/lib/role-menu-options/role-menu-options.component.mjs +221 -0
- package/esm2022/lib/select/select.component.mjs +3 -3
- package/esm2022/lib/tree/tree.component.mjs +3 -3
- package/esm2022/lib/utils/services/SecurityServicesDefault.mjs +10 -2
- package/fesm2022/asp-lib.mjs +388 -111
- package/fesm2022/asp-lib.mjs.map +1 -1
- package/lib/asp-lib.module.d.ts +18 -17
- package/lib/form/form.component.d.ts +6 -2
- package/lib/items-selector/items-selector.component.d.ts +2 -1
- package/lib/items-viewer/items-viewer.component.d.ts +2 -1
- package/lib/role-menu-options/role-menu-options.component.d.ts +84 -0
- package/lib/utils/services/SecurityServicesDefault.d.ts +5 -1
- package/package.json +1 -1
|
@@ -264,7 +264,7 @@ export class HeaderComponent {
|
|
|
264
264
|
return this.router.url.split('?')[0];
|
|
265
265
|
}
|
|
266
266
|
getModules() {
|
|
267
|
-
this.services.
|
|
267
|
+
this.services.getModulesByUser(this.servicesConfig.baseUrl).subscribe((data) => {
|
|
268
268
|
if (data.load) {
|
|
269
269
|
this.moduleList = data.load;
|
|
270
270
|
}
|
|
@@ -422,4 +422,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
422
422
|
}], lastOption: [{
|
|
423
423
|
type: Output
|
|
424
424
|
}] } });
|
|
425
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBWSxNQUFNLGtDQUFrQyxDQUFDO0FBSTFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQW9CdEMsTUFBTSxPQUFPLGVBQWU7SUFzRDFCLFlBQW9CLFFBQXlCLEVBQVMsTUFBYyxFQUFTLEtBQXFCLEVBQVMsR0FBc0IsRUFBUyxRQUF5QjtRQUEvSSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFyRDFKLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUMxQixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixhQUFRLEdBQVMsRUFBQyxVQUFVLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JC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QUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBYztRQUM1QixJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUM7U0FDZjtRQUVELE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzsrR0F4YVUsZUFBZTttR0FBZixlQUFlLG1mQzFCNUIsNjNDQTRCUzs7NEZERkksZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZO3VOQUtiLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZHJvcGRvd25Db21wYW5pZXNPcHRpb25zLCBkcm9wZG93bk5vdGlmaWNhdGlvbk9wdGlvbnMsIGRyb3Bkb3duUmVjZW50T3B0aW9ucywgbWVudURhdGEgfSBmcm9tICcuLi9hc3NldHMvbWVudS1kYXRhL21lbnVEYXRhVGVzdCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBEYXRhLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTZXJ2aWNlc0NvbmZpZyB9IGZyb20gJy4uL3V0aWxzL21vZGVscy9TZXJ2aWNlc0NvbmZpZyc7XHJcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZXMgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlcy9TZWN1cml0eVNlcnZpY2VzRGVmYXVsdCc7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duT3B0aW9ucyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHBhcmVudElkOiBhbnk7XHJcbiAgb3B0aW9uczogRHJvcGRvd25PcHRpb25DYXRlcmdvcnlbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93bk9wdGlvbkNhdGVyZ29yeSB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uL2Fzc2V0cy9mb250cy9zdHlsZS5jc3MnLCAnLi4vYXNzZXRzL3RoZW1lLnNjc3MnLCcuL2hlYWRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGFwcExvZ286IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHRoZW1lOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgc2hvd0JhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1lbnVEYXRhOiBEYXRhID0ge2NhdGVnb3JpZXM6IFtdfTtcclxuICBASW5wdXQoKSByZWNlbnRPcHRpb25zIDphbnkgPSBbXTtcclxuICBASW5wdXQoKSBjb21wYW5pZXMgOmFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIG1vZHVsZUxpc3Q6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGF1dG86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXJ2aWNlc0NvbmZpZzogU2VydmljZXNDb25maWcgPSB7XHJcbiAgICBiYXNlVXJsOiAnJyxcclxuICAgIGlzRGV2OiBmYWxzZSxcclxuICAgIHVzZXJuYW1lOiAnJyxcclxuICAgIHBhc3N3b3JkOiAnJyxcclxuICAgIGNoZWNrUm9sZTogZmFsc2VcclxuICB9O1xyXG4gIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHJldHVybkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG1lbnVJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgbWVudU5hdmlnYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJlY2VudE5hdmlnYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7ICBcclxuICBAT3V0cHV0KCkgbW9kdWxlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGxhc3RPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBcclxuICBpc0F1dGgkOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgdW5kZWZpbmVkO1xyXG4gIGRyb3Bkb3duT3B0aW9ucyA9IGRyb3Bkb3duUmVjZW50T3B0aW9ucztcclxuICBub3RpZmljYXRpb25PcHRpb25zID0gZHJvcGRvd25Ob3RpZmljYXRpb25PcHRpb25zO1xyXG4gIGNvbXBhbmllc0Ryb3Bkb3duID0gZHJvcGRvd25Db21wYW5pZXNPcHRpb25zO1xyXG4gIGN1cnJlbnRNb2R1bGVPcHRpb246IGFueTtcclxuICBzZWxlY3RlZE9wdGlvbjogYW55O1xyXG4gIGRyb3Bkb3duT3B0aW9uc01lbnU6IERyb3Bkb3duT3B0aW9uc1tdID0gWyBcclxuICAgIHtcclxuICAgICAgaWQ6IDAsXHJcbiAgICAgIGxhYmVsOiAnTG9yZW0gSXBzdW0nLFxyXG4gICAgICBwYXJlbnRJZDogbnVsbCxcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1jb25maWd1cmF0aW9uJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1idXMtZ2F2aW90YScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtc2F0ZWxpdGUnIH0sXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiAwLFxyXG4gICAgICBsYWJlbDogJ0xvcmVtIElwc3VtJyxcclxuICAgICAgcGFyZW50SWQ6IG51bGwsXHJcbiAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtdmlkZW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLXJ1dGUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLWNhbGVuZGFyJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1kYXNoYm9hcmQnIH0sICBcclxuICAgICAgXVxyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZXM6U2VjdXJpdHlTZXJ2aWNlcyxwcml2YXRlIHJvdXRlcjogUm91dGVyLHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIHNuYWNrYmFyOiBTbmFja2JhclNlcnZpY2Upe1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBcclxuICAgIGlmKHRoaXMuYXV0byl7XHJcbiAgICAgIHRoaXMuaXNBdXRoJCA9IHRoaXMuaXNBdXRoKCk7XHJcbiAgICAgIHRoaXMuaXNBdXRoJC5zdWJzY3JpYmUoaXNBdXRoZW50aWNhdGVkID0+IHtcclxuICAgICAgICBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgICBpZih0aGlzLnNlcnZpY2VzQ29uZmlnLmlzRGV2KXtcclxuICAgICAgICAgICAgaWYodGhpcy5zZXJ2aWNlc0NvbmZpZy5jaGVja1JvbGUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja1Jlc291cmNlKCk7XHJcbiAgICAgICAgICAgICAgaWYoIXRoaXMuaXNNb2JpbGUpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1Jlc291cmNlQnlSb2xlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLmdldEhpc3RvcnkoKTtcclxuICAgICAgICAgICAgICB0aGlzLmdldENvbXBhbmllcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1Jlc291cmNlKCk7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmlzTW9iaWxlKXtcclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2VCeVJvbGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgICAgIHdpbmRvdy5vcGVuKCcvJywgJ19zZWxmJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTsgICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQXV0aCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZXMuaXNBdXRoZW50aWNhdGVkKHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCkucGlwZShcclxuICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgaWYodGhpcy5zZXJ2aWNlc0NvbmZpZy5pc0Rldil7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kb0xvZ2luKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkb0xvZ2luKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlcy5sb2dpbih0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXNDb25maWcudXNlcm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXNDb25maWcucGFzc3dvcmQpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6YW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7ICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7ICAgICAgICBcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPcHRpb25TZWxlY3RlZChvcHRpb246IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIHRoaXMubmF2aWdhdGVUb09wdGlvbihvcHRpb24pOyBcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbXBhbnlTZWxlY3RlZChhZ2VuY3k6YW55KSB7XHJcbiAgICB0aGlzLnNlcnZpY2VzLnNldERlZmF1bHRBZ2VuY3kodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsLGFnZW5jeS5pZCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYoZGF0YS5yZXNwb25zZUNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgIHRoaXMuc25hY2tiYXIuc3VjY2VzcygnQ2FtYmlvIGRlIEFnZW5jaWEgcmVhbGl6YWRvIGNvbiDDqXhpdG8nKTtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtQ2xpY2sodXJsOiBhbnkpIHtcclxuICAgIGlmKCF0aGlzLmF1dG8pe1xyXG4gICAgICB0aGlzLm1lbnVOYXZpZ2F0ZS5lbWl0KHVybCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgY29uc3QgdXJsT2JqID0gdXJsLnVybFNlbmQ7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0gdXJsLmV2ZW50O1xyXG4gICAgXHJcbiAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICBpZih1cmxPYmoudXJsKXtcclxuICAgICAgICB0aGlzLnNlcnZpY2VzLnNhdmVIaXN0b3J5KHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCx7b3B0aW9uSWQ6IHVybE9iai5pZH0pLnN1YnNjcmliZShcclxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvT3B0aW9uKHVybE9iaik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8qXHJcbiAgICAgIHRoaXMuaW5ib3hTZXJ2aWNlLnNhdmVIaXN0b3J5KHtvcHRpb25JZDogdXJsT2JqLmlkfSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHsgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgICovXHJcbiAgICB9ICBcclxuICB9XHJcblxyXG4gIGFycm93Q2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZighdGhpcy5hdXRvKXtcclxuICAgICAgdGhpcy5yZXR1cm5DbGljay5lbWl0KCRldmVudCk7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgb25JdGVtTW9kdWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSl7XHJcbiAgICBpZighdGhpcy5hdXRvKXtcclxuICAgICAgdGhpcy5tb2R1bGVTZWxlY3QuZW1pdChldmVudC5pZCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5jdXJyZW50TW9kdWxlKGV2ZW50LmlkKTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGFuaWVzKCl7XHJcbiAgICB0aGlzLnNlcnZpY2VzLmdldENvbXBhbmllc0luZm8odGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgaWYoZGF0YS5sb2FkKXtcclxuICAgICAgICAgICAgICBjb25zdCBjYWMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ0FDJyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2NjID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NDQycpO1xyXG4gICAgICAgICAgICAgIGlmKGNhYyAmJiBjY2Mpe1xyXG4gICAgICAgICAgICAgICAgZGF0YS5sb2FkLmZvckVhY2goKGM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjLmFnZW5jaWVzLmZvckVhY2goKGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGEuYWdlbmN5Q29kZSA9PSBjYWMgJiYgYy5jb21wYW55Q29kZSA9PSBjY2Mpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgYy5pc09wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB0aGlzLmNvbXBhbmllcyA9IGRhdGEubG9hZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEhpc3RvcnkoKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0SGlzdG9yeSh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBpZihkYXRhLmxvYWQpe1xyXG4gICAgICAgICAgICB0aGlzLnJlY2VudE9wdGlvbnMgPSBkYXRhLmxvYWQ7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVjZW50T3B0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImxhc3Qgb3B0aW9uIGVtaXRcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5sYXN0T3B0aW9uLmVtaXQodGhpcy5yZWNlbnRPcHRpb25zWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZ2V0TW9kdWxlcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSZXNvdXJjZSgpe1xyXG4gICAgdGhpcy5zZXJ2aWNlcy5nZXRSZXNvdXJjZXNCeVVzZXIodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgaWYoZGF0YS5sb2FkKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5sb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRIaXN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29tcGFuaWVzKCk7XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjaGVja1Jlc291cmNlQnlSb2xlKCl7XHJcbiAgICBsZXQgcGF0aCA9IHRoaXMuZ2V0UGF0aCgpO1xyXG4gICAgaWYocGF0aCAhPSAnL2hvbWUnKXtcclxuICAgICAgaWYgKHBhdGggPT0gJy9vcGVuLWZvcm0nKXtcclxuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnZm9ybScpO1xyXG4gICAgICAgIGNvbnN0IHVybERlY29kZSA9IHRoaXMuZGVjb2RlQmFzZTY0VXJsKGZvcm0pO1xyXG4gICAgICAgIHBhdGggPSB1cmxEZWNvZGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXJ2aWNlcy5nZXRSZXNvdXJjZXNCeVJvbGVVc2VyKHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCxwYXRoKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgaWYoZGF0YS5sb2FkID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICB3aW5kb3cub3BlbignL2hvbWUnLCAnX3NlbGYnKTtcclxuICAgICAgICAgICAgfSAgICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRQYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcbiAgfVxyXG5cclxuICBnZXRNb2R1bGVzKCl7XHJcbiAgICB0aGlzLnNlcnZpY2VzLmdldE1vZHVsZXModGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sb2FkKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZHVsZUxpc3QgPSBkYXRhLmxvYWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnJlY2VudE9wdGlvbnMgJiYgdGhpcy5yZWNlbnRPcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudE1vZHVsZU9wdGlvbiA9IHRoaXMubW9kdWxlTGlzdC5maW5kKChtOiB7IGlkOiBhbnk7IH0pID0+IG0uaWQgPT09IHRoaXMucmVjZW50T3B0aW9uc1swXS5hcHBsaWNhdGlvbklkKTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIGlmKHRoaXMucmVjZW50T3B0aW9uc1swXS5hcHBsaWNhdGlvbklkKXtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9kdWxlKHRoaXMucmVjZW50T3B0aW9uc1swXS5hcHBsaWNhdGlvbklkKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9kdWxlKHRoaXMubW9kdWxlTGlzdFswXS5pZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2R1bGUodGhpcy5tb2R1bGVMaXN0WzBdLmlkKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgLypcclxuICAgIGlmICh0aGlzLnJlY2VudERhdGEpIHtcclxuICAgICAgdGhpcy5tb2R1bGVTZWxlY3QodGhpcy5yZWNlbnREYXRhWzBdLmFwcGxpY2F0aW9uSWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coIHRoaXMuZHJvcGRvd25PcHRpb25zTWVudSlcclxuICAgICAgLy8gY29uc3QgZmlyc3RPcHRpb25JZCA9IHRoaXMuZHJvcGRvd25PcHRpb25zTWVudT8uWzBdPy5pZDtcclxuICAgICAgLy8gaWYgKGZpcnN0T3B0aW9uSWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAvLyAgIHRoaXMubW9kdWxlU2VsZWN0KGZpcnN0T3B0aW9uSWQpO1xyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICAqL1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBjdXJyZW50TW9kdWxlKGV2ZW50OiBhbnkpe1xyXG4gICAgdGhpcy5zZXJ2aWNlcy5tZW51TW9kdWxlU2VsZWN0ZWQodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsLGV2ZW50KS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YS5sb2FkKSB7XHJcbiAgICAgICAgICBjb25zdCBtZW51RGF0YSA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcmllczogXHJcbiAgICAgICAgICAgICAgZGF0YS5sb2FkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvL3RoaXMuY3VycmVudE1vZHVsZU9wdGlvbiA9IHRoaXMubW9kdWxlTGlzdC5maW5kKChtOiB7IGlkOiBhbnk7IH0pID0+IG0uaWQgPT09IGV2ZW50KTtcclxuICAgICAgICAgIHRoaXMubWVudURhdGEgPSBtZW51RGF0YTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb09wdGlvbihvcHRpb246YW55KXtcclxuICAgIGNvbnN0IHVybE9iaiA9IG9wdGlvbjtcclxuICAgIGlmICh1cmxPYmoubmV3ID09PSB0cnVlKSB7XHJcbiAgICAgIGlmKHRoaXMuaXNNb2JpbGUpe1xyXG4gICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybE9iai51cmwsICdfYmxhbmsnKTtcclxuICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICBuZXdXaW5kb3cub3BlbmVyID0gbnVsbDsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZSBpZih1cmxPYmoud2lzZVVybCl7XHJcbiAgICAgICAgdGhpcy5nZXRBdXRoQ29kZSh1cmxPYmoudXJsKTtcclxuICAgICAgfWVsc2UgaWYodXJsT2JqLmpmb3Jtc1VybCl7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5lbmNvZGVCYXNlNjRVcmwodXJsT2JqLnVybCk7XHJcbiAgICAgICAgd2luZG93Lm9wZW4oJy9vcGVuLWZvcm0/Zm9ybT0nK3ZhbCwgJ19ibGFuaycpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjb25zdCBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmxPYmoudXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgbmV3V2luZG93Lm9wZW5lciA9IG51bGw7IFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYodGhpcy5pc01vYmlsZSl7XHJcbiAgICAgICAgd2luZG93Lm9wZW4odXJsT2JqLnVybCwgJ19zZWxmJyk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmKHVybE9iai53aXNlVXJsKXtcclxuICAgICAgICAgIHRoaXMuZ2V0QXV0aENvZGUodXJsT2JqLnVybCk7XHJcbiAgICAgICAgfWVsc2UgaWYodXJsT2JqLmpmb3Jtc1VybCl7XHJcbiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmVuY29kZUJhc2U2NFVybCh1cmxPYmoudXJsKTtcclxuICAgICAgICAgIHdpbmRvdy5vcGVuKCcvb3Blbi1mb3JtP2Zvcm09Jyt2YWwsICdfc2VsZicpO1xyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMuaXNFeHRlcm5hbFVybCh1cmxPYmoudXJsKSl7XHJcbiAgICAgICAgICB3aW5kb3cub3Blbih1cmxPYmoudXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB3aW5kb3cub3Blbih1cmxPYmoudXJsLCAnX3NlbGYnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRXh0ZXJuYWxVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKSAmJiAhdXJsLmluY2x1ZGVzKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXV0aENvZGUodXJsOnN0cmluZyl7XHJcbiAgICB0aGlzLnNlcnZpY2VzLmdldEF1dGhDb2RlKHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIGlmKGRhdGEubG9hZCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xyXG4gICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2F1dGhjb2RlJywgZGF0YS5sb2FkKTtcclxuICAgICAgICAgICAgICBjb25zdCB3aXNlVXJsID0gdXJsICsgJyYnICsgcGFyYW1zLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgd2luZG93Lm9wZW4od2lzZVVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBcclxuICBlbmNvZGVCYXNlNjRVcmwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHRleHQpKSk7XHJcbiAgICByZXR1cm4gYmFzZTY0LnJlcGxhY2UoL1xcKy9nLCAnLScpLnJlcGxhY2UoL1xcLy9nLCAnXycpLnJlcGxhY2UoLz0rJC8sICcnKTtcclxuICB9XHJcblxyXG4gIGRlY29kZUJhc2U2NFVybChiYXNlNjR1cmw6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgYmFzZTY0ID0gYmFzZTY0dXJsLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XHJcbiAgICB3aGlsZSAoYmFzZTY0Lmxlbmd0aCAlIDQgIT09IDApIHtcclxuICAgICAgYmFzZTY0ICs9ICc9JztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShhdG9iKGJhc2U2NCkpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxoZWFkZXIgW2F0dHIuZGF0YS10aGVtZV09XCJ0aGVtZVwiIGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lclwiIChtZW51SXRlbUNsaWNrKT1cIm1lbnVJdGVtQ2xpY2tcIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLW1lbnUtZGFzaGJvYXJkLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dCYWNrQnV0dG9uXCIgY2xhc3M9XCJoZWFkZXItYnV0dG9uXCIgKGNsaWNrKT1cImFycm93Q2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICA8aSBjbGFzcz1cIm1lbnUtYXJyb3ctbGVmdFwiPjwvaT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGxpYi1tZW51IGNsYXNzPVwiaGVhZGVyLW1lbnUtbGliXCIgW2RhdGFdPVwibWVudURhdGFcIiBbdGhlbWVdPVwidGhlbWVcIlxyXG4gICAgICBbZHJvcGRvd25PcHRpb25zXT1cIm1vZHVsZUxpc3RcIiBbc2VsZWN0ZWRPcHRpb25dPVwiY3VycmVudE1vZHVsZU9wdGlvblwiIChtZW51SXRlbUNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIiAobW9kdWxlU2VsZWN0ZWQpPVwib25JdGVtTW9kdWxlU2VsZWN0ZWQoJGV2ZW50KVwiIFtpc01vYmlsZV09XCJpc01vYmlsZVwiPjwvbGliLW1lbnU+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1sb2dvXCI+XHJcbiAgICA8c3BhbiBbY2xhc3NdPVwiYXBwTG9nb1wiPjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtcmVjZW50cy1jb250YWluZXJcIj5cclxuICAgICAgPGxpYi1yZWNlbnRzLWRyb3Bkb3duIFtvcHRpb25zXT1cInJlY2VudE9wdGlvbnNcIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPjwvbGliLXJlY2VudHMtZHJvcGRvd24+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgPCEtLVxyXG4gICAgICA8bGliLW5vdGlmaWNhdGlvbnMgW29wdGlvbnNdPVwibm90aWZpY2F0aW9uT3B0aW9uc1wiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZCgkZXZlbnQpXCI+PC9saWItbm90aWZpY2F0aW9ucz5cclxuICAgICAgLS0+XHJcbiAgICBcclxuXHJcbiAgICA8bGliLWNvbXBhbnktZHJvcGRvd24gW2NvbXBhbmllc109XCJjb21wYW5pZXNcIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlQ29tcGFueVNlbGVjdGVkKCRldmVudClcIj48L2xpYi1jb21wYW55LWRyb3Bkb3duPlxyXG5cclxuICAgIDxsaWItdXNlci1kcm9wZG93biBbYmFzZVVybF09XCJzZXJ2aWNlc0NvbmZpZy5iYXNlVXJsXCIgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCI+PC9saWItdXNlci1kcm9wZG93bj5cclxuICA8L2Rpdj5cclxuPC9oZWFkZXI+Il19
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBWSxNQUFNLGtDQUFrQyxDQUFDO0FBSTFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQW9CdEMsTUFBTSxPQUFPLGVBQWU7SUFzRDFCLFlBQW9CLFFBQXlCLEVBQVMsTUFBYyxFQUFTLEtBQXFCLEVBQVMsR0FBc0IsRUFBUyxRQUF5QjtRQUEvSSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFyRDFKLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsVUFBSyxHQUFXLFNBQVMsQ0FBQztRQUMxQixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixhQUFRLEdBQVMsRUFBQyxVQUFVLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JC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LE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFjO1FBQzVCLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsQ0FBQztTQUNmO1FBRUQsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDOytHQXhhVSxlQUFlO21HQUFmLGVBQWUsbWZDMUI1Qiw2M0NBNEJTOzs0RkRGSSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVk7dU5BS2IsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBkcm9wZG93bkNvbXBhbmllc09wdGlvbnMsIGRyb3Bkb3duTm90aWZpY2F0aW9uT3B0aW9ucywgZHJvcGRvd25SZWNlbnRPcHRpb25zLCBtZW51RGF0YSB9IGZyb20gJy4uL2Fzc2V0cy9tZW51LWRhdGEvbWVudURhdGFUZXN0JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIERhdGEsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNlcnZpY2VzQ29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvbW9kZWxzL1NlcnZpY2VzQ29uZmlnJztcclxuaW1wb3J0IHsgU2VjdXJpdHlTZXJ2aWNlcyB9IGZyb20gJy4uL3V0aWxzL3NlcnZpY2VzL1NlY3VyaXR5U2VydmljZXNEZWZhdWx0JztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zbmFja2Jhci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25PcHRpb25zIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgcGFyZW50SWQ6IGFueTtcclxuICBvcHRpb25zOiBEcm9wZG93bk9wdGlvbkNhdGVyZ29yeVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duT3B0aW9uQ2F0ZXJnb3J5IHtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi4vYXNzZXRzL2ZvbnRzL3N0eWxlLmNzcycsICcuLi9hc3NldHMvdGhlbWUuc2NzcycsJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgYXBwTG9nbzogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBzaG93QmFja0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbWVudURhdGE6IERhdGEgPSB7Y2F0ZWdvcmllczogW119O1xyXG4gIEBJbnB1dCgpIHJlY2VudE9wdGlvbnMgOmFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGNvbXBhbmllcyA6YW55ID0gW107XHJcbiAgQElucHV0KCkgbW9kdWxlTGlzdDogYW55ID0gW107XHJcbiAgQElucHV0KCkgYXV0bzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VzQ29uZmlnOiBTZXJ2aWNlc0NvbmZpZyA9IHtcclxuICAgIGJhc2VVcmw6ICcnLFxyXG4gICAgaXNEZXY6IGZhbHNlLFxyXG4gICAgdXNlcm5hbWU6ICcnLFxyXG4gICAgcGFzc3dvcmQ6ICcnLFxyXG4gICAgY2hlY2tSb2xlOiBmYWxzZVxyXG4gIH07XHJcbiAgQElucHV0KCkgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcmV0dXJuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgbWVudUl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBtZW51TmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcmVjZW50TmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgIFxyXG4gIEBPdXRwdXQoKSBtb2R1bGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgbGFzdE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIFxyXG4gIGlzQXV0aCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCB1bmRlZmluZWQ7XHJcbiAgZHJvcGRvd25PcHRpb25zID0gZHJvcGRvd25SZWNlbnRPcHRpb25zO1xyXG4gIG5vdGlmaWNhdGlvbk9wdGlvbnMgPSBkcm9wZG93bk5vdGlmaWNhdGlvbk9wdGlvbnM7XHJcbiAgY29tcGFuaWVzRHJvcGRvd24gPSBkcm9wZG93bkNvbXBhbmllc09wdGlvbnM7XHJcbiAgY3VycmVudE1vZHVsZU9wdGlvbjogYW55O1xyXG4gIHNlbGVjdGVkT3B0aW9uOiBhbnk7XHJcbiAgZHJvcGRvd25PcHRpb25zTWVudTogRHJvcGRvd25PcHRpb25zW10gPSBbIFxyXG4gICAge1xyXG4gICAgICBpZDogMCxcclxuICAgICAgbGFiZWw6ICdMb3JlbSBJcHN1bScsXHJcbiAgICAgIHBhcmVudElkOiBudWxsLFxyXG4gICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLWNvbmZpZ3VyYXRpb24nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLWJ1cy1nYXZpb3RhJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1zYXRlbGl0ZScgfSxcclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IDAsXHJcbiAgICAgIGxhYmVsOiAnTG9yZW0gSXBzdW0nLFxyXG4gICAgICBwYXJlbnRJZDogbnVsbCxcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS12aWRlbycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtcnV0ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtY2FsZW5kYXInIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLWRhc2hib2FyZCcgfSwgIFxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlczpTZWN1cml0eVNlcnZpY2VzLHByaXZhdGUgcm91dGVyOiBSb3V0ZXIscHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUscHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgc25hY2tiYXI6IFNuYWNrYmFyU2VydmljZSl7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgaWYodGhpcy5hdXRvKXtcclxuICAgICAgdGhpcy5pc0F1dGgkID0gdGhpcy5pc0F1dGgoKTtcclxuICAgICAgdGhpcy5pc0F1dGgkLnN1YnNjcmliZShpc0F1dGhlbnRpY2F0ZWQgPT4ge1xyXG4gICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgIGlmKHRoaXMuc2VydmljZXNDb25maWcuaXNEZXYpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlcnZpY2VzQ29uZmlnLmNoZWNrUm9sZSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2UoKTtcclxuICAgICAgICAgICAgICBpZighdGhpcy5pc01vYmlsZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2VCeVJvbGUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0SGlzdG9yeSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0Q29tcGFuaWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2UoKTtcclxuICAgICAgICAgICAgaWYoIXRoaXMuaXNNb2JpbGUpe1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tSZXNvdXJjZUJ5Um9sZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4oJy8nLCAnX3NlbGYnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBdXRoKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlcy5pc0F1dGhlbnRpY2F0ZWQodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5waXBlKFxyXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICBpZih0aGlzLnNlcnZpY2VzQ29uZmlnLmlzRGV2KXtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRvTG9naW4oKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRvTG9naW4oKXtcclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2VzLmxvZ2luKHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlc0NvbmZpZy51c2VybmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlc0NvbmZpZy5wYXNzd29yZCkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTphbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHsgICAgICAgXHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTsgICAgICAgIFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9wdGlvblNlbGVjdGVkKG9wdGlvbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvT3B0aW9uKG9wdGlvbik7IFxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ29tcGFueVNlbGVjdGVkKGFnZW5jeTphbnkpIHtcclxuICAgIHRoaXMuc2VydmljZXMuc2V0RGVmYXVsdEFnZW5jeSh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwsYWdlbmN5LmlkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZihkYXRhLnJlc3BvbnNlQ29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgdGhpcy5zbmFja2Jhci5zdWNjZXNzKCdDYW1iaW8gZGUgQWdlbmNpYSByZWFsaXphZG8gY29uIMOpeGl0bycpO1xyXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DbGljayh1cmw6IGFueSkge1xyXG4gICAgaWYoIXRoaXMuYXV0byl7XHJcbiAgICAgIHRoaXMubWVudU5hdmlnYXRlLmVtaXQodXJsKTtcclxuICAgIH1lbHNle1xyXG4gICAgICBjb25zdCB1cmxPYmogPSB1cmwudXJsU2VuZDtcclxuICAgICAgY29uc3QgZXZlbnQgPSB1cmwuZXZlbnQ7XHJcbiAgICBcclxuICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgIGlmKHVybE9iai51cmwpe1xyXG4gICAgICAgIHRoaXMuc2VydmljZXMuc2F2ZUhpc3RvcnkodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsLHtvcHRpb25JZDogdXJsT2JqLmlkfSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9PcHRpb24odXJsT2JqKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLypcclxuICAgICAgdGhpcy5pbmJveFNlcnZpY2Uuc2F2ZUhpc3Rvcnkoe29wdGlvbklkOiB1cmxPYmouaWR9KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4geyAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgKi9cclxuICAgIH0gIFxyXG4gIH1cclxuXHJcbiAgYXJyb3dDbGljaygkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmKCF0aGlzLmF1dG8pe1xyXG4gICAgICB0aGlzLnJldHVybkNsaWNrLmVtaXQoJGV2ZW50KTtcclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBvbkl0ZW1Nb2R1bGVTZWxlY3RlZChldmVudDogYW55KXtcclxuICAgIGlmKCF0aGlzLmF1dG8pe1xyXG4gICAgICB0aGlzLm1vZHVsZVNlbGVjdC5lbWl0KGV2ZW50LmlkKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb2R1bGUoZXZlbnQuaWQpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRDb21wYW5pZXMoKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0Q29tcGFuaWVzSW5mbyh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBpZihkYXRhLmxvYWQpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNhYyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDQUMnKTtcclxuICAgICAgICAgICAgICBjb25zdCBjY2MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ0NDJyk7XHJcbiAgICAgICAgICAgICAgaWYoY2FjICYmIGNjYyl7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmxvYWQuZm9yRWFjaCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGMuYWdlbmNpZXMuZm9yRWFjaCgoYTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYS5hZ2VuY3lDb2RlID09IGNhYyAmJiBjLmNvbXBhbnlDb2RlID09IGNjYyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIHRoaXMuY29tcGFuaWVzID0gZGF0YS5sb2FkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SGlzdG9yeSgpe1xyXG4gICAgdGhpcy5zZXJ2aWNlcy5nZXRIaXN0b3J5KHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIGlmKGRhdGEubG9hZCl7XHJcbiAgICAgICAgICAgIHRoaXMucmVjZW50T3B0aW9ucyA9IGRhdGEubG9hZDtcclxuICAgICAgICAgICAgaWYodGhpcy5yZWNlbnRPcHRpb25zLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibGFzdCBvcHRpb24gZW1pdFwiKTtcclxuICAgICAgICAgICAgICB0aGlzLmxhc3RPcHRpb24uZW1pdCh0aGlzLnJlY2VudE9wdGlvbnNbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5nZXRNb2R1bGVzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjaGVja1Jlc291cmNlKCl7XHJcbiAgICB0aGlzLnNlcnZpY2VzLmdldFJlc291cmNlc0J5VXNlcih0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBpZihkYXRhLmxvYWQpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLmxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmdldEhpc3RvcnkoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRDb21wYW5pZXMoKTtcclxuICAgICAgICAgIH0gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNoZWNrUmVzb3VyY2VCeVJvbGUoKXtcclxuICAgIGxldCBwYXRoID0gdGhpcy5nZXRQYXRoKCk7XHJcbiAgICBpZihwYXRoICE9ICcvaG9tZScpe1xyXG4gICAgICBpZiAocGF0aCA9PSAnL29wZW4tZm9ybScpe1xyXG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdmb3JtJyk7XHJcbiAgICAgICAgY29uc3QgdXJsRGVjb2RlID0gdGhpcy5kZWNvZGVCYXNlNjRVcmwoZm9ybSk7XHJcbiAgICAgICAgcGF0aCA9IHVybERlY29kZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlcnZpY2VzLmdldFJlc291cmNlc0J5Um9sZVVzZXIodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsLHBhdGgpLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBpZihkYXRhLmxvYWQgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCcvaG9tZScsICdfc2VsZicpO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGdldFBhdGgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcclxuICB9XHJcblxyXG4gIGdldE1vZHVsZXMoKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0TW9kdWxlc0J5VXNlcih0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxvYWQpIHtcclxuICAgICAgICAgIHRoaXMubW9kdWxlTGlzdCA9IGRhdGEubG9hZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucmVjZW50T3B0aW9ucyAmJiB0aGlzLnJlY2VudE9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kdWxlT3B0aW9uID0gdGhpcy5tb2R1bGVMaXN0LmZpbmQoKG06IHsgaWQ6IGFueTsgfSkgPT4gbS5pZCA9PT0gdGhpcy5yZWNlbnRPcHRpb25zWzBdLmFwcGxpY2F0aW9uSWQpO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgaWYodGhpcy5yZWNlbnRPcHRpb25zWzBdLmFwcGxpY2F0aW9uSWQpe1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb2R1bGUodGhpcy5yZWNlbnRPcHRpb25zWzBdLmFwcGxpY2F0aW9uSWQpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb2R1bGUodGhpcy5tb2R1bGVMaXN0WzBdLmlkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudE1vZHVsZSh0aGlzLm1vZHVsZUxpc3RbMF0uaWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICAvKlxyXG4gICAgaWYgKHRoaXMucmVjZW50RGF0YSkge1xyXG4gICAgICB0aGlzLm1vZHVsZVNlbGVjdCh0aGlzLnJlY2VudERhdGFbMF0uYXBwbGljYXRpb25JZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyggdGhpcy5kcm9wZG93bk9wdGlvbnNNZW51KVxyXG4gICAgICAvLyBjb25zdCBmaXJzdE9wdGlvbklkID0gdGhpcy5kcm9wZG93bk9wdGlvbnNNZW51Py5bMF0/LmlkO1xyXG4gICAgICAvLyBpZiAoZmlyc3RPcHRpb25JZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIC8vICAgdGhpcy5tb2R1bGVTZWxlY3QoZmlyc3RPcHRpb25JZCk7XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgICovXHJcbiAgICBcclxuICB9XHJcblxyXG4gIGN1cnJlbnRNb2R1bGUoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLnNlcnZpY2VzLm1lbnVNb2R1bGVTZWxlY3RlZCh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwsZXZlbnQpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxvYWQpIHtcclxuICAgICAgICAgIGNvbnN0IG1lbnVEYXRhID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBcclxuICAgICAgICAgICAgICBkYXRhLmxvYWRcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vdGhpcy5jdXJyZW50TW9kdWxlT3B0aW9uID0gdGhpcy5tb2R1bGVMaXN0LmZpbmQoKG06IHsgaWQ6IGFueTsgfSkgPT4gbS5pZCA9PT0gZXZlbnQpO1xyXG4gICAgICAgICAgdGhpcy5tZW51RGF0YSA9IG1lbnVEYXRhO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvT3B0aW9uKG9wdGlvbjphbnkpe1xyXG4gICAgY29uc3QgdXJsT2JqID0gb3B0aW9uO1xyXG4gICAgaWYgKHVybE9iai5uZXcgPT09IHRydWUpIHtcclxuICAgICAgaWYodGhpcy5pc01vYmlsZSl7XHJcbiAgICAgICAgY29uc3QgbmV3V2luZG93ID0gd2luZG93Lm9wZW4odXJsT2JqLnVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgIGlmIChuZXdXaW5kb3cpIHtcclxuICAgICAgICAgIG5ld1dpbmRvdy5vcGVuZXIgPSBudWxsOyBcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNlIGlmKHVybE9iai53aXNlVXJsKXtcclxuICAgICAgICB0aGlzLmdldEF1dGhDb2RlKHVybE9iai51cmwpO1xyXG4gICAgICB9ZWxzZSBpZih1cmxPYmouamZvcm1zVXJsKXtcclxuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmVuY29kZUJhc2U2NFVybCh1cmxPYmoudXJsKTtcclxuICAgICAgICB3aW5kb3cub3BlbignL29wZW4tZm9ybT9mb3JtPScrdmFsLCAnX2JsYW5rJyk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybE9iai51cmwsICdfYmxhbmsnKTtcclxuICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICBuZXdXaW5kb3cub3BlbmVyID0gbnVsbDsgXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZih0aGlzLmlzTW9iaWxlKXtcclxuICAgICAgICB3aW5kb3cub3Blbih1cmxPYmoudXJsLCAnX3NlbGYnKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYodXJsT2JqLndpc2VVcmwpe1xyXG4gICAgICAgICAgdGhpcy5nZXRBdXRoQ29kZSh1cmxPYmoudXJsKTtcclxuICAgICAgICB9ZWxzZSBpZih1cmxPYmouamZvcm1zVXJsKXtcclxuICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZW5jb2RlQmFzZTY0VXJsKHVybE9iai51cmwpO1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4oJy9vcGVuLWZvcm0/Zm9ybT0nK3ZhbCwgJ19zZWxmJyk7XHJcbiAgICAgICAgfWVsc2UgaWYodGhpcy5pc0V4dGVybmFsVXJsKHVybE9iai51cmwpKXtcclxuICAgICAgICAgIHdpbmRvdy5vcGVuKHVybE9iai51cmwsICdfYmxhbmsnKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHdpbmRvdy5vcGVuKHVybE9iai51cmwsICdfc2VsZicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNFeHRlcm5hbFVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIC9eaHR0cHM/OlxcL1xcLy8udGVzdCh1cmwpICYmICF1cmwuaW5jbHVkZXMod2luZG93LmxvY2F0aW9uLm9yaWdpbik7XHJcbiAgfVxyXG5cclxuICBnZXRBdXRoQ29kZSh1cmw6c3RyaW5nKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0QXV0aENvZGUodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgaWYoZGF0YS5sb2FkKXtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XHJcbiAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnYXV0aGNvZGUnLCBkYXRhLmxvYWQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHdpc2VVcmwgPSB1cmwgKyAnJicgKyBwYXJhbXMudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB3aW5kb3cub3Blbih3aXNlVXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIFxyXG4gIGVuY29kZUJhc2U2NFVybCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodGV4dCkpKTtcclxuICAgIHJldHVybiBiYXNlNjQucmVwbGFjZSgvXFwrL2csICctJykucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvPSskLywgJycpO1xyXG4gIH1cclxuXHJcbiAgZGVjb2RlQmFzZTY0VXJsKGJhc2U2NHVybDogYW55KTogc3RyaW5nIHtcclxuICAgIGxldCBiYXNlNjQgPSBiYXNlNjR1cmwucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcclxuICAgIHdoaWxlIChiYXNlNjQubGVuZ3RoICUgNCAhPT0gMCkge1xyXG4gICAgICBiYXNlNjQgKz0gJz0nO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGF0b2IoYmFzZTY0KSkpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGhlYWRlciBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCIgKG1lbnVJdGVtQ2xpY2spPVwibWVudUl0ZW1DbGlja1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItbWVudS1kYXNoYm9hcmQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0JhY2tCdXR0b25cIiBjbGFzcz1cImhlYWRlci1idXR0b25cIiAoY2xpY2spPVwiYXJyb3dDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwibWVudS1hcnJvdy1sZWZ0XCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bGliLW1lbnUgY2xhc3M9XCJoZWFkZXItbWVudS1saWJcIiBbZGF0YV09XCJtZW51RGF0YVwiIFt0aGVtZV09XCJ0aGVtZVwiXHJcbiAgICAgIFtkcm9wZG93bk9wdGlvbnNdPVwibW9kdWxlTGlzdFwiIFtzZWxlY3RlZE9wdGlvbl09XCJjdXJyZW50TW9kdWxlT3B0aW9uXCIgKG1lbnVJdGVtQ2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiIChtb2R1bGVTZWxlY3RlZCk9XCJvbkl0ZW1Nb2R1bGVTZWxlY3RlZCgkZXZlbnQpXCIgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCI+PC9saWItbWVudT5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWxvZ29cIj5cclxuICAgIDxzcGFuIFtjbGFzc109XCJhcHBMb2dvXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1yZWNlbnRzLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bGliLXJlY2VudHMtZHJvcGRvd24gW29wdGlvbnNdPVwicmVjZW50T3B0aW9uc1wiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZCgkZXZlbnQpXCI+PC9saWItcmVjZW50cy1kcm9wZG93bj5cclxuICAgIDwvZGl2PlxyXG4gICAgICA8IS0tXHJcbiAgICAgIDxsaWItbm90aWZpY2F0aW9ucyBbb3B0aW9uc109XCJub3RpZmljYXRpb25PcHRpb25zXCJcclxuICAgICAgKG9wdGlvblNlbGVjdGVkKT1cImhhbmRsZU9wdGlvblNlbGVjdGVkKCRldmVudClcIj48L2xpYi1ub3RpZmljYXRpb25zPlxyXG4gICAgICAtLT5cclxuICAgIFxyXG5cclxuICAgIDxsaWItY29tcGFueS1kcm9wZG93biBbY29tcGFuaWVzXT1cImNvbXBhbmllc1wiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJoYW5kbGVDb21wYW55U2VsZWN0ZWQoJGV2ZW50KVwiPjwvbGliLWNvbXBhbnktZHJvcGRvd24+XHJcblxyXG4gICAgPGxpYi11c2VyLWRyb3Bkb3duIFtiYXNlVXJsXT1cInNlcnZpY2VzQ29uZmlnLmJhc2VVcmxcIiBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIj48L2xpYi11c2VyLWRyb3Bkb3duPlxyXG4gIDwvZGl2PlxyXG48L2hlYWRlcj4iXX0=
|