ngx-iso-form 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Models/Schema.mjs +1 -1
- package/esm2022/lib/ngx-iso-form.component.mjs +11 -5
- package/esm2022/lib/ngx-iso-form.module.mjs +7 -5
- package/esm2022/lib/ngx-iso-form.service.mjs +55 -25
- package/esm2022/lib/shared/services/component.service.mjs +13 -8
- package/esm2022/lib/shared/services/control.service.mjs +11 -1
- package/esm2022/lib/shared/services/custom-date-adapter.mjs +34 -0
- package/fesm2022/ngx-iso-form.mjs +126 -46
- package/fesm2022/ngx-iso-form.mjs.map +1 -1
- package/lib/Models/Schema.d.ts +1 -2
- package/lib/ngx-iso-form.component.d.ts +1 -0
- package/lib/ngx-iso-form.service.d.ts +3 -1
- package/lib/shared/services/component.service.d.ts +3 -0
- package/lib/shared/services/control.service.d.ts +3 -0
- package/lib/shared/services/custom-date-adapter.d.ts +9 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWlzby1mb3JtL3NyYy9saWIvTW9kZWxzL1NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUVsZW1lbnQge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGRhdGFUeXBlOiBzdHJpbmc7XHJcbiAgICBtaW5PY2N1cnM6IHN0cmluZztcclxuICAgIG1heE9jY3Vyczogc3RyaW5nO1xyXG4gICAgbWluTGVuZ3RoOiBzdHJpbmc7XHJcbiAgICBtYXhMZW5ndGg6IHN0cmluZztcclxuICAgIHBhdHRlcm46IHN0cmluZztcclxuICAgIGZyYWN0aW9uRGlnaXRzOiBzdHJpbmc7XHJcbiAgICB0b3RhbERpZ2l0czogc3RyaW5nO1xyXG4gICAgbWluSW5jbHVzaXZlOiBzdHJpbmc7XHJcbiAgICBtYXhJbmNsdXNpdmU6IHN0cmluZztcclxuICAgIHZhbHVlczogc3RyaW5nW107XHJcbiAgICBpc0N1cnJlbmN5OiBib29sZWFuO1xyXG4gICAgeHBhdGg6IHN0cmluZztcclxuICAgIGVsZW1lbnRzOiBTY2hlbWFFbGVtZW50W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hTW9kZWwgZXh0ZW5kcyBTY2hlbWFFbGVtZW50e1xyXG4gICAgdW5pcXVlSWQ/OnN0cmluZztcclxuICAgIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgICB2YWx1ZT86c3RyaW5nO1xyXG4gICAgbXVsdGk/OnN0cmluZztcclxuICAgIGlzRm9ybUNvbnRyb2xzPzpib29sZWFuO1xyXG4gICAgY2hpbGRyZW4/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWlzby1mb3JtL3NyYy9saWIvTW9kZWxzL1NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUVsZW1lbnQge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGRhdGFUeXBlOiBzdHJpbmc7XHJcbiAgICBtaW5PY2N1cnM6IHN0cmluZztcclxuICAgIG1heE9jY3Vyczogc3RyaW5nO1xyXG4gICAgbWluTGVuZ3RoOiBzdHJpbmc7XHJcbiAgICBtYXhMZW5ndGg6IHN0cmluZztcclxuICAgIHBhdHRlcm46IHN0cmluZztcclxuICAgIGZyYWN0aW9uRGlnaXRzOiBzdHJpbmc7XHJcbiAgICB0b3RhbERpZ2l0czogc3RyaW5nO1xyXG4gICAgbWluSW5jbHVzaXZlOiBzdHJpbmc7XHJcbiAgICBtYXhJbmNsdXNpdmU6IHN0cmluZztcclxuICAgIHZhbHVlczogc3RyaW5nW107XHJcbiAgICBpc0N1cnJlbmN5OiBib29sZWFuO1xyXG4gICAgeHBhdGg6IHN0cmluZztcclxuICAgIGVsZW1lbnRzOiBTY2hlbWFFbGVtZW50W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hTW9kZWwgZXh0ZW5kcyBTY2hlbWFFbGVtZW50e1xyXG4gICAgdW5pcXVlSWQ/OnN0cmluZztcclxuICAgIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgICB2YWx1ZT86c3RyaW5nO1xyXG4gICAgbXVsdGk/OnN0cmluZztcclxuICAgIGlzRm9ybUNvbnRyb2xzPzpib29sZWFuO1xyXG4gICAgY2hpbGRyZW4/OiBTY2hlbWFNb2RlbFtdO1xyXG4gICAgY2hvaWNlS2V5Pzogc3RyaW5nO1xyXG59Il19
|
|
@@ -36,7 +36,9 @@ export class NgxIsoFormComponent {
|
|
|
36
36
|
this.service._formModel = [this.structuredClone(this.schema)];
|
|
37
37
|
this.service._formModel[0].elements = [];
|
|
38
38
|
let group = {};
|
|
39
|
-
|
|
39
|
+
const schemaElements = this.schema.elements.length > 0 ? this.structuredClone(this.schema.elements) : this.schema.elements;
|
|
40
|
+
const formElements = this.service._formModel[0].elements.length > 0 ? this.structuredClone(this.service._formModel[0].elements) : this.service._formModel[0].elements;
|
|
41
|
+
group[this.schema.id] = this.service.getFormGroupControls(schemaElements, formElements);
|
|
40
42
|
this._form = new FormGroup(group);
|
|
41
43
|
if (!this._isFormInitiate) {
|
|
42
44
|
this.initiateFormModel();
|
|
@@ -48,7 +50,6 @@ export class NgxIsoFormComponent {
|
|
|
48
50
|
cloneData = structuredClone(data);
|
|
49
51
|
}
|
|
50
52
|
catch (e) {
|
|
51
|
-
debugger;
|
|
52
53
|
cloneData = JSON.parse(JSON.stringify(data));
|
|
53
54
|
}
|
|
54
55
|
return cloneData;
|
|
@@ -168,12 +169,17 @@ export class NgxIsoFormComponent {
|
|
|
168
169
|
debugger;
|
|
169
170
|
return this.service.getFormControl('');
|
|
170
171
|
}
|
|
172
|
+
getChoiceFormControl(choiceKey) {
|
|
173
|
+
const formControl = this.service.getFormControl('');
|
|
174
|
+
formControl.setValue(choiceKey);
|
|
175
|
+
return formControl;
|
|
176
|
+
}
|
|
171
177
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoFormComponent, deps: [{ token: i1.NgxIsoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
172
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: NgxIsoFormComponent, selector: "ngx-iso-form", inputs: { form: "form", schema: "schema" }, usesOnChanges: true, ngImport: i0, template: "<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs)\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"node.
|
|
178
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: NgxIsoFormComponent, selector: "ngx-iso-form", inputs: { form: "form", schema: "schema" }, usesOnChanges: true, ngImport: i0, template: "<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs)\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"getChoiceFormControl(node.choiceKey)\">\r\n <mat-option *ngFor=\"let item of node.elements\" [value]=\"item.id\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"!isEmpty(formElement)\">\r\n <ng-template *ngFor=\"let model of node.elements; let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(formElement,model),\r\n parentFormElement: formElement\r\n }\">\r\n </ng-template>\r\n </ng-container>\r\n <div *ngIf=\"node.elements.length === 0\">\r\n <ngx-iso-control *ngIf=\"!node.hidden\" [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <ng-container *ngIf=\"!node.elements.length && !node.hidden\">\r\n <div *ngIf=\"maxOccurs(node.maxOccurs)\" class=\"form-add-section\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addNewControl($event, node,parentNode,parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeNewControl($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </div>\r\n <ngx-iso-control [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n <ng-container *ngFor=\"let model of getFormModel; let i = index\">\r\n <ng-container *ngIf=\"isArray(model);then formArray else formObject\">\r\n </ng-container>\r\n <ng-template #formArray>\r\n <ng-template *ngFor=\"let key of model;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: key,\r\n formElement: getElement(_form,key),\r\n parentFormElement: _form,\r\n index:i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #formObject>\r\n <ng-template [ngTemplateOutlet]=\"nodeTemplateRef\" [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(_form,model),\r\n parentFormElement: _form,\r\n index: i,\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [":host .mat-expansion-panel-header-description{justify-content:space-between;align-items:center}:host .mat-expansion-panel{width:100%;margin:5px 0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.NgxIsoControlComponent, selector: "ngx-iso-control", inputs: ["formControl", "control"] }, { kind: "pipe", type: i11.IsoTranslatePipe, name: "trans" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
173
179
|
}
|
|
174
180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoFormComponent, decorators: [{
|
|
175
181
|
type: Component,
|
|
176
|
-
args: [{ selector: 'ngx-iso-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs)\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"node.
|
|
182
|
+
args: [{ selector: 'ngx-iso-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs)\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"getChoiceFormControl(node.choiceKey)\">\r\n <mat-option *ngFor=\"let item of node.elements\" [value]=\"item.id\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"!isEmpty(formElement)\">\r\n <ng-template *ngFor=\"let model of node.elements; let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(formElement,model),\r\n parentFormElement: formElement\r\n }\">\r\n </ng-template>\r\n </ng-container>\r\n <div *ngIf=\"node.elements.length === 0\">\r\n <ngx-iso-control *ngIf=\"!node.hidden\" [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <ng-container *ngIf=\"!node.elements.length && !node.hidden\">\r\n <div *ngIf=\"maxOccurs(node.maxOccurs)\" class=\"form-add-section\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addNewControl($event, node,parentNode,parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeNewControl($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </div>\r\n <ngx-iso-control [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n <ng-container *ngFor=\"let model of getFormModel; let i = index\">\r\n <ng-container *ngIf=\"isArray(model);then formArray else formObject\">\r\n </ng-container>\r\n <ng-template #formArray>\r\n <ng-template *ngFor=\"let key of model;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: key,\r\n formElement: getElement(_form,key),\r\n parentFormElement: _form,\r\n index:i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #formObject>\r\n <ng-template [ngTemplateOutlet]=\"nodeTemplateRef\" [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(_form,model),\r\n parentFormElement: _form,\r\n index: i,\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [":host .mat-expansion-panel-header-description{justify-content:space-between;align-items:center}:host .mat-expansion-panel{width:100%;margin:5px 0}\n"] }]
|
|
177
183
|
}], ctorParameters: function () { return [{ type: i1.NgxIsoService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { form: [{
|
|
178
184
|
type: Input,
|
|
179
185
|
args: [{ required: true }]
|
|
@@ -181,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
181
187
|
type: Input,
|
|
182
188
|
args: [{ required: true }]
|
|
183
189
|
}] } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL25neC1pc28tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBWXhCLE1BQU0sT0FBTyxtQkFBbUI7SUFPOUIsWUFBb0IsT0FBc0IsRUFBVSxlQUFrQztRQUFsRSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQW1CO0lBQ3RGLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUN2RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ25ELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFjLFlBQVk7UUFDeEIsT0FBTyxJQUFJ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dGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUdyb3VwLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUFycmF5LFxuICBBYnN0cmFjdENvbnRyb2xcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBTY2hlbWFNb2RlbCB9IGZyb20gJy4vTW9kZWxzL1NjaGVtYSc7XG5pbXBvcnQgeyBOZ3hJc29TZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtaXNvLWZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBJc29Gb3JtIH0gZnJvbSAnLi9Nb2RlbHMvSXNvRm9ybSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1pc28tZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmd4SXNvRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGZvcm06IElzb0Zvcm07XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNjaGVtYTogU2NoZW1hTW9kZWw7XG4gIHByb3RlY3RlZCBfZm9ybTogRm9ybUdyb3VwO1xuICBwcml2YXRlIF9pc0Zvcm1Jbml0aWF0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfbmdNb2RlbDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogTmd4SXNvU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSAmJiBjaGFuZ2VzWydzY2hlbWEnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydmb3JtJ10gJiYgY2hhbmdlc1snZm9ybSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pbml0aWF0ZUZvcm1Nb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ2V0SXNvRm9ybSgpOiBhbnkge1xuICAgIGlmICh0aGlzLl9mb3JtKVxuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5zYW5pdGl6ZSh0aGlzLl9mb3JtLnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZ2V0Rm9ybU1vZGVsKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLl9mb3JtTW9kZWw7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYXRlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbCA9IFt0aGlzLnN0cnVjdHVyZWRDbG9uZSh0aGlzLnNjaGVtYSldO1xuICAgIHRoaXMuc2VydmljZS5fZm9ybU1vZGVsWzBdLmVsZW1lbnRzID0gW107XG4gICAgbGV0IGdyb3VwOiBhbnkgPSB7fTtcbiAgICBncm91cFt0aGlzLnNjaGVtYS5pZF0gPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwQ29udHJvbHModGhpcy5zY2hlbWEuZWxlbWVudHMsIHRoaXMuc2VydmljZS5fZm9ybU1vZGVsWzBdLmVsZW1lbnRzKTtcbiAgICB0aGlzLl9mb3JtID0gbmV3IEZvcm1Hcm91cChncm91cCk7XG4gICAgaWYgKCF0aGlzLl9pc0Zvcm1Jbml0aWF0ZSkge1xuICAgICAgdGhpcy5pbml0aWF0ZUZvcm1Nb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RydWN0dXJlZENsb25lKGRhdGE6IGFueSk6IGFueSB7XG4gICAgbGV0IGNsb25lRGF0YTtcbiAgICB0cnkge1xuICAgICAgY2xvbmVEYXRhID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgZGVidWdnZXJcbiAgICAgIGNsb25lRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmVEYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWF0ZUZvcm1Nb2RlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZm9ybSkge1xuICAgICAgdGhpcy5fbmdNb2RlbCA9IHRoaXMuZm9ybS5fbW9kZWw7XG4gICAgICB0aGlzLmZvcm0uZ2V0Rm9ybU1vZGVsID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJc29Gb3JtO1xuICAgICAgfTtcbiAgICAgIHRoaXMuX2lzRm9ybUluaXRpYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VydmljZS5pbml0Rm9ybU1vZGVsKHRoaXMuX25nTW9kZWwsIHRoaXMuX2Zvcm0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNob2ljZVNlbGVjdGlvbkNoYW5nZShpZDogc3RyaW5nLCBmb3JtRWxlbWVudDogYW55LCBub2RlczogU2NoZW1hTW9kZWwpOiB2b2lkIHtcbiAgICBub2Rlcy5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBTY2hlbWFNb2RlbCkgPT4ge1xuICAgICAgZWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgZm9ybUVsZW1lbnQucmVtb3ZlQ29udHJvbChlbGVtZW50LmlkKTtcbiAgICAgIGlmIChlbGVtZW50LmlkID09PSBpZCkge1xuICAgICAgICBlbGVtZW50LmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXBDb250cm9scyhlbGVtZW50LmVsZW1lbnRzLCBbXSwgMCwgdHJ1ZSk7XG4gICAgICAgICAgZm9ybUVsZW1lbnQuYWRkQ29udHJvbChlbGVtZW50LmlkLCBncm91cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuc2VydmljZS5nZXRGb3JtQ29udHJvbCgnJyk7XG4gICAgICAgICAgZm9ybUVsZW1lbnQuYWRkQ29udHJvbChlbGVtZW50LmlkLCBjb250cm9sKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF4T2NjdXJzKG1heE9jY3Vyczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1heE9jY3VycyAhPT0gbnVsbCAmJiBtYXhPY2N1cnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlcnZpY2UubWF4T2NjdXJzKG1heE9jY3Vycyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZXhwYW5kKG1pbk9jY3Vyczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1pbk9jY3VycyAhPT0gbnVsbCAmJiBtaW5PY2N1cnMgIT09IHVuZGVmaW5lZCAmJiBwYXJzZUludChtaW5PY2N1cnMsIDEwKSA+IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkU2VjdGlvbigkZXZlbnQ6IEV2ZW50LCBub2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Tm9kZTogU2NoZW1hTW9kZWwsIHBhcmVudEZvcm1FbGU6IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBjb250cm9sOiBGb3JtQXJyYXkgPSBwYXJlbnRGb3JtRWxlLmdldChub2RlLmlkKSBhcyBGb3JtQXJyYXk7XG4gICAgaWYgKG5vZGUubWF4T2NjdXJzICYmIHBhcnNlSW50KG5vZGUubWF4T2NjdXJzLCAxMCkgPD0gcGFyZW50Tm9kZS5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3RWxlID0gdGhpcy5zdHJ1Y3R1cmVkQ2xvbmUocGFyZW50Tm9kZS5lbGVtZW50c1swXSk7XG4gICAgY29uc3QgbmV3S2V5czogYW55ID0gW107XG4gICAgY29uc3QgZ3JvdXBDb250cm9scyA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXBDb250cm9scyhuZXdFbGUuZWxlbWVudHMsIG5ld0tleXMsIHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMSk7XG4gICAgcGFyZW50Tm9kZS5lbGVtZW50cy5wdXNoKG5ld0VsZSk7XG4gICAgY29udHJvbC5wdXNoKGdyb3VwQ29udHJvbHMpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVTZWN0aW9uKCRldmVudDogRXZlbnQsIHBhcmVudE5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnRGb3JtRWxlOiBGb3JtR3JvdXAsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY29udHJvbDogRm9ybUFycmF5ID0gcGFyZW50Rm9ybUVsZS5nZXQocGFyZW50Tm9kZS5pZCkgYXMgRm9ybUFycmF5O1xuICAgIHBhcmVudE5vZGUuZWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkTmV3Q29udHJvbCgkZXZlbnQ6IEV2ZW50LCBub2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Tm9kZTogU2NoZW1hTW9kZWwsIHBhcmVudEZvcm1FbGU6IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAobm9kZS5tYXhPY2N1cnMgJiYgcGFyc2VJbnQobm9kZS5tYXhPY2N1cnMsIDEwKSA8PSBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250cm9sOiBGb3JtQXJyYXkgPSBwYXJlbnRGb3JtRWxlLmdldChub2RlLmlkKSBhcyBGb3JtQXJyYXk7XG4gICAgY29uc3QgbmV3Q29udHJvbCA9IHRoaXMuc2VydmljZS5nZXRGb3JtQ29udHJvbCgnJyk7XG4gICAgY29uc3QgbmV3RWxlID0gdGhpcy5zdHJ1Y3R1cmVkQ2xvbmUocGFyZW50Tm9kZS5lbGVtZW50c1twYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDFdKTtcbiAgICBjb250cm9sLnB1c2gobmV3Q29udHJvbCk7XG4gICAgcGFyZW50Tm9kZS5lbGVtZW50cy5wdXNoKG5ld0VsZSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZU5ld0NvbnRyb2woJGV2ZW50OiBFdmVudCwgcGFyZW50Tm9kZTogU2NoZW1hTW9kZWwsIHBhcmVudEZvcm1FbGU6IEZvcm1Hcm91cCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBjb250cm9sOiBGb3JtQXJyYXkgPSBwYXJlbnRGb3JtRWxlLmdldChwYXJlbnROb2RlLmlkKSBhcyBGb3JtQXJyYXk7XG4gICAgcGFyZW50Tm9kZS5lbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGNvbnRyb2wucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0FycmF5KG15S2V5OiBPYmplY3QgfCBBcnJheTxhbnk+KTogYm9vbGVhbiB7XG4gICAgaWYgKG15S2V5IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNFbXB0eShmb3JtRWxlbWVudDogRm9ybUdyb3VwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGZvcm1FbGVtZW50LmNvbnRyb2xzKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RWxlbWVudChmb3JtRWxlbWVudDogRm9ybUdyb3VwLCBlbGVtZW50OiBhbnkpOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZWxlbWVudC5oaWRkZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IF9lbGVtZW50O1xuICAgIGlmIChlbGVtZW50Lm11bHRpKSB7XG4gICAgICBfZWxlbWVudCA9IGVsZW1lbnQuZWxlbWVudHNbZWxlbWVudC5lbGVtZW50cy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgX2VsZW1lbnQgPSBlbGVtZW50O1xuICAgIH1cblxuICAgIGxldCBmb3JtQ29udHJvbCA9IGZvcm1FbGVtZW50LmNvbnRyb2xzW19lbGVtZW50LmlkXTtcbiAgICBpZiAoIWZvcm1Db250cm9sKSB7XG4gICAgICBmb3JtQ29udHJvbCA9IChmb3JtRWxlbWVudCBhcyBhbnkpW19lbGVtZW50LmlkXTtcbiAgICAgIGlmICghZm9ybUNvbnRyb2wpXG4gICAgICAgIHRocm93IGBGb3JtQ29udHJvbCBub3QgZm91bmQgJHtfZWxlbWVudC5pZH1gO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGZvcm1Db250cm9sLmNvbnRyb2xzLmZpbmQoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIEZvcm1Db250cm9sKVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbS5jb250cm9scykuZmluZCgoY3RybCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjdHJsLmluZGV4T2YoZWxlbWVudC5pZCkgPiAtMTtcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgaWYgKGZvcm1Hcm91cClcbiAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sLmF0KGZvcm1Db250cm9sLmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybUNvbnRyb2w7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Rm9ybUNvbnRyb2wobm9kZTogU2NoZW1hTW9kZWwpOiBGb3JtQ29udHJvbCB7XG4gICAgZGVidWdnZXJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEZvcm1Db250cm9sKCcnKTtcbiAgfVxufVxuIiwiPGZvcm0gKm5nSWY9XCJfZm9ybSAmJiBzY2hlbWFcIiBbZm9ybUdyb3VwXT1cIl9mb3JtXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9kZVRlbXBsYXRlUmVmIGxldC1ub2RlPVwibm9kZVwiIGxldC1mb3JtRWxlbWVudD1cImZvcm1FbGVtZW50XCIgbGV0LWluZGV4PVwiaW5kZXhcIlxyXG4gICAgICBsZXQtcGFyZW50Tm9kZT1cInBhcmVudE5vZGVcIiBsZXQtcGFyZW50Rm9ybUVsZW1lbnQ9XCJwYXJlbnRGb3JtRWxlbWVudFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5tdWx0aSB0aGVuIGFyciBlbHNlIG9ialwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Fycj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IG1vZGVsIG9mIG5vZGUuZWxlbWVudHM7bGV0IGkgPSBpbmRleFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgbm9kZTogbW9kZWwsXHJcbiAgICAgICAgICBmb3JtRWxlbWVudDogZm9ybUVsZW1lbnQsXHJcbiAgICAgICAgICBwYXJlbnRGb3JtRWxlbWVudDogcGFyZW50Rm9ybUVsZW1lbnQsXHJcbiAgICAgICAgICBwYXJlbnROb2RlOiBub2RlLFxyXG4gICAgICAgICAgaW5kZXg6IGlcclxuICAgICAgICB9XCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNvYmo+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUuZWxlbWVudHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8bWF0LWFjY29yZGlvbiBbZm9ybUdyb3VwXT1cImZvcm1FbGVtZW50XCIgKm5nSWY9XCIhbm9kZS5oaWRkZW5cIj5cclxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgbXVsdGkgW2V4cGFuZGVkXT1cImV4cGFuZChub2RlLm1pbk9jY3VycylcIiAjZXhwYW4+XHJcbiAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIHwgdHJhbnM6IG5vZGUuaWQgOiBub2RlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiAqbmdJZj1cIm1heE9jY3Vycyhub2RlLm1heE9jY3VycylcIj5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbmRleCA8IDFcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImFkZFNlY3Rpb24oJGV2ZW50LCBub2RlLHBhcmVudE5vZGUsIHBhcmVudEZvcm1FbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluZGV4ID4gMFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlU2VjdGlvbigkZXZlbnQscGFyZW50Tm9kZSxwYXJlbnRGb3JtRWxlbWVudCxpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbi5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibm9kZS5kYXRhVHlwZSA9PT0gJ2Nob2ljZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBub2RlLm5hbWUgfCB0cmFuczogbm9kZS5pZCA6IG5vZGUubmFtZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2hvaWNlU2VsZWN0aW9uQ2hhbmdlKCRldmVudC52YWx1ZSxmb3JtRWxlbWVudCwgbm9kZSlcIiBbZm9ybUNvbnRyb2xdPVwibm9kZS5jaG9pY2VGb3JtQ29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG5vZGUuZWxlbWVudHNcIiBbdmFsdWVdPVwiaXRlbS5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tpdGVtLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFbXB0eShmb3JtRWxlbWVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBub2RlLmVsZW1lbnRzOyBsZXQgaSA9IGluZGV4XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICBub2RlOiBtb2RlbCxcclxuICAgICAgICAgICAgZm9ybUVsZW1lbnQ6IGdldEVsZW1lbnQoZm9ybUVsZW1lbnQsbW9kZWwpLFxyXG4gICAgICAgICAgICBwYXJlbnRGb3JtRWxlbWVudDogZm9ybUVsZW1lbnRcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUuZWxlbWVudHMubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZ3gtaXNvLWNvbnRyb2wgKm5nSWY9XCIhbm9kZS5oaWRkZW5cIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUVsZW1lbnRcIiBbY29udHJvbF09XCJub2RlXCI+PC9uZ3gtaXNvLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9kZS5lbGVtZW50cy5sZW5ndGggJiYgIW5vZGUuaGlkZGVuXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWF4T2NjdXJzKG5vZGUubWF4T2NjdXJzKVwiIGNsYXNzPVwiZm9ybS1hZGQtc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluZGV4IDwgMVwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYWRkTmV3Q29udHJvbCgkZXZlbnQsIG5vZGUscGFyZW50Tm9kZSxwYXJlbnRGb3JtRWxlbWVudClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbmRleCA+IDBcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZU5ld0NvbnRyb2woJGV2ZW50LHBhcmVudE5vZGUscGFyZW50Rm9ybUVsZW1lbnQsaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPnJlbW92ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmd4LWlzby1jb250cm9sIFtmb3JtQ29udHJvbF09XCJmb3JtRWxlbWVudFwiIFtjb250cm9sXT1cIm5vZGVcIj48L25neC1pc28tY29udHJvbD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBnZXRGb3JtTW9kZWw7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJyYXkobW9kZWwpO3RoZW4gZm9ybUFycmF5IGVsc2UgZm9ybU9iamVjdFwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb3JtQXJyYXk+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0Zvcj1cImxldCBrZXkgb2YgbW9kZWw7bGV0IGkgPSBpbmRleFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgbm9kZToga2V5LFxyXG4gICAgICAgICAgZm9ybUVsZW1lbnQ6IGdldEVsZW1lbnQoX2Zvcm0sa2V5KSxcclxuICAgICAgICAgIHBhcmVudEZvcm1FbGVtZW50OiBfZm9ybSxcclxuICAgICAgICAgIGluZGV4OmlcclxuICAgICAgICB9XCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb3JtT2JqZWN0PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgbm9kZTogbW9kZWwsXHJcbiAgICAgICAgICBmb3JtRWxlbWVudDogZ2V0RWxlbWVudChfZm9ybSxtb2RlbCksXHJcbiAgICAgICAgICBwYXJlbnRGb3JtRWxlbWVudDogX2Zvcm0sXHJcbiAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICB9XCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+Il19
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL25neC1pc28tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBWXhCLE1BQU0sT0FBTyxtQkFBbUI7SUFPOUIsWUFBb0IsT0FBc0IsRUFBVSxlQUFrQztRQUFsRSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQW1CO0lBQ3RGLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUN2RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ25ELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFjLFlBQVk7UUFDeEIsT0FBTyxJQUFJ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Q0FBQyxJQUFpQjtRQUN4QyxRQUFRLENBQUE7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxTQUFnQjtRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7OEdBdExVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHFIQ3pCaEMsODNKQWlHTzs7MkZEeEVNLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU07b0lBR3BCLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLE1BQU07c0JBQWhDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtR3JvdXAsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQXJyYXksXG4gIEFic3RyYWN0Q29udHJvbFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFNjaGVtYU1vZGVsIH0gZnJvbSAnLi9Nb2RlbHMvU2NoZW1hJztcbmltcG9ydCB7IE5neElzb1NlcnZpY2UgfSBmcm9tICcuL25neC1pc28tZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IElzb0Zvcm0gfSBmcm9tICcuL01vZGVscy9Jc29Gb3JtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWlzby1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1pc28tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC1pc28tZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hJc29Gb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZm9ybTogSXNvRm9ybTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2NoZW1hOiBTY2hlbWFNb2RlbDtcbiAgcHJvdGVjdGVkIF9mb3JtOiBGb3JtR3JvdXA7XG4gIHByaXZhdGUgX2lzRm9ybUluaXRpYXRlOiBib29sZWFuO1xuICBwcml2YXRlIF9uZ01vZGVsOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBOZ3hJc29TZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3NjaGVtYSddICYmIGNoYW5nZXNbJ3NjaGVtYSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pbml0aWF0ZUZvcm0oKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2Zvcm0nXSAmJiBjaGFuZ2VzWydmb3JtJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmluaXRpYXRlRm9ybU1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBnZXRJc29Gb3JtKCk6IGFueSB7XG4gICAgaWYgKHRoaXMuX2Zvcm0pXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnNhbml0aXplKHRoaXMuX2Zvcm0udmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBnZXRGb3JtTW9kZWwoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhdGVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5fZm9ybU1vZGVsID0gW3RoaXMuc3RydWN0dXJlZENsb25lKHRoaXMuc2NoZW1hKV07XG4gICAgdGhpcy5zZXJ2aWNlLl9mb3JtTW9kZWxbMF0uZWxlbWVudHMgPSBbXTtcbiAgICBsZXQgZ3JvdXA6IGFueSA9IHt9O1xuICAgIGNvbnN0IHNjaGVtYUVsZW1lbnRzID0gIHRoaXMuc2NoZW1hLmVsZW1lbnRzLmxlbmd0aCA+IDAgPyB0aGlzLnN0cnVjdHVyZWRDbG9uZSh0aGlzLnNjaGVtYS5lbGVtZW50cykgOiB0aGlzLnNjaGVtYS5lbGVtZW50cztcbiAgICBjb25zdCBmb3JtRWxlbWVudHMgPSB0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbFswXS5lbGVtZW50cy5sZW5ndGggPiAwID8gdGhpcy5zdHJ1Y3R1cmVkQ2xvbmUodGhpcy5zZXJ2aWNlLl9mb3JtTW9kZWxbMF0uZWxlbWVudHMpIDogdGhpcy5zZXJ2aWNlLl9mb3JtTW9kZWxbMF0uZWxlbWVudHM7XG4gICAgZ3JvdXBbdGhpcy5zY2hlbWEuaWRdID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Hcm91cENvbnRyb2xzKHNjaGVtYUVsZW1lbnRzLCBmb3JtRWxlbWVudHMpO1xuICAgIHRoaXMuX2Zvcm0gPSBuZXcgRm9ybUdyb3VwKGdyb3VwKTtcbiAgICBpZiAoIXRoaXMuX2lzRm9ybUluaXRpYXRlKSB7XG4gICAgICB0aGlzLmluaXRpYXRlRm9ybU1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdHJ1Y3R1cmVkQ2xvbmUoZGF0YTogYW55KTogYW55IHtcbiAgICBsZXQgY2xvbmVEYXRhO1xuICAgIHRyeSB7XG4gICAgICBjbG9uZURhdGEgPSBzdHJ1Y3R1cmVkQ2xvbmUoZGF0YSk7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBjbG9uZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lRGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhdGVGb3JtTW9kZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Zvcm0pIHtcbiAgICAgIHRoaXMuX25nTW9kZWwgPSB0aGlzLmZvcm0uX21vZGVsO1xuICAgICAgdGhpcy5mb3JtLmdldEZvcm1Nb2RlbCA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXNvRm9ybTtcbiAgICAgIH07XG4gICAgICB0aGlzLl9pc0Zvcm1Jbml0aWF0ZSA9IHRydWU7XG4gICAgICB0aGlzLnNlcnZpY2UuaW5pdEZvcm1Nb2RlbCh0aGlzLl9uZ01vZGVsLCB0aGlzLl9mb3JtKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DaG9pY2VTZWxlY3Rpb25DaGFuZ2UoaWQ6IHN0cmluZywgZm9ybUVsZW1lbnQ6IGFueSwgbm9kZXM6IFNjaGVtYU1vZGVsKTogdm9pZCB7XG4gICAgbm9kZXMuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgIGVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIGZvcm1FbGVtZW50LnJlbW92ZUNvbnRyb2woZWxlbWVudC5pZCk7XG4gICAgICBpZiAoZWxlbWVudC5pZCA9PT0gaWQpIHtcbiAgICAgICAgZWxlbWVudC5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwQ29udHJvbHMoZWxlbWVudC5lbGVtZW50cywgW10sIDAsIHRydWUpO1xuICAgICAgICAgIGZvcm1FbGVtZW50LmFkZENvbnRyb2woZWxlbWVudC5pZCwgZ3JvdXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUNvbnRyb2woJycpO1xuICAgICAgICAgIGZvcm1FbGVtZW50LmFkZENvbnRyb2woZWxlbWVudC5pZCwgY29udHJvbCk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heE9jY3VycyhtYXhPY2N1cnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtYXhPY2N1cnMgIT09IG51bGwgJiYgbWF4T2NjdXJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZXJ2aWNlLm1heE9jY3VycyhtYXhPY2N1cnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4cGFuZChtaW5PY2N1cnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtaW5PY2N1cnMgIT09IG51bGwgJiYgbWluT2NjdXJzICE9PSB1bmRlZmluZWQgJiYgcGFyc2VJbnQobWluT2NjdXJzLCAxMCkgPiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZFNlY3Rpb24oJGV2ZW50OiBFdmVudCwgbm9kZTogU2NoZW1hTW9kZWwsIHBhcmVudE5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnRGb3JtRWxlOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY29udHJvbDogRm9ybUFycmF5ID0gcGFyZW50Rm9ybUVsZS5nZXQobm9kZS5pZCkgYXMgRm9ybUFycmF5O1xuICAgIGlmIChub2RlLm1heE9jY3VycyAmJiBwYXJzZUludChub2RlLm1heE9jY3VycywgMTApIDw9IHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0VsZSA9IHRoaXMuc3RydWN0dXJlZENsb25lKHBhcmVudE5vZGUuZWxlbWVudHNbMF0pO1xuICAgIGNvbnN0IG5ld0tleXM6IGFueSA9IFtdO1xuICAgIGNvbnN0IGdyb3VwQ29udHJvbHMgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwQ29udHJvbHMobmV3RWxlLmVsZW1lbnRzLCBuZXdLZXlzLCBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIHBhcmVudE5vZGUuZWxlbWVudHMucHVzaChuZXdFbGUpO1xuICAgIGNvbnRyb2wucHVzaChncm91cENvbnRyb2xzKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlU2VjdGlvbigkZXZlbnQ6IEV2ZW50LCBwYXJlbnROb2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Rm9ybUVsZTogRm9ybUdyb3VwLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1BcnJheSA9IHBhcmVudEZvcm1FbGUuZ2V0KHBhcmVudE5vZGUuaWQpIGFzIEZvcm1BcnJheTtcbiAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgY29udHJvbC5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZE5ld0NvbnRyb2woJGV2ZW50OiBFdmVudCwgbm9kZTogU2NoZW1hTW9kZWwsIHBhcmVudE5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnRGb3JtRWxlOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKG5vZGUubWF4T2NjdXJzICYmIHBhcnNlSW50KG5vZGUubWF4T2NjdXJzLCAxMCkgPD0gcGFyZW50Tm9kZS5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udHJvbDogRm9ybUFycmF5ID0gcGFyZW50Rm9ybUVsZS5nZXQobm9kZS5pZCkgYXMgRm9ybUFycmF5O1xuICAgIGNvbnN0IG5ld0NvbnRyb2wgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUNvbnRyb2woJycpO1xuICAgIGNvbnN0IG5ld0VsZSA9IHRoaXMuc3RydWN0dXJlZENsb25lKHBhcmVudE5vZGUuZWxlbWVudHNbcGFyZW50Tm9kZS5lbGVtZW50cy5sZW5ndGggLSAxXSk7XG4gICAgY29udHJvbC5wdXNoKG5ld0NvbnRyb2wpO1xuICAgIHBhcmVudE5vZGUuZWxlbWVudHMucHVzaChuZXdFbGUpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVOZXdDb250cm9sKCRldmVudDogRXZlbnQsIHBhcmVudE5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnRGb3JtRWxlOiBGb3JtR3JvdXAsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgY29udHJvbDogRm9ybUFycmF5ID0gcGFyZW50Rm9ybUVsZS5nZXQocGFyZW50Tm9kZS5pZCkgYXMgRm9ybUFycmF5O1xuICAgIHBhcmVudE5vZGUuZWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNBcnJheShteUtleTogT2JqZWN0IHwgQXJyYXk8YW55Pik6IGJvb2xlYW4ge1xuICAgIGlmIChteUtleSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRW1wdHkoZm9ybUVsZW1lbnQ6IEZvcm1Hcm91cCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhmb3JtRWxlbWVudC5jb250cm9scykubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVsZW1lbnQoZm9ybUVsZW1lbnQ6IEZvcm1Hcm91cCwgZWxlbWVudDogYW55KTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGVsZW1lbnQuaGlkZGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBfZWxlbWVudDtcbiAgICBpZiAoZWxlbWVudC5tdWx0aSkge1xuICAgICAgX2VsZW1lbnQgPSBlbGVtZW50LmVsZW1lbnRzW2VsZW1lbnQuZWxlbWVudHMubGVuZ3RoIC0gMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIF9lbGVtZW50ID0gZWxlbWVudDtcbiAgICB9XG5cbiAgICBsZXQgZm9ybUNvbnRyb2wgPSBmb3JtRWxlbWVudC5jb250cm9sc1tfZWxlbWVudC5pZF07XG4gICAgaWYgKCFmb3JtQ29udHJvbCkge1xuICAgICAgZm9ybUNvbnRyb2wgPSAoZm9ybUVsZW1lbnQgYXMgYW55KVtfZWxlbWVudC5pZF07XG4gICAgICBpZiAoIWZvcm1Db250cm9sKVxuICAgICAgICB0aHJvdyBgRm9ybUNvbnRyb2wgbm90IGZvdW5kICR7X2VsZW1lbnQuaWR9YDtcbiAgICB9XG4gICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSBmb3JtQ29udHJvbC5jb250cm9scy5maW5kKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGb3JtQ29udHJvbClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGl0ZW0uY29udHJvbHMpLmZpbmQoKGN0cmwpID0+IHtcbiAgICAgICAgICByZXR1cm4gY3RybC5pbmRleE9mKGVsZW1lbnQuaWQpID4gLTE7XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIGlmIChmb3JtR3JvdXApXG4gICAgICAgIHJldHVybiBmb3JtQ29udHJvbC5hdChmb3JtQ29udHJvbC5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1Db250cm9sO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZvcm1Db250cm9sKG5vZGU6IFNjaGVtYU1vZGVsKTogRm9ybUNvbnRyb2wge1xuICAgIGRlYnVnZ2VyXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRGb3JtQ29udHJvbCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q2hvaWNlRm9ybUNvbnRyb2woY2hvaWNlS2V5OnN0cmluZyl7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUNvbnRyb2woJycpO1xuICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGNob2ljZUtleSk7XG4gICAgcmV0dXJuIGZvcm1Db250cm9sO1xuICB9XG59XG4iLCI8Zm9ybSAqbmdJZj1cIl9mb3JtICYmIHNjaGVtYVwiIFtmb3JtR3JvdXBdPVwiX2Zvcm1cIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNub2RlVGVtcGxhdGVSZWYgbGV0LW5vZGU9XCJub2RlXCIgbGV0LWZvcm1FbGVtZW50PVwiZm9ybUVsZW1lbnRcIiBsZXQtaW5kZXg9XCJpbmRleFwiXHJcbiAgICAgIGxldC1wYXJlbnROb2RlPVwicGFyZW50Tm9kZVwiIGxldC1wYXJlbnRGb3JtRWxlbWVudD1cInBhcmVudEZvcm1FbGVtZW50XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlLm11bHRpIHRoZW4gYXJyIGVsc2Ugb2JqXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjYXJyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgbW9kZWwgb2Ygbm9kZS5lbGVtZW50cztsZXQgaSA9IGluZGV4XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICBub2RlOiBtb2RlbCxcclxuICAgICAgICAgIGZvcm1FbGVtZW50OiBmb3JtRWxlbWVudCxcclxuICAgICAgICAgIHBhcmVudEZvcm1FbGVtZW50OiBwYXJlbnRGb3JtRWxlbWVudCxcclxuICAgICAgICAgIHBhcmVudE5vZGU6IG5vZGUsXHJcbiAgICAgICAgICBpbmRleDogaVxyXG4gICAgICAgIH1cIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI29iaj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5lbGVtZW50cy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxtYXQtYWNjb3JkaW9uIFtmb3JtR3JvdXBdPVwiZm9ybUVsZW1lbnRcIiAqbmdJZj1cIiFub2RlLmhpZGRlblwiPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBtdWx0aSBbZXhwYW5kZWRdPVwiZXhwYW5kKG5vZGUubWluT2NjdXJzKVwiICNleHBhbj5cclxuICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICB7eyBub2RlLm5hbWUgfCB0cmFuczogbm9kZS5pZCA6IG5vZGUubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uICpuZ0lmPVwibWF4T2NjdXJzKG5vZGUubWF4T2NjdXJzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluZGV4IDwgMVwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYWRkU2VjdGlvbigkZXZlbnQsIG5vZGUscGFyZW50Tm9kZSwgcGFyZW50Rm9ybUVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5kZXggPiAwXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZW1vdmVTZWN0aW9uKCRldmVudCxwYXJlbnROb2RlLHBhcmVudEZvcm1FbGVtZW50LGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuLmV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJub2RlLmRhdGFUeXBlID09PSAnY2hvaWNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7IG5vZGUubmFtZSB8IHRyYW5zOiBub2RlLmlkIDogbm9kZS5uYW1lIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaG9pY2VTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50LnZhbHVlLGZvcm1FbGVtZW50LCBub2RlKVwiIFtmb3JtQ29udHJvbF09XCJnZXRDaG9pY2VGb3JtQ29udHJvbChub2RlLmNob2ljZUtleSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBub2RlLmVsZW1lbnRzXCIgW3ZhbHVlXT1cIml0ZW0uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRW1wdHkoZm9ybUVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgbW9kZWwgb2Ygbm9kZS5lbGVtZW50czsgbGV0IGkgPSBpbmRleFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgbm9kZTogbW9kZWwsXHJcbiAgICAgICAgICAgIGZvcm1FbGVtZW50OiBnZXRFbGVtZW50KGZvcm1FbGVtZW50LG1vZGVsKSxcclxuICAgICAgICAgICAgcGFyZW50Rm9ybUVsZW1lbnQ6IGZvcm1FbGVtZW50XHJcbiAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmVsZW1lbnRzLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmd4LWlzby1jb250cm9sICpuZ0lmPVwiIW5vZGUuaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImZvcm1FbGVtZW50XCIgW2NvbnRyb2xdPVwibm9kZVwiPjwvbmd4LWlzby1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5vZGUuZWxlbWVudHMubGVuZ3RoICYmICFub2RlLmhpZGRlblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm1heE9jY3Vycyhub2RlLm1heE9jY3VycylcIiBjbGFzcz1cImZvcm0tYWRkLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbmRleCA8IDFcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImFkZE5ld0NvbnRyb2woJGV2ZW50LCBub2RlLHBhcmVudE5vZGUscGFyZW50Rm9ybUVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5kZXggPiAwXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZW1vdmVOZXdDb250cm9sKCRldmVudCxwYXJlbnROb2RlLHBhcmVudEZvcm1FbGVtZW50LGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5neC1pc28tY29udHJvbCBbZm9ybUNvbnRyb2xdPVwiZm9ybUVsZW1lbnRcIiBbY29udHJvbF09XCJub2RlXCI+PC9uZ3gtaXNvLWNvbnRyb2w+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbW9kZWwgb2YgZ2V0Rm9ybU1vZGVsOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FycmF5KG1vZGVsKTt0aGVuIGZvcm1BcnJheSBlbHNlIGZvcm1PYmplY3RcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybUFycmF5PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQga2V5IG9mIG1vZGVsO2xldCBpID0gaW5kZXhcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgIG5vZGU6IGtleSxcclxuICAgICAgICAgIGZvcm1FbGVtZW50OiBnZXRFbGVtZW50KF9mb3JtLGtleSksXHJcbiAgICAgICAgICBwYXJlbnRGb3JtRWxlbWVudDogX2Zvcm0sXHJcbiAgICAgICAgICBpbmRleDppXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybU9iamVjdD5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgIG5vZGU6IG1vZGVsLFxyXG4gICAgICAgICAgZm9ybUVsZW1lbnQ6IGdldEVsZW1lbnQoX2Zvcm0sbW9kZWwpLFxyXG4gICAgICAgICAgcGFyZW50Rm9ybUVsZW1lbnQ6IF9mb3JtLFxyXG4gICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { BrowserModule } from '@angular/platform-browser';
|
|
|
4
4
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import { MatExpansionModule } from '@angular/material/expansion';
|
|
6
6
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
-
import { MatNativeDateModule } from '@angular/material/core';
|
|
7
|
+
import { DateAdapter, MAT_DATE_FORMATS, MatNativeDateModule } from '@angular/material/core';
|
|
8
8
|
import { MatIconModule } from '@angular/material/icon';
|
|
9
9
|
import { MatInputModule } from '@angular/material/input';
|
|
10
10
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -18,7 +18,7 @@ import { NgxDynamicComponent } from './shared/components/dynamic/ngx-dynamic.com
|
|
|
18
18
|
import { IsoTranslatePipe } from './shared/pipe/translate.pipe';
|
|
19
19
|
import { IsoErrorPipe } from './shared/pipe/error.pipe';
|
|
20
20
|
import { IsoGeneralPipe } from './shared/pipe/general.pipe';
|
|
21
|
-
import {
|
|
21
|
+
import { CUSTOM_DATE_FORMATS, CustomDateAdapter } from './shared/services/custom-date-adapter';
|
|
22
22
|
import * as i0 from "@angular/core";
|
|
23
23
|
// // AoT requires an exported function for factories
|
|
24
24
|
// export function HttpLoaderFactory(http: HttpClient) {
|
|
@@ -54,7 +54,8 @@ export class NgxIsoFormModule {
|
|
|
54
54
|
MatSelectModule,
|
|
55
55
|
MatIconModule], exports: [NgxIsoFormComponent] }); }
|
|
56
56
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoFormModule, providers: [
|
|
57
|
-
|
|
57
|
+
{ provide: DateAdapter, useClass: CustomDateAdapter },
|
|
58
|
+
{ provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }
|
|
58
59
|
], imports: [BrowserModule,
|
|
59
60
|
BrowserAnimationsModule,
|
|
60
61
|
TranslateModule,
|
|
@@ -105,11 +106,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
|
|
|
105
106
|
MatIconModule,
|
|
106
107
|
],
|
|
107
108
|
providers: [
|
|
108
|
-
|
|
109
|
+
{ provide: DateAdapter, useClass: CustomDateAdapter },
|
|
110
|
+
{ provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }
|
|
109
111
|
],
|
|
110
112
|
exports: [
|
|
111
113
|
NgxIsoFormComponent
|
|
112
114
|
]
|
|
113
115
|
}]
|
|
114
116
|
}] });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL25neC1pc28tZm9ybS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxVQUFVLEVBQ1YsY0FBYyxFQUNkLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQUcvRixxREFBcUQ7QUFDckQsd0RBQXdEO0FBQ3hELDBDQUEwQztBQUMxQyxJQUFJO0FBMkNKLE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQXZDekIsbUJBQW1CO1lBQ25CLHNCQUFzQjtZQUN0QixtQkFBbUI7WUFDbkIsdUJBQXVCO1lBQ3ZCLFdBQVc7WUFDWCxjQUFjO1lBQ2QsVUFBVTtZQUNWLGNBQWM7WUFDZCxZQUFZO1lBQ1osY0FBYztZQUNkLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixjQUFjLGFBR2QsYUFBYTtZQUNiLHVCQUF1QjtZQUN2QixlQUFlO1lBQ2YsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYSxhQU9iLG1CQUFtQjsrR0FHVixnQkFBZ0IsYUFSaEI7WUFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQ3JELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRTtTQUM3RCxZQWpCQyxhQUFhO1lBQ2IsdUJBQXVCO1lBQ3ZCLGVBQWU7WUFDZixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhOzsyRkFVSixnQkFBZ0I7a0JBekM1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTtxQkFDZDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTt3QkFDckQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO3FCQUM3RDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnNcIlxyXG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgTmd4SXNvQ29udHJvbENvbXBvbmVudCxcclxuICBJc29CYXNlQ29udHJvbENvbXBvbmVudCxcclxuICBJc29NYXRJbnB1dCxcclxuICBJc29NYXREYXRlLFxyXG4gIElzb01hdFRleHRhcmVhLFxyXG4gIElzb01hdFNlbGVjdCxcclxuICBJc29NYXRDaGVja2JveCxcclxuICBJc29NYXREYXRlVGltZSxcclxuICBJc29NYXRDdXJyZW5jeSxcclxufSBmcm9tICcuL2NvbXBvbmVudHMnO1xyXG5cclxuaW1wb3J0IHsgTmd4SXNvRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vbmd4LWlzby1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnREaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL2NvbXBvbmVudC1jb250ZW50LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE5neER5bmFtaWNDb21wb25lbnQgfSBmcm9tICcuL3NoYXJlZC9jb21wb25lbnRzL2R5bmFtaWMvbmd4LWR5bmFtaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSXNvVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4vc2hhcmVkL3BpcGUvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBJc29FcnJvclBpcGUgfSBmcm9tICcuL3NoYXJlZC9waXBlL2Vycm9yLnBpcGUnO1xyXG5pbXBvcnQgeyBJc29HZW5lcmFsUGlwZSB9IGZyb20gJy4vc2hhcmVkL3BpcGUvZ2VuZXJhbC5waXBlJztcclxuaW1wb3J0IHsgQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IENVU1RPTV9EQVRFX0ZPUk1BVFMsIEN1c3RvbURhdGVBZGFwdGVyIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvY3VzdG9tLWRhdGUtYWRhcHRlcic7XHJcblxyXG5cclxuLy8gLy8gQW9UIHJlcXVpcmVzIGFuIGV4cG9ydGVkIGZ1bmN0aW9uIGZvciBmYWN0b3JpZXNcclxuLy8gZXhwb3J0IGZ1bmN0aW9uIEh0dHBMb2FkZXJGYWN0b3J5KGh0dHA6IEh0dHBDbGllbnQpIHtcclxuLy8gICByZXR1cm4gbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIoaHR0cCk7XHJcbi8vIH1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBOZ3hJc29Gb3JtQ29tcG9uZW50LFxyXG4gICAgTmd4SXNvQ29udHJvbENvbXBvbmVudCxcclxuICAgIE5neER5bmFtaWNDb21wb25lbnQsXHJcbiAgICBJc29CYXNlQ29udHJvbENvbXBvbmVudCxcclxuICAgIElzb01hdElucHV0LFxyXG4gICAgSXNvTWF0VGV4dGFyZWEsXHJcbiAgICBJc29NYXREYXRlLFxyXG4gICAgSXNvTWF0RGF0ZVRpbWUsXHJcbiAgICBJc29NYXRTZWxlY3QsXHJcbiAgICBJc29NYXRDaGVja2JveCxcclxuICAgIElzb01hdEN1cnJlbmN5LFxyXG4gICAgQ29tcG9uZW50RGlyZWN0aXZlLFxyXG4gICAgSXNvVHJhbnNsYXRlUGlwZSxcclxuICAgIElzb0Vycm9yUGlwZSxcclxuICAgIElzb0dlbmVyYWxQaXBlXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXHJcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVBZGFwdGVyIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBDVVNUT01fREFURV9GT1JNQVRTIH1cclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIE5neElzb0Zvcm1Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hJc29Gb3JtTW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -2,29 +2,41 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "./shared/services/custom-date-adapter";
|
|
5
6
|
export class NgxIsoService {
|
|
6
|
-
constructor(fb) {
|
|
7
|
+
constructor(fb, dateService) {
|
|
7
8
|
this.fb = fb;
|
|
9
|
+
this.dateService = dateService;
|
|
8
10
|
this._formModel = [];
|
|
9
11
|
this.sanitize = (obj) => {
|
|
10
|
-
if (obj === null || obj ===
|
|
12
|
+
if (obj === null || obj === '') {
|
|
11
13
|
return null;
|
|
12
14
|
}
|
|
13
15
|
if (Array.isArray(obj)) {
|
|
14
16
|
const cleanedObj = [];
|
|
15
17
|
for (const index in obj) {
|
|
16
18
|
const cleanedValue = this.sanitize(obj[index]);
|
|
17
|
-
if (cleanedValue !== null &&
|
|
19
|
+
if (cleanedValue !== null &&
|
|
20
|
+
cleanedValue !== '' &&
|
|
21
|
+
Object.keys(cleanedValue).length > 0 &&
|
|
22
|
+
(!Array.isArray(cleanedValue) || cleanedValue.length > 0)) {
|
|
18
23
|
cleanedObj.push(cleanedValue);
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
26
|
return cleanedObj;
|
|
22
27
|
}
|
|
28
|
+
else if (typeof obj === 'object' && obj instanceof Date) {
|
|
29
|
+
const cleanedObj = this.dateService.format(obj, 'YYYY-MM-DD');
|
|
30
|
+
return cleanedObj;
|
|
31
|
+
}
|
|
23
32
|
else if (typeof obj === 'object') {
|
|
24
33
|
const cleanedObj = {};
|
|
25
34
|
for (const key in obj) {
|
|
26
35
|
const cleanedValue = this.sanitize(obj[key]);
|
|
27
|
-
if (cleanedValue !== null &&
|
|
36
|
+
if (cleanedValue !== null &&
|
|
37
|
+
cleanedValue !== '' &&
|
|
38
|
+
Object.keys(cleanedValue).length > 0 &&
|
|
39
|
+
(!Array.isArray(cleanedValue) || cleanedValue.length > 0)) {
|
|
28
40
|
cleanedObj[key] = cleanedValue;
|
|
29
41
|
}
|
|
30
42
|
}
|
|
@@ -64,14 +76,16 @@ export class NgxIsoService {
|
|
|
64
76
|
const formArray = form.get(key);
|
|
65
77
|
if (formArray && formArray.length !== item.length) {
|
|
66
78
|
const newEle = structuredClone(parentNode.elements[parentNode.elements.length - 1]);
|
|
67
|
-
if (!(newEle.maxOccurs &&
|
|
79
|
+
if (!(newEle.maxOccurs &&
|
|
80
|
+
parseInt(newEle.maxOccurs, 10) <= parentNode.elements.length)) {
|
|
68
81
|
const newKeys = [];
|
|
69
82
|
const groupControls = this.getFormGroupControls(newEle.elements, newKeys, parentNode.elements.length - 1);
|
|
70
83
|
parentNode.elements.push(newEle);
|
|
71
84
|
formArray.push(groupControls);
|
|
72
85
|
parentNode.elements.forEach((element) => {
|
|
73
|
-
if (!element.minOccurs ||
|
|
74
|
-
element.minOccurs
|
|
86
|
+
if (!element.minOccurs ||
|
|
87
|
+
parseInt(element.minOccurs, 10) === 0) {
|
|
88
|
+
element.minOccurs = '1';
|
|
75
89
|
}
|
|
76
90
|
});
|
|
77
91
|
}
|
|
@@ -89,14 +103,14 @@ export class NgxIsoService {
|
|
|
89
103
|
else if (typeof model[key] === 'object') {
|
|
90
104
|
const node = this.getFormModel(this._formModel[0], key);
|
|
91
105
|
if (node && (!node.minOccurs || parseInt(node.minOccurs, 10) === 0)) {
|
|
92
|
-
node.minOccurs =
|
|
106
|
+
node.minOccurs = '1';
|
|
93
107
|
}
|
|
94
108
|
const _form = form.get(key);
|
|
95
109
|
if (_form) {
|
|
96
110
|
if (node.dataType === 'choice') {
|
|
97
|
-
const
|
|
98
|
-
const choiceEle = node.elements.find((item) => item.id ===
|
|
99
|
-
node.
|
|
111
|
+
const choiceKey = Object.keys(model[key])[0];
|
|
112
|
+
const choiceEle = node.elements.find((item) => item.id === choiceKey);
|
|
113
|
+
node.choiceKey = choiceKey;
|
|
100
114
|
choiceEle.hidden = false;
|
|
101
115
|
const newNode = structuredClone(choiceEle);
|
|
102
116
|
if (newNode.elements.length) {
|
|
@@ -136,11 +150,16 @@ export class NgxIsoService {
|
|
|
136
150
|
if (item.elements.length > 0) {
|
|
137
151
|
let choice = item.dataType === 'choice';
|
|
138
152
|
if (choice) {
|
|
139
|
-
element.
|
|
153
|
+
element.choiceKey = '';
|
|
140
154
|
}
|
|
141
155
|
if (this.maxOccurs(item.maxOccurs)) {
|
|
142
156
|
element.uniqueId = `${element.id}_${index}`;
|
|
143
|
-
keys.push({
|
|
157
|
+
keys.push({
|
|
158
|
+
id: element.id,
|
|
159
|
+
multi: true,
|
|
160
|
+
xpath: element.xpath,
|
|
161
|
+
elements: [element],
|
|
162
|
+
});
|
|
144
163
|
const data = this.getFormGroupControls(item.elements, element.elements, index, choice);
|
|
145
164
|
controls = this.fb.array([]);
|
|
146
165
|
if (!choice) {
|
|
@@ -149,7 +168,12 @@ export class NgxIsoService {
|
|
|
149
168
|
control[id] = controls;
|
|
150
169
|
}
|
|
151
170
|
else if (item.multi && !item.isFormControls) {
|
|
152
|
-
keys.push({
|
|
171
|
+
keys.push({
|
|
172
|
+
id: element.id,
|
|
173
|
+
multi: true,
|
|
174
|
+
xpath: element.xpath,
|
|
175
|
+
elements: element.elements,
|
|
176
|
+
});
|
|
153
177
|
const data = this.getFormGroupControls(item.elements[item.elements.length - 1].elements, element.elements, index, choice);
|
|
154
178
|
controls = this.fb.array([]);
|
|
155
179
|
if (!choice) {
|
|
@@ -162,7 +186,7 @@ export class NgxIsoService {
|
|
|
162
186
|
item.elements.splice(1, item.elements.length - 1);
|
|
163
187
|
}
|
|
164
188
|
keys.push(item);
|
|
165
|
-
control[id] = this.fb.array([this.getFormControl(item.value ||
|
|
189
|
+
control[id] = this.fb.array([this.getFormControl(item.value || '')]);
|
|
166
190
|
}
|
|
167
191
|
else {
|
|
168
192
|
keys.push(element);
|
|
@@ -176,7 +200,13 @@ export class NgxIsoService {
|
|
|
176
200
|
}
|
|
177
201
|
}
|
|
178
202
|
else if (this.maxOccurs(item.maxOccurs)) {
|
|
179
|
-
keys.push({
|
|
203
|
+
keys.push({
|
|
204
|
+
id: element.id,
|
|
205
|
+
multi: true,
|
|
206
|
+
xpath: element.xpath,
|
|
207
|
+
elements: [element],
|
|
208
|
+
isFormControls: true,
|
|
209
|
+
});
|
|
180
210
|
control[id] = this.fb.array([this.getFormControl(item.value)]);
|
|
181
211
|
}
|
|
182
212
|
else if (item.isCurrency) {
|
|
@@ -187,14 +217,14 @@ export class NgxIsoService {
|
|
|
187
217
|
}
|
|
188
218
|
else {
|
|
189
219
|
keys.push(element);
|
|
190
|
-
control[id] = this.getFormControl(item.value ||
|
|
220
|
+
control[id] = this.getFormControl(item.value || '');
|
|
191
221
|
}
|
|
192
222
|
});
|
|
193
223
|
return new FormGroup(control);
|
|
194
224
|
}
|
|
195
225
|
getFormControl(values) {
|
|
196
|
-
return new FormControl(values ||
|
|
197
|
-
updateOn: 'blur'
|
|
226
|
+
return new FormControl(values || '', {
|
|
227
|
+
updateOn: 'blur',
|
|
198
228
|
});
|
|
199
229
|
}
|
|
200
230
|
getAmountCurrency(item) {
|
|
@@ -202,10 +232,10 @@ export class NgxIsoService {
|
|
|
202
232
|
const ccy = structuredClone(item);
|
|
203
233
|
const amt = structuredClone(item);
|
|
204
234
|
ccy.id = `${ccy.id}_ccy`;
|
|
205
|
-
ccy.name =
|
|
235
|
+
ccy.name = 'Ccy';
|
|
206
236
|
ccy.fractionDigits = '';
|
|
207
237
|
ccy.totalDigits = '';
|
|
208
|
-
ccy.maxLength =
|
|
238
|
+
ccy.maxLength = '3';
|
|
209
239
|
ccy.xpath = `${ccy.xpath}@ccy`;
|
|
210
240
|
ccy.isCurrency = false;
|
|
211
241
|
elements.push(ccy);
|
|
@@ -216,13 +246,13 @@ export class NgxIsoService {
|
|
|
216
246
|
elements.push(amt);
|
|
217
247
|
return elements;
|
|
218
248
|
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
249
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, deps: [{ token: i1.FormBuilder }, { token: i2.CustomDateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
220
250
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, providedIn: 'root' }); }
|
|
221
251
|
}
|
|
222
252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, decorators: [{
|
|
223
253
|
type: Injectable,
|
|
224
254
|
args: [{
|
|
225
|
-
providedIn: 'root'
|
|
255
|
+
providedIn: 'root',
|
|
226
256
|
}]
|
|
227
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; } });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7QUFNaEYsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFENUIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQXVKdkIsYUFBUSxHQUFHLENBQUMsR0FBUSxFQUFPLEVBQUU7WUFDbEMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLEVBQUU7b0JBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQy9DLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUNySixVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUMvQjtpQkFDRjtnQkFDRCxP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QUN6QixHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0E1TlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NoZW1hTW9kZWwgfSBmcm9tICcuL01vZGVscy9TY2hlbWEnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZ3hJc29TZXJ2aWNlIHtcbiAgcHVibGljIF9mb3JtTW9kZWw6IGFueVtdID0gW107XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7IH1cblxuICBwdWJsaWMgbWF4T2NjdXJzKG1heE9jY3Vyczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1heE9jY3VycyA9PT0gJ3VuYm91bmRlZCcgfHwgcGFyc2VJbnQobWF4T2NjdXJzLCAxMCkgPiAxO1xuICB9XG5cbiAgcHVibGljIGluaXRGb3JtTW9kZWwobW9kZWw6IGFueSwgZm9ybTogRm9ybUdyb3VwIHwgRm9ybUFycmF5KTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBtb2RlbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG1vZGVsKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1vZGVsW2tleV0pKSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuZ2V0Rm9ybU1vZGVsKHRoaXMuX2Zvcm1Nb2RlbFswXSwga2V5KTtcbiAgICAgICAgICBjb25zdCBpdGVtID0gbW9kZWxba2V5XTtcbiAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldChrZXkpIGFzIEZvcm1BcnJheTtcbiAgICAgICAgICBpZiAoZm9ybUFycmF5ICYmIGZvcm1BcnJheS5sZW5ndGggIT09IGl0ZW0ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdFbGUgPSBzdHJ1Y3R1cmVkQ2xvbmUocGFyZW50Tm9kZS5lbGVtZW50c1twYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgIGlmICghKG5ld0VsZS5tYXhPY2N1cnMgJiYgcGFyc2VJbnQobmV3RWxlLm1heE9jY3VycywgMTApIDw9IHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdLZXlzOiBhbnkgPSBbXTtcbiAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb250cm9scyA9IHRoaXMuZ2V0Rm9ybUdyb3VwQ29udHJvbHMobmV3RWxlLmVsZW1lbnRzLCBuZXdLZXlzLCBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICAgICAgICAgICAgZm9ybUFycmF5LnB1c2goZ3JvdXBDb250cm9scyk7XG4gICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQubWluT2NjdXJzIHx8IHBhcnNlSW50KGVsZW1lbnQubWluT2NjdXJzLCAxMCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluT2NjdXJzID0gXCIxXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IGZvcm0uZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoZm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZybUdyb3VwID0gKGZvcm1BcnJheSBhcyBGb3JtQXJyYXkpLmF0KGkpO1xuICAgICAgICAgICAgICBpZiAoZnJtR3JvdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwoaXRlbVtpXSwgZnJtR3JvdXAgYXMgRm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kZWxba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRGb3JtTW9kZWwodGhpcy5fZm9ybU1vZGVsWzBdLCBrZXkpO1xuICAgICAgICAgIGlmIChub2RlICYmICghbm9kZS5taW5PY2N1cnMgfHwgcGFyc2VJbnQobm9kZS5taW5PY2N1cnMsIDEwKSA9PT0gMCkpIHtcbiAgICAgICAgICAgIG5vZGUubWluT2NjdXJzID0gXCIxXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IF9mb3JtID0gZm9ybS5nZXQoa2V5KSBhcyBGb3JtR3JvdXBcbiAgICAgICAgICBpZiAoX2Zvcm0pIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRhdGFUeXBlID09PSAnY2hvaWNlJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY29uc3QgY2hvaWNrS2V5ID0gT2JqZWN0LmtleXMobW9kZWxba2V5XSlbMF07XG4gICAgICAgICAgICAgIGNvbnN0IGNob2ljZUVsZSA9IG5vZGUuZWxlbWVudHMuZmluZCgoaXRlbTogU2NoZW1hTW9kZWwpID0+IGl0ZW0uaWQgPT09IGNob2lja0tleSk7XG4gICAgICAgICAgICAgIG5vZGUuY2hvaWNlRm9ybUNvbnRyb2wuc2V0VmFsdWUoY2hvaWNrS2V5KTtcbiAgICAgICAgICAgICAgY2hvaWNlRWxlLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICBjb25zdCBuZXdOb2RlID0gc3RydWN0dXJlZENsb25lKGNob2ljZUVsZSk7XG4gICAgICAgICAgICAgIGlmIChuZXdOb2RlLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhuZXdOb2RlLmVsZW1lbnRzLCBbXSwgMCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgX2Zvcm0uYWRkQ29udHJvbChuZXdOb2RlLmlkLCBncm91cCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woJycpO1xuICAgICAgICAgICAgICAgIF9mb3JtLmFkZENvbnRyb2wobmV3Tm9kZS5pZCwgY29udHJvbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5pdEZvcm1Nb2RlbChtb2RlbFtrZXldLCBfZm9ybSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IF9mb3JtID0gZm9ybS5nZXQoa2V5KSBhcyBGb3JtQ29udHJvbDtcbiAgICAgICAgICBfZm9ybS5zZXRWYWx1ZShtb2RlbFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZnJtR3JvdXAgPSAoZm9ybSBhcyBGb3JtQXJyYXkpLmF0KGkpO1xuICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwobW9kZWxbaV0sIGZybUdyb3VwIGFzIEZvcm1Hcm91cCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZvcm1Hcm91cENvbnRyb2xzKGpzb246IFNjaGVtYU1vZGVsW10sIGtleXM6IGFueSwgaW5kZXg6IG51bWJlciA9IDAsIGNob2ljZUVsZTogYm9vbGVhbiA9IGZhbHNlKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgY29udHJvbDogYW55ID0ge307XG4gICAgbGV0IGNvbnRyb2xzOiBhbnk7XG4gICAgbGV0IHZhbHVlID0ge307XG5cbiAgICBqc29uLmZvckVhY2goKGl0ZW06IFNjaGVtYU1vZGVsKSA9PiB7XG4gICAgICBpdGVtLmhpZGRlbiA9IGNob2ljZUVsZTtcbiAgICAgIHZhbHVlID0gaXRlbS5lbGVtZW50cztcbiAgICAgIGNvbnN0IGlkID0gaXRlbS5pZFxuICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uaXRlbSwgZWxlbWVudHM6IFtdLCBpZCB9O1xuICAgICAgaWYgKGl0ZW0uZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgY2hvaWNlID0gaXRlbS5kYXRhVHlwZSA9PT0gJ2Nob2ljZSc7XG4gICAgICAgIGlmIChjaG9pY2UpIHtcbiAgICAgICAgICBlbGVtZW50LmNob2ljZUZvcm1Db250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWF4T2NjdXJzKGl0ZW0ubWF4T2NjdXJzKSkge1xuICAgICAgICAgIGVsZW1lbnQudW5pcXVlSWQgPSBgJHtlbGVtZW50LmlkfV8ke2luZGV4fWA7XG4gICAgICAgICAga2V5cy5wdXNoKHsgaWQ6IGVsZW1lbnQuaWQsIG11bHRpOiB0cnVlLCB4cGF0aDogZWxlbWVudC54cGF0aCwgZWxlbWVudHM6IFtlbGVtZW50XSB9KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhpdGVtLmVsZW1lbnRzLCBlbGVtZW50LmVsZW1lbnRzLCBpbmRleCwgY2hvaWNlKTtcbiAgICAgICAgICBjb250cm9scyA9IHRoaXMuZmIuYXJyYXkoW10pO1xuICAgICAgICAgIGlmICghY2hvaWNlKSB7XG4gICAgICAgICAgICBjb250cm9scy5wdXNoKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250cm9sW2lkXSA9IGNvbnRyb2xzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ubXVsdGkgJiYgIWl0ZW0uaXNGb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICBrZXlzLnB1c2goeyBpZDogZWxlbWVudC5pZCwgbXVsdGk6IHRydWUsIHhwYXRoOiBlbGVtZW50LnhwYXRoLCBlbGVtZW50czogZWxlbWVudC5lbGVtZW50cyB9KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhpdGVtLmVsZW1lbnRzW2l0ZW0uZWxlbWVudHMubGVuZ3RoIC0gMV0uZWxlbWVudHMsIGVsZW1lbnQuZWxlbWVudHMsIGluZGV4LCBjaG9pY2UpO1xuICAgICAgICAgIGNvbnRyb2xzID0gdGhpcy5mYi5hcnJheShbXSk7XG4gICAgICAgICAgaWYgKCFjaG9pY2UpIHtcbiAgICAgICAgICAgIGNvbnRyb2xzLnB1c2goZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRyb2xbaWRdID0gY29udHJvbHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbS5tdWx0aSAmJiBpdGVtLmlzRm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAgaWYgKGl0ZW0uZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaXRlbS5lbGVtZW50cy5zcGxpY2UoMSwgaXRlbS5lbGVtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAga2V5cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5mYi5hcnJheShbdGhpcy5nZXRGb3JtQ29udHJvbChpdGVtLnZhbHVlIHx8IFwiXCIpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAga2V5cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKGl0ZW0uZWxlbWVudHMsIGVsZW1lbnQuZWxlbWVudHMsIGluZGV4LCBjaG9pY2UpO1xuICAgICAgICAgIGlmICghY2hvaWNlKSB7XG4gICAgICAgICAgICBjb250cm9sW2lkXSA9IGRhdGE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMubWF4T2NjdXJzKGl0ZW0ubWF4T2NjdXJzKSkge1xuICAgICAgICBrZXlzLnB1c2goeyBpZDogZWxlbWVudC5pZCwgbXVsdGk6IHRydWUsIHhwYXRoOiBlbGVtZW50LnhwYXRoLCBlbGVtZW50czogW2VsZW1lbnRdLCBpc0Zvcm1Db250cm9sczogdHJ1ZSB9KTtcbiAgICAgICAgY29udHJvbFtpZF0gPSB0aGlzLmZiLmFycmF5KFt0aGlzLmdldEZvcm1Db250cm9sKGl0ZW0udmFsdWUpXSk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXNDdXJyZW5jeSkge1xuICAgICAgICBjb25zdCBfYW1vdW50Q3VycmVuY3kgPSB0aGlzLmdldEFtb3VudEN1cnJlbmN5KGl0ZW0pO1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKF9hbW91bnRDdXJyZW5jeSwgZWxlbWVudC5lbGVtZW50cywgMCwgZmFsc2UpO1xuICAgICAgICBjb250cm9sW2l0ZW0uaWRdID0gZGF0YTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5nZXRGb3JtQ29udHJvbChpdGVtLnZhbHVlIHx8IFwiXCIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoY29udHJvbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUNvbnRyb2wodmFsdWVzOiBhbnkpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbCh2YWx1ZXMgfHwgXCJcIiwge1xuICAgICAgdXBkYXRlT246ICdibHVyJ1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXplID0gKG9iajogYW55KTogYW55ID0+IHtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgY29uc3QgY2xlYW5lZE9iajogYW55ID0gW107XG4gICAgICBmb3IgKGNvbnN0IGluZGV4IGluIG9iaikge1xuICAgICAgICBjb25zdCBjbGVhbmVkVmFsdWUgPSB0aGlzLnNhbml0aXplKG9ialtpbmRleF0pO1xuICAgICAgICBpZiAoY2xlYW5lZFZhbHVlICE9PSBudWxsICYmIGNsZWFuZWRWYWx1ZSAhPT0gXCJcIiAmJiBPYmplY3Qua2V5cyhjbGVhbmVkVmFsdWUpLmxlbmd0aCA+IDAgJiYgKCFBcnJheS5pc0FycmF5KGNsZWFuZWRWYWx1ZSkgfHwgY2xlYW5lZFZhbHVlLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgY2xlYW5lZE9iai5wdXNoKGNsZWFuZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmo6IGFueSA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdGhpcy5zYW5pdGl6ZShvYmpba2V5XSk7XG4gICAgICAgIGlmIChjbGVhbmVkVmFsdWUgIT09IG51bGwgJiYgY2xlYW5lZFZhbHVlICE9PSBcIlwiICYmIE9iamVjdC5rZXlzKGNsZWFuZWRWYWx1ZSkubGVuZ3RoID4gMCAmJiAoIUFycmF5LmlzQXJyYXkoY2xlYW5lZFZhbHVlKSB8fCBjbGVhbmVkVmFsdWUubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICBjbGVhbmVkT2JqW2tleV0gPSBjbGVhbmVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1Nb2RlbCA9IChvYmplY3Q6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkgPT4ge1xuICAgIGlmIChvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3QuZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBvYmogPSB0aGlzLmdldEZvcm1Nb2RlbChvYmplY3QuZWxlbWVudHNbaV0sIGtleSk7XG4gICAgICAgICAgaWYgKG9iailcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEFtb3VudEN1cnJlbmN5KGl0ZW06IFNjaGVtYU1vZGVsKTogU2NoZW1hTW9kZWxbXSB7XG4gICAgY29uc3QgZWxlbWVudHM6IFNjaGVtYU1vZGVsW10gPSBbXTtcbiAgICBjb25zdCBjY3kgPSBzdHJ1Y3R1cmVkQ2xvbmUoaXRlbSk7XG4gICAgY29uc3QgYW10ID0gc3RydWN0dXJlZENsb25lKGl0ZW0pO1xuXG4gICAgY2N5LmlkID0gYCR7Y2N5LmlkfV9jY3lgO1xuICAgIGNjeS5uYW1lID0gXCJDY3lcIjtcbiAgICBjY3kuZnJhY3Rpb25EaWdpdHMgPSAnJztcbiAgICBjY3kudG90YWxEaWdpdHMgPSAnJztcbiAgICBjY3kubWF4TGVuZ3RoID0gXCIzXCJcbiAgICBjY3kueHBhdGggPSBgJHtjY3kueHBhdGh9QGNjeWA7XG4gICAgY2N5LmlzQ3VycmVuY3kgPSBmYWxzZTtcbiAgICBlbGVtZW50cy5wdXNoKGNjeSk7XG5cbiAgICBhbXQuaWQgPSBgJHthbXQuaWR9X2FtdGA7XG4gICAgYW10LnhwYXRoID0gYCR7YW10LnhwYXRofS9hbXRgO1xuICAgIGFtdC5pc0N1cnJlbmN5ID0gZmFsc2U7XG4gICAgYW10LnBhdHRlcm4gPSAnJztcbiAgICBlbGVtZW50cy5wdXNoKGFtdCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9XG59XG4iXX0=
|
|
257
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.CustomDateAdapter }]; } });
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7O0FBT2hGLE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQ1UsRUFBZSxFQUNmLFdBQThCO1FBRDlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFIakMsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQWlOdkIsYUFBUSxHQUFHLENBQUMsR0FBUSxFQUFPLEVBQUU7WUFDbEMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLEVBQUU7b0JBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQy9DLElBQ0UsWUFBWSxLQUFLLElBQUk7d0JBQ3JCLFlBQVksS0FBSyxFQUFFO3dCQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUNwQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUN6RDt3QkFDQSxVQUFVLENBQUMs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QUcsR0FBRyxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUM7UUFDL0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuQixHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUM7UUFDL0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzhHQWxTVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY2hlbWFNb2RlbCB9IGZyb20gJy4vTW9kZWxzL1NjaGVtYSc7XG5pbXBvcnQgeyBDdXN0b21EYXRlQWRhcHRlciB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL2N1c3RvbS1kYXRlLWFkYXB0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4SXNvU2VydmljZSB7XG4gIHB1YmxpYyBfZm9ybU1vZGVsOiBhbnlbXSA9IFtdO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGVTZXJ2aWNlOiBDdXN0b21EYXRlQWRhcHRlclxuICApIHt9XG5cbiAgcHVibGljIG1heE9jY3VycyhtYXhPY2N1cnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtYXhPY2N1cnMgPT09ICd1bmJvdW5kZWQnIHx8IHBhcnNlSW50KG1heE9jY3VycywgMTApID4gMTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0Rm9ybU1vZGVsKG1vZGVsOiBhbnksIGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgbW9kZWwgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBtb2RlbCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbFtrZXldKSkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmdldEZvcm1Nb2RlbCh0aGlzLl9mb3JtTW9kZWxbMF0sIGtleSk7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IG1vZGVsW2tleV07XG4gICAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gZm9ybS5nZXQoa2V5KSBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgaWYgKGZvcm1BcnJheSAmJiBmb3JtQXJyYXkubGVuZ3RoICE9PSBpdGVtLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmV3RWxlID0gc3RydWN0dXJlZENsb25lKFxuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzW3BhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgbmV3RWxlLm1heE9jY3VycyAmJlxuICAgICAgICAgICAgICAgIHBhcnNlSW50KG5ld0VsZS5tYXhPY2N1cnMsIDEwKSA8PSBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3S2V5czogYW55ID0gW107XG4gICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29udHJvbHMgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgICAgIG5ld0VsZS5lbGVtZW50cyxcbiAgICAgICAgICAgICAgICBuZXdLZXlzLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICAgICAgICAgICAgZm9ybUFycmF5LnB1c2goZ3JvdXBDb250cm9scyk7XG4gICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhZWxlbWVudC5taW5PY2N1cnMgfHxcbiAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGVsZW1lbnQubWluT2NjdXJzLCAxMCkgPT09IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluT2NjdXJzID0gJzEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldChrZXkpO1xuICAgICAgICAgICAgaWYgKGZvcm1BcnJheSkge1xuICAgICAgICAgICAgICBjb25zdCBmcm1Hcm91cCA9IChmb3JtQXJyYXkgYXMgRm9ybUFycmF5KS5hdChpKTtcbiAgICAgICAgICAgICAgaWYgKGZybUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Rm9ybU1vZGVsKGl0ZW1baV0sIGZybUdyb3VwIGFzIEZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vZGVsW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Rm9ybU1vZGVsKHRoaXMuX2Zvcm1Nb2RlbFswXSwga2V5KTtcbiAgICAgICAgICBpZiAobm9kZSAmJiAoIW5vZGUubWluT2NjdXJzIHx8IHBhcnNlSW50KG5vZGUubWluT2NjdXJzLCAxMCkgPT09IDApKSB7XG4gICAgICAgICAgICBub2RlLm1pbk9jY3VycyA9ICcxJztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgX2Zvcm0gPSBmb3JtLmdldChrZXkpIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgICBpZiAoX2Zvcm0pIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRhdGFUeXBlID09PSAnY2hvaWNlJykge1xuICAgICAgICAgICAgICBjb25zdCBjaG9pY2VLZXkgPSBPYmplY3Qua2V5cyhtb2RlbFtrZXldKVswXTtcbiAgICAgICAgICAgICAgY29uc3QgY2hvaWNlRWxlID0gbm9kZS5lbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBTY2hlbWFNb2RlbCkgPT4gaXRlbS5pZCA9PT0gY2hvaWNlS2V5XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIG5vZGUuY2hvaWNlS2V5ID0gY2hvaWNlS2V5O1xuICAgICAgICAgICAgICBjaG9pY2VFbGUuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld05vZGUgPSBzdHJ1Y3R1cmVkQ2xvbmUoY2hvaWNlRWxlKTtcbiAgICAgICAgICAgICAgaWYgKG5ld05vZGUuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgICAgICAgbmV3Tm9kZS5lbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIF9mb3JtLmFkZENvbnRyb2wobmV3Tm9kZS5pZCwgZ3JvdXApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCcnKTtcbiAgICAgICAgICAgICAgICBfZm9ybS5hZGRDb250cm9sKG5ld05vZGUuaWQsIGNvbnRyb2wpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwobW9kZWxba2V5XSwgX2Zvcm0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBfZm9ybSA9IGZvcm0uZ2V0KGtleSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICAgICAgX2Zvcm0uc2V0VmFsdWUobW9kZWxba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGZybUdyb3VwID0gKGZvcm0gYXMgRm9ybUFycmF5KS5hdChpKTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybU1vZGVsKG1vZGVsW2ldLCBmcm1Hcm91cCBhcyBGb3JtR3JvdXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICBqc29uOiBTY2hlbWFNb2RlbFtdLFxuICAgIGtleXM6IGFueSxcbiAgICBpbmRleDogbnVtYmVyID0gMCxcbiAgICBjaG9pY2VFbGU6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBGb3JtR3JvdXAge1xuICAgIGxldCBjb250cm9sOiBhbnkgPSB7fTtcbiAgICBsZXQgY29udHJvbHM6IGFueTtcbiAgICBsZXQgdmFsdWUgPSB7fTtcblxuICAgIGpzb24uZm9yRWFjaCgoaXRlbTogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgIGl0ZW0uaGlkZGVuID0gY2hvaWNlRWxlO1xuICAgICAgdmFsdWUgPSBpdGVtLmVsZW1lbnRzO1xuICAgICAgY29uc3QgaWQgPSBpdGVtLmlkO1xuICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uaXRlbSwgZWxlbWVudHM6IFtdLCBpZCB9O1xuICAgICAgaWYgKGl0ZW0uZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgY2hvaWNlID0gaXRlbS5kYXRhVHlwZSA9PT0gJ2Nob2ljZSc7XG4gICAgICAgIGlmIChjaG9pY2UpIHtcbiAgICAgICAgICBlbGVtZW50LmNob2ljZUtleSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1heE9jY3VycyhpdGVtLm1heE9jY3VycykpIHtcbiAgICAgICAgICBlbGVtZW50LnVuaXF1ZUlkID0gYCR7ZWxlbWVudC5pZH1fJHtpbmRleH1gO1xuICAgICAgICAgIGtleXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgeHBhdGg6IGVsZW1lbnQueHBhdGgsXG4gICAgICAgICAgICBlbGVtZW50czogW2VsZW1lbnRdLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgaXRlbS5lbGVtZW50cyxcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGNob2ljZVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29udHJvbHMgPSB0aGlzLmZiLmFycmF5KFtdKTtcbiAgICAgICAgICBpZiAoIWNob2ljZSkge1xuICAgICAgICAgICAgY29udHJvbHMucHVzaChkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udHJvbFtpZF0gPSBjb250cm9scztcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLm11bHRpICYmICFpdGVtLmlzRm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB4cGF0aDogZWxlbWVudC54cGF0aCxcbiAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgaXRlbS5lbGVtZW50c1tpdGVtLmVsZW1lbnRzLmxlbmd0aCAtIDFdLmVsZW1lbnRzLFxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50cyxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgY2hvaWNlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb250cm9scyA9IHRoaXMuZmIuYXJyYXkoW10pO1xuICAgICAgICAgIGlmICghY2hvaWNlKSB7XG4gICAgICAgICAgICBjb250cm9scy5wdXNoKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250cm9sW2lkXSA9IGNvbnRyb2xzO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubXVsdGkgJiYgaXRlbS5pc0Zvcm1Db250cm9scykge1xuICAgICAgICAgIGlmIChpdGVtLmVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGl0ZW0uZWxlbWVudHMuc3BsaWNlKDEsIGl0ZW0uZWxlbWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGtleXMucHVzaChpdGVtKTtcbiAgICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZmIuYXJyYXkoW3RoaXMuZ2V0Rm9ybUNvbnRyb2woaXRlbS52YWx1ZSB8fCAnJyldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0Rm9ybUdyb3VwQ29udHJvbHMoXG4gICAgICAgICAgICBpdGVtLmVsZW1lbnRzLFxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50cyxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgY2hvaWNlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWNob2ljZSkge1xuICAgICAgICAgICAgY29udHJvbFtpZF0gPSBkYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heE9jY3VycyhpdGVtLm1heE9jY3VycykpIHtcbiAgICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICB4cGF0aDogZWxlbWVudC54cGF0aCxcbiAgICAgICAgICBlbGVtZW50czogW2VsZW1lbnRdLFxuICAgICAgICAgIGlzRm9ybUNvbnRyb2xzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29udHJvbFtpZF0gPSB0aGlzLmZiLmFycmF5KFt0aGlzLmdldEZvcm1Db250cm9sKGl0ZW0udmFsdWUpXSk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXNDdXJyZW5jeSkge1xuICAgICAgICBjb25zdCBfYW1vdW50Q3VycmVuY3kgPSB0aGlzLmdldEFtb3VudEN1cnJlbmN5KGl0ZW0pO1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgIF9hbW91bnRDdXJyZW5jeSxcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgY29udHJvbFtpdGVtLmlkXSA9IGRhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5nZXRGb3JtQ29udHJvbChpdGVtLnZhbHVlIHx8ICcnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKGNvbnRyb2wpO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1Db250cm9sKHZhbHVlczogYW55KTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2wodmFsdWVzIHx8ICcnLCB7XG4gICAgICB1cGRhdGVPbjogJ2JsdXInLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXplID0gKG9iajogYW55KTogYW55ID0+IHtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmo6IGFueSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdGhpcy5zYW5pdGl6ZShvYmpbaW5kZXhdKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNsZWFuZWRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgIGNsZWFuZWRWYWx1ZSAhPT0gJycgJiZcbiAgICAgICAgICBPYmplY3Qua2V5cyhjbGVhbmVkVmFsdWUpLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAoIUFycmF5LmlzQXJyYXkoY2xlYW5lZFZhbHVlKSB8fCBjbGVhbmVkVmFsdWUubGVuZ3RoID4gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgY2xlYW5lZE9iai5wdXNoKGNsZWFuZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgY2xlYW5lZE9iaiA9IHRoaXMuZGF0ZVNlcnZpY2UuZm9ybWF0KG9iaiwgJ1lZWVktTU0tREQnKTtcbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmo6IGFueSA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdGhpcy5zYW5pdGl6ZShvYmpba2V5XSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09ICcnICYmXG4gICAgICAgICAgT2JqZWN0LmtleXMoY2xlYW5lZFZhbHVlKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgKCFBcnJheS5pc0FycmF5KGNsZWFuZWRWYWx1ZSkgfHwgY2xlYW5lZFZhbHVlLmxlbmd0aCA+IDApXG4gICAgICAgICkge1xuICAgICAgICAgIGNsZWFuZWRPYmpba2V5XSA9IGNsZWFuZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNsZWFuZWRPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICBwcml2YXRlIGdldEZvcm1Nb2RlbCA9IChvYmplY3Q6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkgPT4ge1xuICAgIGlmIChvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3QuZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBvYmogPSB0aGlzLmdldEZvcm1Nb2RlbChvYmplY3QuZWxlbWVudHNbaV0sIGtleSk7XG4gICAgICAgICAgaWYgKG9iaikgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG9iamVjdC5pZCA9PT0ga2V5KSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGdldEFtb3VudEN1cnJlbmN5KGl0ZW06IFNjaGVtYU1vZGVsKTogU2NoZW1hTW9kZWxbXSB7XG4gICAgY29uc3QgZWxlbWVudHM6IFNjaGVtYU1vZGVsW10gPSBbXTtcbiAgICBjb25zdCBjY3kgPSBzdHJ1Y3R1cmVkQ2xvbmUoaXRlbSk7XG4gICAgY29uc3QgYW10ID0gc3RydWN0dXJlZENsb25lKGl0ZW0pO1xuXG4gICAgY2N5LmlkID0gYCR7Y2N5LmlkfV9jY3lgO1xuICAgIGNjeS5uYW1lID0gJ0NjeSc7XG4gICAgY2N5LmZyYWN0aW9uRGlnaXRzID0gJyc7XG4gICAgY2N5LnRvdGFsRGlnaXRzID0gJyc7XG4gICAgY2N5Lm1heExlbmd0aCA9ICczJztcbiAgICBjY3kueHBhdGggPSBgJHtjY3kueHBhdGh9QGNjeWA7XG4gICAgY2N5LmlzQ3VycmVuY3kgPSBmYWxzZTtcbiAgICBlbGVtZW50cy5wdXNoKGNjeSk7XG5cbiAgICBhbXQuaWQgPSBgJHthbXQuaWR9X2FtdGA7XG4gICAgYW10LnhwYXRoID0gYCR7YW10LnhwYXRofS9hbXRgO1xuICAgIGFtdC5pc0N1cnJlbmN5ID0gZmFsc2U7XG4gICAgYW10LnBhdHRlcm4gPSAnJztcbiAgICBlbGVtZW50cy5wdXNoKGFtdCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9XG59XG4iXX0=
|