@c8y/ngx-components 1017.0.14 → 1017.0.17

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.
@@ -75,10 +75,10 @@ export class ListDisplaySwitchComponent {
75
75
  }
76
76
  }
77
77
  ListDisplaySwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListDisplaySwitchComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
78
- ListDisplaySwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListDisplaySwitchComponent, selector: "c8y-list-display-switch", inputs: { listKey: "listKey", listLength: "listLength", filterPipe: "filterPipe" }, outputs: { onListClassChange: "onListClassChange" }, ngImport: i0, template: "<div class=\"form-group\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'List display' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
78
+ ListDisplaySwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListDisplaySwitchComponent, selector: "c8y-list-display-switch", inputs: { listKey: "listKey", listLength: "listLength", filterPipe: "filterPipe" }, outputs: { onListClassChange: "onListClassChange" }, ngImport: i0, template: "<div class=\"form-group\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
79
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListDisplaySwitchComponent, decorators: [{
80
80
  type: Component,
81
- args: [{ selector: 'c8y-list-display-switch', template: "<div class=\"form-group\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'List display' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n" }]
81
+ args: [{ selector: 'c8y-list-display-switch', template: "<div class=\"form-group\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n" }]
82
82
  }], ctorParameters: function () { return [{ type: i1.Location }]; }, propDecorators: { listKey: [{
83
83
  type: Input
84
84
  }], listLength: [{
@@ -89,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
89
89
  }], onListClassChange: [{
90
90
  type: Output
91
91
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2xpc3QtZGlzcGxheS1zd2l0Y2gvbGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xpc3QtZGlzcGxheS1zd2l0Y2gvbGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBTzFDLE1BQU0sT0FBTywwQkFBMEI7SUF3Q3JDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFqQzdCLGVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4QixzQkFBaUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd0RSxvQkFBZSxHQUFvQjtZQUMxQztnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDdEIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDakIsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCO3dCQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJ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IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGlwZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9uIH0gZnJvbSAnLi9saXN0LWRpc3BsYXktc3dpdGNoLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxpc3QtZGlzcGxheS1zd2l0Y2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTGlzdERpc3BsYXlTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBsaXN0S2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnbGlzdExlbmd0aCcpXG4gIHNldCBsaXN0TGVuZ3RoKHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGlzdExlbmd0aCA9IHZhbDtcbiAgICB0aGlzLmxvYWRTZWxlY3RlZE9wdGlvbigpO1xuICB9XG4gIEBJbnB1dCgpIGZpbHRlclBpcGUgPSBwaXBlKHRhcCgpKTtcbiAgQE91dHB1dCgpIG9uTGlzdENsYXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBzZWxlY3RlZE9wdGlvbjogRGlzcGxheU9wdGlvbjtcblxuICByZWFkb25seSBESVNQTEFZX09QVElPTlM6IERpc3BsYXlPcHRpb25bXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnQVVUTycsXG4gICAgICB2YWx1ZTogJ2F1dG8nLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ0F1dG8nKSxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICBnZXRMaXN0Q2xhc3M6ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID1cbiAgICAgICAgICB0aGlzLl9saXN0TGVuZ3RoID4gdGhpcy5BVVRPX0dSSURfSVRFTVNfTElNSVRcbiAgICAgICAgICAgID8gdGhpcy5ESVNQTEFZX09QVElPTlMuZmluZChvcHQgPT4gb3B0Lm5hbWUgPT09ICdMSVNUJylcbiAgICAgICAgICAgIDogdGhpcy5ESVNQTEFZX09QVElPTlMuZmluZChvcHQgPT4gb3B0Lm5hbWUgPT09ICdHUklEJyk7XG4gICAgICAgIHJldHVybiBvcHRpb24uZ2V0TGlzdENsYXNzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnR1JJRCcsXG4gICAgICB2YWx1ZTogJ2dyaWQnLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ0dyaWQnKSxcbiAgICAgIGdldExpc3RDbGFzczogKCkgPT4gJ2ludGVyYWN0LWdyaWQnXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnTElTVCcsXG4gICAgICB2YWx1ZTogJ2xpc3QnLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ0xpc3QnKSxcbiAgICAgIGdldExpc3RDbGFzczogKCkgPT4gJ2ludGVyYWN0LWxpc3QnXG4gICAgfVxuICBdO1xuICBwcml2YXRlIHJlYWRvbmx5IEFVVE9fR1JJRF9JVEVNU19MSU1JVCA9IDEyO1xuICBwcml2YXRlIF9saXN0TGVuZ3RoOiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZFNlbGVjdGVkT3B0aW9uKCk7XG4gIH1cblxuICBvbk9wdGlvblNlbGVjdChvcHRpb246IERpc3BsYXlPcHRpb24pIHtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLmdldExvY2FsU3RvcmFnZUtleSgpO1xuICAgIGlmIChvcHRpb24uZGVmYXVsdCkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obG9jYWxTdG9yYWdlS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlS2V5LCBvcHRpb24udmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmxvYWRTZWxlY3RlZE9wdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkU2VsZWN0ZWRPcHRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlT3B0aW9uKCkgfHwgdGhpcy5nZXREZWZhdWx0T3B0aW9uKCk7XG4gICAgdGhpcy5vbkxpc3RDbGFzc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb24uZ2V0TGlzdENsYXNzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbFN0b3JhZ2VPcHRpb24oKTogRGlzcGxheU9wdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuRElTUExBWV9PUFRJT05TLmZpbmQoXG4gICAgICBvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmdldExvY2FsU3RvcmFnZUtleSgpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRPcHRpb24oKTogRGlzcGxheU9wdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuRElTUExBWV9PUFRJT05TLmZpbmQob3B0aW9uID0+IG9wdGlvbi5kZWZhdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBsaXN0LWRpc3BsYXktb3B0aW9uWyR7dGhpcy5nZXRMaXN0S2V5KCl9XWA7XG4gIH1cblxuICBwcml2YXRlIGdldExpc3RLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5saXN0S2V5IHx8IHRoaXMubG9jYXRpb24ucGF0aCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgY2xhc3M9XCJtLXItOFwiIGlkPVwibGlzdExhYmVsXCI+XG4gICAge3sgJ0Rpc3BsYXkgYXMnIHwgdHJhbnNsYXRlIH19XG4gIDwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICA8c2VsZWN0XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJsaXN0TGFiZWxcIlxuICAgICAgbmFtZT1cImxpc3RMYWJlbFwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZE9wdGlvblwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk9wdGlvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0xpc3QgZGlzcGxheScgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBESVNQTEFZX09QVElPTlNcIiBbbmdWYWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAge3sgb3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgICA8c3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2xpc3QtZGlzcGxheS1zd2l0Y2gvbGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xpc3QtZGlzcGxheS1zd2l0Y2gvbGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBTzFDLE1BQU0sT0FBTywwQkFBMEI7SUF3Q3JDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFqQzdCLGVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4QixzQkFBaUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd0RSxvQkFBZSxHQUFvQjtZQUMxQztnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDdEIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDakIsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCO3dCQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJ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IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGlwZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9uIH0gZnJvbSAnLi9saXN0LWRpc3BsYXktc3dpdGNoLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxpc3QtZGlzcGxheS1zd2l0Y2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1kaXNwbGF5LXN3aXRjaC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTGlzdERpc3BsYXlTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBsaXN0S2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnbGlzdExlbmd0aCcpXG4gIHNldCBsaXN0TGVuZ3RoKHZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGlzdExlbmd0aCA9IHZhbDtcbiAgICB0aGlzLmxvYWRTZWxlY3RlZE9wdGlvbigpO1xuICB9XG4gIEBJbnB1dCgpIGZpbHRlclBpcGUgPSBwaXBlKHRhcCgpKTtcbiAgQE91dHB1dCgpIG9uTGlzdENsYXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBzZWxlY3RlZE9wdGlvbjogRGlzcGxheU9wdGlvbjtcblxuICByZWFkb25seSBESVNQTEFZX09QVElPTlM6IERpc3BsYXlPcHRpb25bXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnQVVUTycsXG4gICAgICB2YWx1ZTogJ2F1dG8nLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ0F1dG8nKSxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICBnZXRMaXN0Q2xhc3M6ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID1cbiAgICAgICAgICB0aGlzLl9saXN0TGVuZ3RoID4gdGhpcy5BVVRPX0dSSURfSVRFTVNfTElNSVRcbiAgICAgICAgICAgID8gdGhpcy5ESVNQTEFZX09QVElPTlMuZmluZChvcHQgPT4gb3B0Lm5hbWUgPT09ICdMSVNUJylcbiAgICAgICAgICAgIDogdGhpcy5ESVNQTEFZX09QVElPTlMuZmluZChvcHQgPT4gb3B0Lm5hbWUgPT09ICdHUklEJyk7XG4gICAgICAgIHJldHVybiBvcHRpb24uZ2V0TGlzdENsYXNzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnR1JJRCcsXG4gICAgICB2YWx1ZTogJ2dyaWQnLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ0dyaWQnKSxcbiAgICAgIGdldExpc3RDbGFzczogKCkgPT4gJ2ludGVyYWN0LWdyaWQnXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnTElTVCcsXG4gICAgICB2YWx1ZTogJ2xpc3QnLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ0xpc3QnKSxcbiAgICAgIGdldExpc3RDbGFzczogKCkgPT4gJ2ludGVyYWN0LWxpc3QnXG4gICAgfVxuICBdO1xuICBwcml2YXRlIHJlYWRvbmx5IEFVVE9fR1JJRF9JVEVNU19MSU1JVCA9IDEyO1xuICBwcml2YXRlIF9saXN0TGVuZ3RoOiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZFNlbGVjdGVkT3B0aW9uKCk7XG4gIH1cblxuICBvbk9wdGlvblNlbGVjdChvcHRpb246IERpc3BsYXlPcHRpb24pIHtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLmdldExvY2FsU3RvcmFnZUtleSgpO1xuICAgIGlmIChvcHRpb24uZGVmYXVsdCkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0obG9jYWxTdG9yYWdlS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlS2V5LCBvcHRpb24udmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmxvYWRTZWxlY3RlZE9wdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkU2VsZWN0ZWRPcHRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlT3B0aW9uKCkgfHwgdGhpcy5nZXREZWZhdWx0T3B0aW9uKCk7XG4gICAgdGhpcy5vbkxpc3RDbGFzc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb24uZ2V0TGlzdENsYXNzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbFN0b3JhZ2VPcHRpb24oKTogRGlzcGxheU9wdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuRElTUExBWV9PUFRJT05TLmZpbmQoXG4gICAgICBvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmdldExvY2FsU3RvcmFnZUtleSgpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRPcHRpb24oKTogRGlzcGxheU9wdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuRElTUExBWV9PUFRJT05TLmZpbmQob3B0aW9uID0+IG9wdGlvbi5kZWZhdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBsaXN0LWRpc3BsYXktb3B0aW9uWyR7dGhpcy5nZXRMaXN0S2V5KCl9XWA7XG4gIH1cblxuICBwcml2YXRlIGdldExpc3RLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5saXN0S2V5IHx8IHRoaXMubG9jYXRpb24ucGF0aCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgY2xhc3M9XCJtLXItOFwiIGlkPVwibGlzdExhYmVsXCI+XG4gICAge3sgJ0Rpc3BsYXkgYXMnIHwgdHJhbnNsYXRlIH19XG4gIDwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICA8c2VsZWN0XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJsaXN0TGFiZWxcIlxuICAgICAgbmFtZT1cImxpc3RMYWJlbFwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZE9wdGlvblwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk9wdGlvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Rpc3BsYXkgbW9kZScgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBESVNQTEFZX09QVElPTlNcIiBbbmdWYWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAge3sgb3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgICA8c3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -105,12 +105,12 @@ export class DeviceConfigurationComponent {
105
105
  }
106
106
  }
107
107
  DeviceConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceConfigurationComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DeviceConfigurationService }, { token: i3.Realtime }, { token: i4.RepositoryService }], target: i0.ɵɵFactoryTarget.Component });
