fx-form-builder-wrapper 2.0.92 → 2.0.96
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/components/accordian/accordian.component.mjs +51 -0
- package/esm2022/lib/components/fx-form-component/fx-form-component.component.mjs +3 -1
- package/esm2022/lib/components/summary/summary.component.mjs +150 -0
- package/esm2022/lib/components/uploader/uploader.component.mjs +16 -7
- package/esm2022/lib/fx-builder-wrapper.component.mjs +8 -1
- package/fesm2022/fx-form-builder-wrapper.mjs +163 -6
- package/fesm2022/fx-form-builder-wrapper.mjs.map +1 -1
- package/lib/components/accordian/accordian.component.d.ts +18 -0
- package/lib/components/summary/summary.component.d.ts +32 -0
- package/lib/components/uploader/uploader.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
4
|
+
import { FxBaseComponent, FxComponent, FxStringSetting, FxValidatorService } from '@instantsys-labs/fx';
|
|
5
|
+
import { CalendarModule } from 'primeng/calendar';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "../../fx-builder-wrapper.service";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
|
+
export class AccordianComponent extends FxBaseComponent {
|
|
11
|
+
cdr;
|
|
12
|
+
http;
|
|
13
|
+
fxBuilderWrapperService;
|
|
14
|
+
sectionOpened = true;
|
|
15
|
+
constructor(cdr, http, fxBuilderWrapperService) {
|
|
16
|
+
super(cdr);
|
|
17
|
+
this.cdr = cdr;
|
|
18
|
+
this.http = http;
|
|
19
|
+
this.fxBuilderWrapperService = fxBuilderWrapperService;
|
|
20
|
+
this.onInit.subscribe(() => {
|
|
21
|
+
// this._register(this.datePickerForm);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
}
|
|
26
|
+
settings() {
|
|
27
|
+
return [
|
|
28
|
+
new FxStringSetting({ key: 'minValidation', $title: 'Min Validation', value: '' }),
|
|
29
|
+
new FxStringSetting({ key: 'maxValidation', $title: 'Max Validation', value: '' }),
|
|
30
|
+
new FxStringSetting({ key: 'apiURL', $title: 'API Url', value: '' }),
|
|
31
|
+
new FxStringSetting({ key: 'minDateKey', $title: 'Min Range API Key', value: '' }),
|
|
32
|
+
new FxStringSetting({ key: 'maxDateKey', $title: 'Max Range API Key', value: '' }),
|
|
33
|
+
new FxStringSetting({ key: 'placeHolder', $title: 'Placeholder', value: 'Select Date' }),
|
|
34
|
+
new FxStringSetting({ key: 'label', $title: 'Label', value: '' }),
|
|
35
|
+
new FxStringSetting({ key: 'datePickerErrorMessage', $title: 'Error Message', value: 'Please fill out the field' }),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
validations() {
|
|
39
|
+
return [FxValidatorService.required];
|
|
40
|
+
}
|
|
41
|
+
toggleSection() {
|
|
42
|
+
this.sectionOpened = !this.sectionOpened;
|
|
43
|
+
}
|
|
44
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordianComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.FxBuilderWrapperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AccordianComponent, isStandalone: true, selector: "lib-accordian", usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"accordion\">\r\n <div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"toggleSection()\">\r\n <h3>Header</h3>\r\n </div>\r\n <div *ngIf=\"sectionOpened\" class=\"accordion-content\">\r\n \r\n </div>\r\n </div>\r\n</div>\r\n\r\n</fx-component>", styles: [".accordion{width:300px;margin:0 auto}.accordion-item{border:1px solid #ccc;margin-bottom:5px;border-radius:5px}.accordion-header{background-color:#f1f1f1;padding:10px;cursor:pointer;font-size:16px;font-weight:700;border-radius:5px 5px 0 0}.accordion-content{padding:10px;background-color:#fafafa;display:none;border-radius:0 0 5px 5px}.accordion-header:hover{background-color:#e0e0e0}\n"], dependencies: [{ kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CalendarModule }] });
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordianComponent, decorators: [{
|
|
48
|
+
type: Component,
|
|
49
|
+
args: [{ selector: 'lib-accordian', standalone: true, imports: [FxComponent, CommonModule, ReactiveFormsModule, FormsModule, CalendarModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"accordion\">\r\n <div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"toggleSection()\">\r\n <h3>Header</h3>\r\n </div>\r\n <div *ngIf=\"sectionOpened\" class=\"accordion-content\">\r\n \r\n </div>\r\n </div>\r\n</div>\r\n\r\n</fx-component>", styles: [".accordion{width:300px;margin:0 auto}.accordion-item{border:1px solid #ccc;margin-bottom:5px;border-radius:5px}.accordion-header{background-color:#f1f1f1;padding:10px;cursor:pointer;font-size:16px;font-weight:700;border-radius:5px 5px 0 0}.accordion-content{padding:10px;background-color:#fafafa;display:none;border-radius:0 0 5px 5px}.accordion-header:hover{background-color:#e0e0e0}\n"] }]
|
|
50
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.FxBuilderWrapperService }] });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z4LWJ1aWxkZXItd3JhcHBlci9zcmMvbGliL2NvbXBvbmVudHMvYWNjb3JkaWFuL2FjY29yZGlhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2FjY29yZGlhbi9hY2NvcmRpYW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBcUIsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFzQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBV2xELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBR2hDO0lBQStCO0lBQXlCO0lBRC9FLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFDM0IsWUFBb0IsR0FBc0IsRUFBUyxJQUFnQixFQUFTLHVCQUFnRDtRQUN6SCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFETyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQVk7UUFBUyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBRXpILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6Qix1Q0FBdUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQsUUFBUTtJQUVSLENBQUM7SUFFVyxRQUFRO1FBQ2hCLE9BQU87WUFDTCxJQUFJLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsRixJQUFJLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsRixJQUFJLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDcEUsSUFBSSxlQUFlLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDbEYsSUFBSSxlQUFlLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDbEYsSUFBSSxlQUFlLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQ3hGLElBQUksZUFBZSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNqRSxJQUFJLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxDQUFDO1NBRXBILENBQUM7SUFDSixDQUFDO0lBRVMsV0FBVztRQUNuQixPQUFPLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVBLGFBQWE7UUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDM0MsQ0FBQzt3R0FuQ1Usa0JBQWtCOzRGQUFsQixrQkFBa0IsZ0dDakIvQix3V0FZZSw0YkRDSCxXQUFXLDRFQUFDLFlBQVksa0lBQUMsbUJBQW1CLDhCQUFDLFdBQVcsOEJBQUMsY0FBYzs7NEZBSXRFLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFDLFlBQVksRUFBQyxtQkFBbUIsRUFBQyxXQUFXLEVBQUMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZ4QmFzZUNvbXBvbmVudCwgRnhDb21wb25lbnQsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY2NvcmRpYW4nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0Z4Q29tcG9uZW50LENvbW1vbk1vZHVsZSxSZWFjdGl2ZUZvcm1zTW9kdWxlLEZvcm1zTW9kdWxlLENhbGVuZGFyTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaWFuLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWNjb3JkaWFuLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpYW5Db21wb25lbnQgZXh0ZW5kcyBGeEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG5zZWN0aW9uT3BlbmVkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxwcml2YXRlIGZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlOiBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSkge1xyXG4gICAgICBzdXBlcihjZHIpXHJcbiAgICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5fcmVnaXN0ZXIodGhpcy5kYXRlUGlja2VyRm9ybSk7XHJcbiAgICAgIH0pO1xyXG4gICAgIFxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICAgIHByb3RlY3RlZCBzZXR0aW5ncygpOiBGeFNldHRpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdtaW5WYWxpZGF0aW9uJywgJHRpdGxlOiAnTWluIFZhbGlkYXRpb24nLCB2YWx1ZTogJycgfSksXHJcbiAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWF4VmFsaWRhdGlvbicsICR0aXRsZTogJ01heCBWYWxpZGF0aW9uJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2FwaVVSTCcsICR0aXRsZTogJ0FQSSBVcmwnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWluRGF0ZUtleScsICR0aXRsZTogJ01pbiBSYW5nZSBBUEkgS2V5JywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heERhdGVLZXknLCAkdGl0bGU6ICdNYXggUmFuZ2UgQVBJIEtleScsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdwbGFjZUhvbGRlcicsICR0aXRsZTogJ1BsYWNlaG9sZGVyJywgdmFsdWU6ICdTZWxlY3QgRGF0ZScgfSksXHJcbiAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbGFiZWwnLCAkdGl0bGU6ICdMYWJlbCcsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdkYXRlUGlja2VyRXJyb3JNZXNzYWdlJywgJHRpdGxlOiAnRXJyb3IgTWVzc2FnZScsIHZhbHVlOiAnUGxlYXNlIGZpbGwgb3V0IHRoZSBmaWVsZCcgfSksXHJcbiAgICAgICAgIFxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgICAgIHJldHVybiBbRnhWYWxpZGF0b3JTZXJ2aWNlLnJlcXVpcmVkXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgIHRvZ2dsZVNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25PcGVuZWQgPSAhdGhpcy5zZWN0aW9uT3BlbmVkO1xyXG4gIH1cclxufVxyXG4iLCI8ZngtY29tcG9uZW50IFtmeERhdGFdPVwiZnhEYXRhXCIgI2Z4Q29tcG9uZW50PlxyXG4gICAgPGRpdiBjbGFzcz1cImFjY29yZGlvblwiPlxyXG4gIDxkaXYgIGNsYXNzPVwiYWNjb3JkaW9uLWl0ZW1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhY2NvcmRpb24taGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZVNlY3Rpb24oKVwiPlxyXG4gICAgICA8aDM+SGVhZGVyPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInNlY3Rpb25PcGVuZWRcIiBjbGFzcz1cImFjY29yZGlvbi1jb250ZW50XCI+XHJcbiAgICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPC9meC1jb21wb25lbnQ+Il19
|
|
@@ -13,6 +13,7 @@ import { RadioGroupComponent } from '../radio-group/radio-group.component';
|
|
|
13
13
|
import { MultiselectDropdownComponent } from '../multiselect-dropdown/multiselect-dropdown.component';
|
|
14
14
|
import { MultiselectDropdownWithChildsComponent } from '../multiselect-dropdown-with-childs/multiselect-dropdown-with-childs.component';
|
|
15
15
|
import { DropdownWithSearchComponent } from '../dropdown-with-search/dropdown-with-search.component';
|
|
16
|
+
import { SummaryComponent } from '../summary/summary.component';
|
|
16
17
|
import * as i0 from "@angular/core";
|
|
17
18
|
import * as i1 from "../../fx-builder-wrapper.service";
|
|
18
19
|
// import { CustomizeDropdownComponent } from '../customize-dropdown/customize-dropdown.component';
|
|
@@ -67,6 +68,7 @@ export class FxFormWrapperComponent {
|
|
|
67
68
|
{ name: 'Multiselect Dropdown with Childs', key: 'lib-multiselect-dropdown-with-childs', component: MultiselectDropdownWithChildsComponent },
|
|
68
69
|
{ name: 'Dropdown with Search', key: 'lib-dropdown-with-search', component: DropdownWithSearchComponent },
|
|
69
70
|
// { name: 'Multiselect with Form ', key: 'lib-customize-dropdown', component: CustomizeDropdownComponent },
|
|
71
|
+
{ name: 'Summary', key: 'lib-summary', component: SummaryComponent },
|
|
70
72
|
];
|
|
71
73
|
components.forEach(({ name, key, component }) => {
|
|
72
74
|
if (!this.fxWrapperService.getComponent(key)) {
|
|
@@ -117,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
117
119
|
}], fxFormSubmit: [{
|
|
118
120
|
type: Output
|
|
119
121
|
}] } });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZngtZm9ybS1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9meC1mb3JtLWNvbXBvbmVudC9meC1mb3JtLWNvbXBvbmVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFVLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBRWxILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUN4SSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7O0FBQ3JHLG1HQUFtRztBQUNuRyw2R0FBNkc7QUFnQjdHLE1BQU0sT0FBTyxzQkFBc0I7SUFNYjtJQUxELElBQUksQ0FBbUI7SUFDakMsTUFBTSxDQUFVO0lBQ2hCLFNBQVMsQ0FBTTtJQUNkLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWpELFlBQW9CLGdCQUF5QztRQUF6QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQzNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFSyxXQUFXLENBQUMsT0FBc0I7UUFDdkMscURBQXFEO1FBQ3JELDJEQUEyRDtRQUMzRCxJQUFJO1FBQ0osSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLDRFQUE0RTtRQUM1RSwwSEFBMEg7UUFDMUgsSUFBSTtRQUNKLHVFQUF1RTtRQUN2RSw0R0FBNEc7UUFDNUcsSUFBSTtRQUNKLHVFQUF1RTtRQUN2RSw0R0FBNEc7UUFDNUcsSUFBSTtRQUNKLGtFQUFrRTtRQUNsRSw4RkFBOEY7UUFDOUYsSUFBSTtRQUNKLGdFQUFnRTtRQUNoRSx3RkFBd0Y7UUFDeEYsSUFBSTtJQUNOLENBQUM7SUFHTyx3QkFBd0I7UUFDOUIsTUFBTSxVQUFVLEdBQUc7WUFDakIsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSx5QkFBeUIsRUFBRTtZQUMvRixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7WUFDakYsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO1lBQ2pGLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRTtZQUNuRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO1lBQzdELEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUU7WUFDbEcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUU7WUFDL0UsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRTtZQUNuRyxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFO1lBQzdGLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsRUFBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUUsNEJBQTRCLEVBQUU7WUFDMUcsRUFBRSxJQUFJLEVBQUUsa0NBQWtDLEVBQUUsR0FBRyxFQUFFLHNDQUFzQyxFQUFFLFNBQVMsRUFBRSxzQ0FBc0MsRUFBRTtZQUM1SSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFO1lBQ3pHLDRHQUE0RztTQUU3RyxDQUFDO1FBRUYsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDckIsQ0FBQzt3R0FyRVUsc0JBQXNCOzRGQUF0QixzQkFBc0IsaVNBVnZCOzs7Ozs7OztHQVFULDJEQVRTLFlBQVksK0JBQUUsZUFBZTs7NEZBVzVCLHNCQUFzQjtrQkFkbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQztvQkFDeEMsUUFBUSxFQUFFOzs7Ozs7OztHQVFUO2lCQUNGOzRGQUVvQixJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBQ1IsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZ4Rm9ybSwgRnhGb3JtQ29tcG9uZW50IH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9meCc7XHJcbmltcG9ydCB7IERpc3BhdGNoVG9DbGluaWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tY29udHJvbHMvZGlzcGF0Y2gtdG8tY2xpbmljL2Rpc3BhdGNoLXRvLWNsaW5pYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvZ2dsZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3RvZ2dsZS1idXR0b24vdG9nZ2xlLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4uL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBsb2FkZXJDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL3VwbG9hZGVyLWNoZWNrYm94L3VwbG9hZGVyLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bldpdGhPdGhlckNvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duLXdpdGgtb3RoZXIvZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vcmFkaW8tZ3JvdXAvcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL211bHRpc2VsZWN0LWRyb3Bkb3duL211bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpc2VsZWN0RHJvcGRvd25XaXRoQ2hpbGRzQ29tcG9uZW50IH0gZnJvbSAnLi4vbXVsdGlzZWxlY3QtZHJvcGRvd24td2l0aC1jaGlsZHMvbXVsdGlzZWxlY3QtZHJvcGRvd24td2l0aC1jaGlsZHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25XaXRoU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24td2l0aC1zZWFyY2gvZHJvcGRvd24td2l0aC1zZWFyY2guY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgQ3VzdG9taXplRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9jdXN0b21pemUtZHJvcGRvd24vY3VzdG9taXplLWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbi8vIGltcG9ydCB7IEN1c3RvbWl6ZURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vbXVsdGlzZWxlY3Qtd2l0aC1mb3JtLWZpZWxkcy9jdXN0b21pemUtZHJvcGRvd24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZngtZm9ybS1jb21wb25lbnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRnhGb3JtQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGZ4LWZvcm0gXHJcbiAgICAgIFtmeEZvcm1dPVwiZnhGb3JtXCIgXHJcbiAgICAgIFt2YWx1ZV09XCJ2YXJpYWJsZXNcIiBcclxuICAgICAgKG9uU3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIiBcclxuICAgICAgI2Zvcm1cclxuICAgID5cclxuICAgIDwvZngtZm9ybT5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnhGb3JtV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmb3JtJykgZm9ybSE6IEZ4Rm9ybUNvbXBvbmVudDtcclxuICBASW5wdXQoKSBmeEZvcm0hOiBGeEZvcm07XHJcbiAgQElucHV0KCkgdmFyaWFibGVzOiBhbnk7XHJcbiAgQE91dHB1dCgpIGZ4Rm9ybVN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZ4V3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50cygpO1xyXG4gICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7IFxyXG4gICAgLy8gaWYoJ3ZhcmlhYmxlcycgaW4gY2hhbmdlcyAmJiAhY2hhbmdlc1snZnhGb3JtJ10pIHtcclxuICAgIC8vICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyQubmV4dCh0aGlzLnZhcmlhYmxlcyk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoJ3ZhcmlhYmxlcycgaW4gY2hhbmdlcykge1xyXG4gICAgICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UudmFyaWFibGVzJC5uZXh0KHRoaXMudmFyaWFibGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCdkaXNwYXRjaC10by1jbGluaWMnKSkpIHtcclxuICAgIC8vICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdEaXNwYXRjaCBUbyBDbGluaWMnLCAnZGlzcGF0Y2gtdG8tY2xpbmljJywgRGlzcGF0Y2hUb0NsaW5pY0NvbXBvbmVudCk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgnZHluYW1pYy10YWJsZScpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ0R5bmFtaWMgVGFibGUnLCAnZHluYW1pYy10YWJsZScsIER5bmFtaWNUYWJsZUNvbXBvbmVudCk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgndG9nZ2xlLWJ1dHRvbicpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ1RvZ2dsZSBCdXR0b24nLCAndG9nZ2xlLWJ1dHRvbicsIFRvZ2dsZUJ1dHRvbkNvbXBvbmVudCk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAoIUJvb2xlYW4odGhpcy5meFdyYXBwZXJTZXJ2aWNlLmdldENvbXBvbmVudCgndXBsb2FkZXInKSkpIHtcclxuICAgIC8vICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdVcGxvYWRlcicsICd1cGxvYWRlcicsIFVwbG9hZGVyQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCd0b2dnbGUnKSkpIHtcclxuICAgIC8vICAgdGhpcy5meFdyYXBwZXJTZXJ2aWNlLnJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50KCdUb2dnbGUnLCAndG9nZ2xlJywgVG9nZ2xlQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHJlZ2lzdGVyQ3VzdG9tQ29tcG9uZW50cygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXHJcbiAgICAgIHsgbmFtZTogJ0Rpc3BhdGNoIFRvIENsaW5pYycsIGtleTogJ2Rpc3BhdGNoLXRvLWNsaW5pYycsIGNvbXBvbmVudDogRGlzcGF0Y2hUb0NsaW5pY0NvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdEeW5hbWljIFRhYmxlJywga2V5OiAnZHluYW1pYy10YWJsZScsIGNvbXBvbmVudDogRHluYW1pY1RhYmxlQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ1RvZ2dsZSBCdXR0b24nLCBrZXk6ICd0b2dnbGUtYnV0dG9uJywgY29tcG9uZW50OiBUb2dnbGVCdXR0b25Db21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnVXBsb2FkZXInLCBrZXk6ICd1cGxvYWRlcicsIGNvbXBvbmVudDogVXBsb2FkZXJDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnVG9nZ2xlJywga2V5OiAndG9nZ2xlJywgY29tcG9uZW50OiBUb2dnbGVDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnVXBsb2FkZXIgd2l0aCBDaGVja2JveCcsIGtleTogJ3VwbG9hZGVyLWNoZWNrYm94JywgY29tcG9uZW50OiBVcGxvYWRlckNoZWNrYm94Q29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ0RhdGUgUGlja2VyJywga2V5OiAnbGliLWRhdGUtcGlja2VyJywgY29tcG9uZW50OiBEYXRlUGlja2VyQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ1NtYXJ0bGlzdCB3aXRoIE90aGVyJywga2V5OiAnZHJvcGRvd24td2l0aC1vdGhlcicsIGNvbXBvbmVudDogRHJvcGRvd25XaXRoT3RoZXJDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnUmFkaW8gR3JvdXAgd2l0aCBPdGhlcicsIGtleTogJ3JhZGlvLWdyb3VwLWN1c3RvbScsIGNvbXBvbmVudDogUmFkaW9Hcm91cENvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdNdWx0aXNlbGVjdCBEcm9wZG93bicsIGtleTogJ2xpYi1tdWx0aXNlbGVjdC1kcm9wZG93bicsIGNvbXBvbmVudDogTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdNdWx0aXNlbGVjdCBEcm9wZG93biB3aXRoIENoaWxkcycsIGtleTogJ2xpYi1tdWx0aXNlbGVjdC1kcm9wZG93bi13aXRoLWNoaWxkcycsIGNvbXBvbmVudDogTXVsdGlzZWxlY3REcm9wZG93bldpdGhDaGlsZHNDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnRHJvcGRvd24gd2l0aCBTZWFyY2gnLCBrZXk6ICdsaWItZHJvcGRvd24td2l0aC1zZWFyY2gnLCBjb21wb25lbnQ6IERyb3Bkb3duV2l0aFNlYXJjaENvbXBvbmVudCB9LFxyXG4gICAgICAvLyB7IG5hbWU6ICdNdWx0aXNlbGVjdCB3aXRoIEZvcm0gJywga2V5OiAnbGliLWN1c3RvbWl6ZS1kcm9wZG93bicsIGNvbXBvbmVudDogQ3VzdG9taXplRHJvcGRvd25Db21wb25lbnQgfSxcclxuICAgICAgXHJcbiAgICBdO1xyXG4gICAgXHJcbiAgICBjb21wb25lbnRzLmZvckVhY2goKHsgbmFtZSwga2V5LCBjb21wb25lbnQgfSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoa2V5KSkge1xyXG4gICAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudChuYW1lLCBrZXksIGNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhGb3JtU3VibWl0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5zdWJtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZngtZm9ybS1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9meC1mb3JtLWNvbXBvbmVudC9meC1mb3JtLWNvbXBvbmVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFVLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBRWxILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUN4SSxPQUFPLEVBQUUsMkJB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RTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLENBQUM7d0dBdEVVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLGlTQVZ2Qjs7Ozs7Ozs7R0FRVCwyREFUUyxZQUFZLCtCQUFFLGVBQWU7OzRGQVc1QixzQkFBc0I7a0JBZGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtpQkFDRjs0RkFFb0IsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUNSLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGeEZvcm0sIEZ4Rm9ybUNvbXBvbmVudCB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLWNvbnRyb2xzL2Rpc3BhdGNoLXRvLWNsaW5pYy9kaXNwYXRjaC10by1jbGluaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi90b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwbG9hZGVyQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWRlci1jaGVja2JveC91cGxvYWRlci1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25XaXRoT3RoZXJDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi13aXRoLW90aGVyL2Ryb3Bkb3duLXdpdGgtb3RoZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9tdWx0aXNlbGVjdC1kcm9wZG93bi9tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aXNlbGVjdERyb3Bkb3duV2l0aENoaWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duV2l0aFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duLXdpdGgtc2VhcmNoL2Ryb3Bkb3duLXdpdGgtc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjY29yZGlhbkNvbXBvbmVudCB9IGZyb20gJy4uL2FjY29yZGlhbi9hY2NvcmRpYW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3VtbWFyeUNvbXBvbmVudCB9IGZyb20gJy4uL3N1bW1hcnkvc3VtbWFyeS5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBDdXN0b21pemVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWl6ZS1kcm9wZG93bi9jdXN0b21pemUtZHJvcGRvd24uY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgQ3VzdG9taXplRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9tdWx0aXNlbGVjdC13aXRoLWZvcm0tZmllbGRzL2N1c3RvbWl6ZS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC1mb3JtLWNvbXBvbmVudCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeEZvcm1Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZngtZm9ybSBcclxuICAgICAgW2Z4Rm9ybV09XCJmeEZvcm1cIiBcclxuICAgICAgW3ZhbHVlXT1cInZhcmlhYmxlc1wiIFxyXG4gICAgICAob25TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIFxyXG4gICAgICAjZm9ybVxyXG4gICAgPlxyXG4gICAgPC9meC1mb3JtPlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGeEZvcm1XcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBmb3JtITogRnhGb3JtQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGZ4Rm9ybSE6IEZ4Rm9ybTtcclxuICBASW5wdXQoKSB2YXJpYWJsZXM6IGFueTtcclxuICBAT3V0cHV0KCkgZnhGb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnhXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UpIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDdXN0b21Db21wb25lbnRzKCk7XHJcbiAgIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHsgXHJcbiAgICAvLyBpZigndmFyaWFibGVzJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzWydmeEZvcm0nXSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UudmFyaWFibGVzJC5uZXh0KHRoaXMudmFyaWFibGVzKTtcclxuICAgIC8vIH1cclxuICAgIGlmICgndmFyaWFibGVzJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkLm5leHQodGhpcy52YXJpYWJsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ2Rpc3BhdGNoLXRvLWNsaW5pYycpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ0Rpc3BhdGNoIFRvIENsaW5pYycsICdkaXNwYXRjaC10by1jbGluaWMnLCBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCdkeW5hbWljLXRhYmxlJykpKSB7XHJcbiAgICAvLyAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnRHluYW1pYyBUYWJsZScsICdkeW5hbWljLXRhYmxlJywgRHluYW1pY1RhYmxlQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCd0b2dnbGUtYnV0dG9uJykpKSB7XHJcbiAgICAvLyAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnVG9nZ2xlIEJ1dHRvbicsICd0b2dnbGUtYnV0dG9uJywgVG9nZ2xlQnV0dG9uQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCd1cGxvYWRlcicpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ1VwbG9hZGVyJywgJ3VwbG9hZGVyJywgVXBsb2FkZXJDb21wb25lbnQpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ3RvZ2dsZScpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ1RvZ2dsZScsICd0b2dnbGUnLCBUb2dnbGVDb21wb25lbnQpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJDdXN0b21Db21wb25lbnRzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29tcG9uZW50cyA9IFtcclxuICAgICAgeyBuYW1lOiAnRGlzcGF0Y2ggVG8gQ2xpbmljJywga2V5OiAnZGlzcGF0Y2gtdG8tY2xpbmljJywgY29tcG9uZW50OiBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ0R5bmFtaWMgVGFibGUnLCBrZXk6ICdkeW5hbWljLXRhYmxlJywgY29tcG9uZW50OiBEeW5hbWljVGFibGVDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnVG9nZ2xlIEJ1dHRvbicsIGtleTogJ3RvZ2dsZS1idXR0b24nLCBjb21wb25lbnQ6IFRvZ2dsZUJ1dHRvbkNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdVcGxvYWRlcicsIGtleTogJ3VwbG9hZGVyJywgY29tcG9uZW50OiBVcGxvYWRlckNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdUb2dnbGUnLCBrZXk6ICd0b2dnbGUnLCBjb21wb25lbnQ6IFRvZ2dsZUNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdVcGxvYWRlciB3aXRoIENoZWNrYm94Jywga2V5OiAndXBsb2FkZXItY2hlY2tib3gnLCBjb21wb25lbnQ6IFVwbG9hZGVyQ2hlY2tib3hDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnRGF0ZSBQaWNrZXInLCBrZXk6ICdsaWItZGF0ZS1waWNrZXInLCBjb21wb25lbnQ6IERhdGVQaWNrZXJDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnU21hcnRsaXN0IHdpdGggT3RoZXInLCBrZXk6ICdkcm9wZG93bi13aXRoLW90aGVyJywgY29tcG9uZW50OiBEcm9wZG93bldpdGhPdGhlckNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdSYWRpbyBHcm91cCB3aXRoIE90aGVyJywga2V5OiAncmFkaW8tZ3JvdXAtY3VzdG9tJywgY29tcG9uZW50OiBSYWRpb0dyb3VwQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ011bHRpc2VsZWN0IERyb3Bkb3duJywga2V5OiAnbGliLW11bHRpc2VsZWN0LWRyb3Bkb3duJywgY29tcG9uZW50OiBNdWx0aXNlbGVjdERyb3Bkb3duQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ011bHRpc2VsZWN0IERyb3Bkb3duIHdpdGggQ2hpbGRzJywga2V5OiAnbGliLW11bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzJywgY29tcG9uZW50OiBNdWx0aXNlbGVjdERyb3Bkb3duV2l0aENoaWxkc0NvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdEcm9wZG93biB3aXRoIFNlYXJjaCcsIGtleTogJ2xpYi1kcm9wZG93bi13aXRoLXNlYXJjaCcsIGNvbXBvbmVudDogRHJvcGRvd25XaXRoU2VhcmNoQ29tcG9uZW50IH0sXHJcbiAgICAgIC8vIHsgbmFtZTogJ011bHRpc2VsZWN0IHdpdGggRm9ybSAnLCBrZXk6ICdsaWItY3VzdG9taXplLWRyb3Bkb3duJywgY29tcG9uZW50OiBDdXN0b21pemVEcm9wZG93bkNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdTdW1tYXJ5Jywga2V5OiAnbGliLXN1bW1hcnknLCBjb21wb25lbnQ6IFN1bW1hcnlDb21wb25lbnQgfSxcclxuICAgICAgXHJcbiAgICBdO1xyXG4gICAgXHJcbiAgICBjb21wb25lbnRzLmZvckVhY2goKHsgbmFtZSwga2V5LCBjb21wb25lbnQgfSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoa2V5KSkge1xyXG4gICAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudChuYW1lLCBrZXksIGNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhGb3JtU3VibWl0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5zdWJtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, inject, ViewChild } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule, FormsModule, FormBuilder } from '@angular/forms';
|
|
4
|
+
import { FxBaseComponent, FxComponent, FxStringSetting, FxValidatorService } from '@instantsys-labs/fx';
|
|
5
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "../../fx-builder-wrapper.service";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
export class SummaryComponent extends FxBaseComponent {
|
|
11
|
+
cdr;
|
|
12
|
+
http;
|
|
13
|
+
fxBuilderWrapperService;
|
|
14
|
+
fb = inject(FormBuilder);
|
|
15
|
+
minDate;
|
|
16
|
+
maxDate;
|
|
17
|
+
today = new Date();
|
|
18
|
+
fxComponent;
|
|
19
|
+
destroy$ = new Subject();
|
|
20
|
+
datePickerMap = new Map();
|
|
21
|
+
summaryForm = this.fb.group({
|
|
22
|
+
summary: [''],
|
|
23
|
+
});
|
|
24
|
+
dynamicText = 'My name is {name} and I am {age} years old';
|
|
25
|
+
constructor(cdr, http, fxBuilderWrapperService) {
|
|
26
|
+
super(cdr);
|
|
27
|
+
this.cdr = cdr;
|
|
28
|
+
this.http = http;
|
|
29
|
+
this.fxBuilderWrapperService = fxBuilderWrapperService;
|
|
30
|
+
this.onInit.subscribe(() => {
|
|
31
|
+
this._register(this.summaryForm);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
this.fxBuilderWrapperService.variables$
|
|
36
|
+
.pipe(takeUntil(this.destroy$))
|
|
37
|
+
.subscribe((variables) => {
|
|
38
|
+
if (!variables)
|
|
39
|
+
return;
|
|
40
|
+
this.datePickerMap = new Map();
|
|
41
|
+
// for (const [key, value] of Object.entries(variables) as [string, any][]) {
|
|
42
|
+
// if (key.includes('lib-date-picker')) {
|
|
43
|
+
// this.datePickerMap.set(key, value);
|
|
44
|
+
// }
|
|
45
|
+
// }
|
|
46
|
+
for (const [key, value] of Object.entries(variables)) {
|
|
47
|
+
if (value &&
|
|
48
|
+
typeof value === 'object' &&
|
|
49
|
+
'date' in value) {
|
|
50
|
+
this.datePickerMap.set(key, value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// const today = new Date();
|
|
55
|
+
// this.minDate = new Date(today);
|
|
56
|
+
// this.minDate.setDate(today.getDate() - 30);
|
|
57
|
+
// this.maxDate = new Date(today);
|
|
58
|
+
// this.maxDate.setDate(today.getDate() + 30);
|
|
59
|
+
// this.minDate = this.formatDate(new Date(this.today.setDate(new Date().getDate() - 30)));
|
|
60
|
+
// this.maxDate = this.formatDate(new Date(this.today.setDate(new Date().getDate() + 31)));
|
|
61
|
+
const today = new Date();
|
|
62
|
+
const min = new Date();
|
|
63
|
+
min.setDate(today.getDate() - 30);
|
|
64
|
+
const max = new Date();
|
|
65
|
+
max.setDate(today.getDate());
|
|
66
|
+
this.minDate = this.formatDate(min);
|
|
67
|
+
this.maxDate = this.formatDate(max);
|
|
68
|
+
// this.getRangeValues();
|
|
69
|
+
}
|
|
70
|
+
// get dateControl() {
|
|
71
|
+
// return this.datePickerForm.get('date');
|
|
72
|
+
// }
|
|
73
|
+
ngAfterViewInit() {
|
|
74
|
+
const key = this.fxComponent?.fxData?.name;
|
|
75
|
+
if (key) {
|
|
76
|
+
const datePatch = this.datePickerMap.get(key);
|
|
77
|
+
const finalDate = datePatch || this.formatDate(new Date());
|
|
78
|
+
if (datePatch) {
|
|
79
|
+
this.minDate = datePatch;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.minDate = this.formatDate(new Date(this.today.setDate(new Date().getDate() - 30)));
|
|
83
|
+
}
|
|
84
|
+
// this.datePickerForm.patchValue({date:finalDate});
|
|
85
|
+
}
|
|
86
|
+
this.getContextBaseId();
|
|
87
|
+
}
|
|
88
|
+
getRangeValues() {
|
|
89
|
+
this.http.get(this.setting('apiURL')).subscribe(response => {
|
|
90
|
+
const today = new Date();
|
|
91
|
+
const minOffset = response[this.setting('minDateKey')] || this.setting('minValidation');
|
|
92
|
+
const maxOffset = response[this.setting('maxDateKey')] || this.setting('maxValidation');
|
|
93
|
+
// this.minDate = new Date(today);
|
|
94
|
+
// this.minDate.setDate(today.getDate() + minOffset);
|
|
95
|
+
// this.maxDate = new Date(today);
|
|
96
|
+
// this.maxDate.setDate(today.getDate() + maxOffset);
|
|
97
|
+
this.minDate = this.formatDate(new Date(this.today.setDate(new Date().getDate() + minOffset)));
|
|
98
|
+
this.maxDate = this.formatDate(new Date(this.today.setDate(new Date().getDate() + maxOffset)));
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
formatDate(date) {
|
|
102
|
+
return date.toISOString().split('T')[0];
|
|
103
|
+
}
|
|
104
|
+
settings() {
|
|
105
|
+
return [
|
|
106
|
+
new FxStringSetting({ key: 'minValidation', $title: 'Min Validation', value: '' }),
|
|
107
|
+
new FxStringSetting({ key: 'maxValidation', $title: 'Max Validation', value: '' }),
|
|
108
|
+
new FxStringSetting({ key: 'apiURL', $title: 'API Url', value: '' }),
|
|
109
|
+
new FxStringSetting({ key: 'minDateKey', $title: 'Min Range API Key', value: '' }),
|
|
110
|
+
new FxStringSetting({ key: 'maxDateKey', $title: 'Max Range API Key', value: '' }),
|
|
111
|
+
new FxStringSetting({ key: 'placeHolder', $title: 'Placeholder', value: 'Select Date' }),
|
|
112
|
+
new FxStringSetting({ key: 'label', $title: 'Label', value: '' }),
|
|
113
|
+
new FxStringSetting({ key: 'datePickerErrorMessage', $title: 'Error Message', value: 'Please fill out the field' }),
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
validations() {
|
|
117
|
+
return [FxValidatorService.required];
|
|
118
|
+
}
|
|
119
|
+
updateTextArea() {
|
|
120
|
+
// Get all the form control values
|
|
121
|
+
console.log('Updating text area with dynamic values', this.fxComponent);
|
|
122
|
+
const formValues = this.fxComponent?.fxData?.$formGroup?.value;
|
|
123
|
+
// const formValues = {name: 'John', age: 30}; // Example values, replace with actual form control values
|
|
124
|
+
// Replace placeholders in the text template with corresponding form control values
|
|
125
|
+
this.dynamicText = this.replacePlaceholders(this.dynamicText, formValues);
|
|
126
|
+
}
|
|
127
|
+
// Method to replace placeholders in the string based on form control values
|
|
128
|
+
replacePlaceholders(template, values) {
|
|
129
|
+
// Use a regular expression to find placeholders like {name}, {age}, etc.
|
|
130
|
+
return template.replace(/{(.*?)}/g, (match, placeholder) => {
|
|
131
|
+
// For each placeholder, look it up in the form control values
|
|
132
|
+
return values[placeholder] !== undefined ? values[placeholder] : match;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
ngAfterViewChecked() {
|
|
136
|
+
// After the view has been checked, update text area if needed
|
|
137
|
+
this.updateTextArea();
|
|
138
|
+
this.cdr.detectChanges(); // Manually trigger change detection
|
|
139
|
+
}
|
|
140
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SummaryComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.FxBuilderWrapperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
141
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SummaryComponent, isStandalone: true, selector: "lib-summary", viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"custom-date-picker relative\">\r\n <form [formGroup]=\"summaryForm\">\r\n\r\n <label for=\"date\" class=\"input-label\">{{ setting('label') }}<span class=\"field-required\">*</span></label>\r\n <div class=\"relative\">\r\n <textarea formControlName=\"summary\" [value]=\"dynamicText\" ></textarea>\r\n </div>\r\n <!-- <div>\r\n <small *ngIf=\"datePickerForm.get('date')?.touched && datePickerForm.get('date')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('datePickerErrorMessage') }}\r\n </small>\r\n </div> -->\r\n </form>\r\n </div>\r\n\r\n</fx-component>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }] });
|
|
142
|
+
}
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SummaryComponent, decorators: [{
|
|
144
|
+
type: Component,
|
|
145
|
+
args: [{ selector: 'lib-summary', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"custom-date-picker relative\">\r\n <form [formGroup]=\"summaryForm\">\r\n\r\n <label for=\"date\" class=\"input-label\">{{ setting('label') }}<span class=\"field-required\">*</span></label>\r\n <div class=\"relative\">\r\n <textarea formControlName=\"summary\" [value]=\"dynamicText\" ></textarea>\r\n </div>\r\n <!-- <div>\r\n <small *ngIf=\"datePickerForm.get('date')?.touched && datePickerForm.get('date')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('datePickerErrorMessage') }}\r\n </small>\r\n </div> -->\r\n </form>\r\n </div>\r\n\r\n</fx-component>" }]
|
|
146
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.FxBuilderWrapperService }], propDecorators: { fxComponent: [{
|
|
147
|
+
type: ViewChild,
|
|
148
|
+
args: ['fxComponent']
|
|
149
|
+
}] } });
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3N1bW1hcnkvc3VtbWFyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3N1bW1hcnkvc3VtbWFyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUF1QyxTQUFTLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBeUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBYSxlQUFlLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHakksT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUzFDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBa0I5QjtJQUErQjtJQUF5QjtJQWpCckUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuQyxPQUFPLENBQVU7SUFDakIsT0FBTyxDQUFVO0lBQ2QsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDTyxXQUFXLENBQWU7SUFDNUMsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFDekMsYUFBYSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7SUFLaEMsV0FBVyxHQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzNDLE9BQU8sRUFBRSxD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VTNDLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZ4QmFzZUNvbXBvbmVudCwgRnhDb21wb25lbnQsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zdW1tYXJ5JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlLCBGeENvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zdW1tYXJ5LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdW1tYXJ5Q29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2Vke1xyXG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xyXG5cclxubWluRGF0ZSE6IHN0cmluZztcclxubWF4RGF0ZSE6IHN0cmluZztcclxuICAgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICBAVmlld0NoaWxkKCdmeENvbXBvbmVudCcpIGZ4Q29tcG9uZW50ITogRnhDb21wb25lbnQ7XHJcbiAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpO1xyXG4gICAgZGF0ZVBpY2tlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcbiAgXHJcbiAgIFxyXG5cclxuXHJcbiAgICBwdWJsaWMgc3VtbWFyeUZvcm06IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgc3VtbWFyeTogWycnXSxcclxuICAgICB9KVxyXG5cclxuICAgICAgZHluYW1pY1RleHQ6IHN0cmluZyA9ICdNeSBuYW1lIGlzIHtuYW1lfSBhbmQgSSBhbSB7YWdlfSB5ZWFycyBvbGQnO1xyXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlKSB7XHJcbiAgICAgIHN1cGVyKGNkcilcclxuICAgICAgdGhpcy5vbkluaXQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLnN1bW1hcnlGb3JtKTtcclxuICAgICAgfSk7XHJcbiAgICAgXHJcbiAgICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmRhdGVQaWNrZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG5cclxuICAgIC8vIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykgYXMgW3N0cmluZywgYW55XVtdKSB7XHJcbiAgICAvLyAgIGlmIChrZXkuaW5jbHVkZXMoJ2xpYi1kYXRlLXBpY2tlcicpKSB7XHJcbiAgICAvLyAgICAgdGhpcy5kYXRlUGlja2VyTWFwLnNldChrZXksIHZhbHVlKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykgYXMgW3N0cmluZywgYW55XVtdKSB7XHJcbiAgaWYgKFxyXG4gICAgdmFsdWUgJiZcclxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuICAgICdkYXRlJyBpbiB2YWx1ZVxyXG4gICkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyTWFwLnNldChrZXksIHZhbHVlKTtcclxuICB9XHJcbn1cclxuICB9KTtcclxuXHJcblxyXG4gICAgLy8gY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgLy8gdGhpcy5taW5EYXRlID0gbmV3IERhdGUodG9kYXkpO1xyXG4gICAgLy8gdGhpcy5taW5EYXRlLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpIC0gMzApO1xyXG5cclxuICAgIC8vIHRoaXMubWF4RGF0ZSA9IG5ldyBEYXRlKHRvZGF5KTtcclxuICAgIC8vIHRoaXMubWF4RGF0ZS5zZXREYXRlKHRvZGF5LmdldERhdGUoKSArIDMwKTtcclxuXHJcbiAgLy8gdGhpcy5taW5EYXRlID0gdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKHRoaXMudG9kYXkuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSAtIDMwKSkpO1xyXG4gIC8vIHRoaXMubWF4RGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSh0aGlzLnRvZGF5LnNldERhdGUobmV3IERhdGUoKS5nZXREYXRlKCkgKyAzMSkpKTtcclxuXHJcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG5cclxuY29uc3QgbWluID0gbmV3IERhdGUoKTtcclxubWluLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpIC0gMzApO1xyXG5cclxuY29uc3QgbWF4ID0gbmV3IERhdGUoKTtcclxubWF4LnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpKTtcclxuXHJcbnRoaXMubWluRGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShtaW4pO1xyXG50aGlzLm1heERhdGUgPSB0aGlzLmZvcm1hdERhdGUobWF4KTtcclxuXHJcbiAgICAvLyB0aGlzLmdldFJhbmdlVmFsdWVzKCk7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8vIGdldCBkYXRlQ29udHJvbCgpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJGb3JtLmdldCgnZGF0ZScpO1xyXG4gIC8vIH1cclxuXHJcbiAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGtleSA9IHRoaXMuZnhDb21wb25lbnQ/LmZ4RGF0YT8ubmFtZTtcclxuICAgIGlmKGtleSl7XHJcbiAgICAgICAgY29uc3QgZGF0ZVBhdGNoID0gdGhpcy5kYXRlUGlja2VyTWFwLmdldChrZXkpXHJcbiAgICAgICAgY29uc3QgZmluYWxEYXRlID0gZGF0ZVBhdGNoIHx8IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKVxyXG4gICAgICAgIGlmKGRhdGVQYXRjaCl7XHJcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZSA9IGRhdGVQYXRjaFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUodGhpcy50b2RheS5zZXREYXRlKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC0gMzApKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG5cclxuICAgICAgLy8gdGhpcy5kYXRlUGlja2VyRm9ybS5wYXRjaFZhbHVlKHtkYXRlOmZpbmFsRGF0ZX0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRDb250ZXh0QmFzZUlkKCk7XHJcbiAgfVxyXG5cclxuICBnZXRSYW5nZVZhbHVlcygpIHtcclxuICAgIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLnNldHRpbmcoJ2FwaVVSTCcpKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgXHJcbiAgICAgIGNvbnN0IG1pbk9mZnNldCA9IHJlc3BvbnNlW3RoaXMuc2V0dGluZygnbWluRGF0ZUtleScpXSB8fCB0aGlzLnNldHRpbmcoJ21pblZhbGlkYXRpb24nKTtcclxuICAgICAgY29uc3QgbWF4T2Zmc2V0ID0gcmVzcG9uc2VbdGhpcy5zZXR0aW5nKCdtYXhEYXRlS2V5JyldIHx8IHRoaXMuc2V0dGluZygnbWF4VmFsaWRhdGlvbicpO1xyXG4gIFxyXG4gICAgICAvLyB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSh0b2RheSk7XHJcbiAgICAgIC8vIHRoaXMubWluRGF0ZS5zZXREYXRlKHRvZGF5LmdldERhdGUoKSArIG1pbk9mZnNldCk7XHJcbiAgXHJcbiAgICAgIC8vIHRoaXMubWF4RGF0ZSA9IG5ldyBEYXRlKHRvZGF5KTtcclxuICAgICAgLy8gdGhpcy5tYXhEYXRlLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpICsgbWF4T2Zmc2V0KTtcclxuXHJcbiAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUodGhpcy50b2RheS5zZXREYXRlKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICsgbWluT2Zmc2V0KSkpO1xyXG4gIHRoaXMubWF4RGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSh0aGlzLnRvZGF5LnNldERhdGUobmV3IERhdGUoKS5nZXREYXRlKCkgKyBtYXhPZmZzZXQpKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07IFxyXG59XHJcbiAgXHJcblxyXG5cclxuICAgIHByb3RlY3RlZCBzZXR0aW5ncygpOiBGeFNldHRpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdtaW5WYWxpZGF0aW9uJywgJHRpdGxlOiAnTWluIFZhbGlkYXRpb24nLCB2YWx1ZTogJycgfSksXHJcbiAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWF4VmFsaWRhdGlvbicsICR0aXRsZTogJ01heCBWYWxpZGF0aW9uJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2FwaVVSTCcsICR0aXRsZTogJ0FQSSBVcmwnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWluRGF0ZUtleScsICR0aXRsZTogJ01pbiBSYW5nZSBBUEkgS2V5JywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heERhdGVLZXknLCAkdGl0bGU6ICdNYXggUmFuZ2UgQVBJIEtleScsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdwbGFjZUhvbGRlcicsICR0aXRsZTogJ1BsYWNlaG9sZGVyJywgdmFsdWU6ICdTZWxlY3QgRGF0ZScgfSksXHJcbiAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbGFiZWwnLCAkdGl0bGU6ICdMYWJlbCcsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdkYXRlUGlja2VyRXJyb3JNZXNzYWdlJywgJHRpdGxlOiAnRXJyb3IgTWVzc2FnZScsIHZhbHVlOiAnUGxlYXNlIGZpbGwgb3V0IHRoZSBmaWVsZCcgfSksXHJcbiAgICAgICAgIFxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgICAgIHJldHVybiBbRnhWYWxpZGF0b3JTZXJ2aWNlLnJlcXVpcmVkXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdXBkYXRlVGV4dEFyZWEoKTogdm9pZCB7XHJcbiAgICAvLyBHZXQgYWxsIHRoZSBmb3JtIGNvbnRyb2wgdmFsdWVzXHJcbiAgICBjb25zb2xlLmxvZygnVXBkYXRpbmcgdGV4dCBhcmVhIHdpdGggZHluYW1pYyB2YWx1ZXMnLHRoaXMuZnhDb21wb25lbnQpO1xyXG5cclxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/LiRmb3JtR3JvdXA/LnZhbHVlO1xyXG5cclxuICAgIC8vIGNvbnN0IGZvcm1WYWx1ZXMgPSB7bmFtZTogJ0pvaG4nLCBhZ2U6IDMwfTsgLy8gRXhhbXBsZSB2YWx1ZXMsIHJlcGxhY2Ugd2l0aCBhY3R1YWwgZm9ybSBjb250cm9sIHZhbHVlc1xyXG4gICAgXHJcbiAgICAvLyBSZXBsYWNlIHBsYWNlaG9sZGVycyBpbiB0aGUgdGV4dCB0ZW1wbGF0ZSB3aXRoIGNvcnJlc3BvbmRpbmcgZm9ybSBjb250cm9sIHZhbHVlc1xyXG4gICAgdGhpcy5keW5hbWljVGV4dCA9IHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyh0aGlzLmR5bmFtaWNUZXh0LCBmb3JtVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIC8vIE1ldGhvZCB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBpbiB0aGUgc3RyaW5nIGJhc2VkIG9uIGZvcm0gY29udHJvbCB2YWx1ZXNcclxuICByZXBsYWNlUGxhY2Vob2xkZXJzKHRlbXBsYXRlOiBzdHJpbmcsIHZhbHVlczogYW55KTogc3RyaW5nIHtcclxuICAgIC8vIFVzZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaW5kIHBsYWNlaG9sZGVycyBsaWtlIHtuYW1lfSwge2FnZX0sIGV0Yy5cclxuICAgIHJldHVybiB0ZW1wbGF0ZS5yZXBsYWNlKC97KC4qPyl9L2csIChtYXRjaCwgcGxhY2Vob2xkZXIpID0+IHtcclxuICAgICAgLy8gRm9yIGVhY2ggcGxhY2Vob2xkZXIsIGxvb2sgaXQgdXAgaW4gdGhlIGZvcm0gY29udHJvbCB2YWx1ZXNcclxuICAgICAgcmV0dXJuIHZhbHVlc1twbGFjZWhvbGRlcl0gIT09IHVuZGVmaW5lZCA/IHZhbHVlc1twbGFjZWhvbGRlcl0gOiBtYXRjaDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgLy8gQWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gY2hlY2tlZCwgdXBkYXRlIHRleHQgYXJlYSBpZiBuZWVkZWRcclxuICAgIHRoaXMudXBkYXRlVGV4dEFyZWEoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgIC8vIE1hbnVhbGx5IHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxyXG4gIH1cclxufVxyXG4iLCI8ZngtY29tcG9uZW50IFtmeERhdGFdPVwiZnhEYXRhXCIgI2Z4Q29tcG9uZW50PlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tZGF0ZS1waWNrZXIgcmVsYXRpdmVcIj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic3VtbWFyeUZvcm1cIj5cclxuXHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImRhdGVcIiBjbGFzcz1cImlucHV0LWxhYmVsXCI+e3sgc2V0dGluZygnbGFiZWwnKSB9fTxzcGFuIGNsYXNzPVwiZmllbGQtcmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICAgICAgPHRleHRhcmVhIGZvcm1Db250cm9sTmFtZT1cInN1bW1hcnlcIiBbdmFsdWVdPVwiZHluYW1pY1RleHRcIiA+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdj5cclxuICAgICAgPHNtYWxsICpuZ0lmPVwiZGF0ZVBpY2tlckZvcm0uZ2V0KCdkYXRlJyk/LnRvdWNoZWQgJiYgZGF0ZVBpY2tlckZvcm0uZ2V0KCdkYXRlJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXCJcclxuICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMFwiPlxyXG4gICAgICB7eyBzZXR0aW5nKCdkYXRlUGlja2VyRXJyb3JNZXNzYWdlJykgfX1cclxuICAgICAgPC9zbWFsbD5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbjwvZngtY29tcG9uZW50PiJdfQ==
|