@esfaenza/forms-and-validations 13.3.13 → 13.3.15
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.
- package/esm2020/lib/forms/form-input/form-input.component.mjs +6 -18
- package/fesm2015/esfaenza-forms-and-validations.mjs +2 -14
- package/fesm2015/esfaenza-forms-and-validations.mjs.map +1 -1
- package/fesm2020/esfaenza-forms-and-validations.mjs +2 -14
- package/fesm2020/esfaenza-forms-and-validations.mjs.map +1 -1
- package/lib/forms/form-input/form-input.component.d.ts +2 -6
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Angular
|
|
2
|
-
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Inject, Input, Optional, Output, Self
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Inject, Input, Optional, Output, Self } from "@angular/core";
|
|
3
3
|
import { NG_VALIDATORS } from "@angular/forms";
|
|
4
4
|
// Applicazione
|
|
5
5
|
import { BaseFormControl } from "../base-form-control";
|
|
@@ -7,9 +7,9 @@ import { ACO_CUSTOMKEY, FAV_DEBUG_MODE } from '../../tokens';
|
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/forms";
|
|
9
9
|
import * as i2 from "@esfaenza/access-control";
|
|
10
|
-
import * as i3 from "
|
|
10
|
+
import * as i3 from "../../validations/validation-input/validation-input.component";
|
|
11
11
|
import * as i4 from "@angular/common";
|
|
12
|
-
import * as i5 from "@angular/material/
|
|
12
|
+
import * as i5 from "@angular/material/form-field";
|
|
13
13
|
/** Semplice componente di Input testuale, con eventuale prefisso/suffisso */
|
|
14
14
|
export class FormInputComponent extends BaseFormControl {
|
|
15
15
|
/** @ignore Costruttore */
|
|
@@ -25,7 +25,6 @@ export class FormInputComponent extends BaseFormControl {
|
|
|
25
25
|
this.HasSuffix = false;
|
|
26
26
|
/** Indica la presenza o meno di un prefisso, si basa sulla "truthiness" della proiezione **prefix** */
|
|
27
27
|
this.HasPrefix = false;
|
|
28
|
-
this.ShowPassword = false;
|
|
29
28
|
}
|
|
30
29
|
/** @ignore */
|
|
31
30
|
writeValue(obj) {
|
|
@@ -39,17 +38,12 @@ export class FormInputComponent extends BaseFormControl {
|
|
|
39
38
|
}
|
|
40
39
|
/** @ignore */
|
|
41
40
|
onNotNullValueSet() { }
|
|
42
|
-
onShowHidePassword(event) {
|
|
43
|
-
this.Password = !this.Password;
|
|
44
|
-
this.ShowPassword = !this.ShowPassword;
|
|
45
|
-
event.preventDefault();
|
|
46
|
-
}
|
|
47
41
|
}
|
|
48
42
|
FormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FormInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i2.AccessControlService, optional: true }, { token: i2.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: FormInputComponent, selector: "form-input", inputs: { Password: "Password" }, outputs: { onSuffixAction: "onSuffixAction", onPrefixAction: "onPrefixAction" }, queries: [{ propertyName: "suffix", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "prefix", first: true, predicate: ["prefix"], descendants: true }],
|
|
43
|
+
FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: FormInputComponent, selector: "form-input", inputs: { Password: "Password" }, outputs: { onSuffixAction: "onSuffixAction", onPrefixAction: "onPrefixAction" }, queries: [{ propertyName: "suffix", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "prefix", first: true, predicate: ["prefix"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <val-input [FocusSubject]=\"FocusSubject\" [FieldAppearence]=\"FieldAppearence\"\r\n [noValidate]=\"!Validation\"\r\n [Frozen]=\"Frozen\"\r\n [submitted]=\"Form?.submitted\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\" \r\n [FloatingLabel]=\"FloatingLabel\"\r\n type=\"text\"\r\n [(ngModel)]=\"Model\"\r\n [id]=\"GeneratedName\"\r\n name=\"{{GeneratedName}}\"\r\n autocomplete=\"off\"\r\n #validationControl=\"ngModel\"\r\n (inputChange)=\"changed();\"\r\n (inputFocus)=\"focused($event);\"\r\n (inputFinalized)=\"finalized()\"\r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [Password]=\"Password\">\r\n <ng-container *ngIf=\"HasSuffix\">\r\n <ng-template #suffix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-suffix\"\r\n matSuffix (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-template #prefix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-prefix\"\r\n matPrefix (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </val-input>\r\n</ng-template>", components: [{ type: i3.ValidationInputComponent, selector: "val-input", inputs: ["Frozen", "Password", "showWarning", "warningTitle", "warningClass", "value"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.MatSuffix, selector: "[matSuffix]" }, { type: i5.MatPrefix, selector: "[matPrefix]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
50
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FormInputComponent, decorators: [{
|
|
51
45
|
type: Component,
|
|
52
|
-
args: [{ selector: "form-input", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <
|
|
46
|
+
args: [{ selector: "form-input", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <val-input [FocusSubject]=\"FocusSubject\" [FieldAppearence]=\"FieldAppearence\"\r\n [noValidate]=\"!Validation\"\r\n [Frozen]=\"Frozen\"\r\n [submitted]=\"Form?.submitted\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\" \r\n [FloatingLabel]=\"FloatingLabel\"\r\n type=\"text\"\r\n [(ngModel)]=\"Model\"\r\n [id]=\"GeneratedName\"\r\n name=\"{{GeneratedName}}\"\r\n autocomplete=\"off\"\r\n #validationControl=\"ngModel\"\r\n (inputChange)=\"changed();\"\r\n (inputFocus)=\"focused($event);\"\r\n (inputFinalized)=\"finalized()\"\r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [Password]=\"Password\">\r\n <ng-container *ngIf=\"HasSuffix\">\r\n <ng-template #suffix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-suffix\"\r\n matSuffix (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-template #prefix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-prefix\"\r\n matPrefix (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </val-input>\r\n</ng-template>" }]
|
|
53
47
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
|
|
54
48
|
type: Optional
|
|
55
49
|
}, {
|
|
@@ -85,11 +79,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
85
79
|
}], prefix: [{
|
|
86
80
|
type: ContentChild,
|
|
87
81
|
args: ["prefix", { static: false }]
|
|
88
|
-
}], htmlInput: [{
|
|
89
|
-
type: ViewChild,
|
|
90
|
-
args: ['htmlInput', { static: false }]
|
|
91
|
-
}], baseInput: [{
|
|
92
|
-
type: ViewChild,
|
|
93
|
-
args: ["baseInput", { static: false }]
|
|
94
82
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLWlucHV0L2Zvcm0taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUF3QixhQUFhLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFekYsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQUc3RCw2RUFBNkU7QUFNN0UsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQWU7SUF1Qm5ELDJCQUEyQjtJQUMzQixZQUFZLEdBQXNCLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQWMsRUFBd0IsRUFBYyxVQUE0QixFQUFxQyxhQUFxQixFQUFzQyxjQUF3QjtRQUM1VSxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUF2QnRGLG9EQUFvRDtRQUNwQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFDLHVFQUF1RTtRQUM3RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXhFLHVFQUF1RTtRQUM3RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBUXhFLHVHQUF1RztRQUNoRyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRWxDLHVHQUF1RztRQUNoRyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBMEIzQixpQkFBWSxHQUFZLEtBQUssQ0FBQztJQXJCckMsQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVLENBQUMsR0FBUTtRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1QyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLEtBQVcsQ0FBQztJQU90QixrQkFBa0IsQ0FBQyxLQUFVO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDOztnSEFwRFEsa0JBQWtCLHdHQXdCdUUsYUFBYSxpSUFBK0gsYUFBYSw2QkFBNkMsY0FBYztvR0F4QjdTLGtCQUFrQiw4aUJDbEIvQixza0tBeUVjOzRGRHZERCxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksWUFBWSxtQkFFTCx1QkFBdUIsQ0FBQyxNQUFNOzswQkEwQlYsUUFBUTs7MEJBQUksSUFBSTs4QkFBeUUsS0FBSzswQkFBcEQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBNEIsUUFBUTs7MEJBQThCLFFBQVE7OzBCQUFrQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUEwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7NENBckJ0UyxRQUFRO3NCQUF2QixLQUFLO2dCQUdJLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csY0FBYztzQkFBdkIsTUFBTTtnQkFHb0MsTUFBTTtzQkFBaEQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdFLE1BQU07c0JBQWhELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE2QkUsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wsIE5nTW9kZWwgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKiogU2VtcGxpY2UgY29tcG9uZW50ZSBkaSBJbnB1dCB0ZXN0dWFsZSwgY29uIGV2ZW50dWFsZSBwcmVmaXNzby9zdWZmaXNzbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0taW5wdXRcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0taW5wdXQuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBsJ2lucHV0IHJlbGF0aXZvIMOoIGRpIHRpcG8gUGFzc3dvcmQgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBQYXNzd29yZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBEZWxlZ2F0byBwZXIgbCdlc2VjdXppb25lIGRpIHVuJ29wZXJhemlvbmUgYWwgY2xpY2sgZGVsIHN1ZmZpc3NvICovXHJcbiAgICBAT3V0cHV0KCkgb25TdWZmaXhBY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKiogRGVsZWdhdG8gcGVyIGwnZXNlY3V6aW9uZSBkaSB1bidvcGVyYXppb25lIGFsIGNsaWNrIGRlbCBwcmVmaXNzbyAqL1xyXG4gICAgQE91dHB1dCgpIG9uUHJlZml4QWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqIEVsZW1lbnRvIGNoZSBjb250aWVuZSBsYSBwcm9pZXppb25lIGRlbGwnSFRNTCBkZWwgc3VmZmlzc28gKi9cclxuICAgIEBDb250ZW50Q2hpbGQoXCJzdWZmaXhcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHN1ZmZpeDtcclxuXHJcbiAgICAvKiogRWxlbWVudG8gY2hlIGNvbnRpZW5lIGxhIHByb2llemlvbmUgZGVsbCdIVE1MIGRlbCBwcmVmaXNzbyAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChcInByZWZpeFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJlZml4O1xyXG5cclxuICAgIC8qKiBJbmRpY2EgbGEgcHJlc2VuemEgbyBtZW5vIGRpIHVuIHN1ZmZpc3NvLCBzaSBiYXNhIHN1bGxhIFwidHJ1dGhpbmVzc1wiIGRlbGxhIHByb2llemlvbmUgKipzdWZmaXgqKiAqL1xyXG4gICAgcHVibGljIEhhc1N1ZmZpeDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2EgbGEgcHJlc2VuemEgbyBtZW5vIGRpIHVuIHByZWZpc3NvLCBzaSBiYXNhIHN1bGxhIFwidHJ1dGhpbmVzc1wiIGRlbGxhIHByb2llemlvbmUgKipwcmVmaXgqKiAqL1xyXG4gICAgcHVibGljIEhhc1ByZWZpeDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChGQVZfREVCVUdfTU9ERSkgRkFWX0RFQlVHX01PREUgOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IG9iaj8udG9TdHJpbmcoKSB8fCBcIlwiO1xyXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgICAgIHRoaXMuSGFzU3VmZml4ID0gISF0aGlzLnN1ZmZpeDtcclxuICAgICAgICB0aGlzLkhhc1ByZWZpeCA9ICEhdGhpcy5wcmVmaXg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgLy8gTW9kaWZpY2hlXHJcbiAgICBAVmlld0NoaWxkKCdodG1sSW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaHRtbElucHV0OiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZChcImJhc2VJbnB1dFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgYmFzZUlucHV0OiBOZ01vZGVsO1xyXG4gICAgXHJcbiAgICBwdWJsaWMgU2hvd1Bhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgb25TaG93SGlkZVBhc3N3b3JkKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLlBhc3N3b3JkID0gIXRoaXMuUGFzc3dvcmQ7IFxyXG4gICAgICAgIHRoaXMuU2hvd1Bhc3N3b3JkID0gIXRoaXMuU2hvd1Bhc3N3b3JkO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbn0iLCI8IS0tIFVndWFsZSBpbiB0dXR0aSBpIGNvbXBvbmVudGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIUZvcm1MYXlvdXQgJiYgKCFEaXNwbGF5TW9kZSB8fCAoRGlzcGxheUxheW91dCAhPSAnaGlkZGVuJyAmJiBEaXNwbGF5Q29uZGl0aW9uKSlcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiAhRGlzcGxheU1vZGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdmb3JtJ1wiPnt7IEV2YWx1YXRlZE1vZGVsIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIkRpc3BsYXlMYXlvdXQgPT0gJ2lubGluZSdcIiBjbGFzcz1cImFwcC1pbmxpbmVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCIgY2xhc3M9XCJ7e0Zvcm1Hcm91cENsYXNzICsgKExhc3QgPyAnIGFwcC1tYXJnaW4tYm90dG9tLTAgYXBwLW1hcmdpbi1yaWdodC0wICcgOiAnJykgKyAoRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBEaXNwbGF5TW9kZSA/ICgnIGFwcC1pbmxpbmUtYmxvY2sgJyArICghTGFzdCA/ICdhcHAtbWFyZ2luLXJpZ2h0LTEwJyA6ICcnKSkgOiAnIGZvcm0tZ3JvdXAgcm93Jyl9fVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLXt7KERpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgPyAnbm9uZSBhcHAtYm9sZCBhcHAtbWFyZ2luLWJvdHRvbS0wJyA6IExhYmVsQ29sV2lkdGgpICsgKERpc3BsYXlNb2RlID8gJyBhcHAtYm9sZCcgOiAnIG0tdC01JykgfX1cIj57e0xhYmVsfX17e1JlcXVpcmVkICYmICFEaXNwbGF5TW9kZSA/ICcqJyA6ICcnfX17e0xhYmVsID8gXCI6XCIgOiBcIlwifX08L2xhYmVsPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnICYmIElubGluZVNlcGFyYXRvciAhPSAnJ1wiPnt7SW5saW5lU2VwYXJhdG9yfX08L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7RGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1pbmxpbmUtYmxvY2snIDogSW5wdXRDb2xXaWR0aH19XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cIm5ldmVyXCIgYXBwZWFyYW5jZT1cInt7RmllbGRBcHBlYXJlbmNlfX1cIiBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoIG1hdC1uby1ib3JkZXItdG9wIG1hdC1oZWlnaHQtZml4ZWRcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIFtjbGFzcy5hcHAtbWFyZ2luLWxlZnQtMjVdPVwiSGFzUHJlZml4XCIgKm5nSWY9XCJQbGFjZWhvbGRlciAmJiBGbG9hdGluZ0xhYmVsXCI+e3tQbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPCEtLVByZWZpc3NvLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkhhc1ByZWZpeFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtYnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXQtYnV0dG9uLWJhc2UgbWF0LWljb24tYnV0dG9uLW92ZXJyaWRlIG1hdC1pY29uLWJ1dHRvbi1vdmVycmlkZS1wcmVmaXhcIlxyXG4gICAgICAgICAgICAgICAgbWF0UHJlZml4IChjbGljayk9XCJvblByZWZpeEFjdGlvbi5lbWl0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlZml4XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS1JbnB1dC0tPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAjYmFzZUlucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICNodG1sSW5wdXRcclxuICAgICAgICAgICAgICAgW3R5cGVdPVwiUGFzc3dvcmQgPyAncGFzc3dvcmQnIDogJ3RleHQnXCJcclxuICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJcIlxyXG4gICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICBuYW1lPVwiYmFzZS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgaWQ9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgIFtjbGFzcy5hcHAtbWFyZ2luLWxlZnQtMjVdPVwiSGFzUHJlZml4XCJcclxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1pbnB1dC13aXRoLXN1ZmZpeF09XCJIYXNTdWZmaXggfHwgUGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIk1vZGVsXCJcclxuICAgICAgICAgICAgICAgW2NsYXNzLmNoZWNraW5nLWZpZWxkXT1cIiFWYWxpZGF0aW9uXCJcclxuICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIkZyb3plblwiXHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJGbG9hdGluZ0xhYmVsID8gdW5kZWZpbmVkIDogUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAoZm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiXHJcbiAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZWQoKVwiXHJcbiAgICAgICAgICAgICAgIChrZXl1cCk9XCIoJGV2ZW50LmtleUNvZGUgPT0gMTMgfHwgJGV2ZW50LmtleUNvZGUgPT0gMjcpICYmIGZpbmFsaXplZCgpO1wiXHJcbiAgICAgICAgICAgICAgIChibHVyKT1cImZpbmFsaXplZCgpO1wiXHJcbiAgICAgICAgICAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSGFzU3VmZml4IHx8IFBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhUGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtYnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXQtYnV0dG9uLWJhc2UgbWF0LWljb24tYnV0dG9uLW92ZXJyaWRlIG1hdC1pY29uLWJ1dHRvbi1vdmVycmlkZS1zdWZmaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeCAoY2xpY2spPVwib25TdWZmaXhBY3Rpb24uZW1pdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWZmaXhcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPCEtLVBhc3N3b3JkLS0+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1pbnB1dC1zdWZmaXhcIiAqbmdJZj1cIlBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUGFzc3dvcmRcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJTaG93UGFzc3dvcmRcIiBjbGFzcz1cImZhIGZhLWV5ZS1zbGFzaCBhcHAtZnMtMTYgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwib25TaG93SGlkZVBhc3N3b3JkKCRldmVudClcIj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhU2hvd1Bhc3N3b3JkXCIgY2xhc3M9XCJmYSBmYS1leWUgYXBwLWZzLTE2IGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU2hvd0hpZGVQYXNzd29yZCgkZXZlbnQpXCI+PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLWlucHV0L2Zvcm0taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQXdCLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7QUFHN0QsNkVBQTZFO0FBTTdFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBdUJuRCwyQkFBMkI7SUFDM0IsWUFBWSxHQUFzQixFQUFzQixTQUFvQixFQUFxQyxXQUF1QixFQUFjLEVBQXdCLEVBQWMsVUFBNEIsRUFBcUMsYUFBcUIsRUFBc0MsY0FBd0I7UUFDNVUsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBdkJ0RixvREFBb0Q7UUFDcEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQyx1RUFBdUU7UUFDN0QsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4RSx1RUFBdUU7UUFDN0QsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVF4RSx1R0FBdUc7UUFDaEcsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUVsQyx1R0FBdUc7UUFDaEcsY0FBUyxHQUFZLEtBQUssQ0FBQztJQUtsQyxDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxHQUFRO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzVDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsS0FBVyxDQUFDOztnSEF6Q3BCLGtCQUFrQix3R0F3QnVFLGFBQWEsaUlBQStILGFBQWEsNkJBQTZDLGNBQWM7b0dBeEI3UyxrQkFBa0IsNldDbEIvQixzdElBNkRjOzRGRDNDRCxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksWUFBWSxtQkFFTCx1QkFBdUIsQ0FBQyxNQUFNOzswQkEwQlYsUUFBUTs7MEJBQUksSUFBSTs4QkFBeUUsS0FBSzswQkFBcEQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBNEIsUUFBUTs7MEJBQThCLFFBQVE7OzBCQUFrQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUEwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7NENBckJ0UyxRQUFRO3NCQUF2QixLQUFLO2dCQUdJLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csY0FBYztzQkFBdkIsTUFBTTtnQkFHb0MsTUFBTTtzQkFBaEQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdFLE1BQU07c0JBQWhELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQmFzZUZvcm1Db250cm9sIH0gZnJvbSBcIi4uL2Jhc2UtZm9ybS1jb250cm9sXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSwgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gJ0Blc2ZhZW56YS9hY2Nlc3MtY29udHJvbCc7XHJcbmltcG9ydCB7IEFDT19DVVNUT01LRVksIEZBVl9ERUJVR19NT0RFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqIFNlbXBsaWNlIGNvbXBvbmVudGUgZGkgSW5wdXQgdGVzdHVhbGUsIGNvbiBldmVudHVhbGUgcHJlZmlzc28vc3VmZmlzc28gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJmb3JtLWlucHV0XCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLWlucHV0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUlucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgbCdpbnB1dCByZWxhdGl2byDDqCBkaSB0aXBvIFBhc3N3b3JkICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgUGFzc3dvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogRGVsZWdhdG8gcGVyIGwnZXNlY3V6aW9uZSBkaSB1bidvcGVyYXppb25lIGFsIGNsaWNrIGRlbCBzdWZmaXNzbyAqL1xyXG4gICAgQE91dHB1dCgpIG9uU3VmZml4QWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqIERlbGVnYXRvIHBlciBsJ2VzZWN1emlvbmUgZGkgdW4nb3BlcmF6aW9uZSBhbCBjbGljayBkZWwgcHJlZmlzc28gKi9cclxuICAgIEBPdXRwdXQoKSBvblByZWZpeEFjdGlvbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8qKiBFbGVtZW50byBjaGUgY29udGllbmUgbGEgcHJvaWV6aW9uZSBkZWxsJ0hUTUwgZGVsIHN1ZmZpc3NvICovXHJcbiAgICBAQ29udGVudENoaWxkKFwic3VmZml4XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBzdWZmaXg7XHJcblxyXG4gICAgLyoqIEVsZW1lbnRvIGNoZSBjb250aWVuZSBsYSBwcm9pZXppb25lIGRlbGwnSFRNTCBkZWwgcHJlZmlzc28gKi9cclxuICAgIEBDb250ZW50Q2hpbGQoXCJwcmVmaXhcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHByZWZpeDtcclxuXHJcbiAgICAvKiogSW5kaWNhIGxhIHByZXNlbnphIG8gbWVubyBkaSB1biBzdWZmaXNzbywgc2kgYmFzYSBzdWxsYSBcInRydXRoaW5lc3NcIiBkZWxsYSBwcm9pZXppb25lICoqc3VmZml4KiogKi9cclxuICAgIHB1YmxpYyBIYXNTdWZmaXg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogSW5kaWNhIGxhIHByZXNlbnphIG8gbWVubyBkaSB1biBwcmVmaXNzbywgc2kgYmFzYSBzdWxsYSBcInRydXRoaW5lc3NcIiBkZWxsYSBwcm9pZXppb25lICoqcHJlZml4KiogKi9cclxuICAgIHB1YmxpYyBIYXNQcmVmaXg6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgX3ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIEBPcHRpb25hbCgpIGFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQE9wdGlvbmFsKCkgQXBwQ29udGV4dDogQ29tcG9uZW50Q29udGV4dCwgQE9wdGlvbmFsKCkgQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZOiBzdHJpbmcsIEBPcHRpb25hbCgpIEBJbmplY3QoRkFWX0RFQlVHX01PREUpIEZBVl9ERUJVR19NT0RFIDogYm9vbGVhbikge1xyXG4gICAgICAgIHN1cGVyKGNkciwgbmdDb250cm9sLCBfdmFsaWRhdG9ycywgYWMsIEFwcENvbnRleHQsIEFDT19DVVNUT01LRVksIEZBVl9ERUJVR19NT0RFKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSBvYmo/LnRvU3RyaW5nKCkgfHwgXCJcIjtcclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgICAgICB0aGlzLkhhc1N1ZmZpeCA9ICEhdGhpcy5zdWZmaXg7XHJcbiAgICAgICAgdGhpcy5IYXNQcmVmaXggPSAhIXRoaXMucHJlZml4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8dmFsLWlucHV0IFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIlxyXG4gICAgICAgICAgICAgICBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiXHJcbiAgICAgICAgICAgICAgIFtGcm96ZW5dPVwiRnJvemVuXCJcclxuICAgICAgICAgICAgICAgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIlxyXG4gICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgXHJcbiAgICAgICAgICAgICAgIFtGbG9hdGluZ0xhYmVsXT1cIkZsb2F0aW5nTGFiZWxcIlxyXG4gICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiTW9kZWxcIlxyXG4gICAgICAgICAgICAgICBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiXHJcbiAgICAgICAgICAgICAgIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICN2YWxpZGF0aW9uQ29udHJvbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiY2hhbmdlZCgpO1wiXHJcbiAgICAgICAgICAgICAgIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIlxyXG4gICAgICAgICAgICAgICAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIlxyXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICBbdmFsaWRhdGlvbkZhaWxlZF09XCJGYWlsZWRWYWxpZGF0aW9uTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgIFtQYXNzd29yZF09XCJQYXNzd29yZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJIYXNTdWZmaXhcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdWZmaXhfaW50ZXJuYWw+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1hdC1idXR0b24gbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZSBtYXQtaWNvbi1idXR0b24tb3ZlcnJpZGUgbWF0LWljb24tYnV0dG9uLW92ZXJyaWRlLXN1ZmZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeCAoY2xpY2spPVwib25TdWZmaXhBY3Rpb24uZW1pdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWZmaXhcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJIYXNQcmVmaXhcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwcmVmaXhfaW50ZXJuYWw+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1hdC1idXR0b24gbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZSBtYXQtaWNvbi1idXR0b24tb3ZlcnJpZGUgbWF0LWljb24tYnV0dG9uLW92ZXJyaWRlLXByZWZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFByZWZpeCAoY2xpY2spPVwib25QcmVmaXhBY3Rpb24uZW1pdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVmaXhcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC92YWwtaW5wdXQ+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -3065,7 +3065,6 @@ class FormInputComponent extends BaseFormControl {
|
|
|
3065
3065
|
this.HasSuffix = false;
|
|
3066
3066
|
/** Indica la presenza o meno di un prefisso, si basa sulla "truthiness" della proiezione **prefix** */
|
|
3067
3067
|
this.HasPrefix = false;
|
|
3068
|
-
this.ShowPassword = false;
|
|
3069
3068
|
}
|
|
3070
3069
|
/** @ignore */
|
|
3071
3070
|
writeValue(obj) {
|
|
@@ -3079,17 +3078,12 @@ class FormInputComponent extends BaseFormControl {
|
|
|
3079
3078
|
}
|
|
3080
3079
|
/** @ignore */
|
|
3081
3080
|
onNotNullValueSet() { }
|
|
3082
|
-
onShowHidePassword(event) {
|
|
3083
|
-
this.Password = !this.Password;
|
|
3084
|
-
this.ShowPassword = !this.ShowPassword;
|
|
3085
|
-
event.preventDefault();
|
|
3086
|
-
}
|
|
3087
3081
|
}
|
|
3088
3082
|
FormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FormInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2$1.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i3$2.AccessControlService, optional: true }, { token: i3$2.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3089
|
-
FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: FormInputComponent, selector: "form-input", inputs: { Password: "Password" }, outputs: { onSuffixAction: "onSuffixAction", onPrefixAction: "onPrefixAction" }, queries: [{ propertyName: "suffix", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "prefix", first: true, predicate: ["prefix"], descendants: true }],
|
|
3083
|
+
FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: FormInputComponent, selector: "form-input", inputs: { Password: "Password" }, outputs: { onSuffixAction: "onSuffixAction", onPrefixAction: "onPrefixAction" }, queries: [{ propertyName: "suffix", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "prefix", first: true, predicate: ["prefix"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <val-input [FocusSubject]=\"FocusSubject\" [FieldAppearence]=\"FieldAppearence\"\r\n [noValidate]=\"!Validation\"\r\n [Frozen]=\"Frozen\"\r\n [submitted]=\"Form?.submitted\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\" \r\n [FloatingLabel]=\"FloatingLabel\"\r\n type=\"text\"\r\n [(ngModel)]=\"Model\"\r\n [id]=\"GeneratedName\"\r\n name=\"{{GeneratedName}}\"\r\n autocomplete=\"off\"\r\n #validationControl=\"ngModel\"\r\n (inputChange)=\"changed();\"\r\n (inputFocus)=\"focused($event);\"\r\n (inputFinalized)=\"finalized()\"\r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [Password]=\"Password\">\r\n <ng-container *ngIf=\"HasSuffix\">\r\n <ng-template #suffix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-suffix\"\r\n matSuffix (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-template #prefix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-prefix\"\r\n matPrefix (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </val-input>\r\n</ng-template>", components: [{ type: ValidationInputComponent, selector: "val-input", inputs: ["Frozen", "Password", "showWarning", "warningTitle", "warningClass", "value"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.MatSuffix, selector: "[matSuffix]" }, { type: i2.MatPrefix, selector: "[matPrefix]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3090
3084
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FormInputComponent, decorators: [{
|
|
3091
3085
|
type: Component,
|
|
3092
|
-
args: [{ selector: "form-input", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <
|
|
3086
|
+
args: [{ selector: "form-input", changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <val-input [FocusSubject]=\"FocusSubject\" [FieldAppearence]=\"FieldAppearence\"\r\n [noValidate]=\"!Validation\"\r\n [Frozen]=\"Frozen\"\r\n [submitted]=\"Form?.submitted\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\" \r\n [FloatingLabel]=\"FloatingLabel\"\r\n type=\"text\"\r\n [(ngModel)]=\"Model\"\r\n [id]=\"GeneratedName\"\r\n name=\"{{GeneratedName}}\"\r\n autocomplete=\"off\"\r\n #validationControl=\"ngModel\"\r\n (inputChange)=\"changed();\"\r\n (inputFocus)=\"focused($event);\"\r\n (inputFinalized)=\"finalized()\"\r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [Password]=\"Password\">\r\n <ng-container *ngIf=\"HasSuffix\">\r\n <ng-template #suffix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-suffix\"\r\n matSuffix (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-template #prefix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-prefix\"\r\n matPrefix (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </val-input>\r\n</ng-template>" }]
|
|
3093
3087
|
}], ctorParameters: function () {
|
|
3094
3088
|
return [{ type: i0.ChangeDetectorRef }, { type: i2$1.NgControl, decorators: [{
|
|
3095
3089
|
type: Optional
|
|
@@ -3127,12 +3121,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
3127
3121
|
}], prefix: [{
|
|
3128
3122
|
type: ContentChild,
|
|
3129
3123
|
args: ["prefix", { static: false }]
|
|
3130
|
-
}], htmlInput: [{
|
|
3131
|
-
type: ViewChild,
|
|
3132
|
-
args: ['htmlInput', { static: false }]
|
|
3133
|
-
}], baseInput: [{
|
|
3134
|
-
type: ViewChild,
|
|
3135
|
-
args: ["baseInput", { static: false }]
|
|
3136
3124
|
}] } });
|
|
3137
3125
|
|
|
3138
3126
|
/**
|