@c8y/ngx-components 1018.0.6 → 1018.0.8

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 (22) hide show
  1. package/auth-configuration/sso-configuration/sso-configuration.model.d.ts +1 -0
  2. package/auth-configuration/sso-configuration/template-parts/external-token-config.component.d.ts +7 -6
  3. package/auth-configuration/sso-configuration/template-parts/external-token-config.model.d.ts +9 -7
  4. package/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.d.ts +8 -3
  5. package/esm2020/auth-configuration/sso-configuration/sso-configuration.model.mjs +1 -1
  6. package/esm2020/auth-configuration/sso-configuration/template-parts/external-token-config.component.mjs +6 -4
  7. package/esm2020/auth-configuration/sso-configuration/template-parts/external-token-config.model.mjs +13 -5
  8. package/esm2020/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.mjs +15 -5
  9. package/esm2020/auth-configuration/sso-configuration/templates/aad-template.component.mjs +3 -3
  10. package/esm2020/auth-configuration/sso-configuration/templates/custom-template.component.mjs +3 -3
  11. package/esm2020/auth-configuration/sso-configuration/templates/key-cloak-template.component.mjs +3 -3
  12. package/esm2020/core/properties-list/properties-list.component.mjs +3 -3
  13. package/fesm2015/c8y-ngx-components-auth-configuration.mjs +35 -17
  14. package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  15. package/fesm2015/c8y-ngx-components.mjs +2 -2
  16. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  17. package/fesm2020/c8y-ngx-components-auth-configuration.mjs +35 -17
  18. package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  19. package/fesm2020/c8y-ngx-components.mjs +2 -2
  20. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  21. package/locales/locales.pot +3 -0
  22. package/package.json +1 -1
@@ -128,10 +128,10 @@ export class PropertiesListComponent {
128
128
  }
129
129
  }
130
130
  PropertiesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PropertiesListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
- PropertiesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", 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)\"\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" }] });
131
+ PropertiesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", 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" }] });
132
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PropertiesListComponent, decorators: [{
133
133
  type: Component,
134
- args: [{ selector: 'c8y-properties-list', 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)\"\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" }]
134
+ args: [{ selector: 'c8y-properties-list', 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" }]
135
135
  }], propDecorators: { properties: [{
136
136
  type: Input
137
137
  }], title: [{
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
147
147
  }], emptyLabel: [{
148
148
  type: Input
149
149
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcHJvcGVydGllcy1saXN0L3Byb3BlcnRpZXMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3Byb3BlcnRpZXMtbGlzdC9wcm9wZXJ0aWVzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBR3hDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFLSCxNQUFNLE9BQU8sdUJBQXVCO0lBSnBDO1FBc0RFOzs7V0FHRztRQUVILFdBQU0sR0FBYSxFQUFFLENBQUM7UUFFdEI7OztXQUdHO1FBRUgsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQjs7OztXQUlHO1FBRUgsZUFBVSxHQUFXLElBQUksQ0FBQztRQUdsQixVQUFLLEdBQUcsRUFBRSxDQUFDO0tBbUVwQjtJQTNJQzs7T0FFRztJQUNILElBQ0ksVUFBVSxDQUFDLEtBQTJCO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3pCO1FBQ0QsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsS0FBSyxFQUFFLEtBQUs7Z0JBQ1os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QUcsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBd0I7UUFDMUMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzdGLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUF3QjtRQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDOztvSEEzSVUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNk1DdEJwQywyN0NBMkNBOzJGRHJCYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCOzhCQVEzQixVQUFVO3NCQURiLEtBQUs7Z0JBNkJOLEtBQUs7c0JBREosS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT0YsSUFBSTtzQkFEUCxLQUFLO2dCQVdOLE1BQU07c0JBREwsS0FBSztnQkFRTixPQUFPO3NCQUROLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc29ydEJ5LCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgUHJvcGVydGllc0xpc3RJdGVtIH0gZnJvbSAnLi9wcm9wZXJ0aWVzLWxpc3QubW9kZWwnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBsaXN0IG9mIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8Yzh5LXByb3BlcnRpZXMtbGlzdFxuICogICBpY29uPVwiaW5mb1wiXG4gKiAgIFtwcm9wZXJ0aWVzXT1cInByb3BlcnRpZXNcIlxuICogICBbZGF0YV09XCJvcHRpb25zXCJcbiAqICAgW2VtcHR5TGFiZWxdPVwiJy0nXCJcbiAqICAgW3RpdGxlXT1cIidBcHBsaWNhdGlvbiBwcm9wZXJ0aWVzJyB8IHRyYW5zbGF0ZVwiXG4gKiA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1wcm9wZXJ0aWVzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydGllcy1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0aWVzTGlzdENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyB0aGF0IHRoaXMgbGlzdCBzaG91bGQgZGlzcGxheS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBwcm9wZXJ0aWVzKGl0ZW1zOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSkge1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLnBhcnNlUHJvcGVydGllcyhpdGVtcyk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IHByb3BlcnRpZXMoKTogUHJvcGVydGllc0xpc3RJdGVtW10ge1xuICAgIGlmICh0aGlzLm5vUGFyc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBjb25zdCBwcm9wc1dpdGhHcm91cHMgPSBbXG4gICAgICAuLi50aGlzLl9wcm9wZXJ0aWVzLFxuICAgICAgLi4udGhpcy5ncm91cHMubWFwKGdyb3VwID0+ICh7XG4gICAgICAgIGtleTogZ3JvdXAsXG4gICAgICAgIGxhYmVsOiBncm91cCxcbiAgICAgICAgdmFsdWU6IGdyb3VwLFxuICAgICAgICB0eXBlOiAnZ3JvdXAnXG4gICAgICB9KSlcbiAgICBdLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzb3J0QnkocHJvcHNXaXRoR3JvdXBzLCBbJ2tleSddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHRpdGxlIGZvciB0aGUgbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGljb24gd2hpY2ggaXMgZGlzcGxheWVkIG5leHQgdG8gdGhlIHRpdGxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgaWNvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBvYmplY3Qgd2hlcmUgdGhlIHByb3BlcnRpZXMga2V5cyBhcmUgcmVzb2x2ZWQgZnJvbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKGRhdGE6IG9iamVjdCkge1xuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLnBhcnNlUHJvcGVydGllcyh0aGlzLl9wcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBhcnJheSBvZiBncm91cHMgdGhhdCBhcmUgc2hvd24uIElmIG5vUGFyc2UgaXMgc2V0IHRvIGZhbHNlLFxuICAgKiBlYWNoIGNvbXBsZXgga2V5IHdpbGwgZm9ybSBhIGdyb3VwLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHRyaWVzIHRvIHBhcnNlIHRoZSBwcm9wZXJ0aWVzIGFuZCByZXNvbHZlIGtleXMgYW5kIHR5cGVzLiBZb3UgY2FuXG4gICAqIGF2b2lkIHRoaXMgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBub1BhcnNlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIGxhYmVsIHRvIGRpc3BsYXkgYWxsIHByb3BlcnRpZXMgYnV0IHRoZSBlbXB0eSBvbmVzXG4gICAqIGdldCB0aGUgYGVtcHR5TGFiZWxgIGFzc2lnbmVkLiBJZiB0aGUgZW1wdHkgbGFiZWwgaXMgbm90IHNldCxcbiAgICogZGVmYXVsdHMgdG8gJ2M4eWRvbnRzaG93JyBhbmQgaXQgbm90IHJlbmRlcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eUxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgX3Byb3BlcnRpZXM6IFByb3BlcnRpZXNMaXN0SXRlbVtdO1xuICBwcml2YXRlIF9kYXRhID0ge307XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGNlcnRhaW4gcHJvcGVydHkgaGFzIGFuIGdyb3VwIGFzc29jaWF0ZWQuXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBwcm9wZXJ0eSB0byB2ZXJpZnkuXG4gICAqL1xuICBoYXNHcm91cChpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0ua2V5KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleVBhdGggPSBpdGVtLmtleS5zcGxpdCgnLicpO1xuICAgIHJldHVybiBrZXlQYXRoLmxlbmd0aCA+IDEgJiYgdGhpcy5ncm91cHMuaW5jbHVkZXMoa2V5UGF0aFswXSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGVydGllcyA9IHRoaXMucGFyc2VQcm9wZXJ0aWVzKHRoaXMuX3Byb3BlcnRpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgaW4gdHJhY2tCeSB0byBhdm9pZCByZWNhbGN1bGF0aW9uIGFsbCB0aGUgdGltZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaWRlbnRpdHkoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VQcm9wZXJ0aWVzKGl0ZW1zOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IFtdKSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IHRoaXMucGFyc2VQcm9wZXJ0eUl0ZW0oaXRlbSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVByb3BlcnR5SXRlbShpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pOiBQcm9wZXJ0aWVzTGlzdEl0ZW0ge1xuICAgIGlmICh0aGlzLm5vUGFyc2UpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIGl0ZW0udmFsdWUgPSB0aGlzLnJlc29sdmVWYWx1ZUZyb21LZXkoaXRlbSk7XG4gICAgaXRlbS52YWx1ZSA9IGl0ZW0udHJhbnNmb3JtICYmIGl0ZW0udmFsdWUgPyBpdGVtLnRyYW5zZm9ybShpdGVtLnZhbHVlKSA6IGl0ZW0udmFsdWU7XG4gICAgaXRlbS50eXBlID0gdGhpcy5yZXNvbHZlVHlwZShpdGVtKTtcbiAgICBpdGVtLnZhbHVlID0gdGhpcy5hdHRhY2hFbXB0eUxhYmVsKGl0ZW0pO1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVmFsdWVGcm9tS2V5KGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIGlmIChpdGVtLmtleSAmJiB0aGlzLl9kYXRhKSB7XG4gICAgICBjb25zdCBrZXlQYXRoID0gaXRlbS5rZXkuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IHJvb3RHcm91cCA9IGtleVBhdGhbMF07XG4gICAgICBpZiAoa2V5UGF0aC5sZW5ndGggPiAxICYmICF0aGlzLmdyb3Vwcy5pbmNsdWRlcyhyb290R3JvdXApKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBzLnB1c2gocm9vdEdyb3VwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXQodGhpcy5fZGF0YSwgaXRlbS5rZXkpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVR5cGUoaXRlbTogUHJvcGVydGllc0xpc3RJdGVtKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbS52YWx1ZSkgPyAnYXJyYXknIDogaXRlbS5hY3Rpb24gJiYgaXRlbS52YWx1ZSA/ICdsaW5rJyA6ICdzdHJpbmcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hFbXB0eUxhYmVsKGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIGlmIChpdGVtLnZhbHVlID09PSB1bmRlZmluZWQgfHwgaXRlbS52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW1wdHlMYWJlbDtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cbn1cbiIsIjxwIGNsYXNzPVwibS1iLThcIiAqbmdJZj1cInRpdGxlXCI+XG4gIDxpICpuZ0lmPVwiaWNvblwiIFtjOHlJY29uXT1cImljb25cIiBjbGFzcz1cInRleHQtaW5mbyBtLXItOFwiPjwvaT5cbiAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCI+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG48L3A+XG48dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIHNtYWxsXCI+XG4gIDxsaVxuICAgIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4XCJcbiAgICAqbmdGb3I9XCJsZXQgcHJvcCBvZiBwcm9wZXJ0aWVzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiBpZGVudGl0eVwiXG4gICAgW25nQ2xhc3NdPVwieydzZXBhcmF0b3ItdG9wLWJvdHRvbSc6IGkgPT09IDAsXG4gICAgICAgICAgICAgICAgJ3NlcGFyYXRvci1ib3R0b20nOiBpID4gMH1cIlxuICAgID5cbiAgICA8ZGl2XG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtLWwtMTYnOiBoYXNHcm91cChwcm9wKSxcbiAgICAgICAgbGVnZW5kOiBwcm9wLnR5cGUgPT09ICdncm91cCcsXG4gICAgICAgICdmb3JtLWJsb2NrJzogcHJvcC50eXBlID09PSAnZ3JvdXAnLFxuICAgICAgICAnbS1iLTAnOiBwcm9wLnR5cGUgPT09ICdncm91cCcsXG4gICAgICAgICdtLXQtNCc6IHByb3AudHlwZSA9PT0gJ2dyb3VwJ1xuICAgICAgfVwiXG4gICAgICBjbGFzcz1cInNtYWxsIHRleHQtbWVkaXVtIHRleHQtbm93cmFwIG0tci00XCJcbiAgICA+XG4gICAgICB7eyBwcm9wLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gW25nU3dpdGNoXT1cInByb3AudHlwZVwiIGNsYXNzPVwibS1sLWF1dG9cIj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3RyaW5nJ1wiIGNsYXNzPVwibS1sLWF1dG9cIj57eyBwcm9wLnZhbHVlIH19PC9zcGFuPlxuICAgICAgPGFcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgIChjbGljayk9XCJwcm9wLmFjdGlvbigkZXZlbnQsIHByb3ApXCJcbiAgICAgICAgY2xhc3M9XCJtLWwtYXV0byBwb2ludGVyIHRleHQtdHJ1bmNhdGUgbS1sLTRcIlxuICAgICAgPnt7IHByb3AudmFsdWUgfX08L2E+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2FycmF5J1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mbyBtLWwtNFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHByb3BUYWcgb2YgcHJvcC52YWx1ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInByb3AuYWN0aW9uICYmIHByb3AuYWN0aW9uKCRldmVudCwgcHJvcFRhZylcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIHBvaW50ZXI6IHByb3AuYWN0aW9uXG4gICAgICAgICAgfVwiXG4gICAgICAgID57eyBwcm9wVGFnIH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcHJvcGVydGllcy1saXN0L3Byb3BlcnRpZXMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3Byb3BlcnRpZXMtbGlzdC9wcm9wZXJ0aWVzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBR3hDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFLSCxNQUFNLE9BQU8sdUJBQXVCO0lBSnBDO1FBc0RFOzs7V0FHRztRQUVILFdBQU0sR0FBYSxFQUFFLENBQUM7UUFFdEI7OztXQUdHO1FBRUgsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQjs7OztXQUlHO1FBRUgsZUFBVSxHQUFXLElBQUksQ0FBQztRQUdsQixVQUFLLEdBQUcsRUFBRSxDQUFDO0tBbUVwQjtJQTNJQzs7T0FFRztJQUNILElBQ0ksVUFBVSxDQUFDLEtBQTJCO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3pCO1FBQ0QsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsS0FBSyxFQUFFLEtBQUs7Z0JBQ1os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QUcsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBd0I7UUFDMUMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzdGLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUF3QjtRQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDOztvSEEzSVUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNk1DdEJwQyxpOENBMkNBOzJGRHJCYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCOzhCQVEzQixVQUFVO3NCQURiLEtBQUs7Z0JBNkJOLEtBQUs7c0JBREosS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT0YsSUFBSTtzQkFEUCxLQUFLO2dCQVdOLE1BQU07c0JBREwsS0FBSztnQkFRTixPQUFPO3NCQUROLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc29ydEJ5LCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgUHJvcGVydGllc0xpc3RJdGVtIH0gZnJvbSAnLi9wcm9wZXJ0aWVzLWxpc3QubW9kZWwnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBsaXN0IG9mIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8Yzh5LXByb3BlcnRpZXMtbGlzdFxuICogICBpY29uPVwiaW5mb1wiXG4gKiAgIFtwcm9wZXJ0aWVzXT1cInByb3BlcnRpZXNcIlxuICogICBbZGF0YV09XCJvcHRpb25zXCJcbiAqICAgW2VtcHR5TGFiZWxdPVwiJy0nXCJcbiAqICAgW3RpdGxlXT1cIidBcHBsaWNhdGlvbiBwcm9wZXJ0aWVzJyB8IHRyYW5zbGF0ZVwiXG4gKiA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1wcm9wZXJ0aWVzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydGllcy1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0aWVzTGlzdENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgcHJvcGVydGllcyB0aGF0IHRoaXMgbGlzdCBzaG91bGQgZGlzcGxheS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBwcm9wZXJ0aWVzKGl0ZW1zOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSkge1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLnBhcnNlUHJvcGVydGllcyhpdGVtcyk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IHByb3BlcnRpZXMoKTogUHJvcGVydGllc0xpc3RJdGVtW10ge1xuICAgIGlmICh0aGlzLm5vUGFyc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICAgIH1cbiAgICBjb25zdCBwcm9wc1dpdGhHcm91cHMgPSBbXG4gICAgICAuLi50aGlzLl9wcm9wZXJ0aWVzLFxuICAgICAgLi4udGhpcy5ncm91cHMubWFwKGdyb3VwID0+ICh7XG4gICAgICAgIGtleTogZ3JvdXAsXG4gICAgICAgIGxhYmVsOiBncm91cCxcbiAgICAgICAgdmFsdWU6IGdyb3VwLFxuICAgICAgICB0eXBlOiAnZ3JvdXAnXG4gICAgICB9KSlcbiAgICBdLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzb3J0QnkocHJvcHNXaXRoR3JvdXBzLCBbJ2tleSddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHRpdGxlIGZvciB0aGUgbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGljb24gd2hpY2ggaXMgZGlzcGxheWVkIG5leHQgdG8gdGhlIHRpdGxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgaWNvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBvYmplY3Qgd2hlcmUgdGhlIHByb3BlcnRpZXMga2V5cyBhcmUgcmVzb2x2ZWQgZnJvbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKGRhdGE6IG9iamVjdCkge1xuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLnBhcnNlUHJvcGVydGllcyh0aGlzLl9wcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBhcnJheSBvZiBncm91cHMgdGhhdCBhcmUgc2hvd24uIElmIG5vUGFyc2UgaXMgc2V0IHRvIGZhbHNlLFxuICAgKiBlYWNoIGNvbXBsZXgga2V5IHdpbGwgZm9ybSBhIGdyb3VwLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHRyaWVzIHRvIHBhcnNlIHRoZSBwcm9wZXJ0aWVzIGFuZCByZXNvbHZlIGtleXMgYW5kIHR5cGVzLiBZb3UgY2FuXG4gICAqIGF2b2lkIHRoaXMgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBub1BhcnNlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIGxhYmVsIHRvIGRpc3BsYXkgYWxsIHByb3BlcnRpZXMgYnV0IHRoZSBlbXB0eSBvbmVzXG4gICAqIGdldCB0aGUgYGVtcHR5TGFiZWxgIGFzc2lnbmVkLiBJZiB0aGUgZW1wdHkgbGFiZWwgaXMgbm90IHNldCxcbiAgICogZGVmYXVsdHMgdG8gJ2M4eWRvbnRzaG93JyBhbmQgaXQgbm90IHJlbmRlcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eUxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgX3Byb3BlcnRpZXM6IFByb3BlcnRpZXNMaXN0SXRlbVtdO1xuICBwcml2YXRlIF9kYXRhID0ge307XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGNlcnRhaW4gcHJvcGVydHkgaGFzIGFuIGdyb3VwIGFzc29jaWF0ZWQuXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBwcm9wZXJ0eSB0byB2ZXJpZnkuXG4gICAqL1xuICBoYXNHcm91cChpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0ua2V5KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleVBhdGggPSBpdGVtLmtleS5zcGxpdCgnLicpO1xuICAgIHJldHVybiBrZXlQYXRoLmxlbmd0aCA+IDEgJiYgdGhpcy5ncm91cHMuaW5jbHVkZXMoa2V5UGF0aFswXSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGVydGllcyA9IHRoaXMucGFyc2VQcm9wZXJ0aWVzKHRoaXMuX3Byb3BlcnRpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgaW4gdHJhY2tCeSB0byBhdm9pZCByZWNhbGN1bGF0aW9uIGFsbCB0aGUgdGltZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaWRlbnRpdHkoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VQcm9wZXJ0aWVzKGl0ZW1zOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IFtdKSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IHRoaXMucGFyc2VQcm9wZXJ0eUl0ZW0oaXRlbSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVByb3BlcnR5SXRlbShpdGVtOiBQcm9wZXJ0aWVzTGlzdEl0ZW0pOiBQcm9wZXJ0aWVzTGlzdEl0ZW0ge1xuICAgIGlmICh0aGlzLm5vUGFyc2UpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIGl0ZW0udmFsdWUgPSB0aGlzLnJlc29sdmVWYWx1ZUZyb21LZXkoaXRlbSk7XG4gICAgaXRlbS52YWx1ZSA9IGl0ZW0udHJhbnNmb3JtICYmIGl0ZW0udmFsdWUgPyBpdGVtLnRyYW5zZm9ybShpdGVtLnZhbHVlKSA6IGl0ZW0udmFsdWU7XG4gICAgaXRlbS50eXBlID0gdGhpcy5yZXNvbHZlVHlwZShpdGVtKTtcbiAgICBpdGVtLnZhbHVlID0gdGhpcy5hdHRhY2hFbXB0eUxhYmVsKGl0ZW0pO1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVmFsdWVGcm9tS2V5KGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIGlmIChpdGVtLmtleSAmJiB0aGlzLl9kYXRhKSB7XG4gICAgICBjb25zdCBrZXlQYXRoID0gaXRlbS5rZXkuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IHJvb3RHcm91cCA9IGtleVBhdGhbMF07XG4gICAgICBpZiAoa2V5UGF0aC5sZW5ndGggPiAxICYmICF0aGlzLmdyb3Vwcy5pbmNsdWRlcyhyb290R3JvdXApKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBzLnB1c2gocm9vdEdyb3VwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXQodGhpcy5fZGF0YSwgaXRlbS5rZXkpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVR5cGUoaXRlbTogUHJvcGVydGllc0xpc3RJdGVtKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbS52YWx1ZSkgPyAnYXJyYXknIDogaXRlbS5hY3Rpb24gJiYgaXRlbS52YWx1ZSA/ICdsaW5rJyA6ICdzdHJpbmcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hFbXB0eUxhYmVsKGl0ZW06IFByb3BlcnRpZXNMaXN0SXRlbSkge1xuICAgIGlmIChpdGVtLnZhbHVlID09PSB1bmRlZmluZWQgfHwgaXRlbS52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW1wdHlMYWJlbDtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cbn1cbiIsIjxwIGNsYXNzPVwibS1iLThcIiAqbmdJZj1cInRpdGxlXCI+XG4gIDxpICpuZ0lmPVwiaWNvblwiIFtjOHlJY29uXT1cImljb25cIiBjbGFzcz1cInRleHQtaW5mbyBtLXItOFwiPjwvaT5cbiAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCI+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG48L3A+XG48dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIHNtYWxsXCI+XG4gIDxsaVxuICAgIGNsYXNzPVwicC10LTQgcC1iLTQgZC1mbGV4XCJcbiAgICAqbmdGb3I9XCJsZXQgcHJvcCBvZiBwcm9wZXJ0aWVzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiBpZGVudGl0eVwiXG4gICAgW25nQ2xhc3NdPVwieydzZXBhcmF0b3ItdG9wLWJvdHRvbSc6IGkgPT09IDAsXG4gICAgICAgICAgICAgICAgJ3NlcGFyYXRvci1ib3R0b20nOiBpID4gMH1cIlxuICAgID5cbiAgICA8ZGl2XG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtLWwtMTYnOiBoYXNHcm91cChwcm9wKSxcbiAgICAgICAgbGVnZW5kOiBwcm9wLnR5cGUgPT09ICdncm91cCcsXG4gICAgICAgICdmb3JtLWJsb2NrJzogcHJvcC50eXBlID09PSAnZ3JvdXAnLFxuICAgICAgICAnbS1iLTAnOiBwcm9wLnR5cGUgPT09ICdncm91cCcsXG4gICAgICAgICdtLXQtNCc6IHByb3AudHlwZSA9PT0gJ2dyb3VwJ1xuICAgICAgfVwiXG4gICAgICBjbGFzcz1cInNtYWxsIHRleHQtbWVkaXVtIHRleHQtbm93cmFwIG0tci00XCJcbiAgICA+XG4gICAgICB7eyBwcm9wLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gW25nU3dpdGNoXT1cInByb3AudHlwZVwiIGNsYXNzPVwibS1sLWF1dG9cIj5cbiAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3RyaW5nJ1wiIGNsYXNzPVwibS1sLWF1dG9cIj57eyBwcm9wLnZhbHVlIH19PC9zcGFuPlxuICAgICAgPGFcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgIChjbGljayk9XCJwcm9wLmFjdGlvbigkZXZlbnQsIHByb3AudmFsdWUpXCJcbiAgICAgICAgY2xhc3M9XCJtLWwtYXV0byBwb2ludGVyIHRleHQtdHJ1bmNhdGUgbS1sLTRcIlxuICAgICAgPnt7IHByb3AudmFsdWUgfX08L2E+XG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2FycmF5J1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mbyBtLWwtNFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHByb3BUYWcgb2YgcHJvcC52YWx1ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInByb3AuYWN0aW9uICYmIHByb3AuYWN0aW9uKCRldmVudCwgcHJvcFRhZylcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIHBvaW50ZXI6IHByb3AuYWN0aW9uXG4gICAgICAgICAgfVwiXG4gICAgICAgID57eyBwcm9wVGFnIH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
@@ -1115,8 +1115,9 @@ const validationMethodConfig = {
1115
1115
  method: 'POST',
1116
1116
  body: 'token=${accessToken}&client_id=${clientId}&client_secret=',
1117
1117
  url: '',
1118
- headers: [],
1119
- requestParams: []
1118
+ headers: {},
1119
+ operation: 'EXECUTE',
1120
+ requestParams: {}
1120
1121
  }
1121
1122
  },
1122
1123
  [ValidationMethod.USERINFO]: {
@@ -1127,8 +1128,9 @@ const validationMethodConfig = {
1127
1128
  url: '',
1128
1129
  method: 'GET',
1129
1130
  body: '',
1130
- headers: [{ key: 'Authorization', value: 'Bearer ${accessToken}' }],
1131
- requestParams: []
1131
+ headers: { Authorization: 'Bearer ${accessToken}' },
1132
+ operation: 'EXECUTE',
1133
+ requestParams: {}
1132
1134
  }
1133
1135
  }
1134
1136
  };
@@ -1140,9 +1142,14 @@ const defaultTokenValidationRequest = {
1140
1142
  operation: 'EXECUTE',
1141
1143
  requestParams: {}
1142
1144
  };
1145
+ const defaultUserIdConfig = {
1146
+ jwtField: '',
1147
+ useConstantValue: true
1148
+ };
1143
1149
  class ExternalToken {
1144
1150
  constructor(externalTokenConfig) {
1145
1151
  const _externalTokenConfig = Object.assign({ enabled: false }, externalTokenConfig);
1152
+ this.userOrAppIdConfig = _externalTokenConfig.userOrAppIdConfig || defaultUserIdConfig;
1146
1153
  this.validationMethod = _externalTokenConfig.validationMethod || ValidationMethod.INTROSPECTION;
1147
1154
  this.validationRequired = _externalTokenConfig.validationRequired;
1148
1155
  this.enabled = _externalTokenConfig.enabled;
@@ -1155,6 +1162,7 @@ class ExternalToken {
1155
1162
  return { enabled: this.enabled };
1156
1163
  }
1157
1164
  const externalTokenConfig = {
1165
+ userOrAppIdConfig: this.userOrAppIdConfig,
1158
1166
  validationRequired: this.validationRequired,
1159
1167
  enabled: this.enabled
1160
1168
  };
@@ -1308,12 +1316,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1308
1316
  }], shouldShow: [] } });
