@the-liberators/ngx-scrumteamsurvey-tools 2.2.84 → 2.2.85

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.
@@ -13,11 +13,10 @@ import * as i3 from "../../../viewModel/userSettings.service";
13
13
  import * as i4 from "@angular/material/snack-bar";
14
14
  import * as i5 from "@angular/forms";
15
15
  import * as i6 from "@angular/common";
16
- import * as i7 from "@angular/material/tooltip";
17
- import * as i8 from "@angular/material/core";
18
- import * as i9 from "@angular/material/form-field";
19
- import * as i10 from "@angular/material/select";
20
- import * as i11 from "../../../viewModel/viewModelState.service";
16
+ import * as i7 from "@angular/material/core";
17
+ import * as i8 from "@angular/material/form-field";
18
+ import * as i9 from "@angular/material/select";
19
+ import * as i10 from "../../../viewModel/viewModelState.service";
21
20
  export class DialogSettingsComponent extends ComponentWithViewStateBase {
22
21
  constructor(dialogRef, factorService, userSettingsService, snackBar, formBuilder, state) {
23
22
  super(state, snackBar);
@@ -129,12 +128,12 @@ export class DialogSettingsComponent extends ComponentWithViewStateBase {
129
128
  }
130
129
  ;
131
130
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.FactorService }, { token: i3.UserSettingService }, { token: i4.MatSnackBar }, { token: i5.FormBuilder }, { token: VIEWSTATE_PROVIDER }], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, and use most recent measure (max 12 months back)</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
133
132
  }
134
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, decorators: [{
135
134
  type: Component,
136
- args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
137
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.FactorService }, { type: i3.UserSettingService }, { type: i4.MatSnackBar }, { type: i5.FormBuilder }, { type: i11.ViewModelStateBase, decorators: [{
135
+ args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, and use most recent measure (max 12 months back)</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
136
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.FactorService }, { type: i3.UserSettingService }, { type: i4.MatSnackBar }, { type: i5.FormBuilder }, { type: i10.ViewModelStateBase, decorators: [{
138
137
  type: Inject,
139
138
  args: [VIEWSTATE_PROVIDER]
140
139
  }] }] });
@@ -165,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
165
164
  type: HostListener,
166
165
  args: ['click']
