@vendure/admin-ui 1.8.2 → 1.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/vendure-admin-ui-catalog.umd.js +10 -5
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +9 -2
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-customer.umd.js +4 -1
- package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-settings.umd.js +3 -2
- package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
- package/core/common/version.d.ts +1 -1
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/esm2015/catalog/components/facet-detail/facet-detail.component.js +11 -6
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/data/data.module.js +8 -1
- package/esm2015/core/shared/components/custom-field-control/custom-field-control.component.js +2 -2
- package/esm2015/core/shared/pipes/custom-field-description.pipe.js +1 -1
- package/esm2015/core/shared/shared.module.js +1 -1
- package/esm2015/customer/components/customer-detail/customer-detail.component.js +2 -1
- package/esm2015/customer/providers/routing/customer-resolver.js +5 -3
- package/esm2015/settings/components/admin-detail/admin-detail.component.js +4 -3
- package/esm2015/settings/components/zone-detail-dialog/zone-detail-dialog.component.js +1 -1
- package/fesm2015/vendure-admin-ui-catalog.js +10 -5
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +9 -2
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-customer.js +4 -1
- package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
- package/fesm2015/vendure-admin-ui-settings.js +3 -2
- package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
- package/package.json +2 -2
- package/settings/vendure-admin-ui-settings.metadata.json +1 -1
|
@@ -389,6 +389,7 @@ export class CustomerDetailComponent extends BaseDetailComponent {
|
|
|
389
389
|
.getCustomer(this.id, {
|
|
390
390
|
take: this.ordersPerPage,
|
|
391
391
|
skip: (this.currentOrdersPage - 1) * this.ordersPerPage,
|
|
392
|
+
sort: { orderPlacedAt: SortOrder.DESC },
|
|
392
393
|
})
|
|
393
394
|
.single$.pipe(map(data => data.customer), filter(notNullOrUndefined))
|
|
394
395
|
.subscribe(result => this.orderListUpdates$.next(result));
|
|
@@ -412,4 +413,4 @@ CustomerDetailComponent.ctorParameters = () => [
|
|
|
412
413
|
{ type: ModalService },
|
|
413
414
|
{ type: NotificationService }
|
|
414
415
|
];
|
|
415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY3VzdG9tZXIvc3JjL2NvbXBvbmVudHMvY3VzdG9tZXItZGV0YWlsL2N1c3RvbWVyLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUNILG1CQUFtQixFQU9uQixXQUFXLEVBRVgsdUJBQXVCLEVBTXZCLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFNBQVMsR0FNWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxHQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFVNUgsTUFBTSxPQUFPLHVCQUNULFNBQVEsbUJBQXVDO0lBbUIvQyxZQUNJLEtBQXFCLEVBQ3JCLE1B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aUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7O1lBeGRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix5aVFBQStDO2dCQUUvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQW5EUSxjQUFjO1lBQUUsTUFBTTtZQW9CM0IsbUJBQW1CO1lBdEJXLGlCQUFpQjtZQUMvQixXQUFXO1lBVzNCLFdBQVc7WUFRWCxZQUFZO1lBQ1osbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7XHJcbiAgICBCYXNlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgQ3JlYXRlQWRkcmVzc0lucHV0LFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzTXV0YXRpb24sXHJcbiAgICBDcmVhdGVDdXN0b21lcklucHV0LFxyXG4gICAgQ3VzdG9tZXIsXHJcbiAgICBDdXN0b21GaWVsZENvbmZpZyxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgRGVsZXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgRWRpdE5vdGVEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZXRBdmFpbGFibGVDb3VudHJpZXMsXHJcbiAgICBHZXRDdXN0b21lcixcclxuICAgIEdldEN1c3RvbWVySGlzdG9yeSxcclxuICAgIEdldEN1c3RvbWVyUXVlcnksXHJcbiAgICBIaXN0b3J5RW50cnksXHJcbiAgICBNb2RhbFNlcnZpY2UsXHJcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgIFNvcnRPcmRlcixcclxuICAgIFVwZGF0ZUN1c3RvbWVyLFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJBZGRyZXNzTXV0YXRpb24sXHJcbiAgICBVcGRhdGVDdXN0b21lcklucHV0LFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJNdXRhdGlvbixcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuaW1wb3J0IHsgRU1QVFksIGZvcmtKb2luLCBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgICBjb25jYXRNYXAsXHJcbiAgICBmaWx0ZXIsXHJcbiAgICBtYXAsXHJcbiAgICBtZXJnZSxcclxuICAgIG1lcmdlTWFwLFxyXG4gICAgc2hhcmVSZXBsYXksXHJcbiAgICBzdGFydFdpdGgsXHJcbiAgICBzd2l0Y2hNYXAsXHJcbiAgICB0YWtlLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEN1c3RvbWVyR3JvdXBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtY3VzdG9tZXItZ3JvdXAtZGlhbG9nL3NlbGVjdC1jdXN0b21lci1ncm91cC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbnR5cGUgQ3VzdG9tZXJXaXRoT3JkZXJzID0gTm9uTnVsbGFibGU8R2V0Q3VzdG9tZXJRdWVyeVsnY3VzdG9tZXInXT47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWN1c3RvbWVyLWRldGFpbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2N1c3RvbWVyLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21lckRldGFpbENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBCYXNlRGV0YWlsQ29tcG9uZW50PEN1c3RvbWVyV2l0aE9yZGVycz5cclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gICAgZGV0YWlsRm9ybTogRm9ybUdyb3VwO1xyXG4gICAgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgYWRkcmVzc0N1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXTtcclxuICAgIGF2YWlsYWJsZUNvdW50cmllcyQ6IE9ic2VydmFibGU8R2V0QXZhaWxhYmxlQ291bnRyaWVzLkl0ZW1zW10+O1xyXG4gICAgb3JkZXJzJDogT2JzZXJ2YWJsZTxHZXRDdXN0b21lci5JdGVtc1tdPjtcclxuICAgIG9yZGVyc0NvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgaGlzdG9yeSQ6IE9ic2VydmFibGU8R2V0Q3VzdG9tZXJIaXN0b3J5Lkl0ZW1zW10gfCB1bmRlZmluZWQ+O1xyXG4gICAgZmV0Y2hIaXN0b3J5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIGRlZmF1bHRTaGlwcGluZ0FkZHJlc3NJZDogc3RyaW5nO1xyXG4gICAgZGVmYXVsdEJpbGxpbmdBZGRyZXNzSWQ6IHN0cmluZztcclxuICAgIGFkZHJlc3Nlc1RvRGVsZXRlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICBhZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gZmFsc2U7XHJcbiAgICBvcmRlcnNQZXJQYWdlID0gMTA7XHJcbiAgICBjdXJyZW50T3JkZXJzUGFnZSA9IDE7XHJcbiAgICBwcml2YXRlIG9yZGVyTGlzdFVwZGF0ZXMkID0gbmV3IFN1YmplY3Q8Q3VzdG9tZXJXaXRoT3JkZXJzPigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBzZXJ2ZXJDb25maWdTZXJ2aWNlOiBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBzZXJ2ZXJDb25maWdTZXJ2aWNlLCBkYXRhU2VydmljZSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnQ3VzdG9tZXInKTtcclxuICAgICAgICB0aGlzLmFkZHJlc3NDdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdBZGRyZXNzJyk7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIGN1c3RvbWVyOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6ICcnLFxyXG4gICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogJycsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMucmVkdWNlKChoYXNoLCBmaWVsZCkgPT4gKHsgLi4uaGFzaCwgW2ZpZWxkLm5hbWVdOiAnJyB9KSwge30pLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGFkZHJlc3NlczogbmV3IEZvcm1BcnJheShbXSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5hdmFpbGFibGVDb3VudHJpZXMkID0gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5nc1xyXG4gICAgICAgICAgICAuZ2V0QXZhaWxhYmxlQ291bnRyaWVzKClcclxuICAgICAgICAgICAgLm1hcFNpbmdsZShyZXN1bHQgPT4gcmVzdWx0LmNvdW50cmllcy5pdGVtcylcclxuICAgICAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG5cclxuICAgICAgICBjb25zdCBjdXN0b21lcldpdGhVcGRhdGVzJCA9IHRoaXMuZW50aXR5JC5waXBlKG1lcmdlKHRoaXMub3JkZXJMaXN0VXBkYXRlcyQpKTtcclxuICAgICAgICB0aGlzLm9yZGVycyQgPSBjdXN0b21lcldpdGhVcGRhdGVzJC5waXBlKG1hcChjdXN0b21lciA9PiBjdXN0b21lci5vcmRlcnMuaXRlbXMpKTtcclxuICAgICAgICB0aGlzLm9yZGVyc0NvdW50JCA9IHRoaXMuZW50aXR5JC5waXBlKG1hcChjdXN0b21lciA9PiBjdXN0b21lci5vcmRlcnMudG90YWxJdGVtcykpO1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeSQgPSB0aGlzLmZldGNoSGlzdG9yeS5waXBlKFxyXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgIC5nZXRDdXN0b21lckhpc3RvcnkodGhpcy5pZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFN0cmVhbShkYXRhID0+IGRhdGEuY3VzdG9tZXI/Lmhpc3RvcnkuaXRlbXMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMub3JkZXJMaXN0VXBkYXRlcyQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBZGRyZXNzRm9ybUNvbnRyb2xzKCk6IEZvcm1Db250cm9sW10ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoWydhZGRyZXNzZXMnXSkgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIHJldHVybiBmb3JtQXJyYXkuY29udHJvbHMgYXMgRm9ybUNvbnRyb2xbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREZWZhdWx0QmlsbGluZ0FkZHJlc3NJZChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRTaGlwcGluZ0FkZHJlc3NJZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRGVsZXRlQWRkcmVzcyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc2VzVG9EZWxldGVJZHMuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZHJlc3Nlc1RvRGVsZXRlSWRzLmRlbGV0ZShpZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRyZXNzZXNUb0RlbGV0ZUlkcy5hZGQoaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRBZGRyZXNzKCkge1xyXG4gICAgICAgIGNvbnN0IGFkZHJlc3NGb3JtQXJyYXkgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdhZGRyZXNzZXMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgY29uc3QgbmV3QWRkcmVzcyA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBmdWxsTmFtZTogJycsXHJcbiAgICAgICAgICAgIGNvbXBhbnk6ICcnLFxyXG4gICAgICAgICAgICBzdHJlZXRMaW5lMTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgc3RyZWV0TGluZTI6ICcnLFxyXG4gICAgICAgICAgICBjaXR5OiAnJyxcclxuICAgICAgICAgICAgcHJvdmluY2U6ICcnLFxyXG4gICAgICAgICAgICBwb3N0YWxDb2RlOiAnJyxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiAnJyxcclxuICAgICAgICAgICAgZGVmYXVsdFNoaXBwaW5nQWRkcmVzczogZmFsc2UsXHJcbiAgICAgICAgICAgIGRlZmF1bHRCaWxsaW5nQWRkcmVzczogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZERlZiBvZiB0aGlzLmFkZHJlc3NDdXN0b21GaWVsZHMpIHtcclxuICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkc0dyb3VwLmFkZENvbnRyb2woZmllbGREZWYubmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV3QWRkcmVzcy5hZGRDb250cm9sKCdjdXN0b21GaWVsZHMnLCBjdXN0b21GaWVsZHNHcm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZHJlc3NGb3JtQXJyYXkucHVzaChuZXdBZGRyZXNzKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRPcmRlckl0ZW1zUGVyUGFnZShpdGVtc1BlclBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMub3JkZXJzUGVyUGFnZSA9ICtpdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgdGhpcy5mZXRjaE9yZGVyc0xpc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRPcmRlckN1cnJlbnRQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyc1BhZ2UgPSArcGFnZTtcclxuICAgICAgICB0aGlzLmZldGNoT3JkZXJzTGlzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICBjb25zdCBjdXN0b21lckZvcm0gPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgIGlmICghY3VzdG9tZXJGb3JtKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gY3VzdG9tZXJGb3JtLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUZpZWxkcyA9IGN1c3RvbWVyRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBjdXN0b21lcjogQ3JlYXRlQ3VzdG9tZXJJbnB1dCA9IHtcclxuICAgICAgICAgICAgdGl0bGU6IGZvcm1WYWx1ZS50aXRsZSxcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzLFxyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IGZvcm1WYWx1ZS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiBmb3JtVmFsdWUucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgLmNyZWF0ZUN1c3RvbWVyKGN1c3RvbWVyLCBmb3JtVmFsdWUucGFzc3dvcmQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgY3JlYXRlQ3VzdG9tZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChjcmVhdGVDdXN0b21lci5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ3VzdG9tZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0N1c3RvbWVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVDdXN0b21lci5lbWFpbEFkZHJlc3MgJiYgIWZvcm1WYWx1ZS5wYXNzd29yZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXygnY3VzdG9tZXIuZW1haWwtdmVyaWZpY2F0aW9uLXNlbnQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblZhcnM6IHsgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2luZm8nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nLCBjcmVhdGVDdXN0b21lci5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWxBZGRyZXNzQ29uZmxpY3RFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihjcmVhdGVDdXN0b21lci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICB0aGlzLmVudGl0eSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHsgaWQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVPcGVyYXRpb25zOiBBcnJheTxcclxuICAgICAgICAgICAgICAgICAgICAgICAgT2JzZXJ2YWJsZTxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVXBkYXRlQ3VzdG9tZXIuVXBkYXRlQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzLkNyZWF0ZUN1c3RvbWVyQWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVcGRhdGVDdXN0b21lckFkZHJlc3MuVXBkYXRlQ3VzdG9tZXJBZGRyZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlbGV0ZUN1c3RvbWVyQWRkcmVzcy5EZWxldGVDdXN0b21lckFkZHJlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgID4gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21lckZvcm0gPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXN0b21lckZvcm0gJiYgY3VzdG9tZXJGb3JtLmRpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGN1c3RvbWVyRm9ybS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gY3VzdG9tZXJGb3JtLmdldCgnY3VzdG9tRmllbGRzJyk/LnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21lcjogVXBkYXRlQ3VzdG9tZXJJbnB1dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvcm1WYWx1ZS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsQWRkcmVzczogZm9ybVZhbHVlLmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogZm9ybVZhbHVlLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogZm9ybVZhbHVlLnBob25lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlT3BlcmF0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVDdXN0b21lcihjdXN0b21lcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHJlcy51cGRhdGVDdXN0b21lcikpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzRm9ybUFycmF5ID0gdGhpcy5kZXRhaWxGb3JtLmdldCgnYWRkcmVzc2VzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoYWRkcmVzc0Zvcm1BcnJheSAmJiBhZGRyZXNzRm9ybUFycmF5LmRpcnR5KSB8fCB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhZGRyZXNzQ29udHJvbCBvZiBhZGRyZXNzRm9ybUFycmF5LmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzc0NvbnRyb2wuZGlydHkgfHwgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGFkZHJlc3NDb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0OiBDcmVhdGVBZGRyZXNzSW5wdXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiBhZGRyZXNzLmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55OiBhZGRyZXNzLmNvbXBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldExpbmUxOiBhZGRyZXNzLnN0cmVldExpbmUxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXRMaW5lMjogYWRkcmVzcy5zdHJlZXRMaW5lMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogYWRkcmVzcy5jb3VudHJ5Q29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IGFkZHJlc3MucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaGlwcGluZ0FkZHJlc3M6IHRoaXMuZGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkID09PSBhZGRyZXNzLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0QmlsbGluZ0FkZHJlc3M6IHRoaXMuZGVmYXVsdEJpbGxpbmdBZGRyZXNzSWQgPT09IGFkZHJlc3MuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkczogYWRkcmVzcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3MuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU9wZXJhdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlQ3VzdG9tZXJBZGRyZXNzKGlkLCBpbnB1dClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHJlcy5jcmVhdGVDdXN0b21lckFkZHJlc3MpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hZGRyZXNzZXNUb0RlbGV0ZUlkcy5oYXMoYWRkcmVzcy5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVsZXRlQ3VzdG9tZXJBZGRyZXNzKGFkZHJlc3MuaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmRlbGV0ZUN1c3RvbWVyQWRkcmVzcykpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudXBkYXRlQ3VzdG9tZXJBZGRyZXNzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmlucHV0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLnVwZGF0ZUN1c3RvbWVyQWRkcmVzcykpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oc2F2ZU9wZXJhdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBub3RpZmllZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQuX190eXBlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ3VzdG9tZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQWRkcmVzcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTdWNjZXNzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vdGlmaWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5nZXRDdXN0b21lcih0aGlzLmlkKS5zaW5nbGUkLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VtYWlsQWRkcmVzc0NvbmZsaWN0RXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtZXJyb3InKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lcicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFRvR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoU2VsZWN0Q3VzdG9tZXJHcm91cERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZ3JvdXBJZHMgPT4gKGdyb3VwSWRzID8gZnJvbShncm91cElkcykgOiBFTVBUWSkpLFxyXG4gICAgICAgICAgICAgICAgY29uY2F0TWFwKGdyb3VwSWQgPT4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5hZGRDdXN0b21lcnNUb0dyb3VwKGdyb3VwSWQsIFt0aGlzLmlkXSkpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKGBjdXN0b21lci5hZGQtY3VzdG9tZXJzLXRvLWdyb3VwLXN1Y2Nlc3NgKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21lckNvdW50OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IHJlcy5hZGRDdXN0b21lcnNUb0dyb3VwLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLmdldEN1c3RvbWVyKHRoaXMuaWQsIHsgdGFrZTogMCB9KS5zaW5nbGUkLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUZyb21Hcm91cChncm91cDogR2V0Q3VzdG9tZXIuR3JvdXBzKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmRpYWxvZyh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXygnY3VzdG9tZXIuY29uZmlybS1yZW1vdmUtY3VzdG9tZXItZnJvbS1ncm91cCcpLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzcG9uc2UgPT5cclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIucmVtb3ZlQ3VzdG9tZXJzRnJvbUdyb3VwKGdyb3VwLmlkLCBbdGhpcy5pZF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogRU1QVFksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuZ2V0Q3VzdG9tZXIodGhpcy5pZCwgeyB0YWtlOiAwIH0pLnNpbmdsZSQpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oYGN1c3RvbWVyLnJlbW92ZS1jdXN0b21lcnMtZnJvbS1ncm91cC1zdWNjZXNzYCksIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21lckNvdW50OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXAubmFtZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROb3RlVG9DdXN0b21lcih7IG5vdGUgfTogeyBub3RlOiBzdHJpbmcgfSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuYWRkTm90ZVRvQ3VzdG9tZXIodGhpcy5pZCwgbm90ZSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgIGVudGl0eTogJ05vdGUnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVOb3RlKGVudHJ5OiBIaXN0b3J5RW50cnkpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChFZGl0Tm90ZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5UHJpdmFjeUNvbnRyb2xzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBlbnRyeS5kYXRhLm5vdGUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIudXBkYXRlQ3VzdG9tZXJOb3RlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVJZDogZW50cnkuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlOiByZXN1bHQubm90ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ05vdGUnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZU5vdGUoZW50cnk6IEhpc3RvcnlFbnRyeSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjb21tb24uY29uZmlybS1kZWxldGUtbm90ZScpLFxyXG4gICAgICAgICAgICAgICAgYm9keTogZW50cnkuZGF0YS5ub3RlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHJlcyA9PiAocmVzID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5kZWxldGVDdXN0b21lck5vdGUoZW50cnkuaWQpIDogRU1QVFkpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWRlbGV0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdOb3RlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IEN1c3RvbWVyV2l0aE9yZGVycyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyR3JvdXAgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgIGlmIChjdXN0b21lckdyb3VwKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbWVyR3JvdXAucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZW50aXR5LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBlbnRpdHkuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IGVudGl0eS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBlbnRpdHkucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6IGVudGl0eS5lbWFpbEFkZHJlc3MsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgYWRkcmVzc2VzQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VzdG9tRmllbGRzLCAuLi5yZXN0IH0gPSBhZGRyZXNzIGFzIGFueTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IGFkZHJlc3MuY291bnRyeS5jb2RlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzZXNBcnJheS5wdXNoKGFkZHJlc3NHcm91cCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzSWQgPSBhZGRyZXNzLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MuZGVmYXVsdEJpbGxpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9IGFkZHJlc3MuaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21GaWVsZHNHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGREZWYgb2YgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpZWxkRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGFkZHJlc3MgYXMgYW55KS5jdXN0b21GaWVsZHM/LltrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzR3JvdXAuYWRkQ29udHJvbChrZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzR3JvdXAuYWRkQ29udHJvbCgnY3VzdG9tRmllbGRzJywgY3VzdG9tRmllbGRzR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zZXRDb250cm9sKCdhZGRyZXNzZXMnLCBhZGRyZXNzZXNBcnJheSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tZXInLCAnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmZXRjaCB0aGUgY3VzdG9tZXIgd2l0aCB0aGUgY3VycmVudCBvcmRlciBsaXN0IHNldHRpbmdzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZldGNoT3JkZXJzTGlzdCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgIC5nZXRDdXN0b21lcih0aGlzLmlkLCB7XHJcbiAgICAgICAgICAgICAgICB0YWtlOiB0aGlzLm9yZGVyc1BlclBhZ2UsXHJcbiAgICAgICAgICAgICAgICBza2lwOiAodGhpcy5jdXJyZW50T3JkZXJzUGFnZSAtIDEpICogdGhpcy5vcmRlcnNQZXJQYWdlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc2luZ2xlJC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5jdXN0b21lciksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLm9yZGVyTGlzdFVwZGF0ZXMkLm5leHQocmVzdWx0KSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY3VzdG9tZXIvc3JjL2NvbXBvbmVudHMvY3VzdG9tZXItZGV0YWlsL2N1c3RvbWVyLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUNILG1CQUFtQixFQU9uQixXQUFXLEVBRVgsdUJBQXVCLEVBTXZCLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFNBQVMsR0FNWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxHQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFVNUgsTUFBTSxPQUFPLHVCQUNULFNBQVEsbUJBQXVDO0lBbUIvQyxZQUNJLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFBd0MsRUFDaEMsY0FBaUMsRUFDakMsV0FBd0IsRUFDdEIsV0FBd0IsRUFDMUIsWUFBMEIsRUFDMUIsbUJBQXdDO1FBRWhELEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBTi9DLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBakJwRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHbkMseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN6QywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ2Qsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7UUFjMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3BDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNuQyxXQUFXLEVBQUUsRUFBRTtnQkFDZixZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLGlDQUFNLElBQUksS0FBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsQ0FDakY7YUFDSixDQUFDO1lBQ0YsU0FBUyxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztTQUMvQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7YUFDL0MscUJBQXFCLEVBQUU7YUFDdkIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2xDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7aUJBQzNCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksRUFBRTtvQkFDRixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7aUJBQzVCO2FBQ0osQ0FBQztpQkFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBQyxPQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQSxFQUFBLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFjLENBQUM7UUFDbEUsT0FBTyxTQUFTLENBQUMsUUFBeUIsQ0FBQztJQUMvQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsRUFBVTtRQUNqQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELDJCQUEyQixDQUFDLEVBQVU7UUFDbEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFVO1FBQzFCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBYyxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3RDLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxXQUFXLEVBQUUsRUFBRTtZQUNmLElBQUksRUFBRSxFQUFFO1lBQ1IsUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsRUFBRTtZQUNkLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxFQUFFO1lBQ2Ysc0JBQXNCLEVBQUUsS0FBSztZQUM3QixxQkFBcUIsRUFBRSxLQUFLO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtZQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUM3QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUM1RDtRQUNELGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsWUFBb0I7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTTs7UUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLFlBQVksR0FBRyxNQUFBLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLDBDQUFFLEtBQUssQ0FBQztRQUM3RCxNQUFNLFFBQVEsR0FBd0I7WUFDbEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQ3RCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtZQUNwQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7WUFDOUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzVCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNsQyxZQUFZO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUNwQixjQUFjLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUM7YUFDNUMsU0FBUyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO1lBQzlCLFFBQVEsY0FBYyxDQUFDLFVBQVUsRUFBRTtnQkFDL0IsS0FBSyxVQUFVO29CQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7d0JBQ2hFLE1BQU0sRUFBRSxVQUFVO3FCQUNyQixDQUFDLENBQUM7b0JBQ0gsSUFBSSxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTt3QkFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzs0QkFDNUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQzs0QkFDOUMsZUFBZSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUU7NEJBQ3pELElBQUksRUFBRSxNQUFNOzRCQUNaLFFBQVEsRUFBRSxLQUFLO3lCQUNsQixDQUFDLENBQUM7cUJBQ047b0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUM3RSxNQUFNO2dCQUNWLEtBQUssMkJBQTJCO29CQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5RDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsT0FBTzthQUNQLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFOztZQUNoQixNQUFNLGNBQWMsR0FPaEIsRUFBRSxDQUFDO1lBQ1AsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckQsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDcEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDckMsTUFBTSxZQUFZLEdBQUcsTUFBQSxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQywwQ0FBRSxLQUFLLENBQUM7Z0JBQzdELE1BQU0sUUFBUSxHQUF3QjtvQkFDbEMsRUFBRTtvQkFDRixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7b0JBQ3RCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtvQkFDcEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO29CQUM5QixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7b0JBQzVCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztvQkFDbEMsWUFBWTtpQkFDZixDQUFDO2dCQUNGLGNBQWMsQ0FBQyxJQUFJLENBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO3FCQUNwQixjQUFjLENBQUMsUUFBUSxDQUFDO3FCQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQzVDLENBQUM7YUFDTDtZQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFjLENBQUM7WUFDdkUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDN0UsS0FBSyxNQUFNLGNBQWMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7b0JBQ3BELElBQUksY0FBYyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7d0JBQ3JELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7d0JBQ3JDLE1BQU0sS0FBSyxHQUF1Qjs0QkFDOUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFROzRCQUMxQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87NEJBQ3hCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVzs0QkFDaEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXOzRCQUNoQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7NEJBQ2xCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTs0QkFDMUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVOzRCQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7NEJBQ2hDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVzs0QkFDaEMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixLQUFLLE9BQU8sQ0FBQyxFQUFFOzRCQUNwRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEtBQUssT0FBTyxDQUFDLEVBQUU7NEJBQ2xFLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTt5QkFDckMsQ0FBQzt3QkFDRixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTs0QkFDYixjQUFjLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTtpQ0FDcEIscUJBQXFCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQztpQ0FDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQ25ELENBQUM7eUJBQ0w7NkJBQU07NEJBQ0gsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQ0FDM0MsY0FBYyxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7cUNBQ3BCLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7cUNBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUNuRCxDQUFDOzZCQUNMO2lDQUFNO2dDQUNILGNBQWMsQ0FBQyxJQUFJLENBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO3FDQUNwQixxQkFBcUIsaUNBQ2YsS0FBSyxLQUNSLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUNoQjtxQ0FDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FDbkQsQ0FBQzs2QkFDTDt5QkFDSjtxQkFDSjtpQkFDSjthQUNKO1lBQ0QsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLENBQ04sSUFBSSxDQUFDLEVBQUU7WUFDSCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUU7Z0JBQ3ZCLFFBQVEsTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDdkIsS0FBSyxVQUFVLENBQUM7b0JBQ2hCLEtBQUssU0FBUyxDQUFDO29CQUNmLEtBQUssU0FBUzt3QkFDVixJQUFJLENBQUMsUUFBUSxFQUFFOzRCQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7Z0NBQ2hFLE1BQU0sRUFBRSxVQUFVOzZCQUNyQixDQUFDLENBQUM7NEJBQ0gsUUFBUSxHQUFHLElBQUksQ0FBQzs0QkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDakMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQzs0QkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQzs0QkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7eUJBQ3RFO3dCQUNELE1BQU07b0JBQ1YsS0FBSywyQkFBMkI7d0JBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMvQyxNQUFNO2lCQUNiO2FBQ0o7UUFDTCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUM1RCxNQUFNLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQ0osQ0FBQztJQUNWLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFlBQVk7YUFDWixhQUFhLENBQUMsa0NBQWtDLEVBQUU7WUFDL0MsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDO2FBQ0QsSUFBSSxDQUNELFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzFELFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzFGO2FBQ0EsU0FBUyxDQUFDO1lBQ1AsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNSLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHlDQUF5QyxDQUFDLEVBQUU7b0JBQzNFLGFBQWEsRUFBRSxDQUFDO29CQUNoQixTQUFTLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUk7aUJBQzFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNoRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXlCO1FBQ3JDLElBQUksQ0FBQyxZQUFZO2FBQ1osTUFBTSxDQUFDO1lBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQyw2Q0FBNkMsQ0FBQztZQUN2RCxPQUFPLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQ2hELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7YUFDbkU7U0FDSixDQUFDO2FBQ0QsSUFBSSxDQUNELFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNqQixRQUFRO1lBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDLEtBQUssQ0FDZCxFQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUN2RjthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBQyxFQUFFO2dCQUNoRixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ3hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQW9CO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFtQjtRQUMxQixJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRTtZQUNwQyxRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFBRTtnQkFDSixzQkFBc0IsRUFBRSxLQUFLO2dCQUM3QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJO2FBQ3hCO1NBQ0osQ0FBQzthQUNELElBQUksQ0FDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDZixJQUFJLE1BQU0sRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO29CQUNoRCxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtpQkFDcEIsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDaEI7UUFDTCxDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxZQUFZO2FBQ25CLE1BQU0sQ0FBQztZQUNKLEtBQUssRUFBRSxDQUFDLENBQUMsNEJBQTRCLENBQUM7WUFDdEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNyQixPQUFPLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQ2hELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7YUFDbkU7U0FDSixDQUFDO2FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDOUYsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsRUFBRTtnQkFDaEUsTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRVMsYUFBYSxDQUFDLE1BQTBCOztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxJQUFJLGFBQWEsRUFBRTtZQUNmLGFBQWEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztnQkFDbkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUMzQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDL0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO2FBQ3BDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE1BQU0sY0FBYyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDcEMsTUFBTSxLQUE0QixPQUFjLEVBQTFDLEVBQUUsWUFBWSxPQUE0QixFQUF2QixJQUFJLGNBQXZCLGdCQUF5QixDQUFpQixDQUFDO2dCQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssaUNBQ3BDLElBQUksS0FDUCxXQUFXLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQ25DLENBQUM7Z0JBQ0gsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxPQUFPLENBQUMsc0JBQXNCLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO2lCQUM5QztnQkFDRCxJQUFJLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7aUJBQzdDO2dCQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtvQkFDakMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDckQsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7d0JBQzdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQzFCLE1BQU0sS0FBSyxHQUFHLE1BQUMsT0FBZSxDQUFDLFlBQVksMENBQUcsR0FBRyxDQUFDLENBQUM7d0JBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN2QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO3FCQUM5QztvQkFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2lCQUM5RDthQUNKO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQ2pELE1BQU0sQ0FDVCxDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO2FBQ3BCLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUN4QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWE7WUFDdkQsSUFBSSxFQUFFLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUU7U0FDMUMsQ0FBQzthQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUMxQixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FDN0I7YUFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7O1lBemRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix5aVFBQStDO2dCQUUvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQW5EUSxjQUFjO1lBQUUsTUFBTTtZQW9CM0IsbUJBQW1CO1lBdEJXLGlCQUFpQjtZQUMvQixXQUFXO1lBVzNCLFdBQVc7WUFRWCxZQUFZO1lBQ1osbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7XHJcbiAgICBCYXNlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgQ3JlYXRlQWRkcmVzc0lucHV0LFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzTXV0YXRpb24sXHJcbiAgICBDcmVhdGVDdXN0b21lcklucHV0LFxyXG4gICAgQ3VzdG9tZXIsXHJcbiAgICBDdXN0b21GaWVsZENvbmZpZyxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgRGVsZXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgRWRpdE5vdGVEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZXRBdmFpbGFibGVDb3VudHJpZXMsXHJcbiAgICBHZXRDdXN0b21lcixcclxuICAgIEdldEN1c3RvbWVySGlzdG9yeSxcclxuICAgIEdldEN1c3RvbWVyUXVlcnksXHJcbiAgICBIaXN0b3J5RW50cnksXHJcbiAgICBNb2RhbFNlcnZpY2UsXHJcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgIFNvcnRPcmRlcixcclxuICAgIFVwZGF0ZUN1c3RvbWVyLFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJBZGRyZXNzTXV0YXRpb24sXHJcbiAgICBVcGRhdGVDdXN0b21lcklucHV0LFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJNdXRhdGlvbixcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuaW1wb3J0IHsgRU1QVFksIGZvcmtKb2luLCBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgICBjb25jYXRNYXAsXHJcbiAgICBmaWx0ZXIsXHJcbiAgICBtYXAsXHJcbiAgICBtZXJnZSxcclxuICAgIG1lcmdlTWFwLFxyXG4gICAgc2hhcmVSZXBsYXksXHJcbiAgICBzdGFydFdpdGgsXHJcbiAgICBzd2l0Y2hNYXAsXHJcbiAgICB0YWtlLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEN1c3RvbWVyR3JvdXBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtY3VzdG9tZXItZ3JvdXAtZGlhbG9nL3NlbGVjdC1jdXN0b21lci1ncm91cC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbnR5cGUgQ3VzdG9tZXJXaXRoT3JkZXJzID0gTm9uTnVsbGFibGU8R2V0Q3VzdG9tZXJRdWVyeVsnY3VzdG9tZXInXT47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWN1c3RvbWVyLWRldGFpbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2N1c3RvbWVyLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21lckRldGFpbENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBCYXNlRGV0YWlsQ29tcG9uZW50PEN1c3RvbWVyV2l0aE9yZGVycz5cclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gICAgZGV0YWlsRm9ybTogRm9ybUdyb3VwO1xyXG4gICAgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgYWRkcmVzc0N1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXTtcclxuICAgIGF2YWlsYWJsZUNvdW50cmllcyQ6IE9ic2VydmFibGU8R2V0QXZhaWxhYmxlQ291bnRyaWVzLkl0ZW1zW10+O1xyXG4gICAgb3JkZXJzJDogT2JzZXJ2YWJsZTxHZXRDdXN0b21lci5JdGVtc1tdPjtcclxuICAgIG9yZGVyc0NvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgaGlzdG9yeSQ6IE9ic2VydmFibGU8R2V0Q3VzdG9tZXJIaXN0b3J5Lkl0ZW1zW10gfCB1bmRlZmluZWQ+O1xyXG4gICAgZmV0Y2hIaXN0b3J5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIGRlZmF1bHRTaGlwcGluZ0FkZHJlc3NJZDogc3RyaW5nO1xyXG4gICAgZGVmYXVsdEJpbGxpbmdBZGRyZXNzSWQ6IHN0cmluZztcclxuICAgIGFkZHJlc3Nlc1RvRGVsZXRlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICBhZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gZmFsc2U7XHJcbiAgICBvcmRlcnNQZXJQYWdlID0gMTA7XHJcbiAgICBjdXJyZW50T3JkZXJzUGFnZSA9IDE7XHJcbiAgICBwcml2YXRlIG9yZGVyTGlzdFVwZGF0ZXMkID0gbmV3IFN1YmplY3Q8Q3VzdG9tZXJXaXRoT3JkZXJzPigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBzZXJ2ZXJDb25maWdTZXJ2aWNlOiBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBzZXJ2ZXJDb25maWdTZXJ2aWNlLCBkYXRhU2VydmljZSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnQ3VzdG9tZXInKTtcclxuICAgICAgICB0aGlzLmFkZHJlc3NDdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdBZGRyZXNzJyk7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIGN1c3RvbWVyOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6ICcnLFxyXG4gICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogJycsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMucmVkdWNlKChoYXNoLCBmaWVsZCkgPT4gKHsgLi4uaGFzaCwgW2ZpZWxkLm5hbWVdOiAnJyB9KSwge30pLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGFkZHJlc3NlczogbmV3IEZvcm1BcnJheShbXSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5hdmFpbGFibGVDb3VudHJpZXMkID0gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5nc1xyXG4gICAgICAgICAgICAuZ2V0QXZhaWxhYmxlQ291bnRyaWVzKClcclxuICAgICAgICAgICAgLm1hcFNpbmdsZShyZXN1bHQgPT4gcmVzdWx0LmNvdW50cmllcy5pdGVtcylcclxuICAgICAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG5cclxuICAgICAgICBjb25zdCBjdXN0b21lcldpdGhVcGRhdGVzJCA9IHRoaXMuZW50aXR5JC5waXBlKG1lcmdlKHRoaXMub3JkZXJMaXN0VXBkYXRlcyQpKTtcclxuICAgICAgICB0aGlzLm9yZGVycyQgPSBjdXN0b21lcldpdGhVcGRhdGVzJC5waXBlKG1hcChjdXN0b21lciA9PiBjdXN0b21lci5vcmRlcnMuaXRlbXMpKTtcclxuICAgICAgICB0aGlzLm9yZGVyc0NvdW50JCA9IHRoaXMuZW50aXR5JC5waXBlKG1hcChjdXN0b21lciA9PiBjdXN0b21lci5vcmRlcnMudG90YWxJdGVtcykpO1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeSQgPSB0aGlzLmZldGNoSGlzdG9yeS5waXBlKFxyXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgIC5nZXRDdXN0b21lckhpc3RvcnkodGhpcy5pZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFN0cmVhbShkYXRhID0+IGRhdGEuY3VzdG9tZXI/Lmhpc3RvcnkuaXRlbXMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMub3JkZXJMaXN0VXBkYXRlcyQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBZGRyZXNzRm9ybUNvbnRyb2xzKCk6IEZvcm1Db250cm9sW10ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoWydhZGRyZXNzZXMnXSkgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIHJldHVybiBmb3JtQXJyYXkuY29udHJvbHMgYXMgRm9ybUNvbnRyb2xbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREZWZhdWx0QmlsbGluZ0FkZHJlc3NJZChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRTaGlwcGluZ0FkZHJlc3NJZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRGVsZXRlQWRkcmVzcyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc2VzVG9EZWxldGVJZHMuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZHJlc3Nlc1RvRGVsZXRlSWRzLmRlbGV0ZShpZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRyZXNzZXNUb0RlbGV0ZUlkcy5hZGQoaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRBZGRyZXNzKCkge1xyXG4gICAgICAgIGNvbnN0IGFkZHJlc3NGb3JtQXJyYXkgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdhZGRyZXNzZXMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgY29uc3QgbmV3QWRkcmVzcyA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBmdWxsTmFtZTogJycsXHJcbiAgICAgICAgICAgIGNvbXBhbnk6ICcnLFxyXG4gICAgICAgICAgICBzdHJlZXRMaW5lMTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgc3RyZWV0TGluZTI6ICcnLFxyXG4gICAgICAgICAgICBjaXR5OiAnJyxcclxuICAgICAgICAgICAgcHJvdmluY2U6ICcnLFxyXG4gICAgICAgICAgICBwb3N0YWxDb2RlOiAnJyxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiAnJyxcclxuICAgICAgICAgICAgZGVmYXVsdFNoaXBwaW5nQWRkcmVzczogZmFsc2UsXHJcbiAgICAgICAgICAgIGRlZmF1bHRCaWxsaW5nQWRkcmVzczogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZERlZiBvZiB0aGlzLmFkZHJlc3NDdXN0b21GaWVsZHMpIHtcclxuICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkc0dyb3VwLmFkZENvbnRyb2woZmllbGREZWYubmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV3QWRkcmVzcy5hZGRDb250cm9sKCdjdXN0b21GaWVsZHMnLCBjdXN0b21GaWVsZHNHcm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZHJlc3NGb3JtQXJyYXkucHVzaChuZXdBZGRyZXNzKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRPcmRlckl0ZW1zUGVyUGFnZShpdGVtc1BlclBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMub3JkZXJzUGVyUGFnZSA9ICtpdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgdGhpcy5mZXRjaE9yZGVyc0xpc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRPcmRlckN1cnJlbnRQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyc1BhZ2UgPSArcGFnZTtcclxuICAgICAgICB0aGlzLmZldGNoT3JkZXJzTGlzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICBjb25zdCBjdXN0b21lckZvcm0gPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgIGlmICghY3VzdG9tZXJGb3JtKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gY3VzdG9tZXJGb3JtLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUZpZWxkcyA9IGN1c3RvbWVyRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBjdXN0b21lcjogQ3JlYXRlQ3VzdG9tZXJJbnB1dCA9IHtcclxuICAgICAgICAgICAgdGl0bGU6IGZvcm1WYWx1ZS50aXRsZSxcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzLFxyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IGZvcm1WYWx1ZS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiBmb3JtVmFsdWUucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgLmNyZWF0ZUN1c3RvbWVyKGN1c3RvbWVyLCBmb3JtVmFsdWUucGFzc3dvcmQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgY3JlYXRlQ3VzdG9tZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChjcmVhdGVDdXN0b21lci5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ3VzdG9tZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0N1c3RvbWVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVDdXN0b21lci5lbWFpbEFkZHJlc3MgJiYgIWZvcm1WYWx1ZS5wYXNzd29yZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXygnY3VzdG9tZXIuZW1haWwtdmVyaWZpY2F0aW9uLXNlbnQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblZhcnM6IHsgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2luZm8nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nLCBjcmVhdGVDdXN0b21lci5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWxBZGRyZXNzQ29uZmxpY3RFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihjcmVhdGVDdXN0b21lci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICB0aGlzLmVudGl0eSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHsgaWQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVPcGVyYXRpb25zOiBBcnJheTxcclxuICAgICAgICAgICAgICAgICAgICAgICAgT2JzZXJ2YWJsZTxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVXBkYXRlQ3VzdG9tZXIuVXBkYXRlQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzLkNyZWF0ZUN1c3RvbWVyQWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVcGRhdGVDdXN0b21lckFkZHJlc3MuVXBkYXRlQ3VzdG9tZXJBZGRyZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlbGV0ZUN1c3RvbWVyQWRkcmVzcy5EZWxldGVDdXN0b21lckFkZHJlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgID4gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21lckZvcm0gPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXN0b21lckZvcm0gJiYgY3VzdG9tZXJGb3JtLmRpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGN1c3RvbWVyRm9ybS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gY3VzdG9tZXJGb3JtLmdldCgnY3VzdG9tRmllbGRzJyk/LnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21lcjogVXBkYXRlQ3VzdG9tZXJJbnB1dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvcm1WYWx1ZS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsQWRkcmVzczogZm9ybVZhbHVlLmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogZm9ybVZhbHVlLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogZm9ybVZhbHVlLnBob25lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlT3BlcmF0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVDdXN0b21lcihjdXN0b21lcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHJlcy51cGRhdGVDdXN0b21lcikpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzRm9ybUFycmF5ID0gdGhpcy5kZXRhaWxGb3JtLmdldCgnYWRkcmVzc2VzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoYWRkcmVzc0Zvcm1BcnJheSAmJiBhZGRyZXNzRm9ybUFycmF5LmRpcnR5KSB8fCB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhZGRyZXNzQ29udHJvbCBvZiBhZGRyZXNzRm9ybUFycmF5LmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzc0NvbnRyb2wuZGlydHkgfHwgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGFkZHJlc3NDb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0OiBDcmVhdGVBZGRyZXNzSW5wdXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiBhZGRyZXNzLmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55OiBhZGRyZXNzLmNvbXBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldExpbmUxOiBhZGRyZXNzLnN0cmVldExpbmUxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXRMaW5lMjogYWRkcmVzcy5zdHJlZXRMaW5lMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogYWRkcmVzcy5jb3VudHJ5Q29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IGFkZHJlc3MucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaGlwcGluZ0FkZHJlc3M6IHRoaXMuZGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkID09PSBhZGRyZXNzLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0QmlsbGluZ0FkZHJlc3M6IHRoaXMuZGVmYXVsdEJpbGxpbmdBZGRyZXNzSWQgPT09IGFkZHJlc3MuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkczogYWRkcmVzcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3MuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU9wZXJhdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlQ3VzdG9tZXJBZGRyZXNzKGlkLCBpbnB1dClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHJlcy5jcmVhdGVDdXN0b21lckFkZHJlc3MpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hZGRyZXNzZXNUb0RlbGV0ZUlkcy5oYXMoYWRkcmVzcy5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVsZXRlQ3VzdG9tZXJBZGRyZXNzKGFkZHJlc3MuaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmRlbGV0ZUN1c3RvbWVyQWRkcmVzcykpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudXBkYXRlQ3VzdG9tZXJBZGRyZXNzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmlucHV0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLnVwZGF0ZUN1c3RvbWVyQWRkcmVzcykpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oc2F2ZU9wZXJhdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBub3RpZmllZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQuX190eXBlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ3VzdG9tZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQWRkcmVzcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTdWNjZXNzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vdGlmaWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5nZXRDdXN0b21lcih0aGlzLmlkKS5zaW5nbGUkLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VtYWlsQWRkcmVzc0NvbmZsaWN0RXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtZXJyb3InKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lcicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFRvR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoU2VsZWN0Q3VzdG9tZXJHcm91cERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZ3JvdXBJZHMgPT4gKGdyb3VwSWRzID8gZnJvbShncm91cElkcykgOiBFTVBUWSkpLFxyXG4gICAgICAgICAgICAgICAgY29uY2F0TWFwKGdyb3VwSWQgPT4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5hZGRDdXN0b21lcnNUb0dyb3VwKGdyb3VwSWQsIFt0aGlzLmlkXSkpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKGBjdXN0b21lci5hZGQtY3VzdG9tZXJzLXRvLWdyb3VwLXN1Y2Nlc3NgKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21lckNvdW50OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IHJlcy5hZGRDdXN0b21lcnNUb0dyb3VwLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLmdldEN1c3RvbWVyKHRoaXMuaWQsIHsgdGFrZTogMCB9KS5zaW5nbGUkLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUZyb21Hcm91cChncm91cDogR2V0Q3VzdG9tZXIuR3JvdXBzKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmRpYWxvZyh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXygnY3VzdG9tZXIuY29uZmlybS1yZW1vdmUtY3VzdG9tZXItZnJvbS1ncm91cCcpLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzcG9uc2UgPT5cclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIucmVtb3ZlQ3VzdG9tZXJzRnJvbUdyb3VwKGdyb3VwLmlkLCBbdGhpcy5pZF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogRU1QVFksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuZ2V0Q3VzdG9tZXIodGhpcy5pZCwgeyB0YWtlOiAwIH0pLnNpbmdsZSQpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oYGN1c3RvbWVyLnJlbW92ZS1jdXN0b21lcnMtZnJvbS1ncm91cC1zdWNjZXNzYCksIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21lckNvdW50OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXAubmFtZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROb3RlVG9DdXN0b21lcih7IG5vdGUgfTogeyBub3RlOiBzdHJpbmcgfSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuYWRkTm90ZVRvQ3VzdG9tZXIodGhpcy5pZCwgbm90ZSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgIGVudGl0eTogJ05vdGUnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVOb3RlKGVudHJ5OiBIaXN0b3J5RW50cnkpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChFZGl0Tm90ZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5UHJpdmFjeUNvbnRyb2xzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBlbnRyeS5kYXRhLm5vdGUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIudXBkYXRlQ3VzdG9tZXJOb3RlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVJZDogZW50cnkuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlOiByZXN1bHQubm90ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ05vdGUnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZU5vdGUoZW50cnk6IEhpc3RvcnlFbnRyeSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjb21tb24uY29uZmlybS1kZWxldGUtbm90ZScpLFxyXG4gICAgICAgICAgICAgICAgYm9keTogZW50cnkuZGF0YS5ub3RlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHJlcyA9PiAocmVzID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5kZWxldGVDdXN0b21lck5vdGUoZW50cnkuaWQpIDogRU1QVFkpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWRlbGV0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdOb3RlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IEN1c3RvbWVyV2l0aE9yZGVycyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyR3JvdXAgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgIGlmIChjdXN0b21lckdyb3VwKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbWVyR3JvdXAucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZW50aXR5LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBlbnRpdHkuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IGVudGl0eS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBlbnRpdHkucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6IGVudGl0eS5lbWFpbEFkZHJlc3MsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgYWRkcmVzc2VzQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VzdG9tRmllbGRzLCAuLi5yZXN0IH0gPSBhZGRyZXNzIGFzIGFueTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IGFkZHJlc3MuY291bnRyeS5jb2RlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzZXNBcnJheS5wdXNoKGFkZHJlc3NHcm91cCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzSWQgPSBhZGRyZXNzLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MuZGVmYXVsdEJpbGxpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9IGFkZHJlc3MuaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21GaWVsZHNHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGREZWYgb2YgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpZWxkRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGFkZHJlc3MgYXMgYW55KS5jdXN0b21GaWVsZHM/LltrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzR3JvdXAuYWRkQ29udHJvbChrZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzR3JvdXAuYWRkQ29udHJvbCgnY3VzdG9tRmllbGRzJywgY3VzdG9tRmllbGRzR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zZXRDb250cm9sKCdhZGRyZXNzZXMnLCBhZGRyZXNzZXNBcnJheSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tZXInLCAnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmZXRjaCB0aGUgY3VzdG9tZXIgd2l0aCB0aGUgY3VycmVudCBvcmRlciBsaXN0IHNldHRpbmdzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZldGNoT3JkZXJzTGlzdCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgIC5nZXRDdXN0b21lcih0aGlzLmlkLCB7XHJcbiAgICAgICAgICAgICAgICB0YWtlOiB0aGlzLm9yZGVyc1BlclBhZ2UsXHJcbiAgICAgICAgICAgICAgICBza2lwOiAodGhpcy5jdXJyZW50T3JkZXJzUGFnZSAtIDEpICogdGhpcy5vcmRlcnNQZXJQYWdlLFxyXG4gICAgICAgICAgICAgICAgc29ydDogeyBvcmRlclBsYWNlZEF0OiBTb3J0T3JkZXIuREVTQyB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc2luZ2xlJC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5jdXN0b21lciksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLm9yZGVyTGlzdFVwZGF0ZXMkLm5leHQocmVzdWx0KSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
|
-
import { BaseEntityResolver } from '@vendure/admin-ui/core';
|
|
3
|
+
import { BaseEntityResolver, SortOrder } from '@vendure/admin-ui/core';
|
|
4
4
|
import { DataService } from '@vendure/admin-ui/core';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/router";
|
|
@@ -19,7 +19,9 @@ export class CustomerResolver extends BaseEntityResolver {
|
|
|
19
19
|
phoneNumber: null,
|
|
20
20
|
addresses: null,
|
|
21
21
|
user: null,
|
|
22
|
-
}, id => dataService.customer
|
|
22
|
+
}, id => dataService.customer
|
|
23
|
+
.getCustomer(id, { take: 10, sort: { orderPlacedAt: SortOrder.DESC } })
|
|
24
|
+
.mapStream(data => data.customer));
|
|
23
25
|
}
|
|
24
26
|
}
|
|
25
27
|
CustomerResolver.ɵprov = i0.ɵɵdefineInjectable({ factory: function CustomerResolver_Factory() { return new CustomerResolver(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.DataService)); }, token: CustomerResolver, providedIn: "root" });
|
|
@@ -32,4 +34,4 @@ CustomerResolver.ctorParameters = () => [
|
|
|
32
34
|
{ type: Router },
|
|
33
35
|
{ type: DataService }
|
|
34
36
|
];
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2N1c3RvbWVyL3NyYy9wcm92aWRlcnMvcm91dGluZy9jdXN0b21lci1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBS3JELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxrQkFBcUM7SUFDdkUsWUFBWSxNQUFjLEVBQUUsV0FBd0I7UUFDaEQsS0FBSyxDQUNELE1BQU0sRUFDTjtZQUNJLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLEVBQUUsRUFBRSxFQUFFO1lBQ04sU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsRUFBRTtZQUNiLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLEVBQUU7WUFDYixRQUFRLEVBQUUsRUFBRTtZQUNaLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUk7U0FDYixFQUNELEVBQUUsQ0FBQyxFQUFFLENBQ0QsV0FBVyxDQUFDLFFBQVE7YUFDZixXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7YUFDdEUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUM1QyxDQUFDO0lBQ04sQ0FBQzs7OztZQXpCSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVBRLE1BQU07WUFHTixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCYXNlRW50aXR5UmVzb2x2ZXIsIFNvcnRPcmRlciB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXN0b21lciB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJSZXNvbHZlciBleHRlbmRzIEJhc2VFbnRpdHlSZXNvbHZlcjxDdXN0b21lci5GcmFnbWVudD4ge1xyXG4gICAgY29uc3RydWN0b3Iocm91dGVyOiBSb3V0ZXIsIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKFxyXG4gICAgICAgICAgICByb3V0ZXIsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIF9fdHlwZW5hbWU6ICdDdXN0b21lcicsXHJcbiAgICAgICAgICAgICAgICBpZDogJycsXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0OiAnJyxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBsYXN0TmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6ICcnLFxyXG4gICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzZXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBpZCA9PlxyXG4gICAgICAgICAgICAgICAgZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAuZ2V0Q3VzdG9tZXIoaWQsIHsgdGFrZTogMTAsIHNvcnQ6IHsgb3JkZXJQbGFjZWRBdDogU29ydE9yZGVyLkRFU0MgfSB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXBTdHJlYW0oZGF0YSA9PiBkYXRhLmN1c3RvbWVyKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -39,7 +39,8 @@ export class AdminDetailComponent extends BaseDetailComponent {
|
|
|
39
39
|
.getRoles(999)
|
|
40
40
|
.mapStream(item => item.roles.items.filter(i => i.code !== CUSTOMER_ROLE_CODE));
|
|
41
41
|
this.dataService.client.userStatus().single$.subscribe(({ userStatus }) => {
|
|
42
|
-
if (!userStatus.permissions.includes(Permission.
|
|
42
|
+
if (!userStatus.permissions.includes(Permission.CreateAdministrator) &&
|
|
43
|
+
!userStatus.permissions.includes(Permission.UpdateAdministrator)) {
|
|
43
44
|
const rolesSelect = this.detailForm.get('roles');
|
|
44
45
|
if (rolesSelect) {
|
|
45
46
|
rolesSelect.disable();
|
|
@@ -182,7 +183,7 @@ export class AdminDetailComponent extends BaseDetailComponent {
|
|
|
182
183
|
AdminDetailComponent.decorators = [
|
|
183
184
|
{ type: Component, args: [{
|
|
184
185
|
selector: 'vdr-admin-detail',
|
|
185
|
-
template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"administrator-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"'UpdateAdministrator'\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'settings.email-address' | translate\" for=\"emailAddress\">\r\n <input\r\n id=\"emailAddress\"\r\n type=\"text\"\r\n formControlName=\"emailAddress\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.first-name' | translate\" for=\"firstName\">\r\n <input\r\n id=\"firstName\"\r\n type=\"text\"\r\n formControlName=\"firstName\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.last-name' | translate\" for=\"lastName\">\r\n <input\r\n id=\"lastName\"\r\n type=\"text\"\r\n formControlName=\"lastName\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field *ngIf=\"isNew$ | async\" [label]=\"'settings.password' | translate\" for=\"password\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n *ngIf=\"!(isNew$ | async) && ('UpdateAdministrator' | hasPermission)\"\r\n [label]=\"'settings.password' | translate\"\r\n for=\"password\"\r\n [readOnlyToggle]=\"true\"\r\n >\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Administrator\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!('UpdateAdministrator' | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"administrator-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <label class=\"clr-control-label\">{{ 'settings.roles' | translate }}</label>\r\n <ng-select\r\n [items]=\"allRoles$ | async\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n formControlName=\"roles\"\r\n (change)=\"rolesChanged($event)\"\r\n bindLabel=\"description\"\r\n ></ng-select>\r\n\r\n <ul class=\"nav\" role=\"tablist\">\r\n <li role=\"presentation\" class=\"nav-item\" *ngFor=\"let channel of getAvailableChannels()\">\r\n <button\r\n [id]=\"channel.channelId\"\r\n (click)=\"selectedChannelId = channel.channelId\"\r\n class=\"btn btn-link nav-link\"\r\n [class.active]=\"selectedChannelId === channel.channelId\"\r\n [attr.aria-selected]=\"selectedChannelId === channel.channelId\"\r\n type=\"button\"\r\n >\r\n {{ channel.channelCode | channelCodeToLabel | translate }}\r\n </button>\r\n </li>\r\n </ul>\r\n <vdr-permission-grid\r\n [activePermissions]=\"getPermissionsForSelectedChannel()\"\r\n [permissionDefinitions]=\"permissionDefinitions\"\r\n [readonly]=\"true\"\r\n ></vdr-permission-grid>\r\n</form>\r\n",
|
|
186
|
+
template: "<vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-entity-info [entity]=\"entity$ | async\"></vdr-entity-info>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"administrator-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"'UpdateAdministrator'\"\r\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-form-field [label]=\"'settings.email-address' | translate\" for=\"emailAddress\">\r\n <input\r\n id=\"emailAddress\"\r\n type=\"text\"\r\n formControlName=\"emailAddress\"\r\n [readonly]=\"!(['CreateAdministrator', 'UpdateAdministrator'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.first-name' | translate\" for=\"firstName\">\r\n <input\r\n id=\"firstName\"\r\n type=\"text\"\r\n formControlName=\"firstName\"\r\n [readonly]=\"!(['CreateAdministrator', 'UpdateAdministrator'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.last-name' | translate\" for=\"lastName\">\r\n <input\r\n id=\"lastName\"\r\n type=\"text\"\r\n formControlName=\"lastName\"\r\n [readonly]=\"!(['CreateAdministrator', 'UpdateAdministrator'] | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field *ngIf=\"isNew$ | async\" [label]=\"'settings.password' | translate\" for=\"password\">\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n *ngIf=\"!(isNew$ | async) && (['CreateAdministrator', 'UpdateAdministrator'] | hasPermission)\"\r\n [label]=\"'settings.password' | translate\"\r\n for=\"password\"\r\n [readOnlyToggle]=\"true\"\r\n >\r\n <input id=\"password\" type=\"password\" formControlName=\"password\" />\r\n </vdr-form-field>\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Administrator\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(['CreateAdministrator', 'UpdateAdministrator'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <vdr-custom-detail-component-host\r\n locationId=\"administrator-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <label class=\"clr-control-label\">{{ 'settings.roles' | translate }}</label>\r\n <ng-select\r\n [items]=\"allRoles$ | async\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n formControlName=\"roles\"\r\n (change)=\"rolesChanged($event)\"\r\n bindLabel=\"description\"\r\n ></ng-select>\r\n\r\n <ul class=\"nav\" role=\"tablist\">\r\n <li role=\"presentation\" class=\"nav-item\" *ngFor=\"let channel of getAvailableChannels()\">\r\n <button\r\n [id]=\"channel.channelId\"\r\n (click)=\"selectedChannelId = channel.channelId\"\r\n class=\"btn btn-link nav-link\"\r\n [class.active]=\"selectedChannelId === channel.channelId\"\r\n [attr.aria-selected]=\"selectedChannelId === channel.channelId\"\r\n type=\"button\"\r\n >\r\n {{ channel.channelCode | channelCodeToLabel | translate }}\r\n </button>\r\n </li>\r\n </ul>\r\n <vdr-permission-grid\r\n [activePermissions]=\"getPermissionsForSelectedChannel()\"\r\n [permissionDefinitions]=\"permissionDefinitions\"\r\n [readonly]=\"true\"\r\n ></vdr-permission-grid>\r\n</form>\r\n",
|
|
186
187
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
187
188
|
styles: [""]
|
|
188
189
|
},] }
|
|
@@ -196,4 +197,4 @@ AdminDetailComponent.ctorParameters = () => [
|
|
|
196
197
|
{ type: FormBuilder },
|
|
197
198
|
{ type: NotificationService }
|
|
198
199
|
];
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2V0dGluZ3Mvc3JjL2NvbXBvbmVudHMvYWRtaW4tZGV0YWlsL2FkbWluLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUEyQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3RHLE9BQU8sRUFLSCxVQUFVLEdBSWIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWNoRCxNQUFNLE9BQU8sb0JBQ1QsU0FBUSxtQkFBbUQ7SUFnQjNELFlBQ0ksTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLG1CQUF3QyxFQUNoQyxjQUFpQyxFQUMvQixXQUF3QixFQUMxQixXQUF3QixFQUN4QixtQkFBd0M7UUFFaEQsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVB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QUFjO1lBZWQsbUJBQW1CO1lBakJNLGlCQUFpQjtZQWdCMUMsV0FBVztZQWZYLFdBQVc7WUFjWCxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcclxuaW1wb3J0IHsgQmFzZURldGFpbENvbXBvbmVudCwgQ3VzdG9tRmllbGRDb25maWcsIFBlcm1pc3Npb25EZWZpbml0aW9uIH0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBZG1pbmlzdHJhdG9yLFxyXG4gICAgQ3JlYXRlQWRtaW5pc3RyYXRvcklucHV0LFxyXG4gICAgR2V0QWRtaW5pc3RyYXRvcixcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIFBlcm1pc3Npb24sXHJcbiAgICBSb2xlLFxyXG4gICAgUm9sZUZyYWdtZW50LFxyXG4gICAgVXBkYXRlQWRtaW5pc3RyYXRvcklucHV0LFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IFNlcnZlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgQ1VTVE9NRVJfUk9MRV9DT0RFIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtZXJnZU1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbnNCeUNoYW5uZWwge1xyXG4gICAgY2hhbm5lbElkOiBzdHJpbmc7XHJcbiAgICBjaGFubmVsQ29kZTogc3RyaW5nO1xyXG4gICAgcGVybWlzc2lvbnM6IHsgW0sgaW4gUGVybWlzc2lvbl06IGJvb2xlYW4gfTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1hZG1pbi1kZXRhaWwnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hZG1pbi1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRtaW5EZXRhaWxDb21wb25lbnRcclxuICAgIGV4dGVuZHMgQmFzZURldGFpbENvbXBvbmVudDxHZXRBZG1pbmlzdHJhdG9yLkFkbWluaXN0cmF0b3I+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIGN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXTtcclxuICAgIGFkbWluaXN0cmF0b3IkOiBPYnNlcnZhYmxlPEdldEFkbWluaXN0cmF0b3IuQWRtaW5pc3RyYXRvcj47XHJcbiAgICBwZXJtaXNzaW9uRGVmaW5pdGlvbnM6IFBlcm1pc3Npb25EZWZpbml0aW9uW107XHJcbiAgICBhbGxSb2xlcyQ6IE9ic2VydmFibGU8Um9sZS5GcmFnbWVudFtdPjtcclxuICAgIHNlbGVjdGVkUm9sZXM6IFJvbGUuRnJhZ21lbnRbXSA9IFtdO1xyXG4gICAgZGV0YWlsRm9ybTogRm9ybUdyb3VwO1xyXG4gICAgc2VsZWN0ZWRSb2xlUGVybWlzc2lvbnM6IHsgW2NoYW5uZWxJZDogc3RyaW5nXTogUGVybWlzc2lvbnNCeUNoYW5uZWwgfSA9IHt9IGFzIGFueTtcclxuICAgIHNlbGVjdGVkQ2hhbm5lbElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBnZXRBdmFpbGFibGVDaGFubmVscygpOiBQZXJtaXNzaW9uc0J5Q2hhbm5lbFtdIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnNlbGVjdGVkUm9sZVBlcm1pc3Npb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgc2VydmVyQ29uZmlnU2VydmljZTogU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIHNlcnZlckNvbmZpZ1NlcnZpY2UsIGRhdGFTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLmN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ0FkbWluaXN0cmF0b3InKTtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBwYXNzd29yZDogWycnXSxcclxuICAgICAgICAgICAgcm9sZXM6IFtbXV0sXHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5ncm91cChcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzLnJlZHVjZSgoaGFzaCwgZmllbGQpID0+ICh7IC4uLmhhc2gsIFtmaWVsZC5uYW1lXTogJycgfSksIHt9KSxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB0aGlzLmFkbWluaXN0cmF0b3IkID0gdGhpcy5lbnRpdHkkO1xyXG4gICAgICAgIHRoaXMuYWxsUm9sZXMkID0gdGhpcy5kYXRhU2VydmljZS5hZG1pbmlzdHJhdG9yXHJcbiAgICAgICAgICAgIC5nZXRSb2xlcyg5OTkpXHJcbiAgICAgICAgICAgIC5tYXBTdHJlYW0oaXRlbSA9PiBpdGVtLnJvbGVzLml0ZW1zLmZpbHRlcihpID0+IGkuY29kZSAhPT0gQ1VTVE9NRVJfUk9MRV9DT0RFKSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQudXNlclN0YXR1cygpLnNpbmdsZSQuc3Vic2NyaWJlKCh7IHVzZXJTdGF0dXMgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXVzZXJTdGF0dXMucGVybWlzc2lvbnMuaW5jbHVkZXMoUGVybWlzc2lvbi5VcGRhdGVBZG1pbmlzdHJhdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgcm9sZXNTZWxlY3QgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdyb2xlcycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJvbGVzU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZXNTZWxlY3QuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uRGVmaW5pdGlvbnMgPSB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0UGVybWlzc2lvbkRlZmluaXRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcm9sZXNDaGFuZ2VkKHJvbGVzOiBSb2xlW10pIHtcclxuICAgICAgICB0aGlzLmJ1aWxkUGVybWlzc2lvbnNNYXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9uc0ZvclNlbGVjdGVkQ2hhbm5lbCgpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0QWN0aXZlUGVybWlzc2lvbnMoaW5wdXQ6IFBlcm1pc3Npb25zQnlDaGFubmVsWydwZXJtaXNzaW9ucyddKTogc3RyaW5nW10ge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoaW5wdXQpXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChbcGVybWlzc2lvbiwgYWN0aXZlXSkgPT4gYWN0aXZlKVxyXG4gICAgICAgICAgICAgICAgLm1hcCgoW3Blcm1pc3Npb24sIGFjdGl2ZV0pID0+IHBlcm1pc3Npb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENoYW5uZWxJZCkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENoYW5uZWwgPSB0aGlzLnNlbGVjdGVkUm9sZVBlcm1pc3Npb25zW3RoaXMuc2VsZWN0ZWRDaGFubmVsSWRdO1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRDaGFubmVsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uTWFwID0gdGhpcy5zZWxlY3RlZFJvbGVQZXJtaXNzaW9uc1t0aGlzLnNlbGVjdGVkQ2hhbm5lbElkXS5wZXJtaXNzaW9ucztcclxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRBY3RpdmVQZXJtaXNzaW9ucyhwZXJtaXNzaW9uTWFwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGFubmVscyA9IE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZFJvbGVQZXJtaXNzaW9ucyk7XHJcbiAgICAgICAgaWYgKDAgPCBjaGFubmVscy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5uZWxJZCA9IGNoYW5uZWxzWzBdLmNoYW5uZWxJZDtcclxuICAgICAgICAgICAgcmV0dXJuIGdldEFjdGl2ZVBlcm1pc3Npb25zKGNoYW5uZWxzWzBdLnBlcm1pc3Npb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgY29uc3QgYWRtaW5pc3RyYXRvcjogQ3JlYXRlQWRtaW5pc3RyYXRvcklucHV0ID0ge1xyXG4gICAgICAgICAgICBlbWFpbEFkZHJlc3M6IGZvcm1WYWx1ZS5lbWFpbEFkZHJlc3MsXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogZm9ybVZhbHVlLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IGZvcm1WYWx1ZS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgcGFzc3dvcmQ6IGZvcm1WYWx1ZS5wYXNzd29yZCxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRzOiBmb3JtVmFsdWUuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICByb2xlSWRzOiBmb3JtVmFsdWUucm9sZXMubWFwKHJvbGUgPT4gcm9sZS5pZCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmFkbWluaXN0cmF0b3IuY3JlYXRlQWRtaW5pc3RyYXRvcihhZG1pbmlzdHJhdG9yKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1jcmVhdGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQWRtaW5pc3RyYXRvcicsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJywgZGF0YS5jcmVhdGVBZG1pbmlzdHJhdG9yLmlkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NvbW1vbi5ub3RpZnktY3JlYXRlLWVycm9yJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdBZG1pbmlzdHJhdG9yJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICB0aGlzLmFkbWluaXN0cmF0b3IkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCh7IGlkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRtaW5pc3RyYXRvcjogVXBkYXRlQWRtaW5pc3RyYXRvcklucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IGZvcm1WYWx1ZS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBmb3JtVmFsdWUucGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkczogZm9ybVZhbHVlLmN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZUlkczogZm9ybVZhbHVlLnJvbGVzLm1hcChyb2xlID0+IHJvbGUuaWQpLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYWRtaW5pc3RyYXRvci51cGRhdGVBZG1pbmlzdHJhdG9yKGFkbWluaXN0cmF0b3IpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdBZG1pbmlzdHJhdG9yJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLWVycm9yJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQWRtaW5pc3RyYXRvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKGFkbWluaXN0cmF0b3I6IEFkbWluaXN0cmF0b3IsIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBlbWFpbEFkZHJlc3M6IGFkbWluaXN0cmF0b3IuZW1haWxBZGRyZXNzLFxyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IGFkbWluaXN0cmF0b3IuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICBsYXN0TmFtZTogYWRtaW5pc3RyYXRvci5sYXN0TmFtZSxcclxuICAgICAgICAgICAgcm9sZXM6IGFkbWluaXN0cmF0b3IudXNlci5yb2xlcyxcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgICAgICAgICAgYWRtaW5pc3RyYXRvcixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmRDb250cm9sID0gdGhpcy5kZXRhaWxGb3JtLmdldCgncGFzc3dvcmQnKTtcclxuICAgICAgICBpZiAocGFzc3dvcmRDb250cm9sKSB7XHJcbiAgICAgICAgICAgIGlmICghYWRtaW5pc3RyYXRvci5pZCkge1xyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRDb250cm9sLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmJ1aWxkUGVybWlzc2lvbnNNYXAoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJ1aWxkUGVybWlzc2lvbnNNYXAoKSB7XHJcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnNDb250cm9sID0gdGhpcy5kZXRhaWxGb3JtLmdldCgncm9sZXMnKTtcclxuICAgICAgICBpZiAocGVybWlzc2lvbnNDb250cm9sKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvbGVzOiBSb2xlRnJhZ21lbnRbXSA9IHBlcm1pc3Npb25zQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgY2hhbm5lbElkUGVybWlzc2lvbnNNYXAgPSBuZXcgTWFwPHN0cmluZywgU2V0PFBlcm1pc3Npb24+PigpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGFubmVsSWRDb2RlTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiByb2xlcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGFubmVsIG9mIHJvbGUuY2hhbm5lbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFubmVsUGVybWlzc2lvbnMgPSBjaGFubmVsSWRQZXJtaXNzaW9uc01hcC5nZXQoY2hhbm5lbC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvblNldCA9IGNoYW5uZWxQZXJtaXNzaW9ucyB8fCBuZXcgU2V0PFBlcm1pc3Npb24+KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJvbGUucGVybWlzc2lvbnMuZm9yRWFjaChwID0+IHBlcm1pc3Npb25TZXQuYWRkKHApKTtcclxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsSWRQZXJtaXNzaW9uc01hcC5zZXQoY2hhbm5lbC5pZCwgcGVybWlzc2lvblNldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbElkQ29kZU1hcC5zZXQoY2hhbm5lbC5pZCwgY2hhbm5lbC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvbGVQZXJtaXNzaW9ucyA9IHt9IGFzIGFueTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGFubmVsSWQgb2YgQXJyYXkuZnJvbShjaGFubmVsSWRQZXJtaXNzaW9uc01hcC5rZXlzKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uU2V0ID0gY2hhbm5lbElkUGVybWlzc2lvbnNNYXAuZ2V0KGNoYW5uZWxJZCkhO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbnNIYXNoOiB7IFtLIGluIFBlcm1pc3Npb25dOiBib29sZWFuIH0gPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlZiBvZiB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0UGVybWlzc2lvbkRlZmluaXRpb25zKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uc0hhc2hbZGVmLm5hbWVdID0gcGVybWlzc2lvblNldC5oYXMoZGVmLm5hbWUgYXMgUGVybWlzc2lvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUm9sZVBlcm1pc3Npb25zW2NoYW5uZWxJZF0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbElkLFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb2RlOiBjaGFubmVsSWRDb2RlTWFwLmdldChjaGFubmVsSWQpISxcclxuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uczogcGVybWlzc2lvbnNIYXNoLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDplbmFibGU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2V0dGluZ3Mvc3JjL2NvbXBvbmVudHMvYWRtaW4tZGV0YWlsL2FkbWluLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUEyQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3RHLE9BQU8sRUFLSCxVQUFVLEdBSWIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWNoRCxNQUFNLE9BQU8sb0JBQ1QsU0FBUSxtQkFBbUQ7SUFnQjNELFlBQ0ksTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLG1CQUF3QyxFQUNoQyxjQUFpQyxFQUMvQixXQUF3QixFQUMxQixXQUF3QixFQUN4QixtQkFBd0M7UUFFaEQsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVB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QztnQkFFNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2xEOzs7WUEvQndCLE1BQU07WUFBdEIsY0FBYztZQWVkLG1CQUFtQjtZQWpCTSxpQkFBaUI7WUFnQjFDLFdBQVc7WUFmWCxXQUFXO1lBY1gsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7IEJhc2VEZXRhaWxDb21wb25lbnQsIEN1c3RvbUZpZWxkQ29uZmlnLCBQZXJtaXNzaW9uRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQWRtaW5pc3RyYXRvcixcclxuICAgIENyZWF0ZUFkbWluaXN0cmF0b3JJbnB1dCxcclxuICAgIEdldEFkbWluaXN0cmF0b3IsXHJcbiAgICBMYW5ndWFnZUNvZGUsXHJcbiAgICBQZXJtaXNzaW9uLFxyXG4gICAgUm9sZSxcclxuICAgIFJvbGVGcmFnbWVudCxcclxuICAgIFVwZGF0ZUFkbWluaXN0cmF0b3JJbnB1dCxcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBTZXJ2ZXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IENVU1RPTUVSX1JPTEVfQ09ERSB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25zQnlDaGFubmVsIHtcclxuICAgIGNoYW5uZWxJZDogc3RyaW5nO1xyXG4gICAgY2hhbm5lbENvZGU6IHN0cmluZztcclxuICAgIHBlcm1pc3Npb25zOiB7IFtLIGluIFBlcm1pc3Npb25dOiBib29sZWFuIH07XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItYWRtaW4tZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hZG1pbi1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYWRtaW4tZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkbWluRGV0YWlsQ29tcG9uZW50XHJcbiAgICBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8R2V0QWRtaW5pc3RyYXRvci5BZG1pbmlzdHJhdG9yPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XHJcbiAgICBhZG1pbmlzdHJhdG9yJDogT2JzZXJ2YWJsZTxHZXRBZG1pbmlzdHJhdG9yLkFkbWluaXN0cmF0b3I+O1xyXG4gICAgcGVybWlzc2lvbkRlZmluaXRpb25zOiBQZXJtaXNzaW9uRGVmaW5pdGlvbltdO1xyXG4gICAgYWxsUm9sZXMkOiBPYnNlcnZhYmxlPFJvbGUuRnJhZ21lbnRbXT47XHJcbiAgICBzZWxlY3RlZFJvbGVzOiBSb2xlLkZyYWdtZW50W10gPSBbXTtcclxuICAgIGRldGFpbEZvcm06IEZvcm1Hcm91cDtcclxuICAgIHNlbGVjdGVkUm9sZVBlcm1pc3Npb25zOiB7IFtjaGFubmVsSWQ6IHN0cmluZ106IFBlcm1pc3Npb25zQnlDaGFubmVsIH0gPSB7fSBhcyBhbnk7XHJcbiAgICBzZWxlY3RlZENoYW5uZWxJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgZ2V0QXZhaWxhYmxlQ2hhbm5lbHMoKTogUGVybWlzc2lvbnNCeUNoYW5uZWxbXSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZFJvbGVQZXJtaXNzaW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHNlcnZlckNvbmZpZ1NlcnZpY2U6IFNlcnZlckNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBzZXJ2ZXJDb25maWdTZXJ2aWNlLCBkYXRhU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdBZG1pbmlzdHJhdG9yJyk7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIGVtYWlsQWRkcmVzczogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBsYXN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgcGFzc3dvcmQ6IFsnJ10sXHJcbiAgICAgICAgICAgIHJvbGVzOiBbW11dLFxyXG4gICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkcy5yZWR1Y2UoKGhhc2gsIGZpZWxkKSA9PiAoeyAuLi5oYXNoLCBbZmllbGQubmFtZV06ICcnIH0pLCB7fSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5hZG1pbmlzdHJhdG9yJCA9IHRoaXMuZW50aXR5JDtcclxuICAgICAgICB0aGlzLmFsbFJvbGVzJCA9IHRoaXMuZGF0YVNlcnZpY2UuYWRtaW5pc3RyYXRvclxyXG4gICAgICAgICAgICAuZ2V0Um9sZXMoOTk5KVxyXG4gICAgICAgICAgICAubWFwU3RyZWFtKGl0ZW0gPT4gaXRlbS5yb2xlcy5pdGVtcy5maWx0ZXIoaSA9PiBpLmNvZGUgIT09IENVU1RPTUVSX1JPTEVfQ09ERSkpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50LnVzZXJTdGF0dXMoKS5zaW5nbGUkLnN1YnNjcmliZSgoeyB1c2VyU3RhdHVzIH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgIXVzZXJTdGF0dXMucGVybWlzc2lvbnMuaW5jbHVkZXMoUGVybWlzc2lvbi5DcmVhdGVBZG1pbmlzdHJhdG9yKSAmJlxyXG4gICAgICAgICAgICAgICAgIXVzZXJTdGF0dXMucGVybWlzc2lvbnMuaW5jbHVkZXMoUGVybWlzc2lvbi5VcGRhdGVBZG1pbmlzdHJhdG9yKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJvbGVzU2VsZWN0ID0gdGhpcy5kZXRhaWxGb3JtLmdldCgncm9sZXMnKTtcclxuICAgICAgICAgICAgICAgIGlmIChyb2xlc1NlbGVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJvbGVzU2VsZWN0LmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvbkRlZmluaXRpb25zID0gdGhpcy5zZXJ2ZXJDb25maWdTZXJ2aWNlLmdldFBlcm1pc3Npb25EZWZpbml0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJvbGVzQ2hhbmdlZChyb2xlczogUm9sZVtdKSB7XHJcbiAgICAgICAgdGhpcy5idWlsZFBlcm1pc3Npb25zTWFwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGVybWlzc2lvbnNGb3JTZWxlY3RlZENoYW5uZWwoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIGZ1bmN0aW9uIGdldEFjdGl2ZVBlcm1pc3Npb25zKGlucHV0OiBQZXJtaXNzaW9uc0J5Q2hhbm5lbFsncGVybWlzc2lvbnMnXSk6IHN0cmluZ1tdIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGlucHV0KVxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoW3Blcm1pc3Npb24sIGFjdGl2ZV0pID0+IGFjdGl2ZSlcclxuICAgICAgICAgICAgICAgIC5tYXAoKFtwZXJtaXNzaW9uLCBhY3RpdmVdKSA9PiBwZXJtaXNzaW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDaGFubmVsSWQpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGFubmVsID0gdGhpcy5zZWxlY3RlZFJvbGVQZXJtaXNzaW9uc1t0aGlzLnNlbGVjdGVkQ2hhbm5lbElkXTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2hhbm5lbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbk1hcCA9IHRoaXMuc2VsZWN0ZWRSb2xlUGVybWlzc2lvbnNbdGhpcy5zZWxlY3RlZENoYW5uZWxJZF0ucGVybWlzc2lvbnM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QWN0aXZlUGVybWlzc2lvbnMocGVybWlzc2lvbk1hcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY2hhbm5lbHMgPSBPYmplY3QudmFsdWVzKHRoaXMuc2VsZWN0ZWRSb2xlUGVybWlzc2lvbnMpO1xyXG4gICAgICAgIGlmICgwIDwgY2hhbm5lbHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFubmVsSWQgPSBjaGFubmVsc1swXS5jaGFubmVsSWQ7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRBY3RpdmVQZXJtaXNzaW9ucyhjaGFubmVsc1swXS5wZXJtaXNzaW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5kZXRhaWxGb3JtLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGFkbWluaXN0cmF0b3I6IENyZWF0ZUFkbWluaXN0cmF0b3JJbnB1dCA9IHtcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzLFxyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IGZvcm1WYWx1ZS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgIHBhc3N3b3JkOiBmb3JtVmFsdWUucGFzc3dvcmQsXHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkczogZm9ybVZhbHVlLmN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgcm9sZUlkczogZm9ybVZhbHVlLnJvbGVzLm1hcChyb2xlID0+IHJvbGUuaWQpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hZG1pbmlzdHJhdG9yLmNyZWF0ZUFkbWluaXN0cmF0b3IoYWRtaW5pc3RyYXRvcikuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktY3JlYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0FkbWluaXN0cmF0b3InLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycsIGRhdGEuY3JlYXRlQWRtaW5pc3RyYXRvci5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQWRtaW5pc3RyYXRvcicsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoKSB7XHJcbiAgICAgICAgdGhpcy5hZG1pbmlzdHJhdG9yJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoeyBpZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5kZXRhaWxGb3JtLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkbWluaXN0cmF0b3I6IFVwZGF0ZUFkbWluaXN0cmF0b3JJbnB1dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsQWRkcmVzczogZm9ybVZhbHVlLmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBmb3JtVmFsdWUuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogZm9ybVZhbHVlLmxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogZm9ybVZhbHVlLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IGZvcm1WYWx1ZS5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVJZHM6IGZvcm1WYWx1ZS5yb2xlcy5tYXAocm9sZSA9PiByb2xlLmlkKSxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFkbWluaXN0cmF0b3IudXBkYXRlQWRtaW5pc3RyYXRvcihhZG1pbmlzdHJhdG9yKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQWRtaW5pc3RyYXRvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0FkbWluaXN0cmF0b3InLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhhZG1pbmlzdHJhdG9yOiBBZG1pbmlzdHJhdG9yLCBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGV0YWlsRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBhZG1pbmlzdHJhdG9yLmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgZmlyc3ROYW1lOiBhZG1pbmlzdHJhdG9yLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IGFkbWluaXN0cmF0b3IubGFzdE5hbWUsXHJcbiAgICAgICAgICAgIHJvbGVzOiBhZG1pbmlzdHJhdG9yLnVzZXIucm9sZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1c3RvbUZpZWxkRm9ybVZhbHVlcyhcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmdldChbJ2N1c3RvbUZpZWxkcyddKSxcclxuICAgICAgICAgICAgICAgIGFkbWluaXN0cmF0b3IsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkQ29udHJvbCA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XHJcbiAgICAgICAgaWYgKHBhc3N3b3JkQ29udHJvbCkge1xyXG4gICAgICAgICAgICBpZiAoIWFkbWluaXN0cmF0b3IuaWQpIHtcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5idWlsZFBlcm1pc3Npb25zTWFwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZFBlcm1pc3Npb25zTWFwKCkge1xyXG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zQ29udHJvbCA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ3JvbGVzJyk7XHJcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zQ29udHJvbCkge1xyXG4gICAgICAgICAgICBjb25zdCByb2xlczogUm9sZUZyYWdtZW50W10gPSBwZXJtaXNzaW9uc0NvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoYW5uZWxJZFBlcm1pc3Npb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIFNldDxQZXJtaXNzaW9uPj4oKTtcclxuICAgICAgICAgICAgY29uc3QgY2hhbm5lbElkQ29kZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvbGUgb2Ygcm9sZXMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hhbm5lbCBvZiByb2xlLmNoYW5uZWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhbm5lbFBlcm1pc3Npb25zID0gY2hhbm5lbElkUGVybWlzc2lvbnNNYXAuZ2V0KGNoYW5uZWwuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25TZXQgPSBjaGFubmVsUGVybWlzc2lvbnMgfHwgbmV3IFNldDxQZXJtaXNzaW9uPigpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByb2xlLnBlcm1pc3Npb25zLmZvckVhY2gocCA9PiBwZXJtaXNzaW9uU2V0LmFkZChwKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbElkUGVybWlzc2lvbnNNYXAuc2V0KGNoYW5uZWwuaWQsIHBlcm1pc3Npb25TZXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxJZENvZGVNYXAuc2V0KGNoYW5uZWwuaWQsIGNoYW5uZWwuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlUGVybWlzc2lvbnMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hhbm5lbElkIG9mIEFycmF5LmZyb20oY2hhbm5lbElkUGVybWlzc2lvbnNNYXAua2V5cygpKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvblNldCA9IGNoYW5uZWxJZFBlcm1pc3Npb25zTWFwLmdldChjaGFubmVsSWQpITtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zSGFzaDogeyBbSyBpbiBQZXJtaXNzaW9uXTogYm9vbGVhbiB9ID0ge30gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5zZXJ2ZXJDb25maWdTZXJ2aWNlLmdldFBlcm1pc3Npb25EZWZpbml0aW9ucygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnNIYXNoW2RlZi5uYW1lXSA9IHBlcm1pc3Npb25TZXQuaGFzKGRlZi5uYW1lIGFzIFBlcm1pc3Npb24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvbGVQZXJtaXNzaW9uc1tjaGFubmVsSWRdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxJZCxcclxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsQ29kZTogY2hhbm5lbElkQ29kZU1hcC5nZXQoY2hhbm5lbElkKSEsXHJcbiAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnM6IHBlcm1pc3Npb25zSGFzaCxcclxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZW5hYmxlOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -44,4 +44,4 @@ ZoneDetailDialogComponent.ctorParameters = () => [
|
|
|
44
44
|
{ type: ServerConfigService },
|
|
45
45
|
{ type: FormBuilder }
|
|
46
46
|
];
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1kZXRhaWwtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2V0dGluZ3Mvc3JjL2NvbXBvbmVudHMvem9uZS1kZXRhaWwtZGlhbG9nL3pvbmUtZGV0YWlsLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBOEMsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVF6RyxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQW9CLG1CQUF3QyxFQUFVLFdBQXdCO1FBQTFFLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsUUFBUTs7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQy9CLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLGlDQUFNLElBQUksS0FBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsQ0FDakY7U0FDSixDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzFCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFjLENBQUM7WUFFckUsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUN0QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUMxQixNQUFNLEtBQUssR0FBRyxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSwwQ0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLE9BQU8sRUFBRTtvQkFDVCxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM3QjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7WUE1Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLGd5Q0FBa0Q7Z0JBRWxELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDs7O1lBUG9ELG1CQUFtQjtZQUQvRCxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENyZWF0ZVpvbmVJbnB1dCwgQ3VzdG9tRmllbGRDb25maWcsIERpYWxvZywgU2VydmVyQ29uZmlnU2VydmljZSB9IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci16b25lLWRldGFpbC1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3pvbmUtZGV0YWlsLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi96b25lLWRldGFpbC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZURldGFpbERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIERpYWxvZzxDcmVhdGVab25lSW5wdXQ+LCBPbkluaXQge1xyXG4gICAgem9uZTogeyBpZD86IHN0cmluZzsgbmFtZTogc3RyaW5nOyBjdXN0b21GaWVsZHM/OiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB9O1xyXG4gICAgcmVzb2x2ZVdpdGg6IChyZXN1bHQ/OiBDcmVhdGVab25lSW5wdXQpID0+IHZvaWQ7XHJcblxyXG4gICAgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmVyQ29uZmlnU2VydmljZTogU2VydmVyQ29uZmlnU2VydmljZSwgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcclxuICAgICAgICB0aGlzLmN1c3RvbUZpZWxkcyA9IHRoaXMuc2VydmVyQ29uZmlnU2VydmljZS5nZXRDdXN0b21GaWVsZHNGb3IoJ1pvbmUnKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgbmFtZTogW3RoaXMuem9uZS5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRzOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMucmVkdWNlKChoYXNoLCBmaWVsZCkgPT4gKHsgLi4uaGFzaCwgW2ZpZWxkLm5hbWVdOiAnJyB9KSwge30pLFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzR3JvdXAgPSB0aGlzLmZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKSBhcyBGb3JtR3JvdXA7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkRGVmIG9mIHRoaXMuY3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBmaWVsZERlZi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnpvbmUuY3VzdG9tRmllbGRzPy5ba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBjdXN0b21GaWVsZHNHcm91cC5nZXQoa2V5KTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjYW5jZWwoKSB7XHJcbiAgICAgICAgdGhpcy5yZXNvbHZlV2l0aCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoKSB7XHJcbiAgICAgICAgdGhpcy5yZXNvbHZlV2l0aCh0aGlzLmZvcm0udmFsdWUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -731,6 +731,10 @@ class FacetDetailComponent extends BaseDetailComponent {
|
|
|
731
731
|
}
|
|
732
732
|
}), switchMap(deleted => (deleted ? this.dataService.facet.getFacet(this.id).single$ : [])))
|
|
733
733
|
.subscribe(() => {
|
|
734
|
+
const valuesFormArray = this.detailForm.get('values');
|
|
735
|
+
if (valuesFormArray) {
|
|
736
|
+
valuesFormArray.removeAt(index);
|
|
737
|
+
}
|
|
734
738
|
this.notificationService.success(marker('common.notify-delete-success'), {
|
|
735
739
|
entity: 'FacetValue',
|
|
736
740
|
});
|
|
@@ -771,7 +775,7 @@ class FacetDetailComponent extends BaseDetailComponent {
|
|
|
771
775
|
}
|
|
772
776
|
const currentValuesFormArray = this.detailForm.get('values');
|
|
773
777
|
this.values = [...facet.values];
|
|
774
|
-
facet.values.forEach(
|
|
778
|
+
facet.values.forEach(value => {
|
|
775
779
|
var _a, _b, _c, _d, _e;
|
|
776
780
|
const valueTranslation = findTranslation(value, languageCode);
|
|
777
781
|
const group = {
|
|
@@ -779,20 +783,21 @@ class FacetDetailComponent extends BaseDetailComponent {
|
|
|
779
783
|
code: value.code,
|
|
780
784
|
name: valueTranslation ? valueTranslation.name : '',
|
|
781
785
|
};
|
|
782
|
-
|
|
786
|
+
let valueControl = currentValuesFormArray.controls.find(control => control.value.id === value.id);
|
|
783
787
|
if (valueControl) {
|
|
784
788
|
(_a = valueControl.get('id')) === null || _a === void 0 ? void 0 : _a.setValue(group.id);
|
|
785
789
|
(_b = valueControl.get('code')) === null || _b === void 0 ? void 0 : _b.setValue(group.code);
|
|
786
790
|
(_c = valueControl.get('name')) === null || _c === void 0 ? void 0 : _c.setValue(group.name);
|
|
787
791
|
}
|
|
788
792
|
else {
|
|
789
|
-
|
|
793
|
+
valueControl = this.formBuilder.group(group);
|
|
794
|
+
currentValuesFormArray.push(valueControl);
|
|
790
795
|
}
|
|
791
796
|
if (this.customValueFields.length) {
|
|
792
|
-
let customValueFieldsGroup =
|
|
797
|
+
let customValueFieldsGroup = valueControl.get(['customFields']);
|
|
793
798
|
if (!customValueFieldsGroup) {
|
|
794
799
|
customValueFieldsGroup = new FormGroup({});
|
|
795
|
-
|
|
800
|
+
valueControl.addControl('customFields', customValueFieldsGroup);
|
|
796
801
|
}
|
|
797
802
|
if (customValueFieldsGroup) {
|
|
798
803
|
for (const fieldDef of this.customValueFields) {
|