@c8y/ngx-components 1021.4.3 → 1021.6.0

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 (33) hide show
  1. package/context-dashboard/context-dashboard.component.d.ts +3 -3
  2. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  3. package/core/dashboard/dashboard.model.d.ts +11 -0
  4. package/core/dashboard/dashboard.model.d.ts.map +1 -1
  5. package/core/dashboard/dashboard.module.d.ts +2 -1
  6. package/core/dashboard/dashboard.module.d.ts.map +1 -1
  7. package/core/dashboard/widgets-dashboard.component.d.ts +6 -4
  8. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  9. package/core/properties-list/properties-list.component.d.ts +6 -9
  10. package/core/properties-list/properties-list.component.d.ts.map +1 -1
  11. package/core/provider-configuration/provider-configuration.component.d.ts.map +1 -1
  12. package/esm2022/context-dashboard/context-dashboard.component.mjs +12 -7
  13. package/esm2022/core/dashboard/dashboard.model.mjs +5 -1
  14. package/esm2022/core/dashboard/dashboard.module.mjs +8 -4
  15. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +33 -15
  16. package/esm2022/core/properties-list/properties-list.component.mjs +32 -42
  17. package/esm2022/core/provider-configuration/provider-configuration.component.mjs +8 -3
  18. package/esm2022/protocol-lwm2m/ng1/plugin-checker.service.mjs +2 -2
  19. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +11 -6
  20. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs +1 -1
  22. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs.map +1 -1
  23. package/fesm2022/c8y-ngx-components.mjs +72 -53
  24. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  25. package/locales/de.po +9 -0
  26. package/locales/es.po +9 -0
  27. package/locales/fr.po +9 -0
  28. package/locales/ja_JP.po +9 -3
  29. package/locales/locales.pot +9 -0
  30. package/locales/nl.po +9 -0
  31. package/locales/pl.po +9 -0
  32. package/locales/pt_BR.po +9 -0
  33. package/package.json +1 -1
@@ -19,6 +19,10 @@ import * as i3 from "../i18n/c8y-translate.pipe";
19
19
  */
