@c8y/ngx-components 1017.0.8 → 1017.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/core/dynamic-component/dynamic-component.component.d.ts +1 -0
  2. package/core/dynamic-component/dynamic-component.model.d.ts +45 -9
  3. package/esm2020/actility-device-registration/actility-device-registration.component.mjs +3 -3
  4. package/esm2020/context-dashboard/context-dashboard.component.mjs +3 -3
  5. package/esm2020/context-dashboard/dashboard-detail.component.mjs +3 -3
  6. package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +43 -51
  7. package/esm2020/context-dashboard/widget-preview.component.mjs +3 -3
  8. package/esm2020/core/authentication/sms-challenge.component.mjs +3 -3
  9. package/esm2020/core/authentication/totp-challenge.component.mjs +3 -3
  10. package/esm2020/core/breadcrumb/breadcrumb-outlet.component.mjs +3 -3
  11. package/esm2020/core/dashboard/dashboard-child.component.mjs +3 -3
  12. package/esm2020/core/dashboard/widget-time-context.component.mjs +3 -3
  13. package/esm2020/core/data-grid/data-grid.component.mjs +3 -3
  14. package/esm2020/core/date-picker/date-picker.component.mjs +3 -3
  15. package/esm2020/core/drop-area/drop-area.component.mjs +3 -3
  16. package/esm2020/core/dynamic-component/dynamic-component.component.mjs +21 -5
  17. package/esm2020/core/dynamic-component/dynamic-component.model.mjs +7 -1
  18. package/esm2020/core/file-picker/file-picker.component.mjs +3 -3
  19. package/esm2020/core/header/application/app-switcher.component.mjs +3 -3
  20. package/esm2020/core/login/credentials.component.mjs +3 -3
  21. package/esm2020/core/login/login.component.mjs +3 -3
  22. package/esm2020/core/modal/modal.component.mjs +3 -3
  23. package/esm2020/core/select/typeahead.component.mjs +3 -3
  24. package/esm2020/device-grid/columns/alarms.cell-renderer.component.mjs +3 -3
  25. package/esm2020/loriot-device-registration/loriot-device-registration-button.component.mjs +3 -1
  26. package/esm2020/loriot-device-registration/loriot-device-registration.component.mjs +3 -3
  27. package/esm2020/operations/bulk-operations-list/bulk-operations-list.component.mjs +3 -3
  28. package/esm2020/operations/operations-list/operations-list-item.component.mjs +3 -3
  29. package/esm2020/operations/operations-list/operations-list.component.mjs +3 -3
  30. package/esm2020/register-device/bulk/bulk-device-registration-modal.component.mjs +3 -3
  31. package/esm2020/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.mjs +3 -3
  32. package/esm2020/register-device/extensible/single/extensible-device-registration-modal.component.mjs +3 -3
  33. package/esm2020/register-device/general/general-device-registration.component.mjs +3 -3
  34. package/esm2020/repository/software/device-tab/device-software-list.component.mjs +3 -3
  35. package/esm2020/repository/software/device-tab/installed-software.component.mjs +3 -3
  36. package/esm2020/repository/software/list/add-software-modal.component.mjs +3 -3
  37. package/esm2020/sigfox-device-registration/sigfox-device-registration.component.mjs +3 -3
  38. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs +2 -2
  39. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  40. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +48 -56
  41. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  42. package/fesm2015/c8y-ngx-components-device-grid.mjs +2 -2
  43. package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
  44. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  45. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  46. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  47. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  48. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs +4 -4
  49. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  50. package/fesm2015/c8y-ngx-components-register-device.mjs +8 -8
  51. package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
  52. package/fesm2015/c8y-ngx-components-repository-software.mjs +6 -6
  53. package/fesm2015/c8y-ngx-components-repository-software.mjs.map +1 -1
  54. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  55. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  56. package/fesm2015/c8y-ngx-components.mjs +72 -46
  57. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  58. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs +2 -2
  59. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  60. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +48 -56
  61. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  62. package/fesm2020/c8y-ngx-components-device-grid.mjs +2 -2
  63. package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
  64. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  65. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  66. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  67. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  68. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs +4 -4
  69. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  70. package/fesm2020/c8y-ngx-components-register-device.mjs +8 -8
  71. package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
  72. package/fesm2020/c8y-ngx-components-repository-software.mjs +6 -6
  73. package/fesm2020/c8y-ngx-components-repository-software.mjs.map +1 -1
  74. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  75. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  76. package/fesm2020/c8y-ngx-components.mjs +54 -32
  77. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  78. package/locales/locales.pot +6 -9
  79. package/package.json +2 -2
@@ -154,7 +154,7 @@ TypeaheadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
154
154
  useExisting: forwardRef(() => TypeaheadComponent),
155
155
  multi: true
156
156
  }