108
- DeviceConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceConfigurationComponent, selector: "c8y-device-configuration", viewQueries: [{ propertyName: "textBasedConfigurationComponent", first: true, predicate: TextBasedConfigurationComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n\n <div class=\"c8y-empty-state text-left\" *ngIf=\"!repositorySnapshot\">\n <h1 aria-label=\"{{ 'Empty state' | translate }}\" [c8yIcon]=\"'file-text'\"></h1>\n <p>\n <strong translate>No configuration selected.</strong>\n <br />\n <small *ngIf=\"!configurationType; else noSnapshot\" translate>\n Select a configuration to preview\n </small>\n <ng-template #noSnapshot>\n <small translate>Select the configuration you want to preview</small>\n </ng-template>\n </p>\n </div>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i6.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.TabsetAriaDirective, selector: "tabset" }, { kind: "directive", type: i7.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i7.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "component", type: i8.DeviceConfigurationListComponent, selector: "c8y-device-configuration-list", inputs: ["items", "itemIcon", "emptyState", "isFilterEnabled"], outputs: ["configSelected"] }, { kind: "component", type: i9.ConfigurationPreviewComponent, selector: "c8y-device-configuration-preview", inputs: ["device", "configurationType", "configSnapshot", "canSaveSnapshot", "actionButtonText", "actionButtonIcon", "isLegacy", "operationToTrigger"] }, { kind: "component", type: i10.TextBasedConfigurationComponent, selector: "c8y-text-based-configuration" }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }] });
108
+ DeviceConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceConfigurationComponent, selector: "c8y-device-configuration", viewQueries: [{ propertyName: "textBasedConfigurationComponent", first: true, predicate: TextBasedConfigurationComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n <c8y-ui-empty-state\n *ngIf=\"!repositorySnapshot\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i6.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.TabsetAriaDirective, selector: "tabset" }, { kind: "directive", type: i7.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i7.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "component", type: i8.DeviceConfigurationListComponent, selector: "c8y-device-configuration-list", inputs: ["items", "itemIcon", "emptyState", "isFilterEnabled"], outputs: ["configSelected"] }, { kind: "component", type: i9.ConfigurationPreviewComponent, selector: "c8y-device-configuration-preview", inputs: ["device", "configurationType", "configSnapshot", "canSaveSnapshot", "actionButtonText", "actionButtonIcon", "isLegacy", "operationToTrigger"] }, { kind: "component", type: i10.TextBasedConfigurationComponent, selector: "c8y-text-based-configuration" }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }] });
109
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceConfigurationComponent, decorators: [{
110
110
  type: Component,
111
- args: [{ selector: 'c8y-device-configuration', template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n\n <div class=\"c8y-empty-state text-left\" *ngIf=\"!repositorySnapshot\">\n <h1 aria-label=\"{{ 'Empty state' | translate }}\" [c8yIcon]=\"'file-text'\"></h1>\n <p>\n <strong translate>No configuration selected.</strong>\n <br />\n <small *ngIf=\"!configurationType; else noSnapshot\" translate>\n Select a configuration to preview\n </small>\n <ng-template #noSnapshot>\n <small translate>Select the configuration you want to preview</small>\n </ng-template>\n </p>\n </div>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n" }]
111
+ args: [{ selector: 'c8y-device-configuration', template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n <c8y-ui-empty-state\n *ngIf=\"!repositorySnapshot\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n" }]
112
112
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.DeviceConfigurationService }, { type: i3.Realtime }, { type: i4.RepositoryService }]; }, propDecorators: { textBasedConfigurationComponent: [{
113
113
  type: ViewChild,
114
114
  args: [TextBasedConfigurationComponent]
115
115
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2RldmljZS10YWIvZGV2aWNlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2RldmljZS10YWIvZGV2aWNlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBa0IsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBR0wsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUVsQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7OztBQU12RixNQUFNLE9BQU8sNEJBQTRCO0lBZ0J2QyxZQUNVLEtBQXFCLEVBQ3JCLDBCQUFzRCxFQUN0RCxRQUFrQixFQUNsQixpQkFBb0M7UUFIcEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFuQjlDLDRCQUF1QixHQUFpQyxFQUFFLENBQUM7UUFDM0QsMEJBQXFC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aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBSZWFsdGltZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25TbmFwc2hvdCxcbiAgRGV2aWNlQ29uZmlndXJhdGlvbkxpc3RFbXB0eVN0YXRlLFxuICBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLFxuICBSZXBvc2l0b3J5U2VydmljZSxcbiAgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkl0ZW1cbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZXBvc2l0b3J5L3NoYXJlZCc7XG5pbXBvcnQgeyBoYXMgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RldmljZS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dEJhc2VkQ29uZmlndXJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1iYXNlZC1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2UtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zOiBTdXBwb3J0ZWRDb25maWd1cmF0aW9uSXRlbVtdID0gW107XG4gIHNob3dCaW5hcnlCYXNlZENvbmZpZyA9IGZhbHNlO1xuICBjb25maWd1cmF0aW9uVHlwZTogc3RyaW5nO1xuICBjb25maWdTbmFwc2hvdDogUGFydGlhbDxDb25maWd1cmF0aW9uU25hcHNob3Q+ID0ge307XG4gIHJlcG9zaXRvcnlTbmFwc2hvdHM6IElNYW5hZ2VkT2JqZWN0W107XG4gIHJlcG9zaXRvcnlTbmFwc2hvdDogQ29uZmlndXJhdGlvblNuYXBzaG90O1xuICByZXBvc2l0b3J5U25hcHNob3RzRW1wdHlTdGF0ZTogRGV2aWNlQ29uZmlndXJhdGlvbkxpc3RFbXB0eVN0YXRlO1xuICBkZXZpY2U6IElNYW5hZ2VkT2JqZWN0O1xuICBpc0xlZ2FjeTogYm9vbGVhbjtcbiAgc2hvd1RleHRCYXNlZENvbmZpZzogYm9vbGVhbjtcbiAgcmVsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChUZXh0QmFzZWRDb25maWd1cmF0aW9uQ29tcG9uZW50KVxuICB0ZXh0QmFzZWRDb25maWd1cmF0aW9uQ29tcG9uZW50OiBUZXh0QmFzZWRDb25maWd1cmF0aW9uQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2U6IERldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhbHRpbWU6IFJlYWx0aW1lLFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeVNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UuY29uZmlndXJhdGlvbnNVcGRhdGVkLnN1YnNjcmliZShyZXBvc2l0b3J5U25hcHNPbmx5ID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU25hcHNob3RzKHJlcG9zaXRvcnlTbmFwc09ubHkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZXZpY2UgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhO1xuICAgIGlmICh0aGlzLmRldmljZS5jOHlfU3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgIHRoaXMuc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgPSB0aGlzLmRldmljZS5jOHlfU3VwcG9ydGVkQ29uZmlndXJhdGlvbnMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgbmFtZTogaXRlbVxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UuaGFzQW55U3VwcG9ydGVkT3BlcmF0aW9uKHRoaXMuZGV2aWNlLCBbXG4gICAgICAgIERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHLFxuICAgICAgICBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLlVQTE9BRF9DT05GSUdcbiAgICAgIF0pXG4gICAgKSB7XG4gICAgICB0aGlzLnN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLnB1c2goe1xuICAgICAgICBuYW1lOiBnZXR0ZXh0KCdMZWdhY3kgY29uZmlndXJhdGlvbiBzbmFwc2hvdCcpLFxuICAgICAgICBpc0xlZ2FjeTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2hvd0JpbmFyeUJhc2VkQ29uZmlnID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlcG9zaXRvcnlTbmFwc2hvdHNFbXB0eVN0YXRlID0ge1xuICAgICAgaWNvbjogJ2dlYXJzJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdObyBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUuJyksXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdBZGQgY29uZmlndXJhdGlvbiB0byBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnknKVxuICAgIH07XG5cbiAgICB0aGlzLnNob3dUZXh0QmFzZWRDb25maWcgPVxuICAgICAgdGhpcy5kZXZpY2VDb25maWd1cmF0aW9uU2VydmljZS5oYXNBbnlTdXBwb3J0ZWRPcGVyYXRpb24odGhpcy5kZXZpY2UsIFtcbiAgICAgICAgRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5DT05GSUcsXG4gICAgICAgIERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uU0VORF9DT05GSUdcbiAgICAgIF0pIHx8IGhhcyh0aGlzLmRldmljZSwgJ2M4eV9Db25maWd1cmF0aW9uJyk7XG4gIH1cblxuICBhc3luYyBvbkNvbmZpZ1R5cGVTZWxlY3RlZChjb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25UeXBlID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5pc0xlZ2FjeSA9IGNvbmZpZy5pc0xlZ2FjeTtcbiAgICB0aGlzLnVwZGF0ZVNuYXBzaG90cygpO1xuICB9XG5cbiAgYXN5bmMgb25SZXBvc2l0b3J5Q29uZmlnU2VsZWN0ZWQoY29uZmlnKSB7XG4gICAgdGhpcy5yZXBvc2l0b3J5U25hcHNob3QgPSB7XG4gICAgICBpZDogY29uZmlnLmlkLFxuICAgICAgdGltZTogY29uZmlnLmNyZWF0aW9uVGltZSxcbiAgICAgIG5hbWU6IGNvbmZpZy5uYW1lLFxuICAgICAgYmluYXJ5VXJsOiBjb25maWcudXJsLFxuICAgICAgZGV2aWNlVHlwZTogY29uZmlnLmRldmljZVR5cGUsXG4gICAgICBjb25maWd1cmF0aW9uVHlwZTogY29uZmlnLmNvbmZpZ3VyYXRpb25UeXBlXG4gICAgfTtcbiAgICBpZiAoY29uZmlnLnVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmluYXJ5ID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRCaW5hcnlGaWxlKGNvbmZpZy51cmwsIHtcbiAgICAgICAgICBhbGxvd0V4dGVybmFsOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGJpbmFyeSkge1xuICAgICAgICAgIHRoaXMucmVwb3NpdG9yeVNuYXBzaG90LmJpbmFyeSA9IGF3YWl0IChiaW5hcnkgYXMgYW55KS50ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVTbmFwc2hvdHMocmVwb3NpdG9yeVNuYXBzT25seT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5yZXBvc2l0b3J5U25hcHNob3QgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXBvc2l0b3J5U25hcHNob3RzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRTbmFwc2hvdHNGcm9tUmVwb3NpdG9yeShcbiAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uVHlwZVxuICAgICk7XG4gICAgaWYgKCFyZXBvc2l0b3J5U25hcHNPbmx5KSB7XG4gICAgICB0aGlzLmNvbmZpZ1NuYXBzaG90ID0gdGhpcy5pc0xlZ2FjeVxuICAgICAgICA/IGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0TGVnYWN5Q29uZmlnU25hcHNob3QodGhpcy5kZXZpY2UpXG4gICAgICAgIDogYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRDb25maWdTbmFwc2hvdCh0aGlzLmRldmljZSwgdGhpcy5jb25maWd1cmF0aW9uVHlwZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dUZXh0QmFzZWRDb25maWcpIHtcbiAgICAgIGF3YWl0IHRoaXMudGV4dEJhc2VkQ29uZmlndXJhdGlvbkNvbXBvbmVudC5sb2FkKCk7XG4gICAgfVxuICAgIHRoaXMucmVsb2FkaW5nID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJ1cGRhdGVTbmFwc2hvdHMoKVwiPlxuICAgIDxpIGM4eUljb249XCJyZWZyZXNoXCIgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIH1cIj48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2UgY2FyZC1oYXMtdGFic1wiPlxuICA8dGFic2V0PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3JcIiAqbmdJZj1cInNob3dCaW5hcnlCYXNlZENvbmZpZyAmJiAhc2hvd1RleHRCYXNlZENvbmZpZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnQ29uZmlndXJhdGlvbnMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiICpuZ0lmPVwiIXNob3dCaW5hcnlCYXNlZENvbmZpZyAmJiBzaG93VGV4dEJhc2VkQ29uZmlnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdUZXh0LWJhc2VkIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHRhYiBoZWFkaW5nPVwie3sgJ0NvbmZpZ3VyYXRpb25zJyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwic2hvd0JpbmFyeUJhc2VkQ29uZmlnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC0tZ3JpZCBjYXJkIGdyaWRfX2NvbC0tNC04LS1tZCBncmlkX19yb3ctLTYtNi0tbWQgbS1iLTBcIj5cbiAgICAgICAgPCEtLSBERVZJQ0UgU1VQUE9SVEVEIENPTkZJR1VSQVRJT05TIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC0tZ3JpZF9faW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNlwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkRldmljZS1zdXBwb3J0ZWQgY29uZmlndXJhdGlvbnM8L3NwYW4+XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxjOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tbGlzdFxuICAgICAgICAgICAgW2l0ZW1zXT1cInN1cHBvcnRlZENvbmZpZ3VyYXRpb25zXCJcbiAgICAgICAgICAgIFtpdGVtSWNvbl09XCInZ2VhcnMnXCJcbiAgICAgICAgICAgIChjb25maWdTZWxlY3RlZCk9XCJvbkNvbmZpZ1R5cGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9jOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tbGlzdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDT05GSUdVUkFUSU9OIFBSRVZJRVcgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLS1ncmlkX19pbm5lci1zY3JvbGwgZC1mbGV4IGQtY29sIGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIGQtZmxleCBkLWNvbCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+PHNwYW4gdHJhbnNsYXRlPlByZXZpZXc8L3NwYW4+PC9oNT5cblxuICAgICAgICAgICAgPCEtLSBFTVBUWSBTVEFURSAtLT5cblxuICAgICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFjb25maWd1cmF0aW9uVHlwZVwiXG4gICAgICAgICAgICAgIFtpY29uXT1cIidmaWxlLXRleHQnXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidObyBjb25maWd1cmF0aW9uIHNlbGVjdGVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhIGNvbmZpZ3VyYXRpb24gdG8gcHJldmlldy4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICAgICAgICAgIDwhLS0gUFJFVklFVyBBVkFJTEFCTEUgU1RBVEUgLS0+XG4gICAgICAgICAgICA8Yzh5LWRldmljZS1jb25maWd1cmF0aW9uLXByZXZpZXdcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWd1cmF0aW9uVHlwZVwiXG4gICAgICAgICAgICAgIFtkZXZpY2VdPVwiZGV2aWNlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ3VyYXRpb25UeXBlXT1cImNvbmZpZ3VyYXRpb25UeXBlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ1NuYXBzaG90XT1cImNvbmZpZ1NuYXBzaG90XCJcbiAgICAgICAgICAgICAgW2NhblNhdmVTbmFwc2hvdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW29wZXJhdGlvblRvVHJpZ2dlcl09XCInYzh5X1VwbG9hZENvbmZpZ0ZpbGUnXCJcbiAgICAgICAgICAgICAgW2FjdGlvbkJ1dHRvblRleHRdPVwiJ0dldCBzbmFwc2hvdCBmcm9tIGRldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbYWN0aW9uQnV0dG9uSWNvbl09XCInZG93bmxvYWQnXCJcbiAgICAgICAgICAgICAgW2lzTGVnYWN5XT1cImlzTGVnYWN5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZC1jb2wgZmxleC1ncm93XCJcbiAgICAgICAgICAgID48L2M4eS1kZXZpY2UtY29uZmlndXJhdGlvbi1wcmV2aWV3PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFWQUlMQUJMRSBTVVBQT1JURUQgQ09ORklHVVJBVElPTlMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLS1ncmlkX19pbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC1yLTE2XCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5BdmFpbGFibGUgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb25zPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gRU1QVFkgU1RBVEUgLS0+XG5cbiAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICAqbmdJZj1cIiFjb25maWd1cmF0aW9uVHlwZVwiXG4gICAgICAgICAgICBbaWNvbl09XCInZ2VhcnMnXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInTm8gc2VsZWN0aW9uLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3N1YnRpdGxlXT1cIlxuICAgICAgICAgICAgICAnU2VsZWN0IGEgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBkZXZpY2Utc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gbGlzdC4nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtci0xNlwiICpuZ0lmPVwiY29uZmlndXJhdGlvblR5cGVcIj5cbiAgICAgICAgICAgIDxjOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tbGlzdFxuICAgICAgICAgICAgICBbaXRlbXNdPVwicmVwb3NpdG9yeVNuYXBzaG90c1wiXG4gICAgICAgICAgICAgIFtpdGVtSWNvbl09XCInZmlsZS10ZXh0J1wiXG4gICAgICAgICAgICAgIFtlbXB0eVN0YXRlXT1cInJlcG9zaXRvcnlTbmFwc2hvdHNFbXB0eVN0YXRlXCJcbiAgICAgICAgICAgICAgW2lzRmlsdGVyRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGNvbmZpZ1NlbGVjdGVkKT1cIm9uUmVwb3NpdG9yeUNvbmZpZ1NlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgPjwvYzh5LWRldmljZS1jb25maWd1cmF0aW9uLWxpc3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ09ORklHVVJBVElPTiBQUkVWSUVXIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC0tZ3JpZF9faW5uZXItc2Nyb2xsIGQtZmxleCBkLWNvbCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBmbGV4LWdyb3cgZC1mbGV4IGQtY29sXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5QcmV2aWV3PC9oNT5cblxuICAgICAgICAgICAgPCEtLSBFTVBUWSBTVEFURSAtLT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1lbXB0eS1zdGF0ZSB0ZXh0LWxlZnRcIiAqbmdJZj1cIiFyZXBvc2l0b3J5U25hcHNob3RcIj5cbiAgICAgICAgICAgICAgPGgxIGFyaWEtbGFiZWw9XCJ7eyAnRW1wdHkgc3RhdGUnIHwgdHJhbnNsYXRlIH19XCIgW2M4eUljb25dPVwiJ2ZpbGUtdGV4dCdcIj48L2gxPlxuICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nIHRyYW5zbGF0ZT5ObyBjb25maWd1cmF0aW9uIHNlbGVjdGVkLjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cIiFjb25maWd1cmF0aW9uVHlwZTsgZWxzZSBub1NuYXBzaG90XCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICAgICAgU2VsZWN0IGEgY29uZmlndXJhdGlvbiB0byBwcmV2aWV3XG4gICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vU25hcHNob3Q+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlNlbGVjdCB0aGUgY29uZmlndXJhdGlvbiB5b3Ugd2FudCB0byBwcmV2aWV3PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBDT05GSUdVUkFUSU9OIFNFTEVDVEVEIFNUQVRFIC0tPlxuICAgICAgICAgICAgPGM4eS1kZXZpY2UtY29uZmlndXJhdGlvbi1wcmV2aWV3XG4gICAgICAgICAgICAgICpuZ0lmPVwicmVwb3NpdG9yeVNuYXBzaG90XCJcbiAgICAgICAgICAgICAgW2RldmljZV09XCJkZXZpY2VcIlxuICAgICAgICAgICAgICBbY29uZmlndXJhdGlvblR5cGVdPVwiY29uZmlndXJhdGlvblR5cGVcIlxuICAgICAgICAgICAgICBbY29uZmlnU25hcHNob3RdPVwicmVwb3NpdG9yeVNuYXBzaG90XCJcbiAgICAgICAgICAgICAgW29wZXJhdGlvblRvVHJpZ2dlcl09XCInYzh5X0Rvd25sb2FkQ29uZmlnRmlsZSdcIlxuICAgICAgICAgICAgICBbYWN0aW9uQnV0dG9uVGV4dF09XCInU2VuZCBjb25maWd1cmF0aW9uIHRvIGRldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbYWN0aW9uQnV0dG9uSWNvbl09XCIndXBsb2FkJ1wiXG4gICAgICAgICAgICAgIFtpc0xlZ2FjeV09XCJpc0xlZ2FjeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGQtY29sIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICA+PC9jOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tcHJldmlldz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RhYj5cbiAgICA8dGFiIGhlYWRpbmc9XCJ7eyAnVGV4dC1iYXNlZCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwic2hvd1RleHRCYXNlZENvbmZpZ1wiPlxuICAgICAgPGM4eS10ZXh0LWJhc2VkLWNvbmZpZ3VyYXRpb24+PC9jOHktdGV4dC1iYXNlZC1jb25maWd1cmF0aW9uPlxuICAgIDwvdGFiPlxuICA8L3RhYnNldD5cbjwvZGl2PlxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2RldmljZS10YWIvZGV2aWNlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9jb25maWd1cmF0aW9uL2RldmljZS10YWIvZGV2aWNlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBa0IsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBR0wsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUVsQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7OztBQU12RixNQUFNLE9BQU8sNEJBQTRCO0lBZ0J2QyxZQUNVLEtBQXFCLEVBQ3JCLDBCQUFzRCxFQUN0RCxRQUFrQixFQUNsQixpQkFBb0M7UUFIcEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFuQjlDLDRCQUF1QixHQUFpQyxFQUFFLENBQUM7UUFDM0QsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLG1CQUFjLEdBQW1DLEVBQUUsQ0FBQztRQU9wRCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBV3pCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUNwRixJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFO1lBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xGLElBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQyxDQUFDLENBQUM7U0FDTDtRQUVELElBQ0UsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDcEUsNEJBQTRCLENBQUMsZUFBZTtZQUM1Qyw0QkFBNEIsQ0FBQyxhQUFhO1NBQzNDLENBQUMsRUFDRjtZQUNBLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxPQUFPLENBQUMsK0JBQStCLENBQUM7Z0JBQzlDLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7U0FDbkM7UUFFRCxJQUFJLENBQUMsNkJBQTZCLEdBQUc7WUFDbkMsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLDhCQUE4QixDQUFDO1lBQzlDLElBQUksRUFBRSxPQUFPLENBQUMsK0NBQStDLENBQUM7U0FDL0QsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BFLDRCQUE0QixDQUFDLE1BQU07Z0JBQ25DLDRCQUE0QixDQUFDLFdBQVc7YUFDekMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxNQUFNO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsR0FBRztZQUN4QixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDYixJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRztZQUNyQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtTQUM1QyxDQUFDO1FBQ0YsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSTtnQkFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDcEUsYUFBYSxFQUFFLEtBQUs7aUJBQ3JCLENBQUMsQ0FBQztnQkFDSCxJQUFJLE1BQU0sRUFBRTtvQkFDVixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLE1BQU8sTUFBYyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUMvRDthQUNGO1lBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsYUFBYTthQUNkO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxtQkFBNkI7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsMEJBQTBCLENBQ2hGLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVE7Z0JBQ2pDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNuRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN6RjtRQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzVCLE1BQU0sSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQzs7eUhBNUdVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGlJQWE1QiwrQkFBK0IsZ0RDaEM1QywreEtBOEhBOzJGRDNHYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMEJBQTBCO3FNQWlCcEMsK0JBQStCO3NCQUQ5QixTQUFTO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBSZWFsdGltZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25TbmFwc2hvdCxcbiAgRGV2aWNlQ29uZmlndXJhdGlvbkxpc3RFbXB0eVN0YXRlLFxuICBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLFxuICBSZXBvc2l0b3J5U2VydmljZSxcbiAgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkl0ZW1cbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZXBvc2l0b3J5L3NoYXJlZCc7XG5pbXBvcnQgeyBoYXMgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2RldmljZS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dEJhc2VkQ29uZmlndXJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1iYXNlZC1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2UtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zOiBTdXBwb3J0ZWRDb25maWd1cmF0aW9uSXRlbVtdID0gW107XG4gIHNob3dCaW5hcnlCYXNlZENvbmZpZyA9IGZhbHNlO1xuICBjb25maWd1cmF0aW9uVHlwZTogc3RyaW5nO1xuICBjb25maWdTbmFwc2hvdDogUGFydGlhbDxDb25maWd1cmF0aW9uU25hcHNob3Q+ID0ge307XG4gIHJlcG9zaXRvcnlTbmFwc2hvdHM6IElNYW5hZ2VkT2JqZWN0W107XG4gIHJlcG9zaXRvcnlTbmFwc2hvdDogQ29uZmlndXJhdGlvblNuYXBzaG90O1xuICByZXBvc2l0b3J5U25hcHNob3RzRW1wdHlTdGF0ZTogRGV2aWNlQ29uZmlndXJhdGlvbkxpc3RFbXB0eVN0YXRlO1xuICBkZXZpY2U6IElNYW5hZ2VkT2JqZWN0O1xuICBpc0xlZ2FjeTogYm9vbGVhbjtcbiAgc2hvd1RleHRCYXNlZENvbmZpZzogYm9vbGVhbjtcbiAgcmVsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChUZXh0QmFzZWRDb25maWd1cmF0aW9uQ29tcG9uZW50KVxuICB0ZXh0QmFzZWRDb25maWd1cmF0aW9uQ29tcG9uZW50OiBUZXh0QmFzZWRDb25maWd1cmF0aW9uQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2U6IERldmljZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhbHRpbWU6IFJlYWx0aW1lLFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeVNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UuY29uZmlndXJhdGlvbnNVcGRhdGVkLnN1YnNjcmliZShyZXBvc2l0b3J5U25hcHNPbmx5ID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU25hcHNob3RzKHJlcG9zaXRvcnlTbmFwc09ubHkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZXZpY2UgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhO1xuICAgIGlmICh0aGlzLmRldmljZS5jOHlfU3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgIHRoaXMuc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgPSB0aGlzLmRldmljZS5jOHlfU3VwcG9ydGVkQ29uZmlndXJhdGlvbnMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgbmFtZTogaXRlbVxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuZGV2aWNlQ29uZmlndXJhdGlvblNlcnZpY2UuaGFzQW55U3VwcG9ydGVkT3BlcmF0aW9uKHRoaXMuZGV2aWNlLCBbXG4gICAgICAgIERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uRE9XTkxPQURfQ09ORklHLFxuICAgICAgICBEZXZpY2VDb25maWd1cmF0aW9uT3BlcmF0aW9uLlVQTE9BRF9DT05GSUdcbiAgICAgIF0pXG4gICAgKSB7XG4gICAgICB0aGlzLnN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLnB1c2goe1xuICAgICAgICBuYW1lOiBnZXR0ZXh0KCdMZWdhY3kgY29uZmlndXJhdGlvbiBzbmFwc2hvdCcpLFxuICAgICAgICBpc0xlZ2FjeTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2hvd0JpbmFyeUJhc2VkQ29uZmlnID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlcG9zaXRvcnlTbmFwc2hvdHNFbXB0eVN0YXRlID0ge1xuICAgICAgaWNvbjogJ2dlYXJzJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdObyBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUuJyksXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdBZGQgY29uZmlndXJhdGlvbiB0byBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnknKVxuICAgIH07XG5cbiAgICB0aGlzLnNob3dUZXh0QmFzZWRDb25maWcgPVxuICAgICAgdGhpcy5kZXZpY2VDb25maWd1cmF0aW9uU2VydmljZS5oYXNBbnlTdXBwb3J0ZWRPcGVyYXRpb24odGhpcy5kZXZpY2UsIFtcbiAgICAgICAgRGV2aWNlQ29uZmlndXJhdGlvbk9wZXJhdGlvbi5DT05GSUcsXG4gICAgICAgIERldmljZUNvbmZpZ3VyYXRpb25PcGVyYXRpb24uU0VORF9DT05GSUdcbiAgICAgIF0pIHx8IGhhcyh0aGlzLmRldmljZSwgJ2M4eV9Db25maWd1cmF0aW9uJyk7XG4gIH1cblxuICBhc3luYyBvbkNvbmZpZ1R5cGVTZWxlY3RlZChjb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25UeXBlID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5pc0xlZ2FjeSA9IGNvbmZpZy5pc0xlZ2FjeTtcbiAgICB0aGlzLnVwZGF0ZVNuYXBzaG90cygpO1xuICB9XG5cbiAgYXN5bmMgb25SZXBvc2l0b3J5Q29uZmlnU2VsZWN0ZWQoY29uZmlnKSB7XG4gICAgdGhpcy5yZXBvc2l0b3J5U25hcHNob3QgPSB7XG4gICAgICBpZDogY29uZmlnLmlkLFxuICAgICAgdGltZTogY29uZmlnLmNyZWF0aW9uVGltZSxcbiAgICAgIG5hbWU6IGNvbmZpZy5uYW1lLFxuICAgICAgYmluYXJ5VXJsOiBjb25maWcudXJsLFxuICAgICAgZGV2aWNlVHlwZTogY29uZmlnLmRldmljZVR5cGUsXG4gICAgICBjb25maWd1cmF0aW9uVHlwZTogY29uZmlnLmNvbmZpZ3VyYXRpb25UeXBlXG4gICAgfTtcbiAgICBpZiAoY29uZmlnLnVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmluYXJ5ID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRCaW5hcnlGaWxlKGNvbmZpZy51cmwsIHtcbiAgICAgICAgICBhbGxvd0V4dGVybmFsOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGJpbmFyeSkge1xuICAgICAgICAgIHRoaXMucmVwb3NpdG9yeVNuYXBzaG90LmJpbmFyeSA9IGF3YWl0IChiaW5hcnkgYXMgYW55KS50ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVTbmFwc2hvdHMocmVwb3NpdG9yeVNuYXBzT25seT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5yZXBvc2l0b3J5U25hcHNob3QgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXBvc2l0b3J5U25hcHNob3RzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRTbmFwc2hvdHNGcm9tUmVwb3NpdG9yeShcbiAgICAgIHRoaXMuZGV2aWNlLFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uVHlwZVxuICAgICk7XG4gICAgaWYgKCFyZXBvc2l0b3J5U25hcHNPbmx5KSB7XG4gICAgICB0aGlzLmNvbmZpZ1NuYXBzaG90ID0gdGhpcy5pc0xlZ2FjeVxuICAgICAgICA/IGF3YWl0IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0TGVnYWN5Q29uZmlnU25hcHNob3QodGhpcy5kZXZpY2UpXG4gICAgICAgIDogYXdhaXQgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRDb25maWdTbmFwc2hvdCh0aGlzLmRldmljZSwgdGhpcy5jb25maWd1cmF0aW9uVHlwZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dUZXh0QmFzZWRDb25maWcpIHtcbiAgICAgIGF3YWl0IHRoaXMudGV4dEJhc2VkQ29uZmlndXJhdGlvbkNvbXBvbmVudC5sb2FkKCk7XG4gICAgfVxuICAgIHRoaXMucmVsb2FkaW5nID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJ1cGRhdGVTbmFwc2hvdHMoKVwiPlxuICAgIDxpIGM4eUljb249XCJyZWZyZXNoXCIgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIH1cIj48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2UgY2FyZC1oYXMtdGFic1wiPlxuICA8dGFic2V0PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3JcIiAqbmdJZj1cInNob3dCaW5hcnlCYXNlZENvbmZpZyAmJiAhc2hvd1RleHRCYXNlZENvbmZpZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnQ29uZmlndXJhdGlvbnMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiICpuZ0lmPVwiIXNob3dCaW5hcnlCYXNlZENvbmZpZyAmJiBzaG93VGV4dEJhc2VkQ29uZmlnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdUZXh0LWJhc2VkIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHRhYiBoZWFkaW5nPVwie3sgJ0NvbmZpZ3VyYXRpb25zJyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwic2hvd0JpbmFyeUJhc2VkQ29uZmlnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC0tZ3JpZCBjYXJkIGdyaWRfX2NvbC0tNC04LS1tZCBncmlkX19yb3ctLTYtNi0tbWQgbS1iLTBcIj5cbiAgICAgICAgPCEtLSBERVZJQ0UgU1VQUE9SVEVEIENPTkZJR1VSQVRJT05TIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC0tZ3JpZF9faW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNlwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkRldmljZS1zdXBwb3J0ZWQgY29uZmlndXJhdGlvbnM8L3NwYW4+XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxjOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tbGlzdFxuICAgICAgICAgICAgW2l0ZW1zXT1cInN1cHBvcnRlZENvbmZpZ3VyYXRpb25zXCJcbiAgICAgICAgICAgIFtpdGVtSWNvbl09XCInZ2VhcnMnXCJcbiAgICAgICAgICAgIChjb25maWdTZWxlY3RlZCk9XCJvbkNvbmZpZ1R5cGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9jOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tbGlzdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDT05GSUdVUkFUSU9OIFBSRVZJRVcgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLS1ncmlkX19pbm5lci1zY3JvbGwgZC1mbGV4IGQtY29sIGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIGQtZmxleCBkLWNvbCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+PHNwYW4gdHJhbnNsYXRlPlByZXZpZXc8L3NwYW4+PC9oNT5cblxuICAgICAgICAgICAgPCEtLSBFTVBUWSBTVEFURSAtLT5cblxuICAgICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFjb25maWd1cmF0aW9uVHlwZVwiXG4gICAgICAgICAgICAgIFtpY29uXT1cIidmaWxlLXRleHQnXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidObyBjb25maWd1cmF0aW9uIHNlbGVjdGVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhIGNvbmZpZ3VyYXRpb24gdG8gcHJldmlldy4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICAgICAgICAgIDwhLS0gUFJFVklFVyBBVkFJTEFCTEUgU1RBVEUgLS0+XG4gICAgICAgICAgICA8Yzh5LWRldmljZS1jb25maWd1cmF0aW9uLXByZXZpZXdcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWd1cmF0aW9uVHlwZVwiXG4gICAgICAgICAgICAgIFtkZXZpY2VdPVwiZGV2aWNlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ3VyYXRpb25UeXBlXT1cImNvbmZpZ3VyYXRpb25UeXBlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ1NuYXBzaG90XT1cImNvbmZpZ1NuYXBzaG90XCJcbiAgICAgICAgICAgICAgW2NhblNhdmVTbmFwc2hvdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW29wZXJhdGlvblRvVHJpZ2dlcl09XCInYzh5X1VwbG9hZENvbmZpZ0ZpbGUnXCJcbiAgICAgICAgICAgICAgW2FjdGlvbkJ1dHRvblRleHRdPVwiJ0dldCBzbmFwc2hvdCBmcm9tIGRldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbYWN0aW9uQnV0dG9uSWNvbl09XCInZG93bmxvYWQnXCJcbiAgICAgICAgICAgICAgW2lzTGVnYWN5XT1cImlzTGVnYWN5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZC1jb2wgZmxleC1ncm93XCJcbiAgICAgICAgICAgID48L2M4eS1kZXZpY2UtY29uZmlndXJhdGlvbi1wcmV2aWV3PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFWQUlMQUJMRSBTVVBQT1JURUQgQ09ORklHVVJBVElPTlMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLS1ncmlkX19pbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC1yLTE2XCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5BdmFpbGFibGUgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb25zPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gRU1QVFkgU1RBVEUgLS0+XG5cbiAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICAqbmdJZj1cIiFjb25maWd1cmF0aW9uVHlwZVwiXG4gICAgICAgICAgICBbaWNvbl09XCInZ2VhcnMnXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInTm8gc2VsZWN0aW9uLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3N1YnRpdGxlXT1cIlxuICAgICAgICAgICAgICAnU2VsZWN0IGEgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBkZXZpY2Utc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gbGlzdC4nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtci0xNlwiICpuZ0lmPVwiY29uZmlndXJhdGlvblR5cGVcIj5cbiAgICAgICAgICAgIDxjOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tbGlzdFxuICAgICAgICAgICAgICBbaXRlbXNdPVwicmVwb3NpdG9yeVNuYXBzaG90c1wiXG4gICAgICAgICAgICAgIFtpdGVtSWNvbl09XCInZmlsZS10ZXh0J1wiXG4gICAgICAgICAgICAgIFtlbXB0eVN0YXRlXT1cInJlcG9zaXRvcnlTbmFwc2hvdHNFbXB0eVN0YXRlXCJcbiAgICAgICAgICAgICAgW2lzRmlsdGVyRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGNvbmZpZ1NlbGVjdGVkKT1cIm9uUmVwb3NpdG9yeUNvbmZpZ1NlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgPjwvYzh5LWRldmljZS1jb25maWd1cmF0aW9uLWxpc3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ09ORklHVVJBVElPTiBQUkVWSUVXIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC0tZ3JpZF9faW5uZXItc2Nyb2xsIGQtZmxleCBkLWNvbCBmbGV4LWdyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBmbGV4LWdyb3cgZC1mbGV4IGQtY29sXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiIHRyYW5zbGF0ZT5QcmV2aWV3PC9oNT5cblxuICAgICAgICAgICAgPCEtLSBFTVBUWSBTVEFURSAtLT5cbiAgICAgICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcmVwb3NpdG9yeVNuYXBzaG90XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiJ2ZpbGUtdGV4dCdcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ05vIGNvbmZpZ3VyYXRpb24gc2VsZWN0ZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtzdWJ0aXRsZV09XCInU2VsZWN0IGEgY29uZmlndXJhdGlvbiB0byBwcmV2aWV3LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuICAgICAgICAgICAgPCEtLSBDT05GSUdVUkFUSU9OIFNFTEVDVEVEIFNUQVRFIC0tPlxuICAgICAgICAgICAgPGM4eS1kZXZpY2UtY29uZmlndXJhdGlvbi1wcmV2aWV3XG4gICAgICAgICAgICAgICpuZ0lmPVwicmVwb3NpdG9yeVNuYXBzaG90XCJcbiAgICAgICAgICAgICAgW2RldmljZV09XCJkZXZpY2VcIlxuICAgICAgICAgICAgICBbY29uZmlndXJhdGlvblR5cGVdPVwiY29uZmlndXJhdGlvblR5cGVcIlxuICAgICAgICAgICAgICBbY29uZmlnU25hcHNob3RdPVwicmVwb3NpdG9yeVNuYXBzaG90XCJcbiAgICAgICAgICAgICAgW29wZXJhdGlvblRvVHJpZ2dlcl09XCInYzh5X0Rvd25sb2FkQ29uZmlnRmlsZSdcIlxuICAgICAgICAgICAgICBbYWN0aW9uQnV0dG9uVGV4dF09XCInU2VuZCBjb25maWd1cmF0aW9uIHRvIGRldmljZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbYWN0aW9uQnV0dG9uSWNvbl09XCIndXBsb2FkJ1wiXG4gICAgICAgICAgICAgIFtpc0xlZ2FjeV09XCJpc0xlZ2FjeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGQtY29sIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICA+PC9jOHktZGV2aWNlLWNvbmZpZ3VyYXRpb24tcHJldmlldz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RhYj5cbiAgICA8dGFiIGhlYWRpbmc9XCJ7eyAnVGV4dC1iYXNlZCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwic2hvd1RleHRCYXNlZENvbmZpZ1wiPlxuICAgICAgPGM4eS10ZXh0LWJhc2VkLWNvbmZpZ3VyYXRpb24+PC9jOHktdGV4dC1iYXNlZC1jb25maWd1cmF0aW9uPlxuICAgIDwvdGFiPlxuICA8L3RhYnNldD5cbjwvZGl2PlxuIl19
@@ -11,7 +11,7 @@ MarkdownWidgetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ve
11
11
  MarkdownWidgetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MarkdownWidgetModule, providers: [
12
12
  hookComponent({
13
13
  id: 'markdown',
14
- label: gettext('Markdown Widget'),
14
+ label: gettext('Markdown widget'),
15
15
  description: gettext('Display content provided as markdown. You can either upload a file, or provide a file path.'),
16
16
  component: MarkdownWidgetViewComponent,
17
17
  configComponent: MarkdownWidgetConfigComponent,
@@ -41,7 +41,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
41
41
  providers: [
42
42
  hookComponent({
43
43
  id: 'markdown',
44
- label: gettext('Markdown Widget'),
44
+ label: gettext('Markdown widget'),
45
45
  description: gettext('Display content provided as markdown. You can either upload a file, or provide a file path.'),
46
46
  component: MarkdownWidgetViewComponent,
47
47
  configComponent: MarkdownWidgetConfigComponent,
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
65
65
  ]
66
66
  }]
67
67
  }] });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24td2lkZ2V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3dpZGdldHMvbWFya2Rvd24td2lkZ2V0L21hcmtkb3duLXdpZGdldC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7QUFpQzFHLE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQixpQkE3QmhCLDJCQUEyQixFQUFFLDZCQUE2QixhQUQvRCxVQUFVLEVBQUUsbUJBQW1CO2tIQThCOUIsb0JBQW9CLGFBNUJwQjtRQUNULGFBQWEsQ0FBQztZQUNaLEVBQUUsRUFBRSxVQUFVO1lBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUNqQyxXQUFXLEVBQUUsT0FBTyxDQUNsQiw2RkFBNkYsQ0FDOUY7WUFDRCxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLGVBQWUsRUFBRSw2QkFBNkI7WUFDOUMsWUFBWSxFQUFFLDRDQUE0QztZQUMxRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFO29CQUNSLFlBQVksRUFBRSxLQUFLO29CQUNuQixjQUFjLEVBQUU7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsT0FBTyxFQUFFLENBQUM7cUJBQ1g7b0JBQ0QsR0FBRyxFQUFFO3dCQUNILE9BQU8sRUFBRTs0QkFDUCxjQUFjLEVBQUUsSUFBSTs0QkFDcEIsZ0JBQWdCLEVBQUUsS0FBSzt5QkFDeEI7cUJBQ0Y7aUJBQ0Y7YUFDcUI7U0FDekIsQ0FBQztLQUNILFlBNUJTLFVBQVUsRUFBRSxtQkFBbUI7MkZBOEI5QixvQkFBb0I7a0JBL0JoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztvQkFDMUMsWUFBWSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsNkJBQTZCLENBQUM7b0JBQzFFLFNBQVMsRUFBRTt3QkFDVCxhQUFhLENBQUM7NEJBQ1osRUFBRSxFQUFFLFVBQVU7NEJBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQzs0QkFDakMsV0FBVyxFQUFFLE9BQU8sQ0FDbEIsNkZBQTZGLENBQzlGOzRCQUNELFNBQVMsRUFBRSwyQkFBMkI7NEJBQ3RDLGVBQWUsRUFBRSw2QkFBNkI7NEJBQzlDLFlBQVksRUFBRSw0Q0FBNEM7NEJBQzFELElBQUksRUFBRTtnQ0FDSixRQUFRLEVBQUU7b0NBQ1IsWUFBWSxFQUFFLEtBQUs7b0NBQ25CLGNBQWMsRUFBRTt3Q0FDZCxNQUFNLEVBQUUsQ0FBQzt3Q0FDVCxPQUFPLEVBQUUsQ0FBQztxQ0FDWDtvQ0FDRCxHQUFHLEVBQUU7d0NBQ0gsT0FBTyxFQUFFOzRDQUNQLGNBQWMsRUFBRSxJQUFJOzRDQUNwQixnQkFBZ0IsRUFBRSxLQUFLO3lDQUN4QjtxQ0FDRjtpQ0FDRjs2QkFDcUI7eUJBQ3pCLENBQUM7cUJBQ0g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFdpZGdldENvbmZpZyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgZ2V0dGV4dCwgaG9va0NvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vbWFya2Rvd24td2lkZ2V0LXZpZXcvbWFya2Rvd24td2lkZ2V0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi9tYXJrZG93bi13aWRnZXQtY29uZmlnL21hcmtkb3duLXdpZGdldC1jb25maWcuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtNYXJrZG93bldpZGdldFZpZXdDb21wb25lbnQsIE1hcmtkb3duV2lkZ2V0Q29uZmlnQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgaG9va0NvbXBvbmVudCh7XG4gICAgICBpZDogJ21hcmtkb3duJyxcbiAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXJrZG93biBXaWRnZXQnKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAnRGlzcGxheSBjb250ZW50IHByb3ZpZGVkIGFzIG1hcmtkb3duLiBZb3UgY2FuIGVpdGhlciB1cGxvYWQgYSBmaWxlLCBvciBwcm92aWRlIGEgZmlsZSBwYXRoLidcbiAgICAgICksXG4gICAgICBjb21wb25lbnQ6IE1hcmtkb3duV2lkZ2V0Vmlld0NvbXBvbmVudCxcbiAgICAgIGNvbmZpZ0NvbXBvbmVudDogTWFya2Rvd25XaWRnZXRDb25maWdDb21wb25lbnQsXG4gICAgICBwcmV2aWV3SW1hZ2U6ICdjOHktd2lkZ2V0LXByZXZpZXctaW1nL21hcmtkb3duLXdpZGdldC5wbmcnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgIG5vTmV3V2lkZ2V0czogZmFsc2UsXG4gICAgICAgICAgd2lkZ2V0RGVmYXVsdHM6IHtcbiAgICAgICAgICAgIF93aWR0aDogNCxcbiAgICAgICAgICAgIF9oZWlnaHQ6IDRcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5nMToge1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBub0RldmljZVRhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZTogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gYXMgQ29udGV4dFdpZGdldENvbmZpZ1xuICAgIH0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFya2Rvd25XaWRnZXRNb2R1bGUge31cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24td2lkZ2V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3dpZGdldHMvbWFya2Rvd24td2lkZ2V0L21hcmtkb3duLXdpZGdldC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7QUFpQzFHLE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQixpQkE3QmhCLDJCQUEyQixFQUFFLDZCQUE2QixhQUQvRCxVQUFVLEVBQUUsbUJBQW1CO2tIQThCOUIsb0JBQW9CLGFBNUJwQjtRQUNULGFBQWEsQ0FBQztZQUNaLEVBQUUsRUFBRSxVQUFVO1lBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUNqQyxXQUFXLEVBQUUsT0FBTyxDQUNsQiw2RkFBNkYsQ0FDOUY7WUFDRCxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLGVBQWUsRUFBRSw2QkFBNkI7WUFDOUMsWUFBWSxFQUFFLDRDQUE0QztZQUMxRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFO29CQUNSLFlBQVksRUFBRSxLQUFLO29CQUNuQixjQUFjLEVBQUU7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsT0FBTyxFQUFFLENBQUM7cUJBQ1g7b0JBQ0QsR0FBRyxFQUFFO3dCQUNILE9BQU8sRUFBRTs0QkFDUCxjQUFjLEVBQUUsSUFBSTs0QkFDcEIsZ0JBQWdCLEVBQUUsS0FBSzt5QkFDeEI7cUJBQ0Y7aUJBQ0Y7YUFDcUI7U0FDekIsQ0FBQztLQUNILFlBNUJTLFVBQVUsRUFBRSxtQkFBbUI7MkZBOEI5QixvQkFBb0I7a0JBL0JoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztvQkFDMUMsWUFBWSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsNkJBQTZCLENBQUM7b0JBQzFFLFNBQVMsRUFBRTt3QkFDVCxhQUFhLENBQUM7NEJBQ1osRUFBRSxFQUFFLFVBQVU7NEJBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQzs0QkFDakMsV0FBVyxFQUFFLE9BQU8sQ0FDbEIsNkZBQTZGLENBQzlGOzRCQUNELFNBQVMsRUFBRSwyQkFBMkI7NEJBQ3RDLGVBQWUsRUFBRSw2QkFBNkI7NEJBQzlDLFlBQVksRUFBRSw0Q0FBNEM7NEJBQzFELElBQUksRUFBRTtnQ0FDSixRQUFRLEVBQUU7b0NBQ1IsWUFBWSxFQUFFLEtBQUs7b0NBQ25CLGNBQWMsRUFBRTt3Q0FDZCxNQUFNLEVBQUUsQ0FBQzt3Q0FDVCxPQUFPLEVBQUUsQ0FBQztxQ0FDWDtvQ0FDRCxHQUFHLEVBQUU7d0NBQ0gsT0FBTyxFQUFFOzRDQUNQLGNBQWMsRUFBRSxJQUFJOzRDQUNwQixnQkFBZ0IsRUFBRSxLQUFLO3lDQUN4QjtxQ0FDRjtpQ0FDRjs2QkFDcUI7eUJBQ3pCLENBQUM7cUJBQ0g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFdpZGdldENvbmZpZyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgZ2V0dGV4dCwgaG9va0NvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vbWFya2Rvd24td2lkZ2V0LXZpZXcvbWFya2Rvd24td2lkZ2V0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IE1hcmtkb3duV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi9tYXJrZG93bi13aWRnZXQtY29uZmlnL21hcmtkb3duLXdpZGdldC1jb25maWcuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtNYXJrZG93bldpZGdldFZpZXdDb21wb25lbnQsIE1hcmtkb3duV2lkZ2V0Q29uZmlnQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgaG9va0NvbXBvbmVudCh7XG4gICAgICBpZDogJ21hcmtkb3duJyxcbiAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXJrZG93biB3aWRnZXQnKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAnRGlzcGxheSBjb250ZW50IHByb3ZpZGVkIGFzIG1hcmtkb3duLiBZb3UgY2FuIGVpdGhlciB1cGxvYWQgYSBmaWxlLCBvciBwcm92aWRlIGEgZmlsZSBwYXRoLidcbiAgICAgICksXG4gICAgICBjb21wb25lbnQ6IE1hcmtkb3duV2lkZ2V0Vmlld0NvbXBvbmVudCxcbiAgICAgIGNvbmZpZ0NvbXBvbmVudDogTWFya2Rvd25XaWRnZXRDb25maWdDb21wb25lbnQsXG4gICAgICBwcmV2aWV3SW1hZ2U6ICdjOHktd2lkZ2V0LXByZXZpZXctaW1nL21hcmtkb3duLXdpZGdldC5wbmcnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgIG5vTmV3V2lkZ2V0czogZmFsc2UsXG4gICAgICAgICAgd2lkZ2V0RGVmYXVsdHM6IHtcbiAgICAgICAgICAgIF93aWR0aDogNCxcbiAgICAgICAgICAgIF9oZWlnaHQ6IDRcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5nMToge1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBub0RldmljZVRhcmdldDogdHJ1ZSxcbiAgICAgICAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZTogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gYXMgQ29udGV4dFdpZGdldENvbmZpZ1xuICAgIH0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFya2Rvd25XaWRnZXRNb2R1bGUge31cbiJdfQ==
@@ -566,10 +566,10 @@ class DeviceConfigurationComponent {
566
566
  }
567
567
  }
568
568
  DeviceConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceConfigurationComponent, deps: [{ token: i1.ActivatedRoute }, { token: DeviceConfigurationService }, { token: i5.Realtime }, { token: i3.RepositoryService }], target: i0.ɵɵFactoryTarget.Component });
569
- DeviceConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceConfigurationComponent, selector: "c8y-device-configuration", viewQueries: [{ propertyName: "textBasedConfigurationComponent", first: true, predicate: TextBasedConfigurationComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n\n <div class=\"c8y-empty-state text-left\" *ngIf=\"!repositorySnapshot\">\n <h1 aria-label=\"{{ 'Empty state' | translate }}\" [c8yIcon]=\"'file-text'\"></h1>\n <p>\n <strong translate>No configuration selected.</strong>\n <br />\n <small *ngIf=\"!configurationType; else noSnapshot\" translate>\n Select a configuration to preview\n </small>\n <ng-template #noSnapshot>\n <small translate>Select the configuration you want to preview</small>\n </ng-template>\n </p>\n </div>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.TabsetAriaDirective, selector: "tabset" }, { kind: "directive", type: i7.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i7.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "component", type: DeviceConfigurationListComponent, selector: "c8y-device-configuration-list", inputs: ["items", "itemIcon", "emptyState", "isFilterEnabled"], outputs: ["configSelected"] }, { kind: "component", type: ConfigurationPreviewComponent, selector: "c8y-device-configuration-preview", inputs: ["device", "configurationType", "configSnapshot", "canSaveSnapshot", "actionButtonText", "actionButtonIcon", "isLegacy", "operationToTrigger"] }, { kind: "component", type: TextBasedConfigurationComponent, selector: "c8y-text-based-configuration" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
569
+ DeviceConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceConfigurationComponent, selector: "c8y-device-configuration", viewQueries: [{ propertyName: "textBasedConfigurationComponent", first: true, predicate: TextBasedConfigurationComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n <c8y-ui-empty-state\n *ngIf=\"!repositorySnapshot\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.TabsetAriaDirective, selector: "tabset" }, { kind: "directive", type: i7.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i7.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "component", type: DeviceConfigurationListComponent, selector: "c8y-device-configuration-list", inputs: ["items", "itemIcon", "emptyState", "isFilterEnabled"], outputs: ["configSelected"] }, { kind: "component", type: ConfigurationPreviewComponent, selector: "c8y-device-configuration-preview", inputs: ["device", "configurationType", "configSnapshot", "canSaveSnapshot", "actionButtonText", "actionButtonIcon", "isLegacy", "operationToTrigger"] }, { kind: "component", type: TextBasedConfigurationComponent, selector: "c8y-text-based-configuration" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
570
570
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceConfigurationComponent, decorators: [{
571
571
  type: Component,
572
- args: [{ selector: 'c8y-device-configuration', template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n\n <div class=\"c8y-empty-state text-left\" *ngIf=\"!repositorySnapshot\">\n <h1 aria-label=\"{{ 'Empty state' | translate }}\" [c8yIcon]=\"'file-text'\"></h1>\n <p>\n <strong translate>No configuration selected.</strong>\n <br />\n <small *ngIf=\"!configurationType; else noSnapshot\" translate>\n Select a configuration to preview\n </small>\n <ng-template #noSnapshot>\n <small translate>Select the configuration you want to preview</small>\n </ng-template>\n </p>\n </div>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n" }]
572
+ args: [{ selector: 'c8y-device-configuration', template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"updateSnapshots()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage card-has-tabs\">\n <tabset>\n <div class=\"card-header separator\" *ngIf=\"showBinaryBasedConfig && !showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Configurations' | translate }}</div>\n </div>\n <div class=\"card-header separator\" *ngIf=\"!showBinaryBasedConfig && showTextBasedConfig\">\n <div class=\"card-title\">{{ 'Text-based configuration' | translate }}</div>\n </div>\n <tab heading=\"{{ 'Configurations' | translate }}\" *ngIf=\"showBinaryBasedConfig\">\n <div class=\"card--grid card grid__col--4-8--md grid__row--6-6--md m-b-0\">\n <!-- DEVICE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\">\n <span translate>Device-supported configurations</span>\n </h5>\n </div>\n <c8y-device-configuration-list\n [items]=\"supportedConfigurations\"\n [itemIcon]=\"'gears'\"\n (configSelected)=\"onConfigTypeSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block d-flex d-col flex-grow\">\n <h5 class=\"legend form-block\"><span translate>Preview</span></h5>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- PREVIEW AVAILABLE STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"configurationType\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"configSnapshot\"\n [canSaveSnapshot]=\"true\"\n [operationToTrigger]=\"'c8y_UploadConfigFile'\"\n [actionButtonText]=\"'Get snapshot from device' | translate\"\n [actionButtonIcon]=\"'download'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n\n <!-- AVAILABLE SUPPORTED CONFIGURATIONS -->\n <div class=\"card--grid__inner-scroll bg-level-1\">\n <div class=\"p-l-16 p-r-16\">\n <h5 class=\"legend form-block\" translate>Available supported configurations</h5>\n </div>\n\n <!-- EMPTY STATE -->\n\n <c8y-ui-empty-state\n *ngIf=\"!configurationType\"\n [icon]=\"'gears'\"\n [title]=\"'No selection.' | translate\"\n [subtitle]=\"\n 'Select a configuration from the device-supported configuration list.' | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <div class=\"p-r-16\" *ngIf=\"configurationType\">\n <c8y-device-configuration-list\n [items]=\"repositorySnapshots\"\n [itemIcon]=\"'file-text'\"\n [emptyState]=\"repositorySnapshotsEmptyState\"\n [isFilterEnabled]=\"true\"\n (configSelected)=\"onRepositoryConfigSelected($event)\"\n ></c8y-device-configuration-list>\n </div>\n </div>\n\n <!-- CONFIGURATION PREVIEW -->\n <div class=\"card--grid__inner-scroll d-flex d-col flex-grow\">\n <div class=\"card-block flex-grow d-flex d-col\">\n <h5 class=\"legend form-block\" translate>Preview</h5>\n\n <!-- EMPTY STATE -->\n <c8y-ui-empty-state\n *ngIf=\"!repositorySnapshot\"\n [icon]=\"'file-text'\"\n [title]=\"'No configuration selected.' | translate\"\n [subtitle]=\"'Select a configuration to preview.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <!-- CONFIGURATION SELECTED STATE -->\n <c8y-device-configuration-preview\n *ngIf=\"repositorySnapshot\"\n [device]=\"device\"\n [configurationType]=\"configurationType\"\n [configSnapshot]=\"repositorySnapshot\"\n [operationToTrigger]=\"'c8y_DownloadConfigFile'\"\n [actionButtonText]=\"'Send configuration to device' | translate\"\n [actionButtonIcon]=\"'upload'\"\n [isLegacy]=\"isLegacy\"\n class=\"d-flex d-col flex-grow\"\n ></c8y-device-configuration-preview>\n </div>\n </div>\n </div>\n </tab>\n <tab heading=\"{{ 'Text-based configuration' | translate }}\" *ngIf=\"showTextBasedConfig\">\n <c8y-text-based-configuration></c8y-text-based-configuration>\n </tab>\n </tabset>\n</div>\n" }]
573
573
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: DeviceConfigurationService }, { type: i5.Realtime }, { type: i3.RepositoryService }]; }, propDecorators: { textBasedConfigurationComponent: [{
574
574
  type: ViewChild,
575
575
  args: [TextBasedConfigurationComponent]