20
20
  export class PropertiesListComponent {
21
21
  constructor() {
22
+ /**
23
+ * The properties that this list should display.
24
+ */
25
+ this.properties = [];
22
26
  /**
23
27
  * A string array of groups that are shown. If noParse is set to false,
24
28
  * each complex key will form a group.
@@ -35,38 +39,6 @@ export class PropertiesListComponent {
35
39
  * defaults to 'c8ydontshow' and it not rendered
36
40
  */
37
41
  this.emptyLabel = null;
38
- this._data = {};
39
- }
40
- /**
41
- * The properties that this list should display.
42
- */
43
- set properties(items) {
44
- this._properties = this.parseProperties(items);
45
- }
46
- /**
47
- * @ignore
48
- */
49
- get properties() {
50
- if (this.noParse) {
51
- return this._properties;
52
- }
53
- const propsWithGroups = [
54
- ...this._properties,
55
- ...this.groups.map(group => ({
56
- key: group,
57
- label: group,
58
- value: group,
59
- type: 'group'
60
- }))
61
- ].filter(item => item.value !== undefined && item.value !== null);
62
- return sortBy(propsWithGroups, ['key']);
63
- }
64
- /**
65
- * An object where the properties keys are resolved from.
66
- */
67
- set data(data) {
68
- this._data = data;
69
- this._properties = this.parseProperties(this._properties);
70
42
  }
71
43
  /**
72
44
  * Checks if a certain property has an group associated.
@@ -83,7 +55,14 @@ export class PropertiesListComponent {
83
55
  * @ignore
84
56
  */
85
57
  ngOnInit() {
86
- this._properties = this.parseProperties(this._properties);
58
+ this.originalProperties = [...this.properties];
59
+ this.parseProperties();
60
+ }
61
+ ngOnChanges(changes) {
62
+ if (changes.properties || changes.noParse) {
63
+ this.originalProperties = [...this.properties];
64
+ this.parseProperties();
65
+ }
87
66
  }
88
67
  /**
89
68
  * Used in trackBy to avoid recalculation all the time.
@@ -92,13 +71,24 @@ export class PropertiesListComponent {
92
71
  identity(index, item) {
93
72
  return item.value;
94
73
  }
95
- parseProperties(items = []) {
96
- return items.map(item => this.parsePropertyItem(item));
97
- }
98
- parsePropertyItem(item) {
74
+ parseProperties() {
99
75
  if (this.noParse) {
100
- return item;
76
+ this.properties = [...this.originalProperties];
77
+ return;
101
78
  }
79
+ this.properties = this.properties.map(item => this.parsePropertyItem(item));
80
+ const propsWithGroups = [];
81
+ propsWithGroups.push(...this.properties);
82
+ propsWithGroups.push(...this.groups.map(group => ({
83
+ key: group,
84
+ label: group,
85
+ value: group,
86
+ type: 'group'
87
+ })));
88
+ const filteredProps = propsWithGroups.filter(item => item.value != null);
89
+ this.properties = sortBy(filteredProps, ['key']);
90
+ }
91
+ parsePropertyItem(item) {
102
92
  item.value = this.resolveValueFromKey(item);
103
93
  item.value = item.transform && item.value ? item.transform(item.value) : item.value;
104
94
  item.type = this.resolveType(item);
@@ -106,13 +96,13 @@ export class PropertiesListComponent {
106
96
  return item;
107
97
  }
108
98
  resolveValueFromKey(item) {
109
- if (item.key && this._data) {
99
+ if (item.key && this.data) {
110
100
  const keyPath = item.key.split('.');
111
101
  const rootGroup = keyPath[0];
112
102
  if (keyPath.length > 1 && !this.groups.includes(rootGroup)) {
113
103
  this.groups.push(rootGroup);
114
104
  }
115
- return get(this._data, item.key);
105
+ return get(this.data, item.key);
116
106
  }
117
107
  return item.value;
118
108
  }
@@ -126,7 +116,7 @@ export class PropertiesListComponent {
126
116
  return item.value;
127
117
  }
128
118
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PropertiesListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
129
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: PropertiesListComponent, selector: "c8y-properties-list", inputs: { properties: "properties", title: "title", icon: "icon", data: "data", groups: "groups", noParse: "noParse", emptyLabel: "emptyLabel" }, ngImport: i0, template: "<p class=\"m-b-8\" *ngIf=\"title\">\n <i *ngIf=\"icon\" [c8yIcon]=\"icon\" class=\"text-info m-r-8\"></i>\n <span class=\"text-label-small\">{{ title | translate }}</span>\n</p>\n<ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex\"\n *ngFor=\"let prop of properties; let i = index; trackBy: identity\"\n [ngClass]=\"{'separator-top-bottom': i === 0,\n 'separator-bottom': i > 0}\"\n >\n <div\n [ngClass]=\"{\n 'm-l-16': hasGroup(prop),\n legend: prop.type === 'group',\n 'form-block': prop.type === 'group',\n 'm-b-0': prop.type === 'group',\n 'm-t-4': prop.type === 'group'\n }\"\n class=\"small text-medium text-nowrap m-r-4\"\n >\n {{ prop.label | translate }}\n </div>\n <span [ngSwitch]=\"prop.type\" class=\"m-l-auto\">\n <span *ngSwitchCase=\"'string'\" class=\"m-l-auto\">{{ prop.value }}</span>\n <a\n *ngSwitchCase=\"'link'\"\n (click)=\"prop.action($event, prop.value)\"\n class=\"m-l-auto pointer text-truncate m-l-4\"\n >{{ prop.value }}</a>\n <span *ngSwitchCase=\"'array'\">\n <span\n class=\"label label-info m-l-4\"\n *ngFor=\"let propTag of prop.value\"\n (click)=\"prop.action && prop.action($event, propTag)\"\n [ngClass]=\"{\n pointer: prop.action\n }\"\n >{{ propTag }}</span>\n </span>\n </span>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: PropertiesListComponent, selector: "c8y-properties-list", inputs: { properties: "properties", title: "title", icon: "icon", data: "data", groups: "groups", noParse: "noParse", emptyLabel: "emptyLabel" }, usesOnChanges: true, ngImport: i0, template: "<p class=\"m-b-8\" *ngIf=\"title\">\n <i *ngIf=\"icon\" [c8yIcon]=\"icon\" class=\"text-info m-r-8\"></i>\n <span class=\"text-label-small\">{{ title | translate }}</span>\n</p>\n<ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex\"\n *ngFor=\"let prop of properties; let i = index; trackBy: identity\"\n [ngClass]=\"{'separator-top-bottom': i === 0,\n 'separator-bottom': i > 0}\"\n >\n <div\n [ngClass]=\"{\n 'm-l-16': hasGroup(prop),\n legend: prop.type === 'group',\n 'form-block': prop.type === 'group',\n 'm-b-0': prop.type === 'group',\n 'm-t-4': prop.type === 'group'\n }\"\n class=\"small text-medium text-nowrap m-r-4\"\n >\n {{ prop.label | translate }}\n </div>\n <span [ngSwitch]=\"prop.type\" class=\"m-l-auto\">\n <span *ngSwitchCase=\"'string'\" class=\"m-l-auto\">{{ prop.value }}</span>\n <a\n *ngSwitchCase=\"'link'\"\n (click)=\"prop.action($event, prop.value)\"\n class=\"m-l-auto pointer text-truncate m-l-4\"\n >{{ prop.value }}</a>\n <span *ngSwitchCase=\"'array'\">\n <span\n class=\"label label-info m-l-4\"\n *ngFor=\"let propTag of prop.value\"\n (click)=\"prop.action && prop.action($event, propTag)\"\n [ngClass]=\"{\n pointer: prop.action\n }\"\n >{{ propTag }}</span>\n </span>\n </span>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
130
120
  }
131
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PropertiesListComponent, decorators: [{
132
122
  type: Component,
@@ -146,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
146
136
  }], emptyLabel: [{
147
137
  type: Input
148
138
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcHJvcGVydGllcy1saXN0L3Byb3BlcnRpZXMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3Byb3BlcnRpZXMtbGlzdC9wcm9wZXJ0aWVzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBR3hDOzs7Ozs7Ozs7Ozs7R0FZRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7SUFKcEM7UUFzREU7OztXQUdHO1FBRUgsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUV0Qjs7O1dBR0c7UUFFSCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCOzs7O1dBSUc7UUFFSCxlQUFVLEdBQVcsSUFBSSxDQUFDO1FBR2xCLFVBQUssR0FBRyxFQUFFLENBQUM7S0FtRXBCO0lBM0lDOztPQUVHO0lBQ0gsSUFDSSxVQUFVLENBQUMsS0FBMkI7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksVUFBVTtRQUNaLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQixDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsS0FBSyxFQUFFLEtB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TyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQXdCO1FBQzFDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM3RixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBd0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7OEdBM0lVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDZNQ3JCcEMsaThDQTJDQTs7MkZEdEJhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxxQkFBcUI7OEJBUTNCLFVBQVU7c0JBRGIsS0FBSztnQkE2Qk4sS0FBSztzQkFESixLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFPRixJQUFJO3NCQURQLEtBQUs7Z0JBV04sTUFBTTtzQkFETCxLQUFLO2dCQVFOLE9BQU87c0JBRE4sS0FBSztnQkFTTixVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzb3J0QnksIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBQcm9wZXJ0aWVzTGlzdEl0ZW0gfSBmcm9tICcuL3Byb3BlcnRpZXMtbGlzdC5tb2RlbCc7XG5cbi8qKlxuICogUmVuZGVycyBhIGxpc3Qgb2YgcHJvcGVydGllcyBvZiBhbiBvYmplY3QuXG4gKlxuICogYGBgaHRtbFxuICogPGM4eS1wcm9wZXJ0aWVzLWxpc3RcbiAqICAgaWNvbj1cImluZm9cIlxuICogICBbcHJvcGVydGllc109XCJwcm9wZXJ0aWVzXCJcbiAqICAgW2RhdGFdPVwib3B0aW9uc1wiXG4gKiAgIFtlbXB0eUxhYmVsXT1cIictJ1wiXG4gKiAgIFt0aXRsZV09XCInQXBwbGljYXRpb24gcHJvcGVydGllcycgfCB0cmFuc2xhdGVcIlxuICogPjwvYzh5LXByb3BlcnRpZXMtbGlzdD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcHJvcGVydGllcy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnRpZXMtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0xpc3RDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHByb3BlcnRpZXMgdGhhdCB0aGlzIGxpc3Qgc2hvdWxkIGRpc3BsYXkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgcHJvcGVydGllcyhpdGVtczogUHJvcGVydGllc0xpc3RJdGVtW10pIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzID0gdGhpcy5wYXJzZVByb3BlcnRpZXMoaXRlbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldCBwcm9wZXJ0aWVzKCk6IFByb3BlcnRpZXNMaXN0SXRlbVtdIHtcbiAgICBpZiAodGhpcy5ub1BhcnNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllcztcbiAgICB9XG4gICAgY29uc3QgcHJvcHNXaXRoR3JvdXBzID0gW1xuICAgICAgLi4udGhpcy5fcHJvcGVydGllcyxcbiAgICAgIC4uLnRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiAoe1xuICAgICAgICBrZXk6IGdyb3VwLFxuICAgICAgICBsYWJlbDogZ3JvdXAsXG4gICAgICAgIHZhbHVlOiBncm91cCxcbiAgICAgICAgdHlwZTogJ2dyb3VwJ1xuICAgICAgfSkpXG4gICAgXS5maWx0ZXIoaXRlbSA9PiBpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbS52YWx1ZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc29ydEJ5KHByb3BzV2l0aEdyb3VwcywgWydrZXknXSk7XG4gIH1cblxuICAvKipcbiAgICogQSB0aXRsZSBmb3IgdGhlIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBpY29uIHdoaWNoIGlzIGRpc3BsYXllZCBuZXh0IHRvIHRoZSB0aXRsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb246IHN0cmluZztcblxuICAvKipcbiAgICogQW4gb2JqZWN0IHdoZXJlIHRoZSBwcm9wZXJ0aWVzIGtleXMgYXJlIHJlc29sdmVkIGZyb20uXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZGF0YShkYXRhOiBvYmplY3QpIHtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzID0gdGhpcy5wYXJzZVByb3BlcnRpZXModGhpcy5fcHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogQSBzdHJpbmcgYXJyYXkgb2YgZ3JvdXBzIHRoYXQgYXJlIHNob3duLiBJZiBub1BhcnNlIGlzIHNldCB0byBmYWxzZSxcbiAgICogZWFjaCBjb21wbGV4IGtleSB3aWxsIGZvcm0gYSBncm91cC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdyb3Vwczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB0cmllcyB0byBwYXJzZSB0aGUgcHJvcGVydGllcyBhbmQgcmVzb2x2ZSBrZXlzIGFuZCB0eXBlcy4gWW91IGNhblxuICAgKiBhdm9pZCB0aGlzIGJ5IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgbm9QYXJzZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyBsYWJlbCB0byBkaXNwbGF5IGFsbCBwcm9wZXJ0aWVzIGJ1dCB0aGUgZW1wdHkgb25lc1xuICAgKiBnZXQgdGhlIGBlbXB0eUxhYmVsYCBhc3NpZ25lZC4gSWYgdGhlIGVtcHR5IGxhYmVsIGlzIG5vdCBzZXQsXG4gICAqIGRlZmF1bHRzIHRvICdjOHlkb250c2hvdycgYW5kIGl0IG5vdCByZW5kZXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgZW1wdHlMYWJlbDogc3RyaW5nID0gbnVsbDtcblxuICBwcml2YXRlIF9wcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXTtcbiAgcHJpdmF0ZSBfZGF0YSA9IHt9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBjZXJ0YWluIHByb3BlcnR5IGhhcyBhbiBncm91cCBhc3NvY2lhdGVkLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgcHJvcGVydHkgdG8gdmVyaWZ5LlxuICAgKi9cbiAgaGFzR3JvdXAoaXRlbTogUHJvcGVydGllc0xpc3RJdGVtKSB7XG4gICAgaWYgKCFpdGVtLmtleSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBrZXlQYXRoID0gaXRlbS5rZXkuc3BsaXQoJy4nKTtcbiAgICByZXR1cm4ga2V5UGF0aC5sZW5ndGggPiAxICYmIHRoaXMuZ3JvdXBzLmluY2x1ZGVzKGtleVBhdGhbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLnBhcnNlUHJvcGVydGllcyh0aGlzLl9wcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGluIHRyYWNrQnkgdG8gYXZvaWQgcmVjYWxjdWxhdGlvbiBhbGwgdGhlIHRpbWUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlkZW50aXR5KGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUHJvcGVydGllcyhpdGVtczogUHJvcGVydGllc0xpc3RJdGVtW10gPSBbXSkge1xuICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiB0aGlzLnBhcnNlUHJvcGVydHlJdGVtKGl0ZW0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VQcm9wZXJ0eUl0ZW0oaXRlbTogUHJvcGVydGllc0xpc3RJdGVtKTogUHJvcGVydGllc0xpc3RJdGVtIHtcbiAgICBpZiAodGhpcy5ub1BhcnNlKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBpdGVtLnZhbHVlID0gdGhpcy5yZXNvbHZlVmFsdWVGcm9tS2V5KGl0ZW0pO1xuICAgIGl0ZW0udmFsdWUgPSBpdGVtLnRyYW5zZm9ybSAmJiBpdGVtLnZhbHVlID8gaXRlbS50cmFuc2Zvcm0oaXRlbS52YWx1ZSkgOiBpdGVtLnZhbHVlO1xuICAgIGl0ZW0udHlwZSA9IHRoaXMucmVzb2x2ZVR5cGUoaXRlbSk7XG4gICAgaXRlbS52YWx1ZSA9IHRoaXMuYXR0YWNoRW1wdHlMYWJlbChpdGVtKTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVZhbHVlRnJvbUtleShpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pIHtcbiAgICBpZiAoaXRlbS5rZXkgJiYgdGhpcy5fZGF0YSkge1xuICAgICAgY29uc3Qga2V5UGF0aCA9IGl0ZW0ua2V5LnNwbGl0KCcuJyk7XG4gICAgICBjb25zdCByb290R3JvdXAgPSBrZXlQYXRoWzBdO1xuICAgICAgaWYgKGtleVBhdGgubGVuZ3RoID4gMSAmJiAhdGhpcy5ncm91cHMuaW5jbHVkZXMocm9vdEdyb3VwKSkge1xuICAgICAgICB0aGlzLmdyb3Vwcy5wdXNoKHJvb3RHcm91cCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZ2V0KHRoaXMuX2RhdGEsIGl0ZW0ua2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUeXBlKGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0udmFsdWUpID8gJ2FycmF5JyA6IGl0ZW0uYWN0aW9uICYmIGl0ZW0udmFsdWUgPyAnbGluaycgOiAnc3RyaW5nJztcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRW1wdHlMYWJlbChpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pIHtcbiAgICBpZiAoaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGl0ZW0udmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5TGFiZWw7XG4gICAgfVxuICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICB9XG59XG4iLCI8cCBjbGFzcz1cIm0tYi04XCIgKm5nSWY9XCJ0aXRsZVwiPlxuICA8aSAqbmdJZj1cImljb25cIiBbYzh5SWNvbl09XCJpY29uXCIgY2xhc3M9XCJ0ZXh0LWluZm8gbS1yLThcIj48L2k+XG4gIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbFwiPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9wPlxuPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBzbWFsbFwiPlxuICA8bGlcbiAgICBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleFwiXG4gICAgKm5nRm9yPVwibGV0IHByb3Agb2YgcHJvcGVydGllczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogaWRlbnRpdHlcIlxuICAgIFtuZ0NsYXNzXT1cInsnc2VwYXJhdG9yLXRvcC1ib3R0b20nOiBpID09PSAwLFxuICAgICAgICAgICAgICAgICdzZXBhcmF0b3ItYm90dG9tJzogaSA+IDB9XCJcbiAgICA+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbS1sLTE2JzogaGFzR3JvdXAocHJvcCksXG4gICAgICAgIGxlZ2VuZDogcHJvcC50eXBlID09PSAnZ3JvdXAnLFxuICAgICAgICAnZm9ybS1ibG9jayc6IHByb3AudHlwZSA9PT0gJ2dyb3VwJyxcbiAgICAgICAgJ20tYi0wJzogcHJvcC50eXBlID09PSAnZ3JvdXAnLFxuICAgICAgICAnbS10LTQnOiBwcm9wLnR5cGUgPT09ICdncm91cCdcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJzbWFsbCB0ZXh0LW1lZGl1bSB0ZXh0LW5vd3JhcCBtLXItNFwiXG4gICAgPlxuICAgICAge3sgcHJvcC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxzcGFuIFtuZ1N3aXRjaF09XCJwcm9wLnR5cGVcIiBjbGFzcz1cIm0tbC1hdXRvXCI+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIiBjbGFzcz1cIm0tbC1hdXRvXCI+e3sgcHJvcC52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDxhXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAoY2xpY2spPVwicHJvcC5hY3Rpb24oJGV2ZW50LCBwcm9wLnZhbHVlKVwiXG4gICAgICAgIGNsYXNzPVwibS1sLWF1dG8gcG9pbnRlciB0ZXh0LXRydW5jYXRlIG0tbC00XCJcbiAgICAgID57eyBwcm9wLnZhbHVlIH19PC9hPlxuICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm8gbS1sLTRcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9wVGFnIG9mIHByb3AudmFsdWVcIlxuICAgICAgICAgIChjbGljayk9XCJwcm9wLmFjdGlvbiAmJiBwcm9wLmFjdGlvbigkZXZlbnQsIHByb3BUYWcpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBwb2ludGVyOiBwcm9wLmFjdGlvblxuICAgICAgICAgIH1cIlxuICAgICAgICA+e3sgcHJvcFRhZyB9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvbGk+XG48L3VsPlxuIl19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcHJvcGVydGllcy1saXN0L3Byb3BlcnRpZXMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3Byb3BlcnRpZXMtbGlzdC9wcm9wZXJ0aWVzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQUd4Qzs7Ozs7Ozs7Ozs7O0dBWUc7QUFLSCxNQUFNLE9BQU8sdUJBQXVCO0lBSnBDO1FBS0U7O1dBRUc7UUFDTSxlQUFVLEdBQXlCLEVBQUUsQ0FBQztRQW1CL0M7OztXQUdHO1FBRUgsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUV0Qjs7O1dBR0c7UUFFSCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCOzs7O1dBSUc7UUFFSCxlQUFVLEdBQVcsSUFBSSxDQUFDO0tBNkYzQjtJQXpGQzs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBd0I7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVB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SUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQXdCO1FBQzFDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM3RixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBd0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7OEdBdklVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGtPQ3JCcEMsaThDQTJDQTs7MkZEdEJhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxxQkFBcUI7OEJBT3RCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTU4sS0FBSztzQkFESixLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLO2dCQVFOLE9BQU87c0JBRE4sS0FBSztnQkFTTixVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNvcnRCeSwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFByb3BlcnRpZXNMaXN0SXRlbSB9IGZyb20gJy4vcHJvcGVydGllcy1saXN0Lm1vZGVsJztcblxuLyoqXG4gKiBSZW5kZXJzIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8Yzh5LXByb3BlcnRpZXMtbGlzdFxuICogICBpY29uPVwiaW5mb1wiXG4gKiAgIFtwcm9wZXJ0aWVzXT1cInByb3BlcnRpZXNcIlxuICogICBbZGF0YV09XCJvcHRpb25zXCJcbiAqICAgW2VtcHR5TGFiZWxdPVwiJy0nXCJcbiAqICAgW3RpdGxlXT1cIidBcHBsaWNhdGlvbiBwcm9wZXJ0aWVzJyB8IHRyYW5zbGF0ZVwiXG4gKiA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1wcm9wZXJ0aWVzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydGllcy1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0aWVzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyB0aGF0IHRoaXMgbGlzdCBzaG91bGQgZGlzcGxheS5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BlcnRpZXM6IFByb3BlcnRpZXNMaXN0SXRlbVtdID0gW107XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgZm9yIHRoZSBsaXN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaWNvbiB3aGljaCBpcyBkaXNwbGF5ZWQgbmV4dCB0byB0aGUgdGl0bGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBpY29uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCB3aGVyZSB0aGUgcHJvcGVydGllcyBrZXlzIGFyZSByZXNvbHZlZCBmcm9tLlxuICAgKi9cbiAgQElucHV0KCkgZGF0YTogb2JqZWN0O1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBhcnJheSBvZiBncm91cHMgdGhhdCBhcmUgc2hvd24uIElmIG5vUGFyc2UgaXMgc2V0IHRvIGZhbHNlLFxuICAgKiBlYWNoIGNvbXBsZXgga2V5IHdpbGwgZm9ybSBhIGdyb3VwLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHRyaWVzIHRvIHBhcnNlIHRoZSBwcm9wZXJ0aWVzIGFuZCByZXNvbHZlIGtleXMgYW5kIHR5cGVzLiBZb3UgY2FuXG4gICAqIGF2b2lkIHRoaXMgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBub1BhcnNlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIGxhYmVsIHRvIGRpc3BsYXkgYWxsIHByb3BlcnRpZXMgYnV0IHRoZSBlbXB0eSBvbmVzXG4gICAqIGdldCB0aGUgYGVtcHR5TGFiZWxgIGFzc2lnbmVkLiBJZiB0aGUgZW1wdHkgbGFiZWwgaXMgbm90IHNldCxcbiAgICogZGVmYXVsdHMgdG8gJ2M4eWRvbnRzaG93JyBhbmQgaXQgbm90IHJlbmRlcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eUxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgb3JpZ2luYWxQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgY2VydGFpbiBwcm9wZXJ0eSBoYXMgYW4gZ3JvdXAgYXNzb2NpYXRlZC5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIHByb3BlcnR5IHRvIHZlcmlmeS5cbiAgICovXG4gIGhhc0dyb3VwKGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIGlmICghaXRlbS5rZXkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qga2V5UGF0aCA9IGl0ZW0ua2V5LnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIGtleVBhdGgubGVuZ3RoID4gMSAmJiB0aGlzLmdyb3Vwcy5pbmNsdWRlcyhrZXlQYXRoWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9yaWdpbmFsUHJvcGVydGllcyA9IFsuLi50aGlzLnByb3BlcnRpZXNdO1xuICAgIHRoaXMucGFyc2VQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMucHJvcGVydGllcyB8fCBjaGFuZ2VzLm5vUGFyc2UpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxQcm9wZXJ0aWVzID0gWy4uLnRoaXMucHJvcGVydGllc107XG4gICAgICB0aGlzLnBhcnNlUHJvcGVydGllcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGluIHRyYWNrQnkgdG8gYXZvaWQgcmVjYWxjdWxhdGlvbiBhbGwgdGhlIHRpbWUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlkZW50aXR5KGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUHJvcGVydGllcygpIHtcbiAgICBpZiAodGhpcy5ub1BhcnNlKSB7XG4gICAgICB0aGlzLnByb3BlcnRpZXMgPSBbLi4udGhpcy5vcmlnaW5hbFByb3BlcnRpZXNdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcGVydGllcyA9IHRoaXMucHJvcGVydGllcy5tYXAoaXRlbSA9PiB0aGlzLnBhcnNlUHJvcGVydHlJdGVtKGl0ZW0pKTtcbiAgICBjb25zdCBwcm9wc1dpdGhHcm91cHM6IFByb3BlcnRpZXNMaXN0SXRlbVtdID0gW107XG5cbiAgICBwcm9wc1dpdGhHcm91cHMucHVzaCguLi50aGlzLnByb3BlcnRpZXMpO1xuICAgIHByb3BzV2l0aEdyb3Vwcy5wdXNoKFxuICAgICAgLi4udGhpcy5ncm91cHMubWFwKGdyb3VwID0+ICh7XG4gICAgICAgIGtleTogZ3JvdXAsXG4gICAgICAgIGxhYmVsOiBncm91cCxcbiAgICAgICAgdmFsdWU6IGdyb3VwLFxuICAgICAgICB0eXBlOiAnZ3JvdXAnIGFzIGNvbnN0XG4gICAgICB9KSlcbiAgICApO1xuXG4gICAgY29uc3QgZmlsdGVyZWRQcm9wcyA9IHByb3BzV2l0aEdyb3Vwcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnZhbHVlICE9IG51bGwpO1xuXG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gc29ydEJ5KGZpbHRlcmVkUHJvcHMsIFsna2V5J10pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVByb3BlcnR5SXRlbShpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pOiBQcm9wZXJ0aWVzTGlzdEl0ZW0ge1xuICAgIGl0ZW0udmFsdWUgPSB0aGlzLnJlc29sdmVWYWx1ZUZyb21LZXkoaXRlbSk7XG4gICAgaXRlbS52YWx1ZSA9IGl0ZW0udHJhbnNmb3JtICYmIGl0ZW0udmFsdWUgPyBpdGVtLnRyYW5zZm9ybShpdGVtLnZhbHVlKSA6IGl0ZW0udmFsdWU7XG4gICAgaXRlbS50eXBlID0gdGhpcy5yZXNvbHZlVHlwZShpdGVtKTtcbiAgICBpdGVtLnZhbHVlID0gdGhpcy5hdHRhY2hFbXB0eUxhYmVsKGl0ZW0pO1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVmFsdWVGcm9tS2V5KGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIGlmIChpdGVtLmtleSAmJiB0aGlzLmRhdGEpIHtcbiAgICAgIGNvbnN0IGtleVBhdGggPSBpdGVtLmtleS5zcGxpdCgnLicpO1xuICAgICAgY29uc3Qgcm9vdEdyb3VwID0ga2V5UGF0aFswXTtcbiAgICAgIGlmIChrZXlQYXRoLmxlbmd0aCA+IDEgJiYgIXRoaXMuZ3JvdXBzLmluY2x1ZGVzKHJvb3RHcm91cCkpIHtcbiAgICAgICAgdGhpcy5ncm91cHMucHVzaChyb290R3JvdXApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdldCh0aGlzLmRhdGEsIGl0ZW0ua2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUeXBlKGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0udmFsdWUpID8gJ2FycmF5JyA6IGl0ZW0uYWN0aW9uICYmIGl0ZW0udmFsdWUgPyAnbGluaycgOiAnc3RyaW5nJztcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRW1wdHlMYWJlbChpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pIHtcbiAgICBpZiAoaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGl0ZW0udmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5TGFiZWw7XG4gICAgfVxuICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICB9XG59XG4iLCI8cCBjbGFzcz1cIm0tYi04XCIgKm5nSWY9XCJ0aXRsZVwiPlxuICA8aSAqbmdJZj1cImljb25cIiBbYzh5SWNvbl09XCJpY29uXCIgY2xhc3M9XCJ0ZXh0LWluZm8gbS1yLThcIj48L2k+XG4gIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbFwiPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9wPlxuPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBzbWFsbFwiPlxuICA8bGlcbiAgICBjbGFzcz1cInAtdC00IHAtYi00IGQtZmxleFwiXG4gICAgKm5nRm9yPVwibGV0IHByb3Agb2YgcHJvcGVydGllczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogaWRlbnRpdHlcIlxuICAgIFtuZ0NsYXNzXT1cInsnc2VwYXJhdG9yLXRvcC1ib3R0b20nOiBpID09PSAwLFxuICAgICAgICAgICAgICAgICdzZXBhcmF0b3ItYm90dG9tJzogaSA+IDB9XCJcbiAgICA+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbS1sLTE2JzogaGFzR3JvdXAocHJvcCksXG4gICAgICAgIGxlZ2VuZDogcHJvcC50eXBlID09PSAnZ3JvdXAnLFxuICAgICAgICAnZm9ybS1ibG9jayc6IHByb3AudHlwZSA9PT0gJ2dyb3VwJyxcbiAgICAgICAgJ20tYi0wJzogcHJvcC50eXBlID09PSAnZ3JvdXAnLFxuICAgICAgICAnbS10LTQnOiBwcm9wLnR5cGUgPT09ICdncm91cCdcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJzbWFsbCB0ZXh0LW1lZGl1bSB0ZXh0LW5vd3JhcCBtLXItNFwiXG4gICAgPlxuICAgICAge3sgcHJvcC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxzcGFuIFtuZ1N3aXRjaF09XCJwcm9wLnR5cGVcIiBjbGFzcz1cIm0tbC1hdXRvXCI+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIiBjbGFzcz1cIm0tbC1hdXRvXCI+e3sgcHJvcC52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDxhXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAoY2xpY2spPVwicHJvcC5hY3Rpb24oJGV2ZW50LCBwcm9wLnZhbHVlKVwiXG4gICAgICAgIGNsYXNzPVwibS1sLWF1dG8gcG9pbnRlciB0ZXh0LXRydW5jYXRlIG0tbC00XCJcbiAgICAgID57eyBwcm9wLnZhbHVlIH19PC9hPlxuICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm8gbS1sLTRcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9wVGFnIG9mIHByb3AudmFsdWVcIlxuICAgICAgICAgIChjbGljayk9XCJwcm9wLmFjdGlvbiAmJiBwcm9wLmFjdGlvbigkZXZlbnQsIHByb3BUYWcpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBwb2ludGVyOiBwcm9wLmFjdGlvblxuICAgICAgICAgIH1cIlxuICAgICAgICA+e3sgcHJvcFRhZyB9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvbGk+XG48L3VsPlxuIl19
@@ -3,7 +3,7 @@ import { FormGroup } from '@angular/forms';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { ɵdefineHiddenProp } from '@ngx-formly/core';
5
5
  import { find, forOwn, get, mapValues, pick } from 'lodash-es';
6
- import { BehaviorSubject, combineLatest, from, merge, of, Subject } from 'rxjs';
6
+ import { BehaviorSubject, Subject, combineLatest, from, merge, of } from 'rxjs';
7
7
  import { catchError, map, shareReplay, switchMap, tap } from 'rxjs/operators';
8
8
  import { AlertService } from '../alert/alert.service';
9
9
  import { Permissions, Status } from '../common/index';
@@ -96,7 +96,12 @@ export class ProviderConfigurationComponent {
96
96
  : this.model;
97
97
  forOwn(modelToSave, (value, key) => {
98
98
  if (Array.isArray(value)) {
99
- modelToSave[key] = value.filter(item => !!item || item === 0);
99
+ modelToSave[key] = value
100
+ .filter(item => !!item || item === 0)
101
+ .map(item => (typeof item === 'string' ? item.trim() : item));
102
+ }
103
+ else if (typeof value === 'string') {
104
+ modelToSave[key] = value.trim();
100
105
  }
101
106
  });
102
107
  try {
@@ -136,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
136
141
  type: Component,
137
142
  args: [{ selector: 'c8y-sms-gateway', providers: [ProviderConfigurationService, ProviderDefinitionsService], template: "<c8y-title>\n {{ (layout$ | async)?.pageTitle | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle !='Connectivity'\"\n [label]=\"'SMS provider' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [label]=\"'Connectivity' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [icon]=\"'cog'\"\n [label]=\"'SIM provider settings' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div class=\"col-md-8 col-xs-12\">\n <form class=\"card card--fullpage\" (ngSubmit)=\"saveProviderConfiguration()\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ (layout$ | async)?.cardTitle | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <p *ngIf=\"!!(layout$ | async)?.description\" class=\"m-b-8\">\n {{ (layout$ | async)?.description | translate }}\n </p>\n <c8y-form-group>\n <label for=\"providerName\">{{ (layout$ | async)?.providerName | translate }}</label>\n <c8y-typeahead\n [disabled]=\"!permissions.hasAllRoles((layout$ | async)?.saveRoles || [])\"\n [ngModel]=\"selectedProvider$ | async\"\n [displayProperty]=\"'displayName'\"\n name=\"providerName\"\n placeholder=\"{{ (layout$ | async)?.providerNamePlaceholder | translate }}\"\n (onSearch)=\"providerInput$.next($event)\"\n [allowFreeEntries]=\"false\"\n [required]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *ngFor=\"let provider of providers$ | async\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"changeProvider$.next(provider); providerInput$.next('')\"\n [active]=\"(selectedProvider$ | async) === provider\"\n [attr.role]=\"'menuitem'\"\n >\n <c8y-highlight\n [text]=\"provider.displayName || '--'\"\n [pattern]=\"providerInput$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"(layout$ | async)?.providerNameNoMatchesHint | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <formly-form\n *ngIf=\"selectedProvider$ | async\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n </div>\n <div class=\"card-footer separator\" *c8yIfAllowed=\"allRoles$ | async; allowAny\">\n <button\n *c8yIfAllowed=\"(layout$ | async)?.deleteRoles\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"deleteProviderConfiguration()\"\n [disabled]=\"\n !(configuration$ | async)?.provider && !(configuration$ | async)?.providerName\n \"\n title=\"{{ (layout$ | async)?.deleteBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.deleteBtnLabel | translate }}\n </button>\n <button\n *c8yIfAllowed=\"(layout$ | async)?.saveRoles\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n title=\"{{ (layout$ | async)?.saveBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.saveBtnLabel | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
138
143
  }], ctorParameters: () => [{ type: i1.Permissions }, { type: i2.ActivatedRoute }, { type: i3.ModalService }, { type: i4.AlertService }, { type: i5.ProviderDefinitionsService }, { type: i6.ProviderConfigurationService }, { type: i7.C8yJSONSchema }] });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24vcHJvdmlkZXItY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24vcHJvdmlkZXItY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUF3QyxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPdEQsT0FBTyxFQUFFLDRCQUE0QixF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Q0FBQyxNQUFNLENBQUMsc0NBQXNDO2FBQzNELENBQ0YsQ0FBQztZQUNGLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGFBQWlDO1FBQzdELE9BQU8sU0FBUyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7OEdBOUtVLDhCQUE4QjtrR0FBOUIsOEJBQThCLDBDQUY5QixDQUFDLDRCQUE0QixFQUFFLDBCQUEwQixDQUFDLDBCQ3hCdkUsKytIQXdHQTs7MkZEOUVhLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSxpQkFBaUIsYUFFaEIsQ0FBQyw0QkFBNEIsRUFBRSwwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSVJlc3VsdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtT3B0aW9ucywgybVkZWZpbmVIaWRkZW5Qcm9wIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBmaW5kLCBmb3JPd24sIGdldCwgbWFwVmFsdWVzLCBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMsIFN0YXR1cyB9IGZyb20gJy4uL2NvbW1vbi9pbmRleCc7XG5pbXBvcnQgeyBDOHlKU09OU2NoZW1hIH0gZnJvbSAnLi4vZHluYW1pYy1mb3Jtcy9qc29uLXNjaGVtYS9jOHktanNvbi1zY2hlbWEuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIER5bmFtaWNQcm92aWRlckNvbmZpZyxcbiAgRHluYW1pY1Byb3ZpZGVyTGF5b3V0Q29uZmlnXG59IGZyb20gJy4vbW9kZWwvZHluYW1pYy1wcm92aWRlci1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgUHJvdmlkZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9tb2RlbC9wcm92aWRlci1kZWZpbml0aW9uLm1vZGVsJztcbmltcG9ydCB7IFByb3ZpZGVyUHJvcGVydGllcyB9IGZyb20gJy4vbW9kZWwvcHJvdmlkZXItcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBQcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQcm92aWRlckRlZmluaXRpb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9wcm92aWRlci1kZWZpbml0aW9ucy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXNtcy1nYXRld2F5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBQcm92aWRlckRlZmluaXRpb25zU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJDb25maWd1cmF0aW9uQ29tcG9uZW50IHtcbiAgbGF5b3V0JDogT2JzZXJ2YWJsZTxEeW5hbWljUHJvdmlkZXJMYXlvdXRDb25maWc+ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnBpcGUoXG4gICAgbWFwKChjb25maWc6IER5bmFtaWNQcm92aWRlckNvbmZpZykgPT4gY29uZmlnLmxheW91dCksXG4gICAgdGFwKChsYXlvdXQ6IER5bmFtaWNQcm92aWRlckxheW91dENvbmZpZykgPT4gKHRoaXMubGF5b3V0ID0gbGF5b3V0KSksXG4gICAgdGFwKChsYXlvdXQ6IER5bmFtaWNQcm92aWRlckxheW91dENvbmZpZykgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5kaXNhYmxlZCA9ICF0aGlzLnBlcm1pc3Npb25zLmhhc0FsbFJvbGVzKGxheW91dC5zYXZlUm9sZXMgfHwgW10pO1xuICAgICAgdGhpcy5iZWZvcmVTYXZlSG9vayA9IGxheW91dC5iZWZvcmVTYXZlSG9vaztcbiAgICB9KVxuICApO1xuXG4gIGFsbFJvbGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT4gPSB0aGlzLmxheW91dCQucGlwZShcbiAgICBtYXAoKGxheW91dDogRHluYW1pY1Byb3ZpZGVyTGF5b3V0Q29uZmlnKSA9PiBbXG4gICAgICAuLi4obGF5b3V0LmRlbGV0ZVJvbGVzIHx8IFtdKSxcbiAgICAgIC4uLihsYXlvdXQuc2F2ZVJvbGVzIHx8IFtdKVxuICAgIF0pXG4gICk7XG5cbiAgcHJvdmlkZXJzJDogT2JzZXJ2YWJsZTxQcm92aWRlckRlZmluaXRpb25bXT47XG4gIHNlbGVjdGVkUHJvdmlkZXIkOiBPYnNlcnZhYmxlPFByb3ZpZGVyRGVmaW5pdGlvbj47XG4gIGNoYW5nZVByb3ZpZGVyJDogU3ViamVjdDxQcm92aWRlckRlZmluaXRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgY29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8UHJvdmlkZXJQcm9wZXJ0aWVzPjtcbiAgcHJvdmlkZXJJbnB1dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbW9kZWw6IFByb3ZpZGVyUHJvcGVydGllcztcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge1xuICAgIGZvcm1TdGF0ZToge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgcmVsb2FkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4obnVsbCk7XG4gIHByaXZhdGUgdXBkYXRlZENvbmZpZ3VyYXRpb24kID0gbmV3IFN1YmplY3Q8UHJvdmlkZXJQcm9wZXJ0aWVzPigpO1xuICBwcml2YXRlIGxheW91dDogRHluYW1pY1Byb3ZpZGVyTGF5b3V0Q29uZmlnO1xuICBwcml2YXRlIGJlZm9yZVNhdmVIb29rOiAoXG4gICAgbW9kZWw6IFByb3ZpZGVyUHJvcGVydGllcyxcbiAgICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW11cbiAgKSA9PiBQcm9taXNlPFByb3ZpZGVyUHJvcGVydGllcz4gfCBQcm92aWRlclByb3BlcnRpZXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm92aWRlckRlZmluaXRpb25zU2VydmljZTogUHJvdmlkZXJEZWZpbml0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBQcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUganNvbnNjaGVtYTogQzh5SlNPTlNjaGVtYVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgYWxsUHJvdmlkZXJzJDogT2JzZXJ2YWJsZTxQcm92aWRlckRlZmluaXRpb25bXT4gPSBmcm9tKFxuICAgICAgdGhpcy5wcm92aWRlckRlZmluaXRpb25zU2VydmljZS5saXN0KClcbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5kYXRhKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHRoaXMucHJvdmlkZXJzJCA9IGNvbWJpbmVMYXRlc3QoYWxsUHJvdmlkZXJzJCwgdGhpcy5wcm92aWRlcklucHV0JCkucGlwZShcbiAgICAgIG1hcCgoW3Byb3ZpZGVycywgaW5wdXRdOiBbUHJvdmlkZXJEZWZpbml0aW9uW10sIHN0cmluZ10pID0+XG4gICAgICAgIGlucHV0XG4gICAgICAgICAgPyBwcm92aWRlcnMuZmlsdGVyKGVsID0+IGVsLmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpbnB1dC50b0xvd2VyQ2FzZSgpKSA+PSAwKVxuICAgICAgICAgIDogcHJvdmlkZXJzXG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uJCA9IG1lcmdlKFxuICAgICAgdGhpcy51cGRhdGVkQ29uZmlndXJhdGlvbiQsXG4gICAgICB0aGlzLnJlbG9hZCQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgZnJvbSh0aGlzLnByb3ZpZGVyQ29uZmlndXJhdGlvblNlcnZpY2UuZGV0YWlsKCkpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZih7fSBhcyBhbnkpKSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQuZGF0YSlcbiAgICAgIClcbiAgICApLnBpcGUobWFwKHRoaXMucmVtb3ZlRW5jcnlwdGVkVmFsdWVzKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyJCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBhbGxQcm92aWRlcnMkLFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uJCxcbiAgICAgIHRoaXMuY2hhbmdlUHJvdmlkZXIkXG4gICAgKS5waXBlKFxuICAgICAgdGFwKFxuICAgICAgICAoW18sIGNvbmZpZ3VyYXRpb24sIG5ld1Byb3ZpZGVyXTogW1xuICAgICAgICAgIFByb3ZpZGVyRGVmaW5pdGlvbltdLFxuICAgICAgICAgIFByb3ZpZGVyUHJvcGVydGllcyxcbiAgICAgICAgICBQcm92aWRlckRlZmluaXRpb25cbiAgICAgICAgXSkgPT5cbiAgICAgICAgICAodGhpcy5tb2RlbCA9IG5ld1Byb3ZpZGVyXG4gICAgICAgICAgICA/IHBpY2sodGhpcy5tb2RlbCwgJ3Ntcy5zZW5kZXJOYW1lJywgJ3Ntcy5zZW5kZXJBZGRyZXNzJylcbiAgICAgICAgICAgIDogY29uZmlndXJhdGlvbilcbiAgICAgICksXG4gICAgICBtYXAoXG4gICAgICAgIChbcHJvdmlkZXJzLCBjb25maWd1cmF0aW9uLCBuZXdQcm92aWRlcl06IFtcbiAgICAgICAgICBQcm92aWRlckRlZmluaXRpb25bXSxcbiAgICAgICAgICBQcm92aWRlclByb3BlcnRpZXMsXG4gICAgICAgICAgUHJvdmlkZXJEZWZpbml0aW9uXG4gICAgICAgIF0pID0+XG4gICAgICAgICAgbmV3UHJvdmlkZXIgfHxcbiAgICAgICAgICBmaW5kKFxuICAgICAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICAgICAgKHByb3ZpZGVyOiBQcm92aWRlckRlZmluaXRpb24pID0+IGdldChjb25maWd1cmF0aW9uLCAncHJvdmlkZXInKSA9PT0gcHJvdmlkZXIuaWRcbiAgICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKChwcm92aWRlcjogUHJvdmlkZXJEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZzogRm9ybWx5RmllbGRDb25maWcgPSB0aGlzLmpzb25zY2hlbWEudG9GaWVsZENvbmZpZyhnZXQocHJvdmlkZXIsICdzY2hlbWEnKSk7XG4gICAgICAgICAgaWYgKGNvbmZpZy5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgICBjb25maWcuZmllbGRHcm91cC5mb3JFYWNoKChmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgybVkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkQ29uZmlnLCAnX2tleVBhdGgnLCB7XG4gICAgICAgICAgICAgICAga2V5OiBmaWVsZENvbmZpZy5rZXksXG4gICAgICAgICAgICAgICAgcGF0aDogW2ZpZWxkQ29uZmlnLmtleV1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgZmllbGRDb25maWcuZXhwcmVzc2lvblByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6ICdmb3JtU3RhdGUuZGlzYWJsZWQnXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5maWVsZHMgPSBbY29uZmlnXTtcbiAgICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlUHJvdmlkZXJDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IG1vZGVsVG9TYXZlOiBQcm92aWRlclByb3BlcnRpZXMgPSAhIXRoaXMuYmVmb3JlU2F2ZUhvb2tcbiAgICAgID8gYXdhaXQgdGhpcy5iZWZvcmVTYXZlSG9vayh0aGlzLm1vZGVsLCB0aGlzLmZpZWxkcylcbiAgICAgIDogdGhpcy5tb2RlbDtcblxuICAgIGZvck93bihtb2RlbFRvU2F2ZSwgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgbW9kZWxUb1NhdmVba2V5XSA9IHZhbHVlLmZpbHRlcihpdGVtID0+ICEhaXRlbSB8fCBpdGVtID09PSAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXM6IElSZXN1bHQ8UHJvdmlkZXJQcm9wZXJ0aWVzPiA9IGF3YWl0IHRoaXMucHJvdmlkZXJDb25maWd1cmF0aW9uU2VydmljZS51cGRhdGUoXG4gICAgICAgIG1vZGVsVG9TYXZlXG4gICAgICApO1xuICAgICAgdGhpcy5jaGFuZ2VQcm92aWRlciQubmV4dChudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlZENvbmZpZ3VyYXRpb24kLm5leHQocmVzLmRhdGEpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmxheW91dC5jb25maWd1cmF0aW9uVXBkYXRlZFN1Y2Nlc3NNc2cpO1xuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlUHJvdmlkZXJDb25maWd1cmF0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICB0aGlzLmxheW91dC5kZWxldGVDb25maWd1cmF0aW9uTW9kYWxUaXRsZSxcbiAgICAgICAgdGhpcy5sYXlvdXQuZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsQm9keSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAge1xuICAgICAgICAgIG9rOiB0aGlzLmxheW91dC5kZWxldGVDb25maWd1cmF0aW9uTW9kYWxPa0J0bkxhYmVsLFxuICAgICAgICAgIGNhbmNlbDogdGhpcy5sYXlvdXQuZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsQ2FuY2VsQnRuTGFiZWxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXJDb25maWd1cmF0aW9uU2VydmljZS5kZWxldGUoKTtcbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHRoaXMubGF5b3V0LmNvbmZpZ3VyYXRpb25EZWxldGVkU3VjY2Vzc01zZyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUVuY3J5cHRlZFZhbHVlcyhjb25maWd1cmF0aW9uOiBQcm92aWRlclByb3BlcnRpZXMpOiBQcm92aWRlclByb3BlcnRpZXMge1xuICAgIHJldHVybiBtYXBWYWx1ZXMoY29uZmlndXJhdGlvbiwgdmFsdWUgPT4gKHZhbHVlID09PSAnPDxFbmNyeXB0ZWQ+PicgPyB1bmRlZmluZWQgOiB2YWx1ZSkpO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyAobGF5b3V0JCB8IGFzeW5jKT8ucGFnZVRpdGxlIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtsYWJlbF09XCInU2V0dGluZ3MnIHwgdHJhbnNsYXRlXCJcbiAgICBbaWNvbl09XCInY29nJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtICpuZ0lmPVwiKGxheW91dCQgfCBhc3luYyk/LnBhZ2VUaXRsZSAhPSdDb25uZWN0aXZpdHknXCJcbiAgICBbbGFiZWxdPVwiJ1NNUyBwcm92aWRlcicgfCB0cmFuc2xhdGVcIlxuICAgIFtpY29uXT1cIidjb2cnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gKm5nSWY9XCIobGF5b3V0JCB8IGFzeW5jKT8ucGFnZVRpdGxlID09J0Nvbm5lY3Rpdml0eSdcIlxuICAgIFtsYWJlbF09XCInQ29ubmVjdGl2aXR5JyB8IHRyYW5zbGF0ZVwiXG4gICAgW2ljb25dPVwiJ2NvZydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSAqbmdJZj1cIihsYXlvdXQkIHwgYXN5bmMpPy5wYWdlVGl0bGUgPT0nQ29ubmVjdGl2aXR5J1wiXG4gICAgW2ljb25dPVwiJ2NvZydcIlxuICAgIFtsYWJlbF09XCInU0lNIHByb3ZpZGVyIHNldHRpbmdzJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBjb2wteHMtMTJcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImNhcmQgY2FyZC0tZnVsbHBhZ2VcIiAobmdTdWJtaXQpPVwic2F2ZVByb3ZpZGVyQ29uZmlndXJhdGlvbigpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgICAge3sgKGxheW91dCQgfCBhc3luYyk/LmNhcmRUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPlxuICAgICAgICAgIDxwICpuZ0lmPVwiISEobGF5b3V0JCB8IGFzeW5jKT8uZGVzY3JpcHRpb25cIiBjbGFzcz1cIm0tYi04XCI+XG4gICAgICAgICAgICB7eyAobGF5b3V0JCB8IGFzeW5jKT8uZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInByb3ZpZGVyTmFtZVwiPnt7IChsYXlvdXQkIHwgYXN5bmMpPy5wcm92aWRlck5hbWUgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGM4eS10eXBlYWhlYWRcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwZXJtaXNzaW9ucy5oYXNBbGxSb2xlcygobGF5b3V0JCB8IGFzeW5jKT8uc2F2ZVJvbGVzIHx8IFtdKVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJvdmlkZXIkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbZGlzcGxheVByb3BlcnR5XT1cIidkaXNwbGF5TmFtZSdcIlxuICAgICAgICAgICAgICBuYW1lPVwicHJvdmlkZXJOYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAobGF5b3V0JCB8IGFzeW5jKT8ucHJvdmlkZXJOYW1lUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAob25TZWFyY2gpPVwicHJvdmlkZXJJbnB1dCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2FsbG93RnJlZUVudHJpZXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGM4eS1saVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwcm92aWRlcnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1sLTggcC1yLTggYzh5LWxpc3RfX2l0ZW0tLWxpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQcm92aWRlciQubmV4dChwcm92aWRlcik7IHByb3ZpZGVySW5wdXQkLm5leHQoJycpXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cIihzZWxlY3RlZFByb3ZpZGVyJCB8IGFzeW5jKSA9PT0gcHJvdmlkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ21lbnVpdGVtJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Yzh5LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwicHJvdmlkZXIuZGlzcGxheU5hbWUgfHwgJy0tJ1wiXG4gICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJwcm92aWRlcklucHV0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDwvYzh5LXR5cGVhaGVhZD5cbiAgICAgICAgICAgIDxjOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgIG5hbWU9XCJub3RFeGlzdGluZ1wiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiKGxheW91dCQgfCBhc3luYyk/LnByb3ZpZGVyTmFtZU5vTWF0Y2hlc0hpbnQgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGZvcm1seS1mb3JtXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkUHJvdmlkZXIkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgPjwvZm9ybWx5LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCIgKmM4eUlmQWxsb3dlZD1cImFsbFJvbGVzJCB8IGFzeW5jOyBhbGxvd0FueVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKmM4eUlmQWxsb3dlZD1cIihsYXlvdXQkIHwgYXN5bmMpPy5kZWxldGVSb2xlc1wiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJkZWxldGVQcm92aWRlckNvbmZpZ3VyYXRpb24oKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgIShjb25maWd1cmF0aW9uJCB8IGFzeW5jKT8ucHJvdmlkZXIgJiYgIShjb25maWd1cmF0aW9uJCB8IGFzeW5jKT8ucHJvdmlkZXJOYW1lXG4gICAgICAgICAgXCJcbiAgICAgICAgICB0aXRsZT1cInt7IChsYXlvdXQkIHwgYXN5bmMpPy5kZWxldGVCdG5MYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAobGF5b3V0JCB8IGFzeW5jKT8uZGVsZXRlQnRuTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqYzh5SWZBbGxvd2VkPVwiKGxheW91dCQgfCBhc3luYyk/LnNhdmVSb2xlc1wiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgZm9ybS5wcmlzdGluZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAobGF5b3V0JCB8IGFzeW5jKT8uc2F2ZUJ0bkxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IChsYXlvdXQkIHwgYXN5bmMpPy5zYXZlQnRuTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24vcHJvdmlkZXItY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24vcHJvdmlkZXItY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUF3QyxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPdEQsT0FBTyxFQUFFLDRCQUE0QixF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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSVJlc3VsdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtT3B0aW9ucywgybVkZWZpbmVIaWRkZW5Qcm9wIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBmaW5kLCBmb3JPd24sIGdldCwgbWFwVmFsdWVzLCBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbSwgbWVyZ2UsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMsIFN0YXR1cyB9IGZyb20gJy4uL2NvbW1vbi9pbmRleCc7XG5pbXBvcnQgeyBDOHlKU09OU2NoZW1hIH0gZnJvbSAnLi4vZHluYW1pYy1mb3Jtcy9qc29uLXNjaGVtYS9jOHktanNvbi1zY2hlbWEuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIER5bmFtaWNQcm92aWRlckNvbmZpZyxcbiAgRHluYW1pY1Byb3ZpZGVyTGF5b3V0Q29uZmlnXG59IGZyb20gJy4vbW9kZWwvZHluYW1pYy1wcm92aWRlci1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgUHJvdmlkZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9tb2RlbC9wcm92aWRlci1kZWZpbml0aW9uLm1vZGVsJztcbmltcG9ydCB7IFByb3ZpZGVyUHJvcGVydGllcyB9IGZyb20gJy4vbW9kZWwvcHJvdmlkZXItcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBQcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQcm92aWRlckRlZmluaXRpb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9wcm92aWRlci1kZWZpbml0aW9ucy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXNtcy1nYXRld2F5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBQcm92aWRlckRlZmluaXRpb25zU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJDb25maWd1cmF0aW9uQ29tcG9uZW50IHtcbiAgbGF5b3V0JDogT2JzZXJ2YWJsZTxEeW5hbWljUHJvdmlkZXJMYXlvdXRDb25maWc+ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnBpcGUoXG4gICAgbWFwKChjb25maWc6IER5bmFtaWNQcm92aWRlckNvbmZpZykgPT4gY29uZmlnLmxheW91dCksXG4gICAgdGFwKChsYXlvdXQ6IER5bmFtaWNQcm92aWRlckxheW91dENvbmZpZykgPT4gKHRoaXMubGF5b3V0ID0gbGF5b3V0KSksXG4gICAgdGFwKChsYXlvdXQ6IER5bmFtaWNQcm92aWRlckxheW91dENvbmZpZykgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5kaXNhYmxlZCA9ICF0aGlzLnBlcm1pc3Npb25zLmhhc0FsbFJvbGVzKGxheW91dC5zYXZlUm9sZXMgfHwgW10pO1xuICAgICAgdGhpcy5iZWZvcmVTYXZlSG9vayA9IGxheW91dC5iZWZvcmVTYXZlSG9vaztcbiAgICB9KVxuICApO1xuXG4gIGFsbFJvbGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT4gPSB0aGlzLmxheW91dCQucGlwZShcbiAgICBtYXAoKGxheW91dDogRHluYW1pY1Byb3ZpZGVyTGF5b3V0Q29uZmlnKSA9PiBbXG4gICAgICAuLi4obGF5b3V0LmRlbGV0ZVJvbGVzIHx8IFtdKSxcbiAgICAgIC4uLihsYXlvdXQuc2F2ZVJvbGVzIHx8IFtdKVxuICAgIF0pXG4gICk7XG5cbiAgcHJvdmlkZXJzJDogT2JzZXJ2YWJsZTxQcm92aWRlckRlZmluaXRpb25bXT47XG4gIHNlbGVjdGVkUHJvdmlkZXIkOiBPYnNlcnZhYmxlPFByb3ZpZGVyRGVmaW5pdGlvbj47XG4gIGNoYW5nZVByb3ZpZGVyJDogU3ViamVjdDxQcm92aWRlckRlZmluaXRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgY29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8UHJvdmlkZXJQcm9wZXJ0aWVzPjtcbiAgcHJvdmlkZXJJbnB1dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbW9kZWw6IFByb3ZpZGVyUHJvcGVydGllcztcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge1xuICAgIGZvcm1TdGF0ZToge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgcmVsb2FkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4obnVsbCk7XG4gIHByaXZhdGUgdXBkYXRlZENvbmZpZ3VyYXRpb24kID0gbmV3IFN1YmplY3Q8UHJvdmlkZXJQcm9wZXJ0aWVzPigpO1xuICBwcml2YXRlIGxheW91dDogRHluYW1pY1Byb3ZpZGVyTGF5b3V0Q29uZmlnO1xuICBwcml2YXRlIGJlZm9yZVNhdmVIb29rOiAoXG4gICAgbW9kZWw6IFByb3ZpZGVyUHJvcGVydGllcyxcbiAgICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW11cbiAgKSA9PiBQcm9taXNlPFByb3ZpZGVyUHJvcGVydGllcz4gfCBQcm92aWRlclByb3BlcnRpZXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm92aWRlckRlZmluaXRpb25zU2VydmljZTogUHJvdmlkZXJEZWZpbml0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBQcm92aWRlckNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUganNvbnNjaGVtYTogQzh5SlNPTlNjaGVtYVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgYWxsUHJvdmlkZXJzJDogT2JzZXJ2YWJsZTxQcm92aWRlckRlZmluaXRpb25bXT4gPSBmcm9tKFxuICAgICAgdGhpcy5wcm92aWRlckRlZmluaXRpb25zU2VydmljZS5saXN0KClcbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5kYXRhKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHRoaXMucHJvdmlkZXJzJCA9IGNvbWJpbmVMYXRlc3QoYWxsUHJvdmlkZXJzJCwgdGhpcy5wcm92aWRlcklucHV0JCkucGlwZShcbiAgICAgIG1hcCgoW3Byb3ZpZGVycywgaW5wdXRdOiBbUHJvdmlkZXJEZWZpbml0aW9uW10sIHN0cmluZ10pID0+XG4gICAgICAgIGlucHV0XG4gICAgICAgICAgPyBwcm92aWRlcnMuZmlsdGVyKGVsID0+IGVsLmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpbnB1dC50b0xvd2VyQ2FzZSgpKSA+PSAwKVxuICAgICAgICAgIDogcHJvdmlkZXJzXG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uJCA9IG1lcmdlKFxuICAgICAgdGhpcy51cGRhdGVkQ29uZmlndXJhdGlvbiQsXG4gICAgICB0aGlzLnJlbG9hZCQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgZnJvbSh0aGlzLnByb3ZpZGVyQ29uZmlndXJhdGlvblNlcnZpY2UuZGV0YWlsKCkpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZih7fSBhcyBhbnkpKSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHQuZGF0YSlcbiAgICAgIClcbiAgICApLnBpcGUobWFwKHRoaXMucmVtb3ZlRW5jcnlwdGVkVmFsdWVzKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyJCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBhbGxQcm92aWRlcnMkLFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uJCxcbiAgICAgIHRoaXMuY2hhbmdlUHJvdmlkZXIkXG4gICAgKS5waXBlKFxuICAgICAgdGFwKFxuICAgICAgICAoW18sIGNvbmZpZ3VyYXRpb24sIG5ld1Byb3ZpZGVyXTogW1xuICAgICAgICAgIFByb3ZpZGVyRGVmaW5pdGlvbltdLFxuICAgICAgICAgIFByb3ZpZGVyUHJvcGVydGllcyxcbiAgICAgICAgICBQcm92aWRlckRlZmluaXRpb25cbiAgICAgICAgXSkgPT5cbiAgICAgICAgICAodGhpcy5tb2RlbCA9IG5ld1Byb3ZpZGVyXG4gICAgICAgICAgICA/IHBpY2sodGhpcy5tb2RlbCwgJ3Ntcy5zZW5kZXJOYW1lJywgJ3Ntcy5zZW5kZXJBZGRyZXNzJylcbiAgICAgICAgICAgIDogY29uZmlndXJhdGlvbilcbiAgICAgICksXG4gICAgICBtYXAoXG4gICAgICAgIChbcHJvdmlkZXJzLCBjb25maWd1cmF0aW9uLCBuZXdQcm92aWRlcl06IFtcbiAgICAgICAgICBQcm92aWRlckRlZmluaXRpb25bXSxcbiAgICAgICAgICBQcm92aWRlclByb3BlcnRpZXMsXG4gICAgICAgICAgUHJvdmlkZXJEZWZpbml0aW9uXG4gICAgICAgIF0pID0+XG4gICAgICAgICAgbmV3UHJvdmlkZXIgfHxcbiAgICAgICAgICBmaW5kKFxuICAgICAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICAgICAgKHByb3ZpZGVyOiBQcm92aWRlckRlZmluaXRpb24pID0+IGdldChjb25maWd1cmF0aW9uLCAncHJvdmlkZXInKSA9PT0gcHJvdmlkZXIuaWRcbiAgICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKChwcm92aWRlcjogUHJvdmlkZXJEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZzogRm9ybWx5RmllbGRDb25maWcgPSB0aGlzLmpzb25zY2hlbWEudG9GaWVsZENvbmZpZyhnZXQocHJvdmlkZXIsICdzY2hlbWEnKSk7XG4gICAgICAgICAgaWYgKGNvbmZpZy5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgICBjb25maWcuZmllbGRHcm91cC5mb3JFYWNoKChmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgybVkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkQ29uZmlnLCAnX2tleVBhdGgnLCB7XG4gICAgICAgICAgICAgICAga2V5OiBmaWVsZENvbmZpZy5rZXksXG4gICAgICAgICAgICAgICAgcGF0aDogW2ZpZWxkQ29uZmlnLmtleV1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgZmllbGRDb25maWcuZXhwcmVzc2lvblByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6ICdmb3JtU3RhdGUuZGlzYWJsZWQnXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5maWVsZHMgPSBbY29uZmlnXTtcbiAgICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzYXZlUHJvdmlkZXJDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IG1vZGVsVG9TYXZlOiBQcm92aWRlclByb3BlcnRpZXMgPSAhIXRoaXMuYmVmb3JlU2F2ZUhvb2tcbiAgICAgID8gYXdhaXQgdGhpcy5iZWZvcmVTYXZlSG9vayh0aGlzLm1vZGVsLCB0aGlzLmZpZWxkcylcbiAgICAgIDogdGhpcy5tb2RlbDtcblxuICAgIGZvck93bihtb2RlbFRvU2F2ZSwgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgbW9kZWxUb1NhdmVba2V5XSA9IHZhbHVlXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+ICEhaXRlbSB8fCBpdGVtID09PSAwKVxuICAgICAgICAgIC5tYXAoaXRlbSA9PiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbS50cmltKCkgOiBpdGVtKSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbW9kZWxUb1NhdmVba2V5XSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXM6IElSZXN1bHQ8UHJvdmlkZXJQcm9wZXJ0aWVzPiA9XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXJDb25maWd1cmF0aW9uU2VydmljZS51cGRhdGUobW9kZWxUb1NhdmUpO1xuICAgICAgdGhpcy5jaGFuZ2VQcm92aWRlciQubmV4dChudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlZENvbmZpZ3VyYXRpb24kLm5leHQocmVzLmRhdGEpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmxheW91dC5jb25maWd1cmF0aW9uVXBkYXRlZFN1Y2Nlc3NNc2cpO1xuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlUHJvdmlkZXJDb25maWd1cmF0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICB0aGlzLmxheW91dC5kZWxldGVDb25maWd1cmF0aW9uTW9kYWxUaXRsZSxcbiAgICAgICAgdGhpcy5sYXlvdXQuZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsQm9keSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAge1xuICAgICAgICAgIG9rOiB0aGlzLmxheW91dC5kZWxldGVDb25maWd1cmF0aW9uTW9kYWxPa0J0bkxhYmVsLFxuICAgICAgICAgIGNhbmNlbDogdGhpcy5sYXlvdXQuZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsQ2FuY2VsQnRuTGFiZWxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXJDb25maWd1cmF0aW9uU2VydmljZS5kZWxldGUoKTtcbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHRoaXMubGF5b3V0LmNvbmZpZ3VyYXRpb25EZWxldGVkU3VjY2Vzc01zZyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUVuY3J5cHRlZFZhbHVlcyhjb25maWd1cmF0aW9uOiBQcm92aWRlclByb3BlcnRpZXMpOiBQcm92aWRlclByb3BlcnRpZXMge1xuICAgIHJldHVybiBtYXBWYWx1ZXMoY29uZmlndXJhdGlvbiwgdmFsdWUgPT4gKHZhbHVlID09PSAnPDxFbmNyeXB0ZWQ+PicgPyB1bmRlZmluZWQgOiB2YWx1ZSkpO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyAobGF5b3V0JCB8IGFzeW5jKT8ucGFnZVRpdGxlIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtsYWJlbF09XCInU2V0dGluZ3MnIHwgdHJhbnNsYXRlXCJcbiAgICBbaWNvbl09XCInY29nJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtICpuZ0lmPVwiKGxheW91dCQgfCBhc3luYyk/LnBhZ2VUaXRsZSAhPSdDb25uZWN0aXZpdHknXCJcbiAgICBbbGFiZWxdPVwiJ1NNUyBwcm92aWRlcicgfCB0cmFuc2xhdGVcIlxuICAgIFtpY29uXT1cIidjb2cnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gKm5nSWY9XCIobGF5b3V0JCB8IGFzeW5jKT8ucGFnZVRpdGxlID09J0Nvbm5lY3Rpdml0eSdcIlxuICAgIFtsYWJlbF09XCInQ29ubmVjdGl2aXR5JyB8IHRyYW5zbGF0ZVwiXG4gICAgW2ljb25dPVwiJ2NvZydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSAqbmdJZj1cIihsYXlvdXQkIHwgYXN5bmMpPy5wYWdlVGl0bGUgPT0nQ29ubmVjdGl2aXR5J1wiXG4gICAgW2ljb25dPVwiJ2NvZydcIlxuICAgIFtsYWJlbF09XCInU0lNIHByb3ZpZGVyIHNldHRpbmdzJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBjb2wteHMtMTJcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImNhcmQgY2FyZC0tZnVsbHBhZ2VcIiAobmdTdWJtaXQpPVwic2F2ZVByb3ZpZGVyQ29uZmlndXJhdGlvbigpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgICAge3sgKGxheW91dCQgfCBhc3luYyk/LmNhcmRUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPlxuICAgICAgICAgIDxwICpuZ0lmPVwiISEobGF5b3V0JCB8IGFzeW5jKT8uZGVzY3JpcHRpb25cIiBjbGFzcz1cIm0tYi04XCI+XG4gICAgICAgICAgICB7eyAobGF5b3V0JCB8IGFzeW5jKT8uZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInByb3ZpZGVyTmFtZVwiPnt7IChsYXlvdXQkIHwgYXN5bmMpPy5wcm92aWRlck5hbWUgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGM4eS10eXBlYWhlYWRcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwZXJtaXNzaW9ucy5oYXNBbGxSb2xlcygobGF5b3V0JCB8IGFzeW5jKT8uc2F2ZVJvbGVzIHx8IFtdKVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJvdmlkZXIkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbZGlzcGxheVByb3BlcnR5XT1cIidkaXNwbGF5TmFtZSdcIlxuICAgICAgICAgICAgICBuYW1lPVwicHJvdmlkZXJOYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAobGF5b3V0JCB8IGFzeW5jKT8ucHJvdmlkZXJOYW1lUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAob25TZWFyY2gpPVwicHJvdmlkZXJJbnB1dCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2FsbG93RnJlZUVudHJpZXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGM4eS1saVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwcm92aWRlcnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1sLTggcC1yLTggYzh5LWxpc3RfX2l0ZW0tLWxpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQcm92aWRlciQubmV4dChwcm92aWRlcik7IHByb3ZpZGVySW5wdXQkLm5leHQoJycpXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cIihzZWxlY3RlZFByb3ZpZGVyJCB8IGFzeW5jKSA9PT0gcHJvdmlkZXJcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ21lbnVpdGVtJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Yzh5LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwicHJvdmlkZXIuZGlzcGxheU5hbWUgfHwgJy0tJ1wiXG4gICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJwcm92aWRlcklucHV0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICAgIDwvYzh5LXR5cGVhaGVhZD5cbiAgICAgICAgICAgIDxjOHktbWVzc2FnZXM+XG4gICAgICAgICAgICAgIDxjOHktbWVzc2FnZVxuICAgICAgICAgICAgICAgIG5hbWU9XCJub3RFeGlzdGluZ1wiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiKGxheW91dCQgfCBhc3luYyk/LnByb3ZpZGVyTmFtZU5vTWF0Y2hlc0hpbnQgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICA+PC9jOHktbWVzc2FnZT5cbiAgICAgICAgICAgIDwvYzh5LW1lc3NhZ2VzPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGZvcm1seS1mb3JtXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkUHJvdmlkZXIkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgPjwvZm9ybWx5LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCIgKmM4eUlmQWxsb3dlZD1cImFsbFJvbGVzJCB8IGFzeW5jOyBhbGxvd0FueVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKmM4eUlmQWxsb3dlZD1cIihsYXlvdXQkIHwgYXN5bmMpPy5kZWxldGVSb2xlc1wiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJkZWxldGVQcm92aWRlckNvbmZpZ3VyYXRpb24oKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgIShjb25maWd1cmF0aW9uJCB8IGFzeW5jKT8ucHJvdmlkZXIgJiYgIShjb25maWd1cmF0aW9uJCB8IGFzeW5jKT8ucHJvdmlkZXJOYW1lXG4gICAgICAgICAgXCJcbiAgICAgICAgICB0aXRsZT1cInt7IChsYXlvdXQkIHwgYXN5bmMpPy5kZWxldGVCdG5MYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAobGF5b3V0JCB8IGFzeW5jKT8uZGVsZXRlQnRuTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqYzh5SWZBbGxvd2VkPVwiKGxheW91dCQgfCBhc3luYyk/LnNhdmVSb2xlc1wiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgZm9ybS5wcmlzdGluZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAobGF5b3V0JCB8IGFzeW5jKT8uc2F2ZUJ0bkxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IChsYXlvdXQkIHwgYXN5bmMpPy5zYXZlQnRuTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -8,7 +8,7 @@ export class Lwm2mPluginCheckerService {
8
8
  this.applicationService = applicationService;
9
9
  }
10
10
  async isLwm2mPluginInstalled() {
11
- const { data } = await this.applicationService.listByName('LWM2M plugin');
11
+ const { data } = await this.applicationService.listByName('lwm2m-ui-plugin');
12
12
  return data.some(({ manifest }) => manifest?.exports[0]?.module === 'Lwm2mModuleWrapper');
13
13
  }
14
14
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Lwm2mPluginCheckerService, deps: [{ token: i1.ApplicationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
21
21
  }]
22
22
  }], ctorParameters: () => [{ type: i1.ApplicationService }] });
23
23
  export const lwm2mPluginCheckerServiceDowngradedInjectable = downgradeInjectable(Lwm2mPluginCheckerService);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNoZWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL25nMS9wbHVnaW4tY2hlY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFOUQsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUFLLG9CQUFvQixDQUFDLENBQUM7SUFDNUYsQ0FBQzs4R0FOVSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzsyRkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQVVELE1BQU0sQ0FBQyxNQUFNLDZDQUE2QyxHQUN4RCxtQkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZG93bmdyYWRlSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL3VwZ3JhZGUvc3RhdGljJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTHdtMm1QbHVnaW5DaGVja2VyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwbGljYXRpb25TZXJ2aWNlOiBBcHBsaWNhdGlvblNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgaXNMd20ybVBsdWdpbkluc3RhbGxlZCgpIHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmxpc3RCeU5hbWUoJ0xXTTJNIHBsdWdpbicpO1xuICAgIHJldHVybiBkYXRhLnNvbWUoKHsgbWFuaWZlc3QgfSkgPT4gbWFuaWZlc3Q/LmV4cG9ydHNbMF0/Lm1vZHVsZSA9PT0gJ0x3bTJtTW9kdWxlV3JhcHBlcicpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBsd20ybVBsdWdpbkNoZWNrZXJTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUgPVxuICBkb3duZ3JhZGVJbmplY3RhYmxlKEx3bTJtUGx1Z2luQ2hlY2tlclNlcnZpY2UpO1xuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNoZWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL25nMS9wbHVnaW4tY2hlY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFOUQsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUssb0JBQW9CLENBQUMsQ0FBQztJQUM1RixDQUFDOzhHQU5VLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBVUQsTUFBTSxDQUFDLE1BQU0sNkNBQTZDLEdBQ3hELG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkb3duZ3JhZGVJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvdXBncmFkZS9zdGF0aWMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMd20ybVBsdWdpbkNoZWNrZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSkge31cblxuICBhc3luYyBpc0x3bTJtUGx1Z2luSW5zdGFsbGVkKCkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdEJ5TmFtZSgnbHdtMm0tdWktcGx1Z2luJyk7XG4gICAgcmV0dXJuIGRhdGEuc29tZSgoeyBtYW5pZmVzdCB9KSA9PiBtYW5pZmVzdD8uZXhwb3J0c1swXT8ubW9kdWxlID09PSAnTHdtMm1Nb2R1bGVXcmFwcGVyJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGx3bTJtUGx1Z2luQ2hlY2tlclNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9XG4gIGRvd25ncmFkZUluamVjdGFibGUoTHdtMm1QbHVnaW5DaGVja2VyU2VydmljZSk7XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, inject, InjectionToken, EventEmitter, Input, Output, forwardRef, Optional, Inject, ViewChild, HostBinding, HostListener, TemplateRef, NgModule } from '@angular/core';
3
3
  import * as i3 from '@c8y/ngx-components';
4
- import { gettext, Permissions, ContextRouteService, ViewContext, Status, NavigatorNode, getActivatedRoute, NEW_DASHBOARD_QUERY_PARAM, memoize, DashboardChildChange, WidgetsDashboardComponent, hookRoute, CoreModule, hookTab, HookProviderTypes, hookActionBar, hookNavigator, BaseColumn, getBasicInputArrayFormFieldConfig, DataGridService, alertOnError, BuiltInActionType, ModalModule } from '@c8y/ngx-components';
4
+ import { gettext, Permissions, ContextRouteService, ViewContext, Status, NavigatorNode, getActivatedRoute, NEW_DASHBOARD_QUERY_PARAM, memoize, DashboardChildChange, CopyDashboardDisabledReason, WidgetsDashboardComponent, hookRoute, CoreModule, hookTab, HookProviderTypes, hookActionBar, hookNavigator, BaseColumn, getBasicInputArrayFormFieldConfig, DataGridService, alertOnError, BuiltInActionType, ModalModule } from '@c8y/ngx-components';
5
5
  import * as i1 from '@angular/router';
6
6
  import { of, Subject, from, combineLatest, iif, timer } from 'rxjs';
7
7
  import * as i2 from '@angular/common';
@@ -2739,7 +2739,7 @@ class ContextDashboardComponent {
2739
2739
  children: this.mo.c8y_Dashboard.children,
2740
2740
  changeHistory: {}
2741
2741
  });
2742
- this.isCopyDisabled = !this.canCopyDashboard();
2742
+ this.isCopyDisabled = this.getDashboardCopyPermissionState();
2743
2743
  }
2744
2744
  async cancelEditMode(onDeactivate = false) {
2745
2745
  const dashboardChildren = this.editModeService.reset();
@@ -2825,7 +2825,9 @@ class ContextDashboardComponent {
2825
2825
  dashboard: true,
2826
2826
  ...this.dashboard?.classes
2827
2827
  };
2828
- this.isCopyDisabled = this.dashboard ? !this.canCopyDashboard() : true;
2828
+ this.isCopyDisabled = this.dashboard
2829
+ ? this.getDashboardCopyPermissionState()
2830
+ : { state: false, reason: null };
2829
2831
  this.editModeService.init({
2830
2832
  name: gettext('Initial state'),
2831
2833
  children: dashboardChildren,
@@ -2949,9 +2951,9 @@ class ContextDashboardComponent {
2949
2951
  };
2950
2952
  this.canDelete = false;
2951
2953
  }
2952
- canCopyDashboard() {
2954
+ getDashboardCopyPermissionState() {
2953
2955
  if (!this.contextDashboardService.hasPermissionsToCopyDashboard()) {
2954
- return false;
2956
+ return { state: false, reason: CopyDashboardDisabledReason.PERMISSIONS };
2955
2957
  }
2956
2958
  const allDashboardChildrenAreValid = every(this.mo.c8y_Dashboard.children, child => {
2957
2959
  const config = child.config || {};
@@ -2959,7 +2961,10 @@ class ContextDashboardComponent {
2959
2961
  return !((config.device && config.device.id !== this.context.id) ||
2960
2962
  some(dataPoints, dataPoint => dataPoint.__target?.id !== this.context.id));
2961
2963
  });
2962
- return allDashboardChildrenAreValid;
2964
+ if (!allDashboardChildrenAreValid) {
2965
+ return { state: false, reason: CopyDashboardDisabledReason.WRONG_REFERENCE };
2966
+ }
2967
+ return { state: true };
2963
2968
  }
2964
2969
  setNewState(state, descriptionProp, widgetsChanged) {
2965
2970
  const description = this.getDescriptionForNewState(descriptionProp, widgetsChanged);