167
166
  }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2RpYWxvZ3MvZGlhbG9nLXNldHRpbmdzL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9kaWFsb2dzL2RpYWxvZy1zZXR0aW5ncy9kaWFsb2ctc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFFdkcsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU85RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsMEJBQXlDO0lBOEJuRixZQUFtQixTQUFnRCxFQUFVLGFBQTRCLEVBQVUsbUJBQXVDLEVBQVksUUFBcUIsRUFBVSxXQUF3QixFQUFzQyxLQUF3QztRQUN4UyxLQUFLLENBQUMsS0FBSyxFQUFFLFFB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QUFDO0lBQzNELENBQUM7OEdBZlMsMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSHZDLFNBQVM7bUJBQUM7b0JBQ1IsUUFBUSxFQUFFLGtCQUFrQjtpQkFDOUI7OEVBRVcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQU1OLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZSc7XG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3NlbGVjdExpc3RJdGVtJztcbmltcG9ydCB7IEludGVydmVudGlvbkZpbHRlclR5cGUsIE1vZGVsRmlsdGVyLCBVc2VyU2V0dGluZ3NEdG8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlclNldHRpbmdzRHRvJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC91c2VyU2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TW9kZWxTdGF0ZUJhc2UsIFZJRVdTVEFURV9QUk9WSURFUiB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElSZXN1bHRzU3RhdGUsIElUZWFtUmVwb3J0UmVzdWx0c1N0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWx0c1N0YXRlJztcbmltcG9ydCB7IFF1YWxpZmllZEJ5RW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9mYWN0b3JTY29yZUR0byc7XG5pbXBvcnQgeyBGYWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yU2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctc2V0dGluZ3MuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+IHtcbiAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gICBwdWJsaWMgc2VuZGluZzogYm9vbGVhbjtcbiAgIHByaXZhdGUgc2V0dGluZ3M6IFVzZXJTZXR0aW5nc0R0bztcbiAgIHB1YmxpYyBmYWN0b3JzOiBTZWxlY3RJdGVtW107XG4gICBwdWJsaWMgaXNTaW5nbGVUZWFtOiBib29sZWFuO1xuICAgcHVibGljIGlzU3Vic2NyaWJlcjogYm9vbGVhbjtcbiAgIHB1YmxpYyBtb2RlbEZpbHRlclNldHRpbmdzOiBNb2RlbEZpbHRlcjtcbiAgIHB1YmxpYyBiZW5jaG1hcmtUeXBlczogU2VsZWN0SXRlbVtdID0gW11cbiAgIHB1YmxpYyBkZWx0YVBlcmlvZHM6IFNlbGVjdEl0ZW1bXSA9IFtcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiTm9uZVwiLCBcIkRvbid0IGNvbXBhcmUgKHNob3dzIHJlc3VsdHMgZnJvbSBwYXN0IDEyIG1vbnRocylcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzTW9udGhcIiwgXCJDb21wYXJlIGN1cnJlbnQgbW9udGggd2l0aCBwcmV2aW91cyBtb250aFwiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNRdWFydGVyXCIsIFwiQ29tcGFyZSByZWNlbnQgMyBtb250aHMgd2l0aCBwcmV2aW91cyAzIG1vbnRoc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNIYWxmWWVhclwiLCBcIkNvbXBhcmUgcmVjZW50IDYgbW9udGhzIHdpdGggcHJldmlvdXMgNiBtb250aHNcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzWWVhclwiLCBcIkNvbXBhcmUgcmVjZW50IDEyIG1vbnRocyB3aXRoIHByZXZpb3VzIDEyIG1vbnRoc1wiKVxuICAgXVxuXG4gICBwdWJsaWMgaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZXM6IFNlbGVjdEl0ZW1bXSA9IFtcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuQWxsLnRvU3RyaW5nKCksIFwiU2hvdyBib3RoIG9wZW4gdnMgY29tcGxldGVkIGFjdGlvbnNcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk9ubHlPcGVuLnRvU3RyaW5nKCksIFwiU2hvdyBvbmx5IG9wZW4gYWN0aW9uc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuT25seUNvbXBsZXRlZC50b1N0cmluZygpLCBcIlNob3cgb25seSBjb21wbGV0ZWQgYWN0aW9uc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuTm9uZS50b1N0cmluZygpLCBcIkhpZGUgYWN0aW9uc1wiKVxuICAgXVxuXG4gICBwdWJsaWMgcXVhbGlmeUJ5VHlwZXM6IFNlbGVjdEl0ZW1bXSA9IFtcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5iZW5jaG1hcmsudG9TdHJpbmcoKSwgXCJBZ2FpbnN0IGJlbmNobWFya1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5kZWx0YS50b1N0cmluZygpLCBcIkFnYWluc3QgcHJldmlvdXMgcGVyaW9kIG9yIHNuYXBzaG90XCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLm5vbmUudG9TdHJpbmcoKSwgXCJObyBjb21wYXJpc29uXCIpLFxuICAgXVxuXG4gICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nU2V0dGluZ3NDb21wb25lbnQ+LCBwcml2YXRlIGZhY3RvclNlcnZpY2U6IEZhY3RvclNlcnZpY2UsIHByaXZhdGUgdXNlclNldHRpbmdzU2VydmljZTogVXNlclNldHRpbmdTZXJ2aWNlLCBwcm90ZWN0ZWQgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgQEluamVjdChWSUVXU1RBVEVfUFJPVklERVIpIHByaXZhdGUgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPikge1xuICAgICAgc3VwZXIoc3RhdGUsIHNuYWNrQmFyKVxuICAgfVxuXG4gICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgIH1cblxuICAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7IHJldHVybjsgfVxuXG4gICAgICB0aGlzLnNlbmRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwuYmVuY2htYXJrID0gdGhpcy5mb3JtLmNvbnRyb2xzLmJlbmNobWFya1R5cGUudmFsdWU7XG4gICAgICB0aGlzLnNldHRpbmdzLmdsb2JhbC5kZWx0YVBlcmlvZCA9IHRoaXMuZm9ybS5jb250cm9scy5kZWx0YVBlcmlvZC52YWx1ZTtcbiAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycyA9IHRoaXMuZm9ybS5jb250cm9scy5vdmVydmlld0ZhY3RvcnMudmFsdWU7XG4gICAgICB2YXIgb3RoZXJNb2RlbEZhY3RvcnMgPSB0aGlzLmZvcm0uY29udHJvbHMub3RoZXJNb2RlbE92ZXJ2aWV3RmFjdG9ycy52YWx1ZTtcblxuICAgICAgaWYgKG90aGVyTW9kZWxGYWN0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycyA9IHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycy5jb25jYXQob3RoZXJNb2RlbEZhY3RvcnMuZmlsdGVyKChpdGVtKSA9PiB0aGlzLnNldHRpbmdzLmdsb2JhbC5vdmVydmlld0ZhY3RvcnMuaW5kZXhPZihpdGVtKSA8IDApKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwucXVhbGlmeUJ5ID0gdGhpcy5mb3JtLmNvbnRyb2xzLnF1YWxpZnlCeS52YWx1ZTtcbiAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLnN0YWNraW5nID0gdGhpcy5mb3JtLmNvbnRyb2xzLnN0YWNraW5nLnZhbHVlID09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgdGhpcy5zZXR0aW5ncy51c2VyLm1vZGVsRmlsdGVyLmludGVydmVudGlvbkZpbHRlciA9IHRoaXMuZm9ybS5jb250cm9scy5pbnRlcnZlbnRpb25GaWx0ZXJUeXBlLnZhbHVlO1xuICAgICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnNldCh0aGlzLnNldHRpbmdzKTtcbiAgICAgIHRoaXMuc3RhdGUuZm9yY2VkUmVsb2FkKCk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgdGhpcy5zaG93U3VjY2VzcyhcIldlIHVwZGF0ZWQgeW91ciBzZXR0aW5ncy4gV2UgYXJlIG5vdyByZWxvYWRpbmcgdGhlIHJlc3VsdHMuXCIpO1xuICAgICAgdGhpcy5zZW5kaW5nID0gZmFsc2U7XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgZGVsdGFQZXJpb2Q6IFt7IHZhbHVlOiBcIlwiIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgYmVuY2htYXJrVHlwZTogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBxdWFsaWZ5Qnk6IFt7IHZhbHVlOiBcIlwiIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgb3ZlcnZpZXdGYWN0b3JzOiBbeyB2YWx1ZTogbnVsbCB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIG90aGVyTW9kZWxPdmVydmlld0ZhY3RvcnM6IFt7IHZhbHVlOiBudWxsIH1dLFxuICAgICAgICAgaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZTogW3sgdmFsdWU6IG51bGwgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBzdGFja2luZzogW3sgdmFsdWU6IFwiZmFsc2VcIiB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgfSk7XG4gICB9O1xuXG4gICBwcm90ZWN0ZWQgb25EYXRhVXBkYXRlKGRhdGE6IElSZXN1bHRzU3RhdGUpOiB2b2lkIHtcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UuZ2V0KCk7XG4gICAgICB0aGlzLmlzU3Vic2NyaWJlciA9IGRhdGEuaXNTdWJzY3JpYmVyO1xuICAgICAgdGhpcy5pc1NpbmdsZVRlYW0gPSBkYXRhLnRlYW1NZXRhRGF0YSAhPSBudWxsO1xuXG4gICAgICBpZiAodGhpcy5pc1N1YnNjcmliZXIpIHtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5iZW5jaG1hcmtUeXBlLmVuYWJsZSgpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuYmVuY2htYXJrVHlwZS5kaXNhYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYmVuY2htYXJrVHlwZXMgPSBkYXRhLmZhY3RvclNjb3Jlcy5iZW5jaG1hcmsuYXZhaWxhYmxlLm1hcChwID0+IG5ldyBTZWxlY3RJdGVtKHAua2V5LCBwLm5hbWUpKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5kZWx0YVBlcmlvZC5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5kZWx0YVBlcmlvZCk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuYmVuY2htYXJrVHlwZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5iZW5jaG1hcmspO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YWNraW5nLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLnN0YWNraW5nID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmludGVydmVudGlvbkZpbHRlclR5cGUuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy51c2VyLm1vZGVsRmlsdGVyLmludGVydmVudGlvbkZpbHRlcik7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucXVhbGlmeUJ5LnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLnF1YWxpZnlCeSA/PyBkYXRhLmZhY3RvclNjb3Jlcy5wcm9jZXNzaW5nRGF0YS5xdWFsaWZpZWRCeSk7XG4gICAgICB0aGlzLmZhY3RvcnMgPSB0aGlzLmZhY3RvclNlcnZpY2UudG9TZWxlY3RMaXN0KGRhdGEuZmFjdG9yU2NvcmVzLm1vZGVsU3RydWN0dXJlKTtcblxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm92ZXJ2aWV3RmFjdG9ycy5zZXRWYWx1ZShkYXRhLmZhY3RvclNjb3Jlcy5tb2RlbFN0cnVjdHVyZS5kZWZpbml0aW9uLmZhY3RvcnMuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gbnVsbCkubWFwKHAgPT4gcC5wdWJsaWNLZXkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm92ZXJ2aWV3RmFjdG9ycy5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5vdmVydmlld0ZhY3RvcnMpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm90aGVyTW9kZWxPdmVydmlld0ZhY3RvcnMuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzLmZpbHRlcihwID0+IHRoaXMuZmFjdG9ycy5maW5kKHggPT4geC52YWx1ZSA9PSBwKSA9PSBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGVsdGFQZXJpb2RzID0gW1xuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJOb25lXCIsIFwiRG9uJ3QgY29tcGFyZSAoc2hvd3MgcmVzdWx0cyBmcm9tIHBhc3QgMTIgbW9udGhzKVwiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNNb250aFwiLCBcIkNvbXBhcmUgY3VycmVudCBtb250aCB3aXRoIHByZXZpb3VzIG1vbnRoXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c1F1YXJ0ZXJcIiwgXCJDb21wYXJlIHJlY2VudCAzIG1vbnRocyB3aXRoIHByZXZpb3VzIDMgbW9udGhzXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c0hhbGZZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgNiBtb250aHMgd2l0aCBwcmV2aW91cyA2IG1vbnRoc1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgMTIgbW9udGhzIHdpdGggcHJldmlvdXMgMTIgbW9udGhzXCIpXG4gICAgICBdXG5cbiAgICAgIHRoaXMuaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZXMgPSBbXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLkFsbC50b1N0cmluZygpLCBcIlNob3cgYm90aCBvcGVuIHZzIGNvbXBsZXRlZCBhY3Rpb25zXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5Pbmx5T3Blbi50b1N0cmluZygpLCBcIlNob3cgb25seSBvcGVuIGFjdGlvbnNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk9ubHlDb21wbGV0ZWQudG9TdHJpbmcoKSwgXCJTaG93IG9ubHkgY29tcGxldGVkIGFjdGlvbnNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk5vbmUudG9TdHJpbmcoKSwgXCJIaWRlIGFjdGlvbnNcIilcbiAgICAgIF1cblxuICAgICAgdGhpcy5xdWFsaWZ5QnlUeXBlcyA9IFtcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5iZW5jaG1hcmsudG9TdHJpbmcoKSwgXCJBZ2FpbnN0IGJlbmNobWFya1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5kZWx0YS50b1N0cmluZygpLCB0aGlzLmlzU2luZ2xlVGVhbSA/IFwiQWdhaW5zdCBwcmV2aW91cyBzbmFwc2hvdFwiIDogXCJBZ2FpbnN0IHByZXZpb3VzIHBlcmlvZFwiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKFF1YWxpZmllZEJ5RW51bS5ub25lLnRvU3RyaW5nKCksIFwiTm8gY29tcGFyaXNvblwiKSxcbiAgICAgIF1cbiAgIH07XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgc2VsZWN0b3I6ICdbc2V0dGluZ3NEaWFsb2ddJyxcbn0pXG5leHBvcnQgY2xhc3MgT3BlblNldHRpbmdzRGlhbG9nRGlyZWN0aXZlIHtcbiAgIEBJbnB1dCgpIHNob3dTZXR0aW5nU3RhY2tpbmc6IGJvb2xlYW47XG5cbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHtcbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICAgIGRpYWxvZ0NvbmZpZy5wYW5lbENsYXNzID0gWydkaWFsb2cnLCAnc2V0dGluZ3MnXTtcbiAgICAgIGRpYWxvZ0NvbmZpZy5hdXRvRm9jdXMgPSBmYWxzZTtcbiAgICAgIGRpYWxvZ0NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uID0gMDtcbiAgICAgIGRpYWxvZ0NvbmZpZy5leGl0QW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7fTtcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nU2V0dGluZ3NDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG4gICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxuICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+U3RhdGlzdGljYWwgU2V0dGluZ3M8L2gxPlxuICAgPGRpdiBjbGFzcz1cImNsb3NlXCIgbWF0LWRpYWxvZy1jbG9zZT48aSBjbGFzcz1cInJlc3BvbnNpdmUgaWNvbiBwaC14LWJvbGRcIiA+PC9pPjwvZGl2PlxuPC9kaXY+XG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnRlcnZlbnRpb25GaWx0ZXJUeXBlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICAgPG1hdC1sYWJlbD5XaGljaCBhY3Rpb24gdG90YWxzIGRvIHlvdSB3YW50IHRvIHNlZSB1bmRlciAnSW5zaWdodHMnPzwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJpbnRlcnZlbnRpb25maWx0ZXItZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJpbnRlcnZlbnRpb25GaWx0ZXJUeXBlXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnRlcnZlbnRpb25GaWx0ZXJUeXBlc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJxdWFsaWZ5QnlcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPldoYXQgc2hvdWxkIHdlIGNvbXBhcmUgd2l0aCAoZGV0ZXJtaW5lcyBjb2xvcnMpPzwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJxdWFsaWZ5QnktZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJxdWFsaWZ5QnlcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1YWxpZnlCeVR5cGVzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInN0YWNraW5nXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiICpuZ0lmPVwiaXNTaW5nbGVUZWFtXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPkNvbWJpbmUgc25hcHNob3RzICh0byBtZXJnZSBmb2N1cyBzbmFwc2hvdHMpPzwvbWF0LWxhYmVsPlxuICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJzdGFja2luZy1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cInN0YWNraW5nXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiBbdmFsdWVdPVwiJ2ZhbHNlJ1wiPk5vLCBvbmx5IHNob3cgbW9zdCByZWNlbnQgc25hcHNob3Q8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiBbdmFsdWVdPVwiJ3RydWUnXCI+WWVzLCBjb21iaW5lIGFuZCB1c2UgbW9zdCByZWNlbnQgbWVhc3VyZSA8c3BhbiBjbGFzcz1cInBoLWluZm8tZmlsbCBpY29uXCIgW21hdFRvb2x0aXBdPVwiJ1RoaXMgbW9kZSB1c2VzIHRoZSBtb3N0IHJlY2VudCBtZWFzdXJlZCBzY29yZSBmb3IgZWFjaCBmYWN0b3IgdG8gYXZvaWQgbWl4aW5nIG91dGRhdGVkIHdpdGggZnJlc2ggZGF0YS4gQnV0IGl0IGNhbiBsZWFkIHRvIHVucmVsaWFibGUgc2NvcmVzIGZvciBjb3JlIGZhY3RvcnMgd2hlbiBhIG1vcmUgcmVjZW50IHNuYXBzaG90IG9ubHkgbWVhc3VyZXMgYSBmZXcgaXRzIHN1Yi1mYWN0b3JzLiBXZSB3aWxsIGJlIGludHJvZHVjaW5nIGEgbW9yZSBhZHZhbmNlZCB0aW1lLWRlY2F5IGF2ZXJhZ2luZyBhbGdvcml0aG0gc29vbi4nXCI+PC9zcGFuPjwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJlbmNobWFya1wiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hpY2ggYmVuY2htYXJrIHNob3VsZCB3ZSB1c2U/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImJlbmNobWFyay1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cImJlbmNobWFya1R5cGVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJlbmNobWFya1R5cGVzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNTdWJzY3JpYmVyXCIgY2xhc3M9XCJtZXNzYWdlIG1lc3NhZ2UtaW5mb3JtYXRpb25cIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwicGgtaW5mby1maWxsIGljb25cIj48L3NwYW4+XG4gICAgICAgICBFYWdlciB0byBzZWUgaG93IHlvdXIgdGVhbSBjb21wYXJlcyB0byBvdGhlciBiZW5jaG1hcmtzPyBTdWJzY3JpYmUgdG8gdW5sb2NrIGRvemVucyBvZiBiZW5jaG1hcmtzLCBpbmNsdWRpbmcgdGhlICdUb3AgMTAwIG1vc3QgZWZmZWN0aXZlIHRlYW1zJywgYmVuY2htYXJrcyBmb3Igd29ybGQgcmVnaW9ucywgc2VjdG9ycywgc2NhbGluZyBmcmFtZXdvcmtzIGFuZCB5b3VyIG9yZ2FuaXphdGlvbi5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2luZ2xlVGVhbVwiPlxuICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGVsdGFQZXJpb2RcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPldoaWNoIHBlcmlvZHMgc2hvdWxkIHdlIGNvbXBhcmU/PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImRlbHRhUGVyaW9kLWRyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVsdGFQZXJpb2RcIj5cbiAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRlbHRhUGVyaW9kc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJvdmVydmlld0ZhY3RvcnNcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPldoaWNoIGZhY3RvcnMgc2hvdWxkIHdlIHNob3cgaW4gdGhlIG92ZXJ2aWV3PzwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJvdmVydmlld0ZhY3RvcnMtZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJvdmVydmlld0ZhY3RvcnNcIiBtdWx0aXBsZT5cbiAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIFtuZ0NsYXNzXT1cInsnbG93ZXInIDogZmFjdG9yLmxvd2VyfVwiICpuZ0Zvcj1cImxldCBmYWN0b3Igb2YgZmFjdG9yc1wiIFt2YWx1ZV09XCJmYWN0b3IudmFsdWVcIj57e2ZhY3Rvci5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIFtuZ0NsYXNzXT1cInsnbG9hZGluZyc6IHNlbmRpbmcgfVwiPnN1Ym1pdDwvYnV0dG9uPlxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIG1hdC1kaWFsb2ctY2xvc2U+Y2FuY2VsPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgIDwvZm9ybT5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2RpYWxvZ3MvZGlhbG9nLXNldHRpbmdzL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9kaWFsb2dzL2RpYWxvZy1zZXR0aW5ncy9kaWFsb2ctc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFFdkcsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzlELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSwwQkFBeUM7SUE4Qm5GLFlBQW1CLFNBQWdELEVBQVUsYUFBNEIsRUFBVSxtQkFBdUMsRUFBWSxRQUFxQixFQUFVLFdBQXdCLEVBQXNDLEtBQXdDO1FBQ3hTLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFB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QUM7SUFDM0QsQ0FBQzs4R0FmUywyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFIdkMsU0FBUzttQkFBQztvQkFDUixRQUFRLEVBQUUsa0JBQWtCO2lCQUM5Qjs4RUFFVyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTU4sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBDb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2VsZWN0TGlzdEl0ZW0nO1xuaW1wb3J0IHsgSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZSwgTW9kZWxGaWx0ZXIsIFVzZXJTZXR0aW5nc0R0byB9IGZyb20gJy4uLy4uLy4uL21vZGVscy91c2VyU2V0dGluZ3NEdG8nO1xuaW1wb3J0IHsgVXNlclNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdmlld01vZGVsL3VzZXJTZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdNb2RlbFN0YXRlQmFzZSwgVklFV1NUQVRFX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vLi4vdmlld01vZGVsL3ZpZXdNb2RlbFN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVJlc3VsdHNTdGF0ZSwgSVRlYW1SZXBvcnRSZXN1bHRzU3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZXN1bHRzU3RhdGUnO1xuaW1wb3J0IHsgUXVhbGlmaWVkQnlFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZhY3RvclNjb3JlRHRvJztcbmltcG9ydCB7IEZhY3RvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWN0b3JTZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL2RpYWxvZy1zZXR0aW5ncy5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1NldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2U8SVJlc3VsdHNTdGF0ZT4ge1xuICAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgIHB1YmxpYyBzZW5kaW5nOiBib29sZWFuO1xuICAgcHJpdmF0ZSBzZXR0aW5nczogVXNlclNldHRpbmdzRHRvO1xuICAgcHVibGljIGZhY3RvcnM6IFNlbGVjdEl0ZW1bXTtcbiAgIHB1YmxpYyBpc1NpbmdsZVRlYW06IGJvb2xlYW47XG4gICBwdWJsaWMgaXNTdWJzY3JpYmVyOiBib29sZWFuO1xuICAgcHVibGljIG1vZGVsRmlsdGVyU2V0dGluZ3M6IE1vZGVsRmlsdGVyO1xuICAgcHVibGljIGJlbmNobWFya1R5cGVzOiBTZWxlY3RJdGVtW10gPSBbXVxuICAgcHVibGljIGRlbHRhUGVyaW9kczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJOb25lXCIsIFwiRG9uJ3QgY29tcGFyZSAoc2hvd3MgcmVzdWx0cyBmcm9tIHBhc3QgMTIgbW9udGhzKVwiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNNb250aFwiLCBcIkNvbXBhcmUgY3VycmVudCBtb250aCB3aXRoIHByZXZpb3VzIG1vbnRoXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c1F1YXJ0ZXJcIiwgXCJDb21wYXJlIHJlY2VudCAzIG1vbnRocyB3aXRoIHByZXZpb3VzIDMgbW9udGhzXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c0hhbGZZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgNiBtb250aHMgd2l0aCBwcmV2aW91cyA2IG1vbnRoc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKFwiUHJldmlvdXNZZWFyXCIsIFwiQ29tcGFyZSByZWNlbnQgMTIgbW9udGhzIHdpdGggcHJldmlvdXMgMTIgbW9udGhzXCIpXG4gICBdXG5cbiAgIHB1YmxpYyBpbnRlcnZlbnRpb25GaWx0ZXJUeXBlczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5BbGwudG9TdHJpbmcoKSwgXCJTaG93IGJvdGggb3BlbiB2cyBjb21wbGV0ZWQgYWN0aW9uc1wiKSxcbiAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuT25seU9wZW4udG9TdHJpbmcoKSwgXCJTaG93IG9ubHkgb3BlbiBhY3Rpb25zXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5Pbmx5Q29tcGxldGVkLnRvU3RyaW5nKCksIFwiU2hvdyBvbmx5IGNvbXBsZXRlZCBhY3Rpb25zXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oSW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5Ob25lLnRvU3RyaW5nKCksIFwiSGlkZSBhY3Rpb25zXCIpXG4gICBdXG5cbiAgIHB1YmxpYyBxdWFsaWZ5QnlUeXBlczogU2VsZWN0SXRlbVtdID0gW1xuICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmJlbmNobWFyay50b1N0cmluZygpLCBcIkFnYWluc3QgYmVuY2htYXJrXCIpLFxuICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmRlbHRhLnRvU3RyaW5nKCksIFwiQWdhaW5zdCBwcmV2aW91cyBwZXJpb2Qgb3Igc25hcHNob3RcIiksXG4gICAgICBuZXcgU2VsZWN0SXRlbShRdWFsaWZpZWRCeUVudW0ubm9uZS50b1N0cmluZygpLCBcIk5vIGNvbXBhcmlzb25cIiksXG4gICBdXG5cbiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dTZXR0aW5nc0NvbXBvbmVudD4sIHByaXZhdGUgZmFjdG9yU2VydmljZTogRmFjdG9yU2VydmljZSwgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ1NlcnZpY2UsIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBASW5qZWN0KFZJRVdTVEFURV9QUk9WSURFUikgcHJpdmF0ZSBzdGF0ZTogVmlld01vZGVsU3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+KSB7XG4gICAgICBzdXBlcihzdGF0ZSwgc25hY2tCYXIpXG4gICB9XG5cbiAgIG5nT25Jbml0KCkge1xuICAgICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgfVxuXG4gICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgIHRoaXMuc2VuZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldHRpbmdzLmdsb2JhbC5iZW5jaG1hcmsgPSB0aGlzLmZvcm0uY29udHJvbHMuYmVuY2htYXJrVHlwZS52YWx1ZTtcbiAgICAgIHRoaXMuc2V0dGluZ3MuZ2xvYmFsLmRlbHRhUGVyaW9kID0gdGhpcy5mb3JtLmNvbnRyb2xzLmRlbHRhUGVyaW9kLnZhbHVlO1xuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzID0gdGhpcy5mb3JtLmNvbnRyb2xzLm92ZXJ2aWV3RmFjdG9ycy52YWx1ZTtcbiAgICAgIHZhciBvdGhlck1vZGVsRmFjdG9ycyA9IHRoaXMuZm9ybS5jb250cm9scy5vdGhlck1vZGVsT3ZlcnZpZXdGYWN0b3JzLnZhbHVlO1xuXG4gICAgICBpZiAob3RoZXJNb2RlbEZhY3RvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzID0gdGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzLmNvbmNhdChvdGhlck1vZGVsRmFjdG9ycy5maWx0ZXIoKGl0ZW0pID0+IHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycy5pbmRleE9mKGl0ZW0pIDwgMCkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldHRpbmdzLmdsb2JhbC5xdWFsaWZ5QnkgPSB0aGlzLmZvcm0uY29udHJvbHMucXVhbGlmeUJ5LnZhbHVlO1xuICAgICAgdGhpcy5zZXR0aW5ncy5nbG9iYWwuc3RhY2tpbmcgPSB0aGlzLmZvcm0uY29udHJvbHMuc3RhY2tpbmcudmFsdWUgPT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gICAgICB0aGlzLnNldHRpbmdzLnVzZXIubW9kZWxGaWx0ZXIuaW50ZXJ2ZW50aW9uRmlsdGVyID0gdGhpcy5mb3JtLmNvbnRyb2xzLmludGVydmVudGlvbkZpbHRlclR5cGUudmFsdWU7XG4gICAgICB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2Uuc2V0KHRoaXMuc2V0dGluZ3MpO1xuICAgICAgdGhpcy5zdGF0ZS5mb3JjZWRSZWxvYWQoKTtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICB0aGlzLnNob3dTdWNjZXNzKFwiV2UgdXBkYXRlZCB5b3VyIHNldHRpbmdzLiBXZSBhcmUgbm93IHJlbG9hZGluZyB0aGUgcmVzdWx0cy5cIik7XG4gICAgICB0aGlzLnNlbmRpbmcgPSBmYWxzZTtcbiAgIH1cblxuICAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICBkZWx0YVBlcmlvZDogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBiZW5jaG1hcmtUeXBlOiBbeyB2YWx1ZTogXCJcIiB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHF1YWxpZnlCeTogW3sgdmFsdWU6IFwiXCIgfSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBvdmVydmlld0ZhY3RvcnM6IFt7IHZhbHVlOiBudWxsIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgb3RoZXJNb2RlbE92ZXJ2aWV3RmFjdG9yczogW3sgdmFsdWU6IG51bGwgfV0sXG4gICAgICAgICBpbnRlcnZlbnRpb25GaWx0ZXJUeXBlOiBbeyB2YWx1ZTogbnVsbCB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHN0YWNraW5nOiBbeyB2YWx1ZTogXCJmYWxzZVwiIH0sIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICB9KTtcbiAgIH07XG5cbiAgIHByb3RlY3RlZCBvbkRhdGFVcGRhdGUoZGF0YTogSVJlc3VsdHNTdGF0ZSk6IHZvaWQge1xuICAgICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMudXNlclNldHRpbmdzU2VydmljZS5nZXQoKTtcbiAgICAgIHRoaXMuaXNTdWJzY3JpYmVyID0gZGF0YS5pc1N1YnNjcmliZXI7XG4gICAgICB0aGlzLmlzU2luZ2xlVGVhbSA9IGRhdGEudGVhbU1ldGFEYXRhICE9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLmlzU3Vic2NyaWJlcikge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmJlbmNobWFya1R5cGUuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5iZW5jaG1hcmtUeXBlLmRpc2FibGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iZW5jaG1hcmtUeXBlcyA9IGRhdGEuZmFjdG9yU2NvcmVzLmJlbmNobWFyay5hdmFpbGFibGUubWFwKHAgPT4gbmV3IFNlbGVjdEl0ZW0ocC5rZXksIHAubmFtZSkpO1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRlbHRhUGVyaW9kLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLmRlbHRhUGVyaW9kKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5iZW5jaG1hcmtUeXBlLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLmJlbmNobWFyayk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhY2tpbmcuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5nbG9iYWwuc3RhY2tpbmcgPyBcInRydWVcIiA6IFwiZmFsc2VcIik7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW50ZXJ2ZW50aW9uRmlsdGVyVHlwZS5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLnVzZXIubW9kZWxGaWx0ZXIuaW50ZXJ2ZW50aW9uRmlsdGVyKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5xdWFsaWZ5Qnkuc2V0VmFsdWUodGhpcy5zZXR0aW5ncy5nbG9iYWwucXVhbGlmeUJ5ID8/IGRhdGEuZmFjdG9yU2NvcmVzLnByb2Nlc3NpbmdEYXRhLnF1YWxpZmllZEJ5KTtcbiAgICAgIHRoaXMuZmFjdG9ycyA9IHRoaXMuZmFjdG9yU2VydmljZS50b1NlbGVjdExpc3QoZGF0YS5mYWN0b3JTY29yZXMubW9kZWxTdHJ1Y3R1cmUpO1xuXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5nbG9iYWwub3ZlcnZpZXdGYWN0b3JzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3ZlcnZpZXdGYWN0b3JzLnNldFZhbHVlKGRhdGEuZmFjdG9yU2NvcmVzLm1vZGVsU3RydWN0dXJlLmRlZmluaXRpb24uZmFjdG9ycy5maWx0ZXIocCA9PiBwLnBhcmVudEtleSA9PSBudWxsKS5tYXAocCA9PiBwLnB1YmxpY0tleSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3ZlcnZpZXdGYWN0b3JzLnNldFZhbHVlKHRoaXMuc2V0dGluZ3MuZ2xvYmFsLm92ZXJ2aWV3RmFjdG9ycyk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3RoZXJNb2RlbE92ZXJ2aWV3RmFjdG9ycy5zZXRWYWx1ZSh0aGlzLnNldHRpbmdzLmdsb2JhbC5vdmVydmlld0ZhY3RvcnMuZmlsdGVyKHAgPT4gdGhpcy5mYWN0b3JzLmZpbmQoeCA9PiB4LnZhbHVlID09IHApID09IG51bGwpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZWx0YVBlcmlvZHMgPSBbXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShcIk5vbmVcIiwgXCJEb24ndCBjb21wYXJlIChzaG93cyByZXN1bHRzIGZyb20gcGFzdCAxMiBtb250aHMpXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c01vbnRoXCIsIFwiQ29tcGFyZSBjdXJyZW50IG1vbnRoIHdpdGggcHJldmlvdXMgbW9udGhcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzUXVhcnRlclwiLCBcIkNvbXBhcmUgcmVjZW50IDMgbW9udGhzIHdpdGggcHJldmlvdXMgMyBtb250aHNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShcIlByZXZpb3VzSGFsZlllYXJcIiwgXCJDb21wYXJlIHJlY2VudCA2IG1vbnRocyB3aXRoIHByZXZpb3VzIDYgbW9udGhzXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oXCJQcmV2aW91c1llYXJcIiwgXCJDb21wYXJlIHJlY2VudCAxMiBtb250aHMgd2l0aCBwcmV2aW91cyAxMiBtb250aHNcIilcbiAgICAgIF1cblxuICAgICAgdGhpcy5pbnRlcnZlbnRpb25GaWx0ZXJUeXBlcyA9IFtcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuQWxsLnRvU3RyaW5nKCksIFwiU2hvdyBib3RoIG9wZW4gdnMgY29tcGxldGVkIGFjdGlvbnNcIiksXG4gICAgICAgICBuZXcgU2VsZWN0SXRlbShJbnRlcnZlbnRpb25GaWx0ZXJUeXBlLk9ubHlPcGVuLnRvU3RyaW5nKCksIFwiU2hvdyBvbmx5IG9wZW4gYWN0aW9uc1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuT25seUNvbXBsZXRlZC50b1N0cmluZygpLCBcIlNob3cgb25seSBjb21wbGV0ZWQgYWN0aW9uc1wiKSxcbiAgICAgICAgIG5ldyBTZWxlY3RJdGVtKEludGVydmVudGlvbkZpbHRlclR5cGUuTm9uZS50b1N0cmluZygpLCBcIkhpZGUgYWN0aW9uc1wiKVxuICAgICAgXVxuXG4gICAgICB0aGlzLnF1YWxpZnlCeVR5cGVzID0gW1xuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmJlbmNobWFyay50b1N0cmluZygpLCBcIkFnYWluc3QgYmVuY2htYXJrXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLmRlbHRhLnRvU3RyaW5nKCksIHRoaXMuaXNTaW5nbGVUZWFtID8gXCJBZ2FpbnN0IHByZXZpb3VzIHNuYXBzaG90XCIgOiBcIkFnYWluc3QgcHJldmlvdXMgcGVyaW9kXCIpLFxuICAgICAgICAgbmV3IFNlbGVjdEl0ZW0oUXVhbGlmaWVkQnlFbnVtLm5vbmUudG9TdHJpbmcoKSwgXCJObyBjb21wYXJpc29uXCIpLFxuICAgICAgXVxuICAgfTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICBzZWxlY3RvcjogJ1tzZXR0aW5nc0RpYWxvZ10nLFxufSlcbmV4cG9ydCBjbGFzcyBPcGVuU2V0dGluZ3NEaWFsb2dEaXJlY3RpdmUge1xuICAgQElucHV0KCkgc2hvd1NldHRpbmdTdGFja2luZzogYm9vbGVhbjtcblxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSBbJ2RpYWxvZycsICdzZXR0aW5ncyddO1xuICAgICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IGZhbHNlO1xuICAgICAgZGlhbG9nQ29uZmlnLmVudGVyQW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgZGlhbG9nQ29uZmlnLmV4aXRBbmltYXRpb25EdXJhdGlvbiA9IDA7XG4gICAgICBkaWFsb2dDb25maWcuZGF0YSA9IHt9O1xuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dTZXR0aW5nc0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XG4gICA8aDEgbWF0LWRpYWxvZy10aXRsZT5TdGF0aXN0aWNhbCBTZXR0aW5nczwvaDE+XG4gICA8ZGl2IGNsYXNzPVwiY2xvc2VcIiBtYXQtZGlhbG9nLWNsb3NlPjxpIGNsYXNzPVwicmVzcG9uc2l2ZSBpY29uIHBoLXgtYm9sZFwiID48L2k+PC9kaXY+XG48L2Rpdj5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic3VibWl0KClcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImludGVydmVudGlvbkZpbHRlclR5cGVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICA8bWF0LWxhYmVsPldoaWNoIGFjdGlvbiB0b3RhbHMgZG8geW91IHdhbnQgdG8gc2VlIHVuZGVyICdJbnNpZ2h0cyc/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImludGVydmVudGlvbmZpbHRlci1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cImludGVydmVudGlvbkZpbHRlclR5cGVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGludGVydmVudGlvbkZpbHRlclR5cGVzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInF1YWxpZnlCeVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hhdCBzaG91bGQgd2UgY29tcGFyZSB3aXRoIChkZXRlcm1pbmVzIGNvbG9ycyk/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cInF1YWxpZnlCeS1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cInF1YWxpZnlCeVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVhbGlmeUJ5VHlwZXNcIiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwic3RhY2tpbmdcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgKm5nSWY9XCJpc1NpbmdsZVRlYW1cIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+Q29tYmluZSBzbmFwc2hvdHM/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cInN0YWNraW5nLWRyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhY2tpbmdcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIFt2YWx1ZV09XCInZmFsc2UnXCI+Tm8sIG9ubHkgc2hvdyBtb3N0IHJlY2VudCBzbmFwc2hvdDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIFt2YWx1ZV09XCIndHJ1ZSdcIj5ZZXMsIGFuZCB1c2UgbW9zdCByZWNlbnQgbWVhc3VyZSAobWF4IDEyIG1vbnRocyBiYWNrKTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJlbmNobWFya1wiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgIDxtYXQtbGFiZWw+V2hpY2ggYmVuY2htYXJrIHNob3VsZCB3ZSB1c2U/PC9tYXQtbGFiZWw+XG4gICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImJlbmNobWFyay1kcm9wZG93blwiIGZvcm1Db250cm9sTmFtZT1cImJlbmNobWFya1R5cGVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGJlbmNobWFya1R5cGVzXCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj57e2l0ZW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNTdWJzY3JpYmVyXCIgY2xhc3M9XCJtZXNzYWdlIG1lc3NhZ2UtaW5mb3JtYXRpb25cIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwicGgtaW5mby1maWxsIGljb25cIj48L3NwYW4+XG4gICAgICAgICBFYWdlciB0byBzZWUgaG93IHlvdXIgdGVhbSBjb21wYXJlcyB0byBvdGhlciBiZW5jaG1hcmtzPyBTdWJzY3JpYmUgdG8gdW5sb2NrIGRvemVucyBvZiBiZW5jaG1hcmtzLCBpbmNsdWRpbmcgdGhlICdUb3AgMTAwIG1vc3QgZWZmZWN0aXZlIHRlYW1zJywgYmVuY2htYXJrcyBmb3Igd29ybGQgcmVnaW9ucywgc2VjdG9ycywgc2NhbGluZyBmcmFtZXdvcmtzIGFuZCB5b3VyIG9yZ2FuaXphdGlvbi5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2luZ2xlVGVhbVwiPlxuICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGVsdGFQZXJpb2RcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPldoaWNoIHBlcmlvZHMgc2hvdWxkIHdlIGNvbXBhcmU/PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImRlbHRhUGVyaW9kLWRyb3Bkb3duXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVsdGFQZXJpb2RcIj5cbiAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRlbHRhUGVyaW9kc1wiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJvdmVydmlld0ZhY3RvcnNcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPldoaWNoIGZhY3RvcnMgc2hvdWxkIHdlIHNob3cgaW4gdGhlIG92ZXJ2aWV3PzwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJvdmVydmlld0ZhY3RvcnMtZHJvcGRvd25cIiBmb3JtQ29udHJvbE5hbWU9XCJvdmVydmlld0ZhY3RvcnNcIiBtdWx0aXBsZT5cbiAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIFtuZ0NsYXNzXT1cInsnbG93ZXInIDogZmFjdG9yLmxvd2VyfVwiICpuZ0Zvcj1cImxldCBmYWN0b3Igb2YgZmFjdG9yc1wiIFt2YWx1ZV09XCJmYWN0b3IudmFsdWVcIj57e2ZhY3Rvci5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIFtuZ0NsYXNzXT1cInsnbG9hZGluZyc6IHNlbmRpbmcgfVwiPnN1Ym1pdDwvYnV0dG9uPlxuICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIG1hdC1kaWFsb2ctY2xvc2U+Y2FuY2VsPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgIDwvZm9ybT5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuIl19
