@c8y/ngx-components 1021.22.94 → 1021.22.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/core/bootstrap/cookie-banner/cookie-banner.component.mjs +3 -3
- package/esm2022/sub-assets/asset-properties.component.mjs +10 -3
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +3 -3
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +9 -2
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +2 -2
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/sub-assets/asset-properties.component.d.ts +2 -0
- package/sub-assets/asset-properties.component.d.ts.map +1 -1
|
@@ -68,10 +68,10 @@ export class CookieBannerComponent {
|
|
|
68
68
|
this.cookieBannerService.isCookieBannerShowed$.next(shouldShow);
|
|
69
69
|
}
|
|
70
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CookieBannerComponent, deps: [{ token: i1.BsModalService }, { token: i2.CookieBannerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CookieBannerComponent, selector: "c8y-cookie-banner", ngImport: i0, template: "<div class=\"c8y-cookie-banner\">\n <div class=\"container\">\n <div class=\"row p-t-16 p-b-16\" *ngIf=\"showBanner\">\n <div class=\"col-md-2\" *ngIf=\"settings.cookieBannerTitle\">\n <h3>{{ settings.cookieBannerTitle | translate }}</h3>\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n </div>\n <div class=\"col-md-7\">\n <div class=\"cookie-banner-content text-pre-line\">\n {{ settings.cookieBannerText | translate }}\n <a\n href=\"{{ settings.policyUrl }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n *ngIf=\"settings.policyUrl\"\n
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CookieBannerComponent, selector: "c8y-cookie-banner", ngImport: i0, template: "<div class=\"c8y-cookie-banner\">\n <div class=\"container\">\n <div class=\"row p-t-16 p-b-16\" *ngIf=\"showBanner\">\n <div class=\"col-md-2\" *ngIf=\"settings.cookieBannerTitle\">\n <h3>{{ settings.cookieBannerTitle | translate }}</h3>\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n </div>\n <div class=\"col-md-7\">\n <div class=\"cookie-banner-content text-pre-line\">\n {{ settings.cookieBannerText | translate }}\n <a\n href=\"{{ settings.policyUrl }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n *ngIf=\"settings.policyUrl\"\n \n >\n {{ 'See also our Privacy Notice.' | translate }}\n </a>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-md-12\">\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"acceptCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Agree and proceed' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"rejectCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Reject all`cookies`' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-default btn-block\"\n (click)=\"onConfigurePreferences()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Configure preferences' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CookieBannerComponent, decorators: [{
|
|
74
74
|
type: Component,
|
|
75
|
-
args: [{ selector: 'c8y-cookie-banner', template: "<div class=\"c8y-cookie-banner\">\n <div class=\"container\">\n <div class=\"row p-t-16 p-b-16\" *ngIf=\"showBanner\">\n <div class=\"col-md-2\" *ngIf=\"settings.cookieBannerTitle\">\n <h3>{{ settings.cookieBannerTitle | translate }}</h3>\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n </div>\n <div class=\"col-md-7\">\n <div class=\"cookie-banner-content text-pre-line\">\n {{ settings.cookieBannerText | translate }}\n <a\n href=\"{{ settings.policyUrl }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n *ngIf=\"settings.policyUrl\"\n
|
|
75
|
+
args: [{ selector: 'c8y-cookie-banner', template: "<div class=\"c8y-cookie-banner\">\n <div class=\"container\">\n <div class=\"row p-t-16 p-b-16\" *ngIf=\"showBanner\">\n <div class=\"col-md-2\" *ngIf=\"settings.cookieBannerTitle\">\n <h3>{{ settings.cookieBannerTitle | translate }}</h3>\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n </div>\n <div class=\"col-md-7\">\n <div class=\"cookie-banner-content text-pre-line\">\n {{ settings.cookieBannerText | translate }}\n <a\n href=\"{{ settings.policyUrl }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n *ngIf=\"settings.policyUrl\"\n \n >\n {{ 'See also our Privacy Notice.' | translate }}\n </a>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-md-12\">\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"acceptCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Agree and proceed' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"rejectCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Reject all`cookies`' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-default btn-block\"\n (click)=\"onConfigurePreferences()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Configure preferences' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
76
76
|
}], ctorParameters: () => [{ type: i1.BsModalService }, { type: i2.CookieBannerService }] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL2Jvb3RzdHJhcC9jb29raWUtYmFubmVyL2Nvb2tpZS1iYW5uZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29yZS9ib290c3RyYXAvY29va2llLWJhbm5lci9jb29raWUtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDZFQUE2RSxDQUFDO0FBQ3BJLE9BQU8sRUFDTCx3QkFBd0IsRUFHekIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBTTlELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFDVSxjQUE4QixFQUM5QixtQkFBd0M7UUFEeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFKbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFLbkIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDL0UsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLFFBQVEsR0FBRztZQUNmLEdBQUcsd0JBQXdCO1lBQzNCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixFQUFFO1NBQ3RELENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUIsTUFBTSxZQUFZLEdBQUc7WUFDbkIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtTQUNoRCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUU7WUFDL0UsWUFBWTtTQUNiLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLHFCQUF3QyxFQUFFLEVBQUU7WUFDbkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixJQUFJLHFCQUFxQixFQUFFLENBQUM7Z0JBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUNqQyxJQUFJLENBQUMsaUJBQWlCLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQzVDLGFBQWEsQ0FDZCxDQUFDO1FBQ0YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FDakM7WUFDRSxRQUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLEVBQ0QsYUFBYSxDQUNkLENBQUM7UUFDRixJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU8sY0FBYyxDQUFDLGFBQXNCO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxVQUFtQjtRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OEdBOUVVLHFCQUFxQjtrR0FBckIscUJBQXFCLHlEQ2RsQywyaEVBMERBOzsyRkQ1Q2EscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQ29va2llQmFubmVyUHJlZmVyZW5jZXNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29va2llLWJhbm5lci1wcmVmZXJlbmNlcy1tb2RhbC9jb29raWUtYmFubmVyLXByZWZlcmVuY2VzLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDb29raWVCYW5uZXJEZWZhdWx0VGV4dHMsXG4gIENvb2tpZUJhbm5lclNldHRpbmdzLFxuICBDb29raWVQcmVmZXJlbmNlc1xufSBmcm9tICcuL2Nvb2tpZS1iYW5uZXIubW9kZWwnO1xuaW1wb3J0IHsgQ29va2llQmFubmVyU2VydmljZSB9IGZyb20gJy4vY29va2llLWJhbm5lci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvb2tpZS1iYW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29va2llLWJhbm5lci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ29va2llQmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2V0dGluZ3M6IFBhcnRpYWw8Q29va2llQmFubmVyU2V0dGluZ3M+O1xuICBzaG93QmFubmVyOiBib29sZWFuO1xuICBzaG91bGREaXNhYmxlID0gZmFsc2U7XG4gIGNvb2tpZVByZWZlcmVuY2VzOiBDb29raWVQcmVmZXJlbmNlcztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWVCYW5uZXJTZXJ2aWNlOiBDb29raWVCYW5uZXJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXR0aW5ncygpO1xuICAgIHRoaXMuY29va2llUHJlZmVyZW5jZXMgPSB0aGlzLmNvb2tpZUJhbm5lclNlcnZpY2UuZ2V0Q29va2llUHJlZmVyZW5jZXNDb25maWcoKTtcbiAgICB0aGlzLnNob3VsZFNob3dDb29raWVCYW5uZXIoKTtcbiAgfVxuXG4gIGdldFNldHRpbmdzKCk6IFBhcnRpYWw8Q29va2llQmFubmVyU2V0dGluZ3M+IHtcbiAgICBjb25zdCBzZXR0aW5ncyA9IHtcbiAgICAgIC4uLkNvb2tpZUJhbm5lckRlZmF1bHRUZXh0cyxcbiAgICAgIC4uLnRoaXMuY29va2llQmFubmVyU2VydmljZS5nZXRDb29raWVCYW5uZXJTZXR0aW5ncygpXG4gICAgfTtcbiAgICByZXR1cm4gc2V0dGluZ3M7XG4gIH1cblxuICBvbkNvbmZpZ3VyZVByZWZlcmVuY2VzKCkge1xuICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnModHJ1ZSk7XG5cbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBjb25maWdDb29raWVQcmVmZXJlbmNlczogdGhpcy5jb29raWVQcmVmZXJlbmNlc1xuICAgIH07XG5cbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhDb29raWVCYW5uZXJQcmVmZXJlbmNlc01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBpbml0aWFsU3RhdGVcbiAgICB9KTtcblxuICAgIG1vZGFsUmVmLmNvbnRlbnQuY2xvc2VTdWJqZWN0LnN1YnNjcmliZSgodXNlckNvb2tpZVByZWZlcmVuY2VzOiBDb29raWVQcmVmZXJlbmNlcykgPT4ge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucyhmYWxzZSk7XG4gICAgICBpZiAodXNlckNvb2tpZVByZWZlcmVuY2VzKSB7XG4gICAgICAgIGNvbnN0IHBvbGljeVZlcnNpb24gPSB0aGlzLnNldHRpbmdzLnBvbGljeVZlcnNpb247XG4gICAgICAgIHRoaXMuY29va2llQmFubmVyU2VydmljZS5zZXRDb29raWVzKHVzZXJDb29raWVQcmVmZXJlbmNlcywgcG9saWN5VmVyc2lvbik7XG4gICAgICAgIHRoaXMuc2V0Q29va2llQmFubmVyVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhY2NlcHRDb29raWVzKCkge1xuICAgIGNvbnN0IHBvbGljeVZlcnNpb24gPSB0aGlzLnNldHRpbmdzLnBvbGljeVZlcnNpb247XG4gICAgdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLnNldENvb2tpZXMoXG4gICAgICB0aGlzLmNvb2tpZVByZWZlcmVuY2VzIHx8IHsgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgIHBvbGljeVZlcnNpb25cbiAgICApO1xuICAgIHRoaXMuc2V0Q29va2llQmFubmVyVmlzaWJpbGl0eShmYWxzZSk7XG4gIH1cblxuICByZWplY3RDb29raWVzKCkge1xuICAgIGNvbnN0IHBvbGljeVZlcnNpb24gPSB0aGlzLnNldHRpbmdzLnBvbGljeVZlcnNpb247XG4gICAgdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLnNldENvb2tpZXMoXG4gICAgICB7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBmdW5jdGlvbmFsOiBmYWxzZSxcbiAgICAgICAgbWFya2V0aW5nOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHBvbGljeVZlcnNpb25cbiAgICApO1xuICAgIHRoaXMuc2V0Q29va2llQmFubmVyVmlzaWJpbGl0eShmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFNob3dDb29raWVCYW5uZXIoKSB7XG4gICAgdGhpcy5zZXRDb29raWVCYW5uZXJWaXNpYmlsaXR5KHRoaXMuY29va2llQmFubmVyU2VydmljZS5zaG91bGRTaG93Q29va2llQmFubmVyKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlQnV0dG9ucyhzaG91bGREaXNhYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG91bGREaXNhYmxlID0gc2hvdWxkRGlzYWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29va2llQmFubmVyVmlzaWJpbGl0eShzaG91bGRTaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93QmFubmVyID0gc2hvdWxkU2hvdztcbiAgICB0aGlzLmNvb2tpZUJhbm5lclNlcnZpY2UuaXNDb29raWVCYW5uZXJTaG93ZWQkLm5leHQoc2hvdWxkU2hvdyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktY29va2llLWJhbm5lclwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBwLXQtMTYgcC1iLTE2XCIgKm5nSWY9XCJzaG93QmFubmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIiAqbmdJZj1cInNldHRpbmdzLmNvb2tpZUJhbm5lclRpdGxlXCI+XG4gICAgICAgIDxoMz57eyBzZXR0aW5ncy5jb29raWVCYW5uZXJUaXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWItMTYgdmlzaWJsZS1zbSB2aXNpYmxlLXhzXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29va2llLWJhbm5lci1jb250ZW50IHRleHQtcHJlLWxpbmVcIj5cbiAgICAgICAgICB7eyBzZXR0aW5ncy5jb29raWVCYW5uZXJUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJ7eyBzZXR0aW5ncy5wb2xpY3lVcmwgfX1cIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5wb2xpY3lVcmxcIlxuICAgICAgICAgICBcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnU2VlIGFsc28gb3VyIFByaXZhY3kgTm90aWNlLicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWItMTYgdmlzaWJsZS1zbSB2aXNpYmxlLXhzXCI+PC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY2NlcHRDb29raWVzKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2hvdWxkRGlzYWJsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdBZ3JlZSBhbmQgcHJvY2VlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjb2wtbWQtMTJcIiAqbmdJZj1cIiEhY29va2llUHJlZmVyZW5jZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWItMTZcIj48L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlamVjdENvb2tpZXMoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1JlamVjdCBhbGxgY29va2llc2AnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgY29sLW1kLTEyXCIgKm5nSWY9XCIhIWNvb2tpZVByZWZlcmVuY2VzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1iLTE2XCI+PC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNvbmZpZ3VyZVByZWZlcmVuY2VzKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2hvdWxkRGlzYWJsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdDb25maWd1cmUgcHJlZmVyZW5jZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -21,6 +21,7 @@ export class AssetPropertiesComponent {
|
|
|
21
21
|
this.customProperties = [];
|
|
22
22
|
this.isEdit = false;
|
|
23
23
|
this.isLoading = false;
|
|
24
|
+
this.POSITION_PROPERTY_KEY = 'c8y_Position';
|
|
24
25
|
}
|
|
25
26
|
ngOnChanges(changes) {
|
|
26
27
|
if (changes.asset) {
|
|
@@ -49,6 +50,7 @@ export class AssetPropertiesComponent {
|
|
|
49
50
|
if (mo.c8y_JsonSchema) {
|
|
50
51
|
const [item] = await this.parseItem(mo, mo.c8y_JsonSchema.properties, this.asset);
|
|
51
52
|
this.setItemRequired(item, mo);
|
|
53
|
+
this.updatePositionKeyLabel(item);
|
|
52
54
|
properties.push(item);
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -208,6 +210,11 @@ export class AssetPropertiesComponent {
|
|
|
208
210
|
}
|
|
209
211
|
return model;
|
|
210
212
|
}
|
|
213
|
+
updatePositionKeyLabel(item) {
|
|
214
|
+
if (item.label === this.POSITION_PROPERTY_KEY) {
|
|
215
|
+
item.label = gettext('Location');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
211
218
|
setItemRequired(item, mo) {
|
|
212
219
|
const isAssetPropertyRequired = !!this.assetType?.c8y_IsAssetType?.properties.find(p => p.id === mo.id)?.isRequired;
|
|
213
220
|
if (!isAssetPropertyRequired) {
|
|
@@ -223,11 +230,11 @@ export class AssetPropertiesComponent {
|
|
|
223
230
|
}
|
|
224
231
|
}
|
|
225
232
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AssetPropertiesComponent, deps: [{ token: i1.AssetTypesRealtimeService }, { token: i2.InventoryService }, { token: i2.InventoryBinaryService }, { token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
226
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AssetPropertiesComponent, selector: "c8y-asset-properties", inputs: { asset: "asset", properties: "properties" }, outputs: { assetChange: "assetChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"card-header bg-inherit separator sticky-top\">\n <h1\n class=\"card-title p-t-4 p-b-4\"\n ngNonBindable\n translate\n [translateParams]=\"{ label: assetType?.label || '' | translate }\"\n >\n {{ label }} properties\n </h1>\n </div>\n <div class=\"card-block\">\n <div\n class=\"text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n title=\"{{ prop.description | translate }}\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n >\n <div\n class=\"card-block\"\n [ngClass]=\"{ 'p-b-0': prop.isEdit }\"\n >\n <div\n class=\"d-flex p-b-8 a-i-center\"\n *ngIf=\"!prop.isEdit\"\n >\n <p\n class=\"text-medium text-truncate\"\n title=\"{{ prop?.label | translate }}\"\n >\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n [attr.aria-label]=\"'Edit' | translate\"\n tooltip=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleEdit(prop)\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n </div>\n <c8y-asset-properties-item\n #assetProps\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n [complex]=\"prop.complex\"\n [isEdit]=\"prop.isEdit\"\n [jsonSchema]=\"prop.jsonSchema\"\n ></c8y-asset-properties-item>\n <div *ngIf=\"prop.key ===
|
|
233
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AssetPropertiesComponent, selector: "c8y-asset-properties", inputs: { asset: "asset", properties: "properties" }, outputs: { assetChange: "assetChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"card-header bg-inherit separator sticky-top\">\n <h1\n class=\"card-title p-t-4 p-b-4\"\n ngNonBindable\n translate\n [translateParams]=\"{ label: assetType?.label || '' | translate }\"\n >\n {{ label }} properties\n </h1>\n </div>\n <div class=\"card-block\">\n <div\n class=\"text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n title=\"{{ prop.description | translate }}\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n >\n <div\n class=\"card-block\"\n [ngClass]=\"{ 'p-b-0': prop.isEdit }\"\n >\n <div\n class=\"d-flex p-b-8 a-i-center\"\n *ngIf=\"!prop.isEdit\"\n >\n <p\n class=\"text-medium text-truncate\"\n title=\"{{ prop?.label | translate }}\"\n >\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n [attr.aria-label]=\"'Edit' | translate\"\n tooltip=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleEdit(prop)\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n </div>\n <c8y-asset-properties-item\n #assetProps\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n [complex]=\"prop.complex\"\n [isEdit]=\"prop.isEdit\"\n [jsonSchema]=\"prop.jsonSchema\"\n ></c8y-asset-properties-item>\n <div *ngIf=\"prop.key === POSITION_PROPERTY_KEY\">\n <c8y-asset-location\n [locationMO]=\"asset\"\n [isEdit]=\"prop.isEdit\"\n [form]=\"assetProps.form\"\n ></c8y-asset-location>\n </div>\n </div>\n <div\n class=\"card-footer p-t-0\"\n *ngIf=\"prop.isEdit\"\n >\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"toggleEdit(prop)\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"!assetProps?.form?.valid || !assetProps?.form?.dirty\"\n (click)=\"save(assetProps.form.value, prop)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i5.AssetPropertiesItemComponent, selector: "c8y-asset-properties-item", inputs: ["key", "value", "label", "type", "file", "complex", "isEdit", "jsonSchema"] }, { kind: "component", type: i6.AssetLocationComponent, selector: "c8y-asset-location", inputs: ["isEdit", "locationMO", "form"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
|
|
227
234
|
}
|
|
228
235
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AssetPropertiesComponent, decorators: [{
|
|
229
236
|
type: Component,
|
|
230
|
-
args: [{ selector: 'c8y-asset-properties', template: "<ng-container>\n <div class=\"card-header bg-inherit separator sticky-top\">\n <h1\n class=\"card-title p-t-4 p-b-4\"\n ngNonBindable\n translate\n [translateParams]=\"{ label: assetType?.label || '' | translate }\"\n >\n {{ label }} properties\n </h1>\n </div>\n <div class=\"card-block\">\n <div\n class=\"text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n title=\"{{ prop.description | translate }}\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n >\n <div\n class=\"card-block\"\n [ngClass]=\"{ 'p-b-0': prop.isEdit }\"\n >\n <div\n class=\"d-flex p-b-8 a-i-center\"\n *ngIf=\"!prop.isEdit\"\n >\n <p\n class=\"text-medium text-truncate\"\n title=\"{{ prop?.label | translate }}\"\n >\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n [attr.aria-label]=\"'Edit' | translate\"\n tooltip=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleEdit(prop)\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n </div>\n <c8y-asset-properties-item\n #assetProps\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n [complex]=\"prop.complex\"\n [isEdit]=\"prop.isEdit\"\n [jsonSchema]=\"prop.jsonSchema\"\n ></c8y-asset-properties-item>\n <div *ngIf=\"prop.key ===
|
|
237
|
+
args: [{ selector: 'c8y-asset-properties', template: "<ng-container>\n <div class=\"card-header bg-inherit separator sticky-top\">\n <h1\n class=\"card-title p-t-4 p-b-4\"\n ngNonBindable\n translate\n [translateParams]=\"{ label: assetType?.label || '' | translate }\"\n >\n {{ label }} properties\n </h1>\n </div>\n <div class=\"card-block\">\n <div\n class=\"text-center\"\n *ngIf=\"isLoading\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div\n class=\"card m-b-8\"\n title=\"{{ prop.description | translate }}\"\n *ngFor=\"let prop of customProperties\"\n [ngClass]=\"{ 'card-highlight': prop.isEdit }\"\n >\n <div\n class=\"card-block\"\n [ngClass]=\"{ 'p-b-0': prop.isEdit }\"\n >\n <div\n class=\"d-flex p-b-8 a-i-center\"\n *ngIf=\"!prop.isEdit\"\n >\n <p\n class=\"text-medium text-truncate\"\n title=\"{{ prop?.label | translate }}\"\n >\n {{ prop?.label | translate }}\n </p>\n <button\n class=\"btn btn-dot m-l-auto text-12\"\n [attr.aria-label]=\"'Edit' | translate\"\n tooltip=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleEdit(prop)\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n </div>\n <c8y-asset-properties-item\n #assetProps\n [file]=\"prop.file\"\n [key]=\"prop.key\"\n [type]=\"prop.type\"\n [value]=\"prop.value\"\n [complex]=\"prop.complex\"\n [isEdit]=\"prop.isEdit\"\n [jsonSchema]=\"prop.jsonSchema\"\n ></c8y-asset-properties-item>\n <div *ngIf=\"prop.key === POSITION_PROPERTY_KEY\">\n <c8y-asset-location\n [locationMO]=\"asset\"\n [isEdit]=\"prop.isEdit\"\n [form]=\"assetProps.form\"\n ></c8y-asset-location>\n </div>\n </div>\n <div\n class=\"card-footer p-t-0\"\n *ngIf=\"prop.isEdit\"\n >\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"toggleEdit(prop)\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"!assetProps?.form?.valid || !assetProps?.form?.dirty\"\n (click)=\"save(assetProps.form.value, prop)\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n</ng-container>\n" }]
|
|
231
238
|
}], ctorParameters: () => [{ type: i1.AssetTypesRealtimeService }, { type: i2.InventoryService }, { type: i2.InventoryBinaryService }, { type: i1.AlertService }], propDecorators: { asset: [{
|
|
232
239
|
type: Input
|
|
233
240
|
}], assetChange: [{
|
|
@@ -235,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
235
242
|
}], properties: [{
|
|
236
243
|
type: Input
|
|
237
244
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL2Fzc2V0LXByb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9hc3NldC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQU10QyxNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQ1UsVUFBcUMsRUFDckMsU0FBMkIsRUFDM0IsZUFBdUMsRUFDdkMsS0FBbUI7UUFIbkIsZUFBVSxHQUFWLFVBQVUsQ0FBMkI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFkbkIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUczRCxlQUFVLEdBQXFCLEVBQUUsQ0FBQztRQUdsQyxxQkFBZ0IsR0FBMEIsRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixjQUFTLEdBQUcsS0FBSyxDQUFDO0lBT2YsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FB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T0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUNsRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBZ0IsQ0FBQztZQUM1RixlQUFlLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7OEdBek9VLHdCQUF3QjtrR0FBeEIsd0JBQXdCLGdMQ2pCckMsKzNGQStGQTs7MkZEOUVhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxzQkFBc0I7NkxBSXZCLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdQLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIElNYW5hZ2VkT2JqZWN0LFxuICBJTWFuYWdlZE9iamVjdEJpbmFyeSxcbiAgSW52ZW50b3J5QmluYXJ5U2VydmljZSxcbiAgSW52ZW50b3J5U2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIEFzc2V0VHlwZXNSZWFsdGltZVNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0UHJvcGVydGllc0l0ZW0gfSBmcm9tICcuL2Fzc2V0LXByb3BlcnRpZXMubW9kZWwnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYTcgfSBmcm9tICdqc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBzb3J0QnksIHRvUGFpcnMsIGZyb21QYWlycywgZmluZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYXNzZXQtcHJvcGVydGllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBc3NldFByb3BlcnRpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBhc3NldDogSU1hbmFnZWRPYmplY3Q7XG4gIEBPdXRwdXQoKSBhc3NldENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQElucHV0KClcbiAgcHJvcGVydGllczogSU1hbmFnZWRPYmplY3RbXSA9IFtdO1xuXG4gIGFzc2V0VHlwZTogSU1hbmFnZWRPYmplY3Q7XG4gIGN1c3RvbVByb3BlcnRpZXM6IEFzc2V0UHJvcGVydGllc0l0ZW1bXSA9IFtdO1xuICBpc0VkaXQgPSBmYWxzZTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhc3NldFR5cGVzOiBBc3NldFR5cGVzUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5QmluYXJ5OiBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmFzc2V0KSB7XG4gICAgICAvLyBCYWNrIGJ1dHRvbiBoYW5kbGluZywgYXMgY29tcG9uZW50IGlzIG5vdCBkZXN0cm95ZWRcbiAgICAgIHRoaXMuYXNzZXRUeXBlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jdXN0b21Qcm9wZXJ0aWVzID0gW107XG4gICAgICB0aGlzLmxvYWRBc3NldCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRBc3NldCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgYXNzZXRUeXBlJCA9IHRoaXMuYXNzZXRUeXBlcy5nZXRBc3NldFR5cGVCeU5hbWUkKHRoaXMuYXNzZXQudHlwZSk7XG4gICAgdGhpcy5hc3NldFR5cGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShhc3NldFR5cGUkKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdGhpcy5rZWVwT3JkZXIoXG4gICAgICAgIHRoaXMuYXNzZXRUeXBlPy5jOHlfSXNBc3NldFR5cGU/LnByb3BlcnRpZXMsXG4gICAgICAgIHRoaXMucHJvcGVydGllc1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc29sZS53YXJuKGV4KTtcbiAgICB9XG4gICAgdGhpcy5jdXN0b21Qcm9wZXJ0aWVzID0gYXdhaXQgdGhpcy5yZXNvbHZlQ3VzdG9tUHJvcGVydGllcyh0aGlzLnByb3BlcnRpZXMpO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyByZXNvbHZlQ3VzdG9tUHJvcGVydGllcyhtYW5hZ2VkT2JqZWN0czogSU1hbmFnZWRPYmplY3RbXSkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG1vIG9mIG1hbmFnZWRPYmplY3RzKSB7XG4gICAgICBpZiAobW8uYzh5X0pzb25TY2hlbWEpIHtcbiAgICAgICAgY29uc3QgW2l0ZW1dID0gYXdhaXQgdGhpcy5wYXJzZUl0ZW0obW8sIG1vLmM4eV9Kc29uU2NoZW1hLnByb3BlcnRpZXMsIHRoaXMuYXNzZXQpO1xuICAgICAgICB0aGlzLnNldEl0ZW1SZXF1aXJlZChpdGVtLCBtbyk7XG4gICAgICAgIHByb3BlcnRpZXMucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBkZWxldGVUaXRsZUZyb21NT0pzb25TY2hlbWEobW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3Qgc2NoZW1hUHJvcGVydGllcyA9IG1vPy5jOHlfSnNvblNjaGVtYT8ucHJvcGVydGllcztcbiAgICBjb25zdCBwcm9wZXJ0eSA9IE9iamVjdC5rZXlzKHNjaGVtYVByb3BlcnRpZXMgfHwge30pWzBdO1xuICAgIGRlbGV0ZSAobW8/LmM4eV9Kc29uU2NoZW1hPy5wcm9wZXJ0aWVzW3Byb3BlcnR5XSB8fCB7fSkudGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBvcmRlciB0aGUgY29tcGxleCBwcm9wZXJ0aWVzIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgaW4gYXNzZXQgcHJvcGVydGllcyBzY3JlZW4uXG4gICAqIEBwYXJhbSBtbyAtIE1hbmFnZWQgb2JqZWN0IG9mIHRoZSBjb21wbGV4IHByb3BlcnR5IGFzc29jaWF0ZWQgd2l0aCB0aGUgYXNzZXQuXG4gICAqL1xuICBvcmRlckNvbXBsZXhQcm9wZXJ0aWVzKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGNvbXBsZXhQcm9wZXJ0aWVzID0gbW8uYzh5X0pzb25TY2hlbWEucHJvcGVydGllc1ttby5uYW1lXT8uWydwcm9wZXJ0aWVzJ107XG4gICAgY29uc3Qga2V5VmFsdWVzQXJyYXkgPSB0b1BhaXJzKGNvbXBsZXhQcm9wZXJ0aWVzKTtcbiAgICBjb25zdCBvcmRlcmVkUHJvcGVydGllcyA9IHNvcnRCeShrZXlWYWx1ZXNBcnJheSwgKFssIHZhbHVlXSkgPT4gdmFsdWUub3JkZXIpO1xuICAgIG1vLmM4eV9Kc29uU2NoZW1hLnByb3BlcnRpZXNbbW8ubmFtZV1bJ3Byb3BlcnRpZXMnXSA9IGZyb21QYWlycyhvcmRlcmVkUHJvcGVydGllcyk7XG4gIH1cblxuICBhc3luYyBwYXJzZUl0ZW0obW86IElNYW5hZ2VkT2JqZWN0LCBwcm9wZXJ0aWVzLCBhc3NldCk6IFByb21pc2U8QXNzZXRQcm9wZXJ0aWVzSXRlbVtdPiB7XG4gICAgaWYgKCFhc3NldCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcyk7XG4gICAgY29uc3QgaXRlbXM6IEFzc2V0UHJvcGVydGllc0l0ZW1bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3QgdHlwZSA9IHByb3BlcnRpZXNba2V5XS50eXBlO1xuICAgICAgY29uc3QgdGl0bGUgPSBwcm9wZXJ0aWVzW2tleV0udGl0bGU7XG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFR5cGVWYWx1ZSh0eXBlLCBhc3NldFtrZXldKTtcbiAgICAgIGxldCBmaWxlO1xuICAgICAgaWYgKHR5cGUgPT09ICdmaWxlJyAmJiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBmaWxlSWQgPSB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gdmFsdWVbMF0/LmZpbGU/LmlkIDogdmFsdWU7XG4gICAgICAgIGNvbnN0IGZpbGVEYXRhID0gYXdhaXQgdGhpcy5nZXRGaWxlTWFuYWdlZE9iamVjdChmaWxlSWQpO1xuICAgICAgICBmaWxlID0gZmlsZURhdGE7XG4gICAgICAgIHZhbHVlID0gW2ZpbGVEYXRhXTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgdmFsdWUgPSAhaXNOYU4odmFsdWVEYXRlLmdldFRpbWUoKSkgPyB2YWx1ZURhdGUgOiAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyByZW1vdmUgdGl0bGUgdG8gYXZvaWQgZXhjZXNzaXZlIHByb3BlcnR5IG5hbWUgb24gYXNzZXQgY29tcGxleCBwcm9wZXJ0aWVzIGZvcm1cbiAgICAgICAgdGhpcy5kZWxldGVUaXRsZUZyb21NT0pzb25TY2hlbWEobW8pO1xuICAgICAgICB0aGlzLm9yZGVyQ29tcGxleFByb3BlcnRpZXMobW8pO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgdmFsdWUgPSB7fTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gcHJvcGVydGllc1trZXldLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHZhbHVlW3Byb3BdID0gdGhpcy5nZXRUeXBlVmFsdWUocHJvcGVydGllc1trZXldLnByb3BlcnRpZXNbcHJvcF0udHlwZSwgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAga2V5LFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbGFiZWw6IHRpdGxlIHx8IG1vLmxhYmVsLFxuICAgICAgICB0eXBlLFxuICAgICAgICBkZXNjcmlwdGlvbjogbW8uZGVzY3JpcHRpb24sXG4gICAgICAgIGZpbGUsXG4gICAgICAgIGNvbXBsZXg6XG4gICAgICAgICAgdHlwZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgID8gYXdhaXQgdGhpcy5wYXJzZUl0ZW0obW8sIHByb3BlcnRpZXNba2V5XS5wcm9wZXJ0aWVzLCB2YWx1ZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBpc0VkaXQ6IGZhbHNlLFxuICAgICAgICBqc29uU2NoZW1hOiBtby5jOHlfSnNvblNjaGVtYVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHRvZ2dsZUVkaXQocHJvcDogQXNzZXRQcm9wZXJ0aWVzSXRlbSkge1xuICAgIHByb3AuaXNFZGl0ID0gIXByb3AuaXNFZGl0O1xuICB9XG5cbiAgYXN5bmMgZ2V0RmlsZU1hbmFnZWRPYmplY3QoaWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbChpZCk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKHByb3BlcnR5VmFsdWUsIHByb3A6IEFzc2V0UHJvcGVydGllc0l0ZW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHByb3AudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhpcy51cGRhdGVVbmRlZmluZWRUb1Byb3BUeXBlVmFsdWUocHJvcCwgcHJvcGVydHlWYWx1ZVtwcm9wLmtleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGRhdGVVbmRlZmluZWRUb1Byb3BUeXBlVmFsdWUocHJvcCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHByb3BlcnR5VmFsdWUgPSBhd2FpdCB0aGlzLnVwbG9hZEZpbGVzKHByb3BlcnR5VmFsdWUsIHByb3AudmFsdWUpO1xuXG4gICAgICAvLyBBdm9pZCBtYWtpbmcgYSBQVVQgcmVxdWVzdCBjb250YWluaW5nIGp1c3QgdGhlIGlkLCBhcyByZXNwb25zZSBib2R5IG1pZ2h0IGJlIGluY29tcGxldGVcbiAgICAgIGNvbnN0IGhhc1ZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcGVydHlWYWx1ZSkuc29tZSh2YWx1ZSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIGlmICghaGFzVmFsdWVzKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlRWRpdChwcm9wKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdXBkYXRlZEFzc2V0ID0geyBpZDogdGhpcy5hc3NldC5pZCwgLi4ucHJvcGVydHlWYWx1ZSB9O1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS51cGRhdGUodXBkYXRlZEFzc2V0KTtcbiAgICAgIHRoaXMudG9nZ2xlRWRpdChwcm9wKTtcbiAgICAgIHRoaXMuYXNzZXQgPSBkYXRhO1xuICAgICAgdGhpcy5hc3NldENoYW5nZS5lbWl0KHRoaXMuYXNzZXQpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQXNzZXQoKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhnZXR0ZXh0KCdBc3NldCBwcm9wZXJ0aWVzIHVwZGF0ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgdGhpcy50b2dnbGVFZGl0KHByb3ApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVW5kZWZpbmVkVG9Qcm9wVHlwZVZhbHVlKHByb3AsIHByb3BlcnR5VmFsdWUpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0eVZhbHVlKSkge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBwcm9wLmNvbXBsZXggPyBmaW5kKHByb3AuY29tcGxleCwgeyBrZXk6IGtleSB9KSA6IHByb3A7XG4gICAgICBwcm9wZXJ0eVZhbHVlW2tleV0gPSB0aGlzLmdldFR5cGVWYWx1ZShwcm9wZXJ0eS50eXBlLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlVmFsdWUocHJvcFR5cGU6IHN0cmluZywgdmFsdWUpIHtcbiAgICBpZiAodmFsdWUgfHwgKHByb3BUeXBlID09PSAnYm9vbGVhbicgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkpIHJldHVybiB2YWx1ZTtcblxuICAgIHN3aXRjaCAocHJvcFR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuIHZhbHVlIHx8IHZhbHVlID09PSAwID8gdmFsdWUgOiBudWxsO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBrZWVwT3JkZXIoY29ycmVjdE9yZGVyZWRJZHMsIHByb3BlcnRpZXMpIHtcbiAgICBjb25zdCBvcmRlcmVkUHJvcGVydGllcyA9IGNvcnJlY3RPcmRlcmVkSWRzLm1hcCgoeyBpZCB9KSA9PiB7XG4gICAgICBjb25zdCBmb3VuZFByb3BlcnR5ID0gcHJvcGVydGllcy5maW5kKHByb3BlcnR5ID0+IHByb3BlcnR5LmlkID09PSBpZCk7XG4gICAgICBpZiAoIWZvdW5kUHJvcGVydHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDdXN0b20gcHJvcGVydHkgbWlzbWF0Y2gnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3VuZFByb3BlcnR5O1xuICAgIH0pO1xuICAgIHJldHVybiBvcmRlcmVkUHJvcGVydGllcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBsb2FkRmlsZXMobW9kZWw6IG9iamVjdCwgbW9JZD86IElNYW5hZ2VkT2JqZWN0QmluYXJ5W10pOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhtb2RlbCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWxba2V5XSkgJiYgbW9kZWxba2V5XVswXT8uZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB1cGxvYWQgPSBhd2FpdCB0aGlzLmludmVudG9yeUJpbmFyeS5jcmVhdGUobW9kZWxba2V5XVswXS5maWxlKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG1vSWQgJiYgbW9JZFswXSkge1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmludmVudG9yeS5jaGlsZEFkZGl0aW9uc1JlbW92ZShtb0lkWzBdLCB0aGlzLmFzc2V0LmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1vZGVsW2tleV0gPSB1cGxvYWQuZGF0YS5pZDtcbiAgICAgICAgICBhd2FpdCB0aGlzLmludmVudG9yeS5jaGlsZEFkZGl0aW9uc0FkZCh1cGxvYWQuZGF0YS5pZCwgdGhpcy5hc3NldC5pZCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtUmVxdWlyZWQoaXRlbTogQXNzZXRQcm9wZXJ0aWVzSXRlbSwgbW86IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgY29uc3QgaXNBc3NldFByb3BlcnR5UmVxdWlyZWQgPSAhIXRoaXMuYXNzZXRUeXBlPy5jOHlfSXNBc3NldFR5cGU/LnByb3BlcnRpZXMuZmluZChcbiAgICAgIHAgPT4gcC5pZCA9PT0gbW8uaWRcbiAgICApPy5pc1JlcXVpcmVkO1xuICAgIGlmICghaXNBc3NldFByb3BlcnR5UmVxdWlyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNDb21wbGV4UHJvcGVydHkgPSAhIWl0ZW0/LmNvbXBsZXg/Lmxlbmd0aDtcbiAgICBpZiAoaXNDb21wbGV4UHJvcGVydHkpIHtcbiAgICAgIGNvbnN0IGNvbXBsZXhQcm9wZXJ0eSA9IGl0ZW0uanNvblNjaGVtYT8ucHJvcGVydGllcz8uW21vLmM4eV9Kc29uU2NoZW1hLmtleV0gYXMgSlNPTlNjaGVtYTc7XG4gICAgICBjb21wbGV4UHJvcGVydHkucmVxdWlyZWQgPSBpdGVtLmNvbXBsZXgubWFwKCh7IGtleSB9KSA9PiBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLmpzb25TY2hlbWEucmVxdWlyZWQgPSBbbW8uYzh5X0pzb25TY2hlbWEua2V5XTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBiZy1pbmhlcml0IHNlcGFyYXRvciBzdGlja3ktdG9wXCI+XG4gICAgPGgxXG4gICAgICBjbGFzcz1cImNhcmQtdGl0bGUgcC10LTQgcC1iLTRcIlxuICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgdHJhbnNsYXRlXG4gICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgbGFiZWw6IGFzc2V0VHlwZT8ubGFiZWwgfHwgJycgfCB0cmFuc2xhdGUgfVwiXG4gICAgPlxuICAgICAge3sgbGFiZWwgfX0gcHJvcGVydGllc1xuICAgIDwvaDE+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxuICAgICAgKm5nSWY9XCJpc0xvYWRpbmdcIlxuICAgID5cbiAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjYXJkIG0tYi04XCJcbiAgICAgICAgdGl0bGU9XCJ7eyBwcm9wLmRlc2NyaXB0aW9uIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHByb3Agb2YgY3VzdG9tUHJvcGVydGllc1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2NhcmQtaGlnaGxpZ2h0JzogcHJvcC5pc0VkaXQgfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtYmxvY2tcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtYi0wJzogcHJvcC5pc0VkaXQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBwLWItOCBhLWktY2VudGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXByb3AuaXNFZGl0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHByb3A/LmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgcHJvcD8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBtLWwtYXV0byB0ZXh0LTEyXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRWRpdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ0VkaXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRWRpdChwcm9wKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJwZW5jaWxcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Yzh5LWFzc2V0LXByb3BlcnRpZXMtaXRlbVxuICAgICAgICAgICAgI2Fzc2V0UHJvcHNcbiAgICAgICAgICAgIFtmaWxlXT1cInByb3AuZmlsZVwiXG4gICAgICAgICAgICBba2V5XT1cInByb3Aua2V5XCJcbiAgICAgICAgICAgIFt0eXBlXT1cInByb3AudHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwicHJvcC52YWx1ZVwiXG4gICAgICAgICAgICBbY29tcGxleF09XCJwcm9wLmNvbXBsZXhcIlxuICAgICAgICAgICAgW2lzRWRpdF09XCJwcm9wLmlzRWRpdFwiXG4gICAgICAgICAgICBbanNvblNjaGVtYV09XCJwcm9wLmpzb25TY2hlbWFcIlxuICAgICAgICAgID48L2M4eS1hc3NldC1wcm9wZXJ0aWVzLWl0ZW0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnYzh5X1Bvc2l0aW9uJ1wiPlxuICAgICAgICAgICAgPGM4eS1hc3NldC1sb2NhdGlvblxuICAgICAgICAgICAgICBbbG9jYXRpb25NT109XCJhc3NldFwiXG4gICAgICAgICAgICAgIFtpc0VkaXRdPVwicHJvcC5pc0VkaXRcIlxuICAgICAgICAgICAgICBbZm9ybV09XCJhc3NldFByb3BzLmZvcm1cIlxuICAgICAgICAgICAgPjwvYzh5LWFzc2V0LWxvY2F0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgcC10LTBcIlxuICAgICAgICAgICpuZ0lmPVwicHJvcC5pc0VkaXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRWRpdChwcm9wKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFzc2V0UHJvcHM/LmZvcm0/LnZhbGlkIHx8ICFhc3NldFByb3BzPy5mb3JtPy5kaXJ0eSBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoYXNzZXRQcm9wcy5mb3JtLnZhbHVlLCBwcm9wKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL2Fzc2V0LXByb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9hc3NldC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQU10QyxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQ1UsVUFBcUMsRUFDckMsU0FBMkIsRUFDM0IsZUFBdUMsRUFDdkMsS0FBbUI7UUFIbkIsZUFBVSxHQUFWLFVBQVUsQ0FBMkI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFmbkIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUczRCxlQUFVLEdBQXFCLEVBQUUsQ0FBQztRQUdsQyxxQkFBZ0IsR0FBMEIsRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLGNBQWMsQ0FBQztJQU9wQyxDQUFDO0lBRUosV0FBVyxD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LGVBQWUsQ0FBQyxJQUF5QixFQUFFLEVBQWtCO1FBQ25FLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQ2hGLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUNwQixFQUFFLFVBQVUsQ0FBQztRQUNkLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7UUFDbEQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQWdCLENBQUM7WUFDNUYsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDOzhHQWpQVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixnTENqQnJDLHE0RkErRkE7OzJGRDlFYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCOzZMQUl2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFHUCxVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJTWFuYWdlZE9iamVjdCxcbiAgSU1hbmFnZWRPYmplY3RCaW5hcnksXG4gIEludmVudG9yeUJpbmFyeVNlcnZpY2UsXG4gIEludmVudG9yeVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBBc3NldFR5cGVzUmVhbHRpbWVTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBc3NldFByb3BlcnRpZXNJdGVtIH0gZnJvbSAnLi9hc3NldC1wcm9wZXJ0aWVzLm1vZGVsJztcbmltcG9ydCB7IEpTT05TY2hlbWE3IH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgc29ydEJ5LCB0b1BhaXJzLCBmcm9tUGFpcnMsIGZpbmQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFzc2V0LXByb3BlcnRpZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNzZXQtcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRQcm9wZXJ0aWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgYXNzZXQ6IElNYW5hZ2VkT2JqZWN0O1xuICBAT3V0cHV0KCkgYXNzZXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElNYW5hZ2VkT2JqZWN0PigpO1xuXG4gIEBJbnB1dCgpXG4gIHByb3BlcnRpZXM6IElNYW5hZ2VkT2JqZWN0W10gPSBbXTtcblxuICBhc3NldFR5cGU6IElNYW5hZ2VkT2JqZWN0O1xuICBjdXN0b21Qcm9wZXJ0aWVzOiBBc3NldFByb3BlcnRpZXNJdGVtW10gPSBbXTtcbiAgaXNFZGl0ID0gZmFsc2U7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBQT1NJVElPTl9QUk9QRVJUWV9LRVkgPSAnYzh5X1Bvc2l0aW9uJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFzc2V0VHlwZXM6IEFzc2V0VHlwZXNSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlCaW5hcnk6IEludmVudG9yeUJpbmFyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuYXNzZXQpIHtcbiAgICAgIC8vIEJhY2sgYnV0dG9uIGhhbmRsaW5nLCBhcyBjb21wb25lbnQgaXMgbm90IGRlc3Ryb3llZFxuICAgICAgdGhpcy5hc3NldFR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmN1c3RvbVByb3BlcnRpZXMgPSBbXTtcbiAgICAgIHRoaXMubG9hZEFzc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZEFzc2V0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBhc3NldFR5cGUkID0gdGhpcy5hc3NldFR5cGVzLmdldEFzc2V0VHlwZUJ5TmFtZSQodGhpcy5hc3NldC50eXBlKTtcbiAgICB0aGlzLmFzc2V0VHlwZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKGFzc2V0VHlwZSQpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb3BlcnRpZXMgPSB0aGlzLmtlZXBPcmRlcihcbiAgICAgICAgdGhpcy5hc3NldFR5cGU/LmM4eV9Jc0Fzc2V0VHlwZT8ucHJvcGVydGllcyxcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBjb25zb2xlLndhcm4oZXgpO1xuICAgIH1cbiAgICB0aGlzLmN1c3RvbVByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLnJlc29sdmVDdXN0b21Qcm9wZXJ0aWVzKHRoaXMucHJvcGVydGllcyk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmVDdXN0b21Qcm9wZXJ0aWVzKG1hbmFnZWRPYmplY3RzOiBJTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbW8gb2YgbWFuYWdlZE9iamVjdHMpIHtcbiAgICAgIGlmIChtby5jOHlfSnNvblNjaGVtYSkge1xuICAgICAgICBjb25zdCBbaXRlbV0gPSBhd2FpdCB0aGlzLnBhcnNlSXRlbShtbywgbW8uYzh5X0pzb25TY2hlbWEucHJvcGVydGllcywgdGhpcy5hc3NldCk7XG4gICAgICAgIHRoaXMuc2V0SXRlbVJlcXVpcmVkKGl0ZW0sIG1vKTtcbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbktleUxhYmVsKGl0ZW0pO1xuICAgICAgICBwcm9wZXJ0aWVzLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgZGVsZXRlVGl0bGVGcm9tTU9Kc29uU2NoZW1hKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IHNjaGVtYVByb3BlcnRpZXMgPSBtbz8uYzh5X0pzb25TY2hlbWE/LnByb3BlcnRpZXM7XG4gICAgY29uc3QgcHJvcGVydHkgPSBPYmplY3Qua2V5cyhzY2hlbWFQcm9wZXJ0aWVzIHx8IHt9KVswXTtcbiAgICBkZWxldGUgKG1vPy5jOHlfSnNvblNjaGVtYT8ucHJvcGVydGllc1twcm9wZXJ0eV0gfHwge30pLnRpdGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gb3JkZXIgdGhlIGNvbXBsZXggcHJvcGVydGllcyBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIGluIGFzc2V0IHByb3BlcnRpZXMgc2NyZWVuLlxuICAgKiBAcGFyYW0gbW8gLSBNYW5hZ2VkIG9iamVjdCBvZiB0aGUgY29tcGxleCBwcm9wZXJ0eSBhc3NvY2lhdGVkIHdpdGggdGhlIGFzc2V0LlxuICAgKi9cbiAgb3JkZXJDb21wbGV4UHJvcGVydGllcyhtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBjb21wbGV4UHJvcGVydGllcyA9IG1vLmM4eV9Kc29uU2NoZW1hLnByb3BlcnRpZXNbbW8ubmFtZV0/LlsncHJvcGVydGllcyddO1xuICAgIGNvbnN0IGtleVZhbHVlc0FycmF5ID0gdG9QYWlycyhjb21wbGV4UHJvcGVydGllcyk7XG4gICAgY29uc3Qgb3JkZXJlZFByb3BlcnRpZXMgPSBzb3J0Qnkoa2V5VmFsdWVzQXJyYXksIChbLCB2YWx1ZV0pID0+IHZhbHVlLm9yZGVyKTtcbiAgICBtby5jOHlfSnNvblNjaGVtYS5wcm9wZXJ0aWVzW21vLm5hbWVdWydwcm9wZXJ0aWVzJ10gPSBmcm9tUGFpcnMob3JkZXJlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgYXN5bmMgcGFyc2VJdGVtKG1vOiBJTWFuYWdlZE9iamVjdCwgcHJvcGVydGllcywgYXNzZXQpOiBQcm9taXNlPEFzc2V0UHJvcGVydGllc0l0ZW1bXT4ge1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpO1xuICAgIGNvbnN0IGl0ZW1zOiBBc3NldFByb3BlcnRpZXNJdGVtW10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBwcm9wZXJ0aWVzW2tleV0udHlwZTtcbiAgICAgIGNvbnN0IHRpdGxlID0gcHJvcGVydGllc1trZXldLnRpdGxlO1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRUeXBlVmFsdWUodHlwZSwgYXNzZXRba2V5XSk7XG4gICAgICBsZXQgZmlsZTtcbiAgICAgIGlmICh0eXBlID09PSAnZmlsZScgJiYgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgZmlsZUlkID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlWzBdPy5maWxlPy5pZCA6IHZhbHVlO1xuICAgICAgICBjb25zdCBmaWxlRGF0YSA9IGF3YWl0IHRoaXMuZ2V0RmlsZU1hbmFnZWRPYmplY3QoZmlsZUlkKTtcbiAgICAgICAgZmlsZSA9IGZpbGVEYXRhO1xuICAgICAgICB2YWx1ZSA9IFtmaWxlRGF0YV07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICBjb25zdCB2YWx1ZURhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIHZhbHVlID0gIWlzTmFOKHZhbHVlRGF0ZS5nZXRUaW1lKCkpID8gdmFsdWVEYXRlIDogJyc7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRpdGxlIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBwcm9wZXJ0eSBuYW1lIG9uIGFzc2V0IGNvbXBsZXggcHJvcGVydGllcyBmb3JtXG4gICAgICAgIHRoaXMuZGVsZXRlVGl0bGVGcm9tTU9Kc29uU2NoZW1hKG1vKTtcbiAgICAgICAgdGhpcy5vcmRlckNvbXBsZXhQcm9wZXJ0aWVzKG1vKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHZhbHVlID0ge307XG4gICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHByb3BlcnRpZXNba2V5XS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICB2YWx1ZVtwcm9wXSA9IHRoaXMuZ2V0VHlwZVZhbHVlKHByb3BlcnRpZXNba2V5XS5wcm9wZXJ0aWVzW3Byb3BdLnR5cGUsIG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIGtleSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGxhYmVsOiB0aXRsZSB8fCBtby5sYWJlbCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1vLmRlc2NyaXB0aW9uLFxuICAgICAgICBmaWxlLFxuICAgICAgICBjb21wbGV4OlxuICAgICAgICAgIHR5cGUgPT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMucGFyc2VJdGVtKG1vLCBwcm9wZXJ0aWVzW2tleV0ucHJvcGVydGllcywgdmFsdWUpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgaXNFZGl0OiBmYWxzZSxcbiAgICAgICAganNvblNjaGVtYTogbW8uYzh5X0pzb25TY2hlbWFcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICB0b2dnbGVFZGl0KHByb3A6IEFzc2V0UHJvcGVydGllc0l0ZW0pIHtcbiAgICBwcm9wLmlzRWRpdCA9ICFwcm9wLmlzRWRpdDtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVNYW5hZ2VkT2JqZWN0KGlkOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5kZXRhaWwoaWQpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZShwcm9wZXJ0eVZhbHVlLCBwcm9wOiBBc3NldFByb3BlcnRpZXNJdGVtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChwcm9wLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVW5kZWZpbmVkVG9Qcm9wVHlwZVZhbHVlKHByb3AsIHByb3BlcnR5VmFsdWVbcHJvcC5rZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlVW5kZWZpbmVkVG9Qcm9wVHlwZVZhbHVlKHByb3AsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBwcm9wZXJ0eVZhbHVlID0gYXdhaXQgdGhpcy51cGxvYWRGaWxlcyhwcm9wZXJ0eVZhbHVlLCBwcm9wLnZhbHVlKTtcblxuICAgICAgLy8gQXZvaWQgbWFraW5nIGEgUFVUIHJlcXVlc3QgY29udGFpbmluZyBqdXN0IHRoZSBpZCwgYXMgcmVzcG9uc2UgYm9keSBtaWdodCBiZSBpbmNvbXBsZXRlXG4gICAgICBjb25zdCBoYXNWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHByb3BlcnR5VmFsdWUpLnNvbWUodmFsdWUgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gICAgICBpZiAoIWhhc1ZhbHVlcykge1xuICAgICAgICB0aGlzLnRvZ2dsZUVkaXQocHJvcCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZWRBc3NldCA9IHsgaWQ6IHRoaXMuYXNzZXQuaWQsIC4uLnByb3BlcnR5VmFsdWUgfTtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKHVwZGF0ZWRBc3NldCk7XG4gICAgICB0aGlzLnRvZ2dsZUVkaXQocHJvcCk7XG4gICAgICB0aGlzLmFzc2V0ID0gZGF0YTtcbiAgICAgIHRoaXMuYXNzZXRDaGFuZ2UuZW1pdCh0aGlzLmFzc2V0KTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEFzc2V0KCk7XG4gICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MoZ2V0dGV4dCgnQXNzZXQgcHJvcGVydGllcyB1cGRhdGVkLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgIHRoaXMudG9nZ2xlRWRpdChwcm9wKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVVuZGVmaW5lZFRvUHJvcFR5cGVWYWx1ZShwcm9wLCBwcm9wZXJ0eVZhbHVlKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydHlWYWx1ZSkpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gcHJvcC5jb21wbGV4ID8gZmluZChwcm9wLmNvbXBsZXgsIHsga2V5OiBrZXkgfSkgOiBwcm9wO1xuICAgICAgcHJvcGVydHlWYWx1ZVtrZXldID0gdGhpcy5nZXRUeXBlVmFsdWUocHJvcGVydHkudHlwZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHlwZVZhbHVlKHByb3BUeXBlOiBzdHJpbmcsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlIHx8IChwcm9wVHlwZSA9PT0gJ2Jvb2xlYW4nICYmIHZhbHVlICE9PSB1bmRlZmluZWQpKSByZXR1cm4gdmFsdWU7XG5cbiAgICBzd2l0Y2ggKHByb3BUeXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiB2YWx1ZSB8fCB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogbnVsbDtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUga2VlcE9yZGVyKGNvcnJlY3RPcmRlcmVkSWRzLCBwcm9wZXJ0aWVzKSB7XG4gICAgY29uc3Qgb3JkZXJlZFByb3BlcnRpZXMgPSBjb3JyZWN0T3JkZXJlZElkcy5tYXAoKHsgaWQgfSkgPT4ge1xuICAgICAgY29uc3QgZm91bmRQcm9wZXJ0eSA9IHByb3BlcnRpZXMuZmluZChwcm9wZXJ0eSA9PiBwcm9wZXJ0eS5pZCA9PT0gaWQpO1xuICAgICAgaWYgKCFmb3VuZFByb3BlcnR5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tIHByb3BlcnR5IG1pc21hdGNoJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm91bmRQcm9wZXJ0eTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3JkZXJlZFByb3BlcnRpZXM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwbG9hZEZpbGVzKG1vZGVsOiBvYmplY3QsIG1vSWQ/OiBJTWFuYWdlZE9iamVjdEJpbmFyeVtdKTogUHJvbWlzZTxvYmplY3Q+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobW9kZWwpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1vZGVsW2tleV0pICYmIG1vZGVsW2tleV1bMF0/LmZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdXBsb2FkID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlCaW5hcnkuY3JlYXRlKG1vZGVsW2tleV1bMF0uZmlsZSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChtb0lkICYmIG1vSWRbMF0pIHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnkuY2hpbGRBZGRpdGlvbnNSZW1vdmUobW9JZFswXSwgdGhpcy5hc3NldC5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIHRocm93IGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2RlbFtrZXldID0gdXBsb2FkLmRhdGEuaWQ7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnkuY2hpbGRBZGRpdGlvbnNBZGQodXBsb2FkLmRhdGEuaWQsIHRoaXMuYXNzZXQuaWQpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIHRocm93IGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25LZXlMYWJlbChpdGVtOiBBc3NldFByb3BlcnRpZXNJdGVtKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0ubGFiZWwgPT09IHRoaXMuUE9TSVRJT05fUFJPUEVSVFlfS0VZKSB7XG4gICAgICBpdGVtLmxhYmVsID0gZ2V0dGV4dCgnTG9jYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEl0ZW1SZXF1aXJlZChpdGVtOiBBc3NldFByb3BlcnRpZXNJdGVtLCBtbzogSU1hbmFnZWRPYmplY3QpOiB2b2lkIHtcbiAgICBjb25zdCBpc0Fzc2V0UHJvcGVydHlSZXF1aXJlZCA9ICEhdGhpcy5hc3NldFR5cGU/LmM4eV9Jc0Fzc2V0VHlwZT8ucHJvcGVydGllcy5maW5kKFxuICAgICAgcCA9PiBwLmlkID09PSBtby5pZFxuICAgICk/LmlzUmVxdWlyZWQ7XG4gICAgaWYgKCFpc0Fzc2V0UHJvcGVydHlSZXF1aXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc0NvbXBsZXhQcm9wZXJ0eSA9ICEhaXRlbT8uY29tcGxleD8ubGVuZ3RoO1xuICAgIGlmIChpc0NvbXBsZXhQcm9wZXJ0eSkge1xuICAgICAgY29uc3QgY29tcGxleFByb3BlcnR5ID0gaXRlbS5qc29uU2NoZW1hPy5wcm9wZXJ0aWVzPy5bbW8uYzh5X0pzb25TY2hlbWEua2V5XSBhcyBKU09OU2NoZW1hNztcbiAgICAgIGNvbXBsZXhQcm9wZXJ0eS5yZXF1aXJlZCA9IGl0ZW0uY29tcGxleC5tYXAoKHsga2V5IH0pID0+IGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uanNvblNjaGVtYS5yZXF1aXJlZCA9IFttby5jOHlfSnNvblNjaGVtYS5rZXldO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJnLWluaGVyaXQgc2VwYXJhdG9yIHN0aWNreS10b3BcIj5cbiAgICA8aDFcbiAgICAgIGNsYXNzPVwiY2FyZC10aXRsZSBwLXQtNCBwLWItNFwiXG4gICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICB0cmFuc2xhdGVcbiAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyBsYWJlbDogYXNzZXRUeXBlPy5sYWJlbCB8fCAnJyB8IHRyYW5zbGF0ZSB9XCJcbiAgICA+XG4gICAgICB7eyBsYWJlbCB9fSBwcm9wZXJ0aWVzXG4gICAgPC9oMT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiXG4gICAgICAqbmdJZj1cImlzTG9hZGluZ1wiXG4gICAgPlxuICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNhcmQgbS1iLThcIlxuICAgICAgICB0aXRsZT1cInt7IHByb3AuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcHJvcCBvZiBjdXN0b21Qcm9wZXJ0aWVzXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnY2FyZC1oaWdobGlnaHQnOiBwcm9wLmlzRWRpdCB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9ja1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1iLTAnOiBwcm9wLmlzRWRpdCB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHAtYi04IGEtaS1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCIhcHJvcC5pc0VkaXRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tZWRpdW0gdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgcHJvcD8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBwcm9wPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IG0tbC1hdXRvIHRleHQtMTJcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidFZGl0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnRWRpdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFZGl0KHByb3ApXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInBlbmNpbFwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxjOHktYXNzZXQtcHJvcGVydGllcy1pdGVtXG4gICAgICAgICAgICAjYXNzZXRQcm9wc1xuICAgICAgICAgICAgW2ZpbGVdPVwicHJvcC5maWxlXCJcbiAgICAgICAgICAgIFtrZXldPVwicHJvcC5rZXlcIlxuICAgICAgICAgICAgW3R5cGVdPVwicHJvcC50eXBlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9wLnZhbHVlXCJcbiAgICAgICAgICAgIFtjb21wbGV4XT1cInByb3AuY29tcGxleFwiXG4gICAgICAgICAgICBbaXNFZGl0XT1cInByb3AuaXNFZGl0XCJcbiAgICAgICAgICAgIFtqc29uU2NoZW1hXT1cInByb3AuanNvblNjaGVtYVwiXG4gICAgICAgICAgPjwvYzh5LWFzc2V0LXByb3BlcnRpZXMtaXRlbT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09IFBPU0lUSU9OX1BST1BFUlRZX0tFWVwiPlxuICAgICAgICAgICAgPGM4eS1hc3NldC1sb2NhdGlvblxuICAgICAgICAgICAgICBbbG9jYXRpb25NT109XCJhc3NldFwiXG4gICAgICAgICAgICAgIFtpc0VkaXRdPVwicHJvcC5pc0VkaXRcIlxuICAgICAgICAgICAgICBbZm9ybV09XCJhc3NldFByb3BzLmZvcm1cIlxuICAgICAgICAgICAgPjwvYzh5LWFzc2V0LWxvY2F0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgcC10LTBcIlxuICAgICAgICAgICpuZ0lmPVwicHJvcC5pc0VkaXRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRWRpdChwcm9wKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFzc2V0UHJvcHM/LmZvcm0/LnZhbGlkIHx8ICFhc3NldFByb3BzPy5mb3JtPy5kaXJ0eVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2F2ZShhc3NldFByb3BzLmZvcm0udmFsdWUsIHByb3ApXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -81,7 +81,7 @@ export class DatapointsTableComponent {
|
|
|
81
81
|
}));
|
|
82
82
|
}
|
|
83
83
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsTableComponent, isStandalone: true, selector: "c8y-datapoints-table", inputs: { aggregationType: "aggregationType", datapointsTableItems: "datapointsTableItems", devicesColumnHeaders: "devicesColumnHeaders", decimalPlaces: "decimalPlaces", hasMultipleDatapoints: "hasMultipleDatapoints", isLoading: "isLoading", seriesWithoutPermissionToReadCount: "seriesWithoutPermissionToReadCount" }, outputs: { isScrolling: "isScrolling" }, host: { classAttribute: "d-col flex-grow" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!hasNoPermissionsToReadAnyMeasurement; else missingAllPermissions\">\n <div class=\"c8y-cq-440\">\n <div\n class=\"hidden-xs c8y-list__item c8y-list--timeline hidden-cq\"\n [ngClass]=\"{ 'separator-top-bottom': devicesColumnHeaders.length > 0 }\"\n >\n <div class=\"d-flex container-fluid\">\n <div class=\"c8y-list--timeline__item__date\"></div>\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex row\">\n <ng-container *ngIf=\"hasMultipleDatapoints\">\n <div\n class=\"min-width-0\"\n [title]=\"'Device' | translate\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ 'Device' | translate }}\n </span>\n </div>\n </ng-container>\n <!-- Data points column headers -->\n <ng-container *ngFor=\"let header of devicesColumnHeaders\">\n <div\n class=\"min-width-0\"\n title=\"{{ header | columnTitle }}\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ header.label }} {{ header.unit }}\n </span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- The record list -->\n <ng-container *ngIf=\"!isLoading; else loading\">\n <ng-container *ngIf=\"datapointsTableItems.length; else emptyState\">\n <c8y-list-group\n class=\"p-t-8 flex-grow c8y-cq-440\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li-timeline\n *c8yFor=\"\n let tableItem of { data: datapointsTableItems, res: null };\n enableVirtualScroll: true;\n virtualScrollElementSize: 40;\n virtualScrollStrategy: 'fixed'\n \"\n >\n {{ tableItem.dateAndTime | c8yDate: 'mediumDate' }}\n {{\n tableItem.dateAndTime\n | c8yDate: 'mediumTime'\n | adjustAggregatedTimeRange: aggregationType\n }}\n <c8y-li>\n <c8y-li-body>\n <div class=\"d-flex row\">\n <div\n class=\"min-width-0\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngIf=\"devicesColumnHeaders.length > 1\"\n [attr.data-label]=\"'Device' | translate\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ tableItem.deviceName }}\"\n >\n {{ tableItem.deviceName }}\n </div>\n </div>\n <!-- Data point value row cells -->\n <ng-container *ngFor=\"let row of tableItem.rowItems\">\n <ng-container *ngIf=\"row !== null; else emptyRowContent\">\n <ng-container [ngSwitch]=\"row.renderType\">\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n *ngSwitchCase=\"'min'\"\n [attr.data-label]=\"row.label\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </div>\n </div>\n <div\n class=\"col-md-4\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n *ngSwitchCase=\"'max'\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </div>\n </div>\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngSwitchCase=\"'area'\"\n >\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n ...\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n </div>\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngSwitchDefault\n >\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #emptyRowContent>\n <div [c8yDynamicColumn]=\"devicesColumnHeaders.length\"></div>\n </ng-template>\n </ng-container>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n</ng-container>\n<ng-template #loading>\n <c8y-loading></c8y-loading>\n</ng-template>\n<ng-template #emptyState>\n <div class=\"p-relative p-l-24\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No data to display.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n >\n <p c8y-guide-docs>\n <small translate>\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n</ng-template>\n<ng-template #missingAllPermissions>\n <div class=\"p-t-24 p-r-16 p-l-16 p-b-16 d-flex\">\n <div class=\"center-block\">\n <c8y-dynamic-component-alerts\n [alerts]=\"missingAllPermissionsAlert\"\n ></c8y-dynamic-component-alerts>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "pipe", type: AdjustAggregatedTimeRangePipe, name: "adjustAggregatedTimeRange" }, { kind: "pipe", type: ApplyRangeClassPipe, name: "applyRangeClass" }, { kind: "pipe", type: ColumnTitlePipe, name: "columnTitle" }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "directive", type: i1.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "pipe", type: i1.DatePipe, name: "c8yDate" }, { kind: "component", type: i1.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: DocsModule }, { kind: "directive", type: i1.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: DynamicColumnDirective, selector: "[c8yDynamicColumn]", inputs: ["c8yDynamicColumn"] }, { kind: "ngmodule", type: DynamicComponentModule }, { kind: "component", type: i1.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i1.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: VirtualScrollListenerDirective, selector: "[c8yVirtualScrollListener]", inputs: ["scrollThreshold"], outputs: ["scrolled", "scrolledToTop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsTableComponent, isStandalone: true, selector: "c8y-datapoints-table", inputs: { aggregationType: "aggregationType", datapointsTableItems: "datapointsTableItems", devicesColumnHeaders: "devicesColumnHeaders", decimalPlaces: "decimalPlaces", hasMultipleDatapoints: "hasMultipleDatapoints", isLoading: "isLoading", seriesWithoutPermissionToReadCount: "seriesWithoutPermissionToReadCount" }, outputs: { isScrolling: "isScrolling" }, host: { classAttribute: "d-col flex-grow" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!hasNoPermissionsToReadAnyMeasurement; else missingAllPermissions\">\n <div class=\"c8y-cq-440\">\n <div\n class=\"hidden-xs c8y-list__item c8y-list--timeline hidden-cq\"\n [ngClass]=\"{ 'separator-top-bottom': devicesColumnHeaders.length > 0 }\"\n >\n <div class=\"d-flex container-fluid\">\n <div class=\"c8y-list--timeline__item__date\"></div>\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex row\">\n <ng-container *ngIf=\"hasMultipleDatapoints\">\n <div\n class=\"min-width-0\"\n [title]=\"'Device' | translate\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ 'Device' | translate }}\n </span>\n </div>\n </ng-container>\n <!-- Data points column headers -->\n <ng-container *ngFor=\"let header of devicesColumnHeaders\">\n <div\n class=\"min-width-0\"\n title=\"{{ header | columnTitle }}\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ header.label }} {{ header.unit }}\n </span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- The record list -->\n <ng-container *ngIf=\"!isLoading; else loading\">\n <ng-container *ngIf=\"datapointsTableItems.length; else emptyState\">\n <c8y-list-group\n class=\"p-t-8 flex-grow c8y-cq-440\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li-timeline\n *c8yFor=\"\n let tableItem of { data: datapointsTableItems, res: null };\n enableVirtualScroll: true;\n virtualScrollElementSize: 40;\n virtualScrollStrategy: 'fixed'\n \"\n >\n {{ tableItem.dateAndTime | c8yDate: 'mediumDate' }}\n {{\n tableItem.dateAndTime\n | c8yDate: 'mediumTime'\n | adjustAggregatedTimeRange: aggregationType\n }}\n <c8y-li>\n <c8y-li-body>\n <div class=\"d-flex row\">\n <div\n class=\"min-width-0\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngIf=\"devicesColumnHeaders.length > 1\"\n [attr.data-label]=\"'Device' | translate\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ tableItem.deviceName }}\"\n >\n {{ tableItem.deviceName }}\n </div>\n </div>\n <!-- Data point value row cells -->\n <ng-container *ngFor=\"let row of tableItem.rowItems\">\n <ng-container *ngIf=\"row !== null; else emptyRowContent\">\n <ng-container [ngSwitch]=\"row.renderType\">\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n *ngSwitchCase=\"'min'\"\n [attr.data-label]=\"row.label\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </div>\n </div>\n <div\n class=\"col-md-4\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n *ngSwitchCase=\"'max'\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </div>\n </div>\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngSwitchCase=\"'area'\"\n >\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n ...\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </span>\n </div>\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngSwitchDefault\n >\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #emptyRowContent>\n <div [c8yDynamicColumn]=\"devicesColumnHeaders.length\"></div>\n </ng-template>\n </ng-container>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n</ng-container>\n<ng-template #loading>\n <c8y-loading></c8y-loading>\n</ng-template>\n<ng-template #emptyState>\n <div class=\"p-relative p-l-24\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No data to display.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n >\n <p c8y-guide-docs>\n <small translate>\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n</ng-template>\n<ng-template #missingAllPermissions>\n <div class=\"p-t-24 p-r-16 p-l-16 p-b-16 d-flex\">\n <div class=\"center-block\">\n <c8y-dynamic-component-alerts\n [alerts]=\"missingAllPermissionsAlert\"\n ></c8y-dynamic-component-alerts>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "pipe", type: AdjustAggregatedTimeRangePipe, name: "adjustAggregatedTimeRange" }, { kind: "pipe", type: ApplyRangeClassPipe, name: "applyRangeClass" }, { kind: "pipe", type: ColumnTitlePipe, name: "columnTitle" }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "directive", type: i1.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "pipe", type: i1.DatePipe, name: "c8yDate" }, { kind: "component", type: i1.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: DocsModule }, { kind: "directive", type: i1.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: DynamicColumnDirective, selector: "[c8yDynamicColumn]", inputs: ["c8yDynamicColumn"] }, { kind: "ngmodule", type: DynamicComponentModule }, { kind: "component", type: i1.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i1.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: VirtualScrollListenerDirective, selector: "[c8yVirtualScrollListener]", inputs: ["scrollThreshold"], outputs: ["scrolled", "scrolledToTop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
85
85
|
}
|
|
86
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableComponent, decorators: [{
|
|
87
87
|
type: Component,
|
|
@@ -95,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
95
95
|
DynamicComponentModule,
|
|
96
96
|
ListGroupModule,
|
|
97
97
|
VirtualScrollListenerDirective
|
|
98
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!hasNoPermissionsToReadAnyMeasurement; else missingAllPermissions\">\n <div class=\"c8y-cq-440\">\n <div\n class=\"hidden-xs c8y-list__item c8y-list--timeline hidden-cq\"\n [ngClass]=\"{ 'separator-top-bottom': devicesColumnHeaders.length > 0 }\"\n >\n <div class=\"d-flex container-fluid\">\n <div class=\"c8y-list--timeline__item__date\"></div>\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex row\">\n <ng-container *ngIf=\"hasMultipleDatapoints\">\n <div\n class=\"min-width-0\"\n [title]=\"'Device' | translate\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ 'Device' | translate }}\n </span>\n </div>\n </ng-container>\n <!-- Data points column headers -->\n <ng-container *ngFor=\"let header of devicesColumnHeaders\">\n <div\n class=\"min-width-0\"\n title=\"{{ header | columnTitle }}\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ header.label }} {{ header.unit }}\n </span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- The record list -->\n <ng-container *ngIf=\"!isLoading; else loading\">\n <ng-container *ngIf=\"datapointsTableItems.length; else emptyState\">\n <c8y-list-group\n class=\"p-t-8 flex-grow c8y-cq-440\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li-timeline\n *c8yFor=\"\n let tableItem of { data: datapointsTableItems, res: null };\n enableVirtualScroll: true;\n virtualScrollElementSize: 40;\n virtualScrollStrategy: 'fixed'\n \"\n >\n {{ tableItem.dateAndTime | c8yDate: 'mediumDate' }}\n {{\n tableItem.dateAndTime\n | c8yDate: 'mediumTime'\n | adjustAggregatedTimeRange: aggregationType\n }}\n <c8y-li>\n <c8y-li-body>\n <div class=\"d-flex row\">\n <div\n class=\"min-width-0\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngIf=\"devicesColumnHeaders.length > 1\"\n [attr.data-label]=\"'Device' | translate\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ tableItem.deviceName }}\"\n >\n {{ tableItem.deviceName }}\n </div>\n </div>\n <!-- Data point value row cells -->\n <ng-container *ngFor=\"let row of tableItem.rowItems\">\n <ng-container *ngIf=\"row !== null; else emptyRowContent\">\n <ng-container [ngSwitch]=\"row.renderType\">\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n *ngSwitchCase=\"'min'\"\n [attr.data-label]=\"row.label\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </div>\n </div>\n <div\n class=\"col-md-4\"\n [ngClass]=\"row.value.
|
|
98
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!hasNoPermissionsToReadAnyMeasurement; else missingAllPermissions\">\n <div class=\"c8y-cq-440\">\n <div\n class=\"hidden-xs c8y-list__item c8y-list--timeline hidden-cq\"\n [ngClass]=\"{ 'separator-top-bottom': devicesColumnHeaders.length > 0 }\"\n >\n <div class=\"d-flex container-fluid\">\n <div class=\"c8y-list--timeline__item__date\"></div>\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex row\">\n <ng-container *ngIf=\"hasMultipleDatapoints\">\n <div\n class=\"min-width-0\"\n [title]=\"'Device' | translate\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ 'Device' | translate }}\n </span>\n </div>\n </ng-container>\n <!-- Data points column headers -->\n <ng-container *ngFor=\"let header of devicesColumnHeaders\">\n <div\n class=\"min-width-0\"\n title=\"{{ header | columnTitle }}\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n >\n <span class=\"text-medium text-truncate\">\n {{ header.label }} {{ header.unit }}\n </span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- The record list -->\n <ng-container *ngIf=\"!isLoading; else loading\">\n <ng-container *ngIf=\"datapointsTableItems.length; else emptyState\">\n <c8y-list-group\n class=\"p-t-8 flex-grow c8y-cq-440\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li-timeline\n *c8yFor=\"\n let tableItem of { data: datapointsTableItems, res: null };\n enableVirtualScroll: true;\n virtualScrollElementSize: 40;\n virtualScrollStrategy: 'fixed'\n \"\n >\n {{ tableItem.dateAndTime | c8yDate: 'mediumDate' }}\n {{\n tableItem.dateAndTime\n | c8yDate: 'mediumTime'\n | adjustAggregatedTimeRange: aggregationType\n }}\n <c8y-li>\n <c8y-li-body>\n <div class=\"d-flex row\">\n <div\n class=\"min-width-0\"\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngIf=\"devicesColumnHeaders.length > 1\"\n [attr.data-label]=\"'Device' | translate\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ tableItem.deviceName }}\"\n >\n {{ tableItem.deviceName }}\n </div>\n </div>\n <!-- Data point value row cells -->\n <ng-container *ngFor=\"let row of tableItem.rowItems\">\n <ng-container *ngIf=\"row !== null; else emptyRowContent\">\n <ng-container [ngSwitch]=\"row.renderType\">\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n *ngSwitchCase=\"'min'\"\n [attr.data-label]=\"row.label\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </div>\n </div>\n <div\n class=\"col-md-4\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n *ngSwitchCase=\"'max'\"\n >\n <div\n class=\"text-truncate\"\n title=\"{{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </div>\n </div>\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngSwitchCase=\"'area'\"\n >\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n ...\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\"\n [ngClass]=\"row.value.max ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.max ?? '' | number: getFractionSize(row.value.max) }}\n </span>\n </div>\n <div\n [c8yDynamicColumn]=\"devicesColumnHeaders.length\"\n *ngSwitchDefault\n >\n <span\n class=\"text-truncate\"\n title=\"{{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\"\n [ngClass]=\"row.value.min ?? null | applyRangeClass: getRangeValues(row)\"\n >\n {{ row.value.min ?? '' | number: getFractionSize(row.value.min) }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #emptyRowContent>\n <div [c8yDynamicColumn]=\"devicesColumnHeaders.length\"></div>\n </ng-template>\n </ng-container>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n</ng-container>\n<ng-template #loading>\n <c8y-loading></c8y-loading>\n</ng-template>\n<ng-template #emptyState>\n <div class=\"p-relative p-l-24\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No data to display.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n >\n <p c8y-guide-docs>\n <small translate>\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-table\">\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n</ng-template>\n<ng-template #missingAllPermissions>\n <div class=\"p-t-24 p-r-16 p-l-16 p-b-16 d-flex\">\n <div class=\"center-block\">\n <c8y-dynamic-component-alerts\n [alerts]=\"missingAllPermissionsAlert\"\n ></c8y-dynamic-component-alerts>\n </div>\n </div>\n</ng-template>\n" }]
|
|
99
99
|
}], propDecorators: { aggregationType: [{
|
|
100
100
|
type: Input
|
|
101
101
|
}], datapointsTableItems: [{
|
|
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
113
113
|
}], isScrolling: [{
|
|
114
114
|
type: Output
|
|
115
115
|
}] } });
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtdmlldy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxZQUFZLEVBQ1osVUFBVSxFQUNWLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUF1QnBFLE1BQU0sT0FBTyx3QkFBd0I7SUFyQnJDO1FBNkJZLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVwRCx5Q0FBb0MsR0FBRyxLQUFLLENBQUM7UUFDN0MsK0JBQTBC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QkFBakIsS0FBSztnQkFDRyxrQ0FBa0M7c0JBQTFDLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvbk9wdGlvbixcbiAgQ29tbW9uTW9kdWxlLFxuICBEb2NzTW9kdWxlLFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IsXG4gIER5bmFtaWNDb21wb25lbnRNb2R1bGUsXG4gIExpc3RHcm91cE1vZHVsZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEtQSURldGFpbHMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlQm91bmRhcmllcyxcbiAgVGFibGVDb2x1bW5IZWFkZXIsXG4gIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1cbn0gZnJvbSAnLi4vLi4vZGF0YXBvaW50cy10YWJsZS13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgQWRqdXN0QWdncmVnYXRlZFRpbWVSYW5nZVBpcGUgfSBmcm9tICcuLi9hZGp1c3QtYWdncmVnYXRlZC10aW1lLXJhbmdlLnBpcGUnO1xuaW1wb3J0IHsgQXBwbHlSYW5nZUNsYXNzUGlwZSB9IGZyb20gJy4uL2FwcGx5LXJhbmdlLWNsYXNzLnBpcGUnO1xuaW1wb3J0IHsgQ29sdW1uVGl0bGVQaXBlIH0gZnJvbSAnLi4vY29sdW1uLXRpdGxlLnBpcGUnO1xuaW1wb3J0IHsgVmlydHVhbFNjcm9sbExpc3RlbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vdmlydHVhbC1zY3JvbGwtbGlzdGVuZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IER5bmFtaWNDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuL2R5bmFtaWMtY29sdW1uLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb2wgZmxleC1ncm93JyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQWRqdXN0QWdncmVnYXRlZFRpbWVSYW5nZVBpcGUsXG4gICAgQXBwbHlSYW5nZUNsYXNzUGlwZSxcbiAgICBDb2x1bW5UaXRsZVBpcGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERvY3NNb2R1bGUsXG4gICAgRHluYW1pY0NvbHVtbkRpcmVjdGl2ZSxcbiAgICBEeW5hbWljQ29tcG9uZW50TW9kdWxlLFxuICAgIExpc3RHcm91cE1vZHVsZSxcbiAgICBWaXJ0dWFsU2Nyb2xsTGlzdGVuZXJEaXJlY3RpdmVcbiAgXSxcbiAgLyoqXG4gICAqIFVzZWQgdG8gcHJldmVudCAnZ2V0UmFuZ2VWYWx1ZXMnIGZyb20gYmVpbmcgY2FsbGVkIG9uIGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAqL1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGFnZ3JlZ2F0aW9uVHlwZTogQWdncmVnYXRpb25PcHRpb247XG4gIEBJbnB1dCgpIGRhdGFwb2ludHNUYWJsZUl0ZW1zOiBHcm91cGVkRGF0YXBvaW50VGFibGVJdGVtW107XG4gIEBJbnB1dCgpIGRldmljZXNDb2x1bW5IZWFkZXJzOiBUYWJsZUNvbHVtbkhlYWRlcltdO1xuICBASW5wdXQoKSBkZWNpbWFsUGxhY2VzOiBudW1iZXI7XG4gIEBJbnB1dCgpIGhhc011bHRpcGxlRGF0YXBvaW50czogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBzZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZENvdW50OiBudW1iZXI7XG4gIEBPdXRwdXQoKSBpc1Njcm9sbGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBoYXNOb1Blcm1pc3Npb25zVG9SZWFkQW55TWVhc3VyZW1lbnQgPSBmYWxzZTtcbiAgbWlzc2luZ0FsbFBlcm1pc3Npb25zQWxlcnQgPSBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcigpO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGZyYWN0aW9uIHNpemUgZm9ybWF0IGZvciBudW1iZXJzIHdpdGggZGVjaW1hbCBwbGFjZXMuXG4gICAqL1xuICBwcml2YXRlIGZyYWN0aW9uU2l6ZSA9ICcxLjItMic7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmRlY2ltYWxQbGFjZXMgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odGhpcy5kZWNpbWFsUGxhY2VzKSkge1xuICAgICAgdGhpcy5mcmFjdGlvblNpemUgPSBgMS4ke3RoaXMuZGVjaW1hbFBsYWNlc30tJHt0aGlzLmRlY2ltYWxQbGFjZXN9YDtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWRDb3VudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWlzc2luZ0FsbFBlcm1pc3Npb25zQWxlcnQuY2xlYXIoKTtcbiAgICB0aGlzLmhhbmRsZU5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSgpO1xuICB9XG5cbiAgb25MaXN0U2Nyb2xsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Njcm9sbGluZy5lbWl0KHRydWUpO1xuICB9XG5cbiAgb25MaXN0U2Nyb2xsZWRUb1RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2Nyb2xsaW5nLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgZ2V0UmFuZ2VWYWx1ZXMocm93OiBLUElEZXRhaWxzKTogQ29sb3JSYW5nZUJvdW5kYXJpZXMge1xuICAgIHJldHVybiB7XG4gICAgICB5ZWxsb3dSYW5nZU1pbjogcm93LnllbGxvd1JhbmdlTWluLFxuICAgICAgeWVsbG93UmFuZ2VNYXg6IHJvdy55ZWxsb3dSYW5nZU1heCxcbiAgICAgIHJlZFJhbmdlTWluOiByb3cucmVkUmFuZ2VNaW4sXG4gICAgICByZWRSYW5nZU1heDogcm93LnJlZFJhbmdlTWF4XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBmcmFjdGlvbiBzaXplIGZvcm1hdCBiYXNlZCBvbiB3aGV0aGVyIHRoZSBudW1iZXIgaXMgYW4gaW50ZWdlciBvciBoYXMgZGVjaW1hbCBwbGFjZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zICcxLjAtMCcgaWYgdGhlIG51bWJlciBpcyBhbiBpbnRlZ2VyLCBvdGhlcndpc2UgcmV0dXJucyB0aGUgY3VycmVudCBmcmFjdGlvbiBzaXplLlxuICAgKi9cbiAgZ2V0RnJhY3Rpb25TaXplKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSAlIDEgPT09IDAgPyAnMS4wLTAnIDogdGhpcy5mcmFjdGlvblNpemU7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc05vUGVybWlzc2lvbnNUb1JlYWRBbnlNZWFzdXJlbWVudCA9XG4gICAgICB0aGlzLnNlcmllc1dpdGhvdXRQZXJtaXNzaW9uVG9SZWFkQ291bnQgPT09IHRoaXMuZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMuaGFzTm9QZXJtaXNzaW9uc1RvUmVhZEFueU1lYXN1cmVtZW50KSB7XG4gICAgICB0aGlzLnNob3dNZXNzYWdlRm9yTWlzc2luZ1Blcm1pc3Npb25zRm9yQWxsU2VyaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93TWVzc2FnZUZvck1pc3NpbmdQZXJtaXNzaW9uc0ZvckFsbFNlcmllcygpOiB2b2lkIHtcbiAgICB0aGlzLm1pc3NpbmdBbGxQZXJtaXNzaW9uc0FsZXJ0LmFkZEFsZXJ0cyhcbiAgICAgIG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnQoe1xuICAgICAgICBhbGxvd0h0bWw6IHRydWUsXG4gICAgICAgIHRleHQ6IGdldHRleHQoYDxwPlRvIHZpZXcgZGF0YSwgeW91IG11c3QgbWVldCBhdCBsZWFzdCBvbmUgb2YgdGhlc2UgY3JpdGVyaWE6PC9wPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPlxuICAgICAgICAgICAgSGF2ZVxuICAgICAgICAgICAgPGI+UkVBRCBwZXJtaXNzaW9uIGZvciBcIk1lYXN1cmVtZW50c1wiIHBlcm1pc3Npb24gdHlwZTwvYj5cbiAgICAgICAgICAgIChlaXRoZXIgYXMgYSBnbG9iYWwgcm9sZSBvciBmb3IgdGhlIHNwZWNpZmljIHNvdXJjZSlcbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIEJlIHRoZVxuICAgICAgICAgICAgPGI+b3duZXIgb2YgdGhlIHNvdXJjZTwvYj5cbiAgICAgICAgICAgIHlvdSB3YW50IHRvIGV4cG9ydCBkYXRhIGZyb21cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgICA8cD5Eb24ndCBtZWV0IHRoZXNlIHJlcXVpcmVtZW50cz8gQ29udGFjdCB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGZvciBhc3Npc3RhbmNlLjwvcD5gKSxcbiAgICAgICAgdHlwZTogJ3N5c3RlbSdcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNOb1Blcm1pc3Npb25zVG9SZWFkQW55TWVhc3VyZW1lbnQ7IGVsc2UgbWlzc2luZ0FsbFBlcm1pc3Npb25zXCI+XG4gIDxkaXYgY2xhc3M9XCJjOHktY3EtNDQwXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJoaWRkZW4teHMgYzh5LWxpc3RfX2l0ZW0gYzh5LWxpc3QtLXRpbWVsaW5lIGhpZGRlbi1jcVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdzZXBhcmF0b3ItdG9wLWJvdHRvbSc6IGRldmljZXNDb2x1bW5IZWFkZXJzLmxlbmd0aCA+IDAgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb250YWluZXItZmx1aWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0LS10aW1lbGluZV9faXRlbV9fZGF0ZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrIGZsZXgtZ3JvdyBtaW4td2lkdGgtMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYm9keVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCByb3dcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc011bHRpcGxlRGF0YXBvaW50c1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWluLXdpZHRoLTBcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidEZXZpY2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtjOHlEeW5hbWljQ29sdW1uXT1cImRldmljZXNDb2x1bW5IZWFkZXJzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW1lZGl1bSB0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdEZXZpY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8IS0tIERhdGEgcG9pbnRzIGNvbHVtbiBoZWFkZXJzIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgZGV2aWNlc0NvbHVtbkhlYWRlcnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbi13aWR0aC0wXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgaGVhZGVyIHwgY29sdW1uVGl0bGUgfX1cIlxuICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaGVhZGVyLmxhYmVsIH19IHt7IGhlYWRlci51bml0IH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIFRoZSByZWNvcmQgbGlzdCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7IGVsc2UgbG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhcG9pbnRzVGFibGVJdGVtcy5sZW5ndGg7IGVsc2UgZW1wdHlTdGF0ZVwiPlxuICAgICAgPGM4eS1saXN0LWdyb3VwXG4gICAgICAgIGNsYXNzPVwicC10LTggZmxleC1ncm93IGM4eS1jcS00NDBcIlxuICAgICAgICBjOHlWaXJ0dWFsU2Nyb2xsTGlzdGVuZXJcbiAgICAgICAgKHNjcm9sbGVkKT1cIm9uTGlzdFNjcm9sbGVkKClcIlxuICAgICAgICAoc2Nyb2xsZWRUb1RvcCk9XCJvbkxpc3RTY3JvbGxlZFRvVG9wKClcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLXRpbWVsaW5lXG4gICAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgICAgbGV0IHRhYmxlSXRlbSBvZiB7IGRhdGE6IGRhdGFwb2ludHNUYWJsZUl0ZW1zLCByZXM6IG51bGwgfTtcbiAgICAgICAgICAgIGVuYWJsZVZpcnR1YWxTY3JvbGw6IHRydWU7XG4gICAgICAgICAgICB2aXJ0dWFsU2Nyb2xsRWxlbWVudFNpemU6IDQwO1xuICAgICAgICAgICAgdmlydHVhbFNjcm9sbFN0cmF0ZWd5OiAnZml4ZWQnXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRhYmxlSXRlbS5kYXRlQW5kVGltZSB8IGM4eURhdGU6ICdtZWRpdW1EYXRlJyB9fVxuICAgICAgICAgIHt7XG4gICAgICAgICAgICB0YWJsZUl0ZW0uZGF0ZUFuZFRpbWVcbiAgICAgICAgICAgICAgfCBjOHlEYXRlOiAnbWVkaXVtVGltZSdcbiAgICAgICAgICAgICAgfCBhZGp1c3RBZ2dyZWdhdGVkVGltZVJhbmdlOiBhZ2dyZWdhdGlvblR5cGVcbiAgICAgICAgICB9fVxuICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICA8Yzh5LWxpLWJvZHk+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaW4td2lkdGgtMFwiXG4gICAgICAgICAgICAgICAgICBbYzh5RHluYW1pY0NvbHVtbl09XCJkZXZpY2VzQ29sdW1uSGVhZGVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZXZpY2VzQ29sdW1uSGVhZGVycy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbGFiZWxdPVwiJ0RldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyB0YWJsZUl0ZW0uZGV2aWNlTmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRhYmxlSXRlbS5kZXZpY2VOYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIERhdGEgcG9pbnQgdmFsdWUgcm93IGNlbGxzIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZUl0ZW0ucm93SXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cgIT09IG51bGw7IGVsc2UgZW1wdHlSb3dDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInJvdy5yZW5kZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvdy52YWx1ZS5taW4gPz8gbnVsbCB8IGFwcGx5UmFuZ2VDbGFzczogZ2V0UmFuZ2VWYWx1ZXMocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ21pbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJyb3cubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyByb3cudmFsdWUubWluID8/ICcnIHwgbnVtYmVyOiBnZXRGcmFjdGlvblNpemUocm93LnZhbHVlLm1pbikgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3cudmFsdWUubWluID8/ICcnIHwgbnVtYmVyOiBnZXRGcmFjdGlvblNpemUocm93LnZhbHVlLm1pbikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LnZhbHVlLm1pbiA/PyBudWxsIHwgYXBwbHlSYW5nZUNsYXNzOiBnZXRSYW5nZVZhbHVlcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbWF4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHJvdy52YWx1ZS5taW4gPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWluKSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdy52YWx1ZS5taW4gPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWluKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInYXJlYSdcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgcm93LnZhbHVlLm1pbiA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5taW4pIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LnZhbHVlLm1pbiA/PyBudWxsIHwgYXBwbHlSYW5nZUNsYXNzOiBnZXRSYW5nZVZhbHVlcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93LnZhbHVlLm1pbiA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5taW4pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgcm93LnZhbHVlLm1pbiA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5taW4pIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LnZhbHVlLm1heCA/PyBudWxsIHwgYXBwbHlSYW5nZUNsYXNzOiBnZXRSYW5nZVZhbHVlcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93LnZhbHVlLm1pbiA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5taW4pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHJvdy52YWx1ZS5taW4gPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWluKSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvdy52YWx1ZS5taW4gPz8gbnVsbCB8IGFwcGx5UmFuZ2VDbGFzczogZ2V0UmFuZ2VWYWx1ZXMocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdy52YWx1ZS5taW4gPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWluKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eVJvd0NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgIDwvYzh5LWxpLXRpbWVsaW5lPlxuICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbXB0eVN0YXRlPlxuICA8ZGl2IGNsYXNzPVwicC1yZWxhdGl2ZSBwLWwtMjRcIj5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICBbaWNvbl09XCInYzh5LWFsZXJ0LWlkbGUnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gZGF0YSB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICBkYXRhLWN5PVwiZGF0YXBvaW50cy10YWJsZS1saXN0LS1lbXB0eS1zdGF0ZVwiXG4gICAgPlxuICAgICAgPHAgYzh5LWd1aWRlLWRvY3M+XG4gICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2NvY2twaXQvd2lkZ2V0cy1jb2xsZWN0aW9uLyNkYXRhLXBvaW50LXRhYmxlXCI+XG4gICAgICAgICAgICB1c2VyIGRvY3VtZW50YXRpb25cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgLlxuICAgICAgICA8L3NtYWxsPlxuICAgICAgPC9wPlxuICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21pc3NpbmdBbGxQZXJtaXNzaW9ucz5cbiAgPGRpdiBjbGFzcz1cInAtdC0yNCBwLXItMTYgcC1sLTE2IHAtYi0xNiBkLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2VudGVyLWJsb2NrXCI+XG4gICAgICA8Yzh5LWR5bmFtaWMtY29tcG9uZW50LWFsZXJ0c1xuICAgICAgICBbYWxlcnRzXT1cIm1pc3NpbmdBbGxQZXJtaXNzaW9uc0FsZXJ0XCJcbiAgICAgID48L2M4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtdmlldy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxZQUFZLEVBQ1osVUFBVSxFQUNWLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUF1QnBFLE1BQU0sT0FBTyx3QkFBd0I7SUFyQnJDO1FBNkJZLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVwRCx5Q0FBb0MsR0FBRyxLQUFLLENBQUM7UUFDN0MsK0JBQTBC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QkFBakIsS0FBSztnQkFDRyxrQ0FBa0M7c0JBQTFDLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvbk9wdGlvbixcbiAgQ29tbW9uTW9kdWxlLFxuICBEb2NzTW9kdWxlLFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IsXG4gIER5bmFtaWNDb21wb25lbnRNb2R1bGUsXG4gIExpc3RHcm91cE1vZHVsZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEtQSURldGFpbHMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlQm91bmRhcmllcyxcbiAgVGFibGVDb2x1bW5IZWFkZXIsXG4gIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1cbn0gZnJvbSAnLi4vLi4vZGF0YXBvaW50cy10YWJsZS13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgQWRqdXN0QWdncmVnYXRlZFRpbWVSYW5nZVBpcGUgfSBmcm9tICcuLi9hZGp1c3QtYWdncmVnYXRlZC10aW1lLXJhbmdlLnBpcGUnO1xuaW1wb3J0IHsgQXBwbHlSYW5nZUNsYXNzUGlwZSB9IGZyb20gJy4uL2FwcGx5LXJhbmdlLWNsYXNzLnBpcGUnO1xuaW1wb3J0IHsgQ29sdW1uVGl0bGVQaXBlIH0gZnJvbSAnLi4vY29sdW1uLXRpdGxlLnBpcGUnO1xuaW1wb3J0IHsgVmlydHVhbFNjcm9sbExpc3RlbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vdmlydHVhbC1zY3JvbGwtbGlzdGVuZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IER5bmFtaWNDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuL2R5bmFtaWMtY29sdW1uLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb2wgZmxleC1ncm93JyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQWRqdXN0QWdncmVnYXRlZFRpbWVSYW5nZVBpcGUsXG4gICAgQXBwbHlSYW5nZUNsYXNzUGlwZSxcbiAgICBDb2x1bW5UaXRsZVBpcGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERvY3NNb2R1bGUsXG4gICAgRHluYW1pY0NvbHVtbkRpcmVjdGl2ZSxcbiAgICBEeW5hbWljQ29tcG9uZW50TW9kdWxlLFxuICAgIExpc3RHcm91cE1vZHVsZSxcbiAgICBWaXJ0dWFsU2Nyb2xsTGlzdGVuZXJEaXJlY3RpdmVcbiAgXSxcbiAgLyoqXG4gICAqIFVzZWQgdG8gcHJldmVudCAnZ2V0UmFuZ2VWYWx1ZXMnIGZyb20gYmVpbmcgY2FsbGVkIG9uIGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAqL1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGFnZ3JlZ2F0aW9uVHlwZTogQWdncmVnYXRpb25PcHRpb247XG4gIEBJbnB1dCgpIGRhdGFwb2ludHNUYWJsZUl0ZW1zOiBHcm91cGVkRGF0YXBvaW50VGFibGVJdGVtW107XG4gIEBJbnB1dCgpIGRldmljZXNDb2x1bW5IZWFkZXJzOiBUYWJsZUNvbHVtbkhlYWRlcltdO1xuICBASW5wdXQoKSBkZWNpbWFsUGxhY2VzOiBudW1iZXI7XG4gIEBJbnB1dCgpIGhhc011bHRpcGxlRGF0YXBvaW50czogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBzZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZENvdW50OiBudW1iZXI7XG4gIEBPdXRwdXQoKSBpc1Njcm9sbGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBoYXNOb1Blcm1pc3Npb25zVG9SZWFkQW55TWVhc3VyZW1lbnQgPSBmYWxzZTtcbiAgbWlzc2luZ0FsbFBlcm1pc3Npb25zQWxlcnQgPSBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcigpO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGZyYWN0aW9uIHNpemUgZm9ybWF0IGZvciBudW1iZXJzIHdpdGggZGVjaW1hbCBwbGFjZXMuXG4gICAqL1xuICBwcml2YXRlIGZyYWN0aW9uU2l6ZSA9ICcxLjItMic7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmRlY2ltYWxQbGFjZXMgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odGhpcy5kZWNpbWFsUGxhY2VzKSkge1xuICAgICAgdGhpcy5mcmFjdGlvblNpemUgPSBgMS4ke3RoaXMuZGVjaW1hbFBsYWNlc30tJHt0aGlzLmRlY2ltYWxQbGFjZXN9YDtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWRDb3VudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWlzc2luZ0FsbFBlcm1pc3Npb25zQWxlcnQuY2xlYXIoKTtcbiAgICB0aGlzLmhhbmRsZU5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSgpO1xuICB9XG5cbiAgb25MaXN0U2Nyb2xsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Njcm9sbGluZy5lbWl0KHRydWUpO1xuICB9XG5cbiAgb25MaXN0U2Nyb2xsZWRUb1RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2Nyb2xsaW5nLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgZ2V0UmFuZ2VWYWx1ZXMocm93OiBLUElEZXRhaWxzKTogQ29sb3JSYW5nZUJvdW5kYXJpZXMge1xuICAgIHJldHVybiB7XG4gICAgICB5ZWxsb3dSYW5nZU1pbjogcm93LnllbGxvd1JhbmdlTWluLFxuICAgICAgeWVsbG93UmFuZ2VNYXg6IHJvdy55ZWxsb3dSYW5nZU1heCxcbiAgICAgIHJlZFJhbmdlTWluOiByb3cucmVkUmFuZ2VNaW4sXG4gICAgICByZWRSYW5nZU1heDogcm93LnJlZFJhbmdlTWF4XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBmcmFjdGlvbiBzaXplIGZvcm1hdCBiYXNlZCBvbiB3aGV0aGVyIHRoZSBudW1iZXIgaXMgYW4gaW50ZWdlciBvciBoYXMgZGVjaW1hbCBwbGFjZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zICcxLjAtMCcgaWYgdGhlIG51bWJlciBpcyBhbiBpbnRlZ2VyLCBvdGhlcndpc2UgcmV0dXJucyB0aGUgY3VycmVudCBmcmFjdGlvbiBzaXplLlxuICAgKi9cbiAgZ2V0RnJhY3Rpb25TaXplKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSAlIDEgPT09IDAgPyAnMS4wLTAnIDogdGhpcy5mcmFjdGlvblNpemU7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc05vUGVybWlzc2lvbnNUb1JlYWRBbnlNZWFzdXJlbWVudCA9XG4gICAgICB0aGlzLnNlcmllc1dpdGhvdXRQZXJtaXNzaW9uVG9SZWFkQ291bnQgPT09IHRoaXMuZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMuaGFzTm9QZXJtaXNzaW9uc1RvUmVhZEFueU1lYXN1cmVtZW50KSB7XG4gICAgICB0aGlzLnNob3dNZXNzYWdlRm9yTWlzc2luZ1Blcm1pc3Npb25zRm9yQWxsU2VyaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93TWVzc2FnZUZvck1pc3NpbmdQZXJtaXNzaW9uc0ZvckFsbFNlcmllcygpOiB2b2lkIHtcbiAgICB0aGlzLm1pc3NpbmdBbGxQZXJtaXNzaW9uc0FsZXJ0LmFkZEFsZXJ0cyhcbiAgICAgIG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnQoe1xuICAgICAgICBhbGxvd0h0bWw6IHRydWUsXG4gICAgICAgIHRleHQ6IGdldHRleHQoYDxwPlRvIHZpZXcgZGF0YSwgeW91IG11c3QgbWVldCBhdCBsZWFzdCBvbmUgb2YgdGhlc2UgY3JpdGVyaWE6PC9wPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPlxuICAgICAgICAgICAgSGF2ZVxuICAgICAgICAgICAgPGI+UkVBRCBwZXJtaXNzaW9uIGZvciBcIk1lYXN1cmVtZW50c1wiIHBlcm1pc3Npb24gdHlwZTwvYj5cbiAgICAgICAgICAgIChlaXRoZXIgYXMgYSBnbG9iYWwgcm9sZSBvciBmb3IgdGhlIHNwZWNpZmljIHNvdXJjZSlcbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIEJlIHRoZVxuICAgICAgICAgICAgPGI+b3duZXIgb2YgdGhlIHNvdXJjZTwvYj5cbiAgICAgICAgICAgIHlvdSB3YW50IHRvIGV4cG9ydCBkYXRhIGZyb21cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgICA8cD5Eb24ndCBtZWV0IHRoZXNlIHJlcXVpcmVtZW50cz8gQ29udGFjdCB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGZvciBhc3Npc3RhbmNlLjwvcD5gKSxcbiAgICAgICAgdHlwZTogJ3N5c3RlbSdcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNOb1Blcm1pc3Npb25zVG9SZWFkQW55TWVhc3VyZW1lbnQ7IGVsc2UgbWlzc2luZ0FsbFBlcm1pc3Npb25zXCI+XG4gIDxkaXYgY2xhc3M9XCJjOHktY3EtNDQwXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJoaWRkZW4teHMgYzh5LWxpc3RfX2l0ZW0gYzh5LWxpc3QtLXRpbWVsaW5lIGhpZGRlbi1jcVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdzZXBhcmF0b3ItdG9wLWJvdHRvbSc6IGRldmljZXNDb2x1bW5IZWFkZXJzLmxlbmd0aCA+IDAgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb250YWluZXItZmx1aWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0LS10aW1lbGluZV9faXRlbV9fZGF0ZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrIGZsZXgtZ3JvdyBtaW4td2lkdGgtMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYm9keVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCByb3dcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc011bHRpcGxlRGF0YXBvaW50c1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWluLXdpZHRoLTBcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidEZXZpY2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtjOHlEeW5hbWljQ29sdW1uXT1cImRldmljZXNDb2x1bW5IZWFkZXJzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW1lZGl1bSB0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdEZXZpY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8IS0tIERhdGEgcG9pbnRzIGNvbHVtbiBoZWFkZXJzIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgZGV2aWNlc0NvbHVtbkhlYWRlcnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbi13aWR0aC0wXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgaGVhZGVyIHwgY29sdW1uVGl0bGUgfX1cIlxuICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaGVhZGVyLmxhYmVsIH19IHt7IGhlYWRlci51bml0IH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIFRoZSByZWNvcmQgbGlzdCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7IGVsc2UgbG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhcG9pbnRzVGFibGVJdGVtcy5sZW5ndGg7IGVsc2UgZW1wdHlTdGF0ZVwiPlxuICAgICAgPGM4eS1saXN0LWdyb3VwXG4gICAgICAgIGNsYXNzPVwicC10LTggZmxleC1ncm93IGM4eS1jcS00NDBcIlxuICAgICAgICBjOHlWaXJ0dWFsU2Nyb2xsTGlzdGVuZXJcbiAgICAgICAgKHNjcm9sbGVkKT1cIm9uTGlzdFNjcm9sbGVkKClcIlxuICAgICAgICAoc2Nyb2xsZWRUb1RvcCk9XCJvbkxpc3RTY3JvbGxlZFRvVG9wKClcIlxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLXRpbWVsaW5lXG4gICAgICAgICAgKmM4eUZvcj1cIlxuICAgICAgICAgICAgbGV0IHRhYmxlSXRlbSBvZiB7IGRhdGE6IGRhdGFwb2ludHNUYWJsZUl0ZW1zLCByZXM6IG51bGwgfTtcbiAgICAgICAgICAgIGVuYWJsZVZpcnR1YWxTY3JvbGw6IHRydWU7XG4gICAgICAgICAgICB2aXJ0dWFsU2Nyb2xsRWxlbWVudFNpemU6IDQwO1xuICAgICAgICAgICAgdmlydHVhbFNjcm9sbFN0cmF0ZWd5OiAnZml4ZWQnXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRhYmxlSXRlbS5kYXRlQW5kVGltZSB8IGM4eURhdGU6ICdtZWRpdW1EYXRlJyB9fVxuICAgICAgICAgIHt7XG4gICAgICAgICAgICB0YWJsZUl0ZW0uZGF0ZUFuZFRpbWVcbiAgICAgICAgICAgICAgfCBjOHlEYXRlOiAnbWVkaXVtVGltZSdcbiAgICAgICAgICAgICAgfCBhZGp1c3RBZ2dyZWdhdGVkVGltZVJhbmdlOiBhZ2dyZWdhdGlvblR5cGVcbiAgICAgICAgICB9fVxuICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICA8Yzh5LWxpLWJvZHk+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaW4td2lkdGgtMFwiXG4gICAgICAgICAgICAgICAgICBbYzh5RHluYW1pY0NvbHVtbl09XCJkZXZpY2VzQ29sdW1uSGVhZGVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZXZpY2VzQ29sdW1uSGVhZGVycy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbGFiZWxdPVwiJ0RldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyB0YWJsZUl0ZW0uZGV2aWNlTmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRhYmxlSXRlbS5kZXZpY2VOYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIERhdGEgcG9pbnQgdmFsdWUgcm93IGNlbGxzIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZUl0ZW0ucm93SXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cgIT09IG51bGw7IGVsc2UgZW1wdHlSb3dDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInJvdy5yZW5kZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvdy52YWx1ZS5taW4gPz8gbnVsbCB8IGFwcGx5UmFuZ2VDbGFzczogZ2V0UmFuZ2VWYWx1ZXMocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ21pbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJyb3cubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyByb3cudmFsdWUubWluID8/ICcnIHwgbnVtYmVyOiBnZXRGcmFjdGlvblNpemUocm93LnZhbHVlLm1pbikgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3cudmFsdWUubWluID8/ICcnIHwgbnVtYmVyOiBnZXRGcmFjdGlvblNpemUocm93LnZhbHVlLm1pbikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LnZhbHVlLm1heCA/PyBudWxsIHwgYXBwbHlSYW5nZUNsYXNzOiBnZXRSYW5nZVZhbHVlcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbWF4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHJvdy52YWx1ZS5tYXggPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWF4KSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdy52YWx1ZS5tYXggPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWF4KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInYXJlYSdcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgcm93LnZhbHVlLm1pbiA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5taW4pIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LnZhbHVlLm1pbiA/PyBudWxsIHwgYXBwbHlSYW5nZUNsYXNzOiBnZXRSYW5nZVZhbHVlcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93LnZhbHVlLm1pbiA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5taW4pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgcm93LnZhbHVlLm1heCA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5tYXgpIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicm93LnZhbHVlLm1heCA/PyBudWxsIHwgYXBwbHlSYW5nZUNsYXNzOiBnZXRSYW5nZVZhbHVlcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93LnZhbHVlLm1heCA/PyAnJyB8IG51bWJlcjogZ2V0RnJhY3Rpb25TaXplKHJvdy52YWx1ZS5tYXgpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHJvdy52YWx1ZS5taW4gPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWluKSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvdy52YWx1ZS5taW4gPz8gbnVsbCB8IGFwcGx5UmFuZ2VDbGFzczogZ2V0UmFuZ2VWYWx1ZXMocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdy52YWx1ZS5taW4gPz8gJycgfCBudW1iZXI6IGdldEZyYWN0aW9uU2l6ZShyb3cudmFsdWUubWluKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eVJvd0NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2M4eUR5bmFtaWNDb2x1bW5dPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnMubGVuZ3RoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgIDwvYzh5LWxpLXRpbWVsaW5lPlxuICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbXB0eVN0YXRlPlxuICA8ZGl2IGNsYXNzPVwicC1yZWxhdGl2ZSBwLWwtMjRcIj5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICBbaWNvbl09XCInYzh5LWFsZXJ0LWlkbGUnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gZGF0YSB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICBkYXRhLWN5PVwiZGF0YXBvaW50cy10YWJsZS1saXN0LS1lbXB0eS1zdGF0ZVwiXG4gICAgPlxuICAgICAgPHAgYzh5LWd1aWRlLWRvY3M+XG4gICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2NvY2twaXQvd2lkZ2V0cy1jb2xsZWN0aW9uLyNkYXRhLXBvaW50LXRhYmxlXCI+XG4gICAgICAgICAgICB1c2VyIGRvY3VtZW50YXRpb25cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgLlxuICAgICAgICA8L3NtYWxsPlxuICAgICAgPC9wPlxuICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21pc3NpbmdBbGxQZXJtaXNzaW9ucz5cbiAgPGRpdiBjbGFzcz1cInAtdC0yNCBwLXItMTYgcC1sLTE2IHAtYi0xNiBkLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2VudGVyLWJsb2NrXCI+XG4gICAgICA8Yzh5LWR5bmFtaWMtY29tcG9uZW50LWFsZXJ0c1xuICAgICAgICBbYWxlcnRzXT1cIm1pc3NpbmdBbGxQZXJtaXNzaW9uc0FsZXJ0XCJcbiAgICAgID48L2M4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|