@eqproject/eqp-dynamic-module 2.6.5 → 2.6.6

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.
@@ -9,12 +9,13 @@ import * as i1 from "@angular/material/dialog";
9
9
  import * as i2 from "@angular/material/button";
10
10
  import * as i3 from "@angular/material/input";
11
11
  import * as i4 from "@angular/material/form-field";
12
- import * as i5 from "@angular/material/icon";
13
- import * as i6 from "@angular/forms";
14
- import * as i7 from "@angular/common";
15
- import * as i8 from "@eqproject/eqp-select";
16
- import * as i9 from "../add-formula-field/add-formula-field.component";
17
- import * as i10 from "./dynamic-module-trigger-fix/dynamic-module-trigger-fix.component";
12
+ import * as i5 from "@angular/material/card";
13
+ import * as i6 from "@angular/material/icon";
14
+ import * as i7 from "@angular/forms";
15
+ import * as i8 from "@angular/common";
16
+ import * as i9 from "@eqproject/eqp-select";
17
+ import * as i10 from "../add-formula-field/add-formula-field.component";
18
+ import * as i11 from "./dynamic-module-trigger-fix/dynamic-module-trigger-fix.component";
18
19
  export class TriggerCreatorComponent {
19
20
  constructor(dialog) {
20
21
  this.dialog = dialog;
@@ -120,10 +121,10 @@ export class TriggerCreatorComponent {
120
121
  }
121
122
  }
122
123
  TriggerCreatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TriggerCreatorComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
123
- TriggerCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TriggerCreatorComponent, selector: "trigger-creator", inputs: { form: "form", trigger: "trigger", formulas: "formulas" }, outputs: { onSaveRecord: "onSaveRecord" }, viewQueries: [{ propertyName: "dialogFormula", first: true, predicate: ["dialogFormula"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"padder\" *ngIf=\"trigger.conditions != null\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Descrizione Trigger</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Descrizione </mat-label>\r\n <input matInput [(ngModel)]=\"trigger.description\" [readonly]=\"false\" [required]=\"false\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Tipo Trigger</div>\r\n <div class=\"col-9\">\r\n <eqp-select [arrayData]=\"formulaKeys\" [(ngModelInput)]=\"selectedFormula\"\r\n [arrayKeyProperty]=\"'key'\" [arrayValueProperty]=\"'key'\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onChangeFormula($event)\">\r\n </eqp-select> \r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngFor=\"let formulaField of formulaFieldsStructure\">\r\n <div class=\"col-3\">{{formulaField.key}}</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> {{formulaField.key}} </mat-label>\r\n <input matInput [readonly]=\"false\" [required]=\"false\" (click)=\"openFormulaDialog(formulaField)\" [(ngModel)]=\"formulaField.value\" (ngModelChange)=\"onFormulaFieldChange(formulaField)\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <button class=\"btn btn-primary\" (click)=\"addCondition()\">Aggiungi condizione</button>\r\n\r\n <div class=\"padder\" *ngFor=\"let condition of trigger.conditions\">\r\n <div class=\"row\" *ngIf=\"condition.Field != null\">\r\n <div class=\"col-1\"><button class=\"btn btn-danger\"><mat-icon (click)=\"deleteCondition(condition)\">delete</mat-icon></button></div>\r\n <div class=\"col-2\">\r\n <eqp-select [arrayData]=\"form.Fields\" [(ngModelInput)]=\"condition.Field\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\"\r\n [showCancelButton]=\"false\" (ngModelInputChange)=\"onFieldTypeChange($event, condition)\"\r\n [includeFullObject]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-9\" *ngIf=\"condition.Field != null\">\r\n <dynamic-module-trigger-fix #fieldTemplate [condition]=\"condition\" [form]=\"form\" (triggerChange)=\"onTriggerChange($event, condition)\"></dynamic-module-trigger-fix>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row mt-2 add-form-record-buttons\">\r\n <div class=\"col-sm-12 text-right\">\r\n <button class=\"mr-2\" mat-raised-button type=\"button\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"!isSaving\">Salva</span>\r\n <span *ngIf=\"isSaving\">Salvataggio in Corso...</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<!--DIALOG PER SEMPLIFICARE LA SCRITTURA DEL CAMPO FORMULA-->\r\n<ng-template #dialogFormula>\r\n <eqp-dynamic-module-add-formula-component>\r\n </eqp-dynamic-module-add-formula-component>\r\n</ng-template>", styles: [".padder{padding:15px}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i9.AddFormulaComponent, selector: "eqp-dynamic-module-add-formula-component" }, { kind: "component", type: i10.DynamicModuleTriggerFixComponent, selector: "dynamic-module-trigger-fix", inputs: ["condition", "form"], outputs: ["triggerChange"] }] });
124
+ TriggerCreatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TriggerCreatorComponent, selector: "trigger-creator", inputs: { form: "form", trigger: "trigger", formulas: "formulas" }, outputs: { onSaveRecord: "onSaveRecord" }, viewQueries: [{ propertyName: "dialogFormula", first: true, predicate: ["dialogFormula"], descendants: true, static: true }], ngImport: i0, template: "\r\n<mat-card class=\"add-form-field\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{trigger != null ? \"Modifica\" : \"Aggiungi\"}} trigger\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"container-fluid containerContent padder\" *ngIf=\"trigger.conditions != null\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Descrizione Trigger</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Descrizione </mat-label>\r\n <input matInput [(ngModel)]=\"trigger.description\" [readonly]=\"false\" [required]=\"false\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Tipo Trigger</div>\r\n <div class=\"col-9\">\r\n <eqp-select [arrayData]=\"formulaKeys\" [(ngModelInput)]=\"selectedFormula\"\r\n [arrayKeyProperty]=\"'key'\" [arrayValueProperty]=\"'key'\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onChangeFormula($event)\">\r\n </eqp-select> \r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngFor=\"let formulaField of formulaFieldsStructure\">\r\n <div class=\"col-3\">{{formulaField.key}}</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> {{formulaField.key}} </mat-label>\r\n <input matInput [readonly]=\"false\" [required]=\"false\" (click)=\"openFormulaDialog(formulaField)\" [(ngModel)]=\"formulaField.value\" (ngModelChange)=\"onFormulaFieldChange(formulaField)\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <button class=\"btn btn-primary\" (click)=\"addCondition()\">Aggiungi condizione</button>\r\n\r\n <div class=\"padder\" *ngFor=\"let condition of trigger.conditions\">\r\n <div class=\"row\" *ngIf=\"condition.Field != null\">\r\n <div class=\"col-1\"><button class=\"btn btn-danger\"><mat-icon (click)=\"deleteCondition(condition)\">delete</mat-icon></button></div>\r\n <div class=\"col-2\">\r\n <eqp-select [arrayData]=\"form.Fields\" [(ngModelInput)]=\"condition.Field\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\"\r\n [showCancelButton]=\"false\" (ngModelInputChange)=\"onFieldTypeChange($event, condition)\"\r\n [includeFullObject]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-9\" *ngIf=\"condition.Field != null\">\r\n <dynamic-module-trigger-fix #fieldTemplate [condition]=\"condition\" [form]=\"form\" (triggerChange)=\"onTriggerChange($event, condition)\"></dynamic-module-trigger-fix>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <div class=\"d-flex justify-content-end mt-2 mb-1 me-3\"> \r\n <button class=\"mr-2\" mat-raised-button type=\"button\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"!isSaving\">Salva</span>\r\n <span *ngIf=\"isSaving\">Salvataggio in Corso...</span>\r\n </button>\r\n </div>\r\n </mat-card-footer>\r\n\r\n</mat-card>\r\n\r\n<!--DIALOG PER SEMPLIFICARE LA SCRITTURA DEL CAMPO FORMULA-->\r\n<ng-template #dialogFormula>\r\n <eqp-dynamic-module-add-formula-component>\r\n </eqp-dynamic-module-add-formula-component>\r\n</ng-template>", styles: [".padder{padding:15px}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i5.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i5.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.EqpSelectComponent, selector: "eqp-select", inputs: ["placeholder", "enumData", "enumDataToExclude", "arrayData", "arrayKeyProperty", "arrayValueProperty", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput", "isRequired", "isDisabled", "isMultiLanguage", "multilanguagePrefixKey", "isAlphabeticalOrderable", "suffixIcon", "prefixIcon", "isMultiSelect", "includeFullObject", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "data"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i10.AddFormulaComponent, selector: "eqp-dynamic-module-add-formula-component" }, { kind: "component", type: i11.DynamicModuleTriggerFixComponent, selector: "dynamic-module-trigger-fix", inputs: ["condition", "form"], outputs: ["triggerChange"] }] });
124
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TriggerCreatorComponent, decorators: [{
125
126
  type: Component,
126
- args: [{ selector: 'trigger-creator', template: "<div class=\"padder\" *ngIf=\"trigger.conditions != null\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Descrizione Trigger</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Descrizione </mat-label>\r\n <input matInput [(ngModel)]=\"trigger.description\" [readonly]=\"false\" [required]=\"false\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Tipo Trigger</div>\r\n <div class=\"col-9\">\r\n <eqp-select [arrayData]=\"formulaKeys\" [(ngModelInput)]=\"selectedFormula\"\r\n [arrayKeyProperty]=\"'key'\" [arrayValueProperty]=\"'key'\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onChangeFormula($event)\">\r\n </eqp-select> \r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngFor=\"let formulaField of formulaFieldsStructure\">\r\n <div class=\"col-3\">{{formulaField.key}}</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> {{formulaField.key}} </mat-label>\r\n <input matInput [readonly]=\"false\" [required]=\"false\" (click)=\"openFormulaDialog(formulaField)\" [(ngModel)]=\"formulaField.value\" (ngModelChange)=\"onFormulaFieldChange(formulaField)\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <button class=\"btn btn-primary\" (click)=\"addCondition()\">Aggiungi condizione</button>\r\n\r\n <div class=\"padder\" *ngFor=\"let condition of trigger.conditions\">\r\n <div class=\"row\" *ngIf=\"condition.Field != null\">\r\n <div class=\"col-1\"><button class=\"btn btn-danger\"><mat-icon (click)=\"deleteCondition(condition)\">delete</mat-icon></button></div>\r\n <div class=\"col-2\">\r\n <eqp-select [arrayData]=\"form.Fields\" [(ngModelInput)]=\"condition.Field\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\"\r\n [showCancelButton]=\"false\" (ngModelInputChange)=\"onFieldTypeChange($event, condition)\"\r\n [includeFullObject]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-9\" *ngIf=\"condition.Field != null\">\r\n <dynamic-module-trigger-fix #fieldTemplate [condition]=\"condition\" [form]=\"form\" (triggerChange)=\"onTriggerChange($event, condition)\"></dynamic-module-trigger-fix>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row mt-2 add-form-record-buttons\">\r\n <div class=\"col-sm-12 text-right\">\r\n <button class=\"mr-2\" mat-raised-button type=\"button\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"!isSaving\">Salva</span>\r\n <span *ngIf=\"isSaving\">Salvataggio in Corso...</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<!--DIALOG PER SEMPLIFICARE LA SCRITTURA DEL CAMPO FORMULA-->\r\n<ng-template #dialogFormula>\r\n <eqp-dynamic-module-add-formula-component>\r\n </eqp-dynamic-module-add-formula-component>\r\n</ng-template>", styles: [".padder{padding:15px}\n"] }]
127
+ args: [{ selector: 'trigger-creator', template: "\r\n<mat-card class=\"add-form-field\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{trigger != null ? \"Modifica\" : \"Aggiungi\"}} trigger\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"container-fluid containerContent padder\" *ngIf=\"trigger.conditions != null\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Descrizione Trigger</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> Descrizione </mat-label>\r\n <input matInput [(ngModel)]=\"trigger.description\" [readonly]=\"false\" [required]=\"false\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-3\">Tipo Trigger</div>\r\n <div class=\"col-9\">\r\n <eqp-select [arrayData]=\"formulaKeys\" [(ngModelInput)]=\"selectedFormula\"\r\n [arrayKeyProperty]=\"'key'\" [arrayValueProperty]=\"'key'\" [showCancelButton]=\"false\" (ngModelInputChange)=\"onChangeFormula($event)\">\r\n </eqp-select> \r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngFor=\"let formulaField of formulaFieldsStructure\">\r\n <div class=\"col-3\">{{formulaField.key}}</div>\r\n <div class=\"col-9\">\r\n <mat-form-field>\r\n <mat-label class=\"pt-1\"> {{formulaField.key}} </mat-label>\r\n <input matInput [readonly]=\"false\" [required]=\"false\" (click)=\"openFormulaDialog(formulaField)\" [(ngModel)]=\"formulaField.value\" (ngModelChange)=\"onFormulaFieldChange(formulaField)\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <button class=\"btn btn-primary\" (click)=\"addCondition()\">Aggiungi condizione</button>\r\n\r\n <div class=\"padder\" *ngFor=\"let condition of trigger.conditions\">\r\n <div class=\"row\" *ngIf=\"condition.Field != null\">\r\n <div class=\"col-1\"><button class=\"btn btn-danger\"><mat-icon (click)=\"deleteCondition(condition)\">delete</mat-icon></button></div>\r\n <div class=\"col-2\">\r\n <eqp-select [arrayData]=\"form.Fields\" [(ngModelInput)]=\"condition.Field\"\r\n [arrayKeyProperty]=\"'Name'\" [arrayValueProperty]=\"'Name'\"\r\n [showCancelButton]=\"false\" (ngModelInputChange)=\"onFieldTypeChange($event, condition)\"\r\n [includeFullObject]=\"true\">\r\n </eqp-select>\r\n </div> \r\n <div class=\"col-9\" *ngIf=\"condition.Field != null\">\r\n <dynamic-module-trigger-fix #fieldTemplate [condition]=\"condition\" [form]=\"form\" (triggerChange)=\"onTriggerChange($event, condition)\"></dynamic-module-trigger-fix>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n <mat-card-footer>\r\n <div class=\"d-flex justify-content-end mt-2 mb-1 me-3\"> \r\n <button class=\"mr-2\" mat-raised-button type=\"button\" (click)=\"saveOrExitForm(true)\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"saveOrExitForm(false)\" [disabled]=\"isSaving\">\r\n <span *ngIf=\"!isSaving\">Salva</span>\r\n <span *ngIf=\"isSaving\">Salvataggio in Corso...</span>\r\n </button>\r\n </div>\r\n </mat-card-footer>\r\n\r\n</mat-card>\r\n\r\n<!--DIALOG PER SEMPLIFICARE LA SCRITTURA DEL CAMPO FORMULA-->\r\n<ng-template #dialogFormula>\r\n <eqp-dynamic-module-add-formula-component>\r\n </eqp-dynamic-module-add-formula-component>\r\n</ng-template>", styles: [".padder{padding:15px}\n"] }]
127
128
  }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { form: [{
128
129
  type: Input,
129
130
  args: ["form"]
@@ -139,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
139
140
  type: ViewChild,
140
141
  args: ["dialogFormula", { static: true }]
141
142
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBYSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRL0QsTUFBTSxPQUFPLHVCQUF1QjtJQWtCbEMsWUFBb0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWZuQixZQUFPLEdBQVksSUFBSSxDQUFDO1FBQ3ZCLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFFOUIsaUJBQVksR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU1RSxrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUM5QixhQUFRLEdBQVksS0FBSyxDQUFD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RyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLO2dCQUMvRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3ZELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RixlQUFlLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7cUhBdEhVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLG9TQ2hCcEMseTVHQXFFYzs0RkRyREQsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGlCQUFpQjtnR0FNWixJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBQ0ssT0FBTztzQkFBeEIsS0FBSzt1QkFBQyxTQUFTO2dCQUNHLFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFFUCxZQUFZO3NCQUFyQixNQUFNO2dCQVV1QyxhQUFhO3NCQUExRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBCb29sZWFuTG9naWNPcGVyYXRvclR5cGUsIENvbmRpdGlvbiwgVHJpZ2dlciwgVHJpZ2dlckNvbmRpdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90cmlnZ2VyLm1vZGVsJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIHNzIGZyb20gJ3NpbXBsZS1zdGF0aXN0aWNzJztcclxuaW1wb3J0IHsgQ2FudmFzSlNBbmd1bGFyU3RvY2tDaGFydHNNb2R1bGUsIENhbnZhc0pTQ2hhcnQsIENhbnZhc0pTU3RvY2tDaGFydCB9IGZyb20gJ0BjYW52YXNqcy9hbmd1bGFyLXN0b2NrY2hhcnRzJztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFBpY2tlck1vZGVFbnVtIH0gZnJvbSAnQGVxcHJvamVjdC9lcXAtZGF0ZXRpbWVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RyaWdnZXItY3JlYXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyaWdnZXItY3JlYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyaWdnZXJDcmVhdG9yQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KFwiZm9ybVwiKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dChcInRyaWdnZXJcIikgdHJpZ2dlcjogVHJpZ2dlciA9IG51bGw7XHJcbiAgQElucHV0KFwiZm9ybXVsYXNcIikgZm9ybXVsYXM6IGFueSA9IG51bGw7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNhdmVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxUcmlnZ2VyPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJpZ2dlcj4oKTtcclxuXHJcbiAgRmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZUVudW07XHJcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZEZvcm11bGE6IGFueTtcclxuICBmb3JtdWxhS2V5czogQXJyYXk8YW55PiA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgZm9ybXVsYUZpZWxkc1N0cnVjdHVyZTogQXJyYXk8YW55PiA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgcGlja2VyTW9kZUVudW0gPSBQaWNrZXJNb2RlRW51bTtcclxuXHJcbiAgZGlhbG9nRm9ybXVsYVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dGb3JtdWxhXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0Zvcm11bGE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpe31cclxuICBcclxuICBuZ09uSW5pdCgpe1xyXG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PSBudWxsKXtcclxuICAgICAgdGhpcy50cmlnZ2VyID0gbmV3IFRyaWdnZXIoKTtcclxuICAgICAgdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMgPSBuZXcgQXJyYXk8VHJpZ2dlckNvbmRpdGlvbj4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtdWxhID0ge307XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleSA9IHRoaXMudHJpZ2dlci5leGVjdXRpb247XHJcblxyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm11bGFzW3RoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5wdXNoKHtcImtleVwiOiByZXN9KTtcclxuICAgICAgfSk7ICAgICAgXHJcblxyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnRyaWdnZXIuZm9ybXVsYXMpLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gcmVzKS52YWx1ZSA9IHRoaXMudHJpZ2dlci5mb3JtdWxhc1tyZXNdO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhcykuZm9yRWFjaCgocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybXVsYUtleXMucHVzaCh7XCJrZXlcIjogcmVzfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvblRyaWdnZXJDaGFuZ2Uob3V0cHV0Q29uZGl0aW9uOiBDb25kaXRpb24sIFRyaWdnZXJDb25kaXRpb246IFRyaWdnZXJDb25kaXRpb24pe1xyXG4gICAgdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMuZmluZCh4ID0+IHguQ0lEID09IFRyaWdnZXJDb25kaXRpb24uQ0lEKS5ib29sZWFubG9naWNvcGVyYXRvciA9IG91dHB1dENvbmRpdGlvbi5ib29sZWFubG9naWNvcGVyYXRvcjtcclxuICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zLmZpbmQoeCA9PiB4LkNJRCA9PSBUcmlnZ2VyQ29uZGl0aW9uLkNJRCkubG9naWNvcGVyYXRvciA9IG91dHB1dENvbmRpdGlvbi5sb2dpY29wZXJhdG9yO1xyXG5cclxuICAgIHZhciBjaGFuZ2VJbk9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcclxuICAgICAgaWYgKGNvbmRpdGlvbi5ib29sZWFubG9naWNvcGVyYXRvciA9PSBCb29sZWFuTG9naWNPcGVyYXRvclR5cGUuT1IpeyBjaGFuZ2VJbk9yID0gdHJ1ZTsgfVxyXG4gICAgICBpZiAoY2hhbmdlSW5Pcil7IGNvbmRpdGlvbi5ib29sZWFubG9naWNvcGVyYXRvciA9IEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZS5PUjsgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRDb25kaXRpb24oKXtcclxuICAgIHZhciB0cmlnZ2VyQ29uZGl0aW9uID0gbmV3IFRyaWdnZXJDb25kaXRpb24oKTtcclxuICAgIHRyaWdnZXJDb25kaXRpb24uRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICB0cmlnZ2VyQ29uZGl0aW9uLnJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuICAgIHRyaWdnZXJDb25kaXRpb24ubG9naWNvcGVyYXRvciA9IG51bGw7XHJcbiAgICB0cmlnZ2VyQ29uZGl0aW9uLmJvb2xlYW5sb2dpY29wZXJhdG9yID0gbnVsbDtcclxuICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zLnB1c2godHJpZ2dlckNvbmRpdGlvbik7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb25kaXRpb24oZWxlbWVudDogVHJpZ2dlckNvbmRpdGlvbil7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5maW5kSW5kZXgoeCA9PiB4LkNJRCA9PSBlbGVtZW50LkNJRCk7XHJcbiAgICB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgfVxyXG5cclxuICBvbkZpZWxkVHlwZUNoYW5nZShldjogQmFzZUZpZWxkLCBjb25kaXRpb246IFRyaWdnZXJDb25kaXRpb24pe1xyXG4gICAgY29uZGl0aW9uLkZpZWxkID0gZXY7XHJcbiAgICBjb25kaXRpb24ucmVjb3JkW2V2Lk5hbWVdID0gXCJcIjtcclxuICB9XHJcblxyXG4gIHNhdmVPckV4aXRGb3JtKGV4aXQ6IGJvb2xlYW4pIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2FkZC1mb3JtLXJlY29yZCBzYXZlUmVjb3JkRXZlbnQnKVxyXG4gICAgaWYgKGV4aXQpIHtcclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQuZW1pdChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5mb3JFYWNoKChmb3JtdWxhRmllbGQpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHJpZ2dlci5mb3JtdWxhcyA9PSBcInVuZGVmaW5lZFwiKXsgdGhpcy50cmlnZ2VyLmZvcm11bGFzID0ge307IH1cclxuICAgICAgICB0aGlzLnRyaWdnZXIuZm9ybXVsYXNbZm9ybXVsYUZpZWxkLmtleV0gPSBmb3JtdWxhRmllbGQudmFsdWU7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyLmV4ZWN1dGlvbiA9IHRoaXMuc2VsZWN0ZWRGb3JtdWxhLmtleTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uU2F2ZVJlY29yZC5lbWl0KHRoaXMudHJpZ2dlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUZvcm11bGEoZm9ybXVsYTogYW55KXtcclxuXHJcbiAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1tmb3JtdWxhLmtleV0pLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XCJrZXlcIjogcmVzfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZVwiLCB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtdWxhRmllbGRDaGFuZ2UoZm9ybXVsYUZpZWxkOiBhbnkpe1xyXG4gIH1cclxuXHJcbiAgb3BlbkZvcm11bGFEaWFsb2coZm9ybXVsYUZpZWxkOiBhbnkpIHtcclxuICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZm9ybXVsYTogdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLmZpbmQoeCA9PiB4LmtleSA9PSBmb3JtdWxhRmllbGQua2V5KS52YWx1ZSxcclxuICAgICAgICBmaWVsZHM6IHRoaXMuZm9ybS5GaWVsZHNcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIGZvcm11bGFUb0NoYW5nZSA9IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSk7XHJcbiAgICAgIGZvcm11bGFUb0NoYW5nZS52YWx1ZSA9IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCkgPT0gXCJcIiA/IG51bGwgOiByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLm9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFUb0NoYW5nZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwYWRkZXJcIiAqbmdJZj1cInRyaWdnZXIuY29uZGl0aW9ucyAhPSBudWxsXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkRlc2NyaXppb25lIFRyaWdnZXI8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IERlc2NyaXppb25lIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwidHJpZ2dlci5kZXNjcmlwdGlvblwiIFtyZWFkb25seV09XCJmYWxzZVwiIFtyZXF1aXJlZF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlRpcG8gVHJpZ2dlcjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm11bGFLZXlzXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkRm9ybXVsYVwiXHJcbiAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIna2V5J1wiIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNoYW5nZUZvcm11bGEoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2VxcC1zZWxlY3Q+ICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IGZvcm11bGFGaWVsZCBvZiBmb3JtdWxhRmllbGRzU3RydWN0dXJlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3tmb3JtdWxhRmllbGQua2V5fX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IHt7Zm9ybXVsYUZpZWxkLmtleX19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtyZWFkb25seV09XCJmYWxzZVwiIFtyZXF1aXJlZF09XCJmYWxzZVwiIChjbGljayk9XCJvcGVuRm9ybXVsYURpYWxvZyhmb3JtdWxhRmllbGQpXCIgWyhuZ01vZGVsKV09XCJmb3JtdWxhRmllbGQudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhRmllbGQpXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZENvbmRpdGlvbigpXCI+QWdnaXVuZ2kgY29uZGl6aW9uZTwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwYWRkZXJcIiAqbmdGb3I9XCJsZXQgY29uZGl0aW9uIG9mIHRyaWdnZXIuY29uZGl0aW9uc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImNvbmRpdGlvbi5GaWVsZCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMVwiPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiPjxtYXQtaWNvbiAoY2xpY2spPVwiZGVsZXRlQ29uZGl0aW9uKGNvbmRpdGlvbilcIj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZm9ybS5GaWVsZHNcIiBbKG5nTW9kZWxJbnB1dCldPVwiY29uZGl0aW9uLkZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpZWxkVHlwZUNoYW5nZSgkZXZlbnQsIGNvbmRpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiICpuZ0lmPVwiY29uZGl0aW9uLkZpZWxkICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgIDxkeW5hbWljLW1vZHVsZS10cmlnZ2VyLWZpeCAjZmllbGRUZW1wbGF0ZSBbY29uZGl0aW9uXT1cImNvbmRpdGlvblwiIFtmb3JtXT1cImZvcm1cIiAodHJpZ2dlckNoYW5nZSk9XCJvblRyaWdnZXJDaGFuZ2UoJGV2ZW50LCBjb25kaXRpb24pXCI+PC9keW5hbWljLW1vZHVsZS10cmlnZ2VyLWZpeD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yIGFkZC1mb3JtLXJlY29yZC1idXR0b25zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybSh0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgQW5udWxsYVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybShmYWxzZSlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzU2F2aW5nXCI+U2FsdmE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzU2F2aW5nXCI+U2FsdmF0YWdnaW8gaW4gQ29yc28uLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjwhLS1ESUFMT0cgUEVSIFNFTVBMSUZJQ0FSRSBMQSBTQ1JJVFRVUkEgREVMIENBTVBPIEZPUk1VTEEtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dGb3JtdWxhPlxyXG4gICAgPGVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbiAgICA8L2VxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbjwvbmctdGVtcGxhdGU+Il19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90cmlnZ2VyLWNyZWF0b3IvdHJpZ2dlci1jcmVhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBYSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUS9ELE1BQU0sT0FBTyx1QkFBdUI7SUFrQmxDLFlBQW9CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFmbkIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN2QixhQUFRLEdBQVEsSUFBSSxDQUFDO1FBRTlCLGlCQUFZLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFNUUsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUIsYUFBUSxHQUFZLEtBQUssQ0FB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QUcsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSztnQkFDL0UsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTthQUN6QjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN2RCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkYsZUFBZSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3FIQXRIVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixvU0NoQnBDLDY1SEFrRmM7NEZEbEVELHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxpQkFBaUI7Z0dBTVosSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNLLE9BQU87c0JBQXhCLEtBQUs7dUJBQUMsU0FBUztnQkFDRyxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBRVAsWUFBWTtzQkFBckIsTUFBTTtnQkFVdUMsYUFBYTtzQkFBMUQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgQm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlLCBDb25kaXRpb24sIFRyaWdnZXIsIFRyaWdnZXJDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdHJpZ2dlci5tb2RlbCc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBzcyBmcm9tICdzaW1wbGUtc3RhdGlzdGljcyc7XHJcbmltcG9ydCB7IENhbnZhc0pTQW5ndWxhclN0b2NrQ2hhcnRzTW9kdWxlLCBDYW52YXNKU0NoYXJ0LCBDYW52YXNKU1N0b2NrQ2hhcnQgfSBmcm9tICdAY2FudmFzanMvYW5ndWxhci1zdG9ja2NoYXJ0cyc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQaWNrZXJNb2RlRW51bSB9IGZyb20gJ0BlcXByb2plY3QvZXFwLWRhdGV0aW1lcGlja2VyJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cmlnZ2VyLWNyZWF0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmlnZ2VyLWNyZWF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyaWdnZXItY3JlYXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmlnZ2VyQ3JlYXRvckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dChcImZvcm1cIikgZm9ybTogRm9ybTtcclxuICBASW5wdXQoXCJ0cmlnZ2VyXCIpIHRyaWdnZXI6IFRyaWdnZXIgPSBudWxsO1xyXG4gIEBJbnB1dChcImZvcm11bGFzXCIpIGZvcm11bGFzOiBhbnkgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgb25TYXZlUmVjb3JkOiBFdmVudEVtaXR0ZXI8VHJpZ2dlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyaWdnZXI+KCk7XHJcblxyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRGb3JtdWxhOiBhbnk7XHJcbiAgZm9ybXVsYUtleXM6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmU6IEFycmF5PGFueT4gPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gIHBpY2tlck1vZGVFbnVtID0gUGlja2VyTW9kZUVudW07XHJcblxyXG4gIGRpYWxvZ0Zvcm11bGFSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nRm9ybXVsYVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dGb3JtdWxhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKXt9XHJcbiAgXHJcbiAgbmdPbkluaXQoKXtcclxuICAgIGlmICh0aGlzLnRyaWdnZXIgPT0gbnVsbCl7XHJcbiAgICAgIHRoaXMudHJpZ2dlciA9IG5ldyBUcmlnZ2VyKCk7XHJcbiAgICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zID0gbmV3IEFycmF5PFRyaWdnZXJDb25kaXRpb24+KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYSA9IHt9O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXkgPSB0aGlzLnRyaWdnZXIuZXhlY3V0aW9uO1xyXG5cclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtdWxhc1t0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXldKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUucHVzaCh7XCJrZXlcIjogcmVzfSk7XHJcbiAgICAgIH0pOyAgICAgIFxyXG5cclxuICAgICAgT2JqZWN0LmtleXModGhpcy50cmlnZ2VyLmZvcm11bGFzKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZmluZCh4ID0+IHgua2V5ID09IHJlcykudmFsdWUgPSB0aGlzLnRyaWdnZXIuZm9ybXVsYXNbcmVzXTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXMpLmZvckVhY2goKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm11bGFLZXlzLnB1c2goe1wia2V5XCI6IHJlc30pO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25UcmlnZ2VyQ2hhbmdlKG91dHB1dENvbmRpdGlvbjogQ29uZGl0aW9uLCBUcmlnZ2VyQ29uZGl0aW9uOiBUcmlnZ2VyQ29uZGl0aW9uKXtcclxuICAgIHRoaXMudHJpZ2dlci5jb25kaXRpb25zLmZpbmQoeCA9PiB4LkNJRCA9PSBUcmlnZ2VyQ29uZGl0aW9uLkNJRCkuYm9vbGVhbmxvZ2ljb3BlcmF0b3IgPSBvdXRwdXRDb25kaXRpb24uYm9vbGVhbmxvZ2ljb3BlcmF0b3I7XHJcbiAgICB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5maW5kKHggPT4geC5DSUQgPT0gVHJpZ2dlckNvbmRpdGlvbi5DSUQpLmxvZ2ljb3BlcmF0b3IgPSBvdXRwdXRDb25kaXRpb24ubG9naWNvcGVyYXRvcjtcclxuXHJcbiAgICB2YXIgY2hhbmdlSW5PciA9IGZhbHNlO1xyXG4gICAgdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMuZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XHJcbiAgICAgIGlmIChjb25kaXRpb24uYm9vbGVhbmxvZ2ljb3BlcmF0b3IgPT0gQm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlLk9SKXsgY2hhbmdlSW5PciA9IHRydWU7IH1cclxuICAgICAgaWYgKGNoYW5nZUluT3IpeyBjb25kaXRpb24uYm9vbGVhbmxvZ2ljb3BlcmF0b3IgPSBCb29sZWFuTG9naWNPcGVyYXRvclR5cGUuT1I7IH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29uZGl0aW9uKCl7XHJcbiAgICB2YXIgdHJpZ2dlckNvbmRpdGlvbiA9IG5ldyBUcmlnZ2VyQ29uZGl0aW9uKCk7XHJcbiAgICB0cmlnZ2VyQ29uZGl0aW9uLkZpZWxkID0gbmV3IEJhc2VGaWVsZCgpO1xyXG4gICAgdHJpZ2dlckNvbmRpdGlvbi5yZWNvcmQgPSBuZXcgUmVjb3JkKCk7XHJcbiAgICB0cmlnZ2VyQ29uZGl0aW9uLmxvZ2ljb3BlcmF0b3IgPSBudWxsO1xyXG4gICAgdHJpZ2dlckNvbmRpdGlvbi5ib29sZWFubG9naWNvcGVyYXRvciA9IG51bGw7XHJcbiAgICB0aGlzLnRyaWdnZXIuY29uZGl0aW9ucy5wdXNoKHRyaWdnZXJDb25kaXRpb24pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQ29uZGl0aW9uKGVsZW1lbnQ6IFRyaWdnZXJDb25kaXRpb24pe1xyXG4gICAgdmFyIGluZGV4ID0gdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMuZmluZEluZGV4KHggPT4geC5DSUQgPT0gZWxlbWVudC5DSUQpO1xyXG4gICAgdGhpcy50cmlnZ2VyLmNvbmRpdGlvbnMuc3BsaWNlKGluZGV4LDEpO1xyXG4gIH1cclxuXHJcbiAgb25GaWVsZFR5cGVDaGFuZ2UoZXY6IEJhc2VGaWVsZCwgY29uZGl0aW9uOiBUcmlnZ2VyQ29uZGl0aW9uKXtcclxuICAgIGNvbmRpdGlvbi5GaWVsZCA9IGV2O1xyXG4gICAgY29uZGl0aW9uLnJlY29yZFtldi5OYW1lXSA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICBzYXZlT3JFeGl0Rm9ybShleGl0OiBib29sZWFuKSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdhZGQtZm9ybS1yZWNvcmQgc2F2ZVJlY29yZEV2ZW50JylcclxuICAgIGlmIChleGl0KSB7XHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkLmVtaXQobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZm9yRWFjaCgoZm9ybXVsYUZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRyaWdnZXIuZm9ybXVsYXMgPT0gXCJ1bmRlZmluZWRcIil7IHRoaXMudHJpZ2dlci5mb3JtdWxhcyA9IHt9OyB9XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyLmZvcm11bGFzW2Zvcm11bGFGaWVsZC5rZXldID0gZm9ybXVsYUZpZWxkLnZhbHVlO1xyXG4gICAgICAgIHRoaXMudHJpZ2dlci5leGVjdXRpb24gPSB0aGlzLnNlbGVjdGVkRm9ybXVsYS5rZXk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQuZW1pdCh0aGlzLnRyaWdnZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VGb3JtdWxhKGZvcm11bGE6IGFueSl7XHJcblxyXG4gICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybXVsYXNbZm9ybXVsYS5rZXldKS5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlLnB1c2goe1wia2V5XCI6IHJlc30pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmVcIiwgdGhpcy5mb3JtdWxhRmllbGRzU3RydWN0dXJlKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybXVsYUZpZWxkQ2hhbmdlKGZvcm11bGFGaWVsZDogYW55KXtcclxuICB9XHJcblxyXG4gIG9wZW5Gb3JtdWxhRGlhbG9nKGZvcm11bGFGaWVsZDogYW55KSB7XHJcbiAgICB0aGlzLmRpYWxvZ0Zvcm11bGFSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZm9ybXVsYUZpZWxkc1N0cnVjdHVyZS5maW5kKHggPT4geC5rZXkgPT0gZm9ybXVsYUZpZWxkLmtleSkudmFsdWUsXHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm0uRmllbGRzXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciBmb3JtdWxhVG9DaGFuZ2UgPSB0aGlzLmZvcm11bGFGaWVsZHNTdHJ1Y3R1cmUuZmluZCh4ID0+IHgua2V5ID09IGZvcm11bGFGaWVsZC5rZXkpO1xyXG4gICAgICBmb3JtdWxhVG9DaGFuZ2UudmFsdWUgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5vbkZvcm11bGFGaWVsZENoYW5nZShmb3JtdWxhVG9DaGFuZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCJcclxuPG1hdC1jYXJkIGNsYXNzPVwiYWRkLWZvcm0tZmllbGRcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgICB7e3RyaWdnZXIgIT0gbnVsbCA/IFwiTW9kaWZpY2FcIiA6IFwiQWdnaXVuZ2lcIn19IHRyaWdnZXJcclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcblxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBjb250YWluZXJDb250ZW50IHBhZGRlclwiICpuZ0lmPVwidHJpZ2dlci5jb25kaXRpb25zICE9IG51bGxcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5EZXNjcml6aW9uZSBUcmlnZ2VyPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgIGNsYXNzPVwicHQtMVwiPiBEZXNjcml6aW9uZSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJ0cmlnZ2VyLmRlc2NyaXB0aW9uXCIgW3JlYWRvbmx5XT1cImZhbHNlXCIgW3JlcXVpcmVkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5UaXBvIFRyaWdnZXI8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm11bGFLZXlzXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkRm9ybXVsYVwiXHJcbiAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2tleSdcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VGb3JtdWxhKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgZm9ybXVsYUZpZWxkIG9mIGZvcm11bGFGaWVsZHNTdHJ1Y3R1cmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3tmb3JtdWxhRmllbGQua2V5fX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC05XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCAgY2xhc3M9XCJwdC0xXCI+IHt7Zm9ybXVsYUZpZWxkLmtleX19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcmVhZG9ubHldPVwiZmFsc2VcIiBbcmVxdWlyZWRdPVwiZmFsc2VcIiAoY2xpY2spPVwib3BlbkZvcm11bGFEaWFsb2coZm9ybXVsYUZpZWxkKVwiIFsobmdNb2RlbCldPVwiZm9ybXVsYUZpZWxkLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Gb3JtdWxhRmllbGRDaGFuZ2UoZm9ybXVsYUZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiYWRkQ29uZGl0aW9uKClcIj5BZ2dpdW5naSBjb25kaXppb25lPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWRkZXJcIiAqbmdGb3I9XCJsZXQgY29uZGl0aW9uIG9mIHRyaWdnZXIuY29uZGl0aW9uc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJjb25kaXRpb24uRmllbGQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xXCI+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCI+PG1hdC1pY29uIChjbGljayk9XCJkZWxldGVDb25kaXRpb24oY29uZGl0aW9uKVwiPmRlbGV0ZTwvbWF0LWljb24+PC9idXR0b24+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm0uRmllbGRzXCIgWyhuZ01vZGVsSW5wdXQpXT1cImNvbmRpdGlvbi5GaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ05hbWUnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpZWxkVHlwZUNoYW5nZSgkZXZlbnQsIGNvbmRpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIiAqbmdJZj1cImNvbmRpdGlvbi5GaWVsZCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGR5bmFtaWMtbW9kdWxlLXRyaWdnZXItZml4ICNmaWVsZFRlbXBsYXRlIFtjb25kaXRpb25dPVwiY29uZGl0aW9uXCIgW2Zvcm1dPVwiZm9ybVwiICh0cmlnZ2VyQ2hhbmdlKT1cIm9uVHJpZ2dlckNoYW5nZSgkZXZlbnQsIGNvbmRpdGlvbilcIj48L2R5bmFtaWMtbW9kdWxlLXRyaWdnZXItZml4PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0yIG1iLTEgbWUtM1wiPiBcclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmVPckV4aXRGb3JtKHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICBBbm51bGxhXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVPckV4aXRGb3JtKGZhbHNlKVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNTYXZpbmdcIj5TYWx2YTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNTYXZpbmdcIj5TYWx2YXRhZ2dpbyBpbiBDb3Jzby4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuXHJcbjwvbWF0LWNhcmQ+XHJcblxyXG48IS0tRElBTE9HIFBFUiBTRU1QTElGSUNBUkUgTEEgU0NSSVRUVVJBIERFTCBDQU1QTyBGT1JNVUxBLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nRm9ybXVsYT5cclxuICAgIDxlcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG4gICAgPC9lcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==