157
- ], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div class=\"input-group input-group-dropdown\">\n <input\n #searchControl\n #searchControlModel=\"ngModel\"\n type=\"text\"\n class=\"form-control text-truncate\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event });\"\n dropdownToggle\n data-cy=\"typeahead-button\"\n >\n <i [c8yIcon]=\"icon\" class=\"text-primary\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n *dropdownMenu\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] });
157
+ ], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div role=\"button\" class=\"input-group input-group-dropdown\">\n <input\n #searchControl\n #searchControlModel=\"ngModel\"\n type=\"text\"\n class=\"form-control text-truncate\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event });\"\n dropdownToggle\n data-cy=\"typeahead-button\"\n >\n <i [c8yIcon]=\"icon\" class=\"text-primary\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n role=\"menu\"\n *dropdownMenu\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] });
158
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TypeaheadComponent, decorators: [{
159
159
  type: Component,
160
160
  args: [{ selector: 'c8y-typeahead', providers: [
@@ -168,7 +168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
168
168
  useExisting: forwardRef(() => TypeaheadComponent),
169
169
  multi: true
170
170
  }
171
- ], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div class=\"input-group input-group-dropdown\">\n <input\n #searchControl\n #searchControlModel=\"ngModel\"\n type=\"text\"\n class=\"form-control text-truncate\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event });\"\n dropdownToggle\n data-cy=\"typeahead-button\"\n >\n <i [c8yIcon]=\"icon\" class=\"text-primary\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n *dropdownMenu\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
171
+ ], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div role=\"button\" class=\"input-group input-group-dropdown\">\n <input\n #searchControl\n #searchControlModel=\"ngModel\"\n type=\"text\"\n class=\"form-control text-truncate\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event });\"\n dropdownToggle\n data-cy=\"typeahead-button\"\n >\n <i [c8yIcon]=\"icon\" class=\"text-primary\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n role=\"menu\"\n *dropdownMenu\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
172
172
  }], propDecorators: { searchControl: [{
173
173
  type: ViewChild,
174
174
  args: ['searchControl', { static: false }]
@@ -210,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
210
210
  }], onIconClick: [{
211
211
  type: Output
212
212
  }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VsZWN0L3R5cGVhaGVhZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlbGVjdC90eXBlYWhlYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxhQUFhLEVBSWIsaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7QUFrQmhELE1BQU0sT0FBTyxrQkFBa0I7SUFoQi9CO1FBdUJFLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFNMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFNakMsb0JBQWUsR0FBVyxNQUFNLENBQUM7UUFHakMsU0FBSSxHQUFXLFlBQVksQ0FBQztRQUc1QixTQUFJLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUdwQyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRzFCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFHekIsY0FBUyxHQUFnQixFQUFFLENBQUM7UUFHNUIsYUFBUSxHQUFnQjtZQUN0QixFQUFFLEVBQUUsSUFBSTtTQUNULENBQUM7UUFHRixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd0QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO1FBTXRELGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7S0FrSW5DO0lBaElDLFVBQVUsQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUM7YUFDdkUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN2QyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNyQixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFDL0Isb0JBQW9CLEVBQUUsQ0FDdkI7YUFDQSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRztnQkFDZCxFQUFFLEVBQUUsSUFBSTthQUNULENBQUM7WUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV0RCxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQUs7UUFDbEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUNFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDNUY7WUFDQSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDbEUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ2QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDNUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDekM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxRQUFRLEdBQUcsT0FBTyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUNkLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUM3QjtnQkFDRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzthQUMzRDtZQUNELE9BQU87U0FDUjthQUFNLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN6RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxPQUFPO1NBQ1I7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBc0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFDRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFDdEIsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxJQUFJO1lBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUNqQztZQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDOUI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxLQUEwQixFQUFFLEtBQVUsRUFBRSxRQUFnQjtRQUMzRixJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsVUFBVSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3JFLE9BQU87YUFDUjtZQUNELEtBQUssQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUN2QztJQUNILENBQUM7OytHQTNMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixtWkFibEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1NBQ2xEO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwrQ0FNZ0IsaUJBQWlCLCtVQzlDcEMsMjlEQW9FQTsyRkQxQmEsa0JBQWtCO2tCQWhCOUIsU0FBUzsrQkFDRSxlQUFlLGFBRWQ7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7eUJBQ2xEO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBRzhDLGFBQWE7c0JBQTNELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTyxrQkFBa0I7c0JBQXJFLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNSLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSixJQUFJO3NCQUF2QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFHbEMsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFNTixRQUFRO3NCQURQLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBRdWVyeUxpc3QsXG4gIGZvcndhcmRSZWYsXG4gIEFmdGVyVmlld0luaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0b3IsXG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElJZGVudGlmaWVkIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQnNEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9saXN0LWdyb3VwL2xpc3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmluZEluZGV4LCBnZXQsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10eXBlYWhlYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHlwZWFoZWFkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR5cGVhaGVhZENvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUeXBlYWhlYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoQ29udHJvbDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQ29udHJvbE1vZGVsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaENvbnRyb2xNb2RlbDtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgZHJvcGRvd246IEJzRHJvcGRvd25EaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdEl0ZW1Db21wb25lbnQpIGxpc3Q6IFF1ZXJ5TGlzdDxMaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgQElucHV0KClcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBtYXhsZW5ndGg6IHN0cmluZyB8IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93RnJlZUVudHJpZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGlzcGxheVByb3BlcnR5OiBzdHJpbmcgPSAnbmFtZSc7XG5cbiAgQElucHV0KClcbiAgaWNvbjogc3RyaW5nID0gJ2NhcmV0LWRvd24nO1xuXG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZyA9IHRoaXMuZGlzcGxheVByb3BlcnR5O1xuXG4gIEBJbnB1dCgpXG4gIGF1dG9DbG9zZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaGlkZU5ldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRhaW5lcjogJycgfCAnYm9keScgPSAnJztcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZDogSUlkZW50aWZpZWQgPSB7XG4gICAgaWQ6IG51bGxcbiAgfTtcblxuICBAT3V0cHV0KClcbiAgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JY29uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfT4oKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAobmFtZSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX1VQID0gMzg7XG4gIHByaXZhdGUgcmVhZG9ubHkgS0VZQ09ERV9ET1dOID0gNDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgS0VZQ09ERV9UQUIgPSA5O1xuICBwcml2YXRlIHJlYWRvbmx5IEtFWUNPREVfRU5URVIgPSAxMztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9IDI3O1xuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuc2VhcmNoQ29udHJvbCkge1xuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBnZXQodmFsdWUsIHRoaXMuZGlzcGxheVByb3BlcnR5LCAnJyk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGRvQmx1cigpIHtcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheVByb3BlcnR5KCkge1xuICAgIHJldHVybiBnZXQodGhpcy5zZWxlY3RlZCwgdGhpcy5kaXNwbGF5UHJvcGVydHksICcnKTtcbiAgfVxuXG4gIG9uU2hvd24oKSB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGlucHV0IGZpZWxkIC0gY2xlYXIgdmFsdWUgYW5kIGNsZWFuIGZpZWxkIHRvIGJlIHByaXN0aW5lIGFuZCB1bnRvdWNoZWQuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2xNb2RlbC5yZXNldCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLnNlYXJjaENvbnRyb2wubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZTogYW55KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkKGUpKSxcbiAgICAgICAgZmlsdGVyKChlOiBhbnkpID0+IGUpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgbWFwKChlOiBhbnkpID0+IGUudGFyZ2V0LnZhbHVlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB7XG4gICAgICAgICAgaWQ6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgc2V0KHRoaXMuc2VsZWN0ZWQsIHRoaXMuZGlzcGxheVByb3BlcnR5LCB2YWx1ZSB8fCAnJyk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVLZXlib2FyZChldmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGlmIChcbiAgICAgIFt0aGlzLktFWUNPREVfRU5URVIsIHRoaXMuS0VZQ09ERV9ET1dOLCB0aGlzLktFWUNPREVfVEFCLCB0aGlzLktFWUNPREVfVVBdLmluY2x1ZGVzKGtleUNvZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCBpdGVtcyA9IHRoaXMubGlzdC50b0FycmF5KCk7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbmRJbmRleChpdGVtcywgaXRlbSA9PiBpdGVtLmFjdGl2ZSk7XG4gICAgICBpZiAoa2V5Q29kZSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSIHx8IGtleUNvZGUgPT09IHRoaXMuS0VZQ09ERV9UQUIpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGl0ZW1zW2luZGV4XS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5zaG93KCk7XG4gICAgICAgIGNvbnN0IHVwT3JEb3duID0ga2V5Q29kZSA9PT0gdGhpcy5LRVlDT0RFX0RPV04gPyAxIDogLTE7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgaXRlbXNbaW5kZXhdLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0TmV4dEl0ZW1PbktleWJvYXJkTW92ZShpdGVtcywgaW5kZXgsIHVwT3JEb3duKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IHRoaXMuS0VZQ09ERV9FU0MgJiYgdGhpcy5hdXRvQ2xvc2UpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHJvcGRvd24uc2hvdygpO1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnQ7XG4gIH1cblxuICB2YWxpZGF0ZShfY3RybDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIWdldChfY3RybC52YWx1ZSwgdGhpcy5kaXNwbGF5UHJvcGVydHksICcnKSkge1xuICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHRydWUgfTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5hbGxvd0ZyZWVFbnRyaWVzICYmXG4gICAgICB0aGlzLnNlbGVjdGVkICYmXG4gICAgICB0aGlzLnNlbGVjdGVkLmlkID09PSBudWxsICYmXG4gICAgICBfY3RybC52YWx1ZVt0aGlzLmRpc3BsYXlQcm9wZXJ0eV1cbiAgICApIHtcbiAgICAgIHJldHVybiB7IG5vdEV4aXN0aW5nOiB0cnVlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdE5leHRJdGVtT25LZXlib2FyZE1vdmUoaXRlbXM6IExpc3RJdGVtQ29tcG9uZW50W10sIGluZGV4OiBhbnksIHVwT3JEb3duOiBudW1iZXIpIHtcbiAgICBpZiAoaXRlbXNbaW5kZXggKyB1cE9yRG93bl0pIHtcbiAgICAgIGlmICghaXRlbXNbaW5kZXggKyB1cE9yRG93bl0uc2VsZWN0YWJsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdE5leHRJdGVtT25LZXlib2FyZE1vdmUoaXRlbXMsIGluZGV4ICsgdXBPckRvd24sIHVwT3JEb3duKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaXRlbXNbaW5kZXggKyB1cE9yRG93bl0uYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjOHktc2VhcmNoLWRyb3Bkb3duIGRyb3Bkb3duIGZpdC13XCJcbiAgZHJvcGRvd25cbiAgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIlxuICBwbGFjZW1lbnQ9XCJib3R0b20gbGVmdFwiXG4gICNkcm9wZG93bj1cImJzLWRyb3Bkb3duXCJcbiAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcbiAgKG9uU2hvd24pPVwib25TaG93bigpXCJcbiAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtZHJvcGRvd25cIj5cbiAgICA8aW5wdXRcbiAgICAgICNzZWFyY2hDb250cm9sXG4gICAgICAjc2VhcmNoQ29udHJvbE1vZGVsPVwibmdNb2RlbFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3Atci04MCc6XG4gICAgICAgICAgIWhpZGVOZXcgJiZcbiAgICAgICAgICAoc2VsZWN0ZWRcbiAgICAgICAgICAgID8gc2VsZWN0ZWQuaWQgPT09IG51bGwgJiYgZ2V0RGlzcGxheVByb3BlcnR5KCk/Lmxlbmd0aCA+IDAgJiYgYWxsb3dGcmVlRW50cmllc1xuICAgICAgICAgICAgOiBmYWxzZSksXG4gICAgICAgICdwLXItNDAnOiBoaWRlTmV3IHx8IGdldERpc3BsYXlQcm9wZXJ0eSgpPy5sZW5ndGggPT09IDBcbiAgICAgIH1cIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkID8gZ2V0RGlzcGxheVByb3BlcnR5KCkgOiAnJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgKGJsdXIpPVwiZG9CbHVyKClcIlxuICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIC8+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mbyBwLWFic29sdXRlXCJcbiAgICAgIHN0eWxlPVwidG9wOiAxMHB4OyByaWdodDogNDBweDsgei1pbmRleDogMTBcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgIWhpZGVOZXcgJiZcbiAgICAgICAgKHNlbGVjdGVkXG4gICAgICAgICAgPyBzZWxlY3RlZC5pZCA9PT0gbnVsbCAmJiBnZXREaXNwbGF5UHJvcGVydHkoKT8ubGVuZ3RoID4gMCAmJiBhbGxvd0ZyZWVFbnRyaWVzXG4gICAgICAgICAgOiBmYWxzZSlcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgJ05ldycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnU2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib25JY29uQ2xpY2suZW1pdCh7IGljb24sICRldmVudCB9KTtcIlxuICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICBkYXRhLWN5PVwidHlwZWFoZWFkLWJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxpIFtjOHlJY29uXT1cImljb25cIiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGM4eS1saXN0LWdyb3VwXG4gICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtLW1vZGFsXCJcbiAgICAqZHJvcGRvd25NZW51XG4gICAgW3N0eWxlLndpZHRoXT1cImNvbnRhaW5lciA9PT0gJ2JvZHknID8gc2VhcmNoQ29udHJvbC5jbGllbnRXaWR0aCArICdweCcgOiB1bmRlZmluZWRcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2LCBjOHktbGksIGM4eS1saXN0LWl0ZW0sIGJ1dHRvbiwgYVwiPjwvbmctY29udGVudD5cbiAgPC9jOHktbGlzdC1ncm91cD5cbjwvZGl2PlxuIl19
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2VsZWN0L3R5cGVhaGVhZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3NlbGVjdC90eXBlYWhlYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxhQUFhLEVBSWIsaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7QUFrQmhELE1BQU0sT0FBTyxrQkFBa0I7SUFoQi9CO1FBdUJFLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFNMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFNakMsb0JBQWUsR0FBVyxNQUFNLENBQUM7UUFHakMsU0FBSSxHQUFXLFlBQVksQ0FBQztRQUc1QixTQUFJLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUdwQyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRzFCLFlBQU8sR0FBWSxLQUFLLENBQUM7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QUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSixJQUFJO3NCQUF2QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFHbEMsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFNTixRQUFRO3NCQURQLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBRdWVyeUxpc3QsXG4gIGZvcndhcmRSZWYsXG4gIEFmdGVyVmlld0luaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0b3IsXG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElJZGVudGlmaWVkIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQnNEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9saXN0LWdyb3VwL2xpc3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmluZEluZGV4LCBnZXQsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10eXBlYWhlYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHlwZWFoZWFkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR5cGVhaGVhZENvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUeXBlYWhlYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoQ29udHJvbDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQ29udHJvbE1vZGVsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaENvbnRyb2xNb2RlbDtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgZHJvcGRvd246IEJzRHJvcGRvd25EaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdEl0ZW1Db21wb25lbnQpIGxpc3Q6IFF1ZXJ5TGlzdDxMaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgQElucHV0KClcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBtYXhsZW5ndGg6IHN0cmluZyB8IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93RnJlZUVudHJpZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGlzcGxheVByb3BlcnR5OiBzdHJpbmcgPSAnbmFtZSc7XG5cbiAgQElucHV0KClcbiAgaWNvbjogc3RyaW5nID0gJ2NhcmV0LWRvd24nO1xuXG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZyA9IHRoaXMuZGlzcGxheVByb3BlcnR5O1xuXG4gIEBJbnB1dCgpXG4gIGF1dG9DbG9zZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaGlkZU5ldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRhaW5lcjogJycgfCAnYm9keScgPSAnJztcblxuICBASW5wdXQoKVxuICBzZWxlY3RlZDogSUlkZW50aWZpZWQgPSB7XG4gICAgaWQ6IG51bGxcbiAgfTtcblxuICBAT3V0cHV0KClcbiAgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JY29uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWNvbjogc3RyaW5nOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfT4oKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAobmFtZSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX1VQID0gMzg7XG4gIHByaXZhdGUgcmVhZG9ubHkgS0VZQ09ERV9ET1dOID0gNDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgS0VZQ09ERV9UQUIgPSA5O1xuICBwcml2YXRlIHJlYWRvbmx5IEtFWUNPREVfRU5URVIgPSAxMztcbiAgcHJpdmF0ZSByZWFkb25seSBLRVlDT0RFX0VTQyA9IDI3O1xuXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuc2VhcmNoQ29udHJvbCkge1xuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBnZXQodmFsdWUsIHRoaXMuZGlzcGxheVByb3BlcnR5LCAnJyk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGRvQmx1cigpIHtcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheVByb3BlcnR5KCkge1xuICAgIHJldHVybiBnZXQodGhpcy5zZWxlY3RlZCwgdGhpcy5kaXNwbGF5UHJvcGVydHksICcnKTtcbiAgfVxuXG4gIG9uU2hvd24oKSB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGlucHV0IGZpZWxkIC0gY2xlYXIgdmFsdWUgYW5kIGNsZWFuIGZpZWxkIHRvIGJlIHByaXN0aW5lIGFuZCB1bnRvdWNoZWQuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2xNb2RlbC5yZXNldCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLnNlYXJjaENvbnRyb2wubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZTogYW55KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkKGUpKSxcbiAgICAgICAgZmlsdGVyKChlOiBhbnkpID0+IGUpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgbWFwKChlOiBhbnkpID0+IGUudGFyZ2V0LnZhbHVlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB7XG4gICAgICAgICAgaWQ6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgc2V0KHRoaXMuc2VsZWN0ZWQsIHRoaXMuZGlzcGxheVByb3BlcnR5LCB2YWx1ZSB8fCAnJyk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVLZXlib2FyZChldmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGlmIChcbiAgICAgIFt0aGlzLktFWUNPREVfRU5URVIsIHRoaXMuS0VZQ09ERV9ET1dOLCB0aGlzLktFWUNPREVfVEFCLCB0aGlzLktFWUNPREVfVVBdLmluY2x1ZGVzKGtleUNvZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCBpdGVtcyA9IHRoaXMubGlzdC50b0FycmF5KCk7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbmRJbmRleChpdGVtcywgaXRlbSA9PiBpdGVtLmFjdGl2ZSk7XG4gICAgICBpZiAoa2V5Q29kZSA9PT0gdGhpcy5LRVlDT0RFX0VOVEVSIHx8IGtleUNvZGUgPT09IHRoaXMuS0VZQ09ERV9UQUIpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGl0ZW1zW2luZGV4XS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5zaG93KCk7XG4gICAgICAgIGNvbnN0IHVwT3JEb3duID0ga2V5Q29kZSA9PT0gdGhpcy5LRVlDT0RFX0RPV04gPyAxIDogLTE7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgaXRlbXNbaW5kZXhdLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0TmV4dEl0ZW1PbktleWJvYXJkTW92ZShpdGVtcywgaW5kZXgsIHVwT3JEb3duKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IHRoaXMuS0VZQ09ERV9FU0MgJiYgdGhpcy5hdXRvQ2xvc2UpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5kcm9wZG93bi5oaWRlKCk7XG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHJvcGRvd24uc2hvdygpO1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnQ7XG4gIH1cblxuICB2YWxpZGF0ZShfY3RybDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIWdldChfY3RybC52YWx1ZSwgdGhpcy5kaXNwbGF5UHJvcGVydHksICcnKSkge1xuICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHRydWUgfTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5hbGxvd0ZyZWVFbnRyaWVzICYmXG4gICAgICB0aGlzLnNlbGVjdGVkICYmXG4gICAgICB0aGlzLnNlbGVjdGVkLmlkID09PSBudWxsICYmXG4gICAgICBfY3RybC52YWx1ZVt0aGlzLmRpc3BsYXlQcm9wZXJ0eV1cbiAgICApIHtcbiAgICAgIHJldHVybiB7IG5vdEV4aXN0aW5nOiB0cnVlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdE5leHRJdGVtT25LZXlib2FyZE1vdmUoaXRlbXM6IExpc3RJdGVtQ29tcG9uZW50W10sIGluZGV4OiBhbnksIHVwT3JEb3duOiBudW1iZXIpIHtcbiAgICBpZiAoaXRlbXNbaW5kZXggKyB1cE9yRG93bl0pIHtcbiAgICAgIGlmICghaXRlbXNbaW5kZXggKyB1cE9yRG93bl0uc2VsZWN0YWJsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdE5leHRJdGVtT25LZXlib2FyZE1vdmUoaXRlbXMsIGluZGV4ICsgdXBPckRvd24sIHVwT3JEb3duKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaXRlbXNbaW5kZXggKyB1cE9yRG93bl0uYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjOHktc2VhcmNoLWRyb3Bkb3duIGRyb3Bkb3duIGZpdC13XCJcbiAgZHJvcGRvd25cbiAgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIlxuICBwbGFjZW1lbnQ9XCJib3R0b20gbGVmdFwiXG4gICNkcm9wZG93bj1cImJzLWRyb3Bkb3duXCJcbiAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcbiAgKG9uU2hvd24pPVwib25TaG93bigpXCJcbiAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuPlxuICA8ZGl2IHJvbGU9XCJidXR0b25cIiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWRyb3Bkb3duXCI+XG4gICAgPGlucHV0XG4gICAgICAjc2VhcmNoQ29udHJvbFxuICAgICAgI3NlYXJjaENvbnRyb2xNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC10cnVuY2F0ZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwLXItODAnOlxuICAgICAgICAgICFoaWRlTmV3ICYmXG4gICAgICAgICAgKHNlbGVjdGVkXG4gICAgICAgICAgICA/IHNlbGVjdGVkLmlkID09PSBudWxsICYmIGdldERpc3BsYXlQcm9wZXJ0eSgpPy5sZW5ndGggPiAwICYmIGFsbG93RnJlZUVudHJpZXNcbiAgICAgICAgICAgIDogZmFsc2UpLFxuICAgICAgICAncC1yLTQwJzogaGlkZU5ldyB8fCBnZXREaXNwbGF5UHJvcGVydHkoKT8ubGVuZ3RoID09PSAwXG4gICAgICB9XCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZCA/IGdldERpc3BsYXlQcm9wZXJ0eSgpIDogJydcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCJcbiAgICAgIChibHVyKT1cImRvQmx1cigpXCJcbiAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAvPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm8gcC1hYnNvbHV0ZVwiXG4gICAgICBzdHlsZT1cInRvcDogMTBweDsgcmlnaHQ6IDQwcHg7IHotaW5kZXg6IDEwXCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgICFoaWRlTmV3ICYmXG4gICAgICAgIChzZWxlY3RlZFxuICAgICAgICAgID8gc2VsZWN0ZWQuaWQgPT09IG51bGwgJiYgZ2V0RGlzcGxheVByb3BlcnR5KCk/Lmxlbmd0aCA+IDAgJiYgYWxsb3dGcmVlRW50cmllc1xuICAgICAgICAgIDogZmFsc2UpXG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7ICdOZXcnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdFwiXG4gICAgICAgIHRpdGxlPVwie3sgJ1NlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrLmVtaXQoeyBpY29uLCAkZXZlbnQgfSk7XCJcbiAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgICAgZGF0YS1jeT1cInR5cGVhaGVhZC1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8aSBbYzh5SWNvbl09XCJpY29uXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxjOHktbGlzdC1ncm91cFxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LS1tb2RhbFwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgICpkcm9wZG93bk1lbnVcbiAgICBbc3R5bGUud2lkdGhdPVwiY29udGFpbmVyID09PSAnYm9keScgPyBzZWFyY2hDb250cm9sLmNsaWVudFdpZHRoICsgJ3B4JyA6IHVuZGVmaW5lZFwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkaXYsIGM4eS1saSwgYzh5LWxpc3QtaXRlbSwgYnV0dG9uLCBhXCI+PC9uZy1jb250ZW50PlxuICA8L2M4eS1saXN0LWdyb3VwPlxuPC9kaXY+XG4iXX0=
@@ -13,9 +13,9 @@ export class AlarmsCellRendererComponent {
13
13
  }
14
14
  }
15
15
  AlarmsCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AlarmsCellRendererComponent, deps: [{ token: i1.CellRendererContext }, { token: i2.ColumnUtilService }], target: i0.ɵɵFactoryTarget.Component });
