@myrmidon/auth-jwt-admin 4.0.0 → 4.1.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.
@@ -96,12 +96,12 @@ export class UserEditorComponent {
96
96
  }
97
97
  this.userChange.emit(this.getUserFromForm());
98
98
  }
99
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserEditorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.AuthJwtService }], target: i0.ɵɵFactoryTarget.Component }); }
100
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: UserEditorComponent, selector: "auth-jwt-user-editor", inputs: { user: "user" }, outputs: { userChange: "userChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n>email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n <mat-error\n i18n\n *ngIf=\"email.hasError('required') && (email.dirty || email.touched)\"\n >\n email address required\n </mat-error>\n <mat-error\n i18n\n *ngIf=\"email.hasError('pattern') && (email.dirty || email.touched)\"\n >\n invalid email address\n </mat-error>\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n\n >lockout enabled</mat-checkbox\n >\n <button\n mat-icon-button\n color=\"primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon>lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n>first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n <mat-error\n i18n\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name required\n </mat-error>\n <mat-error\n i18n\n *ngIf=\"\n firstName.hasError('maxlength') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name too long\n </mat-error>\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n>last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n <mat-error\n i18n\n *ngIf=\"\n lastName.hasError('required') && (lastName.dirty || lastName.touched)\n \"\n >\n last name required\n </mat-error>\n <mat-error\n i18n\n *ngIf=\"\n lastName.hasError('maxlength') && (lastName.dirty || lastName.touched)\n \"\n >\n last name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n>roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n <mat-error\n i18n\n *ngIf=\"roles.hasError('maxlength') && (roles.dirty || roles.touched)\"\n >\n too long\n </mat-error>\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matTooltip\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip\n matTooltip=\"Save user\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserEditorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.AuthJwtService }], target: i0.ɵɵFactoryTarget.Component }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: UserEditorComponent, selector: "auth-jwt-user-editor", inputs: { user: "user" }, outputs: { userChange: "userChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"email.hasError('required') && (email.dirty || email.touched)\"\n >\n email address required\n </mat-error>\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"email.hasError('pattern') && (email.dirty || email.touched)\"\n >\n invalid email address\n </mat-error>\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n=\"auth-jwt-admin\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n=\"auth-jwt-admin\"\n >lockout enabled</mat-checkbox\n >\n <button\n mat-icon-button\n color=\"primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon>lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name required\n </mat-error>\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n firstName.hasError('maxlength') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name too long\n </mat-error>\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n lastName.hasError('required') && (lastName.dirty || lastName.touched)\n \"\n >\n last name required\n </mat-error>\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n lastName.hasError('maxlength') && (lastName.dirty || lastName.touched)\n \"\n >\n last name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n=\"auth-jwt-admin\">roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"roles.hasError('maxlength') && (roles.dirty || roles.touched)\"\n >\n too long\n </mat-error>\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Save user\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
101
101
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserEditorComponent, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserEditorComponent, decorators: [{
103
103
  type: Component,
104
- args: [{ selector: 'auth-jwt-user-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n>email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n <mat-error\n i18n\n *ngIf=\"email.hasError('required') && (email.dirty || email.touched)\"\n >\n email address required\n </mat-error>\n <mat-error\n i18n\n *ngIf=\"email.hasError('pattern') && (email.dirty || email.touched)\"\n >\n invalid email address\n </mat-error>\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n\n >lockout enabled</mat-checkbox\n >\n <button\n mat-icon-button\n color=\"primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon>lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n>first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n <mat-error\n i18n\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name required\n </mat-error>\n <mat-error\n i18n\n *ngIf=\"\n firstName.hasError('maxlength') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name too long\n </mat-error>\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n>last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n <mat-error\n i18n\n *ngIf=\"\n lastName.hasError('required') && (lastName.dirty || lastName.touched)\n \"\n >\n last name required\n </mat-error>\n <mat-error\n i18n\n *ngIf=\"\n lastName.hasError('maxlength') && (lastName.dirty || lastName.touched)\n \"\n >\n last name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n>roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n <mat-error\n i18n\n *ngIf=\"roles.hasError('maxlength') && (roles.dirty || roles.touched)\"\n >\n too long\n </mat-error>\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matTooltip\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip\n matTooltip=\"Save user\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
104
+ args: [{ selector: 'auth-jwt-user-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"email.hasError('required') && (email.dirty || email.touched)\"\n >\n email address required\n </mat-error>\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"email.hasError('pattern') && (email.dirty || email.touched)\"\n >\n invalid email address\n </mat-error>\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n=\"auth-jwt-admin\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n=\"auth-jwt-admin\"\n >lockout enabled</mat-checkbox\n >\n <button\n mat-icon-button\n color=\"primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon>lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n firstName.hasError('required') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name required\n </mat-error>\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n firstName.hasError('maxlength') &&\n (firstName.dirty || firstName.touched)\n \"\n >\n first name too long\n </mat-error>\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n lastName.hasError('required') && (lastName.dirty || lastName.touched)\n \"\n >\n last name required\n </mat-error>\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"\n lastName.hasError('maxlength') && (lastName.dirty || lastName.touched)\n \"\n >\n last name too long\n </mat-error>\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n=\"auth-jwt-admin\">roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n <mat-error\n i18n=\"auth-jwt-admin\"\n *ngIf=\"roles.hasError('maxlength') && (roles.dirty || roles.touched)\"\n >\n too long\n </mat-error>\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Save user\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
105
105
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.AuthJwtService }], propDecorators: { user: [{
106
106
  type: Input
107
107
  }], userChange: [{
@@ -109,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
109
109
  }], editorClose: [{
110
110
  type: Output
111
111
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZWRpdG9yL3VzZXItZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWVkaXRvci91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFReEIsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixJQUFvQixJQUFJLENBQUMsS0FBdUI7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFLRCxZQUFZLFdBQStCLEVBQVUsWUFBNEI7UUFBNUIsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQy9FLFNBQVM7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLE9BQU87UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3JDLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FB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QyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLEVBQUU7U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLEtBQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBekdVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHlKQ2RoQyxzeEdBbUlBOzsyRkRySGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLHNCQUFzQjtvSEFpQlosSUFBSTtzQkFBdkIsS0FBSztnQkFRSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0aEp3dFNlcnZpY2UsIFVzZXIgfSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXRoLWp3dC11c2VyLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VzZXItZWRpdG9yLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX3VzZXI6IFVzZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGVtYWlsOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBlbWFpbENvbmZpcm1lZDogVW50eXBlZEZvcm1Db250cm9sO1xuICBwdWJsaWMgbG9ja291dEVuYWJsZWQ6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHVibGljIGZpcnN0TmFtZTogVW50eXBlZEZvcm1Db250cm9sO1xuICBwdWJsaWMgbGFzdE5hbWU6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHVibGljIHJvbGVzOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyB1bmxvY2tlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHVzZXIodmFsdWU6IFVzZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl91c2VyID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHVzZXIoKTogVXNlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXI7XG4gIH1cblxuICBAT3V0cHV0KCkgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPFVzZXI+O1xuICBAT3V0cHV0KCkgZWRpdG9yQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoSnd0U2VydmljZSkge1xuICAgIC8vIGV2ZW50c1xuICAgIHRoaXMudXNlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlcj4oKTtcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gZm9ybVxuICAgIHRoaXMuZW1haWwgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLmVtYWlsLFxuICAgIF0pO1xuICAgIHRoaXMuZW1haWxDb25maXJtZWQgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlKTtcbiAgICB0aGlzLmxvY2tvdXRFbmFibGVkID0gZm9ybUJ1aWxkZXIuY29udHJvbChmYWxzZSk7XG4gICAgdGhpcy5maXJzdE5hbWUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXG4gICAgXSk7XG4gICAgdGhpcy5sYXN0TmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcbiAgICBdKTtcbiAgICB0aGlzLnJvbGVzID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApKTtcblxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGVtYWlsOiB0aGlzLmVtYWlsLFxuICAgICAgZW1haWxDb25maXJtZWQ6IHRoaXMuZW1haWxDb25maXJtZWQsXG4gICAgICBsb2Nrb3V0RW5hYmxlZDogdGhpcy5sb2Nrb3V0RW5hYmxlZCxcbiAgICAgIGZpcnN0TmFtZTogdGhpcy5maXJzdE5hbWUsXG4gICAgICBsYXN0TmFtZTogdGhpcy5sYXN0TmFtZSxcbiAgICAgIHJvbGVzOiB0aGlzLnJvbGVzLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHByaXZhdGUgdXBkYXRlRm9ybSh1c2VyOiBVc2VyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWFpbC5zZXRWYWx1ZSh1c2VyLmVtYWlsKTtcbiAgICAgIHRoaXMuZW1haWxDb25maXJtZWQuc2V0VmFsdWUodXNlci5lbWFpbENvbmZpcm1lZCk7XG4gICAgICB0aGlzLmxvY2tvdXRFbmFibGVkLnNldFZhbHVlKHVzZXIubG9ja291dEVuYWJsZWQpO1xuICAgICAgdGhpcy5maXJzdE5hbWUuc2V0VmFsdWUodXNlci5maXJzdE5hbWUpO1xuICAgICAgdGhpcy5sYXN0TmFtZS5zZXRWYWx1ZSh1c2VyLmxhc3ROYW1lKTtcbiAgICAgIGlmICh1c2VyLnJvbGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMucm9sZXMuc2V0VmFsdWUodXNlci5yb2xlcy5qb2luKCcgJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb2xlcy5zZXRWYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFVzZXJGcm9tRm9ybSgpOiBVc2VyIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlck5hbWU6IHRoaXMuX3VzZXI/LnVzZXJOYW1lIHx8ICcnLFxuICAgICAgZW1haWw6IHRoaXMuZW1haWwudmFsdWUsXG4gICAgICBlbWFpbENvbmZpcm1lZDogdGhpcy5lbWFpbENvbmZpcm1lZC52YWx1ZSxcbiAgICAgIGxvY2tvdXRFbmFibGVkOiB0aGlzLmxvY2tvdXRFbmFibGVkLnZhbHVlLFxuICAgICAgZmlyc3ROYW1lOiB0aGlzLmZpcnN0TmFtZS52YWx1ZSxcbiAgICAgIGxhc3ROYW1lOiB0aGlzLmxhc3ROYW1lLnZhbHVlLFxuICAgICAgcm9sZXM6IHRoaXMucm9sZXMudmFsdWVcbiAgICAgICAgPyB0aGlzLnJvbGVzLnZhbHVlLnNwbGl0KCcgJykuZmlsdGVyKChzOiBzdHJpbmcpID0+IHMpXG4gICAgICAgIDogW10sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlbmRMb2Nrb3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVubG9ja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3VzZXIhLmxvY2tvdXRFbmQgPSB0aGlzLl9hdXRoU2VydmljZS5nZXRVVENEYXRlKCk7XG4gICAgdGhpcy51bmxvY2tlZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JDbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51c2VyQ2hhbmdlLmVtaXQodGhpcy5nZXRVc2VyRnJvbUZvcm0oKSk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgIDwhLS0gZW1haWwgLS0+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPmVtYWlsPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZW1haWxcIiAvPlxuICAgICAgPG1hdC1lcnJvclxuICAgICAgICBpMThuXG4gICAgICAgICpuZ0lmPVwiZW1haWwuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgKGVtYWlsLmRpcnR5IHx8IGVtYWlsLnRvdWNoZWQpXCJcbiAgICAgID5cbiAgICAgICAgZW1haWwgYWRkcmVzcyByZXF1aXJlZFxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yXG4gICAgICAgIGkxOG5cbiAgICAgICAgKm5nSWY9XCJlbWFpbC5oYXNFcnJvcigncGF0dGVybicpICYmIChlbWFpbC5kaXJ0eSB8fCBlbWFpbC50b3VjaGVkKVwiXG4gICAgICA+XG4gICAgICAgIGludmFsaWQgZW1haWwgYWRkcmVzc1xuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDwhLS0gZW1haWxDb25maXJtZWQgLS0+XG4gICAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xdPVwiZW1haWxDb25maXJtZWRcIiBpMThuXG4gICAgICA+ZW1haWwgYWRkcmVzcyBjb25maXJtZWQ8L21hdC1jaGVja2JveFxuICAgID5cbiAgPC9kaXY+XG5cbiAgPCEtLSBsb2Nrb3V0RW5hYmxlZCAtLT5cbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xdPVwibG9ja291dEVuYWJsZWRcIiBpMThuXG4gICAgICA+bG9ja291dCBlbmFibGVkPC9tYXQtY2hlY2tib3hcbiAgICA+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImVuZExvY2tvdXQoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwidW5sb2NrZWRcIlxuICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICBtYXRUb29sdGlwPVwiVW5sb2NrIHRoaXMgdXNlciBpZiBsb2NrZWRcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5sb2NrX29wZW48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICA8IS0tIGZpcnN0TmFtZSAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsIGkxOG4+Zmlyc3QgbmFtZTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImZpcnN0TmFtZVwiIC8+XG4gICAgICA8bWF0LWVycm9yXG4gICAgICAgIGkxOG5cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBmaXJzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiZcbiAgICAgICAgICAoZmlyc3ROYW1lLmRpcnR5IHx8IGZpcnN0TmFtZS50b3VjaGVkKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICBmaXJzdCBuYW1lIHJlcXVpcmVkXG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgaTE4blxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGZpcnN0TmFtZS5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiZcbiAgICAgICAgICAoZmlyc3ROYW1lLmRpcnR5IHx8IGZpcnN0TmFtZS50b3VjaGVkKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICBmaXJzdCBuYW1lIHRvbyBsb25nXG4gICAgICA8L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBsYXN0TmFtZSAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsIGkxOG4+bGFzdCBuYW1lPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibGFzdE5hbWVcIiAvPlxuICAgICAgPG1hdC1lcnJvclxuICAgICAgICBpMThuXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbGFzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgKGxhc3ROYW1lLmRpcnR5IHx8IGxhc3ROYW1lLnRvdWNoZWQpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIGxhc3QgbmFtZSByZXF1aXJlZFxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yXG4gICAgICAgIGkxOG5cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBsYXN0TmFtZS5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiYgKGxhc3ROYW1lLmRpcnR5IHx8IGxhc3ROYW1lLnRvdWNoZWQpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIGxhc3QgbmFtZSB0b28gbG9uZ1xuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPCEtLSByb2xlcyAtLT5cbiAgPGRpdj5cbiAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTZlbVwiPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPnJvbGVzPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwicm9sZXNcIiAvPlxuICAgICAgPG1hdC1lcnJvclxuICAgICAgICBpMThuXG4gICAgICAgICpuZ0lmPVwicm9sZXMuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIChyb2xlcy5kaXJ0eSB8fCByb2xlcy50b3VjaGVkKVwiXG4gICAgICA+XG4gICAgICAgIHRvbyBsb25nXG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtaGludCBpMThuPnJvbGVzIChzZXBhcmF0ZWQgYnkgc3BhY2UpPC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8IS0tIGJ1dHRvbnMgLS0+XG4gIDxiciAvPlxuICA8ZGl2PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICBtYXRUb29sdGlwPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgIG1hdFRvb2x0aXA9XCJTYXZlIHVzZXJcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZWRpdG9yL3VzZXItZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWVkaXRvci91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFReEIsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixJQUFvQixJQUFJLENBQUMsS0FBdUI7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFLRCxZQUFZLFdBQStCLEVBQVUsWUFBNEI7UUFBNUIsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQy9FLFNBQVM7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLE9BQU87UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3JDLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FB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QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELENBQUMsQ0FBQyxFQUFFO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsS0FBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBekdVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHlKQ2RoQyxza0hBbUlBOzsyRkRySGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLHNCQUFzQjtvSEFpQlosSUFBSTtzQkFBdkIsS0FBSztnQkFRSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0aEp3dFNlcnZpY2UsIFVzZXIgfSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXRoLWp3dC11c2VyLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VzZXItZWRpdG9yLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX3VzZXI6IFVzZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGVtYWlsOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBlbWFpbENvbmZpcm1lZDogVW50eXBlZEZvcm1Db250cm9sO1xuICBwdWJsaWMgbG9ja291dEVuYWJsZWQ6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHVibGljIGZpcnN0TmFtZTogVW50eXBlZEZvcm1Db250cm9sO1xuICBwdWJsaWMgbGFzdE5hbWU6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHVibGljIHJvbGVzOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyB1bmxvY2tlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHVzZXIodmFsdWU6IFVzZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl91c2VyID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHVzZXIoKTogVXNlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXI7XG4gIH1cblxuICBAT3V0cHV0KCkgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPFVzZXI+O1xuICBAT3V0cHV0KCkgZWRpdG9yQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoSnd0U2VydmljZSkge1xuICAgIC8vIGV2ZW50c1xuICAgIHRoaXMudXNlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlcj4oKTtcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gZm9ybVxuICAgIHRoaXMuZW1haWwgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLmVtYWlsLFxuICAgIF0pO1xuICAgIHRoaXMuZW1haWxDb25maXJtZWQgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlKTtcbiAgICB0aGlzLmxvY2tvdXRFbmFibGVkID0gZm9ybUJ1aWxkZXIuY29udHJvbChmYWxzZSk7XG4gICAgdGhpcy5maXJzdE5hbWUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXG4gICAgXSk7XG4gICAgdGhpcy5sYXN0TmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcbiAgICBdKTtcbiAgICB0aGlzLnJvbGVzID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApKTtcblxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGVtYWlsOiB0aGlzLmVtYWlsLFxuICAgICAgZW1haWxDb25maXJtZWQ6IHRoaXMuZW1haWxDb25maXJtZWQsXG4gICAgICBsb2Nrb3V0RW5hYmxlZDogdGhpcy5sb2Nrb3V0RW5hYmxlZCxcbiAgICAgIGZpcnN0TmFtZTogdGhpcy5maXJzdE5hbWUsXG4gICAgICBsYXN0TmFtZTogdGhpcy5sYXN0TmFtZSxcbiAgICAgIHJvbGVzOiB0aGlzLnJvbGVzLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHByaXZhdGUgdXBkYXRlRm9ybSh1c2VyOiBVc2VyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWFpbC5zZXRWYWx1ZSh1c2VyLmVtYWlsKTtcbiAgICAgIHRoaXMuZW1haWxDb25maXJtZWQuc2V0VmFsdWUodXNlci5lbWFpbENvbmZpcm1lZCk7XG4gICAgICB0aGlzLmxvY2tvdXRFbmFibGVkLnNldFZhbHVlKHVzZXIubG9ja291dEVuYWJsZWQpO1xuICAgICAgdGhpcy5maXJzdE5hbWUuc2V0VmFsdWUodXNlci5maXJzdE5hbWUpO1xuICAgICAgdGhpcy5sYXN0TmFtZS5zZXRWYWx1ZSh1c2VyLmxhc3ROYW1lKTtcbiAgICAgIGlmICh1c2VyLnJvbGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMucm9sZXMuc2V0VmFsdWUodXNlci5yb2xlcy5qb2luKCcgJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb2xlcy5zZXRWYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFVzZXJGcm9tRm9ybSgpOiBVc2VyIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXNlck5hbWU6IHRoaXMuX3VzZXI/LnVzZXJOYW1lIHx8ICcnLFxuICAgICAgZW1haWw6IHRoaXMuZW1haWwudmFsdWUsXG4gICAgICBlbWFpbENvbmZpcm1lZDogdGhpcy5lbWFpbENvbmZpcm1lZC52YWx1ZSxcbiAgICAgIGxvY2tvdXRFbmFibGVkOiB0aGlzLmxvY2tvdXRFbmFibGVkLnZhbHVlLFxuICAgICAgZmlyc3ROYW1lOiB0aGlzLmZpcnN0TmFtZS52YWx1ZSxcbiAgICAgIGxhc3ROYW1lOiB0aGlzLmxhc3ROYW1lLnZhbHVlLFxuICAgICAgcm9sZXM6IHRoaXMucm9sZXMudmFsdWVcbiAgICAgICAgPyB0aGlzLnJvbGVzLnZhbHVlLnNwbGl0KCcgJykuZmlsdGVyKChzOiBzdHJpbmcpID0+IHMpXG4gICAgICAgIDogW10sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlbmRMb2Nrb3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVubG9ja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3VzZXIhLmxvY2tvdXRFbmQgPSB0aGlzLl9hdXRoU2VydmljZS5nZXRVVENEYXRlKCk7XG4gICAgdGhpcy51bmxvY2tlZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JDbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51c2VyQ2hhbmdlLmVtaXQodGhpcy5nZXRVc2VyRnJvbUZvcm0oKSk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgIDwhLS0gZW1haWwgLS0+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5lbWFpbDwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImVtYWlsXCIgLz5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgKm5nSWY9XCJlbWFpbC5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiAoZW1haWwuZGlydHkgfHwgZW1haWwudG91Y2hlZClcIlxuICAgICAgPlxuICAgICAgICBlbWFpbCBhZGRyZXNzIHJlcXVpcmVkXG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgKm5nSWY9XCJlbWFpbC5oYXNFcnJvcigncGF0dGVybicpICYmIChlbWFpbC5kaXJ0eSB8fCBlbWFpbC50b3VjaGVkKVwiXG4gICAgICA+XG4gICAgICAgIGludmFsaWQgZW1haWwgYWRkcmVzc1xuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDwhLS0gZW1haWxDb25maXJtZWQgLS0+XG4gICAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xdPVwiZW1haWxDb25maXJtZWRcIiBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxuICAgICAgPmVtYWlsIGFkZHJlc3MgY29uZmlybWVkPC9tYXQtY2hlY2tib3hcbiAgICA+XG4gIDwvZGl2PlxuXG4gIDwhLS0gbG9ja291dEVuYWJsZWQgLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cImxvY2tvdXRFbmFibGVkXCIgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgID5sb2Nrb3V0IGVuYWJsZWQ8L21hdC1jaGVja2JveFxuICAgID5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwiZW5kTG9ja291dCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJ1bmxvY2tlZFwiXG4gICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICBtYXRUb29sdGlwPVwiVW5sb2NrIHRoaXMgdXNlciBpZiBsb2NrZWRcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5sb2NrX29wZW48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICA8IS0tIGZpcnN0TmFtZSAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPmZpcnN0IG5hbWU8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJmaXJzdE5hbWVcIiAvPlxuICAgICAgPG1hdC1lcnJvclxuICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGZpcnN0TmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJlxuICAgICAgICAgIChmaXJzdE5hbWUuZGlydHkgfHwgZmlyc3ROYW1lLnRvdWNoZWQpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIGZpcnN0IG5hbWUgcmVxdWlyZWRcbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvclxuICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGZpcnN0TmFtZS5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiZcbiAgICAgICAgICAoZmlyc3ROYW1lLmRpcnR5IHx8IGZpcnN0TmFtZS50b3VjaGVkKVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICBmaXJzdCBuYW1lIHRvbyBsb25nXG4gICAgICA8L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBsYXN0TmFtZSAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPmxhc3QgbmFtZTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImxhc3ROYW1lXCIgLz5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBsYXN0TmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiAobGFzdE5hbWUuZGlydHkgfHwgbGFzdE5hbWUudG91Y2hlZClcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgbGFzdCBuYW1lIHJlcXVpcmVkXG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBsYXN0TmFtZS5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiYgKGxhc3ROYW1lLmRpcnR5IHx8IGxhc3ROYW1lLnRvdWNoZWQpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIGxhc3QgbmFtZSB0b28gbG9uZ1xuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPCEtLSByb2xlcyAtLT5cbiAgPGRpdj5cbiAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTZlbVwiPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5yb2xlczwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInJvbGVzXCIgLz5cbiAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgKm5nSWY9XCJyb2xlcy5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiYgKHJvbGVzLmRpcnR5IHx8IHJvbGVzLnRvdWNoZWQpXCJcbiAgICAgID5cbiAgICAgICAgdG9vIGxvbmdcbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1oaW50IGkxOG4+cm9sZXMgKHNlcGFyYXRlZCBieSBzcGFjZSk8L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDwhLS0gYnV0dG9ucyAtLT5cbiAgPGJyIC8+XG4gIDxkaXY+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICBtYXRUb29sdGlwPVwiQ2xvc2VcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICBtYXRUb29sdGlwPVwiU2F2ZSB1c2VyXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -48,12 +48,12 @@ export class UserFilterComponent {
48
48
  this._filter = this.getFilter();
49
49
  this.filterChange.emit(this._filter);
50
50
  }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserFilterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: UserFilterComponent, selector: "auth-jwt-user-filter", inputs: { filter: "filter", disabled: "disabled" }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n>name or ID</mat-label>\n <input matInput [formControl]=\"name\" />\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"reset()\"\n color=\"warn\"\n i18n-matTooltip\n matTooltip=\"Reset filters\"\n [disabled]=\"disabled\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <button\n id=\"apply\"\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"disabled\"\n i18n-matTooltip\n matTooltip=\"Apply filters\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserFilterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: UserFilterComponent, selector: "auth-jwt-user-filter", inputs: { filter: "filter", disabled: "disabled" }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">name or ID</mat-label>\n <input matInput [formControl]=\"name\" />\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"reset()\"\n color=\"warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Reset filters\"\n [disabled]=\"disabled\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <button\n id=\"apply\"\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"disabled\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Apply filters\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
53
53
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserFilterComponent, decorators: [{
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserFilterComponent, decorators: [{
55
55
  type: Component,
56
- args: [{ selector: 'auth-jwt-user-filter', template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n>name or ID</mat-label>\n <input matInput [formControl]=\"name\" />\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"reset()\"\n color=\"warn\"\n i18n-matTooltip\n matTooltip=\"Reset filters\"\n [disabled]=\"disabled\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <button\n id=\"apply\"\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"disabled\"\n i18n-matTooltip\n matTooltip=\"Apply filters\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"] }]
56
+ args: [{ selector: 'auth-jwt-user-filter', template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">name or ID</mat-label>\n <input matInput [formControl]=\"name\" />\n <button\n mat-icon-button\n matSuffix\n type=\"button\"\n (click)=\"reset()\"\n color=\"warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Reset filters\"\n [disabled]=\"disabled\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n </mat-form-field>\n\n <button\n id=\"apply\"\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"disabled\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Apply filters\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"] }]
57
57
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { filter: [{
58
58
  type: Input
59
59
  }], disabled: [{
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
61
61
  }], filterChange: [{
62
62
  type: Output
63
63
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZmlsdGVyL3VzZXItZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWZpbHRlci91c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVcvRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBb0M7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssSUFBSSxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQWNELFlBQVksV0FBd0I7UUFDbEMsT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFDSCxRQUFRO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0lBQ3JELENBQUM7SUFFTyxVQUFVLENBQUMsTUFBbUI7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxTQUFTO1FBQ2YsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs4R0E3RFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsMkpDWGhDLGt6QkFnQ0E7OzJGRHJCYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usc0JBQXNCO2dGQVFyQixNQUFNO3NCQURoQixLQUFLO2dCQWFDLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxZQUFZO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkluaXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFVzZXJGaWx0ZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLWp3dC1hY2NvdW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXRoLWp3dC11c2VyLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VzZXItZmlsdGVyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckZpbHRlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgX2ZpbHRlcj86IFVzZXJGaWx0ZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBmaWx0ZXIoKTogVXNlckZpbHRlciB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gIH1cbiAgcHVibGljIHNldCBmaWx0ZXIodmFsdWU6IFVzZXJGaWx0ZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuX2ZpbHRlciA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZmlsdGVyID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl9maWx0ZXIpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZpbHRlciBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxVc2VyRmlsdGVyPjtcblxuICBwdWJsaWMgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgLy8gZm9ybVxuICAgIHRoaXMubmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgIH0pO1xuICAgIC8vIGV2ZW50XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJGaWx0ZXI+KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZvcm0oZmlsdGVyPzogVXNlckZpbHRlcik6IHZvaWQge1xuICAgIGlmICghZmlsdGVyKSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5uYW1lLnNldFZhbHVlKGZpbHRlci5uYW1lIHx8IG51bGwpO1xuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXIoKTogVXNlckZpbHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZT8udHJpbSgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5fZmlsdGVyID0ge307XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLl9maWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5KCk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKCk7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLl9maWx0ZXIpO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cImFwcGx5KClcIiBuZy1kaXNhYmxlZD1cImRpc2FibGVkXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWwgaTE4bj5uYW1lIG9yIElEPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cIm5hbWVcIiAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgbWF0U3VmZml4XG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICBtYXRUb29sdGlwPVwiUmVzZXQgZmlsdGVyc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPGJ1dHRvblxuICAgICAgaWQ9XCJhcHBseVwiXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgIG1hdFRvb2x0aXA9XCJBcHBseSBmaWx0ZXJzXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZmlsdGVyL3VzZXItZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWZpbHRlci91c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVcvRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBb0M7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFjRCxZQUFZLFdBQXdCO1FBQ2xDLE9BQU87UUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsUUFBUTtRQUNSLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQW1CO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQTdEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwySkNYaEMsMjJCQWdDQTs7MkZEckJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxzQkFBc0I7Z0ZBUXJCLE1BQU07c0JBRGhCLEtBQUs7Z0JBYUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVXNlckZpbHRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtand0LWFjY291bnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1dGgtand0LXVzZXItZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1maWx0ZXIuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyRmlsdGVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfZmlsdGVyPzogVXNlckZpbHRlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBVc2VyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgfVxuICBwdWJsaWMgc2V0IGZpbHRlcih2YWx1ZTogVXNlckZpbHRlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5fZmlsdGVyID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9maWx0ZXIgPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XG4gICAgdGhpcy51cGRhdGVGb3JtKHRoaXMuX2ZpbHRlcik7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZmlsdGVyIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPFVzZXJGaWx0ZXI+O1xuXG4gIHB1YmxpYyBuYW1lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICAvLyBmb3JtXG4gICAgdGhpcy5uYW1lID0gZm9ybUJ1aWxkZXIuY29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgfSk7XG4gICAgLy8gZXZlbnRcbiAgICB0aGlzLmZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlckZpbHRlcj4oKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRm9ybShmaWx0ZXI/OiBVc2VyRmlsdGVyKTogdm9pZCB7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm5hbWUuc2V0VmFsdWUoZmlsdGVyLm5hbWUgfHwgbnVsbCk7XG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcigpOiBVc2VyRmlsdGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLnZhbHVlPy50cmltKCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLl9maWx0ZXIgPSB7fTtcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuX2ZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgYXBwbHkoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXIoKTtcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuX2ZpbHRlcik7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwiYXBwbHkoKVwiIG5nLWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5uYW1lIG9yIElEPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cIm5hbWVcIiAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgbWF0U3VmZml4XG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgIGkxOG4tbWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgbWF0VG9vbHRpcD1cIlJlc2V0IGZpbHRlcnNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxidXR0b25cbiAgICAgIGlkPVwiYXBwbHlcIlxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgaTE4bi1tYXRUb29sdGlwPVwiYXV0aC1qd3QtYWRtaW5cIlxuICAgICAgbWF0VG9vbHRpcD1cIkFwcGx5IGZpbHRlcnNcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -34,7 +34,7 @@ export class UserListComponent {
34
34
  }
35
35
  deleteUser(user) {
36
36
  this._dialogService
37
- .confirm($localize `Confirm`, $localize `Delete user ${user.userName}?`)
37
+ .confirm($localize `:auth-jwt-admin:Confirm`, $localize `:auth-jwt-admin:Delete user` + user.userName + '?')
38
38
  .subscribe((yes) => {
39
39
  if (yes) {
40
40
  this._repository.deleteUser(user.userName);
@@ -57,11 +57,11 @@ export class UserListComponent {
57
57
  getGravatarUrl(email, size = 80) {
58
58
  return this._gravatarService.buildGravatarUrl(email, size);
59
59
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserListComponent, deps: [{ token: i1.UserListRepository }, { token: i2.DialogService }, { token: i3.GravatarService }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: UserListComponent, selector: "auth-jwt-user-list", ngImport: i0, template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n <div id=\"list\" *ngIf=\"page$ | async as page\">\n <div *ngIf=\"loading$ | async\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n>name</th>\n <th i18n class=\"noif-lt-md\">first</th>\n <th i18n class=\"noif-lt-md\">last</th>\n <th i18n class=\"noif-lt-md\">email</th>\n <th i18n>roles</th>\n <th i18n class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n <tr *ngFor=\"let user of page.items\">\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip\n matTooltip=\"Edit this user\"\n color=\"primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon>mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip\n matTooltip=\"Delete this user\"\n color=\"warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, 32)\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n </tbody>\n </table>\n\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matmatTooltip\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon>autorenew</mat-icon>\n </button>\n\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n <div *ngIf=\"active$ | async as active\">\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled", "color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i11.UserFilterComponent, selector: "auth-jwt-user-filter", inputs: ["filter", "disabled"], outputs: ["filterChange"] }, { kind: "component", type: i12.UserEditorComponent, selector: "auth-jwt-user-editor", inputs: ["user"], outputs: ["userChange", "editorClose"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserListComponent, deps: [{ token: i1.UserListRepository }, { token: i2.DialogService }, { token: i3.GravatarService }], target: i0.ɵɵFactoryTarget.Component }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: UserListComponent, selector: "auth-jwt-user-list", ngImport: i0, template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n <div id=\"list\" *ngIf=\"page$ | async as page\">\n <div *ngIf=\"loading$ | async\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n=\"auth-jwt-admin\">name</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">first</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">last</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">email</th>\n <th i18n=\"auth-jwt-admin\">roles</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n <tr *ngFor=\"let user of page.items\">\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Edit this user\"\n color=\"primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon>mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Delete this user\"\n color=\"warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, 32)\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n </tbody>\n </table>\n\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matmatTooltip=\"auth-jwt-admin\"\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon>autorenew</mat-icon>\n </button>\n\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n <div *ngIf=\"active$ | async as active\">\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i11.UserFilterComponent, selector: "auth-jwt-user-filter", inputs: ["filter", "disabled"], outputs: ["filterChange"] }, { kind: "component", type: i12.UserEditorComponent, selector: "auth-jwt-user-editor", inputs: ["user"], outputs: ["userChange", "editorClose"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserListComponent, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserListComponent, decorators: [{
64
64
  type: Component,
65
- args: [{ selector: 'auth-jwt-user-list', template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n <div id=\"list\" *ngIf=\"page$ | async as page\">\n <div *ngIf=\"loading$ | async\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n>name</th>\n <th i18n class=\"noif-lt-md\">first</th>\n <th i18n class=\"noif-lt-md\">last</th>\n <th i18n class=\"noif-lt-md\">email</th>\n <th i18n>roles</th>\n <th i18n class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n <tr *ngFor=\"let user of page.items\">\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip\n matTooltip=\"Edit this user\"\n color=\"primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon>mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip\n matTooltip=\"Delete this user\"\n color=\"warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, 32)\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n </tbody>\n </table>\n\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matmatTooltip\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon>autorenew</mat-icon>\n </button>\n\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n <div *ngIf=\"active$ | async as active\">\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"] }]
65
+ args: [{ selector: 'auth-jwt-user-list', template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n <div id=\"list\" *ngIf=\"page$ | async as page\">\n <div *ngIf=\"loading$ | async\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n=\"auth-jwt-admin\">name</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">first</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">last</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">email</th>\n <th i18n=\"auth-jwt-admin\">roles</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n <tr *ngFor=\"let user of page.items\">\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Edit this user\"\n color=\"primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon>mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Delete this user\"\n color=\"warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, 32)\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n </tbody>\n </table>\n\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matmatTooltip=\"auth-jwt-admin\"\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon>autorenew</mat-icon>\n </button>\n\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n <div *ngIf=\"active$ | async as active\">\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"] }]
66
66
  }], ctorParameters: () => [{ type: i1.UserListRepository }, { type: i2.DialogService }, { type: i3.GravatarService }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFjaEMsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNVLFdBQStCLEVBQy9CLGNBQTZCLEVBQzdCLGdCQUFpQztRQUZqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUV6QyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBa0I7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFnQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFVO1FBQzFCLElBQUksQ0FBQyxjQUFjO2FBQ2hCLE9BQU8sQ0FBQyxTQUFTLENBQUEsU0FBUyxFQUFFLFNBQVMsQ0FBQSxlQUFlLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQzthQUNyRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDNUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxhQUFhLENBQUMsSUFBaUI7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFVO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWEsRUFBRSxJQUFJLEdBQUcsRUFBRTtRQUM1QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0ExRFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsMERDakI5QixpN0dBZ0hBOzsyRkQvRmEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAnQGFuZ3VsYXIvbG9jYWxpemUvaW5pdCc7XHJcblxyXG5pbXBvcnQgeyBHcmF2YXRhclNlcnZpY2UsIFVzZXIgfSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xyXG5pbXBvcnQgeyBEYXRhUGFnZSB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XHJcblxyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyTGlzdFJlcG9zaXRvcnkgfSBmcm9tICcuLi9zdGF0ZS91c2VyLWxpc3QucmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IFVzZXJGaWx0ZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLWp3dC1hY2NvdW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdXRoLWp3dC11c2VyLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VzZXItbGlzdC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdENvbXBvbmVudCB7XHJcbiAgcHVibGljIGFjdGl2ZSQ6IE9ic2VydmFibGU8VXNlciB8IHVuZGVmaW5lZD47XHJcbiAgcHVibGljIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIHB1YmxpYyBmaWx0ZXIkOiBPYnNlcnZhYmxlPFVzZXJGaWx0ZXI+O1xyXG4gIHB1YmxpYyBwYWdlJDogT2JzZXJ2YWJsZTxEYXRhUGFnZTxVc2VyPj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcmVwb3NpdG9yeTogVXNlckxpc3RSZXBvc2l0b3J5LFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2dyYXZhdGFyU2VydmljZTogR3JhdmF0YXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZpbHRlciQgPSBfcmVwb3NpdG9yeS5maWx0ZXIkO1xyXG4gICAgdGhpcy5wYWdlJCA9IF9yZXBvc2l0b3J5LnBhZ2UkO1xyXG4gICAgdGhpcy5hY3RpdmUkID0gX3JlcG9zaXRvcnkuYWN0aXZlVXNlciQ7XHJcbiAgICB0aGlzLmxvYWRpbmckID0gX3JlcG9zaXRvcnkubG9hZGluZyQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25GaWx0ZXJDaGFuZ2UoZmlsdGVyOiBVc2VyRmlsdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldEZpbHRlcihmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGFnZUNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldFBhZ2UoZXZlbnQucGFnZUluZGV4ICsgMSwgZXZlbnQucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgkbG9jYWxpemVgQ29uZmlybWAsICRsb2NhbGl6ZWBEZWxldGUgdXNlciAke3VzZXIudXNlck5hbWV9P2ApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHllcykgPT4ge1xyXG4gICAgICAgIGlmICh5ZXMpIHtcclxuICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnkuZGVsZXRlVXNlcih1c2VyLnVzZXJOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEFjdGl2ZVVzZXIodXNlcjogVXNlciB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0QWN0aXZlVXNlcih1c2VyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldEFjdGl2ZVVzZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldEFjdGl2ZVVzZXIobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFjdGl2ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS51cGRhdGVBY3RpdmVVc2VyKHVzZXIpO1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRBY3RpdmVVc2VyKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uVXNlckVkaXRvckNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRBY3RpdmVVc2VyKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdyYXZhdGFyVXJsKGVtYWlsOiBzdHJpbmcsIHNpemUgPSA4MCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dyYXZhdGFyU2VydmljZS5idWlsZEdyYXZhdGFyVXJsKGVtYWlsLCBzaXplKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBpZD1cImNvbnRhaW5lclwiPlxuICA8ZGl2PlxuICAgIDwhLS0gZmlsdGVycyAtLT5cbiAgICA8ZGl2IGlkPVwiZmlsdGVyc1wiPlxuICAgICAgPGF1dGgtand0LXVzZXItZmlsdGVyXG4gICAgICAgIFtmaWx0ZXJdPVwiZmlsdGVyJCB8IGFzeW5jXCJcbiAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2F1dGgtand0LXVzZXItZmlsdGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBsaXN0IC0tPlxuICAgIDxkaXYgaWQ9XCJsaXN0XCIgKm5nSWY9XCJwYWdlJCB8IGFzeW5jIGFzIHBhZ2VcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nJCB8IGFzeW5jXCI+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICA8dGFibGU+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICA8dGggaTE4bj5uYW1lPC90aD5cbiAgICAgICAgICA8dGggaTE4biBjbGFzcz1cIm5vaWYtbHQtbWRcIj5maXJzdDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG4gY2xhc3M9XCJub2lmLWx0LW1kXCI+bGFzdDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG4gY2xhc3M9XCJub2lmLWx0LW1kXCI+ZW1haWw8L3RoPlxuICAgICAgICAgIDx0aCBpMThuPnJvbGVzPC90aD5cbiAgICAgICAgICA8dGggaTE4biBjbGFzcz1cIm5vaWYtbHQtbWRcIj5sb2NrIGVuZDwvdGg+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHVzZXIgb2YgcGFnZS5pdGVtc1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZml0LXdpZHRoXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIHVzZXJcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZVVzZXIodXNlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vZGVfZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSB0aGlzIHVzZXJcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVVzZXIodXNlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJmaXQtd2lkdGhcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGFsdD1cImF2YXRhclwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRHcmF2YXRhclVybCh1c2VyLmVtYWlsLCAzMilcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwidXNlci51c2VyTmFtZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkPnt7IHVzZXIudXNlck5hbWUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibm9pZi1sdC1tZFwiPnt7IHVzZXIuZmlyc3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vaWYtbHQtbWRcIj57eyB1c2VyLmxhc3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vaWYtbHQtbWRcIj5cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiJ21haWx0bzonICsgdXNlci5lbWFpbFwiPnt7IHVzZXIuZW1haWwgfX08L2E+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkPnt7IHVzZXIucm9sZXMuam9pbihcIiBcIikgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibm9pZi1sdC1tZFwiPnt7IHVzZXIubG9ja291dEVuZCB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG5cbiAgICAgIDwhLS0gcGFnaW5hdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgIGkxOG4tbWF0bWF0VG9vbHRpcFxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJSZWZyZXNoIGxpc3RcIlxuICAgICAgICAgIChjbGljayk9XCJyZXNldCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5hdXRvcmVuZXc8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgICAgIFtsZW5ndGhdPVwicGFnZS50b3RhbFwiXG4gICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlLnBhZ2VOdW1iZXIgLSAxXCJcbiAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZS5wYWdlU2l6ZVwiXG4gICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDIwLCA1MCwgMTAwXVwiXG4gICAgICAgICAgKHBhZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgPjwvbWF0LXBhZ2luYXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIGVkaXRvciAtLT5cbiAgPG1hdC1leHBhbnNpb24tcGFuZWxcbiAgICBpZD1cImVkaXRvclwiXG4gICAgW2V4cGFuZGVkXT1cImFjdGl2ZSQgfCBhc3luY1wiXG4gICAgW2Rpc2FibGVkXT1cIiEoYWN0aXZlJCB8IGFzeW5jKVwiXG4gID5cbiAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlJCB8IGFzeW5jIGFzIGFjdGl2ZVwiPlxuICAgICAgPGZpZWxkc2V0PlxuICAgICAgICA8bGVnZW5kPnt7IGFjdGl2ZS51c2VyTmFtZSB9fTwvbGVnZW5kPlxuICAgICAgICA8YXV0aC1qd3QtdXNlci1lZGl0b3JcbiAgICAgICAgICBbdXNlcl09XCJhY3RpdmVcIlxuICAgICAgICAgICh1c2VyQ2hhbmdlKT1cInNhdmVBY3RpdmVVc2VyKCRldmVudClcIlxuICAgICAgICAgIChlZGl0b3JDbG9zZSk9XCJyZXNldEFjdGl2ZVVzZXIoKVwiXG4gICAgICAgID48L2F1dGgtand0LXVzZXItZWRpdG9yPlxuICAgICAgPC9maWVsZHNldD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuPC9kaXY+XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFjaEMsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNVLFdBQStCLEVBQy9CLGNBQTZCLEVBQzdCLGdCQUFpQztRQUZqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUV6QyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBa0I7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFnQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFVO1FBQzFCLElBQUksQ0FBQyxjQUFjO2FBQ2hCLE9BQU8sQ0FDTixTQUFTLENBQUEseUJBQXlCLEVBQ2xDLFNBQVMsQ0FBQSw2QkFBNkIsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FDN0Q7YUFDQSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQWlCO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBVTtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7OEdBN0RVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBEQ2pCOUIsNGxIQWdIQTs7MkZEL0ZhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgJ0Bhbmd1bGFyL2xvY2FsaXplL2luaXQnO1xyXG5cclxuaW1wb3J0IHsgR3JhdmF0YXJTZXJ2aWNlLCBVc2VyIH0gZnJvbSAnQG15cm1pZG9uL2F1dGgtand0LWxvZ2luJztcclxuaW1wb3J0IHsgRGF0YVBhZ2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5cclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckxpc3RSZXBvc2l0b3J5IH0gZnJvbSAnLi4vc3RhdGUvdXNlci1saXN0LnJlcG9zaXRvcnknO1xyXG5pbXBvcnQgeyBVc2VyRmlsdGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC1qd3QtYWNjb3VudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1qd3QtdXNlci1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91c2VyLWxpc3QuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckxpc3RDb21wb25lbnQge1xyXG4gIHB1YmxpYyBhY3RpdmUkOiBPYnNlcnZhYmxlPFVzZXIgfCB1bmRlZmluZWQ+O1xyXG4gIHB1YmxpYyBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBwdWJsaWMgZmlsdGVyJDogT2JzZXJ2YWJsZTxVc2VyRmlsdGVyPjtcclxuICBwdWJsaWMgcGFnZSQ6IE9ic2VydmFibGU8RGF0YVBhZ2U8VXNlcj4+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3JlcG9zaXRvcnk6IFVzZXJMaXN0UmVwb3NpdG9yeSxcclxuICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9ncmF2YXRhclNlcnZpY2U6IEdyYXZhdGFyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5maWx0ZXIkID0gX3JlcG9zaXRvcnkuZmlsdGVyJDtcclxuICAgIHRoaXMucGFnZSQgPSBfcmVwb3NpdG9yeS5wYWdlJDtcclxuICAgIHRoaXMuYWN0aXZlJCA9IF9yZXBvc2l0b3J5LmFjdGl2ZVVzZXIkO1xyXG4gICAgdGhpcy5sb2FkaW5nJCA9IF9yZXBvc2l0b3J5LmxvYWRpbmckO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRmlsdGVyQ2hhbmdlKGZpbHRlcjogVXNlckZpbHRlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRGaWx0ZXIoZmlsdGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblBhZ2VDaGFuZ2UoZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRQYWdlKGV2ZW50LnBhZ2VJbmRleCArIDEsIGV2ZW50LnBhZ2VTaXplKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVVc2VyKHVzZXI6IFVzZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcclxuICAgICAgLmNvbmZpcm0oXHJcbiAgICAgICAgJGxvY2FsaXplYDphdXRoLWp3dC1hZG1pbjpDb25maXJtYCxcclxuICAgICAgICAkbG9jYWxpemVgOmF1dGgtand0LWFkbWluOkRlbGV0ZSB1c2VyYCArIHVzZXIudXNlck5hbWUgKyAnPydcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcclxuICAgICAgICBpZiAoeWVzKSB7XHJcbiAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5LmRlbGV0ZVVzZXIodXNlci51c2VyTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRBY3RpdmVVc2VyKHVzZXI6IFVzZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldEFjdGl2ZVVzZXIodXNlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRBY3RpdmVVc2VyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRBY3RpdmVVc2VyKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBY3RpdmVVc2VyKHVzZXI6IFVzZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkudXBkYXRlQWN0aXZlVXNlcih1c2VyKTtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0QWN0aXZlVXNlcihudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblVzZXJFZGl0b3JDbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0QWN0aXZlVXNlcihudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRHcmF2YXRhclVybChlbWFpbDogc3RyaW5nLCBzaXplID0gODApOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9ncmF2YXRhclNlcnZpY2UuYnVpbGRHcmF2YXRhclVybChlbWFpbCwgc2l6ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgaWQ9XCJjb250YWluZXJcIj5cbiAgPGRpdj5cbiAgICA8IS0tIGZpbHRlcnMgLS0+XG4gICAgPGRpdiBpZD1cImZpbHRlcnNcIj5cbiAgICAgIDxhdXRoLWp3dC11c2VyLWZpbHRlclxuICAgICAgICBbZmlsdGVyXT1cImZpbHRlciQgfCBhc3luY1wiXG4gICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9hdXRoLWp3dC11c2VyLWZpbHRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gbGlzdCAtLT5cbiAgICA8ZGl2IGlkPVwibGlzdFwiICpuZ0lmPVwicGFnZSQgfCBhc3luYyBhcyBwYWdlXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZyQgfCBhc3luY1wiPlxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHRhYmxlPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPm5hbWU8L3RoPlxuICAgICAgICAgIDx0aCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIiBjbGFzcz1cIm5vaWYtbHQtbWRcIj5maXJzdDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiIGNsYXNzPVwibm9pZi1sdC1tZFwiPmxhc3Q8L3RoPlxuICAgICAgICAgIDx0aCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIiBjbGFzcz1cIm5vaWYtbHQtbWRcIj5lbWFpbDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPnJvbGVzPC90aD5cbiAgICAgICAgICA8dGggaTE4bj1cImF1dGgtand0LWFkbWluXCIgY2xhc3M9XCJub2lmLWx0LW1kXCI+bG9jayBlbmQ8L3RoPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHBhZ2UuaXRlbXNcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZpdC13aWR0aFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwPVwiYXV0aC1qd3QtYWRtaW5cIlxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHRoaXMgdXNlclwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlVXNlcih1c2VyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+bW9kZV9lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSB0aGlzIHVzZXJcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVVzZXIodXNlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJmaXQtd2lkdGhcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGFsdD1cImF2YXRhclwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRHcmF2YXRhclVybCh1c2VyLmVtYWlsLCAzMilcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwidXNlci51c2VyTmFtZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkPnt7IHVzZXIudXNlck5hbWUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibm9pZi1sdC1tZFwiPnt7IHVzZXIuZmlyc3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vaWYtbHQtbWRcIj57eyB1c2VyLmxhc3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vaWYtbHQtbWRcIj5cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiJ21haWx0bzonICsgdXNlci5lbWFpbFwiPnt7IHVzZXIuZW1haWwgfX08L2E+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkPnt7IHVzZXIucm9sZXMuam9pbihcIiBcIikgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibm9pZi1sdC1tZFwiPnt7IHVzZXIubG9ja291dEVuZCB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG5cbiAgICAgIDwhLS0gcGFnaW5hdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgIGkxOG4tbWF0bWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgICBtYXRUb29sdGlwPVwiUmVmcmVzaCBsaXN0XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+YXV0b3JlbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgICBbbGVuZ3RoXT1cInBhZ2UudG90YWxcIlxuICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZS5wYWdlTnVtYmVyIC0gMVwiXG4gICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2UucGFnZVNpemVcIlxuICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUsIDEwLCAyMCwgNTAsIDEwMF1cIlxuICAgICAgICAgIChwYWdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgICAgID48L21hdC1wYWdpbmF0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBlZGl0b3IgLS0+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgaWQ9XCJlZGl0b3JcIlxuICAgIFtleHBhbmRlZF09XCJhY3RpdmUkIHwgYXN5bmNcIlxuICAgIFtkaXNhYmxlZF09XCIhKGFjdGl2ZSQgfCBhc3luYylcIlxuICA+XG4gICAgPGRpdiAqbmdJZj1cImFjdGl2ZSQgfCBhc3luYyBhcyBhY3RpdmVcIj5cbiAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgPGxlZ2VuZD57eyBhY3RpdmUudXNlck5hbWUgfX08L2xlZ2VuZD5cbiAgICAgICAgPGF1dGgtand0LXVzZXItZWRpdG9yXG4gICAgICAgICAgW3VzZXJdPVwiYWN0aXZlXCJcbiAgICAgICAgICAodXNlckNoYW5nZSk9XCJzYXZlQWN0aXZlVXNlcigkZXZlbnQpXCJcbiAgICAgICAgICAoZWRpdG9yQ2xvc2UpPVwicmVzZXRBY3RpdmVVc2VyKClcIlxuICAgICAgICA+PC9hdXRoLWp3dC11c2VyLWVkaXRvcj5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbjwvZGl2PlxuIl19
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { HttpParams } from '@angular/common/http';
3
- import { retry, catchError } from 'rxjs/operators';
3
+ import { retry, catchError, map } from 'rxjs/operators';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common/http";
6
6
  import * as i2 from "@myrmidon/ng-tools";
@@ -61,12 +61,25 @@ export class AuthJwtAccountService {
61
61
  requestPasswordReset(email) {
62
62
  return this._http.post(this._env.get('apiUrl') + 'accounts/resetpassword/request', { email });
63
63
  }
64
+ getUserFromWrapper(response) {
65
+ return response.user
66
+ ? {
67
+ ...response.user,
68
+ roles: response.roles || [],
69
+ }
70
+ : response;
71
+ }
64
72
  getAllUsers() {
65
73
  return this._http
66
74
  .get(this._env.get('apiUrl') + 'users', {
67
75
  params: new HttpParams().set('pageNumber', '1'),
68
76
  })
69
- .pipe(retry(3), catchError(this._error.handleError));
77
+ .pipe(retry(3), map((dataPage) => {
78
+ return {
79
+ ...dataPage,
80
+ items: dataPage.items.map(this.getUserFromWrapper),
81
+ };
82
+ }), catchError(this._error.handleError));
70
83
  }
71
84
  getUsers(filter, pageNumber = 1, pageSize = 20) {
72
85
  let httpParams = new HttpParams();
@@ -79,7 +92,12 @@ export class AuthJwtAccountService {
79
92
  .get(this._env.get('apiUrl') + 'users', {
80
93
  params: httpParams,
81
94
  })
82
- .pipe(retry(3), catchError(this._error.handleError));
95
+ .pipe(retry(3), map((dataPage) => {
96
+ return {
97
+ ...dataPage,
98
+ items: dataPage.items.map(this.getUserFromWrapper),
99
+ };
100
+ }), catchError(this._error.handleError));
83
101
  }
84
102
  /**
85
103
  * Get the top N users matching the specified name filter.
@@ -100,7 +118,9 @@ export class AuthJwtAccountService {
100
118
  : {};
101
119
  return this._http
102
120
  .get(this._env.get('apiUrl') + 'users', options)
103
- .pipe(retry(3), catchError(this._error.handleError));
121
+ .pipe(retry(3), map((users) => {
122
+ return users.map(this.getUserFromWrapper);
123
+ }), catchError(this._error.handleError));
104
124
  }
105
125
  /**
106
126
  * Get information about all the users listed in the specified names.
@@ -118,7 +138,9 @@ export class AuthJwtAccountService {
118
138
  : {};
119
139
  return this._http
120
140
  .get(this._env.get('apiUrl') + 'users-from-names', options)
121
- .pipe(retry(3), catchError(this._error.handleError));
141
+ .pipe(retry(3), map((users) => {
142
+ return users.map(this.getUserFromWrapper);
143
+ }), catchError(this._error.handleError));
122
144
  }
123
145
  /**
124
146
  * Get data about the specified user.
@@ -127,7 +149,7 @@ export class AuthJwtAccountService {
127
149
  getUser(name) {
128
150
  return this._http
129
151
  .get(this._env.get('apiUrl') + 'users/' + name)
130
- .pipe(retry(3), catchError(this._error.handleError));
152
+ .pipe(retry(3), map(this.getUserFromWrapper), catchError(this._error.handleError));
131
153
  }
132
154
  /**
133
155
  * Update the editable data for the specified user.
@@ -169,13 +191,13 @@ export class AuthJwtAccountService {
169
191
  .delete(this._env.get('apiUrl') + 'accounts/' + name)
170
192
  .pipe(catchError(this._error.handleError));
171
193
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtAccountService, deps: [{ token: i1.HttpClient }, { token: i2.ErrorService }, { token: i2.EnvService }], target: i0.ɵɵFactoryTarget.Injectable }); }
173
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtAccountService, providedIn: 'root' }); }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtAccountService, deps: [{ token: i1.HttpClient }, { token: i2.ErrorService }, { token: i2.EnvService }], target: i0.ɵɵFactoryTarget.Injectable }); }
195
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtAccountService, providedIn: 'root' }); }
174
196
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtAccountService, decorators: [{
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtAccountService, decorators: [{
176
198
  type: Injectable,
177
199
  args: [{
178
200
  providedIn: 'root',
179
201
  }]
180
202
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ErrorService }, { type: i2.EnvService }] });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1qd3QtYWNjb3VudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWp3dC1hY2NvdW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQTRDbkQsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUNVLEtBQWlCLEVBQ2pCLE1BQW9CLEVBQ3BCLElBQWdCO1FBRmhCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3ZCLENBQUM7SUFFSjs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsS0FBYTtRQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDckIsdUJBQXVCO1lBQ3ZCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQixDQUFDLElBQVk7UUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3JCLHNCQUFzQjtZQUN0QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FDYixZQUErQixFQUMvQixTQUFTLEdB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Q0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsSUFBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0EzTVUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyByZXRyeSwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGF0YVBhZ2UsIEVudlNlcnZpY2UsIEVycm9yU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQG15cm1pZG9uL2F1dGgtand0LWxvZ2luJztcblxuLyoqXG4gKiBVc2VyIHJlZ2lzdHJhdGlvbiBtb2RlbC4gWW91IGNhbiBleHBhbmQgdGhpcyBpbnRlcmZhY2UgdG8gYWRkIG1vcmUgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25Nb2RlbCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xuICBsYXN0TmFtZT86IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYW4gZXhpc3RpbmcgcmVzb3VyY2UgY2hlY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhpc3RSZXN1bHQge1xuICBlbnRyeTogc3RyaW5nO1xuICBpc0V4aXN0aW5nOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhc3N3b3JkIGNoYW5nZSBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkQ2hhbmdlIHtcbiAgZW1haWw6IHN0cmluZztcbiAgb2xkUGFzc3dvcmQ6IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbiAgY29uZmlybVBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlciBmaWx0ZXIgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyRmlsdGVyIHtcbiAgbmFtZT86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhKd3RBY2NvdW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBfZXJyb3I6IEVycm9yU2VydmljZSxcbiAgICBwcml2YXRlIF9lbnY6IEVudlNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzIGlzIHJlZ2lzdGVyZWQgb24gdGhlIHNlcnZlci5cbiAgICogQHBhcmFtIGVtYWlsIGVtYWlsIGFkZHJlc3MgdG8gdGVzdC5cbiAgICogQHJldHVybnMgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIGlzRW1haWxSZWdpc3RlcmVkKGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV4aXN0UmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PEV4aXN0UmVzdWx0PihcbiAgICAgIHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICtcbiAgICAgICAgJ2FjY291bnRzL2VtYWlsZXhpc3RzLycgK1xuICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoZW1haWwpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCB1c2VyJ3MgZ2l2ZW4gbmFtZSBpcyByZWdpc3RlcmVkIG9uIHRoZSBzZXJ2ZXIuXG4gICAqIFRoaXMgbmFtZSBpcyBhIG5pY2tuYW1lIGNob3NlbiBieSB1c2VycyBkdXJpbmcgcmVnaXN0cmF0aW9uLCBhbmQgaXMgdGhlIGtleVxuICAgKiB1c2VkIGZvciByZWZlcmVuY2luZyB1c2VycyB3aGVuIHRhbGtpbmcgdG8gdGhlIHNlcnZlci5cbiAgICogQHBhcmFtIG5hbWUgbmFtZSB0byB0ZXN0LlxuICAgKiBAcmV0dXJucyByZXN1bHQuXG4gICAqL1xuICBwdWJsaWMgaXNOYW1lUmVnaXN0ZXJlZChuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV4aXN0UmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PEV4aXN0UmVzdWx0PihcbiAgICAgIHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICtcbiAgICAgICAgJ2FjY291bnRzL25hbWVleGlzdHMvJyArXG4gICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChuYW1lKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgdGhlIHVzZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHJlZ2lzdHJhdGlvbiBkYXRhLlxuICAgKiBAcGFyYW0gcmVnaXN0cmF0aW9uIFRoZSByZWdpc3RyYXRpb24gZGF0YS5cbiAgICogQHBhcmFtIGNvbmZpcm1lZCBUcnVlIHRvIGF1dG9tYXRpY2FsbHkgY29uZmlybSB0aGUgdXNlcidzIGVtYWlsIGFkZHJlc3NcbiAgICogd2l0aG91dCBzZW5kaW5nIHRoZSBjb25maXJtYXRpb24gZW1haWwgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcihcbiAgICByZWdpc3RyYXRpb246IFJlZ2lzdHJhdGlvbk1vZGVsLFxuICAgIGNvbmZpcm1lZCA9IGZhbHNlXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChcbiAgICAgIHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICtcbiAgICAgICAgJ2FjY291bnRzL3JlZ2lzdGVyJyArXG4gICAgICAgIChjb25maXJtZWQgPyAnP2NvbmZpcm1lZD10cnVlJyA6ICcnKSxcbiAgICAgIHJlZ2lzdHJhdGlvblxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZW5kIHRoZSBjb25maXJtYXRpb24gZW1haWwgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzLlxuICAgKiBAcGFyYW0gZW1haWwgYWRkcmVzcy5cbiAgICovXG4gIHB1YmxpYyByZXNlbmRDb25maXJtRW1haWwoZW1haWw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KFxuICAgICAgdGhpcy5fZW52LmdldCgnYXBpVXJsJykgK1xuICAgICAgICAnYWNjb3VudHMvcmVzZW5kY29uZmlybS8nICtcbiAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KGVtYWlsKVxuICAgICAgLy8gb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBhIHBhc3N3b3JkIHJlc2V0IGZvciB0aGUgc3BlY2lmaWVkIGVtYWlsIGFkZHJlc3MuXG4gICAqIEBwYXJhbSBlbWFpbCBFbWFpbCBhZGRyZXNzLlxuICAgKi9cbiAgcHVibGljIHJlcXVlc3RQYXNzd29yZFJlc2V0KGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QoXG4gICAgICB0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArICdhY2NvdW50cy9yZXNldHBhc3N3b3JkL3JlcXVlc3QnLFxuICAgICAgeyBlbWFpbCB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxVc2VycygpOiBPYnNlcnZhYmxlPERhdGFQYWdlPFVzZXI+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5nZXQ8RGF0YVBhZ2U8VXNlcj4+KHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ3VzZXJzJywge1xuICAgICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlTnVtYmVyJywgJzEnKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgzKSwgY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJzKFxuICAgIGZpbHRlcjogVXNlckZpbHRlcixcbiAgICBwYWdlTnVtYmVyID0gMSxcbiAgICBwYWdlU2l6ZSA9IDIwXG4gICk6IE9ic2VydmFibGU8RGF0YVBhZ2U8VXNlcj4+IHtcbiAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCdwYWdlTnVtYmVyJywgcGFnZU51bWJlci50b1N0cmluZygpKTtcbiAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJ3BhZ2VTaXplJywgcGFnZVNpemUudG9TdHJpbmcoKSk7XG4gICAgaWYgKGZpbHRlci5uYW1lKSB7XG4gICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJ25hbWUnLCBmaWx0ZXIubmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5nZXQ8RGF0YVBhZ2U8VXNlcj4+KHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ3VzZXJzJywge1xuICAgICAgICBwYXJhbXM6IGh0dHBQYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMyksIGNhdGNoRXJyb3IodGhpcy5fZXJyb3IuaGFuZGxlRXJyb3IpKTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSB0b3AgTiB1c2VycyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIG5hbWUgZmlsdGVyLlxuICAgKiBAcGFyYW0gbmFtZUZpbHRlciBUaGUgdXNlciBuYW1lIGZpbHRlci5cbiAgICogQHBhcmFtIGxpbWl0IFRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byBnZXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0VG9wVXNlcnMobmFtZUZpbHRlcjogc3RyaW5nLCBsaW1pdCA9IDEwKTogT2JzZXJ2YWJsZTxVc2VyW10+IHtcbiAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCdwYWdlTnVtYmVyJywgJzEnKTtcbiAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJ3BhZ2VTaXplJywgbGltaXQudG9TdHJpbmcoKSk7XG4gICAgaWYgKG5hbWVGaWx0ZXIpIHtcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnbmFtZScsIG5hbWVGaWx0ZXIpO1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID1cbiAgICAgIGh0dHBQYXJhbXMua2V5cygpLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwYXJhbXM6IGh0dHBQYXJhbXMsXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9O1xuXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5nZXQ8VXNlcltdPih0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArICd1c2VycycsIG9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgzKSwgY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCBhbGwgdGhlIHVzZXJzIGxpc3RlZCBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzLlxuICAgKiBAcGFyYW0gbmFtZXMgVXNlcihzKSBuYW1lcy5cbiAgICovXG4gIHB1YmxpYyBnZXRVc2Vyc0Zyb21OYW1lcyhuYW1lczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPFVzZXJbXT4ge1xuICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAobmFtZXMgJiYgbmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCduYW1lcycsIG5hbWVzLmpvaW4oJywnKSk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPVxuICAgICAgaHR0cFBhcmFtcy5rZXlzKCkubGVuZ3RoID4gMFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHBhcmFtczogaHR0cFBhcmFtcyxcbiAgICAgICAgICB9XG4gICAgICAgIDoge307XG5cbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLmdldDxVc2VyW10+KHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ3VzZXJzLWZyb20tbmFtZXMnLCBvcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMyksIGNhdGNoRXJyb3IodGhpcy5fZXJyb3IuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGF0YSBhYm91dCB0aGUgc3BlY2lmaWVkIHVzZXIuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSB1c2VyIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0VXNlcihuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLmdldDxVc2VyPih0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArICd1c2Vycy8nICsgbmFtZSlcbiAgICAgIC5waXBlKHJldHJ5KDMpLCBjYXRjaEVycm9yKHRoaXMuX2Vycm9yLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBlZGl0YWJsZSBkYXRhIGZvciB0aGUgc3BlY2lmaWVkIHVzZXIuXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIHVwZGF0ZS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVVc2VyKHVzZXI6IFVzZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAucHV0KFxuICAgICAgICB0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArXG4gICAgICAgICAgJ3VzZXJzJyArXG4gICAgICAgICAgKHVzZXIuZW1haWxDb25maXJtZWQgPyAnP2NvbmZpcm1lZD10cnVlJyA6ICcnKSxcbiAgICAgICAgdXNlclxuICAgICAgKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgYSBwYXNzd29yZCByZXNldCBlbWFpbCBmb3IgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzLlxuICAgKiBAcGFyYW0gZW1haWwgVGhlIGVtYWlsIGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgcmVzZXQgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyByZXNldFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAucG9zdCh0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArICdhY2NvdW50cy9yZXNldHBhc3N3b3JkL3JlcXVlc3QnLCB7XG4gICAgICAgIGVtYWlsOiBlbWFpbCxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuX2Vycm9yLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBwYXNzd29yZC5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgcGFzc3dvcmQgY2hhbmdlIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlUGFzc3dvcmQoY2hhbmdlOiBQYXNzd29yZENoYW5nZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5wb3N0KHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ2FjY291bnRzL2NoYW5nZXBhc3N3b3JkJywgY2hhbmdlKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSB1c2VyIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlVXNlcihuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAuZGVsZXRlKHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ2FjY291bnRzLycgKyBuYW1lKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG59XG4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1qd3QtYWNjb3VudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWp3dC1hY2NvdW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFvRHhELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDVSxLQUFpQixFQUNqQixNQUFvQixFQUNwQixJQUFnQjtRQUZoQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDO0lBRUo7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLEtBQWE7UUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3JCLHVCQUF1QjtZQUN2QixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNyQixzQkFBc0I7WUFDdEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQzNCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQ2IsWUFBK0IsRUFD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LENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0E1UFUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyByZXRyeSwgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEYXRhUGFnZSwgRW52U2VydmljZSwgRXJyb3JTZXJ2aWNlIH0gZnJvbSAnQG15cm1pZG9uL25nLXRvb2xzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xuXG4vKipcbiAqIFVzZXIgcmVnaXN0cmF0aW9uIG1vZGVsLiBZb3UgY2FuIGV4cGFuZCB0aGlzIGludGVyZmFjZSB0byBhZGQgbW9yZSBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJhdGlvbk1vZGVsIHtcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gIGxhc3ROYW1lPzogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhbiBleGlzdGluZyByZXNvdXJjZSBjaGVjay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGlzdFJlc3VsdCB7XG4gIGVudHJ5OiBzdHJpbmc7XG4gIGlzRXhpc3Rpbmc6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFzc3dvcmQgY2hhbmdlIGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc3dvcmRDaGFuZ2Uge1xuICBlbWFpbDogc3RyaW5nO1xuICBvbGRQYXNzd29yZDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xuICBjb25maXJtUGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2VyIGZpbHRlciBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJGaWx0ZXIge1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHVzZXIgZGF0YSByZXR1cm5lZCBieSB0aGUgc2VydmVyLlxuICovXG5pbnRlcmZhY2UgVXNlcldpdGhSb2xlczxUPiB7XG4gIHVzZXI6IFQ7XG4gIHJvbGVzPzogc3RyaW5nW107XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoSnd0QWNjb3VudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgX2Vycm9yOiBFcnJvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZW52OiBFbnZTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgZW1haWwgYWRkcmVzcyBpcyByZWdpc3RlcmVkIG9uIHRoZSBzZXJ2ZXIuXG4gICAqIEBwYXJhbSBlbWFpbCBlbWFpbCBhZGRyZXNzIHRvIHRlc3QuXG4gICAqIEByZXR1cm5zIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBpc0VtYWlsUmVnaXN0ZXJlZChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFeGlzdFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxFeGlzdFJlc3VsdD4oXG4gICAgICB0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArXG4gICAgICAgICdhY2NvdW50cy9lbWFpbGV4aXN0cy8nICtcbiAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KGVtYWlsKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgdXNlcidzIGdpdmVuIG5hbWUgaXMgcmVnaXN0ZXJlZCBvbiB0aGUgc2VydmVyLlxuICAgKiBUaGlzIG5hbWUgaXMgYSBuaWNrbmFtZSBjaG9zZW4gYnkgdXNlcnMgZHVyaW5nIHJlZ2lzdHJhdGlvbiwgYW5kIGlzIHRoZSBrZXlcbiAgICogdXNlZCBmb3IgcmVmZXJlbmNpbmcgdXNlcnMgd2hlbiB0YWxraW5nIHRvIHRoZSBzZXJ2ZXIuXG4gICAqIEBwYXJhbSBuYW1lIG5hbWUgdG8gdGVzdC5cbiAgICogQHJldHVybnMgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIGlzTmFtZVJlZ2lzdGVyZWQobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFeGlzdFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxFeGlzdFJlc3VsdD4oXG4gICAgICB0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArXG4gICAgICAgICdhY2NvdW50cy9uYW1lZXhpc3RzLycgK1xuICAgICAgICBlbmNvZGVVUklDb21wb25lbnQobmFtZSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIHRoZSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCByZWdpc3RyYXRpb24gZGF0YS5cbiAgICogQHBhcmFtIHJlZ2lzdHJhdGlvbiBUaGUgcmVnaXN0cmF0aW9uIGRhdGEuXG4gICAqIEBwYXJhbSBjb25maXJtZWQgVHJ1ZSB0byBhdXRvbWF0aWNhbGx5IGNvbmZpcm0gdGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzXG4gICAqIHdpdGhvdXQgc2VuZGluZyB0aGUgY29uZmlybWF0aW9uIGVtYWlsIG1lc3NhZ2UuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXIoXG4gICAgcmVnaXN0cmF0aW9uOiBSZWdpc3RyYXRpb25Nb2RlbCxcbiAgICBjb25maXJtZWQgPSBmYWxzZVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3QoXG4gICAgICB0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArXG4gICAgICAgICdhY2NvdW50cy9yZWdpc3RlcicgK1xuICAgICAgICAoY29uZmlybWVkID8gJz9jb25maXJtZWQ9dHJ1ZScgOiAnJyksXG4gICAgICByZWdpc3RyYXRpb25cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2VuZCB0aGUgY29uZmlybWF0aW9uIGVtYWlsIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcy5cbiAgICogQHBhcmFtIGVtYWlsIGFkZHJlc3MuXG4gICAqL1xuICBwdWJsaWMgcmVzZW5kQ29uZmlybUVtYWlsKGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwLmdldChcbiAgICAgIHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICtcbiAgICAgICAgJ2FjY291bnRzL3Jlc2VuZGNvbmZpcm0vJyArXG4gICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChlbWFpbClcbiAgICAgIC8vIG9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgYSBwYXNzd29yZCByZXNldCBmb3IgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzLlxuICAgKiBAcGFyYW0gZW1haWwgRW1haWwgYWRkcmVzcy5cbiAgICovXG4gIHB1YmxpYyByZXF1ZXN0UGFzc3dvcmRSZXNldChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KFxuICAgICAgdGhpcy5fZW52LmdldCgnYXBpVXJsJykgKyAnYWNjb3VudHMvcmVzZXRwYXNzd29yZC9yZXF1ZXN0JyxcbiAgICAgIHsgZW1haWwgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFVzZXJGcm9tV3JhcHBlcihyZXNwb25zZTogVXNlcldpdGhSb2xlczxVc2VyPiB8IFVzZXIpOiBVc2VyIHtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIFVzZXJXaXRoUm9sZXM8VXNlcj4pLnVzZXJcbiAgICAgID8ge1xuICAgICAgICAgIC4uLigocmVzcG9uc2UgYXMgVXNlcldpdGhSb2xlczxVc2VyPikudXNlciBhcyBVc2VyKSxcbiAgICAgICAgICByb2xlczogcmVzcG9uc2Uucm9sZXMgfHwgW10sXG4gICAgICAgIH1cbiAgICAgIDogKHJlc3BvbnNlIGFzIFVzZXIpO1xuICB9XG5cbiAgcHVibGljIGdldEFsbFVzZXJzKCk6IE9ic2VydmFibGU8RGF0YVBhZ2U8VXNlcj4+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLmdldDxEYXRhUGFnZTxVc2VyV2l0aFJvbGVzPFVzZXI+IHwgVXNlcj4+KFxuICAgICAgICB0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArICd1c2VycycsXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlTnVtYmVyJywgJzEnKSxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHJldHJ5KDMpLFxuICAgICAgICBtYXAoKGRhdGFQYWdlOiBEYXRhUGFnZTxVc2VyV2l0aFJvbGVzPFVzZXI+IHwgVXNlcj4pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZGF0YVBhZ2UsXG4gICAgICAgICAgICBpdGVtczogZGF0YVBhZ2UuaXRlbXMubWFwKHRoaXMuZ2V0VXNlckZyb21XcmFwcGVyKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXNlcnMoXG4gICAgZmlsdGVyOiBVc2VyRmlsdGVyLFxuICAgIHBhZ2VOdW1iZXIgPSAxLFxuICAgIHBhZ2VTaXplID0gMjBcbiAgKTogT2JzZXJ2YWJsZTxEYXRhUGFnZTxVc2VyPj4ge1xuICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJ3BhZ2VOdW1iZXInLCBwYWdlTnVtYmVyLnRvU3RyaW5nKCkpO1xuICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgncGFnZVNpemUnLCBwYWdlU2l6ZS50b1N0cmluZygpKTtcbiAgICBpZiAoZmlsdGVyLm5hbWUpIHtcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnbmFtZScsIGZpbHRlci5uYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLmdldDxEYXRhUGFnZTxVc2VyV2l0aFJvbGVzPFVzZXI+Pj4odGhpcy5fZW52LmdldCgnYXBpVXJsJykgKyAndXNlcnMnLCB7XG4gICAgICAgIHBhcmFtczogaHR0cFBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMyksXG4gICAgICAgIG1hcCgoZGF0YVBhZ2U6IERhdGFQYWdlPFVzZXJXaXRoUm9sZXM8VXNlcj4+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmRhdGFQYWdlLFxuICAgICAgICAgICAgaXRlbXM6IGRhdGFQYWdlLml0ZW1zLm1hcCh0aGlzLmdldFVzZXJGcm9tV3JhcHBlciksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5fZXJyb3IuaGFuZGxlRXJyb3IpXG4gICAgICApO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHRvcCBOIHVzZXJzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgbmFtZSBmaWx0ZXIuXG4gICAqIEBwYXJhbSBuYW1lRmlsdGVyIFRoZSB1c2VyIG5hbWUgZmlsdGVyLlxuICAgKiBAcGFyYW0gbGltaXQgVGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIGdldC5cbiAgICovXG4gIHB1YmxpYyBnZXRUb3BVc2VycyhuYW1lRmlsdGVyOiBzdHJpbmcsIGxpbWl0ID0gMTApOiBPYnNlcnZhYmxlPFVzZXJbXT4ge1xuICAgIGxldCBodHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5zZXQoJ3BhZ2VOdW1iZXInLCAnMScpO1xuICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgncGFnZVNpemUnLCBsaW1pdC50b1N0cmluZygpKTtcbiAgICBpZiAobmFtZUZpbHRlcikge1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCduYW1lJywgbmFtZUZpbHRlcik7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPVxuICAgICAgaHR0cFBhcmFtcy5rZXlzKCkubGVuZ3RoID4gMFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHBhcmFtczogaHR0cFBhcmFtcyxcbiAgICAgICAgICB9XG4gICAgICAgIDoge307XG5cbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLmdldDxVc2VyV2l0aFJvbGVzPFVzZXI+W10+KHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ3VzZXJzJywgb3B0aW9ucylcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgzKSxcbiAgICAgICAgbWFwKCh1c2VyczogVXNlcldpdGhSb2xlczxVc2VyPltdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHVzZXJzLm1hcCh0aGlzLmdldFVzZXJGcm9tV3JhcHBlcik7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuX2Vycm9yLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHRoZSB1c2VycyBsaXN0ZWQgaW4gdGhlIHNwZWNpZmllZCBuYW1lcy5cbiAgICogQHBhcmFtIG5hbWVzIFVzZXIocykgbmFtZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0VXNlcnNGcm9tTmFtZXMobmFtZXM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxVc2VyW10+IHtcbiAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKG5hbWVzICYmIG5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLnNldCgnbmFtZXMnLCBuYW1lcy5qb2luKCcsJykpO1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID1cbiAgICAgIGh0dHBQYXJhbXMua2V5cygpLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwYXJhbXM6IGh0dHBQYXJhbXMsXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9O1xuXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5nZXQ8VXNlcldpdGhSb2xlczxVc2VyPltdPihcbiAgICAgICAgdGhpcy5fZW52LmdldCgnYXBpVXJsJykgKyAndXNlcnMtZnJvbS1uYW1lcycsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgzKSxcbiAgICAgICAgbWFwKCh1c2VyczogVXNlcldpdGhSb2xlczxVc2VyPltdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHVzZXJzLm1hcCh0aGlzLmdldFVzZXJGcm9tV3JhcHBlcik7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuX2Vycm9yLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGF0YSBhYm91dCB0aGUgc3BlY2lmaWVkIHVzZXIuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSB1c2VyIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0VXNlcihuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLmdldDxVc2VyV2l0aFJvbGVzPFVzZXI+Pih0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArICd1c2Vycy8nICsgbmFtZSlcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgzKSxcbiAgICAgICAgbWFwKHRoaXMuZ2V0VXNlckZyb21XcmFwcGVyKSxcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBlZGl0YWJsZSBkYXRhIGZvciB0aGUgc3BlY2lmaWVkIHVzZXIuXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIHVwZGF0ZS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVVc2VyKHVzZXI6IFVzZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAucHV0KFxuICAgICAgICB0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArXG4gICAgICAgICAgJ3VzZXJzJyArXG4gICAgICAgICAgKHVzZXIuZW1haWxDb25maXJtZWQgPyAnP2NvbmZpcm1lZD10cnVlJyA6ICcnKSxcbiAgICAgICAgdXNlclxuICAgICAgKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgYSBwYXNzd29yZCByZXNldCBlbWFpbCBmb3IgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzLlxuICAgKiBAcGFyYW0gZW1haWwgVGhlIGVtYWlsIGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgcmVzZXQgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyByZXNldFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAucG9zdCh0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKSArICdhY2NvdW50cy9yZXNldHBhc3N3b3JkL3JlcXVlc3QnLCB7XG4gICAgICAgIGVtYWlsOiBlbWFpbCxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuX2Vycm9yLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBwYXNzd29yZC5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgcGFzc3dvcmQgY2hhbmdlIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlUGFzc3dvcmQoY2hhbmdlOiBQYXNzd29yZENoYW5nZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5wb3N0KHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ2FjY291bnRzL2NoYW5nZXBhc3N3b3JkJywgY2hhbmdlKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSB1c2VyIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlVXNlcihuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwXG4gICAgICAuZGVsZXRlKHRoaXMuX2Vudi5nZXQoJ2FwaVVybCcpICsgJ2FjY291bnRzLycgKyBuYW1lKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xuICB9XG59XG4iXX0=
@@ -16,7 +16,7 @@ export class DialogService {
16
16
  constructor(dialog) {
17
17
  this.dialog = dialog;
18
18
  }
19
- confirm(title, prompt, ok = $localize `yes`, cancel = $localize `no`) {
19
+ confirm(title, prompt, ok = $localize `:auth-jwt-admin:yes`, cancel = $localize `:auth-jwt-admin:no`) {
20
20
  let dialogRef;
21
21
  dialogRef = this.dialog.open(ConfirmDialogComponent);
22
22
  dialogRef.componentInstance.title = title;
@@ -25,13 +25,13 @@ export class DialogService {
25
25
  dialogRef.componentInstance.cancel = cancel;
26
26
  return dialogRef.afterClosed();
27
27
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DialogService, providedIn: 'root' }); }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DialogService, providedIn: 'root' }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DialogService, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DialogService, decorators: [{
32
32
  type: Injectable,
33
33
  args: [{
34
- providedIn: 'root'
34
+ providedIn: 'root',
35
35
  }]
36
36
  }], ctorParameters: () => [{ type: i1.MatDialog }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9hdXRoLWp3dC1hZG1pbi9zcmMvbGliL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7OztBQUcvRix5RkFBeUY7QUFFekY7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO0lBQUksQ0FBQztJQUVuQyxPQUFPLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFBLEtBQUssRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFBLElBQUk7UUFHdkYsSUFBSSxTQUErQyxDQUFDO1FBRXBELFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JELFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzVDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRTVDLE9BQU8sU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBaEJVLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8vIGh0dHBzOi8vbWVkaXVtLmNvbS9AdGFyaWsubnpsL21ha2luZy11c2Utb2YtZGlhbG9ncy1pbi1tYXRlcmlhbC0yLW1kZGlhbG9nLTc1MzNkMjdkZjQxXHJcblxyXG4vKipcclxuICogVGhpcyBzZXJ2aWNlIGFjdHMgYXMgYSB3cmFwcGVyIGZvciBNYXREaWFsb2cgdG8gc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY2FsbGluZ1xyXG4gKiB0aGUgZGlhbG9nIGFuZCBzdWJzY3JpYmluZyB0byBpdC4gV2hhdCBpdCB3aWxsIGRvIGlzIGNyZWF0ZSBhbiBJbnN0YW5jZSBvZlxyXG4gKiBNYXREaWFsb2cgd2l0aCBvdXIgY3VzdG9tIGNvbXBvbmVudCAoQ29uZmlybURpYWxvZ0NvbXBvbmVudCkuIFRoZW4gaXQgd2lsbCBzZXRcclxuICogYW55IHB1YmxpYyBwcm9wZXJ0aWVzIGl0IG5lZWRzIHRvIGJ5IHNldHRpbmcgdGhlIHByb3BlcnRpZXMgb24gdGhlXHJcbiAqIGNvbXBvbmVudEluc3RhbmNlIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gdGhlIG9ic2VydmFibGUgYWZ0ZXJDbG9zZWQoKVxyXG4gKiB0byB0aGUgY2FsbGVyIHNvIHRoZXkgY2FuIHN1YnNjcmliZSB0byBpdC4gVGhpcyB3aWxsIGVtaXQgYW4gZXZlbnQgd2hlbmV2ZXJcclxuICogdGhlIGRpYWxvZyBpcyBjbG9zZWQuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykgeyB9XHJcblxyXG4gIHB1YmxpYyBjb25maXJtKHRpdGxlOiBzdHJpbmcsIHByb21wdDogc3RyaW5nLCBvayA9ICRsb2NhbGl6ZWB5ZXNgLCBjYW5jZWwgPSAkbG9jYWxpemVgbm9gKTpcclxuICAgIE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG5cclxuICAgIGxldCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb25maXJtRGlhbG9nQ29tcG9uZW50PjtcclxuXHJcbiAgICBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQpO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvbXB0ID0gcHJvbXB0O1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9rID0gb2s7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuY2FuY2VsID0gY2FuY2VsO1xyXG5cclxuICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKTtcclxuICB9XHJcbn1cclxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9hdXRoLWp3dC1hZG1pbi9zcmMvbGliL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7OztBQUcvRix5RkFBeUY7QUFFekY7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO0lBQUcsQ0FBQztJQUVsQyxPQUFPLENBQ1osS0FBYSxFQUNiLE1BQWMsRUFDZCxFQUFFLEdBQUcsU0FBUyxDQUFBLHFCQUFxQixFQUNuQyxNQUFNLEdBQUcsU0FBUyxDQUFBLG9CQUFvQjtRQUV0QyxJQUFJLFNBQStDLENBQUM7UUFFcEQsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDckQsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDMUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDNUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDcEMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFNUMsT0FBTyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0FsQlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuLy8gaHR0cHM6Ly9tZWRpdW0uY29tL0B0YXJpay5uemwvbWFraW5nLXVzZS1vZi1kaWFsb2dzLWluLW1hdGVyaWFsLTItbWRkaWFsb2ctNzUzM2QyN2RmNDFcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNlcnZpY2UgYWN0cyBhcyBhIHdyYXBwZXIgZm9yIE1hdERpYWxvZyB0byBzaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiBjYWxsaW5nXHJcbiAqIHRoZSBkaWFsb2cgYW5kIHN1YnNjcmliaW5nIHRvIGl0LiBXaGF0IGl0IHdpbGwgZG8gaXMgY3JlYXRlIGFuIEluc3RhbmNlIG9mXHJcbiAqIE1hdERpYWxvZyB3aXRoIG91ciBjdXN0b20gY29tcG9uZW50IChDb25maXJtRGlhbG9nQ29tcG9uZW50KS4gVGhlbiBpdCB3aWxsIHNldFxyXG4gKiBhbnkgcHVibGljIHByb3BlcnRpZXMgaXQgbmVlZHMgdG8gYnkgc2V0dGluZyB0aGUgcHJvcGVydGllcyBvbiB0aGVcclxuICogY29tcG9uZW50SW5zdGFuY2Ugb2JqZWN0LiBJdCB3aWxsIHJldHVybiB0aGUgb2JzZXJ2YWJsZSBhZnRlckNsb3NlZCgpXHJcbiAqIHRvIHRoZSBjYWxsZXIgc28gdGhleSBjYW4gc3Vic2NyaWJlIHRvIGl0LiBUaGlzIHdpbGwgZW1pdCBhbiBldmVudCB3aGVuZXZlclxyXG4gKiB0aGUgZGlhbG9nIGlzIGNsb3NlZC5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7fVxyXG5cclxuICBwdWJsaWMgY29uZmlybShcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBwcm9tcHQ6IHN0cmluZyxcclxuICAgIG9rID0gJGxvY2FsaXplYDphdXRoLWp3dC1hZG1pbjp5ZXNgLFxyXG4gICAgY2FuY2VsID0gJGxvY2FsaXplYDphdXRoLWp3dC1hZG1pbjpub2BcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGxldCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb25maXJtRGlhbG9nQ29tcG9uZW50PjtcclxuXHJcbiAgICBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQpO1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvbXB0ID0gcHJvbXB0O1xyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9rID0gb2s7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuY2FuY2VsID0gY2FuY2VsO1xyXG5cclxuICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKTtcclxuICB9XHJcbn1cclxuIl19