@alfresco/aca-content 4.4.0-7758235643 → 4.4.0-7785596177

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.
@@ -21,77 +21,28 @@
21
21
  * You should have received a copy of the GNU Lesser General Public License
22
22
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
23
  */
24
- import { IdentityUserService, AuthenticationService } from '@alfresco/adf-core';
25
- import { Component, ViewEncapsulation } from '@angular/core';
26
- import { of } from 'rxjs';
27
- import { PeopleContentService } from '@alfresco/adf-content-services';
28
- import { map } from 'rxjs/operators';
24
+ import { Component, ViewEncapsulation, inject } from '@angular/core';
29
25
  import { CommonModule } from '@angular/common';
30
26
  import { RouterModule } from '@angular/router';
31
27
  import { MatMenuModule } from '@angular/material/menu';
32
28
  import { TranslateModule } from '@ngx-translate/core';
29
+ import { getUserProfile } from '@alfresco/aca-shared/store';
30
+ import { Store } from '@ngrx/store';
33
31
  import * as i0 from "@angular/core";
34
- import * as i1 from "@alfresco/adf-content-services";
35
- import * as i2 from "@alfresco/adf-core";
36
- import * as i3 from "@angular/common";
37
- import * as i4 from "@angular/router";
38
- import * as i5 from "@angular/material/menu";
39
- import * as i6 from "@ngx-translate/core";
32
+ import * as i1 from "@angular/common";
33
+ import * as i2 from "@angular/router";
34
+ import * as i3 from "@angular/material/menu";
35
+ import * as i4 from "@ngx-translate/core";
40
36
  export class UserInfoComponent {
41
- constructor(peopleContentService, identityUserService, authService) {
42
- this.peopleContentService = peopleContentService;
43
- this.identityUserService = identityUserService;
44
- this.authService = authService;
45
- }
46
- ngOnInit() {
47
- this.getUserInfo();
48
- }
49
- getUserInfo() {
50
- if (this.authService.isOauth()) {
51
- this.loadIdentityUserInfo();
52
- if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) {
53
- this.loadEcmUserInfo();
54
- }
55
- }
56
- else if (this.isEcmLoggedIn()) {
57
- this.loadEcmUserInfo();
58
- }
59
- }
60
- get isLoggedIn() {
61
- if (this.authService.isKerberosEnabled()) {
62
- return true;
63
- }
64
- return this.authService.isLoggedIn();
65
- }
66
- loadEcmUserInfo() {
67
- this.displayName$ = this.peopleContentService.getCurrentUserInfo().pipe(map((model) => this.parseDisplayName(model)));
68
- }
69
- loadIdentityUserInfo() {
70
- this.displayName$ = of(this.identityUserService.getCurrentUserInfo()).pipe(map((model) => this.parseDisplayName(model)));
71
- }
72
- parseDisplayName(model) {
73
- const result = { firstName: '', initials: '', email: '' };
74
- if (model.firstName) {
75
- result.firstName = model.firstName;
76
- result.initials = model.firstName.charAt(0).toUpperCase();
77
- }
78
- if (model.lastName) {
79
- result.firstName += ' ' + model.lastName;
80
- result.initials += model.lastName.charAt(0).toUpperCase();
81
- }
82
- if (model.email) {
83
- result.email = `${model.email}`;
84
- }
85
- return result;
86
- }
87
- isEcmLoggedIn() {
88
- return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());
37
+ constructor() {
38
+ this.store = inject((Store));
39
+ this.user$ = this.store.select(getUserProfile);
89
40
  }
90
41
  }
91
- UserInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: UserInfoComponent, deps: [{ token: i1.PeopleContentService }, { token: i2.IdentityUserService }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
92
- UserInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: UserInfoComponent, isStandalone: true, selector: "app-user-info", ngImport: i0, template: "<div mat-menu-item class=\"aca-user-info\" [routerLink]=\"['/profile']\" title=\"{{'APP.TOOLTIPS.MY_PROFILE' | translate}}\">\n <button class=\"aca-user-info-button\">\n <div>{{ (displayName$ | async)?.initials }}</div>\n </button>\n <div class=\"aca-user-info-name-email\">\n <div>{{ (displayName$ | async)?.firstName }}</div>\n <div>{{ (displayName$ | async)?.email }}</div>\n </div>\n</div>\n", styles: [".aca-user-info{display:flex;height:66px;align-items:center}.aca-user-info-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-selected-text-color);border:none}.aca-user-info-name-email{line-height:24px;margin-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i4.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
42
+ UserInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: UserInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
+ UserInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: UserInfoComponent, isStandalone: true, selector: "app-user-info", ngImport: i0, template: "<div mat-menu-item class=\"aca-user-info\" [routerLink]=\"['/profile']\" title=\"{{ 'APP.TOOLTIPS.MY_PROFILE' | translate }}\">\n <ng-container *ngIf=\"user$ | async as user\">\n <button class=\"aca-user-info-button\">\n <div>{{ user.initials || 'U' }}</div>\n </button>\n <div class=\"aca-user-info-details\">\n <div>{{ user.userName }}</div>\n <div>{{ user.email }}</div>\n </div>\n </ng-container>\n</div>\n", styles: [".aca-user-info{display:flex;height:66px;align-items:center}.aca-user-info-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-selected-text-color);border:none}.aca-user-info-details{line-height:24px;margin-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
93
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: UserInfoComponent, decorators: [{
94
45
  type: Component,
95
- args: [{ standalone: true, imports: [CommonModule, RouterModule, MatMenuModule, TranslateModule], selector: 'app-user-info', encapsulation: ViewEncapsulation.None, template: "<div mat-menu-item class=\"aca-user-info\" [routerLink]=\"['/profile']\" title=\"{{'APP.TOOLTIPS.MY_PROFILE' | translate}}\">\n <button class=\"aca-user-info-button\">\n <div>{{ (displayName$ | async)?.initials }}</div>\n </button>\n <div class=\"aca-user-info-name-email\">\n <div>{{ (displayName$ | async)?.firstName }}</div>\n <div>{{ (displayName$ | async)?.email }}</div>\n </div>\n</div>\n", styles: [".aca-user-info{display:flex;height:66px;align-items:center}.aca-user-info-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-selected-text-color);border:none}.aca-user-info-name-email{line-height:24px;margin-left:10px}\n"] }]
96
- }], ctorParameters: function () { return [{ type: i1.PeopleContentService }, { type: i2.IdentityUserService }, { type: i2.AuthenticationService }]; } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tb24vdXNlci1pbmZvL3VzZXItaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvY29tbW9uL3VzZXItaW5mby91c2VyLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFVdEQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLG9CQUEwQyxFQUMxQyxtQkFBd0MsRUFDeEMsV0FBa0M7UUFGbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGdCQUFX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M0QsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IElkZW50aXR5VXNlclNlcnZpY2UsIEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQZW9wbGVDb250ZW50U2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2FwcC11c2VyLWluZm8nLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1pbmZvLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVXNlckluZm9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkaXNwbGF5TmFtZSQ6IE9ic2VydmFibGU8eyBmaXJzdE5hbWU6IHN0cmluZzsgaW5pdGlhbHM6IHN0cmluZzsgZW1haWw6IHN0cmluZyB9PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBlb3BsZUNvbnRlbnRTZXJ2aWNlOiBQZW9wbGVDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGlkZW50aXR5VXNlclNlcnZpY2U6IElkZW50aXR5VXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldFVzZXJJbmZvKCk7XG4gIH1cblxuICBnZXRVc2VySW5mbygpIHtcbiAgICBpZiAodGhpcy5hdXRoU2VydmljZS5pc09hdXRoKCkpIHtcbiAgICAgIHRoaXMubG9hZElkZW50aXR5VXNlckluZm8oKTtcblxuICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNFQ01Qcm92aWRlcigpICYmIHRoaXMuYXV0aFNlcnZpY2UuaXNFY21Mb2dnZWRJbigpKSB7XG4gICAgICAgIHRoaXMubG9hZEVjbVVzZXJJbmZvKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRWNtTG9nZ2VkSW4oKSkge1xuICAgICAgdGhpcy5sb2FkRWNtVXNlckluZm8oKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hdXRoU2VydmljZS5pc0tlcmJlcm9zRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNMb2dnZWRJbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRWNtVXNlckluZm8oKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5TmFtZSQgPSB0aGlzLnBlb3BsZUNvbnRlbnRTZXJ2aWNlLmdldEN1cnJlbnRVc2VySW5mbygpLnBpcGUobWFwKChtb2RlbCkgPT4gdGhpcy5wYXJzZURpc3BsYXlOYW1lKG1vZGVsKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSWRlbnRpdHlVc2VySW5mbygpIHtcbiAgICB0aGlzLmRpc3BsYXlOYW1lJCA9IG9mKHRoaXMuaWRlbnRpdHlVc2VyU2VydmljZS5nZXRDdXJyZW50VXNlckluZm8oKSkucGlwZShtYXAoKG1vZGVsKSA9PiB0aGlzLnBhcnNlRGlzcGxheU5hbWUobW9kZWwpKSk7XG4gIH1cblxuICBwYXJzZURpc3BsYXlOYW1lKG1vZGVsOiB7IGZpcnN0TmFtZT86IHN0cmluZzsgbGFzdE5hbWU/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0pOiB7IGZpcnN0TmFtZTogc3RyaW5nOyBpbml0aWFsczogc3RyaW5nOyBlbWFpbDogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZmlyc3ROYW1lOiAnJywgaW5pdGlhbHM6ICcnLCBlbWFpbDogJycgfTtcbiAgICBpZiAobW9kZWwuZmlyc3ROYW1lKSB7XG4gICAgICByZXN1bHQuZmlyc3ROYW1lID0gbW9kZWwuZmlyc3ROYW1lO1xuICAgICAgcmVzdWx0LmluaXRpYWxzID0gbW9kZWwuZmlyc3ROYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAobW9kZWwubGFzdE5hbWUpIHtcbiAgICAgIHJlc3VsdC5maXJzdE5hbWUgKz0gJyAnICsgbW9kZWwubGFzdE5hbWU7XG4gICAgICByZXN1bHQuaW5pdGlhbHMgKz0gbW9kZWwubGFzdE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIGlmIChtb2RlbC5lbWFpbCkge1xuICAgICAgcmVzdWx0LmVtYWlsID0gYCR7bW9kZWwuZW1haWx9YDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNFY21Mb2dnZWRJbigpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0VjbUxvZ2dlZEluKCkgfHwgKHRoaXMuYXV0aFNlcnZpY2UuaXNFQ01Qcm92aWRlcigpICYmIHRoaXMuYXV0aFNlcnZpY2UuaXNLZXJiZXJvc0VuYWJsZWQoKSk7XG4gIH1cbn1cbiIsIjxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cImFjYS11c2VyLWluZm9cIiBbcm91dGVyTGlua109XCJbJy9wcm9maWxlJ11cIiB0aXRsZT1cInt7J0FQUC5UT09MVElQUy5NWV9QUk9GSUxFJyB8IHRyYW5zbGF0ZX19XCI+XG4gIDxidXR0b24gY2xhc3M9XCJhY2EtdXNlci1pbmZvLWJ1dHRvblwiPlxuICAgIDxkaXY+e3sgKGRpc3BsYXlOYW1lJCB8IGFzeW5jKT8uaW5pdGlhbHMgfX08L2Rpdj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJhY2EtdXNlci1pbmZvLW5hbWUtZW1haWxcIj5cbiAgICA8ZGl2Pnt7IChkaXNwbGF5TmFtZSQgfCBhc3luYyk/LmZpcnN0TmFtZSB9fTwvZGl2PlxuICAgIDxkaXY+e3sgKGRpc3BsYXlOYW1lJCB8IGFzeW5jKT8uZW1haWwgfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
46
+ args: [{ standalone: true, imports: [CommonModule, RouterModule, MatMenuModule, TranslateModule], selector: 'app-user-info', encapsulation: ViewEncapsulation.None, template: "<div mat-menu-item class=\"aca-user-info\" [routerLink]=\"['/profile']\" title=\"{{ 'APP.TOOLTIPS.MY_PROFILE' | translate }}\">\n <ng-container *ngIf=\"user$ | async as user\">\n <button class=\"aca-user-info-button\">\n <div>{{ user.initials || 'U' }}</div>\n </button>\n <div class=\"aca-user-info-details\">\n <div>{{ user.userName }}</div>\n <div>{{ user.email }}</div>\n </div>\n </ng-container>\n</div>\n", styles: [".aca-user-info{display:flex;height:66px;align-items:center}.aca-user-info-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-selected-text-color);border:none}.aca-user-info-details{line-height:24px;margin-left:10px}\n"] }]
47
+ }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9jb21tb24vdXNlci1pbmZvL3VzZXItaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvY29tbW9uL3VzZXItaW5mby91c2VyLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQVVwQyxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU1UsVUFBSyxHQUFHLE1BQU0sQ0FBa0IsQ0FBQSxLQUFlLENBQUEsQ0FBQyxDQUFDO1FBQ3pELFVBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUMzQzs7OEdBSFksaUJBQWlCO2tHQUFqQixpQkFBaUIseUVDeEM5Qix5YkFXQSx3YkR1QlksWUFBWSx1TEFBRSxZQUFZLDhRQUFFLGFBQWEsa0xBQUUsZUFBZTsyRkFNekQsaUJBQWlCO2tCQVI3QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxZQUMzRCxlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQXBwU3RvcmUsIGdldFVzZXJQcm9maWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIE1hdE1lbnVNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLWluZm8uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBVc2VySW5mb0NvbXBvbmVudCB7XG4gIHByaXZhdGUgc3RvcmUgPSBpbmplY3Q8U3RvcmU8QXBwU3RvcmU+PihTdG9yZTxBcHBTdG9yZT4pO1xuICB1c2VyJCA9IHRoaXMuc3RvcmUuc2VsZWN0KGdldFVzZXJQcm9maWxlKTtcbn1cbiIsIjxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cImFjYS11c2VyLWluZm9cIiBbcm91dGVyTGlua109XCJbJy9wcm9maWxlJ11cIiB0aXRsZT1cInt7ICdBUFAuVE9PTFRJUFMuTVlfUFJPRklMRScgfCB0cmFuc2xhdGUgfX1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXIkIHwgYXN5bmMgYXMgdXNlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJhY2EtdXNlci1pbmZvLWJ1dHRvblwiPlxuICAgICAgPGRpdj57eyB1c2VyLmluaXRpYWxzIHx8ICdVJyB9fTwvZGl2PlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJhY2EtdXNlci1pbmZvLWRldGFpbHNcIj5cbiAgICAgIDxkaXY+e3sgdXNlci51c2VyTmFtZSB9fTwvZGl2PlxuICAgICAgPGRpdj57eyB1c2VyLmVtYWlsIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -25,7 +25,7 @@ import { Component, Input, ViewEncapsulation } from '@angular/core';
25
25
  import { UntypedFormGroup, UntypedFormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
26
26
  import { QueriesApi, SiteEntry } from '@alfresco/js-api';
27
27
  import { Store } from '@ngrx/store';
28
- import { SnackbarActionTypes, UpdateLibraryAction } from '@alfresco/aca-shared/store';
28
+ import { SnackbarActionTypes, UpdateLibraryAction, isAdmin } from '@alfresco/aca-shared/store';
29
29
  import { debounceTime, filter, mergeMap, takeUntil } from 'rxjs/operators';
30
30
  import { AlfrescoApiService } from '@alfresco/adf-core';
31
31
  import { from, Subject } from 'rxjs';
@@ -78,6 +78,7 @@ export class LibraryMetadataFormComponent {
78
78
  });
79
79
  this.matcher = new InstantErrorStateMatcher();
80
80
  this.canUpdateLibrary = false;
81
+ this.isAdmin = false;
81
82
  this.onDestroy$ = new Subject();
82
83
  }
83
84
  get queriesApi() {
@@ -129,7 +130,13 @@ export class LibraryMetadataFormComponent {
129
130
  this.libraryTitleExists = false;
130
131
  }
131
132
  });