16
- AlarmsCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AlarmsCellRendererComponent, selector: "ng-component", ngImport: i0, template: "<a\n class=\"d-flex a-i-center flex-wrap gap-8 no-decoration\"\n [href]=\"columnUtilService.getAlarmsHref(context.item)\"\n [attr.aria-label]=\"\n linkAriaLabel | translate: { name: columnUtilService.getProperName(context.item) }\n \"\n *ngIf=\"\n context.item.c8y_ActiveAlarmsStatus?.critical ||\n context.item.c8y_ActiveAlarmsStatus?.major ||\n context.item.c8y_ActiveAlarmsStatus?.minor ||\n context.item.c8y_ActiveAlarmsStatus?.warning\n \"\n>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.critical }} {{ 'Critical alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.critical\"\n >\n <i [c8yIcon]=\"'exclamation-circle'\" class=\"status critical stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.critical }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.major }} {{ 'Major alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.major\"\n >\n <i [c8yIcon]=\"'warning'\" class=\"status major stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.major }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.minor }} {{ 'Minor alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.minor\"\n >\n <i [c8yIcon]=\"'high-priority'\" class=\"status minor stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.minor }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.warning }} {{ 'Warning alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.warning\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"status warning stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.warning }}</span>\n </span>\n</a>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
16
+ AlarmsCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AlarmsCellRendererComponent, selector: "ng-component", ngImport: i0, template: "<a\n class=\"d-flex a-i-center flex-wrap gap-4 no-decoration\"\n [href]=\"columnUtilService.getAlarmsHref(context.item)\"\n [attr.aria-label]=\"\n linkAriaLabel | translate: { name: columnUtilService.getProperName(context.item) }\n \"\n *ngIf=\"\n context.item.c8y_ActiveAlarmsStatus?.critical ||\n context.item.c8y_ActiveAlarmsStatus?.major ||\n context.item.c8y_ActiveAlarmsStatus?.minor ||\n context.item.c8y_ActiveAlarmsStatus?.warning\n \"\n>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.critical }} {{ 'Critical alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.critical\"\n >\n <i [c8yIcon]=\"'exclamation-circle'\" class=\"status critical stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.critical }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.major }} {{ 'Major alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.major\"\n >\n <i [c8yIcon]=\"'warning'\" class=\"status major stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.major }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.minor }} {{ 'Minor alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.minor\"\n >\n <i [c8yIcon]=\"'high-priority'\" class=\"status minor stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.minor }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.warning }} {{ 'Warning alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.warning\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"status warning stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.warning }}</span>\n </span>\n</a>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AlarmsCellRendererComponent, decorators: [{
18
18
  type: Component,
19
- args: [{ template: "<a\n class=\"d-flex a-i-center flex-wrap gap-8 no-decoration\"\n [href]=\"columnUtilService.getAlarmsHref(context.item)\"\n [attr.aria-label]=\"\n linkAriaLabel | translate: { name: columnUtilService.getProperName(context.item) }\n \"\n *ngIf=\"\n context.item.c8y_ActiveAlarmsStatus?.critical ||\n context.item.c8y_ActiveAlarmsStatus?.major ||\n context.item.c8y_ActiveAlarmsStatus?.minor ||\n context.item.c8y_ActiveAlarmsStatus?.warning\n \"\n>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.critical }} {{ 'Critical alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.critical\"\n >\n <i [c8yIcon]=\"'exclamation-circle'\" class=\"status critical stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.critical }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.major }} {{ 'Major alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.major\"\n >\n <i [c8yIcon]=\"'warning'\" class=\"status major stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.major }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.minor }} {{ 'Minor alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.minor\"\n >\n <i [c8yIcon]=\"'high-priority'\" class=\"status minor stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.minor }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.warning }} {{ 'Warning alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.warning\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"status warning stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.warning }}</span>\n </span>\n</a>\n" }]
19
+ args: [{ template: "<a\n class=\"d-flex a-i-center flex-wrap gap-4 no-decoration\"\n [href]=\"columnUtilService.getAlarmsHref(context.item)\"\n [attr.aria-label]=\"\n linkAriaLabel | translate: { name: columnUtilService.getProperName(context.item) }\n \"\n *ngIf=\"\n context.item.c8y_ActiveAlarmsStatus?.critical ||\n context.item.c8y_ActiveAlarmsStatus?.major ||\n context.item.c8y_ActiveAlarmsStatus?.minor ||\n context.item.c8y_ActiveAlarmsStatus?.warning\n \"\n>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.critical }} {{ 'Critical alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.critical\"\n >\n <i [c8yIcon]=\"'exclamation-circle'\" class=\"status critical stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.critical }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.major }} {{ 'Major alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.major\"\n >\n <i [c8yIcon]=\"'warning'\" class=\"status major stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.major }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.minor }} {{ 'Minor alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.minor\"\n >\n <i [c8yIcon]=\"'high-priority'\" class=\"status minor stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.minor }}</span>\n </span>\n <span\n class=\"c8y-icon-badge\"\n title=\"{{ context.item.c8y_ActiveAlarmsStatus?.warning }} {{ 'Warning alarms' | translate }}\"\n *ngIf=\"context.item.c8y_ActiveAlarmsStatus?.warning\"\n >\n <i [c8yIcon]=\"'info-circle'\" class=\"status warning stroked-icon\"></i>\n <span class=\"badge badge-info\">{{ context.item.c8y_ActiveAlarmsStatus?.warning }}</span>\n </span>\n</a>\n" }]
20
20
  }], ctorParameters: function () { return [{ type: i1.CellRendererContext }, { type: i2.ColumnUtilService }]; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGV2aWNlLWdyaWQvY29sdW1ucy9hbGFybXMuY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9kZXZpY2UtZ3JpZC9jb2x1bW5zL2FsYXJtcy5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQUsxRCxNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLFlBQW1CLE9BQTRCLEVBQVMsaUJBQW9DO1FBQXpFLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQVMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQURuRixrQkFBYSxHQUFHLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3dCLENBQUM7O3dIQUZyRiwyQkFBMkI7NEdBQTNCLDJCQUEyQixvRENQeEMsZy9EQThDQTsyRkR2Q2EsMkJBQTJCO2tCQUh2QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJDb250ZXh0LCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb2x1bW5VdGlsU2VydmljZSB9IGZyb20gJy4vY29sdW1uLXV0aWwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0NlbGxSZW5kZXJlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGxpbmtBcmlhTGFiZWwgPSBnZXR0ZXh0KCdTZWUgYWxhcm1zIGZvciBkZXZpY2UgXCJ7eyBuYW1lIH19XCInKTtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRleHQ6IENlbGxSZW5kZXJlckNvbnRleHQsIHB1YmxpYyBjb2x1bW5VdGlsU2VydmljZTogQ29sdW1uVXRpbFNlcnZpY2UpIHt9XG59XG4iLCI8YVxuICBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIGZsZXgtd3JhcCBnYXAtOCBuby1kZWNvcmF0aW9uXCJcbiAgW2hyZWZdPVwiY29sdW1uVXRpbFNlcnZpY2UuZ2V0QWxhcm1zSHJlZihjb250ZXh0Lml0ZW0pXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICBsaW5rQXJpYUxhYmVsIHwgdHJhbnNsYXRlOiB7IG5hbWU6IGNvbHVtblV0aWxTZXJ2aWNlLmdldFByb3Blck5hbWUoY29udGV4dC5pdGVtKSB9XG4gIFwiXG4gICpuZ0lmPVwiXG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/LmNyaXRpY2FsIHx8XG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lm1ham9yIHx8XG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lm1pbm9yIHx8XG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lndhcm5pbmdcbiAgXCJcbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImM4eS1pY29uLWJhZGdlXCJcbiAgICB0aXRsZT1cInt7IGNvbnRleHQuaXRlbS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzPy5jcml0aWNhbCB9fSB7eyAnQ3JpdGljYWwgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKm5nSWY9XCJjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8uY3JpdGljYWxcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2V4Y2xhbWF0aW9uLWNpcmNsZSdcIiBjbGFzcz1cInN0YXR1cyBjcml0aWNhbCBzdHJva2VkLWljb25cIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/LmNyaXRpY2FsIH19PC9zcGFuPlxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJjOHktaWNvbi1iYWRnZVwiXG4gICAgdGl0bGU9XCJ7eyBjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ubWFqb3IgfX0ge3sgJ01ham9yIGFsYXJtcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICpuZ0lmPVwiY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lm1ham9yXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIid3YXJuaW5nJ1wiIGNsYXNzPVwic3RhdHVzIG1ham9yIHN0cm9rZWQtaWNvblwiPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm9cIj57eyBjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ubWFqb3IgfX08L3NwYW4+XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImM4eS1pY29uLWJhZGdlXCJcbiAgICB0aXRsZT1cInt7IGNvbnRleHQuaXRlbS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzPy5taW5vciB9fSB7eyAnTWlub3IgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKm5nSWY9XCJjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ubWlub3JcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2hpZ2gtcHJpb3JpdHknXCIgY2xhc3M9XCJzdGF0dXMgbWlub3Igc3Ryb2tlZC1pY29uXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNvbnRleHQuaXRlbS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzPy5taW5vciB9fTwvc3Bhbj5cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgIGNsYXNzPVwiYzh5LWljb24tYmFkZ2VcIlxuICAgIHRpdGxlPVwie3sgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lndhcm5pbmcgfX0ge3sgJ1dhcm5pbmcgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKm5nSWY9XCJjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ud2FybmluZ1wiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCInaW5mby1jaXJjbGUnXCIgY2xhc3M9XCJzdGF0dXMgd2FybmluZyBzdHJva2VkLWljb25cIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lndhcm5pbmcgfX08L3NwYW4+XG4gIDwvc3Bhbj5cbjwvYT5cbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGV2aWNlLWdyaWQvY29sdW1ucy9hbGFybXMuY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9kZXZpY2UtZ3JpZC9jb2x1bW5zL2FsYXJtcy5jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQUsxRCxNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLFlBQW1CLE9BQTRCLEVBQVMsaUJBQW9DO1FBQXpFLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQVMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQURuRixrQkFBYSxHQUFHLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3dCLENBQUM7O3dIQUZyRiwyQkFBMkI7NEdBQTNCLDJCQUEyQixvRENQeEMsZy9EQThDQTsyRkR2Q2EsMkJBQTJCO2tCQUh2QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJDb250ZXh0LCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb2x1bW5VdGlsU2VydmljZSB9IGZyb20gJy4vY29sdW1uLXV0aWwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLmNlbGwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0NlbGxSZW5kZXJlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGxpbmtBcmlhTGFiZWwgPSBnZXR0ZXh0KCdTZWUgYWxhcm1zIGZvciBkZXZpY2UgXCJ7eyBuYW1lIH19XCInKTtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRleHQ6IENlbGxSZW5kZXJlckNvbnRleHQsIHB1YmxpYyBjb2x1bW5VdGlsU2VydmljZTogQ29sdW1uVXRpbFNlcnZpY2UpIHt9XG59XG4iLCI8YVxuICBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIGZsZXgtd3JhcCBnYXAtNCBuby1kZWNvcmF0aW9uXCJcbiAgW2hyZWZdPVwiY29sdW1uVXRpbFNlcnZpY2UuZ2V0QWxhcm1zSHJlZihjb250ZXh0Lml0ZW0pXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICBsaW5rQXJpYUxhYmVsIHwgdHJhbnNsYXRlOiB7IG5hbWU6IGNvbHVtblV0aWxTZXJ2aWNlLmdldFByb3Blck5hbWUoY29udGV4dC5pdGVtKSB9XG4gIFwiXG4gICpuZ0lmPVwiXG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/LmNyaXRpY2FsIHx8XG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lm1ham9yIHx8XG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lm1pbm9yIHx8XG4gICAgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lndhcm5pbmdcbiAgXCJcbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImM4eS1pY29uLWJhZGdlXCJcbiAgICB0aXRsZT1cInt7IGNvbnRleHQuaXRlbS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzPy5jcml0aWNhbCB9fSB7eyAnQ3JpdGljYWwgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKm5nSWY9XCJjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8uY3JpdGljYWxcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2V4Y2xhbWF0aW9uLWNpcmNsZSdcIiBjbGFzcz1cInN0YXR1cyBjcml0aWNhbCBzdHJva2VkLWljb25cIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/LmNyaXRpY2FsIH19PC9zcGFuPlxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJjOHktaWNvbi1iYWRnZVwiXG4gICAgdGl0bGU9XCJ7eyBjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ubWFqb3IgfX0ge3sgJ01ham9yIGFsYXJtcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICpuZ0lmPVwiY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lm1ham9yXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIid3YXJuaW5nJ1wiIGNsYXNzPVwic3RhdHVzIG1ham9yIHN0cm9rZWQtaWNvblwiPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWluZm9cIj57eyBjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ubWFqb3IgfX08L3NwYW4+XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImM4eS1pY29uLWJhZGdlXCJcbiAgICB0aXRsZT1cInt7IGNvbnRleHQuaXRlbS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzPy5taW5vciB9fSB7eyAnTWlub3IgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKm5nSWY9XCJjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ubWlub3JcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2hpZ2gtcHJpb3JpdHknXCIgY2xhc3M9XCJzdGF0dXMgbWlub3Igc3Ryb2tlZC1pY29uXCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNvbnRleHQuaXRlbS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzPy5taW5vciB9fTwvc3Bhbj5cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgIGNsYXNzPVwiYzh5LWljb24tYmFkZ2VcIlxuICAgIHRpdGxlPVwie3sgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lndhcm5pbmcgfX0ge3sgJ1dhcm5pbmcgYWxhcm1zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKm5nSWY9XCJjb250ZXh0Lml0ZW0uYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz8ud2FybmluZ1wiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCInaW5mby1jaXJjbGUnXCIgY2xhc3M9XCJzdGF0dXMgd2FybmluZyBzdHJva2VkLWljb25cIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgY29udGV4dC5pdGVtLmM4eV9BY3RpdmVBbGFybXNTdGF0dXM/Lndhcm5pbmcgfX08L3NwYW4+XG4gIDwvc3Bhbj5cbjwvYT5cbiJdfQ==
@@ -11,6 +11,8 @@ export class LoriotDeviceRegistrationButtonComponent {
11
11
  open() {
12
12
  this.modalService.show(LoriotDeviceRegistrationComponent, {
13
13
  class: 'modal-sm',
14
+ ariaDescribedby: 'modal-body',
15
+ ariaLabelledBy: 'modal-title',
14
16
  ignoreBackdropClick: true
15
17
  });
16
18
  }
@@ -21,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
21
23
  type: Component,
22
24
  args: [{ selector: 'c8y-loriot-registration', template: "<button (click)=\"open()\"><i c8yIcon=\"c8y-device-connect\"></i> {{ 'LORIOT LoRa' | translate }} </button>" }]
23
25
  }], ctorParameters: function () { return [{ type: i1.BsModalService }]; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uL2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9sb3Jpb3QtZGV2aWNlLXJlZ2lzdHJhdGlvbi9sb3Jpb3QtZGV2aWNlLXJlZ2lzdHJhdGlvbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7QUFNM0YsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxZQUFvQixZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7SUFBRyxDQUFDO0lBRXBELElBQUk7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtZQUN4RCxLQUFLLEVBQUUsVUFBVTtZQUNqQixtQkFBbUIsRUFBRSxJQUFJO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7O29JQVJVLHVDQUF1Qzt3SEFBdkMsdUNBQXVDLCtEQ1JwRCw2R0FBdUc7MkZEUTFGLHVDQUF1QztrQkFKbkQsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBMb3Jpb3REZXZpY2VSZWdpc3RyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1sb3Jpb3QtcmVnaXN0cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdsb3Jpb3QtZGV2aWNlLXJlZ2lzdHJhdGlvbi1idXR0b24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExvcmlvdERldmljZVJlZ2lzdHJhdGlvbkJ1dHRvbkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSkge31cblxuICBvcGVuKCkge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLnNob3coTG9yaW90RGV2aWNlUmVnaXN0cmF0aW9uQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuIiwiPGJ1dHRvbiAoY2xpY2spPVwib3BlbigpXCI+PGkgYzh5SWNvbj1cImM4eS1kZXZpY2UtY29ubmVjdFwiPjwvaT4ge3sgJ0xPUklPVCBMb1JhJyB8IHRyYW5zbGF0ZSB9fSA8L2J1dHRvbj4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uL2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9sb3Jpb3QtZGV2aWNlLXJlZ2lzdHJhdGlvbi9sb3Jpb3QtZGV2aWNlLXJlZ2lzdHJhdGlvbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7QUFNM0YsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxZQUFvQixZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7SUFBRyxDQUFDO0lBRXBELElBQUk7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtZQUN4RCxLQUFLLEVBQUUsVUFBVTtZQUNqQixlQUFlLEVBQUUsWUFBWTtZQUM3QixjQUFjLEVBQUUsYUFBYTtZQUM3QixtQkFBbUIsRUFBRSxJQUFJO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7O29JQVZVLHVDQUF1Qzt3SEFBdkMsdUNBQXVDLCtEQ1JwRCw2R0FBdUc7MkZEUTFGLHVDQUF1QztrQkFKbkQsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBMb3Jpb3REZXZpY2VSZWdpc3RyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1sb3Jpb3QtcmVnaXN0cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdsb3Jpb3QtZGV2aWNlLXJlZ2lzdHJhdGlvbi1idXR0b24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExvcmlvdERldmljZVJlZ2lzdHJhdGlvbkJ1dHRvbkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSkge31cblxuICBvcGVuKCkge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLnNob3coTG9yaW90RGV2aWNlUmVnaXN0cmF0aW9uQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxidXR0b24gKGNsaWNrKT1cIm9wZW4oKVwiPjxpIGM4eUljb249XCJjOHktZGV2aWNlLWNvbm5lY3RcIj48L2k+IHt7ICdMT1JJT1QgTG9SYScgfCB0cmFuc2xhdGUgfX0gPC9idXR0b24+Il19
@@ -214,9 +214,9 @@ export class LoriotDeviceRegistrationComponent {
214
214
  }
215
215
  }