1309
1317
 
1310
1318
  class UserIdConfigurationComponent {
1319
+ constructor() {
1320
+ this.withHeader = true;
1321
+ this.componentId = 0;
1322
+ }
1311
1323
  shouldShow(field) {
1312
- return field in this.templateModel.userIdConfig;
1324
+ return field in this.userIdConfig;
1325
+ }
1326
+ ngOnInit() {
1327
+ this.componentId = ++UserIdConfigurationComponent.id;
1313
1328
  }
1314
1329
  }
1330
+ UserIdConfigurationComponent.id = 0;
1315
1331
  UserIdConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserIdConfigurationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1316
- UserIdConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-t-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>User ID</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group\n *ngIf=\"shouldShow('useConstantValue') && templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"constantValue\" class=\"control-label\" translate>Constant value</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"constantValue\"\n name=\"constantValue\"\n [(ngModel)]=\"templateModel.userIdConfig.constantValue\"\n required\n />\n </c8y-form-group>\n <c8y-form-group\n *ngIf=\"!shouldShow('useConstantValue') || !templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"jwtField\" class=\"control-label\" translate>JWT field</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"jwtField\"\n name=\"jwtField\"\n [(ngModel)]=\"templateModel.userIdConfig.jwtField\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'upn' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"form-group\" *ngIf=\"shouldShow('useConstantValue')\">\n <label title=\"{{ 'Use constant value' | translate }}\" class=\"c8y-switch m-t-24\">\n <input\n type=\"checkbox\"\n name=\"useConstantValue\"\n id=\"useConstantValue\"\n [(ngModel)]=\"templateModel.userIdConfig.useConstantValue\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Use constant value' | translate }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.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: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1332
+ UserIdConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: { userIdConfig: "userIdConfig", withHeader: "withHeader" }, ngImport: i0, template: "<div class=\"col-md-12 p-t-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div *ngIf=\"withHeader\" class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>User ID</div>\n </div>\n <div [ngClass]=\"withHeader ? 'col-xs-12 col-sm-9 col-md-10 col-lg-9' : 'row'\">\n <div *ngIf=\"!withHeader\" class=\"legend form-block m-t-4\">\n <span translate>User/App ID</span>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group *ngIf=\"userIdConfig.useConstantValue\">\n <label [for]=\"'constantValue' + componentId\" class=\"control-label\" translate>\n Constant value\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n [id]=\"'constantValue' + componentId\"\n [name]=\"'constantValue' + componentId\"\n [(ngModel)]=\"userIdConfig.constantValue\"\n required\n />\n </c8y-form-group>\n <c8y-form-group *ngIf=\"!userIdConfig.useConstantValue\">\n <label [for]=\"'jwtField' + componentId\" class=\"control-label\" translate>\n JWT field\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n [id]=\"'jwtField' + componentId\"\n [name]=\"'jwtField' + componentId\"\n [(ngModel)]=\"userIdConfig.jwtField\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'upn' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"form-group\" *ngIf=\"shouldShow('useConstantValue')\">\n <label\n [for]=\"'useConstantValue' + componentId\"\n title=\"{{ 'Use constant value' | translate }}\"\n class=\"c8y-switch m-t-24\"\n >\n <input\n type=\"checkbox\"\n [name]=\"'useConstantValue' + componentId\"\n [id]=\"'useConstantValue' + componentId\"\n [(ngModel)]=\"userIdConfig.useConstantValue\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Use constant value' | translate }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.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: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1317
1333
  __decorate([
1318
1334
  memoize(),
1319
1335
  __metadata("design:type", Function),
@@ -1322,8 +1338,10 @@ __decorate([
1322
1338
  ], UserIdConfigurationComponent.prototype, "shouldShow", null);
1323
1339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserIdConfigurationComponent, decorators: [{
1324
1340
  type: Component,
1325
- args: [{ selector: 'c8y-user-id-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-t-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>User ID</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group\n *ngIf=\"shouldShow('useConstantValue') && templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"constantValue\" class=\"control-label\" translate>Constant value</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"constantValue\"\n name=\"constantValue\"\n [(ngModel)]=\"templateModel.userIdConfig.constantValue\"\n required\n />\n </c8y-form-group>\n <c8y-form-group\n *ngIf=\"!shouldShow('useConstantValue') || !templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"jwtField\" class=\"control-label\" translate>JWT field</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"jwtField\"\n name=\"jwtField\"\n [(ngModel)]=\"templateModel.userIdConfig.jwtField\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'upn' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"form-group\" *ngIf=\"shouldShow('useConstantValue')\">\n <label title=\"{{ 'Use constant value' | translate }}\" class=\"c8y-switch m-t-24\">\n <input\n type=\"checkbox\"\n name=\"useConstantValue\"\n id=\"useConstantValue\"\n [(ngModel)]=\"templateModel.userIdConfig.useConstantValue\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Use constant value' | translate }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
1326
- }], propDecorators: { templateModel: [{
1341
+ args: [{ selector: 'c8y-user-id-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-t-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div *ngIf=\"withHeader\" class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>User ID</div>\n </div>\n <div [ngClass]=\"withHeader ? 'col-xs-12 col-sm-9 col-md-10 col-lg-9' : 'row'\">\n <div *ngIf=\"!withHeader\" class=\"legend form-block m-t-4\">\n <span translate>User/App ID</span>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group *ngIf=\"userIdConfig.useConstantValue\">\n <label [for]=\"'constantValue' + componentId\" class=\"control-label\" translate>\n Constant value\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n [id]=\"'constantValue' + componentId\"\n [name]=\"'constantValue' + componentId\"\n [(ngModel)]=\"userIdConfig.constantValue\"\n required\n />\n </c8y-form-group>\n <c8y-form-group *ngIf=\"!userIdConfig.useConstantValue\">\n <label [for]=\"'jwtField' + componentId\" class=\"control-label\" translate>\n JWT field\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n [id]=\"'jwtField' + componentId\"\n [name]=\"'jwtField' + componentId\"\n [(ngModel)]=\"userIdConfig.jwtField\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'upn' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"form-group\" *ngIf=\"shouldShow('useConstantValue')\">\n <label\n [for]=\"'useConstantValue' + componentId\"\n title=\"{{ 'Use constant value' | translate }}\"\n class=\"c8y-switch m-t-24\"\n >\n <input\n type=\"checkbox\"\n [name]=\"'useConstantValue' + componentId\"\n [id]=\"'useConstantValue' + componentId\"\n [(ngModel)]=\"userIdConfig.useConstantValue\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Use constant value' | translate }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
1342
+ }], propDecorators: { userIdConfig: [{
1343
+ type: Input
1344
+ }], withHeader: [{
1327
1345
  type: Input
1328
1346
  }], shouldShow: [] } });
1329
1347
 
@@ -1669,14 +1687,14 @@ class ExternalTokenConfigComponent {
1669
1687
  }
1670
1688
  onValidationMethodChange(event) {
1671
1689
  this.externalTokenConfig.validationMethod = event;
1672
- this.externalTokenConfig.tokenValidationRequest = this.validationMethods[event].defaults;
1690
+ this.externalTokenConfig.tokenValidationRequest = new RequestConfiguration(this.validationMethods[event].defaults);
1673
1691
  }
1674
1692
  }
1675
1693
  ExternalTokenConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ExternalTokenConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1676
- ExternalTokenConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external AIM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external AIM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.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: i3$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1694
+ ExternalTokenConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external AIM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external AIM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <c8y-user-id-configuration\n [userIdConfig]=\"externalTokenConfig.userOrAppIdConfig\"\n [withHeader]=\"false\"\n ></c8y-user-id-configuration>\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.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: i3$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1677
1695
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ExternalTokenConfigComponent, decorators: [{
1678
1696
  type: Component,
1679
- args: [{ selector: 'c8y-external-token-config', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external AIM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external AIM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
1697
+ args: [{ selector: 'c8y-external-token-config', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external AIM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external AIM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <c8y-user-id-configuration\n [userIdConfig]=\"externalTokenConfig.userOrAppIdConfig\"\n [withHeader]=\"false\"\n ></c8y-user-id-configuration>\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
1680
1698
  }], propDecorators: { templateModel: [{
1681
1699
  type: Input
1682
1700
  }] } });
@@ -1688,10 +1706,10 @@ class CustomTemplateComponent extends TemplateComponent {
1688
1706
  }
1689
1707
  }
1690
1708
  CustomTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CustomTemplateComponent, deps: [{ token: CustomConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component });
1691
- CustomTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CustomTemplateComponent, selector: "c8y-custom-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Authorization request' | translate\"\n [requestType]=\"'authorizationRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Token request' | translate\"\n [requestType]=\"'tokenRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Refresh request' | translate\"\n [requestType]=\"'refreshRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-external-token-config\n [templateModel]=\"templateModel\">\n </c8y-external-token-config>\n <hr/>\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n >\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [templateModel]=\"templateModel\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }, { kind: "component", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: ["templateModel"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1709
+ CustomTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CustomTemplateComponent, selector: "c8y-custom-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Authorization request' | translate\"\n [requestType]=\"'authorizationRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Token request' | translate\"\n [requestType]=\"'tokenRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Refresh request' | translate\"\n [requestType]=\"'refreshRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-external-token-config\n [templateModel]=\"templateModel\">\n </c8y-external-token-config>\n <hr/>\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n >\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [userIdConfig]=\"templateModel.userIdConfig\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }, { kind: "component", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: ["templateModel"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1692
1710
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CustomTemplateComponent, decorators: [{
1693
1711
  type: Component,
1694
- args: [{ selector: 'c8y-custom-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"templateModel\">\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Authorization request' | translate\"\n [requestType]=\"'authorizationRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Token request' | translate\"\n [requestType]=\"'tokenRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Refresh request' | translate\"\n [requestType]=\"'refreshRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-external-token-config\n [templateModel]=\"templateModel\">\n </c8y-external-token-config>\n <hr/>\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n >\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [templateModel]=\"templateModel\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n" }]
1712
+ args: [{ selector: 'c8y-custom-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"templateModel\">\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Authorization request' | translate\"\n [requestType]=\"'authorizationRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Token request' | translate\"\n [requestType]=\"'tokenRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Refresh request' | translate\"\n [requestType]=\"'refreshRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-external-token-config\n [templateModel]=\"templateModel\">\n </c8y-external-token-config>\n <hr/>\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n >\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [userIdConfig]=\"templateModel.userIdConfig\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n" }]
1695
1713
  }], ctorParameters: function () { return [{ type: CustomConfigurationMapper }]; } });
1696
1714
 
1697
1715
  class KeyCloakConfigurationMapper {
@@ -1815,10 +1833,10 @@ class KeyCloakTemplateComponent extends TemplateComponent {
1815
1833
  }
1816
1834
  }
1817
1835
  KeyCloakTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: KeyCloakTemplateComponent, deps: [{ token: KeyCloakConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component });
1818
- KeyCloakTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: KeyCloakTemplateComponent, selector: "c8y-key-cloak-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr/>\n <c8y-user-id-configuration [templateModel]=\"templateModel\"></c8y-user-id-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1836
+ KeyCloakTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: KeyCloakTemplateComponent, selector: "c8y-key-cloak-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr/>\n <c8y-user-id-configuration [userIdConfig]=\"templateModel.userIdConfig\"></c8y-user-id-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
1819
1837
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: KeyCloakTemplateComponent, decorators: [{
1820
1838
  type: Component,
1821
- args: [{ selector: 'c8y-key-cloak-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr/>\n <c8y-user-id-configuration [templateModel]=\"templateModel\"></c8y-user-id-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n</div>\n" }]
1839
+ args: [{ selector: 'c8y-key-cloak-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr/>\n <c8y-user-id-configuration [userIdConfig]=\"templateModel.userIdConfig\"></c8y-user-id-configuration>\n <hr/>\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\">\n </c8y-request-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n</div>\n" }]
1822
1840
  }], ctorParameters: function () { return [{ type: KeyCloakConfigurationMapper }]; } });
1823
1841
 
1824
1842
  class AadConfigurationMapper {
@@ -2029,10 +2047,10 @@ class AadTemplateComponent extends TemplateComponent {
2029
2047
  }
2030
2048
  }
2031
2049
  AadTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AadTemplateComponent, deps: [{ token: AadConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component });
2032
- AadTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AadTemplateComponent, selector: "c8y-aad-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-logout-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-logout-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [templateModel]=\"templateModel\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }, { kind: "component", type: LogoutConfigurationComponent, selector: "c8y-sso-logout-configuration", inputs: ["templateModel"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
2050
+ AadTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AadTemplateComponent, selector: "c8y-aad-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-logout-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-logout-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [userIdConfig]=\"templateModel.userIdConfig\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }, { kind: "component", type: LogoutConfigurationComponent, selector: "c8y-sso-logout-configuration", inputs: ["templateModel"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
2033
2051
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AadTemplateComponent, decorators: [{
2034
2052
  type: Component,
2035
- args: [{ selector: 'c8y-aad-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-logout-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-logout-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [templateModel]=\"templateModel\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n" }]
2053
+ args: [{ selector: 'c8y-aad-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-logout-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-logout-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [userIdConfig]=\"templateModel.userIdConfig\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n" }]
2036
2054
  }], ctorParameters: function () { return [{ type: AadConfigurationMapper }]; } });
2037
2055
 
2038
2056
  class SsoConfigurationComponent {