132
- this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager';
133
+ this.store
134
+ .select(isAdmin)
135
+ .pipe(takeUntil(this.onDestroy$))
136
+ .subscribe((value) => {
137
+ this.isAdmin = value;
138
+ });
139
+ this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager' || this.isAdmin;
133
140
  this.handleUpdatingEvent(SnackbarActionTypes.Info, 'LIBRARY.SUCCESS.LIBRARY_UPDATED', () => Object.assign(this.node.entry, this.form.value));
134
141
  this.handleUpdatingEvent(SnackbarActionTypes.Error, 'LIBRARY.ERRORS.LIBRARY_UPDATE_ERROR', () => this.form.markAsDirty());
135
142
  }
@@ -139,7 +146,7 @@ export class LibraryMetadataFormComponent {
139
146
  }
140
147
  ngOnChanges() {
141
148
  this.updateForm(this.node);
142
- this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager';
149
+ this.canUpdateLibrary = this.node?.entry?.role === 'SiteManager' || this.isAdmin;
143
150
  }
144
151
  update() {
145
152
  if (this.canUpdateLibrary && this.form.valid) {
@@ -196,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
196
203
  }], ctorParameters: function () { return [{ type: i1.AlfrescoApiService }, { type: i2.Store }, { type: i3.Actions }]; }, propDecorators: { node: [{
197
204
  type: Input
198
205
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS1tZXRhZGF0YS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9pbmZvLWRyYXdlci9saWJyYXJ5LW1ldGFkYXRhLXRhYi9saWJyYXJ5LW1ldGFkYXRhLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2luZm8tZHJhd2VyL2xpYnJhcnktbWV0YWRhdGEtdGFiL2xpYnJhcnktbWV0YWRhdGEtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnQyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixVQUFVLEVBR1YsV0FBVyxFQUNYLG1CQUFtQixFQUdwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBR0wsbUJBQW1CLEVBR25CLG1CQUFtQixFQUNwQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQWMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVB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a0JBcEJ4QyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLGVBQWU7cUJBQ2hCLFlBQ1MsMkJBQTJCLGlCQUd0QixpQkFBaUIsQ0FBQyxJQUFJO21KQWdCckMsSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgTmdGb3JtLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUXVlcmllc0FwaSwgU2l0ZUVudHJ5LCBTaXRlUGFnaW5nIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEFwcFN0b3JlLFxuICBTbmFja2JhckFjdGlvbixcbiAgU25hY2tiYXJBY3Rpb25UeXBlcyxcbiAgU25hY2tiYXJFcnJvckFjdGlvbixcbiAgU25hY2tiYXJJbmZvQWN0aW9uLFxuICBVcGRhdGVMaWJyYXJ5QWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtZXJnZU1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcblxuZXhwb3J0IGNsYXNzIEluc3RhbnRFcnJvclN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgaXNFcnJvclN0YXRlKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCB8IG51bGwsIGZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSB8IE5nRm9ybSB8IG51bGwpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc1N1Ym1pdHRlZCA9IGZvcm0/LnN1Ym1pdHRlZDtcbiAgICByZXR1cm4gISEoY29udHJvbD8uaW52YWxpZCAmJiAoY29udHJvbD8uZGlydHkgfHwgY29udHJvbD8udG91Y2hlZCB8fCBpc1N1Ym1pdHRlZCkpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdENhcmRNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhcHAtbGlicmFyeS1tZXRhZGF0YS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYnJhcnktbWV0YWRhdGEtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpYnJhcnktbWV0YWRhdGEtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIExpYnJhcnlNZXRhZGF0YUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcXVlcmllc0FwaTogUXVlcmllc0FwaTtcbiAgcHJpdmF0ZSBfdGl0bGVFcnJvclRyYW5zbGF0aW9uS2V5OiBzdHJpbmc7XG5cbiAgZ2V0IHF1ZXJpZXNBcGkoKTogUXVlcmllc0FwaSB7XG4gICAgdGhpcy5fcXVlcmllc0FwaSA9IHRoaXMuX3F1ZXJpZXNBcGkgPz8gbmV3IFF1ZXJpZXNBcGkodGhpcy5hbGZyZXNjb0FwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJpZXNBcGk7XG4gIH1cblxuICBnZXQgdGl0bGVFcnJvclRyYW5zbGF0aW9uS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RpdGxlRXJyb3JUcmFuc2xhdGlvbktleTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIG5vZGU6IFNpdGVFbnRyeTtcblxuICBsaWJyYXJ5VGl0bGVFeGlzdHMgPSBmYWxzZTtcblxuICBsaWJyYXJ5VHlwZSA9IFtcbiAgICB7IHZhbHVlOiAnUFVCTElDJywgbGFiZWw6ICdMSUJSQVJZLlZJU0lCSUxJVFkuUFVCTElDJyB9LFxuICAgIHsgdmFsdWU6ICdQUklWQVRFJywgbGFiZWw6ICdMSUJSQVJZLlZJU0lCSUxJVFkuUFJJVkFURScgfSxcbiAgICB7IHZhbHVlOiAnTU9ERVJBVEVEJywgbGFiZWw6ICdMSUJSQVJZLlZJU0lCSUxJVFkuTU9ERVJBVEVEJyB9XG4gIF07XG5cbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICBpZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfSksXG4gICAgdGl0bGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogJycgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NiksIHRoaXMudmFsaWRhdGVFbXB0eU5hbWVdKSxcbiAgICBkZXNjcmlwdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiAnJyB9LCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKV0pLFxuICAgIHZpc2liaWxpdHk6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5saWJyYXJ5VHlwZVswXS52YWx1ZSlcbiAgfSk7XG5cbiAgbWF0Y2hlciA9IG5ldyBJbnN0YW50RXJyb3JTdGF0ZU1hdGNoZXIoKTtcbiAgY2FuVXBkYXRlTGlicmFyeSA9IGZhbHNlO1xuXG4gIG9uRGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxmcmVzY29BcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LCBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zKSB7fVxuXG4gIHRvZ2dsZUVkaXQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybS5lbmFibGVkKSB7XG4gICAgICB0aGlzLmZvcm0uZGlzYWJsZSh7XG4gICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgfSk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuaWQuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5ub2RlKTtcbiAgICB0aGlzLnRvZ2dsZUVkaXQoKTtcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudG9nZ2xlRWRpdCgpO1xuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLm5vZGUpO1xuICAgIHRoaXMuZm9ybS5jb250cm9scy50aXRsZS5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgKHRoaXMuX3RpdGxlRXJyb3JUcmFuc2xhdGlvbktleSA9IHRoaXMuZm9ybS5jb250cm9scy50aXRsZS5lcnJvcnM/LmVtcHR5XG4gICAgICAgICAgICA/ICdMSUJSQVJZLkVSUk9SUy5PTkxZX1NQQUNFUydcbiAgICAgICAgICAgIDogJ0xJQlJBUlkuRVJST1JTLlRJVExFX1RPT19MT05HX09SX01JU1NJTkcnKVxuICAgICAgKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3RpdGxlJ10udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIG1lcmdlTWFwKCh0aXRsZSkgPT4gdGhpcy5maW5kTGlicmFyeUJ5VGl0bGUodGl0bGUpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zdCB7IGVudHJpZXMgfSA9IHJlc3VsdC5saXN0O1xuXG4gICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHMudGl0bGUudmFsdWUgPT09IHRoaXMubm9kZS5lbnRyeS50aXRsZSkge1xuICAgICAgICAgICAgdGhpcy5saWJyYXJ5VGl0bGVFeGlzdHMgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saWJyYXJ5VGl0bGVFeGlzdHMgPSB0aGlzLmZvcm0uY29udHJvbHMudGl0bGUudmFsdWUgPT09IGVudHJpZXNbMF0uZW50cnkudGl0bGU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubGlicmFyeVRpdGxlRXhpc3RzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMuY2FuVXBkYXRlTGlicmFyeSA9IHRoaXMubm9kZT8uZW50cnk/LnJvbGUgPT09ICdTaXRlTWFuYWdlcic7XG4gICAgdGhpcy5oYW5kbGVVcGRhdGluZ0V2ZW50PFNuYWNrYmFySW5mb0FjdGlvbj4oU25hY2tiYXJBY3Rpb25UeXBlcy5JbmZvLCAnTElCUkFSWS5TVUNDRVNTLkxJQlJBUllfVVBEQVRFRCcsICgpID0+XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubm9kZS5lbnRyeSwgdGhpcy5mb3JtLnZhbHVlKVxuICAgICk7XG4gICAgdGhpcy5oYW5kbGVVcGRhdGluZ0V2ZW50PFNuYWNrYmFyRXJyb3JBY3Rpb24+KFNuYWNrYmFyQWN0aW9uVHlwZXMuRXJyb3IsICdMSUJSQVJZLkVSUk9SUy5MSUJSQVJZX1VQREFURV9FUlJPUicsICgpID0+IHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy51cGRhdGVGb3JtKHRoaXMubm9kZSk7XG4gICAgdGhpcy5jYW5VcGRhdGVMaWJyYXJ5ID0gdGhpcy5ub2RlPy5lbnRyeT8ucm9sZSA9PT0gJ1NpdGVNYW5hZ2VyJztcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5jYW5VcGRhdGVMaWJyYXJ5ICYmIHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBuZXcgVXBkYXRlTGlicmFyeUFjdGlvbih7XG4gICAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmZvcm0udmFsdWUudGl0bGUudHJpbSgpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRm9ybShub2RlOiBTaXRlRW50cnkpIHtcbiAgICBjb25zdCB7IGVudHJ5IH0gPSBub2RlO1xuXG4gICAgdGhpcy5mb3JtLnNldFZhbHVlKHtcbiAgICAgIGlkOiBlbnRyeS5pZCxcbiAgICAgIHRpdGxlOiBlbnRyeS50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBlbnRyeS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHZpc2liaWxpdHk6IGVudHJ5LnZpc2liaWxpdHlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZExpYnJhcnlCeVRpdGxlKGxpYnJhcnlUaXRsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTaXRlUGFnaW5nIHwgeyBsaXN0OiB7IGVudHJpZXM6IGFueVtdIH0gfT4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5xdWVyaWVzQXBpXG4gICAgICAgIC5maW5kU2l0ZXMobGlicmFyeVRpdGxlLnRyaW0oKSwge1xuICAgICAgICAgIG1heEl0ZW1zOiAxLFxuICAgICAgICAgIGZpZWxkczogWyd0aXRsZSddXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiAoeyBsaXN0OiB7IGVudHJpZXM6IFtdIH0gfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVXBkYXRpbmdFdmVudDxUIGV4dGVuZHMgU25hY2tiYXJBY3Rpb24+KGFjdGlvblR5cGU6IFNuYWNrYmFyQWN0aW9uVHlwZXMsIHBheWxvYWQ6IHN0cmluZywgaGFuZGxlOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG9mVHlwZTxUPihhY3Rpb25UeXBlKSxcbiAgICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5wYXlsb2FkID09PSBwYXlsb2FkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoaGFuZGxlKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVFbXB0eU5hbWUoY29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nPik6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIHJldHVybiBjb250cm9sLnZhbHVlLmxlbmd0aCAmJiAhY29udHJvbC52YWx1ZS50cmltKCkgPyB7IGVtcHR5OiB0cnVlIH0gOiBudWxsO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgKm5nSWY9XCJub2RlXCI+XG4gIDxtYXQtY2FyZC1jb250ZW50PlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGZsb2F0TGFiZWw9XCJhdXRvXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwibGlicmFyeS1uYW1lLXByb3BlcnRpZXMtd3JhcHBlclwiIGNsYXNzPVwiYXBwLWxpYnJhcnktbWV0YWRhdGEtZm9ybS1maWVsZFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJmb3JtLmVuYWJsZWRcIlxuICAgICAgICAgIFtjZGtUcmFwRm9jdXNdPVwiZm9ybS5lbmFibGVkXCJcbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0xJQlJBUlkuRElBTE9HLkZPUk0uTkFNRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwibWF0Y2hlclwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cImxpYnJhcnlUaXRsZUV4aXN0c1wiPnt7ICdMSUJSQVJZLkhJTlRTLlNJVEVfVElUTEVfRVhJU1RTJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAge3sgdGl0bGVFcnJvclRyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGZsb2F0TGFiZWw9XCJhdXRvXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwibGlicmFyeS1pZC1wcm9wZXJ0aWVzLXdyYXBwZXJcIiBjbGFzcz1cImFwcC1saWJyYXJ5LW1ldGFkYXRhLWZvcm0tZmllbGRcIj5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3sgJ0xJQlJBUlkuRElBTE9HLkZPUk0uU0lURV9JRCcgfCB0cmFuc2xhdGUgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJpZFwiIC8+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImF1dG9cIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJsaWJyYXJ5LXZpc2liaWxpdHktcHJvcGVydGllcy13cmFwcGVyXCIgY2xhc3M9XCJhcHAtbGlicmFyeS1tZXRhZGF0YS1mb3JtLWZpZWxkXCI+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwie3sgJ0xJQlJBUlkuRElBTE9HLkZPUk0uVklTSUJJTElUWScgfCB0cmFuc2xhdGUgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ2aXNpYmlsaXR5XCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInR5cGUudmFsdWVcIiAqbmdGb3I9XCJsZXQgdHlwZSBvZiBsaWJyYXJ5VHlwZVwiPlxuICAgICAgICAgICAge3sgdHlwZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGZsb2F0TGFiZWw9XCJhdXRvXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwibGlicmFyeS1kZXNjcmlwdGlvbi1wcm9wZXJ0aWVzLXdyYXBwZXJcIiBjbGFzcz1cImFwcC1saWJyYXJ5LW1ldGFkYXRhLWZvcm0tZmllbGRcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdMSUJSQVJZLkRJQUxPRy5GT1JNLkRFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwibWF0Y2hlclwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgIHt7ICdMSUJSQVJZLkVSUk9SUy5ERVNDUklQVElPTl9UT09fTE9ORycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZm9ybT5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG4gIDxtYXQtY2FyZC1hY3Rpb25zIGFsaWduPVwiZW5kXCIgKm5nSWY9XCJjYW5VcGRhdGVMaWJyYXJ5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm0uZW5hYmxlZFwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICB7eyAnTElCUkFSWS5ESUFMT0cuQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCBmb3JtLnByaXN0aW5lXCIgKGNsaWNrKT1cInVwZGF0ZSgpXCI+XG4gICAgICAgIHt7ICdMSUJSQVJZLkRJQUxPRy5VUERBVEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRvZ2dsZUVkaXQoKVwiICpuZ0lmPVwiZm9ybS5kaXNhYmxlZFwiPlxuICAgICAge3sgJ0xJQlJBUlkuRElBTE9HLkVESVQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LWNhcmQtYWN0aW9ucz5cbjwvbWF0LWNhcmQ+XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS1tZXRhZGF0YS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9pbmZvLWRyYXdlci9saWJyYXJ5LW1ldGFkYXRhLXRhYi9saWJyYXJ5LW1ldGFkYXRhLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2luZm8tZHJhd2VyL2xpYnJhcnktbWV0YWRhdGEtdGFiL2xpYnJhcnktbWV0YWRhdGEtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnQyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixVQUFVLEVBR1YsV0FBVyxFQUNYLG1CQUFtQixFQUdwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBR0wsbUJBQW1CLEVBR25CLG1CQUFtQixFQUNuQixPQUFPLEVBQ1IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFjLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFD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RSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hGLENBQUM7O3lIQTdKVSw0QkFBNEI7NkdBQTVCLDRCQUE0QixvSUN4RnpDLHNxRkE0REEsaUlEV0ksWUFBWSwrUEFDWixhQUFhLHVXQUNiLGVBQWUsMkZBQ2Ysa0JBQWtCLCtYQUNsQixXQUFXLHczQkFDWCxtQkFBbUIsK1VBQ25CLGVBQWUsMFFBQ2YsZUFBZSw4QkFDZixjQUFjLDJXQUNkLFVBQVUsMExBQ1YsZUFBZTsyRkFPTiw0QkFBNEI7a0JBcEJ4QyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLGVBQWU7cUJBQ2hCLFlBQ1MsMkJBQTJCLGlCQUd0QixpQkFBaUIsQ0FBQyxJQUFJO21KQWdCckMsSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgTmdGb3JtLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUXVlcmllc0FwaSwgU2l0ZUVudHJ5LCBTaXRlUGFnaW5nIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEFwcFN0b3JlLFxuICBTbmFja2JhckFjdGlvbixcbiAgU25hY2tiYXJBY3Rpb25UeXBlcyxcbiAgU25hY2tiYXJFcnJvckFjdGlvbixcbiAgU25hY2tiYXJJbmZvQWN0aW9uLFxuICBVcGRhdGVMaWJyYXJ5QWN0aW9uLFxuICBpc0FkbWluXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtZXJnZU1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcblxuZXhwb3J0IGNsYXNzIEluc3RhbnRFcnJvclN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgaXNFcnJvclN0YXRlKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCB8IG51bGwsIGZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSB8IE5nRm9ybSB8IG51bGwpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc1N1Ym1pdHRlZCA9IGZvcm0/LnN1Ym1pdHRlZDtcbiAgICByZXR1cm4gISEoY29udHJvbD8uaW52YWxpZCAmJiAoY29udHJvbD8uZGlydHkgfHwgY29udHJvbD8udG91Y2hlZCB8fCBpc1N1Ym1pdHRlZCkpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdENhcmRNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhcHAtbGlicmFyeS1tZXRhZGF0YS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYnJhcnktbWV0YWRhdGEtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpYnJhcnktbWV0YWRhdGEtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIExpYnJhcnlNZXRhZGF0YUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcXVlcmllc0FwaTogUXVlcmllc0FwaTtcbiAgcHJpdmF0ZSBfdGl0bGVFcnJvclRyYW5zbGF0aW9uS2V5OiBzdHJpbmc7XG5cbiAgZ2V0IHF1ZXJpZXNBcGkoKTogUXVlcmllc0FwaSB7XG4gICAgdGhpcy5fcXVlcmllc0FwaSA9IHRoaXMuX3F1ZXJpZXNBcGkgPz8gbmV3IFF1ZXJpZXNBcGkodGhpcy5hbGZyZXNjb0FwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJpZXNBcGk7XG4gIH1cblxuICBnZXQgdGl0bGVFcnJvclRyYW5zbGF0aW9uS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RpdGxlRXJyb3JUcmFuc2xhdGlvbktleTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIG5vZGU6IFNpdGVFbnRyeTtcblxuICBsaWJyYXJ5VGl0bGVFeGlzdHMgPSBmYWxzZTtcblxuICBsaWJyYXJ5VHlwZSA9IFtcbiAgICB7IHZhbHVlOiAnUFVCTElDJywgbGFiZWw6ICdMSUJSQVJZLlZJU0lCSUxJVFkuUFVCTElDJyB9LFxuICAgIHsgdmFsdWU6ICdQUklWQVRFJywgbGFiZWw6ICdMSUJSQVJZLlZJU0lCSUxJVFkuUFJJVkFURScgfSxcbiAgICB7IHZhbHVlOiAnTU9ERVJBVEVEJywgbGFiZWw6ICdMSUJSQVJZLlZJU0lCSUxJVFkuTU9ERVJBVEVEJyB9XG4gIF07XG5cbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICBpZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfSksXG4gICAgdGl0bGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogJycgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NiksIHRoaXMudmFsaWRhdGVFbXB0eU5hbWVdKSxcbiAgICBkZXNjcmlwdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiAnJyB9LCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKV0pLFxuICAgIHZpc2liaWxpdHk6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5saWJyYXJ5VHlwZVswXS52YWx1ZSlcbiAgfSk7XG5cbiAgbWF0Y2hlciA9IG5ldyBJbnN0YW50RXJyb3JTdGF0ZU1hdGNoZXIoKTtcbiAgY2FuVXBkYXRlTGlicmFyeSA9IGZhbHNlO1xuICBpc0FkbWluID0gZmFsc2U7XG5cbiAgb25EZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbGZyZXNjb0FwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSwgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxBcHBTdG9yZT4sIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMpIHt9XG5cbiAgdG9nZ2xlRWRpdCgpIHtcbiAgICBpZiAodGhpcy5mb3JtLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoe1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pZC5kaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLm5vZGUpO1xuICAgIHRoaXMudG9nZ2xlRWRpdCgpO1xuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50b2dnbGVFZGl0KCk7XG4gICAgdGhpcy51cGRhdGVGb3JtKHRoaXMubm9kZSk7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRpdGxlLnN0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAodGhpcy5fdGl0bGVFcnJvclRyYW5zbGF0aW9uS2V5ID0gdGhpcy5mb3JtLmNvbnRyb2xzLnRpdGxlLmVycm9ycz8uZW1wdHlcbiAgICAgICAgICAgID8gJ0xJQlJBUlkuRVJST1JTLk9OTFlfU1BBQ0VTJ1xuICAgICAgICAgICAgOiAnTElCUkFSWS5FUlJPUlMuVElUTEVfVE9PX0xPTkdfT1JfTUlTU0lORycpXG4gICAgICApO1xuICAgIHRoaXMuZm9ybS5jb250cm9sc1sndGl0bGUnXS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgbWVyZ2VNYXAoKHRpdGxlKSA9PiB0aGlzLmZpbmRMaWJyYXJ5QnlUaXRsZSh0aXRsZSkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZW50cmllcyB9ID0gcmVzdWx0Lmxpc3Q7XG5cbiAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9scy50aXRsZS52YWx1ZSA9PT0gdGhpcy5ub2RlLmVudHJ5LnRpdGxlKSB7XG4gICAgICAgICAgICB0aGlzLmxpYnJhcnlUaXRsZUV4aXN0cyA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpYnJhcnlUaXRsZUV4aXN0cyA9IHRoaXMuZm9ybS5jb250cm9scy50aXRsZS52YWx1ZSA9PT0gZW50cmllc1swXS5lbnRyeS50aXRsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5saWJyYXJ5VGl0bGVFeGlzdHMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChpc0FkbWluKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgIHRoaXMuY2FuVXBkYXRlTGlicmFyeSA9IHRoaXMubm9kZT8uZW50cnk/LnJvbGUgPT09ICdTaXRlTWFuYWdlcicgfHwgdGhpcy5pc0FkbWluO1xuICAgIHRoaXMuaGFuZGxlVXBkYXRpbmdFdmVudDxTbmFja2JhckluZm9BY3Rpb24+KFNuYWNrYmFyQWN0aW9uVHlwZXMuSW5mbywgJ0xJQlJBUlkuU1VDQ0VTUy5MSUJSQVJZX1VQREFURUQnLCAoKSA9PlxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5vZGUuZW50cnksIHRoaXMuZm9ybS52YWx1ZSlcbiAgICApO1xuICAgIHRoaXMuaGFuZGxlVXBkYXRpbmdFdmVudDxTbmFja2JhckVycm9yQWN0aW9uPihTbmFja2JhckFjdGlvblR5cGVzLkVycm9yLCAnTElCUkFSWS5FUlJPUlMuTElCUkFSWV9VUERBVEVfRVJST1InLCAoKSA9PiB0aGlzLmZvcm0ubWFya0FzRGlydHkoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLm5vZGUpO1xuICAgIHRoaXMuY2FuVXBkYXRlTGlicmFyeSA9IHRoaXMubm9kZT8uZW50cnk/LnJvbGUgPT09ICdTaXRlTWFuYWdlcicgfHwgdGhpcy5pc0FkbWluO1xuICB9XG5cbiAgdXBkYXRlKCkge1xuICAgIGlmICh0aGlzLmNhblVwZGF0ZUxpYnJhcnkgJiYgdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIG5ldyBVcGRhdGVMaWJyYXJ5QWN0aW9uKHtcbiAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgICAgICAgdGl0bGU6IHRoaXMuZm9ybS52YWx1ZS50aXRsZS50cmltKClcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKG5vZGU6IFNpdGVFbnRyeSkge1xuICAgIGNvbnN0IHsgZW50cnkgfSA9IG5vZGU7XG5cbiAgICB0aGlzLmZvcm0uc2V0VmFsdWUoe1xuICAgICAgaWQ6IGVudHJ5LmlkLFxuICAgICAgdGl0bGU6IGVudHJ5LnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IGVudHJ5LmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgdmlzaWJpbGl0eTogZW50cnkudmlzaWJpbGl0eVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTGlicmFyeUJ5VGl0bGUobGlicmFyeVRpdGxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNpdGVQYWdpbmcgfCB7IGxpc3Q6IHsgZW50cmllczogYW55W10gfSB9PiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLnF1ZXJpZXNBcGlcbiAgICAgICAgLmZpbmRTaXRlcyhsaWJyYXJ5VGl0bGUudHJpbSgpLCB7XG4gICAgICAgICAgbWF4SXRlbXM6IDEsXG4gICAgICAgICAgZmllbGRzOiBbJ3RpdGxlJ11cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+ICh7IGxpc3Q6IHsgZW50cmllczogW10gfSB9KSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVcGRhdGluZ0V2ZW50PFQgZXh0ZW5kcyBTbmFja2JhckFjdGlvbj4oYWN0aW9uVHlwZTogU25hY2tiYXJBY3Rpb25UeXBlcywgcGF5bG9hZDogc3RyaW5nLCBoYW5kbGU6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgb2ZUeXBlPFQ+KGFjdGlvblR5cGUpLFxuICAgICAgICBmaWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnBheWxvYWQgPT09IHBheWxvYWQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShoYW5kbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVtcHR5TmFtZShjb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmc+KTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgcmV0dXJuIGNvbnRyb2wudmFsdWUubGVuZ3RoICYmICFjb250cm9sLnZhbHVlLnRyaW0oKSA/IHsgZW1wdHk6IHRydWUgfSA6IG51bGw7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZCAqbmdJZj1cIm5vZGVcIj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImF1dG9cIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJsaWJyYXJ5LW5hbWUtcHJvcGVydGllcy13cmFwcGVyXCIgY2xhc3M9XCJhcHAtbGlicmFyeS1tZXRhZGF0YS1mb3JtLWZpZWxkXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cImZvcm0uZW5hYmxlZFwiXG4gICAgICAgICAgW2Nka1RyYXBGb2N1c109XCJmb3JtLmVuYWJsZWRcIlxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnTElCUkFSWS5ESUFMT0cuRk9STS5OQU1FJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIlxuICAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJtYXRjaGVyXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwibGlicmFyeVRpdGxlRXhpc3RzXCI+e3sgJ0xJQlJBUlkuSElOVFMuU0lURV9USVRMRV9FWElTVFMnIHwgdHJhbnNsYXRlIH19PC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICB7eyB0aXRsZUVycm9yVHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImF1dG9cIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJsaWJyYXJ5LWlkLXByb3BlcnRpZXMtd3JhcHBlclwiIGNsYXNzPVwiYXBwLWxpYnJhcnktbWV0YWRhdGEtZm9ybS1maWVsZFwiPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJ7eyAnTElCUkFSWS5ESUFMT0cuRk9STS5TSVRFX0lEJyB8IHRyYW5zbGF0ZSB9fVwiIGZvcm1Db250cm9sTmFtZT1cImlkXCIgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYXV0b1wiIGRhdGEtYXV0b21hdGlvbi1pZD1cImxpYnJhcnktdmlzaWJpbGl0eS1wcm9wZXJ0aWVzLXdyYXBwZXJcIiBjbGFzcz1cImFwcC1saWJyYXJ5LW1ldGFkYXRhLWZvcm0tZmllbGRcIj5cbiAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eyAnTElCUkFSWS5ESUFMT0cuRk9STS5WSVNJQklMSVRZJyB8IHRyYW5zbGF0ZSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInZpc2liaWxpdHlcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidHlwZS52YWx1ZVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIGxpYnJhcnlUeXBlXCI+XG4gICAgICAgICAgICB7eyB0eXBlLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImF1dG9cIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJsaWJyYXJ5LWRlc2NyaXB0aW9uLXByb3BlcnRpZXMtd3JhcHBlclwiIGNsYXNzPVwiYXBwLWxpYnJhcnktbWV0YWRhdGEtZm9ybS1maWVsZFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0xJQlJBUlkuRElBTE9HLkZPUk0uREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJtYXRjaGVyXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAge3sgJ0xJQlJBUlkuRVJST1JTLkRFU0NSSVBUSU9OX1RPT19MT05HJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9mb3JtPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgPG1hdC1jYXJkLWFjdGlvbnMgYWxpZ249XCJlbmRcIiAqbmdJZj1cImNhblVwZGF0ZUxpYnJhcnlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS5lbmFibGVkXCI+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICAgIHt7ICdMSUJSQVJZLkRJQUxPRy5DQU5DRUwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIiAoY2xpY2spPVwidXBkYXRlKClcIj5cbiAgICAgICAge3sgJ0xJQlJBUlkuRElBTE9HLlVQREFURScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidG9nZ2xlRWRpdCgpXCIgKm5nSWY9XCJmb3JtLmRpc2FibGVkXCI+XG4gICAgICB7eyAnTElCUkFSWS5ESUFMT0cuRURJVCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuPC9tYXQtY2FyZD5cbiJdfQ==
@@ -21,80 +21,38 @@
21
21
  * You should have received a copy of the GNU Lesser General Public License
22
22
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
23
  */
24
- import { PeopleContentService } from '@alfresco/adf-content-services';
25
- import { AuthenticationService, IdentityUserService } from '@alfresco/adf-core';
26
- import { Component, Input, ViewEncapsulation } from '@angular/core';
27
- import { of } from 'rxjs';
28
- import { map } from 'rxjs/operators';
24
+ import { Component, Input, ViewEncapsulation, inject } from '@angular/core';
29
25
  import { CommonModule } from '@angular/common';
30
26
  import { MatButtonModule } from '@angular/material/button';
31
27
  import { TranslateModule } from '@ngx-translate/core';
32
28
  import { MatMenuModule } from '@angular/material/menu';
33
29
  import { ToolbarMenuItemComponent } from '@alfresco/aca-shared';
30
+ import { getUserProfile } from '@alfresco/aca-shared/store';
31
+ import { Store } from '@ngrx/store';
34
32
  import * as i0 from "@angular/core";
35
- import * as i1 from "@alfresco/adf-content-services";
36
- import * as i2 from "@alfresco/adf-core";
37
- import * as i3 from "@angular/common";
38
- import * as i4 from "@ngx-translate/core";
39
- import * as i5 from "@angular/material/button";
40
- import * as i6 from "@angular/material/menu";
33
+ import * as i1 from "@angular/common";
34
+ import * as i2 from "@ngx-translate/core";
35
+ import * as i3 from "@angular/material/button";
36
+ import * as i4 from "@angular/material/menu";
41
37
  export class UserMenuComponent {
42
- constructor(peopleContentService, identityUserService, authService) {
43
- this.peopleContentService = peopleContentService;
44
- this.identityUserService = identityUserService;
45
- this.authService = authService;
38
+ constructor() {
39
+ this.store = inject((Store));
40
+ this.user$ = this.store.select(getUserProfile);
46
41
  }
47
42
  ngOnInit() {
48
- this.getUserInfo();
49
43
  if (this.data?.items) {
50
44
  this.data.items.sort((a, b) => a.order - b.order);
51
45
  }
52
46
  }
53
- getUserInfo() {
54
- if (this.authService.isOauth()) {
55
- this.loadIdentityUserInfo();
56
- if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) {
57
- this.loadEcmUserInfo();
58
- }
59
- }
60
- else if (this.isEcmLoggedIn()) {
61
- this.loadEcmUserInfo();
62
- }
63
- }
64
- get isLoggedIn() {
65
- if (this.authService.isKerberosEnabled()) {
66
- return true;
67
- }
68
- return this.authService.isLoggedIn();
69
- }
70
- loadEcmUserInfo() {
71
- this.displayName$ = this.peopleContentService.getCurrentUserInfo().pipe(map((model) => this.parseDisplayName(model)));
72
- }
73
- loadIdentityUserInfo() {
74
- this.displayName$ = of(this.identityUserService.getCurrentUserInfo()).pipe(map((model) => this.parseDisplayName(model)));
75
- }
76
- parseDisplayName(model) {
77
- const result = { firstName: '', initials: '' };
78
- if (model.firstName) {
79
- result.initials = model.firstName.charAt(0).toUpperCase();
80
- }
81
- if (model.lastName) {
82
- result.initials += model.lastName.charAt(0).toUpperCase();
83
- }
84
- return result;
85
- }
86
- isEcmLoggedIn() {
87
- return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());
88
- }
89
47
  }
90
- UserMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: UserMenuComponent, deps: [{ token: i1.PeopleContentService }, { token: i2.IdentityUserService }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
91
- UserMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: UserMenuComponent, isStandalone: true, selector: "aca-user-menu", inputs: { actionRef: "actionRef", data: "data" }, ngImport: i0, template: "<button mat-button\n class=\"aca-user-menu-button\"\n data-automation-id=\"app-user-menu-button\"\n [matMenuTriggerFor]=\"menu\"\n title=\"{{'APP.TOOLTIPS.OPTIONS_SETTINGS' | translate}}\"\n>\n <div>{{ (displayName$ | async)?.initials }}</div>\n</button>\n\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let item of data.items\">\n <app-toolbar-menu-item [actionRef]=\"item\"></app-toolbar-menu-item>\n </ng-container>\n</mat-menu>\n", styles: [".aca-user-menu-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-sidenav-user-menu-color);border:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: ToolbarMenuItemComponent, selector: "app-toolbar-menu-item", inputs: ["actionRef", "menuId"] }], encapsulation: i0.ViewEncapsulation.None });
48
+ UserMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: UserMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
+ UserMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: UserMenuComponent, isStandalone: true, selector: "aca-user-menu", inputs: { actionRef: "actionRef", data: "data" }, ngImport: i0, template: "<button mat-button\n class=\"aca-user-menu-button\"\n data-automation-id=\"app-user-menu-button\"\n [matMenuTriggerFor]=\"menu\"\n title=\"{{'APP.TOOLTIPS.OPTIONS_SETTINGS' | translate}}\"\n>\n <div>{{ (user$ | async)?.initials }}</div>\n</button>\n\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let item of data.items\">\n <app-toolbar-menu-item [actionRef]=\"item\"></app-toolbar-menu-item>\n </ng-container>\n</mat-menu>\n", styles: [".aca-user-menu-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-sidenav-user-menu-color);border:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: ToolbarMenuItemComponent, selector: "app-toolbar-menu-item", inputs: ["actionRef", "menuId"] }], encapsulation: i0.ViewEncapsulation.None });
92
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: UserMenuComponent, decorators: [{
93
51
  type: Component,
94
- args: [{ standalone: true, imports: [CommonModule, TranslateModule, MatButtonModule, MatMenuModule, ToolbarMenuItemComponent], selector: 'aca-user-menu', encapsulation: ViewEncapsulation.None, template: "<button mat-button\n class=\"aca-user-menu-button\"\n data-automation-id=\"app-user-menu-button\"\n [matMenuTriggerFor]=\"menu\"\n title=\"{{'APP.TOOLTIPS.OPTIONS_SETTINGS' | translate}}\"\n>\n <div>{{ (displayName$ | async)?.initials }}</div>\n</button>\n\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let item of data.items\">\n <app-toolbar-menu-item [actionRef]=\"item\"></app-toolbar-menu-item>\n </ng-container>\n</mat-menu>\n", styles: [".aca-user-menu-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-sidenav-user-menu-color);border:none}\n"] }]
95
- }], ctorParameters: function () { return [{ type: i1.PeopleContentService }, { type: i2.IdentityUserService }, { type: i2.AuthenticationService }]; }, propDecorators: { actionRef: [{
52
+ args: [{ standalone: true, imports: [CommonModule, TranslateModule, MatButtonModule, MatMenuModule, ToolbarMenuItemComponent], selector: 'aca-user-menu', encapsulation: ViewEncapsulation.None, template: "<button mat-button\n class=\"aca-user-menu-button\"\n data-automation-id=\"app-user-menu-button\"\n [matMenuTriggerFor]=\"menu\"\n title=\"{{'APP.TOOLTIPS.OPTIONS_SETTINGS' | translate}}\"\n>\n <div>{{ (user$ | async)?.initials }}</div>\n</button>\n\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let item of data.items\">\n <app-toolbar-menu-item [actionRef]=\"item\"></app-toolbar-menu-item>\n </ng-container>\n</mat-menu>\n", styles: [".aca-user-menu-button{border-radius:90%;height:32px;margin-right:0;min-width:32px;padding:0;font-weight:700;line-height:32px;text-align:center;vertical-align:middle;background:var(--theme-about-panel-border-color);color:var(--theme-sidenav-user-menu-color);border:none}\n"] }]
53
+ }], propDecorators: { actionRef: [{
96
54
  type: Input
97
55
  }], data: [{
98
56
  type: Input
99
57
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zaWRlbmF2L3VzZXItbWVudS91c2VyLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NpZGVuYXYvdXNlci1tZW51L3VzZXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFVaEUsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixZQUNVLG9CQUEwQyxFQUMxQyxtQkFBd0MsRUFDeEMsV0FBa0M7UUFGbEMseUJBQW9CLEdBQXBC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LEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxZQUN4RixlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUk7aUxBS3JDLFNBQVM7c0JBRFIsS0FBSztnQkFHTixJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgUGVvcGxlQ29udGVudFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlLCBJZGVudGl0eVVzZXJTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZW50QWN0aW9uUmVmIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBUb29sYmFyTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdhY2EtdXNlci1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VzZXItbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGlzcGxheU5hbWUkOiBPYnNlcnZhYmxlPHsgZmlyc3ROYW1lOiBzdHJpbmc7IGluaXRpYWxzOiBzdHJpbmcgfT47XG4gIEBJbnB1dCgpXG4gIGFjdGlvblJlZjogQ29udGVudEFjdGlvblJlZjtcbiAgQElucHV0KClcbiAgZGF0YTogeyBpdGVtczogYW55W10gfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBlb3BsZUNvbnRlbnRTZXJ2aWNlOiBQZW9wbGVDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGlkZW50aXR5VXNlclNlcnZpY2U6IElkZW50aXR5VXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldFVzZXJJbmZvKCk7XG4gICAgaWYgKHRoaXMuZGF0YT8uaXRlbXMpIHtcbiAgICAgIHRoaXMuZGF0YS5pdGVtcy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlckluZm8oKSB7XG4gICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNPYXV0aCgpKSB7XG4gICAgICB0aGlzLmxvYWRJZGVudGl0eVVzZXJJbmZvKCk7XG5cbiAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzRUNNUHJvdmlkZXIoKSAmJiB0aGlzLmF1dGhTZXJ2aWNlLmlzRWNtTG9nZ2VkSW4oKSkge1xuICAgICAgICB0aGlzLmxvYWRFY21Vc2VySW5mbygpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0VjbUxvZ2dlZEluKCkpIHtcbiAgICAgIHRoaXMubG9hZEVjbVVzZXJJbmZvKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNLZXJiZXJvc0VuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmlzTG9nZ2VkSW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEVjbVVzZXJJbmZvKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheU5hbWUkID0gdGhpcy5wZW9wbGVDb250ZW50U2VydmljZS5nZXRDdXJyZW50VXNlckluZm8oKS5waXBlKG1hcCgobW9kZWwpID0+IHRoaXMucGFyc2VEaXNwbGF5TmFtZShtb2RlbCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZElkZW50aXR5VXNlckluZm8oKSB7XG4gICAgdGhpcy5kaXNwbGF5TmFtZSQgPSBvZih0aGlzLmlkZW50aXR5VXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXJJbmZvKCkpLnBpcGUobWFwKChtb2RlbCkgPT4gdGhpcy5wYXJzZURpc3BsYXlOYW1lKG1vZGVsKSkpO1xuICB9XG5cbiAgcGFyc2VEaXNwbGF5TmFtZShtb2RlbDogeyBmaXJzdE5hbWU/OiBzdHJpbmc7IGxhc3ROYW1lPzogc3RyaW5nIH0pOiB7IGZpcnN0TmFtZTogc3RyaW5nOyBpbml0aWFsczogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZmlyc3ROYW1lOiAnJywgaW5pdGlhbHM6ICcnIH07XG4gICAgaWYgKG1vZGVsLmZpcnN0TmFtZSkge1xuICAgICAgcmVzdWx0LmluaXRpYWxzID0gbW9kZWwuZmlyc3ROYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAobW9kZWwubGFzdE5hbWUpIHtcbiAgICAgIHJlc3VsdC5pbml0aWFscyArPSBtb2RlbC5sYXN0TmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNFY21Mb2dnZWRJbigpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5pc0VjbUxvZ2dlZEluKCkgfHwgKHRoaXMuYXV0aFNlcnZpY2UuaXNFQ01Qcm92aWRlcigpICYmIHRoaXMuYXV0aFNlcnZpY2UuaXNLZXJiZXJvc0VuYWJsZWQoKSk7XG4gIH1cbn1cbiIsIjxidXR0b24gbWF0LWJ1dHRvblxuICBjbGFzcz1cImFjYS11c2VyLW1lbnUtYnV0dG9uXCJcbiAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYXBwLXVzZXItbWVudS1idXR0b25cIlxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gIHRpdGxlPVwie3snQVBQLlRPT0xUSVBTLk9QVElPTlNfU0VUVElOR1MnIHwgdHJhbnNsYXRlfX1cIlxuPlxuICA8ZGl2Pnt7IChkaXNwbGF5TmFtZSQgfCBhc3luYyk/LmluaXRpYWxzIH19PC9kaXY+XG48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEuaXRlbXNcIj5cbiAgICA8YXBwLXRvb2xiYXItbWVudS1pdGVtIFthY3Rpb25SZWZdPVwiaXRlbVwiPjwvYXBwLXRvb2xiYXItbWVudS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LW1lbnU+XG4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zaWRlbmF2L3VzZXItbWVudS91c2VyLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL3NpZGVuYXYvdXNlci1tZW51L3VzZXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQVVwQyxNQUFNLE9BQU8saUJBQWlCO0lBUjlCO1FBU1UsVUFBSyxHQUFHLE1BQU0sQ0FBa0IsQ0FBQSxLQUFlLENBQUEsQ0FBQyxDQUFDO1FBQ3pELFVBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQWEzQztJQUxDLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQzs7OEdBZFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsMkhDMUM5QixtZEFjQSx3VURzQlksWUFBWSxnTkFBRSxlQUFlLDJGQUFFLGVBQWUsMFZBQUUsYUFBYSw0UEFBRSx3QkFBd0I7MkZBTXRGLGlCQUFpQjtrQkFSN0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsd0JBQXdCLENBQUMsWUFDeEYsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJOzhCQU9yQyxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudEFjdGlvblJlZiB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgQXBwU3RvcmUsIGdldFVzZXJQcm9maWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgVG9vbGJhck1lbnVJdGVtQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICdhY2EtdXNlci1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VzZXItbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBzdG9yZSA9IGluamVjdDxTdG9yZTxBcHBTdG9yZT4+KFN0b3JlPEFwcFN0b3JlPik7XG4gIHVzZXIkID0gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0VXNlclByb2ZpbGUpO1xuXG4gIEBJbnB1dCgpXG4gIGFjdGlvblJlZjogQ29udGVudEFjdGlvblJlZjtcblxuICBASW5wdXQoKVxuICBkYXRhOiB7IGl0ZW1zOiBhbnlbXSB9O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhdGE/Lml0ZW1zKSB7XG4gICAgICB0aGlzLmRhdGEuaXRlbXMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtYnV0dG9uXG4gIGNsYXNzPVwiYWNhLXVzZXItbWVudS1idXR0b25cIlxuICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhcHAtdXNlci1tZW51LWJ1dHRvblwiXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgdGl0bGU9XCJ7eydBUFAuVE9PTFRJUFMuT1BUSU9OU19TRVRUSU5HUycgfCB0cmFuc2xhdGV9fVwiXG4+XG4gIDxkaXY+e3sgKHVzZXIkIHwgYXN5bmMpPy5pbml0aWFscyB9fTwvZGl2PlxuPC9idXR0b24+XG5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhLml0ZW1zXCI+XG4gICAgPGFwcC10b29sYmFyLW1lbnUtaXRlbSBbYWN0aW9uUmVmXT1cIml0ZW1cIj48L2FwcC10b29sYmFyLW1lbnUtaXRlbT5cbiAgPC9uZy1jb250YWluZXI+XG48L21hdC1tZW51PlxuIl19
@@ -82,6 +82,7 @@ function updateUser(state, action) {
82
82
  const lastName = user.lastName || '';
83
83
  const userName = `${firstName} ${lastName}`;
84
84
  const initials = [firstName[0], lastName[0]].join('');
85
+ const email = user.email;
85
86
  const capabilities = user.capabilities;
86
87
  const isAdmin = capabilities ? capabilities.isAdmin : true;
87
88
  newState.user = {
@@ -91,7 +92,8 @@ function updateUser(state, action) {
91
92
  initials,
92
93
  isAdmin,
93
94
  id,
94
- groups
95
+ groups,
96
+ email
95
97
  };
96
98
  return newState;
97
99
  }
@@ -201,4 +203,4 @@ function showLoader(state, action) {
201
203
  newState.showLoader = action.payload;
202
204
  return newState;
203
205
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL3N0b3JlL3JlZHVjZXJzL2FwcC5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBR0gsT0FBTyxFQUVMLGVBQWUsRUFZZixjQUFjLEVBRWYsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQWtCLGlCQUFpQixFQUFFLE1BQWM7SUFDNUUsSUFBSSxRQUFrQixDQUFDO0lBRXZCLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLGNBQWMsQ0FBQyxlQUFlO1lBQ2pDLFFBQVEsR0FBRyxFQUFFLEdBQUksTUFBZ0MsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1RCxNQUFNO1FBQ1IsS0FBSyxlQUFlLENBQUMsWUFBWTtZQUMvQixRQUFRLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE1BQWdDLENBQUMsQ0FBQztZQUN4RSxNQUFNO1FBQ1IsS0FBSyxjQUFjLENBQUMsY0FBYztZQUNoQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUE4QixDQUFDLENBQUM7WUFDN0QsTUFBTTtRQUNSLEtBQUssY0FBYyxDQUFDLGdCQUFnQjtZQUNsQyxRQUFRLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE1BQWdDLENBQUMsQ0FBQztZQUN4RSxNQUFNO1FBQ1IsS0FBSyxjQUFjLENBQUMsaUJBQWlCO1lBQ25DLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBcUMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU07UUFDUixLQUFLLGNBQWMsQ0FBQyxhQUFhO1lBQy9CLFFBQVEsR0FBRyxnQkFBZ0Is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Q0FBQyxPQUFPLENBQUM7SUFDckMsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQUMsS0FBZSxFQUFFLE1BQW9DO0lBQ3RGLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM5QyxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBZSxFQUFFLE1BQXdCO0lBQzNELE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDckMsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBcHBTdGF0ZSxcbiAgTm9kZUFjdGlvblR5cGVzLFxuICBTZXRVc2VyUHJvZmlsZUFjdGlvbixcbiAgU2V0Q3VycmVudEZvbGRlckFjdGlvbixcbiAgU2V0Q3VycmVudFVybEFjdGlvbixcbiAgU2V0SW5pdGlhbFN0YXRlQWN0aW9uLFxuICBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uLFxuICBTZXRSZXBvc2l0b3J5SW5mb0FjdGlvbixcbiAgU2V0SW5mb0RyYXdlclN0YXRlQWN0aW9uLFxuICBTZXRJbmZvRHJhd2VyTWV0YWRhdGFBc3BlY3RBY3Rpb24sXG4gIFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbixcbiAgU2V0RmlsZVVwbG9hZGluZ0RpYWxvZ0FjdGlvbixcbiAgU2V0SW5mb0RyYXdlclByZXZpZXdTdGF0ZUFjdGlvbixcbiAgQXBwQWN0aW9uVHlwZXMsXG4gIFNob3dMb2FkZXJBY3Rpb25cbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgSU5JVElBTF9BUFBfU1RBVEUgfSBmcm9tICcuLi9pbml0aWFsLXN0YXRlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcFJlZHVjZXIoc3RhdGU6IEFwcFN0YXRlID0gSU5JVElBTF9BUFBfU1RBVEUsIGFjdGlvbjogQWN0aW9uKTogQXBwU3RhdGUge1xuICBsZXQgbmV3U3RhdGU6IEFwcFN0YXRlO1xuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldEluaXRpYWxTdGF0ZTpcbiAgICAgIG5ld1N0YXRlID0geyAuLi4oYWN0aW9uIGFzIFNldEluaXRpYWxTdGF0ZUFjdGlvbikucGF5bG9hZCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOb2RlQWN0aW9uVHlwZXMuU2V0U2VsZWN0aW9uOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVTZWxlY3RlZE5vZGVzKHN0YXRlLCBhY3Rpb24gYXMgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldFVzZXJQcm9maWxlOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVVc2VyKHN0YXRlLCBhY3Rpb24gYXMgU2V0VXNlclByb2ZpbGVBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRDdXJyZW50Rm9sZGVyOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVDdXJyZW50Rm9sZGVyKHN0YXRlLCBhY3Rpb24gYXMgU2V0Q3VycmVudEZvbGRlckFjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldEN1cnJlbnRWZXJzaW9uOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVDdXJyZW50Tm9kZVZlcnNpb24oc3RhdGUsIGFjdGlvbiBhcyBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRDdXJyZW50VXJsOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVDdXJyZW50VXJsKHN0YXRlLCBhY3Rpb24gYXMgU2V0Q3VycmVudFVybEFjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlRvZ2dsZUluZm9EcmF3ZXI6XG4gICAgICBuZXdTdGF0ZSA9IHRvZ2dsZUluZm9EcmF3ZXIoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRJbmZvRHJhd2VyU3RhdGU6XG4gICAgICBuZXdTdGF0ZSA9IHNldEluZm9EcmF3ZXIoc3RhdGUsIGFjdGlvbiBhcyBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRJbmZvRHJhd2VyTWV0YWRhdGFBc3BlY3Q6XG4gICAgICBuZXdTdGF0ZSA9IHNldEluZm9EcmF3ZXJBc3BlY3Qoc3RhdGUsIGFjdGlvbiBhcyBTZXRJbmZvRHJhd2VyTWV0YWRhdGFBc3BlY3RBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRSZXBvc2l0b3J5SW5mbzpcbiAgICAgIG5ld1N0YXRlID0gdXBkYXRlUmVwb3NpdG9yeVN0YXR1cyhzdGF0ZSwgYWN0aW9uIGFzIFNldFJlcG9zaXRvcnlJbmZvQWN0aW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQXBwQWN0aW9uVHlwZXMuU2V0RmlsZVVwbG9hZGluZ0RpYWxvZzpcbiAgICAgIG5ld1N0YXRlID0gc2V0VXBsb2FkRGlhbG9nVmlzaWJpbGl0eShzdGF0ZSwgYWN0aW9uIGFzIFNldEZpbGVVcGxvYWRpbmdEaWFsb2dBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TaG93SW5mb0RyYXdlclByZXZpZXc6XG4gICAgICBuZXdTdGF0ZSA9IHNob3dJbmZvRHJhd2VyUHJldmlldyhzdGF0ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldEluZm9EcmF3ZXJQcmV2aWV3U3RhdGU6XG4gICAgICBuZXdTdGF0ZSA9IHNldEluZm9EcmF3ZXJQcmV2aWV3KHN0YXRlLCBhY3Rpb24gYXMgU2V0SW5mb0RyYXdlclByZXZpZXdTdGF0ZUFjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNob3dMb2FkZXJBY3Rpb246XG4gICAgICBuZXdTdGF0ZSA9IHNob3dMb2FkZXIoc3RhdGUsIGFjdGlvbiBhcyBTaG93TG9hZGVyQWN0aW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVXNlcihzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0VXNlclByb2ZpbGVBY3Rpb24pOiBBcHBTdGF0ZSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBjb25zdCB1c2VyID0gYWN0aW9uLnBheWxvYWQucGVyc29uO1xuICBjb25zdCBncm91cHMgPSBbLi4uKGFjdGlvbi5wYXlsb2FkLmdyb3VwcyB8fCBbXSldO1xuXG4gIGNvbnN0IGlkID0gdXNlci5pZDtcbiAgY29uc3QgZmlyc3ROYW1lID0gdXNlci5maXJzdE5hbWUgfHwgJyc7XG4gIGNvbnN0IGxhc3ROYW1lID0gdXNlci5sYXN0TmFtZSB8fCAnJztcbiAgY29uc3QgdXNlck5hbWUgPSBgJHtmaXJzdE5hbWV9ICR7bGFzdE5hbWV9YDtcbiAgY29uc3QgaW5pdGlhbHMgPSBbZmlyc3ROYW1lWzBdLCBsYXN0TmFtZVswXV0uam9pbignJyk7XG5cbiAgY29uc3QgY2FwYWJpbGl0aWVzID0gdXNlci5jYXBhYmlsaXRpZXM7XG4gIGNvbnN0IGlzQWRtaW4gPSBjYXBhYmlsaXRpZXMgPyBjYXBhYmlsaXRpZXMuaXNBZG1pbiA6IHRydWU7XG5cbiAgbmV3U3RhdGUudXNlciA9IHtcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgdXNlck5hbWUsXG4gICAgaW5pdGlhbHMsXG4gICAgaXNBZG1pbixcbiAgICBpZCxcbiAgICBncm91cHNcbiAgfTtcblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUN1cnJlbnRGb2xkZXIoc3RhdGU6IEFwcFN0YXRlLCBhY3Rpb246IFNldEN1cnJlbnRGb2xkZXJBY3Rpb24pIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIG5ld1N0YXRlLm5hdmlnYXRpb24uY3VycmVudEZvbGRlciA9IGFjdGlvbi5wYXlsb2FkO1xuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUN1cnJlbnROb2RlVmVyc2lvbihzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0Q3VycmVudE5vZGVWZXJzaW9uQWN0aW9uKSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBuZXdTdGF0ZS5jdXJyZW50Tm9kZVZlcnNpb24gPSBhY3Rpb24ucGF5bG9hZDtcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVDdXJyZW50VXJsKHN0YXRlOiBBcHBTdGF0ZSwgYWN0aW9uOiBTZXRDdXJyZW50VXJsQWN0aW9uKSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBuZXdTdGF0ZS5uYXZpZ2F0aW9uLnVybCA9IGFjdGlvbi5wYXlsb2FkO1xuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZUluZm9EcmF3ZXIoc3RhdGU6IEFwcFN0YXRlKSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuXG4gIGxldCB2YWx1ZSA9IHN0YXRlLmluZm9EcmF3ZXJPcGVuZWQ7XG4gIGlmIChzdGF0ZS5zZWxlY3Rpb24uaXNFbXB0eSkge1xuICAgIHZhbHVlID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSAhdmFsdWU7XG4gIH1cblxuICBuZXdTdGF0ZS5pbmZvRHJhd2VyT3BlbmVkID0gdmFsdWU7XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5mdW5jdGlvbiBzaG93SW5mb0RyYXdlclByZXZpZXcoc3RhdGU6IEFwcFN0YXRlKSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuXG4gIGxldCB2YWx1ZSA9IHN0YXRlLmluZm9EcmF3ZXJQcmV2aWV3O1xuICBpZiAoc3RhdGUuc2VsZWN0aW9uLmlzRW1wdHkpIHtcbiAgICB2YWx1ZSA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gIXZhbHVlO1xuICB9XG5cbiAgbmV3U3RhdGUuaW5mb0RyYXdlclByZXZpZXcgPSB2YWx1ZTtcblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVNlbGVjdGVkTm9kZXMoc3RhdGU6IEFwcFN0YXRlLCBhY3Rpb246IFNldFNlbGVjdGVkTm9kZXNBY3Rpb24pOiBBcHBTdGF0ZSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBjb25zdCBub2RlcyA9IFsuLi5hY3Rpb24ucGF5bG9hZF07XG4gIGNvbnN0IGNvdW50ID0gbm9kZXMubGVuZ3RoO1xuICBjb25zdCBpc0VtcHR5ID0gbm9kZXMubGVuZ3RoID09PSAwO1xuXG4gIGxldCBmaXJzdCA9IG51bGw7XG4gIGxldCBsYXN0ID0gbnVsbDtcbiAgbGV0IGZpbGUgPSBudWxsO1xuICBsZXQgZm9sZGVyID0gbnVsbDtcbiAgbGV0IGxpYnJhcnkgPSBudWxsO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgZmlyc3QgPSBub2Rlc1swXTtcbiAgICBsYXN0ID0gbm9kZXNbbm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBmaWxlID0gbm9kZXMuZmluZChcbiAgICAgICAgKGVudGl0eTogYW55KSA9PlxuICAgICAgICAgIC8vIHdvcmthcm91bmQgU2hhcmVkXG4gICAgICAgICAgISEoZW50aXR5LmVudHJ5LmlzRmlsZSB8fCBlbnRpdHkuZW50cnkubm9kZUlkIHx8IGVudGl0eS5lbnRyeS5zaGFyZWRCeVVzZXIpXG4gICAgICApO1xuICAgICAgZm9sZGVyID0gbm9kZXMuZmluZCgoZW50aXR5OiBhbnkpID0+IGVudGl0eS5lbnRyeS5pc0ZvbGRlcik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbGlicmFyaWVzOiBhbnlbXSA9IFsuLi5hY3Rpb24ucGF5bG9hZF0uZmlsdGVyKChub2RlOiBhbnkpID0+IG5vZGUuaXNMaWJyYXJ5KTtcbiAgaWYgKGxpYnJhcmllcy5sZW5ndGggPT09IDEpIHtcbiAgICBsaWJyYXJ5ID0gbGlicmFyaWVzWzBdO1xuICB9XG5cbiAgaWYgKGlzRW1wdHkpIHtcbiAgICBuZXdTdGF0ZS5pbmZvRHJhd2VyT3BlbmVkID0gZmFsc2U7XG4gIH1cblxuICBuZXdTdGF0ZS5zZWxlY3Rpb24gPSB7XG4gICAgY291bnQsXG4gICAgbm9kZXMsXG4gICAgaXNFbXB0eSxcbiAgICBmaXJzdCxcbiAgICBsYXN0LFxuICAgIGZpbGUsXG4gICAgZm9sZGVyLFxuICAgIGxpYnJhcmllcyxcbiAgICBsaWJyYXJ5XG4gIH07XG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuY29uc3Qgc2V0SW5mb0RyYXdlciA9IChzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0SW5mb0RyYXdlclN0YXRlQWN0aW9uKSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaW5mb0RyYXdlck9wZW5lZDogYWN0aW9uLnBheWxvYWRcbn0pO1xuXG5jb25zdCBzZXRJbmZvRHJhd2VyUHJldmlldyA9IChzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0SW5mb0RyYXdlclByZXZpZXdTdGF0ZUFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGluZm9EcmF3ZXJQcmV2aWV3OiBhY3Rpb24ucGF5bG9hZFxufSk7XG5cbmNvbnN0IHNldEluZm9EcmF3ZXJBc3BlY3QgPSAoc3RhdGU6IEFwcFN0YXRlLCBhY3Rpb246IFNldEluZm9EcmF3ZXJNZXRhZGF0YUFzcGVjdEFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGluZm9EcmF3ZXJNZXRhZGF0YUFzcGVjdDogYWN0aW9uLnBheWxvYWRcbn0pO1xuXG5mdW5jdGlvbiB1cGRhdGVSZXBvc2l0b3J5U3RhdHVzKHN0YXRlOiBBcHBTdGF0ZSwgYWN0aW9uOiBTZXRSZXBvc2l0b3J5SW5mb0FjdGlvbikge1xuICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgbmV3U3RhdGUucmVwb3NpdG9yeSA9IGFjdGlvbi5wYXlsb2FkO1xuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIHNldFVwbG9hZERpYWxvZ1Zpc2liaWxpdHkoc3RhdGU6IEFwcFN0YXRlLCBhY3Rpb246IFNldEZpbGVVcGxvYWRpbmdEaWFsb2dBY3Rpb24pOiBBcHBTdGF0ZSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBuZXdTdGF0ZS5maWxlVXBsb2FkaW5nRGlhbG9nID0gYWN0aW9uLnBheWxvYWQ7XG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gc2hvd0xvYWRlcihzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2hvd0xvYWRlckFjdGlvbik6IEFwcFN0YXRlIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIG5ld1N0YXRlLnNob3dMb2FkZXIgPSBhY3Rpb24ucGF5bG9hZDtcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuIl19
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL3N0b3JlL3JlZHVjZXJzL2FwcC5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBR0gsT0FBTyxFQUVMLGVBQWUsRUFZZixjQUFjLEVBRWYsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQWtCLGlCQUFpQixFQUFFLE1BQWM7SUFDNUUsSUFBSSxRQUFrQixDQUFDO0lBRXZCLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLGNBQWMsQ0FBQyxlQUFlO1lBQ2pDLFFBQVEsR0FBRyxFQUFFLEdBQUksTUFBZ0MsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1RCxNQUFNO1FBQ1IsS0FBSyxlQUFlLENBQUMsWUFBWTtZQUMvQixRQUFRLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE1BQWdDLENBQUMsQ0FBQztZQUN4RSxNQUFNO1FBQ1IsS0FBSyxjQUFjLENBQUMsY0FBYztZQUNoQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUE4QixDQUFDLENBQUM7WUFDN0QsTUFBTTtRQUNSLEtBQUssY0FBYyxDQUFDLGdCQUFnQjtZQUNsQyxRQUFRLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE1BQWdDLENBQUMsQ0FBQztZQUN4RSxNQUFNO1FBQ1IsS0FBSyxjQUFjLENBQUMsaUJBQWlCO1lBQ25DLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBcUMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU07UUFDUixLQUFLLGNBQWMsQ0FBQyxhQUFhO1lBQy9CLFFBQVEsR0FBRyxnQkFBZ0Is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R0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDckMsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQUMsS0FBZSxFQUFFLE1BQW9DO0lBQ3RGLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM5QyxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBZSxFQUFFLE1BQXdCO0lBQzNELE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDckMsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBcHBTdGF0ZSxcbiAgTm9kZUFjdGlvblR5cGVzLFxuICBTZXRVc2VyUHJvZmlsZUFjdGlvbixcbiAgU2V0Q3VycmVudEZvbGRlckFjdGlvbixcbiAgU2V0Q3VycmVudFVybEFjdGlvbixcbiAgU2V0SW5pdGlhbFN0YXRlQWN0aW9uLFxuICBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uLFxuICBTZXRSZXBvc2l0b3J5SW5mb0FjdGlvbixcbiAgU2V0SW5mb0RyYXdlclN0YXRlQWN0aW9uLFxuICBTZXRJbmZvRHJhd2VyTWV0YWRhdGFBc3BlY3RBY3Rpb24sXG4gIFNldEN1cnJlbnROb2RlVmVyc2lvbkFjdGlvbixcbiAgU2V0RmlsZVVwbG9hZGluZ0RpYWxvZ0FjdGlvbixcbiAgU2V0SW5mb0RyYXdlclByZXZpZXdTdGF0ZUFjdGlvbixcbiAgQXBwQWN0aW9uVHlwZXMsXG4gIFNob3dMb2FkZXJBY3Rpb25cbn0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgSU5JVElBTF9BUFBfU1RBVEUgfSBmcm9tICcuLi9pbml0aWFsLXN0YXRlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcFJlZHVjZXIoc3RhdGU6IEFwcFN0YXRlID0gSU5JVElBTF9BUFBfU1RBVEUsIGFjdGlvbjogQWN0aW9uKTogQXBwU3RhdGUge1xuICBsZXQgbmV3U3RhdGU6IEFwcFN0YXRlO1xuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldEluaXRpYWxTdGF0ZTpcbiAgICAgIG5ld1N0YXRlID0geyAuLi4oYWN0aW9uIGFzIFNldEluaXRpYWxTdGF0ZUFjdGlvbikucGF5bG9hZCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBOb2RlQWN0aW9uVHlwZXMuU2V0U2VsZWN0aW9uOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVTZWxlY3RlZE5vZGVzKHN0YXRlLCBhY3Rpb24gYXMgU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldFVzZXJQcm9maWxlOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVVc2VyKHN0YXRlLCBhY3Rpb24gYXMgU2V0VXNlclByb2ZpbGVBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRDdXJyZW50Rm9sZGVyOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVDdXJyZW50Rm9sZGVyKHN0YXRlLCBhY3Rpb24gYXMgU2V0Q3VycmVudEZvbGRlckFjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldEN1cnJlbnRWZXJzaW9uOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVDdXJyZW50Tm9kZVZlcnNpb24oc3RhdGUsIGFjdGlvbiBhcyBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRDdXJyZW50VXJsOlxuICAgICAgbmV3U3RhdGUgPSB1cGRhdGVDdXJyZW50VXJsKHN0YXRlLCBhY3Rpb24gYXMgU2V0Q3VycmVudFVybEFjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlRvZ2dsZUluZm9EcmF3ZXI6XG4gICAgICBuZXdTdGF0ZSA9IHRvZ2dsZUluZm9EcmF3ZXIoc3RhdGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRJbmZvRHJhd2VyU3RhdGU6XG4gICAgICBuZXdTdGF0ZSA9IHNldEluZm9EcmF3ZXIoc3RhdGUsIGFjdGlvbiBhcyBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRJbmZvRHJhd2VyTWV0YWRhdGFBc3BlY3Q6XG4gICAgICBuZXdTdGF0ZSA9IHNldEluZm9EcmF3ZXJBc3BlY3Qoc3RhdGUsIGFjdGlvbiBhcyBTZXRJbmZvRHJhd2VyTWV0YWRhdGFBc3BlY3RBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TZXRSZXBvc2l0b3J5SW5mbzpcbiAgICAgIG5ld1N0YXRlID0gdXBkYXRlUmVwb3NpdG9yeVN0YXR1cyhzdGF0ZSwgYWN0aW9uIGFzIFNldFJlcG9zaXRvcnlJbmZvQWN0aW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQXBwQWN0aW9uVHlwZXMuU2V0RmlsZVVwbG9hZGluZ0RpYWxvZzpcbiAgICAgIG5ld1N0YXRlID0gc2V0VXBsb2FkRGlhbG9nVmlzaWJpbGl0eShzdGF0ZSwgYWN0aW9uIGFzIFNldEZpbGVVcGxvYWRpbmdEaWFsb2dBY3Rpb24pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBBcHBBY3Rpb25UeXBlcy5TaG93SW5mb0RyYXdlclByZXZpZXc6XG4gICAgICBuZXdTdGF0ZSA9IHNob3dJbmZvRHJhd2VyUHJldmlldyhzdGF0ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNldEluZm9EcmF3ZXJQcmV2aWV3U3RhdGU6XG4gICAgICBuZXdTdGF0ZSA9IHNldEluZm9EcmF3ZXJQcmV2aWV3KHN0YXRlLCBhY3Rpb24gYXMgU2V0SW5mb0RyYXdlclByZXZpZXdTdGF0ZUFjdGlvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEFwcEFjdGlvblR5cGVzLlNob3dMb2FkZXJBY3Rpb246XG4gICAgICBuZXdTdGF0ZSA9IHNob3dMb2FkZXIoc3RhdGUsIGFjdGlvbiBhcyBTaG93TG9hZGVyQWN0aW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVXNlcihzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0VXNlclByb2ZpbGVBY3Rpb24pOiBBcHBTdGF0ZSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBjb25zdCB1c2VyID0gYWN0aW9uLnBheWxvYWQucGVyc29uO1xuICBjb25zdCBncm91cHMgPSBbLi4uKGFjdGlvbi5wYXlsb2FkLmdyb3VwcyB8fCBbXSldO1xuXG4gIGNvbnN0IGlkID0gdXNlci5pZDtcbiAgY29uc3QgZmlyc3ROYW1lID0gdXNlci5maXJzdE5hbWUgfHwgJyc7XG4gIGNvbnN0IGxhc3ROYW1lID0gdXNlci5sYXN0TmFtZSB8fCAnJztcbiAgY29uc3QgdXNlck5hbWUgPSBgJHtmaXJzdE5hbWV9ICR7bGFzdE5hbWV9YDtcbiAgY29uc3QgaW5pdGlhbHMgPSBbZmlyc3ROYW1lWzBdLCBsYXN0TmFtZVswXV0uam9pbignJyk7XG4gIGNvbnN0IGVtYWlsID0gdXNlci5lbWFpbDtcblxuICBjb25zdCBjYXBhYmlsaXRpZXMgPSB1c2VyLmNhcGFiaWxpdGllcztcbiAgY29uc3QgaXNBZG1pbiA9IGNhcGFiaWxpdGllcyA/IGNhcGFiaWxpdGllcy5pc0FkbWluIDogdHJ1ZTtcblxuICBuZXdTdGF0ZS51c2VyID0ge1xuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICB1c2VyTmFtZSxcbiAgICBpbml0aWFscyxcbiAgICBpc0FkbWluLFxuICAgIGlkLFxuICAgIGdyb3VwcyxcbiAgICBlbWFpbFxuICB9O1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3VycmVudEZvbGRlcihzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0Q3VycmVudEZvbGRlckFjdGlvbikge1xuICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgbmV3U3RhdGUubmF2aWdhdGlvbi5jdXJyZW50Rm9sZGVyID0gYWN0aW9uLnBheWxvYWQ7XG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3VycmVudE5vZGVWZXJzaW9uKHN0YXRlOiBBcHBTdGF0ZSwgYWN0aW9uOiBTZXRDdXJyZW50Tm9kZVZlcnNpb25BY3Rpb24pIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIG5ld1N0YXRlLmN1cnJlbnROb2RlVmVyc2lvbiA9IGFjdGlvbi5wYXlsb2FkO1xuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUN1cnJlbnRVcmwoc3RhdGU6IEFwcFN0YXRlLCBhY3Rpb246IFNldEN1cnJlbnRVcmxBY3Rpb24pIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIG5ld1N0YXRlLm5hdmlnYXRpb24udXJsID0gYWN0aW9uLnBheWxvYWQ7XG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlSW5mb0RyYXdlcihzdGF0ZTogQXBwU3RhdGUpIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG5cbiAgbGV0IHZhbHVlID0gc3RhdGUuaW5mb0RyYXdlck9wZW5lZDtcbiAgaWYgKHN0YXRlLnNlbGVjdGlvbi5pc0VtcHR5KSB7XG4gICAgdmFsdWUgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9ICF2YWx1ZTtcbiAgfVxuXG4gIG5ld1N0YXRlLmluZm9EcmF3ZXJPcGVuZWQgPSB2YWx1ZTtcblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIHNob3dJbmZvRHJhd2VyUHJldmlldyhzdGF0ZTogQXBwU3RhdGUpIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG5cbiAgbGV0IHZhbHVlID0gc3RhdGUuaW5mb0RyYXdlclByZXZpZXc7XG4gIGlmIChzdGF0ZS5zZWxlY3Rpb24uaXNFbXB0eSkge1xuICAgIHZhbHVlID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSAhdmFsdWU7XG4gIH1cblxuICBuZXdTdGF0ZS5pbmZvRHJhd2VyUHJldmlldyA9IHZhbHVlO1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlU2VsZWN0ZWROb2RlcyhzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0U2VsZWN0ZWROb2Rlc0FjdGlvbik6IEFwcFN0YXRlIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIGNvbnN0IG5vZGVzID0gWy4uLmFjdGlvbi5wYXlsb2FkXTtcbiAgY29uc3QgY291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIGNvbnN0IGlzRW1wdHkgPSBub2Rlcy5sZW5ndGggPT09IDA7XG5cbiAgbGV0IGZpcnN0ID0gbnVsbDtcbiAgbGV0IGxhc3QgPSBudWxsO1xuICBsZXQgZmlsZSA9IG51bGw7XG4gIGxldCBmb2xkZXIgPSBudWxsO1xuICBsZXQgbGlicmFyeSA9IG51bGw7XG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICBmaXJzdCA9IG5vZGVzWzBdO1xuICAgIGxhc3QgPSBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXTtcblxuICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGZpbGUgPSBub2Rlcy5maW5kKFxuICAgICAgICAoZW50aXR5OiBhbnkpID0+XG4gICAgICAgICAgLy8gd29ya2Fyb3VuZCBTaGFyZWRcbiAgICAgICAgICAhIShlbnRpdHkuZW50cnkuaXNGaWxlIHx8IGVudGl0eS5lbnRyeS5ub2RlSWQgfHwgZW50aXR5LmVudHJ5LnNoYXJlZEJ5VXNlcilcbiAgICAgICk7XG4gICAgICBmb2xkZXIgPSBub2Rlcy5maW5kKChlbnRpdHk6IGFueSkgPT4gZW50aXR5LmVudHJ5LmlzRm9sZGVyKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBsaWJyYXJpZXM6IGFueVtdID0gWy4uLmFjdGlvbi5wYXlsb2FkXS5maWx0ZXIoKG5vZGU6IGFueSkgPT4gbm9kZS5pc0xpYnJhcnkpO1xuICBpZiAobGlicmFyaWVzLmxlbmd0aCA9PT0gMSkge1xuICAgIGxpYnJhcnkgPSBsaWJyYXJpZXNbMF07XG4gIH1cblxuICBpZiAoaXNFbXB0eSkge1xuICAgIG5ld1N0YXRlLmluZm9EcmF3ZXJPcGVuZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG5ld1N0YXRlLnNlbGVjdGlvbiA9IHtcbiAgICBjb3VudCxcbiAgICBub2RlcyxcbiAgICBpc0VtcHR5LFxuICAgIGZpcnN0LFxuICAgIGxhc3QsXG4gICAgZmlsZSxcbiAgICBmb2xkZXIsXG4gICAgbGlicmFyaWVzLFxuICAgIGxpYnJhcnlcbiAgfTtcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5jb25zdCBzZXRJbmZvRHJhd2VyID0gKHN0YXRlOiBBcHBTdGF0ZSwgYWN0aW9uOiBTZXRJbmZvRHJhd2VyU3RhdGVBY3Rpb24pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpbmZvRHJhd2VyT3BlbmVkOiBhY3Rpb24ucGF5bG9hZFxufSk7XG5cbmNvbnN0IHNldEluZm9EcmF3ZXJQcmV2aWV3ID0gKHN0YXRlOiBBcHBTdGF0ZSwgYWN0aW9uOiBTZXRJbmZvRHJhd2VyUHJldmlld1N0YXRlQWN0aW9uKSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaW5mb0RyYXdlclByZXZpZXc6IGFjdGlvbi5wYXlsb2FkXG59KTtcblxuY29uc3Qgc2V0SW5mb0RyYXdlckFzcGVjdCA9IChzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0SW5mb0RyYXdlck1ldGFkYXRhQXNwZWN0QWN0aW9uKSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaW5mb0RyYXdlck1ldGFkYXRhQXNwZWN0OiBhY3Rpb24ucGF5bG9hZFxufSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVJlcG9zaXRvcnlTdGF0dXMoc3RhdGU6IEFwcFN0YXRlLCBhY3Rpb246IFNldFJlcG9zaXRvcnlJbmZvQWN0aW9uKSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBuZXdTdGF0ZS5yZXBvc2l0b3J5ID0gYWN0aW9uLnBheWxvYWQ7XG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gc2V0VXBsb2FkRGlhbG9nVmlzaWJpbGl0eShzdGF0ZTogQXBwU3RhdGUsIGFjdGlvbjogU2V0RmlsZVVwbG9hZGluZ0RpYWxvZ0FjdGlvbik6IEFwcFN0YXRlIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIG5ld1N0YXRlLmZpbGVVcGxvYWRpbmdEaWFsb2cgPSBhY3Rpb24ucGF5bG9hZDtcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5mdW5jdGlvbiBzaG93TG9hZGVyKHN0YXRlOiBBcHBTdGF0ZSwgYWN0aW9uOiBTaG93TG9hZGVyQWN0aW9uKTogQXBwU3RhdGUge1xuICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgbmV3U3RhdGUuc2hvd0xvYWRlciA9IGFjdGlvbi5wYXlsb2FkO1xuICByZXR1cm4gbmV3U3RhdGU7XG59XG4iXX0=