216
216
  LoriotDeviceRegistrationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoriotDeviceRegistrationComponent, deps: [{ token: i1.BsModalRef }, { token: i2.LoriotProviderService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component });
217
- LoriotDeviceRegistrationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoriotDeviceRegistrationComponent, selector: "c8y-loriot-registration", ngImport: i0, template: "<c8y-modal [headerClasses]=\"'dialog-header'\" [customFooter]=\"true\">\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n <h4>{{ 'LORIOT registration' | translate }}</h4>\n </ng-container>\n <ng-container *ngIf=\"state === 'loadPending'; else registrationForm\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-container>\n\n <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n *ngIf=\"(errorMessages$ | async).length === 0; else errorMessagesPresent\"\n >\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-b-16\">\n <p\n class=\"\n p-l-24 p-r-24 p-t-16 p-b-16\n m-b-0\n sticky-top\n separator-bottom\n lead\n text-center\n bg-component\n \"\n >\n {{ 'Register a single LORIOT device' | translate }}\n </p>\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n class=\"d-block p-l-24 p-r-24 p-t-16\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [pending]=\"state === 'registrationPending'\"\n [disabled]=\"!form.valid\"\n class=\"modal-footer sticky-bottom separator-top bg-white\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div class=\"p-16 text-center\" *ngIf=\"state === 'registrationPending'\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationSuccess'\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead m-b-0\"\n ></c8y-operation-result>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-white\"\n (onCustom)=\"bsModalRef.hide()\"\n [showButtons]=\"{ custom: true }\"\n [labels]=\"finalStepLabels\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n </ng-template>\n\n <ng-template #errorMessagesPresent>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationError'\"\n text=\"{{ 'Failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n <div\n *ngFor=\"let msg of errorMessages$ | async\"\n class=\"m-b-8\"\n [ngClass]=\"{\n 'text-center': state === 'registrationError',\n 'alert alert-danger': state === 'loadError'\n }\"\n >\n <span [innerHTML]=\"msg | translate\"></span>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n (click)=\"bsModalRef.hide()\"\n type=\"button\"\n class=\"btn btn-default\"\n translate\n >\n Close\n </button>\n </div>\n </ng-template>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i3.OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "component", type: i3.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i3.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i5.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i3.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i6.FormlyForm, selector: "formly-form", inputs: ["model", "fields", "options", "form"], outputs: ["modelChange"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
217
+ LoriotDeviceRegistrationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoriotDeviceRegistrationComponent, selector: "c8y-loriot-registration", ngImport: i0, template: "<c8y-modal\n [title]=\"'LORIOT registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n <ng-container *ngIf=\"state === 'loadPending'; else registrationForm\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-container>\n\n <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n c8y-modal-body\n *ngIf=\"(errorMessages$ | async).length === 0; else errorMessagesPresent\"\n >\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-b-16\">\n <p class=\"modal-subtitle sticky-top\">\n {{ 'Register a single LORIOT device' | translate }}\n </p>\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n class=\"d-block p-l-24 p-r-24 p-t-16\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [pending]=\"state === 'registrationPending'\"\n [disabled]=\"!form.valid\"\n class=\"modal-footer d-block sticky-bottom separator-top bg-component\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div class=\"p-16 text-center\" *ngIf=\"state === 'registrationPending'\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationSuccess'\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead m-b-0\"\n ></c8y-operation-result>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-component\"\n (onCustom)=\"bsModalRef.hide()\"\n [showButtons]=\"{ custom: true }\"\n [labels]=\"finalStepLabels\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n </ng-template>\n\n <ng-template #errorMessagesPresent>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationError'\"\n text=\"{{ 'Failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n <div\n *ngFor=\"let msg of errorMessages$ | async\"\n class=\"m-b-8\"\n [ngClass]=\"{\n 'text-center': state === 'registrationError',\n 'alert alert-danger': state === 'loadError'\n }\"\n >\n <span [innerHTML]=\"msg | translate\"></span>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n (click)=\"bsModalRef.hide()\"\n type=\"button\"\n class=\"btn btn-default\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n </ng-template>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i3.OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "component", type: i3.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i3.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i5.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i3.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i6.FormlyForm, selector: "formly-form", inputs: ["model", "fields", "options", "form"], outputs: ["modelChange"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
218
218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoriotDeviceRegistrationComponent, decorators: [{
219
219
  type: Component,
220
- args: [{ selector: 'c8y-loriot-registration', template: "<c8y-modal [headerClasses]=\"'dialog-header'\" [customFooter]=\"true\">\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n <h4>{{ 'LORIOT registration' | translate }}</h4>\n </ng-container>\n <ng-container *ngIf=\"state === 'loadPending'; else registrationForm\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-container>\n\n <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n *ngIf=\"(errorMessages$ | async).length === 0; else errorMessagesPresent\"\n >\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-b-16\">\n <p\n class=\"\n p-l-24 p-r-24 p-t-16 p-b-16\n m-b-0\n sticky-top\n separator-bottom\n lead\n text-center\n bg-component\n \"\n >\n {{ 'Register a single LORIOT device' | translate }}\n </p>\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n class=\"d-block p-l-24 p-r-24 p-t-16\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [pending]=\"state === 'registrationPending'\"\n [disabled]=\"!form.valid\"\n class=\"modal-footer sticky-bottom separator-top bg-white\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div class=\"p-16 text-center\" *ngIf=\"state === 'registrationPending'\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationSuccess'\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead m-b-0\"\n ></c8y-operation-result>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-white\"\n (onCustom)=\"bsModalRef.hide()\"\n [showButtons]=\"{ custom: true }\"\n [labels]=\"finalStepLabels\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n </ng-template>\n\n <ng-template #errorMessagesPresent>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationError'\"\n text=\"{{ 'Failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n <div\n *ngFor=\"let msg of errorMessages$ | async\"\n class=\"m-b-8\"\n [ngClass]=\"{\n 'text-center': state === 'registrationError',\n 'alert alert-danger': state === 'loadError'\n }\"\n >\n <span [innerHTML]=\"msg | translate\"></span>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n (click)=\"bsModalRef.hide()\"\n type=\"button\"\n class=\"btn btn-default\"\n translate\n >\n Close\n </button>\n </div>\n </ng-template>\n</c8y-modal>\n" }]
220
+ args: [{ selector: 'c8y-loriot-registration', template: "<c8y-modal\n [title]=\"'LORIOT registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n <ng-container *ngIf=\"state === 'loadPending'; else registrationForm\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-container>\n\n <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n c8y-modal-body\n *ngIf=\"(errorMessages$ | async).length === 0; else errorMessagesPresent\"\n >\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-b-16\">\n <p class=\"modal-subtitle sticky-top\">\n {{ 'Register a single LORIOT device' | translate }}\n </p>\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n class=\"d-block p-l-24 p-r-24 p-t-16\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [pending]=\"state === 'registrationPending'\"\n [disabled]=\"!form.valid\"\n class=\"modal-footer d-block sticky-bottom separator-top bg-component\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div class=\"p-16 text-center\" *ngIf=\"state === 'registrationPending'\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationSuccess'\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead m-b-0\"\n ></c8y-operation-result>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-component\"\n (onCustom)=\"bsModalRef.hide()\"\n [showButtons]=\"{ custom: true }\"\n [labels]=\"finalStepLabels\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n </ng-template>\n\n <ng-template #errorMessagesPresent>\n <div class=\"m-24\">\n <c8y-operation-result\n *ngIf=\"state === 'registrationError'\"\n text=\"{{ 'Failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n <div\n *ngFor=\"let msg of errorMessages$ | async\"\n class=\"m-b-8\"\n [ngClass]=\"{\n 'text-center': state === 'registrationError',\n 'alert alert-danger': state === 'loadError'\n }\"\n >\n <span [innerHTML]=\"msg | translate\"></span>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n (click)=\"bsModalRef.hide()\"\n type=\"button\"\n class=\"btn btn-default\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n </ng-template>\n</c8y-modal>\n" }]
221
221
  }], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i2.LoriotProviderService }, { type: i3.GainsightService }]; } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFjLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7O0FBZTVDLE1BQU0sT0FBTyxpQ0FBaUM7SUF3SzVDLFlBQ1MsVUFBc0IsRUFDckIsYUFBb0MsRUFDcEMsZ0JBQWtDO1FBRm5DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3BDLHFCQUFnQixHQUFoQixn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LGdCQUFnQixDQUFDLElBQUk7UUFDbkIsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7OEhBdE9VLGlDQUFpQztrSEFBakMsaUNBQWlDLCtEQ3hCOUMscTZHQTZHQTsyRkRyRmEsaUNBQWlDO2tCQUo3QyxTQUFTOytCQUNFLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIEM4eVN0ZXBwZXIsIEdhaW5zaWdodFNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWZlciwgZm9ya0pvaW4sIGZyb20sIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDZGtTdGVwIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgTG9yaW90UHJvdmlkZXJTZXJ2aWNlLCBFcnJvck5hbWUgfSBmcm9tICcuL2xvcmlvdC1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSwgdGFrZVVudGlsLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBMb3Jpb3REZXZpY2UsIExvcmlvdERldmljZUZvcm1seSB9IGZyb20gJy4vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24ubW9kZWwnO1xuXG50eXBlIFN0YXRlID1cbiAgfCAnbG9hZFBlbmRpbmcnXG4gIHwgJ2xvYWRTdWNjZXNzJ1xuICB8ICdsb2FkRXJyb3InXG4gIHwgJ3JlZ2lzdHJhdGlvblBlbmRpbmcnXG4gIHwgJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnXG4gIHwgJ3JlZ2lzdHJhdGlvbkVycm9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvcmlvdC1yZWdpc3RyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJ2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMb3Jpb3REZXZpY2VSZWdpc3RyYXRpb25Db21wb25lbnQge1xuICBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICByZWFkb25seSBQQUdJTkc6IG9iamVjdCA9IHtcbiAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICBwYWdlU2l6ZTogMTBcbiAgfTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1vZGVsOiBMb3Jpb3REZXZpY2VGb3JtbHkgPSB7fSBhcyBhbnk7XG4gIHByb3RvY29scyQgPSB0aGlzLmdldFByb3RvY29scyQoKTtcbiAgY29ubmVjdGlvbnMkID0gdGhpcy5nZXRDb25uZWN0aW9ucyQoKTtcbiAgdW5zdWJzY3JpYmUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBsb2FkJCA9IHRoaXMuY29ubmVjdGlvbnMkLnBpcGUoXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiBvZihlcnJvcikpLFxuICAgIHN3aXRjaE1hcChjb25uZWN0aW9ucyA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGNvbm5lY3Rpb25zIGluc3RhbmNlb2YgRXJyb3IgJiZcbiAgICAgICAgY29ubmVjdGlvbnMubmFtZSA9PT0gRXJyb3JOYW1lLk5vQ29ubmVjdGl2aXR5U2V0dGluZ3NFcnJvclxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBvZihbY29ubmVjdGlvbnNdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICAgIG9mKGNvbm5lY3Rpb25zKSxcbiAgICAgICAgdGhpcy5wcm90b2NvbHMkLnBpcGUoY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiBvZihlcnJvcikpKVxuICAgICAgXSk7XG4gICAgfSksXG4gICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgcmV0dXJuIHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHQgaW5zdGFuY2VvZiBFcnJvcjtcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHN3aXRjaE1hcChlcnJvcnMgPT4ge1xuICAgICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPT09IDAgPyBvZihbXSkgOiB0aHJvd0Vycm9yKGVycm9ycyk7XG4gICAgfSlcbiAgKTtcblxuICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAga2V5OiAndGl0bGUnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ0xPUklPVCBMb1JhJyksXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdUaXRsZScpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZGV2ZXVpJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyOiAnRkVEQ0JBOTg3NjU0MzIxMCcsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXZpY2UgRVVJJyksXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBwYXR0ZXJuOiAnXihbQS1GMC05XXsxNn0pJCdcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgIG1lc3NhZ2VzOiB7XG4gICAgICAgICAgcGF0dGVybjogZ2V0dGV4dCgnTXVzdCBiZSBhIHZhbGlkIDE2IGRpZ2l0IHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBudW1iZXIuJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYXBwZXVpJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyOiAnRkVEQ0JBOTg3NjU0MzIxMCcsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdBcHBsaWNhdGlvbiBFVUknKSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIHBhdHRlcm46ICdeKFthLWZBLUYwLTldezE2fSkkJ1xuICAgICAgfSxcbiAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgICBwYXR0ZXJuOiBnZXR0ZXh0KCdNdXN0IGJlIGEgdmFsaWQgMTYgZGlnaXQgaGV4YWRlY2ltYWwgbnVtYmVyLicpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FwcGtleScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBwbGFjZWhvbGRlcjogJ0ZFRENCQTk4NzY1NDMyMTBGRURDQkE5ODc2NTQzMjEwJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0FwcGxpY2F0aW9uIGtleScpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgcGF0dGVybjogJ14oW2EtZkEtRjAtOV17MzJ9KSQnXG4gICAgICB9LFxuICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICBtZXNzYWdlczoge1xuICAgICAgICAgIHBhdHRlcm46IGdldHRleHQoJ011c3QgYmUgYSB2YWxpZCAzMiBkaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIuJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY29ubmVjdGlvbicsXG4gICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29ubmVjdGlvbicpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5jb25uZWN0aW9ucyQsXG4gICAgICAgIGRpc3BsYXlQcm9wZXJ0eTogJ25hbWUnLFxuICAgICAgICB2YWx1ZVByb3BlcnRpZXM6IFsnbmFtZSddXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdhcHBsaWNhdGlvbicsXG4gICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQXBwbGljYXRpb24gbmFtZScpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ0xPUklPVCBhcHBsaWNhdGlvbicpLFxuICAgICAgICBkaXNwbGF5UHJvcGVydHk6ICduYW1lJyxcbiAgICAgICAgdmFsdWVQcm9wZXJ0aWVzOiBbJ2hleElkJ11cbiAgICAgIH0sXG4gICAgICBob29rczoge1xuICAgICAgICBvbkluaXQ6IGZpZWxkID0+IHtcbiAgICAgICAgICBjb25zdCBjb25uZWN0aW9uQ29udHJvbCA9IGZpZWxkLmZvcm0uZ2V0KCdjb25uZWN0aW9uJyk7XG4gICAgICAgICAgY29ubmVjdGlvbkNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgICAgICAgbWVyZ2VNYXAoKHsgbmFtZSB9KSA9PiB0aGlzLmdldEFwcGxpY2F0aW9ucyQobmFtZSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBhcHBzID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuYzh5Rm9yT3B0aW9ucyA9IG9mKGFwcHMpO1xuICAgICAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQuZm9ybS5jb250cm9scy5hcHBsaWNhdGlvbi5zZXRFcnJvcnMoeyBhcHBsaWNhdGlvbjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBmaWVsZC52YWxpZGF0b3JzLmFwcGxpY2F0aW9uLm1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICBhcHBsaWNhdGlvbjoge1xuICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sLnN0YXR1cyA9PT0gJ1ZBTElEJztcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2U6ICgpID0+ICcnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2RldmljZVR5cGUnLFxuICAgICAgdHlwZTogJ3R5cGVhaGVhZCcsXG4gICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RldmljZSBwcm90b2NvbCcpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5wcm90b2NvbHMkLFxuICAgICAgICBkaXNwbGF5UHJvcGVydHk6ICduYW1lJyxcbiAgICAgICAgdmFsdWVQcm9wZXJ0aWVzOiBbJ2lkJywgJ25hbWUnXVxuICAgICAgfVxuICAgIH1cbiAgXTtcblxuICByZWdpc3RyYXRpb25TdGVwTGFiZWxzID0ge1xuICAgIG5leHQ6IGdldHRleHQoJ1JlZ2lzdGVyJylcbiAgfTtcbiAgZmluYWxTdGVwTGFiZWxzID0ge1xuICAgIGJhY2s6IGdldHRleHQoJ0Nsb3NlJylcbiAgfTtcblxuICBzdGF0ZTogU3RhdGUgPSAnbG9hZFBlbmRpbmcnO1xuICBlcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFcnJvcltdPihbXSk7XG4gIGVycm9yTWVzc2FnZXMkID0gdGhpcy5lcnJvcnMkLnBpcGUoXG4gICAgbWFwKGVycm9ycyA9PiBlcnJvcnMubWFwKGVycm9yID0+IGVycm9yLm1lc3NhZ2UpKSxcbiAgICBtYXAobWVzc2FnZXMgPT4gdW5pcShtZXNzYWdlcykpXG4gICk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgbG9yaW90U2VydmljZTogTG9yaW90UHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHtcbiAgICB0aGlzLmxvYWQkLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdsb2FkU3VjY2Vzcyc7XG4gICAgICB9LFxuICAgICAgZXJyb3JzID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdsb2FkRXJyb3InO1xuICAgICAgICB0aGlzLmVycm9ycyQubmV4dChlcnJvcnMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoZXZlbnQ6IHsgc3RlcHBlcjogQzh5U3RlcHBlcjsgc3RlcDogQ2RrU3RlcCB9KSB7XG4gICAgdGhpcy5zdGF0ZSA9ICdyZWdpc3RyYXRpb25QZW5kaW5nJztcbiAgICBjb25zdCBsb3Jpb3REZXZpY2UgPSB0aGlzLmdldExvcmlvdERldmljZVRvU2VuZCgpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvcmlvdFNlcnZpY2UuY3JlYXRlRGV2aWNlKGxvcmlvdERldmljZSk7XG4gICAgICB0aGlzLnN0YXRlID0gJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnZG1EZXZpY2VSZWdpc3RyYXRpb24nLCB7XG4gICAgICAgIGFjdGlvbjogJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnLFxuICAgICAgICBuYW1lOiAnbG9yaW90UmVnaXN0cmF0aW9uJ1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAncmVnaXN0cmF0aW9uRXJyb3InO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnZG1EZXZpY2VSZWdpc3RyYXRpb24nLCB7XG4gICAgICAgIGFjdGlvbjogJ3JlZ2lzdHJhdGlvbkZhaWx1cmUnLFxuICAgICAgICBuYW1lOiAnbG9yaW90UmVnaXN0cmF0aW9uJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVycm9ycyQubmV4dChbZXJyb3JdKTtcbiAgICB9XG5cbiAgICBldmVudC5zdGVwcGVyLm5leHQoKTtcbiAgfVxuXG4gIGdldExvcmlvdERldmljZVRvU2VuZCgpIHtcbiAgICBjb25zdCBsb3Jpb3REZXZpY2U6IExvcmlvdERldmljZSA9IGNsb25lRGVlcCh0aGlzLm1vZGVsKTtcbiAgICBsb3Jpb3REZXZpY2UubG5zQ29ubmVjdGlvbk5hbWUgPSB0aGlzLm1vZGVsLmNvbm5lY3Rpb24ubmFtZTtcbiAgICBkZWxldGUgKGxvcmlvdERldmljZSBhcyBhbnkpLmNvbm5lY3Rpb247XG4gICAgbG9yaW90RGV2aWNlLmFwcGlkID0gdGhpcy5tb2RlbC5hcHBsaWNhdGlvbi5oZXhJZDtcbiAgICBkZWxldGUgKGxvcmlvdERldmljZSBhcyBhbnkpLmFwcGxpY2F0aW9uO1xuICAgIHJldHVybiBsb3Jpb3REZXZpY2U7XG4gIH1cblxuICBnZXRQcm90b2NvbHMkKCkge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMubG9yaW90U2VydmljZS5nZXRBdmFpbGFibGVQcm90b2NvbHMoKSkpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICB9XG5cbiAgZ2V0Q29ubmVjdGlvbnMkKCkge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMubG9yaW90U2VydmljZS5nZXRDb25uZWN0aW9ucygpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBnZXRBcHBsaWNhdGlvbnMkKG5hbWUpIHtcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLmxvcmlvdFNlcnZpY2UuZ2V0QXBwbGljYXRpb25zKG5hbWUpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGM4eS1tb2RhbCBbaGVhZGVyQ2xhc3Nlc109XCInZGlhbG9nLWhlYWRlcidcIiBbY3VzdG9tRm9vdGVyXT1cInRydWVcIj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPHNwYW4gW2M4eUljb25dPVwiJ2M4eS1kZXZpY2UtY29ubmVjdCdcIj48L3NwYW4+XG4gICAgPGg0Pnt7ICdMT1JJT1QgcmVnaXN0cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUgPT09ICdsb2FkUGVuZGluZyc7IGVsc2UgcmVnaXN0cmF0aW9uRm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNyZWdpc3RyYXRpb25Gb3JtPlxuICAgIDxjOHktc3RlcHBlclxuICAgICAgW2hpZGVTdGVwUHJvZ3Jlc3NdPVwidHJ1ZVwiXG4gICAgICBsaW5lYXJcbiAgICAgICpuZ0lmPVwiKGVycm9yTWVzc2FnZXMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMDsgZWxzZSBlcnJvck1lc3NhZ2VzUHJlc2VudFwiXG4gICAgPlxuICAgICAgPGNkay1zdGVwIFtzdGVwQ29udHJvbF09XCJmb3JtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWItMTZcIj5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgcC1sLTI0IHAtci0yNCBwLXQtMTYgcC1iLTE2XG4gICAgICAgICAgICAgIG0tYi0wXG4gICAgICAgICAgICAgIHN0aWNreS10b3BcbiAgICAgICAgICAgICAgc2VwYXJhdG9yLWJvdHRvbVxuICAgICAgICAgICAgICBsZWFkXG4gICAgICAgICAgICAgIHRleHQtY2VudGVyXG4gICAgICAgICAgICAgIGJnLWNvbXBvbmVudFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnUmVnaXN0ZXIgYSBzaW5nbGUgTE9SSU9UIGRldmljZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGZvcm1seS1mb3JtXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtYmxvY2sgcC1sLTI0IHAtci0yNCBwLXQtMTZcIlxuICAgICAgICAgID48L2Zvcm1seS1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgICBbbGFiZWxzXT1cInJlZ2lzdHJhdGlvblN0ZXBMYWJlbHNcIlxuICAgICAgICAgIChvbk5leHQpPVwiY3JlYXRlKCRldmVudClcIlxuICAgICAgICAgIChvbkNhbmNlbCk9XCJic01vZGFsUmVmLmhpZGUoKVwiXG4gICAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgY2FuY2VsOiB0cnVlLCBuZXh0OiB0cnVlIH1cIlxuICAgICAgICAgIFtwZW5kaW5nXT1cInN0YXRlID09PSAncmVnaXN0cmF0aW9uUGVuZGluZydcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJtb2RhbC1mb290ZXIgc3RpY2t5LWJvdHRvbSBzZXBhcmF0b3ItdG9wIGJnLXdoaXRlXCJcbiAgICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICAgIDwvY2RrLXN0ZXA+XG4gICAgICA8Y2RrLXN0ZXAgc3RhdGU9XCJmaW5hbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0xNiB0ZXh0LWNlbnRlclwiICpuZ0lmPVwic3RhdGUgPT09ICdyZWdpc3RyYXRpb25QZW5kaW5nJ1wiPlxuICAgICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMjRcIj5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgICpuZ0lmPVwic3RhdGUgPT09ICdyZWdpc3RyYXRpb25TdWNjZXNzJ1wiXG4gICAgICAgICAgICB0ZXh0PVwie3sgJ0RldmljZSByZWdpc3RlcmVkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgICAgICBjbGFzcz1cImxlYWQgbS1iLTBcIlxuICAgICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICAgIGNsYXNzPVwic3RpY2t5LWJvdHRvbSBkLWJsb2NrIHAtdC0xNiBwLWItMTYgc2VwYXJhdG9yLXRvcCBiZy13aGl0ZVwiXG4gICAgICAgICAgKG9uQ3VzdG9tKT1cImJzTW9kYWxSZWYuaGlkZSgpXCJcbiAgICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBjdXN0b206IHRydWUgfVwiXG4gICAgICAgICAgW2xhYmVsc109XCJmaW5hbFN0ZXBMYWJlbHNcIlxuICAgICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgICAgPC9jZGstc3RlcD5cbiAgICA8L2M4eS1zdGVwcGVyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZXJyb3JNZXNzYWdlc1ByZXNlbnQ+XG4gICAgPGRpdiBjbGFzcz1cIm0tMjRcIj5cbiAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAqbmdJZj1cInN0YXRlID09PSAncmVnaXN0cmF0aW9uRXJyb3InXCJcbiAgICAgICAgdGV4dD1cInt7ICdGYWlsZWQgdG8gcmVnaXN0ZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgIHR5cGU9XCJlcnJvclwiXG4gICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IG1zZyBvZiBlcnJvck1lc3NhZ2VzJCB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJtLWItOFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAndGV4dC1jZW50ZXInOiBzdGF0ZSA9PT0gJ3JlZ2lzdHJhdGlvbkVycm9yJyxcbiAgICAgICAgICAnYWxlcnQgYWxlcnQtZGFuZ2VyJzogc3RhdGUgPT09ICdsb2FkRXJyb3InXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm1zZyB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0aXRsZT1cInt7ICdDbG9zZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAoY2xpY2spPVwiYnNNb2RhbFJlZi5oaWRlKClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQ2xvc2VcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9jOHktbW9kYWw+XG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFjLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7O0FBZTVDLE1BQU0sT0FBTyxpQ0FBaUM7SUF3SzVDLFlBQ1MsVUFBc0IsRUFDckIsYUFBb0MsRUFDcEMsZ0JBQWtDO1FBRm5DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3BDLHFCQUFnQixHQUFoQixn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LGdCQUFnQixDQUFDLElBQUk7UUFDbkIsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7OEhBdE9VLGlDQUFpQztrSEFBakMsaUNBQWlDLCtEQ3hCOUMsNHZHQXNHQTsyRkQ5RWEsaUNBQWlDO2tCQUo3QyxTQUFTOytCQUNFLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIEM4eVN0ZXBwZXIsIEdhaW5zaWdodFNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWZlciwgZm9ya0pvaW4sIGZyb20sIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDZGtTdGVwIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgTG9yaW90UHJvdmlkZXJTZXJ2aWNlLCBFcnJvck5hbWUgfSBmcm9tICcuL2xvcmlvdC1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSwgdGFrZVVudGlsLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBMb3Jpb3REZXZpY2UsIExvcmlvdERldmljZUZvcm1seSB9IGZyb20gJy4vbG9yaW90LWRldmljZS1yZWdpc3RyYXRpb24ubW9kZWwnO1xuXG50eXBlIFN0YXRlID1cbiAgfCAnbG9hZFBlbmRpbmcnXG4gIHwgJ2xvYWRTdWNjZXNzJ1xuICB8ICdsb2FkRXJyb3InXG4gIHwgJ3JlZ2lzdHJhdGlvblBlbmRpbmcnXG4gIHwgJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnXG4gIHwgJ3JlZ2lzdHJhdGlvbkVycm9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvcmlvdC1yZWdpc3RyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJ2xvcmlvdC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMb3Jpb3REZXZpY2VSZWdpc3RyYXRpb25Db21wb25lbnQge1xuICBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICByZWFkb25seSBQQUdJTkc6IG9iamVjdCA9IHtcbiAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICBwYWdlU2l6ZTogMTBcbiAgfTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1vZGVsOiBMb3Jpb3REZXZpY2VGb3JtbHkgPSB7fSBhcyBhbnk7XG4gIHByb3RvY29scyQgPSB0aGlzLmdldFByb3RvY29scyQoKTtcbiAgY29ubmVjdGlvbnMkID0gdGhpcy5nZXRDb25uZWN0aW9ucyQoKTtcbiAgdW5zdWJzY3JpYmUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBsb2FkJCA9IHRoaXMuY29ubmVjdGlvbnMkLnBpcGUoXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiBvZihlcnJvcikpLFxuICAgIHN3aXRjaE1hcChjb25uZWN0aW9ucyA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGNvbm5lY3Rpb25zIGluc3RhbmNlb2YgRXJyb3IgJiZcbiAgICAgICAgY29ubmVjdGlvbnMubmFtZSA9PT0gRXJyb3JOYW1lLk5vQ29ubmVjdGl2aXR5U2V0dGluZ3NFcnJvclxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBvZihbY29ubmVjdGlvbnNdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICAgIG9mKGNvbm5lY3Rpb25zKSxcbiAgICAgICAgdGhpcy5wcm90b2NvbHMkLnBpcGUoY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiBvZihlcnJvcikpKVxuICAgICAgXSk7XG4gICAgfSksXG4gICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgcmV0dXJuIHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHQgaW5zdGFuY2VvZiBFcnJvcjtcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHN3aXRjaE1hcChlcnJvcnMgPT4ge1xuICAgICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPT09IDAgPyBvZihbXSkgOiB0aHJvd0Vycm9yKGVycm9ycyk7XG4gICAgfSlcbiAgKTtcblxuICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAga2V5OiAndGl0bGUnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ0xPUklPVCBMb1JhJyksXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdUaXRsZScpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZGV2ZXVpJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyOiAnRkVEQ0JBOTg3NjU0MzIxMCcsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXZpY2UgRVVJJyksXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBwYXR0ZXJuOiAnXihbQS1GMC05XXsxNn0pJCdcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgIG1lc3NhZ2VzOiB7XG4gICAgICAgICAgcGF0dGVybjogZ2V0dGV4dCgnTXVzdCBiZSBhIHZhbGlkIDE2IGRpZ2l0IHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBudW1iZXIuJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYXBwZXVpJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyOiAnRkVEQ0JBOTg3NjU0MzIxMCcsXG4gICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdBcHBsaWNhdGlvbiBFVUknKSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIHBhdHRlcm46ICdeKFthLWZBLUYwLTldezE2fSkkJ1xuICAgICAgfSxcbiAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgICBwYXR0ZXJuOiBnZXR0ZXh0KCdNdXN0IGJlIGEgdmFsaWQgMTYgZGlnaXQgaGV4YWRlY2ltYWwgbnVtYmVyLicpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FwcGtleScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBwbGFjZWhvbGRlcjogJ0ZFRENCQTk4NzY1NDMyMTBGRURDQkE5ODc2NTQzMjEwJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0FwcGxpY2F0aW9uIGtleScpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgcGF0dGVybjogJ14oW2EtZkEtRjAtOV17MzJ9KSQnXG4gICAgICB9LFxuICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICBtZXNzYWdlczoge1xuICAgICAgICAgIHBhdHRlcm46IGdldHRleHQoJ011c3QgYmUgYSB2YWxpZCAzMiBkaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIuJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY29ubmVjdGlvbicsXG4gICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29ubmVjdGlvbicpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5jb25uZWN0aW9ucyQsXG4gICAgICAgIGRpc3BsYXlQcm9wZXJ0eTogJ25hbWUnLFxuICAgICAgICB2YWx1ZVByb3BlcnRpZXM6IFsnbmFtZSddXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdhcHBsaWNhdGlvbicsXG4gICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQXBwbGljYXRpb24gbmFtZScpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ0xPUklPVCBhcHBsaWNhdGlvbicpLFxuICAgICAgICBkaXNwbGF5UHJvcGVydHk6ICduYW1lJyxcbiAgICAgICAgdmFsdWVQcm9wZXJ0aWVzOiBbJ2hleElkJ11cbiAgICAgIH0sXG4gICAgICBob29rczoge1xuICAgICAgICBvbkluaXQ6IGZpZWxkID0+IHtcbiAgICAgICAgICBjb25zdCBjb25uZWN0aW9uQ29udHJvbCA9IGZpZWxkLmZvcm0uZ2V0KCdjb25uZWN0aW9uJyk7XG4gICAgICAgICAgY29ubmVjdGlvbkNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgICAgICAgbWVyZ2VNYXAoKHsgbmFtZSB9KSA9PiB0aGlzLmdldEFwcGxpY2F0aW9ucyQobmFtZSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBhcHBzID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuYzh5Rm9yT3B0aW9ucyA9IG9mKGFwcHMpO1xuICAgICAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQuZm9ybS5jb250cm9scy5hcHBsaWNhdGlvbi5zZXRFcnJvcnMoeyBhcHBsaWNhdGlvbjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBmaWVsZC52YWxpZGF0b3JzLmFwcGxpY2F0aW9uLm1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICBhcHBsaWNhdGlvbjoge1xuICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sLnN0YXR1cyA9PT0gJ1ZBTElEJztcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2U6ICgpID0+ICcnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2RldmljZVR5cGUnLFxuICAgICAgdHlwZTogJ3R5cGVhaGVhZCcsXG4gICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RldmljZSBwcm90b2NvbCcpLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5wcm90b2NvbHMkLFxuICAgICAgICBkaXNwbGF5UHJvcGVydHk6ICduYW1lJyxcbiAgICAgICAgdmFsdWVQcm9wZXJ0aWVzOiBbJ2lkJywgJ25hbWUnXVxuICAgICAgfVxuICAgIH1cbiAgXTtcblxuICByZWdpc3RyYXRpb25TdGVwTGFiZWxzID0ge1xuICAgIG5leHQ6IGdldHRleHQoJ1JlZ2lzdGVyJylcbiAgfTtcbiAgZmluYWxTdGVwTGFiZWxzID0ge1xuICAgIGJhY2s6IGdldHRleHQoJ0Nsb3NlJylcbiAgfTtcblxuICBzdGF0ZTogU3RhdGUgPSAnbG9hZFBlbmRpbmcnO1xuICBlcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFcnJvcltdPihbXSk7XG4gIGVycm9yTWVzc2FnZXMkID0gdGhpcy5lcnJvcnMkLnBpcGUoXG4gICAgbWFwKGVycm9ycyA9PiBlcnJvcnMubWFwKGVycm9yID0+IGVycm9yLm1lc3NhZ2UpKSxcbiAgICBtYXAobWVzc2FnZXMgPT4gdW5pcShtZXNzYWdlcykpXG4gICk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgbG9yaW90U2VydmljZTogTG9yaW90UHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHtcbiAgICB0aGlzLmxvYWQkLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdsb2FkU3VjY2Vzcyc7XG4gICAgICB9LFxuICAgICAgZXJyb3JzID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdsb2FkRXJyb3InO1xuICAgICAgICB0aGlzLmVycm9ycyQubmV4dChlcnJvcnMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoZXZlbnQ6IHsgc3RlcHBlcjogQzh5U3RlcHBlcjsgc3RlcDogQ2RrU3RlcCB9KSB7XG4gICAgdGhpcy5zdGF0ZSA9ICdyZWdpc3RyYXRpb25QZW5kaW5nJztcbiAgICBjb25zdCBsb3Jpb3REZXZpY2UgPSB0aGlzLmdldExvcmlvdERldmljZVRvU2VuZCgpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvcmlvdFNlcnZpY2UuY3JlYXRlRGV2aWNlKGxvcmlvdERldmljZSk7XG4gICAgICB0aGlzLnN0YXRlID0gJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnZG1EZXZpY2VSZWdpc3RyYXRpb24nLCB7XG4gICAgICAgIGFjdGlvbjogJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnLFxuICAgICAgICBuYW1lOiAnbG9yaW90UmVnaXN0cmF0aW9uJ1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAncmVnaXN0cmF0aW9uRXJyb3InO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnZG1EZXZpY2VSZWdpc3RyYXRpb24nLCB7XG4gICAgICAgIGFjdGlvbjogJ3JlZ2lzdHJhdGlvbkZhaWx1cmUnLFxuICAgICAgICBuYW1lOiAnbG9yaW90UmVnaXN0cmF0aW9uJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVycm9ycyQubmV4dChbZXJyb3JdKTtcbiAgICB9XG5cbiAgICBldmVudC5zdGVwcGVyLm5leHQoKTtcbiAgfVxuXG4gIGdldExvcmlvdERldmljZVRvU2VuZCgpIHtcbiAgICBjb25zdCBsb3Jpb3REZXZpY2U6IExvcmlvdERldmljZSA9IGNsb25lRGVlcCh0aGlzLm1vZGVsKTtcbiAgICBsb3Jpb3REZXZpY2UubG5zQ29ubmVjdGlvbk5hbWUgPSB0aGlzLm1vZGVsLmNvbm5lY3Rpb24ubmFtZTtcbiAgICBkZWxldGUgKGxvcmlvdERldmljZSBhcyBhbnkpLmNvbm5lY3Rpb247XG4gICAgbG9yaW90RGV2aWNlLmFwcGlkID0gdGhpcy5tb2RlbC5hcHBsaWNhdGlvbi5oZXhJZDtcbiAgICBkZWxldGUgKGxvcmlvdERldmljZSBhcyBhbnkpLmFwcGxpY2F0aW9uO1xuICAgIHJldHVybiBsb3Jpb3REZXZpY2U7XG4gIH1cblxuICBnZXRQcm90b2NvbHMkKCkge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMubG9yaW90U2VydmljZS5nZXRBdmFpbGFibGVQcm90b2NvbHMoKSkpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICB9XG5cbiAgZ2V0Q29ubmVjdGlvbnMkKCkge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiBmcm9tKHRoaXMubG9yaW90U2VydmljZS5nZXRDb25uZWN0aW9ucygpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBnZXRBcHBsaWNhdGlvbnMkKG5hbWUpIHtcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gZnJvbSh0aGlzLmxvcmlvdFNlcnZpY2UuZ2V0QXBwbGljYXRpb25zKG5hbWUpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGM4eS1tb2RhbFxuICBbdGl0bGVdPVwiJ0xPUklPVCByZWdpc3RyYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgW2hlYWRlckNsYXNzZXNdPVwiJ2RpYWxvZy1oZWFkZXInXCJcbiAgW2N1c3RvbUZvb3Rlcl09XCJ0cnVlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPHNwYW4gW2M4eUljb25dPVwiJ2M4eS1kZXZpY2UtY29ubmVjdCdcIj48L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUgPT09ICdsb2FkUGVuZGluZyc7IGVsc2UgcmVnaXN0cmF0aW9uRm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNyZWdpc3RyYXRpb25Gb3JtPlxuICAgIDxjOHktc3RlcHBlclxuICAgICAgW2hpZGVTdGVwUHJvZ3Jlc3NdPVwidHJ1ZVwiXG4gICAgICBsaW5lYXJcbiAgICAgIGM4eS1tb2RhbC1ib2R5XG4gICAgICAqbmdJZj1cIihlcnJvck1lc3NhZ2VzJCB8IGFzeW5jKS5sZW5ndGggPT09IDA7IGVsc2UgZXJyb3JNZXNzYWdlc1ByZXNlbnRcIlxuICAgID5cbiAgICAgIDxjZGstc3RlcCBbc3RlcENvbnRyb2xdPVwiZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1iLTE2XCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtb2RhbC1zdWJ0aXRsZSBzdGlja3ktdG9wXCI+XG4gICAgICAgICAgICB7eyAnUmVnaXN0ZXIgYSBzaW5nbGUgTE9SSU9UIGRldmljZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGZvcm1seS1mb3JtXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgICBjbGFzcz1cImQtYmxvY2sgcC1sLTI0IHAtci0yNCBwLXQtMTZcIlxuICAgICAgICAgID48L2Zvcm1seS1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgICBbbGFiZWxzXT1cInJlZ2lzdHJhdGlvblN0ZXBMYWJlbHNcIlxuICAgICAgICAgIChvbk5leHQpPVwiY3JlYXRlKCRldmVudClcIlxuICAgICAgICAgIChvbkNhbmNlbCk9XCJic01vZGFsUmVmLmhpZGUoKVwiXG4gICAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgY2FuY2VsOiB0cnVlLCBuZXh0OiB0cnVlIH1cIlxuICAgICAgICAgIFtwZW5kaW5nXT1cInN0YXRlID09PSAncmVnaXN0cmF0aW9uUGVuZGluZydcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJtb2RhbC1mb290ZXIgZC1ibG9jayBzdGlja3ktYm90dG9tIHNlcGFyYXRvci10b3AgYmctY29tcG9uZW50XCJcbiAgICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICAgIDwvY2RrLXN0ZXA+XG4gICAgICA8Y2RrLXN0ZXAgc3RhdGU9XCJmaW5hbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0xNiB0ZXh0LWNlbnRlclwiICpuZ0lmPVwic3RhdGUgPT09ICdyZWdpc3RyYXRpb25QZW5kaW5nJ1wiPlxuICAgICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMjRcIj5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgICpuZ0lmPVwic3RhdGUgPT09ICdyZWdpc3RyYXRpb25TdWNjZXNzJ1wiXG4gICAgICAgICAgICB0ZXh0PVwie3sgJ0RldmljZSByZWdpc3RlcmVkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgICAgICBjbGFzcz1cImxlYWQgbS1iLTBcIlxuICAgICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICAgIGNsYXNzPVwic3RpY2t5LWJvdHRvbSBkLWJsb2NrIHAtdC0xNiBwLWItMTYgc2VwYXJhdG9yLXRvcCBiZy1jb21wb25lbnRcIlxuICAgICAgICAgIChvbkN1c3RvbSk9XCJic01vZGFsUmVmLmhpZGUoKVwiXG4gICAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgY3VzdG9tOiB0cnVlIH1cIlxuICAgICAgICAgIFtsYWJlbHNdPVwiZmluYWxTdGVwTGFiZWxzXCJcbiAgICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICAgIDwvY2RrLXN0ZXA+XG4gICAgPC9jOHktc3RlcHBlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2Vycm9yTWVzc2FnZXNQcmVzZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtLTI0XCI+XG4gICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgKm5nSWY9XCJzdGF0ZSA9PT0gJ3JlZ2lzdHJhdGlvbkVycm9yJ1wiXG4gICAgICAgIHRleHQ9XCJ7eyAnRmFpbGVkIHRvIHJlZ2lzdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBtc2cgb2YgZXJyb3JNZXNzYWdlcyQgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwibS1iLThcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3RleHQtY2VudGVyJzogc3RhdGUgPT09ICdyZWdpc3RyYXRpb25FcnJvcicsXG4gICAgICAgICAgJ2FsZXJ0IGFsZXJ0LWRhbmdlcic6IHN0YXRlID09PSAnbG9hZEVycm9yJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJtc2cgfCB0cmFuc2xhdGVcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2xvc2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgID5cbiAgICAgICAge3sgJ0Nsb3NlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2M4eS1tb2RhbD5cbiJdfQ==