@@ -5325,11 +5325,11 @@ class DialogSettingsComponent extends ComponentWithViewStateBase {
5325
5325
  }
5326
5326
  ;
5327
5327
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, deps: [{ token: i1$3.MatDialogRef }, { token: FactorService }, { token: UserSettingService }, { token: i1.MatSnackBar }, { token: i4$1.FormBuilder }, { token: VIEWSTATE_PROVIDER }], target: i0.ɵɵFactoryTarget.Component }); }
5328
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
5328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DialogSettingsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, and use most recent measure (max 12 months back)</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }] }); }
5329
5329
  }
5330
5330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DialogSettingsComponent, decorators: [{
5331
5331
  type: Component,
5332
- args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots (to merge focus snapshots)?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, combine and use most recent measure <span class=\"ph-info-fill icon\" [matTooltip]=\"'This mode uses the most recent measured score for each factor to avoid mixing outdated with fresh data. But it can lead to unreliable scores for core factors when a more recent snapshot only measures a few its sub-factors. We will be introducing a more advanced time-decay averaging algorithm soon.'\"></span></mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
5332
+ args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Statistical Settings</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\" ></i></div>\n</div>\n<mat-dialog-content>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"interventionFilterType\" subscriptSizing=\"dynamic\">\n <mat-label>Which action totals do you want to see under 'Insights'?</mat-label>\n <mat-select class=\"interventionfilter-dropdown\" formControlName=\"interventionFilterType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of interventionFilterTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"qualifyBy\" subscriptSizing=\"dynamic\">\n <mat-label>What should we compare with (determines colors)?</mat-label>\n <mat-select class=\"qualifyBy-dropdown\" formControlName=\"qualifyBy\">\n <mat-option class=\"select-option\" *ngFor=\"let item of qualifyByTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"stacking\" subscriptSizing=\"dynamic\" *ngIf=\"isSingleTeam\">\n <mat-label>Combine snapshots?</mat-label>\n <mat-select class=\"stacking-dropdown\" formControlName=\"stacking\">\n <mat-option class=\"select-option\" [value]=\"'false'\">No, only show most recent snapshot</mat-option>\n <mat-option class=\"select-option\" [value]=\"'true'\">Yes, and use most recent measure (max 12 months back)</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"benchmark\" subscriptSizing=\"dynamic\">\n <mat-label>Which benchmark should we use?</mat-label>\n <mat-select class=\"benchmark-dropdown\" formControlName=\"benchmarkType\">\n <mat-option class=\"select-option\" *ngFor=\"let item of benchmarkTypes\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div *ngIf=\"!isSubscriber\" class=\"message message-information\">\n <span class=\"ph-info-fill icon\"></span>\n Eager to see how your team compares to other benchmarks? Subscribe to unlock dozens of benchmarks, including the 'Top 100 most effective teams', benchmarks for world regions, sectors, scaling frameworks and your organization.\n </div>\n\n <ng-container *ngIf=\"!isSingleTeam\">\n <mat-form-field class=\"deltaPeriod\" subscriptSizing=\"dynamic\">\n <mat-label>Which periods should we compare?</mat-label>\n <mat-select class=\"deltaPeriod-dropdown\" formControlName=\"deltaPeriod\">\n <mat-option class=\"select-option\" *ngFor=\"let item of deltaPeriods\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"overviewFactors\" subscriptSizing=\"dynamic\">\n <mat-label>Which factors should we show in the overview?</mat-label>\n <mat-select class=\"overviewFactors-dropdown\" formControlName=\"overviewFactors\" multiple>\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\">submit</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}h2{font-size:30px;font-weight:600;margin-bottom:0}.mat-mdc-option.lower{margin-left:20px}.mat-dialog-content .mat-form-field{margin-bottom:30px!important}\n"] }]
5333
5333
  }], ctorParameters: () => [{ type: i1$3.MatDialogRef }, { type: FactorService }, { type: UserSettingService }, { type: i1.MatSnackBar }, { type: i4$1.FormBuilder }, { type: ViewModelStateBase, decorators: [{
5334
5334
  type: Inject,
5335
5335
  args: [VIEWSTATE_PROVIDER]