fx-form-builder-wrapper 2.0.98 → 2.0.100
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/customize-dropdown/customize-dropdown.component.mjs +398 -0
- package/esm2022/lib/components/dropdown-with-other/dropdown-with-other.component.mjs +6 -3
- package/esm2022/lib/components/fx-form-component/fx-form-component.component.mjs +3 -3
- package/esm2022/lib/components/radio-group/radio-group.component.mjs +6 -3
- package/esm2022/lib/components/summary/summary.component.mjs +14 -95
- package/esm2022/lib/components/uploader/uploader.component.mjs +2 -2
- package/esm2022/lib/fx-builder-wrapper.component.mjs +5 -5
- package/fesm2022/fx-form-builder-wrapper.mjs +414 -104
- package/fesm2022/fx-form-builder-wrapper.mjs.map +1 -1
- package/lib/components/customize-dropdown/customize-dropdown.component.d.ts +65 -0
- package/lib/components/dropdown-with-other/dropdown-with-other.component.d.ts +1 -0
- package/lib/components/radio-group/radio-group.component.d.ts +1 -0
- package/lib/components/summary/summary.component.d.ts +0 -1
- package/package.json +1 -1
|
@@ -29,6 +29,7 @@ export class DropdownWithOtherComponent extends FxBaseComponent {
|
|
|
29
29
|
options = [];
|
|
30
30
|
isRequired = false;
|
|
31
31
|
isChildRequired = false;
|
|
32
|
+
otherMaxLength = 768;
|
|
32
33
|
dropDownForm = this.fb.group({
|
|
33
34
|
selectedOption: [''],
|
|
34
35
|
otherInput: [{ value: '', disabled: true }],
|
|
@@ -51,6 +52,7 @@ export class DropdownWithOtherComponent extends FxBaseComponent {
|
|
|
51
52
|
}
|
|
52
53
|
}, 200);
|
|
53
54
|
setTimeout(() => {
|
|
55
|
+
this.otherMaxLength = Number(this.setting('other-maxLength')) || 768;
|
|
54
56
|
const mainControl = this.dropDownForm.get('selectedOption');
|
|
55
57
|
if (this.setting('isRequired') === 'true') {
|
|
56
58
|
this.isRequired = true;
|
|
@@ -113,6 +115,7 @@ export class DropdownWithOtherComponent extends FxBaseComponent {
|
|
|
113
115
|
new FxStringSetting({ key: 'select-label', $title: 'Label', value: '' }),
|
|
114
116
|
new FxStringSetting({ key: 'other-label', $title: 'Other Label', value: '' }),
|
|
115
117
|
new FxStringSetting({ key: 'other-placeholder', $title: 'Other Placeholder', value: '' }),
|
|
118
|
+
new FxStringSetting({ key: 'other-maxLength', $title: 'Other Max Length', value: 768 }),
|
|
116
119
|
new FxSelectSetting({ key: 'serviceName', $title: 'Service', value: '' }, [{ option: 'User Service', value: 'user_service' }, { option: 'Patient Service', value: 'patient_service' }, { option: 'Workflow Service', value: 'workflow_service' }]),
|
|
117
120
|
new FxSelectSetting({ key: 'isRequired', $title: 'Required', value: 'true' }, [{ option: 'Yes', value: 'true' }, { option: 'No', value: 'false' }]),
|
|
118
121
|
new FxStringSetting({ key: 'errorMessage', $title: 'Error Message', value: 'Please fill out the field' }),
|
|
@@ -135,13 +138,13 @@ export class DropdownWithOtherComponent extends FxBaseComponent {
|
|
|
135
138
|
});
|
|
136
139
|
}
|
|
137
140
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownWithOtherComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.FxBuilderWrapperService }, { token: i3.ApiServiceRegistry }], target: i0.ɵɵFactoryTarget.Component });
|
|
138
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownWithOtherComponent, isStandalone: true, selector: "dropdown-with-other", viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"flex justify-center custom-dropdown\" [ngClass]=\"setting('customClass')\" *ngIf=\"false\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex flex-row gap-4 items-start\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n\r\n <!-- <label class=\"mb-1 font-semibold text-sm\"></label> -->\r\n <span class=\"input-label dark:text-gray-300\">{{ setting('select-label') }}</span>\r\n <select formControlName=\"selectedOption\" class=\"border p-2 rounded w-full\">\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <!-- Other input (only if 'Other' selected) -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n <label class=\"input-label dark:text-gray-300\">{{ setting('other-label') }}</label>\r\n <div class=\"relative\">\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{setting('other-placeholder')}}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n ></textarea>\r\n </div>\r\n <small *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Other is required.\r\n </small>\r\n </div>\r\n </div>\r\n\r\n \r\n </form>\r\n</div>\r\n\r\n<div class=\"custom-dropdown\" [ngClass]=\"setting('customClass')\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex gap-4 w-full\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n <select\r\n formControlName=\"selectedOption\"\r\n class=\"border p-2 rounded w-full\"\r\n >\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <!-- Other input -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('other-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{ setting('other-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n ></textarea>\r\n\r\n <small\r\n *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('errorMessageOther')}}\r\n </small>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n\r\n\r\n\r\n</fx-component>\r\n\r\n <!-- <small *ngIf=\"datePickerForm.get('date')?.touched && datePickerForm.get('date')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Date is required.\r\n </small> -->", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";.formBuilder_dynamic_table{border:.6px solid #ccc}.formBuilder_dynamic_table>thead>tr{background-color:#4682b4;color:#fff}.formBuilder_dynamic_table>thead>tr>th{font-weight:400!important;padding:.25rem .55rem;font-size:.875rem;text-align:left}.formBuilder_dynamic_table>tbody>tr:nth-child(odd){background-color:#fff}.formBuilder_dynamic_table>tbody>tr:nth-child(2n){background-color:#f6f6f6}.formBuilder_dynamic_table>tbody>tr>td{text-align:left;padding:.25rem .55rem}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{border:1px solid #ccc;border-radius:4px;padding:4px}select:not([size]){background:url('data:image/svg+xml,<svg width=\"22\" height=\"20\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A <rect x=\"0.5\" width=\"24.766\" height=\"24\" rx=\"3\" fill=\"%23FF7900\" fill-opacity=\"0.1\"/>%0D%0A <path d=\"M12.8918 16.5019C12.7255 16.5019 12.5695 16.4736 12.4239 16.4169C12.2783 16.3602 12.1431 16.2628 12.0183 16.1248L6.27803 9.8162C6.04925 9.56477 5.92946 9.25025 5.91864 8.87265C5.90783 8.49505 6.02762 8.16956 6.27803 7.89619C6.50681 7.64476 6.79799 7.51905 7.15155 7.51905C7.50512 7.51905 7.7963 7.64476 8.02508 7.89619L12.8918 13.2105L17.7586 7.89619C17.9874 7.64476 18.2736 7.51356 18.6172 7.50259C18.9607 7.49162 19.2569 7.62282 19.5056 7.89619C19.7344 8.14762 19.8488 8.46762 19.8488 8.85619C19.8488 9.24477 19.7344 9.56477 19.5056 9.8162L13.7654 16.1248C13.6406 16.2619 13.5054 16.3593 13.3598 16.4169C13.2142 16.4745 13.0582 16.5028 12.8918 16.5019Z\" fill=\"%23FAA762\"/>%0D%0A</svg>%0D%0A') right .4rem center no-repeat #fff;border:1px solid #cdcdcd;padding:6px 30px 6px 10px;border-radius:4px;font-size:14px;font-weight:400;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%!important}.dd_down_icon{background:#f3a04126;border-radius:3px!important;padding:2px}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}[type=radio]{width:20px;height:20px}[type=radio]:checked{background-color:#f3a041!important;background-size:1.5em 1.5em}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-color: #f3a041 !important}:is() .p-multiselect{height:37.6px!important;border:1px solid #cdcdcd}:is() .p-multiselect .p-multiselect-label{padding:.5rem .75rem}:is() .p-multiselect .p-multiselect-label .p-placeholder{color:#454545}:is() .p-multiselect .p-multiselect-trigger{width:2.5rem!important}.dd_down_icon span{color:#f3a041}.orientation{height:82%!important}.confirmation-dialog .p-dialog-content{text-align:center}.field-required{color:red;font-size:1.1em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.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: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CalendarModule }] });
|
|
141
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownWithOtherComponent, isStandalone: true, selector: "dropdown-with-other", viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"flex justify-center custom-dropdown\" [ngClass]=\"setting('customClass')\" *ngIf=\"false\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex flex-row gap-4 items-start\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n\r\n <!-- <label class=\"mb-1 font-semibold text-sm\"></label> -->\r\n <span class=\"input-label dark:text-gray-300\">{{ setting('select-label') }}</span>\r\n <select formControlName=\"selectedOption\" class=\"border p-2 rounded w-full\">\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <!-- Other input (only if 'Other' selected) -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n <label class=\"input-label dark:text-gray-300\">{{ setting('other-label') }}</label>\r\n <div class=\"relative\">\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{setting('other-placeholder')}}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n ></textarea>\r\n </div>\r\n <small *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Other is required.\r\n </small>\r\n </div>\r\n </div>\r\n\r\n \r\n </form>\r\n</div>\r\n\r\n<div class=\"custom-dropdown\" [ngClass]=\"setting('customClass')\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex gap-4 w-full\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n <select\r\n formControlName=\"selectedOption\"\r\n class=\"border p-2 rounded w-full\"\r\n >\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <!-- Other input -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('other-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{ setting('other-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n [maxlength]=\"otherMaxLength\"\r\n ></textarea>\r\n\r\n <small\r\n *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('errorMessageOther')}}\r\n </small>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n\r\n\r\n\r\n</fx-component>\r\n\r\n <!-- <small *ngIf=\"datePickerForm.get('date')?.touched && datePickerForm.get('date')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Date is required.\r\n </small> -->", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";.formBuilder_dynamic_table{border:.6px solid #ccc}.formBuilder_dynamic_table>thead>tr{background-color:#4682b4;color:#fff}.formBuilder_dynamic_table>thead>tr>th{font-weight:400!important;padding:.25rem .55rem;font-size:.875rem;text-align:left}.formBuilder_dynamic_table>tbody>tr:nth-child(odd){background-color:#fff}.formBuilder_dynamic_table>tbody>tr:nth-child(2n){background-color:#f6f6f6}.formBuilder_dynamic_table>tbody>tr>td{text-align:left;padding:.25rem .55rem}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{border:1px solid #ccc;border-radius:4px;padding:4px}select:not([size]){background:url('data:image/svg+xml,<svg width=\"22\" height=\"20\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A <rect x=\"0.5\" width=\"24.766\" height=\"24\" rx=\"3\" fill=\"%23FF7900\" fill-opacity=\"0.1\"/>%0D%0A <path d=\"M12.8918 16.5019C12.7255 16.5019 12.5695 16.4736 12.4239 16.4169C12.2783 16.3602 12.1431 16.2628 12.0183 16.1248L6.27803 9.8162C6.04925 9.56477 5.92946 9.25025 5.91864 8.87265C5.90783 8.49505 6.02762 8.16956 6.27803 7.89619C6.50681 7.64476 6.79799 7.51905 7.15155 7.51905C7.50512 7.51905 7.7963 7.64476 8.02508 7.89619L12.8918 13.2105L17.7586 7.89619C17.9874 7.64476 18.2736 7.51356 18.6172 7.50259C18.9607 7.49162 19.2569 7.62282 19.5056 7.89619C19.7344 8.14762 19.8488 8.46762 19.8488 8.85619C19.8488 9.24477 19.7344 9.56477 19.5056 9.8162L13.7654 16.1248C13.6406 16.2619 13.5054 16.3593 13.3598 16.4169C13.2142 16.4745 13.0582 16.5028 12.8918 16.5019Z\" fill=\"%23FAA762\"/>%0D%0A</svg>%0D%0A') right .4rem center no-repeat #fff;border:1px solid #cdcdcd;padding:6px 30px 6px 10px;border-radius:4px;font-size:14px;font-weight:400;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%!important}.dd_down_icon{background:#f3a04126;border-radius:3px!important;padding:2px}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}[type=radio]{width:20px;height:20px}[type=radio]:checked{background-color:#f3a041!important;background-size:1.5em 1.5em}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-color: #f3a041 !important}:is() .p-multiselect{height:37.6px!important;border:1px solid #cdcdcd}:is() .p-multiselect .p-multiselect-label{padding:.5rem .75rem}:is() .p-multiselect .p-multiselect-label .p-placeholder{color:#454545}:is() .p-multiselect .p-multiselect-trigger{width:2.5rem!important}.dd_down_icon span{color:#f3a041}.orientation{height:82%!important}.confirmation-dialog .p-dialog-content{text-align:center}.field-required{color:red;font-size:1.1em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.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: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CalendarModule }] });
|
|
139
142
|
}
|
|
140
143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownWithOtherComponent, decorators: [{
|
|
141
144
|
type: Component,
|
|
142
|
-
args: [{ selector: 'dropdown-with-other', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent, CalendarModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"flex justify-center custom-dropdown\" [ngClass]=\"setting('customClass')\" *ngIf=\"false\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex flex-row gap-4 items-start\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n\r\n <!-- <label class=\"mb-1 font-semibold text-sm\"></label> -->\r\n <span class=\"input-label dark:text-gray-300\">{{ setting('select-label') }}</span>\r\n <select formControlName=\"selectedOption\" class=\"border p-2 rounded w-full\">\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <!-- Other input (only if 'Other' selected) -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n <label class=\"input-label dark:text-gray-300\">{{ setting('other-label') }}</label>\r\n <div class=\"relative\">\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{setting('other-placeholder')}}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n ></textarea>\r\n </div>\r\n <small *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Other is required.\r\n </small>\r\n </div>\r\n </div>\r\n\r\n \r\n </form>\r\n</div>\r\n\r\n<div class=\"custom-dropdown\" [ngClass]=\"setting('customClass')\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex gap-4 w-full\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n <select\r\n formControlName=\"selectedOption\"\r\n class=\"border p-2 rounded w-full\"\r\n >\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <!-- Other input -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('other-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{ setting('other-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n ></textarea>\r\n\r\n <small\r\n *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('errorMessageOther')}}\r\n </small>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n\r\n\r\n\r\n</fx-component>\r\n\r\n <!-- <small *ngIf=\"datePickerForm.get('date')?.touched && datePickerForm.get('date')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Date is required.\r\n </small> -->", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";.formBuilder_dynamic_table{border:.6px solid #ccc}.formBuilder_dynamic_table>thead>tr{background-color:#4682b4;color:#fff}.formBuilder_dynamic_table>thead>tr>th{font-weight:400!important;padding:.25rem .55rem;font-size:.875rem;text-align:left}.formBuilder_dynamic_table>tbody>tr:nth-child(odd){background-color:#fff}.formBuilder_dynamic_table>tbody>tr:nth-child(2n){background-color:#f6f6f6}.formBuilder_dynamic_table>tbody>tr>td{text-align:left;padding:.25rem .55rem}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{border:1px solid #ccc;border-radius:4px;padding:4px}select:not([size]){background:url('data:image/svg+xml,<svg width=\"22\" height=\"20\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A <rect x=\"0.5\" width=\"24.766\" height=\"24\" rx=\"3\" fill=\"%23FF7900\" fill-opacity=\"0.1\"/>%0D%0A <path d=\"M12.8918 16.5019C12.7255 16.5019 12.5695 16.4736 12.4239 16.4169C12.2783 16.3602 12.1431 16.2628 12.0183 16.1248L6.27803 9.8162C6.04925 9.56477 5.92946 9.25025 5.91864 8.87265C5.90783 8.49505 6.02762 8.16956 6.27803 7.89619C6.50681 7.64476 6.79799 7.51905 7.15155 7.51905C7.50512 7.51905 7.7963 7.64476 8.02508 7.89619L12.8918 13.2105L17.7586 7.89619C17.9874 7.64476 18.2736 7.51356 18.6172 7.50259C18.9607 7.49162 19.2569 7.62282 19.5056 7.89619C19.7344 8.14762 19.8488 8.46762 19.8488 8.85619C19.8488 9.24477 19.7344 9.56477 19.5056 9.8162L13.7654 16.1248C13.6406 16.2619 13.5054 16.3593 13.3598 16.4169C13.2142 16.4745 13.0582 16.5028 12.8918 16.5019Z\" fill=\"%23FAA762\"/>%0D%0A</svg>%0D%0A') right .4rem center no-repeat #fff;border:1px solid #cdcdcd;padding:6px 30px 6px 10px;border-radius:4px;font-size:14px;font-weight:400;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%!important}.dd_down_icon{background:#f3a04126;border-radius:3px!important;padding:2px}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}[type=radio]{width:20px;height:20px}[type=radio]:checked{background-color:#f3a041!important;background-size:1.5em 1.5em}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-color: #f3a041 !important}:is() .p-multiselect{height:37.6px!important;border:1px solid #cdcdcd}:is() .p-multiselect .p-multiselect-label{padding:.5rem .75rem}:is() .p-multiselect .p-multiselect-label .p-placeholder{color:#454545}:is() .p-multiselect .p-multiselect-trigger{width:2.5rem!important}.dd_down_icon span{color:#f3a041}.orientation{height:82%!important}.confirmation-dialog .p-dialog-content{text-align:center}.field-required{color:red;font-size:1.1em}\n"] }]
|
|
145
|
+
args: [{ selector: 'dropdown-with-other', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent, CalendarModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div class=\"flex justify-center custom-dropdown\" [ngClass]=\"setting('customClass')\" *ngIf=\"false\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex flex-row gap-4 items-start\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n\r\n <!-- <label class=\"mb-1 font-semibold text-sm\"></label> -->\r\n <span class=\"input-label dark:text-gray-300\">{{ setting('select-label') }}</span>\r\n <select formControlName=\"selectedOption\" class=\"border p-2 rounded w-full\">\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <!-- Other input (only if 'Other' selected) -->\r\n <div class=\"flex flex-col w-1/2\">\r\n <div class=\"relative\">\r\n <label class=\"input-label dark:text-gray-300\">{{ setting('other-label') }}</label>\r\n <div class=\"relative\">\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{setting('other-placeholder')}}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n ></textarea>\r\n </div>\r\n <small *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Other is required.\r\n </small>\r\n </div>\r\n </div>\r\n\r\n \r\n </form>\r\n</div>\r\n\r\n<div class=\"custom-dropdown\" [ngClass]=\"setting('customClass')\">\r\n <form [formGroup]=\"dropDownForm\" class=\"flex gap-4 w-full\">\r\n \r\n <!-- Dropdown -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n <select\r\n formControlName=\"selectedOption\"\r\n class=\"border p-2 rounded w-full\"\r\n >\r\n <option value=\"\">Select</option>\r\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\r\n {{ option?.label }}\r\n </option>\r\n </select>\r\n <small *ngIf=\"dropDownForm.get('selectedOption')?.touched && dropDownForm.get('selectedOption')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n {{ setting('errorMessage')}}\r\n </small>\r\n </div>\r\n\r\n <!-- Other input -->\r\n <div class=\"flex-1 relative\">\r\n <label class=\"input-label dark:text-gray-300\">\r\n {{ setting('other-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n <textarea\r\n formControlName=\"otherInput\"\r\n placeholder=\"{{ setting('other-placeholder') }}\"\r\n class=\"border p-2 rounded w-full\"\r\n rows=\"2\"\r\n [maxlength]=\"otherMaxLength\"\r\n ></textarea>\r\n\r\n <small\r\n *ngIf=\"dropDownForm.get('otherInput')?.touched && dropDownForm.get('otherInput')?.errors?.['required']\"\r\n class=\"text-red-500\"\r\n >\r\n {{ setting('errorMessageOther')}}\r\n </small>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n\r\n\r\n\r\n</fx-component>\r\n\r\n <!-- <small *ngIf=\"datePickerForm.get('date')?.touched && datePickerForm.get('date')?.errors?.['required']\"\r\n class=\"text-red-500\">\r\n Date is required.\r\n </small> -->", styles: ["@import\"https://unpkg.com/primeng@17.18.10/resources/themes/lara-light-blue/theme.css\";@import\"https://unpkg.com/primeng@17.18.10/resources/primeng.min.css\";@import\"https://unpkg.com/primeicons@6.0.0/primeicons.css\";.formBuilder_dynamic_table{border:.6px solid #ccc}.formBuilder_dynamic_table>thead>tr{background-color:#4682b4;color:#fff}.formBuilder_dynamic_table>thead>tr>th{font-weight:400!important;padding:.25rem .55rem;font-size:.875rem;text-align:left}.formBuilder_dynamic_table>tbody>tr:nth-child(odd){background-color:#fff}.formBuilder_dynamic_table>tbody>tr:nth-child(2n){background-color:#f6f6f6}.formBuilder_dynamic_table>tbody>tr>td{text-align:left;padding:.25rem .55rem}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{border:1px solid #ccc;border-radius:4px;padding:4px}select:not([size]){background:url('data:image/svg+xml,<svg width=\"22\" height=\"20\" viewBox=\"0 0 26 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A <rect x=\"0.5\" width=\"24.766\" height=\"24\" rx=\"3\" fill=\"%23FF7900\" fill-opacity=\"0.1\"/>%0D%0A <path d=\"M12.8918 16.5019C12.7255 16.5019 12.5695 16.4736 12.4239 16.4169C12.2783 16.3602 12.1431 16.2628 12.0183 16.1248L6.27803 9.8162C6.04925 9.56477 5.92946 9.25025 5.91864 8.87265C5.90783 8.49505 6.02762 8.16956 6.27803 7.89619C6.50681 7.64476 6.79799 7.51905 7.15155 7.51905C7.50512 7.51905 7.7963 7.64476 8.02508 7.89619L12.8918 13.2105L17.7586 7.89619C17.9874 7.64476 18.2736 7.51356 18.6172 7.50259C18.9607 7.49162 19.2569 7.62282 19.5056 7.89619C19.7344 8.14762 19.8488 8.46762 19.8488 8.85619C19.8488 9.24477 19.7344 9.56477 19.5056 9.8162L13.7654 16.1248C13.6406 16.2619 13.5054 16.3593 13.3598 16.4169C13.2142 16.4745 13.0582 16.5028 12.8918 16.5019Z\" fill=\"%23FAA762\"/>%0D%0A</svg>%0D%0A') right .4rem center no-repeat #fff;border:1px solid #cdcdcd;padding:6px 30px 6px 10px;border-radius:4px;font-size:14px;font-weight:400;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%!important}.dd_down_icon{background:#f3a04126;border-radius:3px!important;padding:2px}[type=checkbox]{padding:12px}[type=checkbox]:checked{background-color:#f3a041!important;padding:12px;background-size:1em 1em!important}[type=radio]{width:20px;height:20px}[type=radio]:checked{background-color:#f3a041!important;background-size:1.5em 1.5em}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-color: #f3a041 !important}:is() .p-multiselect{height:37.6px!important;border:1px solid #cdcdcd}:is() .p-multiselect .p-multiselect-label{padding:.5rem .75rem}:is() .p-multiselect .p-multiselect-label .p-placeholder{color:#454545}:is() .p-multiselect .p-multiselect-trigger{width:2.5rem!important}.dd_down_icon span{color:#f3a041}.orientation{height:82%!important}.confirmation-dialog .p-dialog-content{text-align:center}.field-required{color:red;font-size:1.1em}\n"] }]
|
|
143
146
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.FxBuilderWrapperService }, { type: i3.ApiServiceRegistry }], propDecorators: { fxComponent: [{
|
|
144
147
|
type: ViewChild,
|
|
145
148
|
args: ['fxComponent']
|
|
146
149
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duLXdpdGgtb3RoZXIvZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duLXdpdGgtb3RoZXIvZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBbUIsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuSyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGVBQWU7SUFzQnpDO0lBQWdDO0lBQTBCO0lBQTBEO0lBckJoSSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBQzFDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsV0FBVyxHQUFHLElBQUksR0FB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QUFFLGNBQWMsQ0FBQztzTEFTNUQsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRnhCYXNlQ29tcG9uZW50LCBGeENvbXBvbmVudCwgRnhPcHRpb25TZXR0aW5nLCBGeFNlbGVjdFNldHRpbmcsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvY29yZSdcclxuaW1wb3J0IHsgVGl0bGVTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Ryb3Bkb3duLXdpdGgtb3RoZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIEZ4Q29tcG9uZW50LCBDYWxlbmRhck1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLXdpdGgtb3RoZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9kcm9wZG93bi13aXRoLW90aGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bldpdGhPdGhlckNvbXBvbmVudCBleHRlbmRzIEZ4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbiAgZm9ybU9iamVjdDogb2JqZWN0ID0ge307XHJcbiAgZHJvcGRvd25NYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2Z4Q29tcG9uZW50JykgZnhDb21wb25lbnQhOiBGeENvbXBvbmVudDtcclxuICAvLyBvcHRpb25zID0gW1xyXG4gIC8vICAgICAgIHsgb3B0aW9uVmFsdWU6ICdDbGluaWNhbCBOb3RlcyAxJywgb3B0aW9uTmFtZTogJ0NsaW5pY2FsIE5vdGVzIDEnIH0sXHJcbiAgLy8gICAgICAgeyBvcHRpb25WYWx1ZTogJ0NsaW5pY2FsIE5vdGVzIDInLCBvcHRpb25OYW1lOiAnQ2xpbmljYWwgTm90ZXMgMicgfSxcclxuICAvLyAgICAgICB7IG9wdGlvblZhbHVlOiAnQ2xpbmljYWwgTm90ZXMgMycsIG9wdGlvbk5hbWU6ICdDbGluaWNhbCBOb3RlcyAzJyB9LFxyXG4gIC8vICAgICAgIHsgb3B0aW9uVmFsdWU6ICdvdGhlcicsIG9wdGlvbk5hbWU6ICdPdGhlcicgfVxyXG4gIC8vIF07XHJcblxyXG4gIG9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzQ2hpbGRSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZHJvcERvd25Gb3JtOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgIHNlbGVjdGVkT3B0aW9uOiBbJyddLFxyXG4gICAgb3RoZXJJbnB1dDogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLCBwcml2YXRlIGZ4QXBpU2VydmljZTogQXBpU2VydmljZVJlZ2lzdHJ5KSB7XHJcbiAgICBzdXBlcihjZHIpXHJcbiAgICB0aGlzLm9uSW5pdC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLmRyb3BEb3duRm9ybSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZnhDb21wb25lbnQ/LmZ4RGF0YT8ubmFtZTtcclxuXHJcbiAgICAgIGlmIChrZXkgJiYgdGhpcy5kcm9wZG93bk1hcC5oYXMoa2V5KSkge1xyXG4gICAgICAgIHRoaXMuZHJvcERvd25Gb3JtLnBhdGNoVmFsdWUodGhpcy5kcm9wZG93bk1hcC5nZXQoa2V5KSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDIwMCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1haW5Db250cm9sID0gdGhpcy5kcm9wRG93bkZvcm0uZ2V0KCdzZWxlY3RlZE9wdGlvbicpO1xyXG4gICAgICBpZiAodGhpcy5zZXR0aW5nKCdpc1JlcXVpcmVkJykgPT09ICd0cnVlJykge1xyXG4gICAgICAgIHRoaXMuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgbWFpbkNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICBtYWluQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcblxyXG4gICAgICAgIC8vICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpIGFzIFtzdHJpbmcsIGFueV1bXSkge1xyXG4gICAgICAgIC8vICAgIGlmIChrZXkuaW5jbHVkZXMoJ2Ryb3Bkb3duLXdpdGgtb3RoZXInKSkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLmZvcm1PYmplY3QgPSB2YWx1ZTtcclxuICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgLy8gIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdmFsdWUgJiZcclxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICAnc2VsZWN0ZWRPcHRpb24nIGluIHZhbHVlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk1hcC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSlcclxuXHJcbiAgICAvLyAgdGhpcy5kcm9wRG93bkZvcm0uZ2V0KCdzZWxlY3RlZE9wdGlvbicpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgIC8vICAgY29uc3Qgb3RoZXJDb250cm9sID0gdGhpcy5kcm9wRG93bkZvcm0uZ2V0KCdvdGhlcklucHV0Jyk7XHJcbiAgICAvLyAgIGlmICh2YWx1ZSA9PT0gJ290aGVyJykge1xyXG4gICAgLy8gICAgIG90aGVyQ29udHJvbD8uZW5hYmxlKCk7XHJcbiAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgb3RoZXJDb250cm9sPy5kaXNhYmxlKCk7XHJcbiAgICAvLyAgICAgb3RoZXJDb250cm9sPy5yZXNldCgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLmZ4QXBpU2VydmljZS5nZXRTZXJ2aWNlVXJsKHRoaXMuc2V0dGluZygnc2VydmljZU5hbWUnKSk7XHJcbiAgICB0aGlzLmdldE9wdGlvbnMoc2VydmljZVVybCwgdGhpcy5zZXR0aW5nKCdjbGluaWNhbE5vdGVzVVJMJykpO1xyXG5cclxuICAgIHRoaXMuZHJvcERvd25Gb3JtLmdldCgnc2VsZWN0ZWRPcHRpb24nKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGNvbnN0IG90aGVyQ29udHJvbCA9IHRoaXMuZHJvcERvd25Gb3JtLmdldCgnb3RoZXJJbnB1dCcpO1xyXG5cclxuICAgICAgaWYgKHZhbHVlID09PSAnb3RoZXInKSB7XHJcbiAgICAgICAgb3RoZXJDb250cm9sPy5lbmFibGUoKTtcclxuICAgICAgICB0aGlzLmlzQ2hpbGRSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgb3RoZXJDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0NoaWxkUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgICBvdGhlckNvbnRyb2w/LmRpc2FibGUoKTtcclxuICAgICAgICBvdGhlckNvbnRyb2w/LnJlc2V0KCk7XHJcbiAgICAgICAgb3RoZXJDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgb3RoZXJDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIG90aGVyQ29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldHRpbmdzKCk6IEZ4U2V0dGluZ1tdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdjbGluaWNhbE5vdGVzVVJMJywgJHRpdGxlOiAnQVBJIFVybCcsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2N1c3RvbUNsYXNzJywgJHRpdGxlOiAnQ3VzdG9tIENsYXNzIE5hbWUnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdzZWxlY3QtbGFiZWwnLCAkdGl0bGU6ICdMYWJlbCcsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ290aGVyLWxhYmVsJywgJHRpdGxlOiAnT3RoZXIgTGFiZWwnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdvdGhlci1wbGFjZWhvbGRlcicsICR0aXRsZTogJ090aGVyIFBsYWNlaG9sZGVyJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTZWxlY3RTZXR0aW5nKHsga2V5OiAnc2VydmljZU5hbWUnLCAkdGl0bGU6ICdTZXJ2aWNlJywgdmFsdWU6ICcnIH0sIFt7IG9wdGlvbjogJ1VzZXIgU2VydmljZScsIHZhbHVlOiAndXNlcl9zZXJ2aWNlJyB9LCB7IG9wdGlvbjogJ1BhdGllbnQgU2VydmljZScsIHZhbHVlOiAncGF0aWVudF9zZXJ2aWNlJyB9LCB7IG9wdGlvbjogJ1dvcmtmbG93IFNlcnZpY2UnLCB2YWx1ZTogJ3dvcmtmbG93X3NlcnZpY2UnIH1dKSxcclxuICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7IGtleTogJ2lzUmVxdWlyZWQnLCAkdGl0bGU6ICdSZXF1aXJlZCcsIHZhbHVlOiAndHJ1ZScgfSwgW3sgb3B0aW9uOiAnWWVzJywgdmFsdWU6ICd0cnVlJyB9LCB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdmYWxzZScgfV0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnZXJyb3JNZXNzYWdlJywgJHRpdGxlOiAnRXJyb3IgTWVzc2FnZScsIHZhbHVlOiAnUGxlYXNlIGZpbGwgb3V0IHRoZSBmaWVsZCcgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdlcnJvck1lc3NhZ2VPdGhlcicsICR0aXRsZTogJ090aGVyIEVycm9yIE1lc3NhZ2UnLCB2YWx1ZTogJ090aGVyIGlzIHJlcXVpcmVkJyB9KSxcclxuXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRpb25zKCk6IEZ4VmFsaWRhdGlvbltdIHtcclxuICAgIHJldHVybiBbRnhWYWxpZGF0b3JTZXJ2aWNlLnJlcXVpcmVkXTtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbnMoc2VydmljZVVybDogc3RyaW5nLCB1cmw6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmluYWxVcmwgPSBzZXJ2aWNlVXJsICsgdXJsO1xyXG4gICAgdGhpcy5odHRwLmdldDxhbnlbXT4oZmluYWxVcmwpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzcG9uc2U/LmRhdGE7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goeyB2YWx1ZTogJ290aGVyJywgbGFiZWw6ICdPdGhlcicgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb3B0aW9ucycsIGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiIsIjxmeC1jb21wb25lbnQgW2Z4RGF0YV09XCJmeERhdGFcIiAjZnhDb21wb25lbnQ+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgY3VzdG9tLWRyb3Bkb3duXCIgIFtuZ0NsYXNzXT1cInNldHRpbmcoJ2N1c3RvbUNsYXNzJylcIiAqbmdJZj1cImZhbHNlXCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJkcm9wRG93bkZvcm1cIiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTQgaXRlbXMtc3RhcnRcIj5cclxuICAgIFxyXG4gICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctMS8yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG5cclxuICAgICAgPCEtLSA8bGFiZWwgY2xhc3M9XCJtYi0xIGZvbnQtc2VtaWJvbGQgdGV4dC1zbVwiPjwvbGFiZWw+IC0tPlxyXG4gICAgICA8c3BhbiAgY2xhc3M9XCJpbnB1dC1sYWJlbCBkYXJrOnRleHQtZ3JheS0zMDBcIj57eyBzZXR0aW5nKCdzZWxlY3QtbGFiZWwnKSB9fTwvc3Bhbj5cclxuICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZE9wdGlvblwiIGNsYXNzPVwiYm9yZGVyIHAtMiByb3VuZGVkIHctZnVsbFwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbj8ubGFiZWwgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICA8c21hbGwgKm5nSWY9XCJkcm9wRG93bkZvcm0uZ2V0KCdzZWxlY3RlZE9wdGlvbicpPy50b3VjaGVkICYmIGRyb3BEb3duRm9ybS5nZXQoJ3NlbGVjdGVkT3B0aW9uJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXCJcclxuICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMFwiPlxyXG4gICAgICAge3sgc2V0dGluZygnZXJyb3JNZXNzYWdlJyl9fVxyXG4gICAgICA8L3NtYWxsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gT3RoZXIgaW5wdXQgKG9ubHkgaWYgJ090aGVyJyBzZWxlY3RlZCkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LTEvMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZGFyazp0ZXh0LWdyYXktMzAwXCI+e3sgc2V0dGluZygnb3RoZXItbGFiZWwnKSB9fTwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvdGhlcklucHV0XCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7c2V0dGluZygnb3RoZXItcGxhY2Vob2xkZXInKX19XCJcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBwLTIgcm91bmRlZCB3LWZ1bGxcIlxyXG4gICAgICAgIHJvd3M9XCIyXCJcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c21hbGwgKm5nSWY9XCJkcm9wRG93bkZvcm0uZ2V0KCdvdGhlcklucHV0Jyk/LnRvdWNoZWQgJiYgZHJvcERvd25Gb3JtLmdldCgnb3RoZXJJbnB1dCcpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj5cclxuICAgICAgICBPdGhlciBpcyByZXF1aXJlZC5cclxuICAgICAgPC9zbWFsbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBcclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiIFtuZ0NsYXNzXT1cInNldHRpbmcoJ2N1c3RvbUNsYXNzJylcIj5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImRyb3BEb3duRm9ybVwiIGNsYXNzPVwiZmxleCBnYXAtNCB3LWZ1bGxcIj5cclxuICAgIFxyXG4gICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZGFyazp0ZXh0LWdyYXktMzAwXCI+XHJcbiAgICAgICAge3sgc2V0dGluZygnc2VsZWN0LWxhYmVsJykgfX0gPHNwYW4gY2xhc3M9XCJmaWVsZC1yZXF1aXJlZFwiICpuZ0lmPVwiaXNSZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxzZWxlY3RcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZE9wdGlvblwiXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0yIHJvdW5kZWQgdy1mdWxsXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbj8ubGFiZWwgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDxzbWFsbCAqbmdJZj1cImRyb3BEb3duRm9ybS5nZXQoJ3NlbGVjdGVkT3B0aW9uJyk/LnRvdWNoZWQgJiYgZHJvcERvd25Gb3JtLmdldCgnc2VsZWN0ZWRPcHRpb24nKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+XHJcbiAgICAgICB7eyBzZXR0aW5nKCdlcnJvck1lc3NhZ2UnKX19XHJcbiAgICAgIDwvc21hbGw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE90aGVyIGlucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtMSByZWxhdGl2ZVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbCBkYXJrOnRleHQtZ3JheS0zMDBcIj5cclxuICAgICAgICB7eyBzZXR0aW5nKCdvdGhlci1sYWJlbCcpIH19IDxzcGFuIGNsYXNzPVwiZmllbGQtcmVxdWlyZWRcIiAqbmdJZj1cImlzQ2hpbGRSZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm90aGVySW5wdXRcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgc2V0dGluZygnb3RoZXItcGxhY2Vob2xkZXInKSB9fVwiXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0yIHJvdW5kZWQgdy1mdWxsXCJcclxuICAgICAgICByb3dzPVwiMlwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG5cclxuICAgICAgPHNtYWxsXHJcbiAgICAgICAgKm5nSWY9XCJkcm9wRG93bkZvcm0uZ2V0KCdvdGhlcklucHV0Jyk/LnRvdWNoZWQgJiYgZHJvcERvd25Gb3JtLmdldCgnb3RoZXJJbnB1dCcpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgc2V0dGluZygnZXJyb3JNZXNzYWdlT3RoZXInKX19XHJcbiAgICAgIDwvc21hbGw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9mb3JtPlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuPC9meC1jb21wb25lbnQ+XHJcblxyXG4gICAgICA8IS0tIDxzbWFsbCAqbmdJZj1cImRhdGVQaWNrZXJGb3JtLmdldCgnZGF0ZScpPy50b3VjaGVkICYmIGRhdGVQaWNrZXJGb3JtLmdldCgnZGF0ZScpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj5cclxuICAgICAgICBEYXRlIGlzIHJlcXVpcmVkLlxyXG4gICAgICA8L3NtYWxsPiAtLT4iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duLXdpdGgtb3RoZXIvZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duLXdpdGgtb3RoZXIvZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBbUIsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuSyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGVBQWU7SUF1QnpDO0lBQWdDO0lBQTBCO0lBQTBEO0lBdEJoSSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBQzFDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsV0FBVyxHQUFHLElBQUksR0FB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Q0FBQzt3R0EzSVUsMEJBQTBCOzRGQUExQiwwQkFBMEIsa05DbEJ2QywrdEhBb0drQixzK0ZEdEZOLFlBQVksNlZBQUUsbUJBQW1CLDBnREFBRSxXQUFXLCtCQUFFLFdBQVcsNEVBQUUsY0FBYzs7NEZBSTFFLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDO3NMQVM1RCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4Q29tcG9uZW50LCBGeE9wdGlvblNldHRpbmcsIEZ4U2VsZWN0U2V0dGluZywgRnhTZXR0aW5nLCBGeFN0cmluZ1NldHRpbmcsIEZ4VmFsaWRhdGlvbiwgRnhWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9meCc7XHJcbmltcG9ydCB7IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9jb3JlJ1xyXG5pbXBvcnQgeyBUaXRsZVN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZHJvcGRvd24td2l0aC1vdGhlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSwgRnhDb21wb25lbnQsIENhbGVuZGFyTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24td2l0aC1vdGhlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Ryb3Bkb3duLXdpdGgtb3RoZXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duV2l0aE90aGVyQ29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Qm9vbGVhbj4oKTtcclxuICBmb3JtT2JqZWN0OiBvYmplY3QgPSB7fTtcclxuICBkcm9wZG93bk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcbiAgQFZpZXdDaGlsZCgnZnhDb21wb25lbnQnKSBmeENvbXBvbmVudCE6IEZ4Q29tcG9uZW50O1xyXG4gIC8vIG9wdGlvbnMgPSBbXHJcbiAgLy8gICAgICAgeyBvcHRpb25WYWx1ZTogJ0NsaW5pY2FsIE5vdGVzIDEnLCBvcHRpb25OYW1lOiAnQ2xpbmljYWwgTm90ZXMgMScgfSxcclxuICAvLyAgICAgICB7IG9wdGlvblZhbHVlOiAnQ2xpbmljYWwgTm90ZXMgMicsIG9wdGlvbk5hbWU6ICdDbGluaWNhbCBOb3RlcyAyJyB9LFxyXG4gIC8vICAgICAgIHsgb3B0aW9uVmFsdWU6ICdDbGluaWNhbCBOb3RlcyAzJywgb3B0aW9uTmFtZTogJ0NsaW5pY2FsIE5vdGVzIDMnIH0sXHJcbiAgLy8gICAgICAgeyBvcHRpb25WYWx1ZTogJ290aGVyJywgb3B0aW9uTmFtZTogJ090aGVyJyB9XHJcbiAgLy8gXTtcclxuXHJcbiAgb3B0aW9uczogYW55W10gPSBbXTtcclxuICBpc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNDaGlsZFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb3RoZXJNYXhMZW5ndGg6IG51bWJlciA9IDc2ODtcclxuXHJcbiAgcHVibGljIGRyb3BEb3duRm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICBzZWxlY3RlZE9wdGlvbjogWycnXSxcclxuICAgIG90aGVySW5wdXQ6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlOiBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSwgcHJpdmF0ZSBmeEFwaVNlcnZpY2U6IEFwaVNlcnZpY2VSZWdpc3RyeSkge1xyXG4gICAgc3VwZXIoY2RyKVxyXG4gICAgdGhpcy5vbkluaXQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fcmVnaXN0ZXIodGhpcy5kcm9wRG93bkZvcm0pO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/Lm5hbWU7XHJcblxyXG4gICAgICBpZiAoa2V5ICYmIHRoaXMuZHJvcGRvd25NYXAuaGFzKGtleSkpIHtcclxuICAgICAgICB0aGlzLmRyb3BEb3duRm9ybS5wYXRjaFZhbHVlKHRoaXMuZHJvcGRvd25NYXAuZ2V0KGtleSkpO1xyXG4gICAgICB9XHJcbiAgICB9LCAyMDApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm90aGVyTWF4TGVuZ3RoID0gTnVtYmVyKHRoaXMuc2V0dGluZygnb3RoZXItbWF4TGVuZ3RoJykpIHx8IDc2ODtcclxuICAgICAgY29uc3QgbWFpbkNvbnRyb2wgPSB0aGlzLmRyb3BEb3duRm9ybS5nZXQoJ3NlbGVjdGVkT3B0aW9uJyk7XHJcbiAgICAgIGlmICh0aGlzLnNldHRpbmcoJ2lzUmVxdWlyZWQnKSA9PT0gJ3RydWUnKSB7XHJcbiAgICAgICAgdGhpcy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICBtYWluQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICAgIG1haW5Db250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuXHJcbiAgICAgICAgLy8gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykgYXMgW3N0cmluZywgYW55XVtdKSB7XHJcbiAgICAgICAgLy8gICAgaWYgKGtleS5pbmNsdWRlcygnZHJvcGRvd24td2l0aC1vdGhlcicpKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuZm9ybU9iamVjdCA9IHZhbHVlO1xyXG4gICAgICAgIC8vICAgIH1cclxuICAgICAgICAvLyAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpIGFzIFtzdHJpbmcsIGFueV1bXSkge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB2YWx1ZSAmJlxyXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgICdzZWxlY3RlZE9wdGlvbicgaW4gdmFsdWVcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duTWFwLnNldChrZXksIHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KVxyXG5cclxuICAgIC8vICB0aGlzLmRyb3BEb3duRm9ybS5nZXQoJ3NlbGVjdGVkT3B0aW9uJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgLy8gICBjb25zdCBvdGhlckNvbnRyb2wgPSB0aGlzLmRyb3BEb3duRm9ybS5nZXQoJ290aGVySW5wdXQnKTtcclxuICAgIC8vICAgaWYgKHZhbHVlID09PSAnb3RoZXInKSB7XHJcbiAgICAvLyAgICAgb3RoZXJDb250cm9sPy5lbmFibGUoKTtcclxuICAgIC8vICAgfSBlbHNlIHtcclxuICAgIC8vICAgICBvdGhlckNvbnRyb2w/LmRpc2FibGUoKTtcclxuICAgIC8vICAgICBvdGhlckNvbnRyb2w/LnJlc2V0KCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuZnhBcGlTZXJ2aWNlLmdldFNlcnZpY2VVcmwodGhpcy5zZXR0aW5nKCdzZXJ2aWNlTmFtZScpKTtcclxuICAgIHRoaXMuZ2V0T3B0aW9ucyhzZXJ2aWNlVXJsLCB0aGlzLnNldHRpbmcoJ2NsaW5pY2FsTm90ZXNVUkwnKSk7XHJcblxyXG4gICAgdGhpcy5kcm9wRG93bkZvcm0uZ2V0KCdzZWxlY3RlZE9wdGlvbicpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgY29uc3Qgb3RoZXJDb250cm9sID0gdGhpcy5kcm9wRG93bkZvcm0uZ2V0KCdvdGhlcklucHV0Jyk7XHJcblxyXG4gICAgICBpZiAodmFsdWUgPT09ICdvdGhlcicpIHtcclxuICAgICAgICBvdGhlckNvbnRyb2w/LmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuaXNDaGlsZFJlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICBvdGhlckNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzQ2hpbGRSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgIG90aGVyQ29udHJvbD8uZGlzYWJsZSgpO1xyXG4gICAgICAgIG90aGVyQ29udHJvbD8ucmVzZXQoKTtcclxuICAgICAgICBvdGhlckNvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBvdGhlckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgb3RoZXJDb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2NsaW5pY2FsTm90ZXNVUkwnLCAkdGl0bGU6ICdBUEkgVXJsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnY3VzdG9tQ2xhc3MnLCAkdGl0bGU6ICdDdXN0b20gQ2xhc3MgTmFtZScsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3NlbGVjdC1sYWJlbCcsICR0aXRsZTogJ0xhYmVsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnb3RoZXItbGFiZWwnLCAkdGl0bGU6ICdPdGhlciBMYWJlbCcsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ290aGVyLXBsYWNlaG9sZGVyJywgJHRpdGxlOiAnT3RoZXIgUGxhY2Vob2xkZXInLCB2YWx1ZTogJycgfSksXHJcbiAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdvdGhlci1tYXhMZW5ndGgnLCAkdGl0bGU6ICdPdGhlciBNYXggTGVuZ3RoJywgdmFsdWU6IDc2OCB9KSxcclxuICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7IGtleTogJ3NlcnZpY2VOYW1lJywgJHRpdGxlOiAnU2VydmljZScsIHZhbHVlOiAnJyB9LCBbeyBvcHRpb246ICdVc2VyIFNlcnZpY2UnLCB2YWx1ZTogJ3VzZXJfc2VydmljZScgfSwgeyBvcHRpb246ICdQYXRpZW50IFNlcnZpY2UnLCB2YWx1ZTogJ3BhdGllbnRfc2VydmljZScgfSwgeyBvcHRpb246ICdXb3JrZmxvdyBTZXJ2aWNlJywgdmFsdWU6ICd3b3JrZmxvd19zZXJ2aWNlJyB9XSksXHJcbiAgICAgIG5ldyBGeFNlbGVjdFNldHRpbmcoeyBrZXk6ICdpc1JlcXVpcmVkJywgJHRpdGxlOiAnUmVxdWlyZWQnLCB2YWx1ZTogJ3RydWUnIH0sIFt7IG9wdGlvbjogJ1llcycsIHZhbHVlOiAndHJ1ZScgfSwgeyBvcHRpb246ICdObycsIHZhbHVlOiAnZmFsc2UnIH1dKSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2Vycm9yTWVzc2FnZScsICR0aXRsZTogJ0Vycm9yIE1lc3NhZ2UnLCB2YWx1ZTogJ1BsZWFzZSBmaWxsIG91dCB0aGUgZmllbGQnIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnZXJyb3JNZXNzYWdlT3RoZXInLCAkdGl0bGU6ICdPdGhlciBFcnJvciBNZXNzYWdlJywgdmFsdWU6ICdPdGhlciBpcyByZXF1aXJlZCcgfSksXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRpb25zKCk6IEZ4VmFsaWRhdGlvbltdIHtcclxuICAgIHJldHVybiBbRnhWYWxpZGF0b3JTZXJ2aWNlLnJlcXVpcmVkXTtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbnMoc2VydmljZVVybDogc3RyaW5nLCB1cmw6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmluYWxVcmwgPSBzZXJ2aWNlVXJsICsgdXJsO1xyXG4gICAgdGhpcy5odHRwLmdldDxhbnlbXT4oZmluYWxVcmwpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzcG9uc2U/LmRhdGE7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goeyB2YWx1ZTogJ290aGVyJywgbGFiZWw6ICdPdGhlcicgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb3B0aW9ucycsIGVycik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiIsIjxmeC1jb21wb25lbnQgW2Z4RGF0YV09XCJmeERhdGFcIiAjZnhDb21wb25lbnQ+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgY3VzdG9tLWRyb3Bkb3duXCIgIFtuZ0NsYXNzXT1cInNldHRpbmcoJ2N1c3RvbUNsYXNzJylcIiAqbmdJZj1cImZhbHNlXCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJkcm9wRG93bkZvcm1cIiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTQgaXRlbXMtc3RhcnRcIj5cclxuICAgIFxyXG4gICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctMS8yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG5cclxuICAgICAgPCEtLSA8bGFiZWwgY2xhc3M9XCJtYi0xIGZvbnQtc2VtaWJvbGQgdGV4dC1zbVwiPjwvbGFiZWw+IC0tPlxyXG4gICAgICA8c3BhbiAgY2xhc3M9XCJpbnB1dC1sYWJlbCBkYXJrOnRleHQtZ3JheS0zMDBcIj57eyBzZXR0aW5nKCdzZWxlY3QtbGFiZWwnKSB9fTwvc3Bhbj5cclxuICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZE9wdGlvblwiIGNsYXNzPVwiYm9yZGVyIHAtMiByb3VuZGVkIHctZnVsbFwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbj8ubGFiZWwgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICA8c21hbGwgKm5nSWY9XCJkcm9wRG93bkZvcm0uZ2V0KCdzZWxlY3RlZE9wdGlvbicpPy50b3VjaGVkICYmIGRyb3BEb3duRm9ybS5nZXQoJ3NlbGVjdGVkT3B0aW9uJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXCJcclxuICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMFwiPlxyXG4gICAgICAge3sgc2V0dGluZygnZXJyb3JNZXNzYWdlJyl9fVxyXG4gICAgICA8L3NtYWxsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gT3RoZXIgaW5wdXQgKG9ubHkgaWYgJ090aGVyJyBzZWxlY3RlZCkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB3LTEvMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZGFyazp0ZXh0LWdyYXktMzAwXCI+e3sgc2V0dGluZygnb3RoZXItbGFiZWwnKSB9fTwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvdGhlcklucHV0XCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7c2V0dGluZygnb3RoZXItcGxhY2Vob2xkZXInKX19XCJcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBwLTIgcm91bmRlZCB3LWZ1bGxcIlxyXG4gICAgICAgIHJvd3M9XCIyXCJcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c21hbGwgKm5nSWY9XCJkcm9wRG93bkZvcm0uZ2V0KCdvdGhlcklucHV0Jyk/LnRvdWNoZWQgJiYgZHJvcERvd25Gb3JtLmdldCgnb3RoZXJJbnB1dCcpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj5cclxuICAgICAgICBPdGhlciBpcyByZXF1aXJlZC5cclxuICAgICAgPC9zbWFsbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBcclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImN1c3RvbS1kcm9wZG93blwiIFtuZ0NsYXNzXT1cInNldHRpbmcoJ2N1c3RvbUNsYXNzJylcIj5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImRyb3BEb3duRm9ybVwiIGNsYXNzPVwiZmxleCBnYXAtNCB3LWZ1bGxcIj5cclxuICAgIFxyXG4gICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgcmVsYXRpdmVcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZGFyazp0ZXh0LWdyYXktMzAwXCI+XHJcbiAgICAgICAge3sgc2V0dGluZygnc2VsZWN0LWxhYmVsJykgfX0gPHNwYW4gY2xhc3M9XCJmaWVsZC1yZXF1aXJlZFwiICpuZ0lmPVwiaXNSZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxzZWxlY3RcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZE9wdGlvblwiXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0yIHJvdW5kZWQgdy1mdWxsXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3Q8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgIHt7IG9wdGlvbj8ubGFiZWwgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDxzbWFsbCAqbmdJZj1cImRyb3BEb3duRm9ybS5nZXQoJ3NlbGVjdGVkT3B0aW9uJyk/LnRvdWNoZWQgJiYgZHJvcERvd25Gb3JtLmdldCgnc2VsZWN0ZWRPcHRpb24nKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+XHJcbiAgICAgICB7eyBzZXR0aW5nKCdlcnJvck1lc3NhZ2UnKX19XHJcbiAgICAgIDwvc21hbGw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE90aGVyIGlucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtMSByZWxhdGl2ZVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbCBkYXJrOnRleHQtZ3JheS0zMDBcIj5cclxuICAgICAgICB7eyBzZXR0aW5nKCdvdGhlci1sYWJlbCcpIH19IDxzcGFuIGNsYXNzPVwiZmllbGQtcmVxdWlyZWRcIiAqbmdJZj1cImlzQ2hpbGRSZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm90aGVySW5wdXRcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgc2V0dGluZygnb3RoZXItcGxhY2Vob2xkZXInKSB9fVwiXHJcbiAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0yIHJvdW5kZWQgdy1mdWxsXCJcclxuICAgICAgICByb3dzPVwiMlwiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJvdGhlck1heExlbmd0aFwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG5cclxuICAgICAgPHNtYWxsXHJcbiAgICAgICAgKm5nSWY9XCJkcm9wRG93bkZvcm0uZ2V0KCdvdGhlcklucHV0Jyk/LnRvdWNoZWQgJiYgZHJvcERvd25Gb3JtLmdldCgnb3RoZXJJbnB1dCcpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgc2V0dGluZygnZXJyb3JNZXNzYWdlT3RoZXInKX19XHJcbiAgICAgIDwvc21hbGw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9mb3JtPlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuPC9meC1jb21wb25lbnQ+XHJcblxyXG4gICAgICA8IS0tIDxzbWFsbCAqbmdJZj1cImRhdGVQaWNrZXJGb3JtLmdldCgnZGF0ZScpPy50b3VjaGVkICYmIGRhdGVQaWNrZXJGb3JtLmdldCgnZGF0ZScpPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj5cclxuICAgICAgICBEYXRlIGlzIHJlcXVpcmVkLlxyXG4gICAgICA8L3NtYWxsPiAtLT4iXX0=
|
|
@@ -14,9 +14,9 @@ import { MultiselectDropdownComponent } from '../multiselect-dropdown/multiselec
|
|
|
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
16
|
import { SummaryComponent } from '../summary/summary.component';
|
|
17
|
+
import { CustomizeDropdownComponent } from '../customize-dropdown/customize-dropdown.component';
|
|
17
18
|
import * as i0 from "@angular/core";
|
|
18
19
|
import * as i1 from "../../fx-builder-wrapper.service";
|
|
19
|
-
// import { CustomizeDropdownComponent } from '../customize-dropdown/customize-dropdown.component';
|
|
20
20
|
// import { CustomizeDropdownComponent } from '../multiselect-with-form-fields/customize-dropdown.component';
|
|
21
21
|
export class FxFormWrapperComponent {
|
|
22
22
|
fxWrapperService;
|
|
@@ -67,7 +67,7 @@ export class FxFormWrapperComponent {
|
|
|
67
67
|
{ name: 'Multiselect Dropdown', key: 'lib-multiselect-dropdown', component: MultiselectDropdownComponent },
|
|
68
68
|
{ name: 'Multiselect Dropdown with Childs', key: 'lib-multiselect-dropdown-with-childs', component: MultiselectDropdownWithChildsComponent },
|
|
69
69
|
{ name: 'Dropdown with Search', key: 'lib-dropdown-with-search', component: DropdownWithSearchComponent },
|
|
70
|
-
|
|
70
|
+
{ name: 'Multiselect with Form ', key: 'lib-customize-dropdown', component: CustomizeDropdownComponent },
|
|
71
71
|
{ name: 'Summary', key: 'lib-summary', component: SummaryComponent },
|
|
72
72
|
];
|
|
73
73
|
components.forEach(({ name, key, component }) => {
|
|
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
119
119
|
}], fxFormSubmit: [{
|
|
120
120
|
type: Output
|
|
121
121
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZngtZm9ybS1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9meC1mb3JtLWNvbXBvbmVudC9meC1mb3JtLWNvbXBvbmVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFVLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBRWxILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUN4SSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUVyRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBQ2hFLG1HQUFtRztBQUNuRyw2R0FBNkc7QUFnQjdHLE1BQU0sT0FBTyxzQkFBc0I7SUFNYjtJQUxELElBQUksQ0FBbUI7SUFDakMsTUFBTSxDQUFVO0lBQ2hCLFNBQVMsQ0FBTTtJQUNkLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWpELFlBQW9CLGdCQUF5QztRQUF6QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQzNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFSyxXQUFXLENBQUMsT0FBc0I7UUFDdkMscURBQXFEO1FBQ3JELDJEQUEyRDtRQUMzRCxJQUFJO1FBQ0osSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLDRFQUE0RTtRQUM1RSwwSEFBMEg7UUFDMUgsSUFBSTtRQUNKLHVFQUF1RTtRQUN2RSw0R0FBNEc7UUFDNUcsSUFBSTtRQUNKLHVFQUF1RTtRQUN2RSw0R0FBNEc7UUFDNUcsSUFBSTtRQUNKLGtFQUFrRTtRQUNsRSw4RkFBOEY7UUFDOUYsSUFBSTtRQUNKLGdFQUFnRTtRQUNoRSx3RkFBd0Y7UUFDeEYsSUFBSTtJQUNOLENBQUM7SUFHTyx3QkFBd0I7UUFDOUIsTUFBTSxVQUFVLEdBQUc7WUFDakIsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSx5QkFBeUIsRUFBRTtZQUMvRixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7WUFDakYsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO1lBQ2pGLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRTtZQUNuRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO1lBQzdELEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUU7WUFDbEcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUU7WUFDL0UsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRTtZQUNuRyxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFO1lBQzdGLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsRUFBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUUsNEJBQTRCLEVBQUU7WUFDMUcsRUFBRSxJQUFJLEVBQUUsa0NBQWtDLEVBQUUsR0FBRyxFQUFFLHNDQUFzQyxFQUFFLFNBQVMsRUFBRSxzQ0FBc0MsRUFBRTtZQUM1SSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFO1lBQ3pHLDRHQUE0RztZQUM1RyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7U0FFckUsQ0FBQztRQUVGLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLENBQUM7d0dBdEVVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLGlTQVZ2Qjs7Ozs7Ozs7R0FRVCwyREFUUyxZQUFZLCtCQUFFLGVBQWU7OzRGQVc1QixzQkFBc0I7a0JBZGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtpQkFDRjs0RkFFb0IsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUNSLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGeEZvcm0sIEZ4Rm9ybUNvbXBvbmVudCB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLWNvbnRyb2xzL2Rpc3BhdGNoLXRvLWNsaW5pYy9kaXNwYXRjaC10by1jbGluaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi90b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwbG9hZGVyQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWRlci1jaGVja2JveC91cGxvYWRlci1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25XaXRoT3RoZXJDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi13aXRoLW90aGVyL2Ryb3Bkb3duLXdpdGgtb3RoZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9tdWx0aXNlbGVjdC1kcm9wZG93bi9tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aXNlbGVjdERyb3Bkb3duV2l0aENoaWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duV2l0aFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duLXdpdGgtc2VhcmNoL2Ryb3Bkb3duLXdpdGgtc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjY29yZGlhbkNvbXBvbmVudCB9IGZyb20gJy4uL2FjY29yZGlhbi9hY2NvcmRpYW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3VtbWFyeUNvbXBvbmVudCB9IGZyb20gJy4uL3N1bW1hcnkvc3VtbWFyeS5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBDdXN0b21pemVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWl6ZS1kcm9wZG93bi9jdXN0b21pemUtZHJvcGRvd24uY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgQ3VzdG9taXplRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9tdWx0aXNlbGVjdC13aXRoLWZvcm0tZmllbGRzL2N1c3RvbWl6ZS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC1mb3JtLWNvbXBvbmVudCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeEZvcm1Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZngtZm9ybSBcclxuICAgICAgW2Z4Rm9ybV09XCJmeEZvcm1cIiBcclxuICAgICAgW3ZhbHVlXT1cInZhcmlhYmxlc1wiIFxyXG4gICAgICAob25TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIFxyXG4gICAgICAjZm9ybVxyXG4gICAgPlxyXG4gICAgPC9meC1mb3JtPlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGeEZvcm1XcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBmb3JtITogRnhGb3JtQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGZ4Rm9ybSE6IEZ4Rm9ybTtcclxuICBASW5wdXQoKSB2YXJpYWJsZXM6IGFueTtcclxuICBAT3V0cHV0KCkgZnhGb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnhXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UpIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDdXN0b21Db21wb25lbnRzKCk7XHJcbiAgIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHsgXHJcbiAgICAvLyBpZigndmFyaWFibGVzJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzWydmeEZvcm0nXSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UudmFyaWFibGVzJC5uZXh0KHRoaXMudmFyaWFibGVzKTtcclxuICAgIC8vIH1cclxuICAgIGlmICgndmFyaWFibGVzJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkLm5leHQodGhpcy52YXJpYWJsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ2Rpc3BhdGNoLXRvLWNsaW5pYycpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ0Rpc3BhdGNoIFRvIENsaW5pYycsICdkaXNwYXRjaC10by1jbGluaWMnLCBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCdkeW5hbWljLXRhYmxlJykpKSB7XHJcbiAgICAvLyAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnRHluYW1pYyBUYWJsZScsICdkeW5hbWljLXRhYmxlJywgRHluYW1pY1RhYmxlQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCd0b2dnbGUtYnV0dG9uJykpKSB7XHJcbiAgICAvLyAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnVG9nZ2xlIEJ1dHRvbicsICd0b2dnbGUtYnV0dG9uJywgVG9nZ2xlQnV0dG9uQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCd1cGxvYWRlcicpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ1VwbG9hZGVyJywgJ3VwbG9hZGVyJywgVXBsb2FkZXJDb21wb25lbnQpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ3RvZ2dsZScpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ1RvZ2dsZScsICd0b2dnbGUnLCBUb2dnbGVDb21wb25lbnQpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJDdXN0b21Db21wb25lbnRzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29tcG9uZW50cyA9IFtcclxuICAgICAgeyBuYW1lOiAnRGlzcGF0Y2ggVG8gQ2xpbmljJywga2V5OiAnZGlzcGF0Y2gtdG8tY2xpbmljJywgY29tcG9uZW50OiBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ0R5bmFtaWMgVGFibGUnLCBrZXk6ICdkeW5hbWljLXRhYmxlJywgY29tcG9uZW50OiBEeW5hbWljVGFibGVDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnVG9nZ2xlIEJ1dHRvbicsIGtleTogJ3RvZ2dsZS1idXR0b24nLCBjb21wb25lbnQ6IFRvZ2dsZUJ1dHRvbkNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdVcGxvYWRlcicsIGtleTogJ3VwbG9hZGVyJywgY29tcG9uZW50OiBVcGxvYWRlckNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdUb2dnbGUnLCBrZXk6ICd0b2dnbGUnLCBjb21wb25lbnQ6IFRvZ2dsZUNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdVcGxvYWRlciB3aXRoIENoZWNrYm94Jywga2V5OiAndXBsb2FkZXItY2hlY2tib3gnLCBjb21wb25lbnQ6IFVwbG9hZGVyQ2hlY2tib3hDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnRGF0ZSBQaWNrZXInLCBrZXk6ICdsaWItZGF0ZS1waWNrZXInLCBjb21wb25lbnQ6IERhdGVQaWNrZXJDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnU21hcnRsaXN0IHdpdGggT3RoZXInLCBrZXk6ICdkcm9wZG93bi13aXRoLW90aGVyJywgY29tcG9uZW50OiBEcm9wZG93bldpdGhPdGhlckNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdSYWRpbyBHcm91cCB3aXRoIE90aGVyJywga2V5OiAncmFkaW8tZ3JvdXAtY3VzdG9tJywgY29tcG9uZW50OiBSYWRpb0dyb3VwQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ011bHRpc2VsZWN0IERyb3Bkb3duJywga2V5OiAnbGliLW11bHRpc2VsZWN0LWRyb3Bkb3duJywgY29tcG9uZW50OiBNdWx0aXNlbGVjdERyb3Bkb3duQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ011bHRpc2VsZWN0IERyb3Bkb3duIHdpdGggQ2hpbGRzJywga2V5OiAnbGliLW11bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzJywgY29tcG9uZW50OiBNdWx0aXNlbGVjdERyb3Bkb3duV2l0aENoaWxkc0NvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdEcm9wZG93biB3aXRoIFNlYXJjaCcsIGtleTogJ2xpYi1kcm9wZG93bi13aXRoLXNlYXJjaCcsIGNvbXBvbmVudDogRHJvcGRvd25XaXRoU2VhcmNoQ29tcG9uZW50IH0sXHJcbiAgICAgIC8vIHsgbmFtZTogJ011bHRpc2VsZWN0IHdpdGggRm9ybSAnLCBrZXk6ICdsaWItY3VzdG9taXplLWRyb3Bkb3duJywgY29tcG9uZW50OiBDdXN0b21pemVEcm9wZG93bkNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdTdW1tYXJ5Jywga2V5OiAnbGliLXN1bW1hcnknLCBjb21wb25lbnQ6IFN1bW1hcnlDb21wb25lbnQgfSxcclxuICAgICAgXHJcbiAgICBdO1xyXG4gICAgXHJcbiAgICBjb21wb25lbnRzLmZvckVhY2goKHsgbmFtZSwga2V5LCBjb21wb25lbnQgfSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoa2V5KSkge1xyXG4gICAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudChuYW1lLCBrZXksIGNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhGb3JtU3VibWl0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5zdWJtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZngtZm9ybS1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9meC1mb3JtLWNvbXBvbmVudC9meC1mb3JtLWNvbXBvbmVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFVLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBRWxILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUN4SSxPQUFPLEVBQUUsMkJB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Z0JBQWdCLEVBQUU7U0FFckUsQ0FBQztRQUVGLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLENBQUM7d0dBdEVVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLGlTQVZ2Qjs7Ozs7Ozs7R0FRVCwyREFUUyxZQUFZLCtCQUFFLGVBQWU7OzRGQVc1QixzQkFBc0I7a0JBZGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtpQkFDRjs0RkFFb0IsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQUNSLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGeEZvcm0sIEZ4Rm9ybUNvbXBvbmVudCB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLWNvbnRyb2xzL2Rpc3BhdGNoLXRvLWNsaW5pYy9kaXNwYXRjaC10by1jbGluaWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi90b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVwbG9hZGVyQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWRlci1jaGVja2JveC91cGxvYWRlci1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25XaXRoT3RoZXJDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi13aXRoLW90aGVyL2Ryb3Bkb3duLXdpdGgtb3RoZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9tdWx0aXNlbGVjdC1kcm9wZG93bi9tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aXNlbGVjdERyb3Bkb3duV2l0aENoaWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzL211bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duV2l0aFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duLXdpdGgtc2VhcmNoL2Ryb3Bkb3duLXdpdGgtc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjY29yZGlhbkNvbXBvbmVudCB9IGZyb20gJy4uL2FjY29yZGlhbi9hY2NvcmRpYW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3VtbWFyeUNvbXBvbmVudCB9IGZyb20gJy4uL3N1bW1hcnkvc3VtbWFyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21pemVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWl6ZS1kcm9wZG93bi9jdXN0b21pemUtZHJvcGRvd24uY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgQ3VzdG9taXplRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9tdWx0aXNlbGVjdC13aXRoLWZvcm0tZmllbGRzL2N1c3RvbWl6ZS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC1mb3JtLWNvbXBvbmVudCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeEZvcm1Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZngtZm9ybSBcclxuICAgICAgW2Z4Rm9ybV09XCJmeEZvcm1cIiBcclxuICAgICAgW3ZhbHVlXT1cInZhcmlhYmxlc1wiIFxyXG4gICAgICAob25TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIFxyXG4gICAgICAjZm9ybVxyXG4gICAgPlxyXG4gICAgPC9meC1mb3JtPlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGeEZvcm1XcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBmb3JtITogRnhGb3JtQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGZ4Rm9ybSE6IEZ4Rm9ybTtcclxuICBASW5wdXQoKSB2YXJpYWJsZXM6IGFueTtcclxuICBAT3V0cHV0KCkgZnhGb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnhXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UpIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDdXN0b21Db21wb25lbnRzKCk7XHJcbiAgIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHsgXHJcbiAgICAvLyBpZigndmFyaWFibGVzJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzWydmeEZvcm0nXSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UudmFyaWFibGVzJC5uZXh0KHRoaXMudmFyaWFibGVzKTtcclxuICAgIC8vIH1cclxuICAgIGlmICgndmFyaWFibGVzJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkLm5leHQodGhpcy52YXJpYWJsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ2Rpc3BhdGNoLXRvLWNsaW5pYycpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ0Rpc3BhdGNoIFRvIENsaW5pYycsICdkaXNwYXRjaC10by1jbGluaWMnLCBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCdkeW5hbWljLXRhYmxlJykpKSB7XHJcbiAgICAvLyAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnRHluYW1pYyBUYWJsZScsICdkeW5hbWljLXRhYmxlJywgRHluYW1pY1RhYmxlQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCd0b2dnbGUtYnV0dG9uJykpKSB7XHJcbiAgICAvLyAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudCgnVG9nZ2xlIEJ1dHRvbicsICd0b2dnbGUtYnV0dG9uJywgVG9nZ2xlQnV0dG9uQ29tcG9uZW50KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICghQm9vbGVhbih0aGlzLmZ4V3JhcHBlclNlcnZpY2UuZ2V0Q29tcG9uZW50KCd1cGxvYWRlcicpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ1VwbG9hZGVyJywgJ3VwbG9hZGVyJywgVXBsb2FkZXJDb21wb25lbnQpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKCFCb29sZWFuKHRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoJ3RvZ2dsZScpKSkge1xyXG4gICAgLy8gICB0aGlzLmZ4V3JhcHBlclNlcnZpY2UucmVnaXN0ZXJDdXN0b21Db21wb25lbnQoJ1RvZ2dsZScsICd0b2dnbGUnLCBUb2dnbGVDb21wb25lbnQpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJDdXN0b21Db21wb25lbnRzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29tcG9uZW50cyA9IFtcclxuICAgICAgeyBuYW1lOiAnRGlzcGF0Y2ggVG8gQ2xpbmljJywga2V5OiAnZGlzcGF0Y2gtdG8tY2xpbmljJywgY29tcG9uZW50OiBEaXNwYXRjaFRvQ2xpbmljQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ0R5bmFtaWMgVGFibGUnLCBrZXk6ICdkeW5hbWljLXRhYmxlJywgY29tcG9uZW50OiBEeW5hbWljVGFibGVDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnVG9nZ2xlIEJ1dHRvbicsIGtleTogJ3RvZ2dsZS1idXR0b24nLCBjb21wb25lbnQ6IFRvZ2dsZUJ1dHRvbkNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdVcGxvYWRlcicsIGtleTogJ3VwbG9hZGVyJywgY29tcG9uZW50OiBVcGxvYWRlckNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdUb2dnbGUnLCBrZXk6ICd0b2dnbGUnLCBjb21wb25lbnQ6IFRvZ2dsZUNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdVcGxvYWRlciB3aXRoIENoZWNrYm94Jywga2V5OiAndXBsb2FkZXItY2hlY2tib3gnLCBjb21wb25lbnQ6IFVwbG9hZGVyQ2hlY2tib3hDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnRGF0ZSBQaWNrZXInLCBrZXk6ICdsaWItZGF0ZS1waWNrZXInLCBjb21wb25lbnQ6IERhdGVQaWNrZXJDb21wb25lbnQgfSxcclxuICAgICAgeyBuYW1lOiAnU21hcnRsaXN0IHdpdGggT3RoZXInLCBrZXk6ICdkcm9wZG93bi13aXRoLW90aGVyJywgY29tcG9uZW50OiBEcm9wZG93bldpdGhPdGhlckNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdSYWRpbyBHcm91cCB3aXRoIE90aGVyJywga2V5OiAncmFkaW8tZ3JvdXAtY3VzdG9tJywgY29tcG9uZW50OiBSYWRpb0dyb3VwQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ011bHRpc2VsZWN0IERyb3Bkb3duJywga2V5OiAnbGliLW11bHRpc2VsZWN0LWRyb3Bkb3duJywgY29tcG9uZW50OiBNdWx0aXNlbGVjdERyb3Bkb3duQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ011bHRpc2VsZWN0IERyb3Bkb3duIHdpdGggQ2hpbGRzJywga2V5OiAnbGliLW11bHRpc2VsZWN0LWRyb3Bkb3duLXdpdGgtY2hpbGRzJywgY29tcG9uZW50OiBNdWx0aXNlbGVjdERyb3Bkb3duV2l0aENoaWxkc0NvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdEcm9wZG93biB3aXRoIFNlYXJjaCcsIGtleTogJ2xpYi1kcm9wZG93bi13aXRoLXNlYXJjaCcsIGNvbXBvbmVudDogRHJvcGRvd25XaXRoU2VhcmNoQ29tcG9uZW50IH0sXHJcbiAgICAgIHsgbmFtZTogJ011bHRpc2VsZWN0IHdpdGggRm9ybSAnLCBrZXk6ICdsaWItY3VzdG9taXplLWRyb3Bkb3duJywgY29tcG9uZW50OiBDdXN0b21pemVEcm9wZG93bkNvbXBvbmVudCB9LFxyXG4gICAgICB7IG5hbWU6ICdTdW1tYXJ5Jywga2V5OiAnbGliLXN1bW1hcnknLCBjb21wb25lbnQ6IFN1bW1hcnlDb21wb25lbnQgfSxcclxuICAgICAgXHJcbiAgICBdO1xyXG4gICAgXHJcbiAgICBjb21wb25lbnRzLmZvckVhY2goKHsgbmFtZSwga2V5LCBjb21wb25lbnQgfSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZnhXcmFwcGVyU2VydmljZS5nZXRDb21wb25lbnQoa2V5KSkge1xyXG4gICAgICAgIHRoaXMuZnhXcmFwcGVyU2VydmljZS5yZWdpc3RlckN1c3RvbUNvbXBvbmVudChuYW1lLCBrZXksIGNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZnhGb3JtU3VibWl0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5zdWJtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -37,6 +37,7 @@ export class RadioGroupComponent extends FxBaseComponent {
|
|
|
37
37
|
compareValue;
|
|
38
38
|
isRequired = false;
|
|
39
39
|
isChildRequired = false;
|
|
40
|
+
remarkMaxLength = 84;
|
|
40
41
|
constructor(cdr, http, fxBuilderWrapperService, fxApiService) {
|
|
41
42
|
super(cdr);
|
|
42
43
|
this.cdr = cdr;
|
|
@@ -64,6 +65,7 @@ export class RadioGroupComponent extends FxBaseComponent {
|
|
|
64
65
|
}, 200);
|
|
65
66
|
setTimeout(() => {
|
|
66
67
|
const mainControl = this.confirmationForm.get('confirmation');
|
|
68
|
+
this.remarkMaxLength = Number(this.setting('remark-maxlength')) || 84;
|
|
67
69
|
if (this.setting('isRadioRequired') === 'true') {
|
|
68
70
|
this.isRequired = true;
|
|
69
71
|
mainControl?.setValidators([Validators.required]);
|
|
@@ -121,6 +123,7 @@ export class RadioGroupComponent extends FxBaseComponent {
|
|
|
121
123
|
new FxStringSetting({ key: 'error-msg', $title: 'Error message', value: 'Please select' }),
|
|
122
124
|
new FxStringSetting({ key: 'remark-placeholder', $title: 'Additional field placeholder', value: 'enter here' }),
|
|
123
125
|
new FxSelectSetting({ key: 'isRadioRequired', $title: 'Required', value: 'true' }, [{ option: 'Yes', value: 'true' }, { option: 'No', value: 'false' }]),
|
|
126
|
+
new FxStringSetting({ key: 'remark-maxlength', $title: 'Additional field max length', value: 84 }),
|
|
124
127
|
// new FxStringSetting({ key: 'other-placeholder', $title: 'Other Placeholder', value: '' }),
|
|
125
128
|
// new FxSelectSetting({key: 'serviceName', $title: 'Service', value: ''}, [{option: 'User Service', value: 'user_service'}, {option: 'Patient Service', value: 'patient_service'},{option: 'Workflow Service', value: 'workflow_service'}]),
|
|
126
129
|
// // new FxSelectSetting({key: 'service', $title: 'Service', value: 'local'}, [{option: 'Local', value: 'local'}, {option: 'QA', value: 'qa'},{option: 'UAT', value: 'uat'},{option: 'Production', value: 'prod'}]),
|
|
@@ -150,15 +153,15 @@ export class RadioGroupComponent extends FxBaseComponent {
|
|
|
150
153
|
}
|
|
151
154
|
}
|
|
152
155
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RadioGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.FxBuilderWrapperService }, { token: i3.ApiServiceRegistry }], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RadioGroupComponent, isStandalone: true, selector: "radio-group-custom", inputs: { showOnSelection: "showOnSelection" }, viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div [ngClass]=\"setting('customClasss')\">\r\n<form [formGroup]=\"confirmationForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1 w-full\">\r\n <!-- Title -->\r\n <label class=\"font-semibold text-gray-800\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n\r\n <!-- TWO COLUMN LAYOUT -->\r\n \r\n\r\n <!-- LEFT COLUMN (RADIO GROUP) -->\r\n <div class=\"flex-1\">\r\n\r\n <div class=\"flex gap-3 my-2\"> \r\n <!-- stack vertically so height is correct -->\r\n <label\r\n *ngFor=\"let opt of options\"\r\n class=\"flex items-center gap-2 cursor-pointer text-gray-700\"\r\n >\r\n <input\r\n type=\"radio\"\r\n formControlName=\"confirmation\"\r\n [value]=\"opt.value\"\r\n (change)=\"onSelectionChange(opt.value)\"\r\n class=\"w-4 h-4 accent-blue-600 cursor-pointer\"\r\n />\r\n <span>{{ opt.option }}</span>\r\n </label>\r\n </div>\r\n\r\n <!-- Radio error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('confirmation')?.touched &&\r\n confirmationForm.get('confirmation')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n </div>\r\n \r\n <!-- RIGHT COLUMN (TEXTAREA) -->\r\n <div *ngIf=\"showTextArea\" class=\"flex-1 relative mt-2 md:mt-1\">\r\n\r\n <label class=\"input-label font-medium text-gray-700\">\r\n {{ setting('additional-field-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n\r\n <textarea\r\n formControlName=\"remarks\"\r\n rows=\"3\"\r\n placeholder=\"{{ setting('remark-placeholder') }}\"\r\n class=\"border border-gray-300 rounded-lg p-3 w-full resize-none shadow-sm\r\n focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n ></textarea>\r\n\r\n <!-- Textarea error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('remarks')?.touched &&\r\n confirmationForm.get('remarks')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('additional-field-error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n\r\n\r\n</form>\r\n</div>\r\n\r\n\r\n</fx-component>\r\n", styles: [".custom-gap{gap:1rem}.field-required{color:red;font-size:1.1em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "ngmodule", type: RadioButtonModule }] });
|
|
156
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RadioGroupComponent, isStandalone: true, selector: "radio-group-custom", inputs: { showOnSelection: "showOnSelection" }, viewQueries: [{ propertyName: "fxComponent", first: true, predicate: ["fxComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div [ngClass]=\"setting('customClasss')\">\r\n<form [formGroup]=\"confirmationForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1 w-full\">\r\n <!-- Title -->\r\n <label class=\"font-semibold text-gray-800\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n\r\n <!-- TWO COLUMN LAYOUT -->\r\n \r\n\r\n <!-- LEFT COLUMN (RADIO GROUP) -->\r\n <div class=\"flex-1\">\r\n\r\n <div class=\"flex gap-3 my-2\"> \r\n <!-- stack vertically so height is correct -->\r\n <label\r\n *ngFor=\"let opt of options\"\r\n class=\"flex items-center gap-2 cursor-pointer text-gray-700\"\r\n >\r\n <input\r\n type=\"radio\"\r\n formControlName=\"confirmation\"\r\n [value]=\"opt.value\"\r\n (change)=\"onSelectionChange(opt.value)\"\r\n class=\"w-4 h-4 accent-blue-600 cursor-pointer\"\r\n />\r\n <span>{{ opt.option }}</span>\r\n </label>\r\n </div>\r\n\r\n <!-- Radio error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('confirmation')?.touched &&\r\n confirmationForm.get('confirmation')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n </div>\r\n \r\n <!-- RIGHT COLUMN (TEXTAREA) -->\r\n <div *ngIf=\"showTextArea\" class=\"flex-1 relative mt-2 md:mt-1\">\r\n\r\n <label class=\"input-label font-medium text-gray-700\">\r\n {{ setting('additional-field-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n\r\n <textarea\r\n formControlName=\"remarks\"\r\n rows=\"3\"\r\n placeholder=\"{{ setting('remark-placeholder') }}\"\r\n class=\"border border-gray-300 rounded-lg p-3 w-full resize-none shadow-sm\r\n focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n [maxlength]=\"remarkMaxLength\" \r\n ></textarea>\r\n\r\n <!-- Textarea error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('remarks')?.touched &&\r\n confirmationForm.get('remarks')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('additional-field-error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n\r\n\r\n</form>\r\n</div>\r\n\r\n\r\n</fx-component>\r\n", styles: [".custom-gap{gap:1rem}.field-required{color:red;font-size:1.1em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "ngmodule", type: RadioButtonModule }] });
|
|
154
157
|
}
|
|
155
158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RadioGroupComponent, decorators: [{
|
|
156
159
|
type: Component,
|
|
157
|
-
args: [{ selector: 'radio-group-custom', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent, CalendarModule, RadioButtonModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div [ngClass]=\"setting('customClasss')\">\r\n<form [formGroup]=\"confirmationForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1 w-full\">\r\n <!-- Title -->\r\n <label class=\"font-semibold text-gray-800\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n\r\n <!-- TWO COLUMN LAYOUT -->\r\n \r\n\r\n <!-- LEFT COLUMN (RADIO GROUP) -->\r\n <div class=\"flex-1\">\r\n\r\n <div class=\"flex gap-3 my-2\"> \r\n <!-- stack vertically so height is correct -->\r\n <label\r\n *ngFor=\"let opt of options\"\r\n class=\"flex items-center gap-2 cursor-pointer text-gray-700\"\r\n >\r\n <input\r\n type=\"radio\"\r\n formControlName=\"confirmation\"\r\n [value]=\"opt.value\"\r\n (change)=\"onSelectionChange(opt.value)\"\r\n class=\"w-4 h-4 accent-blue-600 cursor-pointer\"\r\n />\r\n <span>{{ opt.option }}</span>\r\n </label>\r\n </div>\r\n\r\n <!-- Radio error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('confirmation')?.touched &&\r\n confirmationForm.get('confirmation')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n </div>\r\n \r\n <!-- RIGHT COLUMN (TEXTAREA) -->\r\n <div *ngIf=\"showTextArea\" class=\"flex-1 relative mt-2 md:mt-1\">\r\n\r\n <label class=\"input-label font-medium text-gray-700\">\r\n {{ setting('additional-field-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n\r\n <textarea\r\n formControlName=\"remarks\"\r\n rows=\"3\"\r\n placeholder=\"{{ setting('remark-placeholder') }}\"\r\n class=\"border border-gray-300 rounded-lg p-3 w-full resize-none shadow-sm\r\n focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n ></textarea>\r\n\r\n <!-- Textarea error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('remarks')?.touched &&\r\n confirmationForm.get('remarks')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('additional-field-error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n\r\n\r\n</form>\r\n</div>\r\n\r\n\r\n</fx-component>\r\n", styles: [".custom-gap{gap:1rem}.field-required{color:red;font-size:1.1em}\n"] }]
|
|
160
|
+
args: [{ selector: 'radio-group-custom', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent, CalendarModule, RadioButtonModule], template: "<fx-component [fxData]=\"fxData\" #fxComponent>\r\n <div [ngClass]=\"setting('customClasss')\">\r\n<form [formGroup]=\"confirmationForm\" class=\"flex gap-4 w-full\">\r\n <div class=\"flex-1 w-full\">\r\n <!-- Title -->\r\n <label class=\"font-semibold text-gray-800\">\r\n {{ setting('select-label') }} <span class=\"field-required\" *ngIf=\"isRequired\">*</span>\r\n </label>\r\n\r\n <!-- TWO COLUMN LAYOUT -->\r\n \r\n\r\n <!-- LEFT COLUMN (RADIO GROUP) -->\r\n <div class=\"flex-1\">\r\n\r\n <div class=\"flex gap-3 my-2\"> \r\n <!-- stack vertically so height is correct -->\r\n <label\r\n *ngFor=\"let opt of options\"\r\n class=\"flex items-center gap-2 cursor-pointer text-gray-700\"\r\n >\r\n <input\r\n type=\"radio\"\r\n formControlName=\"confirmation\"\r\n [value]=\"opt.value\"\r\n (change)=\"onSelectionChange(opt.value)\"\r\n class=\"w-4 h-4 accent-blue-600 cursor-pointer\"\r\n />\r\n <span>{{ opt.option }}</span>\r\n </label>\r\n </div>\r\n\r\n <!-- Radio error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('confirmation')?.touched &&\r\n confirmationForm.get('confirmation')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n </div>\r\n \r\n <!-- RIGHT COLUMN (TEXTAREA) -->\r\n <div *ngIf=\"showTextArea\" class=\"flex-1 relative mt-2 md:mt-1\">\r\n\r\n <label class=\"input-label font-medium text-gray-700\">\r\n {{ setting('additional-field-label') }} <span class=\"field-required\" *ngIf=\"isChildRequired\">*</span>\r\n </label>\r\n\r\n <textarea\r\n formControlName=\"remarks\"\r\n rows=\"3\"\r\n placeholder=\"{{ setting('remark-placeholder') }}\"\r\n class=\"border border-gray-300 rounded-lg p-3 w-full resize-none shadow-sm\r\n focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n [maxlength]=\"remarkMaxLength\" \r\n ></textarea>\r\n\r\n <!-- Textarea error -->\r\n <small\r\n *ngIf=\"\r\n confirmationForm.get('remarks')?.touched &&\r\n confirmationForm.get('remarks')?.errors?.['required']\r\n \"\r\n class=\"text-red-500 mt-1\"\r\n >\r\n {{ setting('additional-field-error-msg') }}\r\n </small>\r\n\r\n </div>\r\n\r\n\r\n\r\n</form>\r\n</div>\r\n\r\n\r\n</fx-component>\r\n", styles: [".custom-gap{gap:1rem}.field-required{color:red;font-size:1.1em}\n"] }]
|
|
158
161
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.FxBuilderWrapperService }, { type: i3.ApiServiceRegistry }], propDecorators: { showOnSelection: [{
|
|
159
162
|
type: Input
|
|
160
163
|
}], fxComponent: [{
|
|
161
164
|
type: ViewChild,
|
|
162
165
|
args: ['fxComponent']
|
|
163
166
|
}] } });
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFvQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25LLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFTeEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUF5QmhDO0lBQStCO0lBQXlCO0lBQXlEO0lBeEJqSSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBQzFDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDZixlQUFlLEdB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bnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9jb3JlJztcclxuaW1wb3J0IHsgRnhCYXNlQ29tcG9uZW50LCBGeENvbXBvbmVudCwgRnhPcHRpb25TZXR0aW5nLCBGeFNlbGVjdFNldHRpbmcsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XHJcbmltcG9ydCB7IFJhZGlvQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JhZGlvLWdyb3VwLWN1c3RvbScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSwgRnhDb21wb25lbnQsIENhbGVuZGFyTW9kdWxlLFJhZGlvQnV0dG9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmFkaW9Hcm91cENvbXBvbmVudCBleHRlbmRzIEZ4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdHtcclxucHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XHJcbnByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpO1xyXG5mb3JtT2JqZWN0OiBvYmplY3QgPSB7fTtcclxuQElucHV0KCkgc2hvd09uU2VsZWN0aW9uOiAneWVzJyB8ICdubycgPSAneWVzJzsgLy8gY29uZmlndXJhYmxlOiBzaG93IHRleHRhcmVhIG9uIFllcyBvciBOb1xyXG4gIHNob3dUZXh0QXJlYSA9IGZhbHNlO1xyXG4gcHVibGljIGNvbmZpcm1hdGlvbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgY29uZmlybWF0aW9uOiBbJyddLFxyXG4gICAgICByZW1hcmtzOiBbJyddLFxyXG4gICAgICB2YWx1ZVRvU2hvd1RleHRBcmVhOiBbJyddLFxyXG4gICAgICBsYWJlbDpbJyddXHJcbiAgICB9KTtcclxuXHJcbiAgICBvcHRpb25zOiBhbnlbXSA9IFtcclxuICAgICAgeyBvcHRpb246ICdZZXMnLCB2YWx1ZTogJ1lFUycgfSxcclxuICAgICAgeyBvcHRpb246ICdObycsIHZhbHVlOiAnTk8nIH0sXHJcbiAgICAgIHsgb3B0aW9uOiAnTkEnLCB2YWx1ZTogJ05BJyB9XHJcbiAgICBdO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2Z4Q29tcG9uZW50JykgZnhDb21wb25lbnQhOiBGeENvbXBvbmVudDtcclxuICAgIHJhZG9pb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcbiAgICBjb21wYXJlVmFsdWU6IGFueTtcclxuICAgIGlzUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzQ2hpbGRSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQscHJpdmF0ZSBmeEJ1aWxkZXJXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UscHJpdmF0ZSBmeEFwaVNlcnZpY2U6IEFwaVNlcnZpY2VSZWdpc3RyeSkge1xyXG4gICAgICAgc3VwZXIoY2RyKVxyXG4gICAgICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLmNvbmZpcm1hdGlvbkZvcm0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgXHJcbiAgICAgfVxyXG5cclxuICAgICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgID0gKHRoaXMuZnhDb21wb25lbnQ/LmZ4RGF0YT8uc2V0dGluZ3M/LmZpbmQoKHM6IGFueSkgPT4gcy5rZXkgPT09ICdpdGVtcycpIGFzIGFueSk/Lm9wdGlvbnMgfHwgW107XHJcbiAgICAgICBjb25zdCBsYWJlbERhdGEgPVxyXG4gICh0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/LnNldHRpbmdzPy5maW5kKChzOiBhbnkpID0+IHMua2V5ID09PSAnc2VsZWN0LWxhYmVsJykgYXMgYW55KT8udmFsdWUgPz9cclxuICAnJztcclxudGhpcy5jb21wYXJlVmFsdWUgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ3ZhbHVlLXNob3ctdGV4dCcpIGFzIGFueSk/LnZhbHVlXHJcbiAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5jb25maXJtYXRpb25Gb3JtLmdldCgnbGFiZWwnKTtcclxuICAgICAgICAgbGFiZWw/LnNldFZhbHVlKGxhYmVsRGF0YSk7XHJcbiAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICBjb25zdCBrZXkgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/Lm5hbWU7XHJcblxyXG4gIGlmIChrZXkgJiYgdGhpcy5yYWRvaW9NYXAuaGFzKGtleSkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uRm9ybS5wYXRjaFZhbHVlKHRoaXMucmFkb2lvTWFwLmdldChrZXkpKTtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJhZG9pb01hcC5nZXQoa2V5KTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoZGF0YS5jb25maXJtYXRpb24pO1xyXG4gIH1cclxufSwgMjAwKTtcclxuXHJcbiAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgY29uc3QgbWFpbkNvbnRyb2wgPSB0aGlzLmNvbmZpcm1hdGlvbkZvcm0uZ2V0KCdjb25maXJtYXRpb24nKTtcclxuICAgICBpZih0aGlzLnNldHRpbmcoJ2lzUmFkaW9SZXF1aXJlZCcpID09PSAndHJ1ZScpe1xyXG4gICAgICB0aGlzLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBtYWluQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICBtYWluQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgIH1cclxuICAgIH0sMTAwKVxyXG5cclxuICAgICAgICBcclxuICAgICAgIH1cclxuICAgICBcclxuICAgICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICAgICAgLy8gZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcclxuICAgICAgICAgICAgLy8gICBpZiAoa2V5LmluY2x1ZGVzKCdyYWRpby1ncm91cC1jdXN0b20nKSkge1xyXG4gICAgICAgICAgICAvLyAgICB0aGlzLmZvcm1PYmplY3QgPSB2YWx1ZTtcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykgYXMgW3N0cmluZywgYW55XVtdKSB7XHJcbiAgaWYgKFxyXG4gICAgdmFsdWUgJiZcclxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuICAgICdjb25maXJtYXRpb24nIGluIHZhbHVlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnJhZG9pb01hcC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9ucyAgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ2l0ZW1zJykgYXMgYW55KT8ub3B0aW9ucyB8fCBbXTtcclxuXHJcblxyXG4gICAgICAvLyAgdGhpcy5zZXR0aW5nKCdpdGVtcycpLmxlbmd0aCA+IDAgPyB0aGlzLm9wdGlvbnMgPSB0aGlzLnNldHRpbmcoJ2l0ZW1zJykgOiBudWxsO1xyXG4gICAgIFxyXG4gICAgICAvLyAgIHRoaXMuY29uZmlybWF0aW9uRm9ybS5nZXQoJ2NvbmZpcm1hdGlvbicpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgLy8gICAgY29uc3Qgb3RoZXJDb250cm9sID0gdGhpcy5jb25maXJtYXRpb25Gb3JtLmdldCgncmVtYXJrcycpO1xyXG4gICAgICAvLyAgICBjb25zdCB2YWx1ZVRvU2hvd1RleHRBcmVhID0gdGhpcy5jb25maXJtYXRpb25Gb3JtLmdldCgndmFsdWVUb1Nob3dUZXh0QXJlYScpO1xyXG4gICAgICAvLyAgICBpZiAodmFsdWUpIHtcclxuICAgICAgLy8gICAgICBvdGhlckNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgLy8gICAgICB2YWx1ZVRvU2hvd1RleHRBcmVhPy5zZXRWYWx1ZSh0aGlzLnNldHRpbmcoJ3ZhbHVlLXNob3ctdGV4dCcpKTtcclxuXHJcbiAgICAgIC8vICAgICB9IGVsc2Uge1xyXG4gICAgICAvLyAgICAgIG90aGVyQ29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgIC8vICAgICAgb3RoZXJDb250cm9sPy5yZXNldCgpO1xyXG4gICAgICAvLyAgICAgIHZhbHVlVG9TaG93VGV4dEFyZWE/LnJlc2V0KCk7XHJcbiAgICAgIC8vICAgIH1cclxuICAgICAgLy8gIH0pO1xyXG4gICAgICAgXHJcbiAgICAgXHJcbiAgICAgfVxyXG5cclxuICAgICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgLy8gbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2NsaW5pY2FsTm90ZXNVUkwnLCAkdGl0bGU6ICdBUEkgVXJsJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnY3VzdG9tQ2xhc3NzJywgJHRpdGxlOiAnQ3VzdG9tIENsYXNzIE5hbWUnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnc2VsZWN0LWxhYmVsJywgJHRpdGxlOiAnSGVhZGVyIExhYmVsJywgdmFsdWU6ICdIZWFkZXIgTGFiZWwnIH0pLCBcclxuICAgICAgICAgICAgICAvLyBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnb3B0aW9uLXZhbHVlLW9uZScsICR0aXRsZTogJ1ZhbHVlIG9uZScsIHZhbHVlOiAnVmFsdWUgb25lJyB9KSwgXHJcbiAgICAgICAgICAgICAgLy8gIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdvcHRpb24tdmFsdWUtdHdvJywgJHRpdGxlOiAnVmFsdWUgdHdvJywgdmFsdWU6ICdWYWx1ZSB0d28nIH0pLCBcclxuICAgICAgICAgICAgICAvLyAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdvcHRpb24tbGFiZWwtb25lJywgJHRpdGxlOiAnTGFiZWwgb25lJywgdmFsdWU6ICdMYWJlbCBvbmUnIH0pLCBcclxuICAgICAgICAgICAgICAvLyAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdvcHRpb24tbGFiZWwtdHdvJywgJHRpdGxlOiAnTGFiZWwgdHdvJywgdmFsdWU6ICdMYWJlbCB0d28nIH0pLCBcclxuICAgICAgICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICd2YWx1ZS1zaG93LXRleHQnLCAkdGl0bGU6ICdWYWx1ZSB0byBzaG93IHRleHRhcmVhJywgdmFsdWU6ICdWYWx1ZSB0byBzaG93IHRleHRhcmVhJyB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBGeE9wdGlvblNldHRpbmcoeyBrZXk6ICdpdGVtcycsICR0aXRsZTogJ09wdGlvbnMnLCB2YWx1ZTogW3tvcHRpb246ICdZZXMnLCB2YWx1ZTogJ3llcyd9LCB7b3B0aW9uOiAnTm8nLCB2YWx1ZTogJ25vJ31dICB9LCBbe29wdGlvbjogJ1llcycsIHZhbHVlOiAneWVzJ30sIHtvcHRpb246ICdObycsIHZhbHVlOiAnbm8nfV0pLCBcclxuICAgICAgICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdhZGRpdGlvbmFsLWZpZWxkLWxhYmVsJywgJHRpdGxlOiAnQWRkaXRpb25hbCBmaWVsZCBsYWJlbCcsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgICAgICAgICAgIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdhZGRpdGlvbmFsLWZpZWxkLWVycm9yLW1zZycsICR0aXRsZTogJ0FkZGl0aW9uYWwgZmllbGQgZXJyb3IgbWVzc2FnZScsIHZhbHVlOiAnUGxlYXNlIGZpbGwgb3V0IHRoZSBmaWVsZCcgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnZXJyb3ItbXNnJywgJHRpdGxlOiAnRXJyb3IgbWVzc2FnZScsIHZhbHVlOiAnUGxlYXNlIHNlbGVjdCcgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAncmVtYXJrLXBsYWNlaG9sZGVyJywgJHRpdGxlOiAnQWRkaXRpb25hbCBmaWVsZCBwbGFjZWhvbGRlcicsIHZhbHVlOiAnZW50ZXIgaGVyZScgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRnhTZWxlY3RTZXR0aW5nKHtrZXk6ICdpc1JhZGlvUmVxdWlyZWQnLCAkdGl0bGU6ICdSZXF1aXJlZCcsIHZhbHVlOiAndHJ1ZSd9LCBbe29wdGlvbjogJ1llcycsIHZhbHVlOiAndHJ1ZSd9LCB7b3B0aW9uOiAnTm8nLCB2YWx1ZTogJ2ZhbHNlJ31dKSwgICAgXHJcbiAgICAgICAgICAgIC8vICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ290aGVyLXBsYWNlaG9sZGVyJywgJHRpdGxlOiAnT3RoZXIgUGxhY2Vob2xkZXInLCB2YWx1ZTogJycgfSksICBcclxuICAgICAgICAgICAgLy8gICBuZXcgRnhTZWxlY3RTZXR0aW5nKHtrZXk6ICdzZXJ2aWNlTmFtZScsICR0aXRsZTogJ1NlcnZpY2UnLCB2YWx1ZTogJyd9LCBbe29wdGlvbjogJ1VzZXIgU2VydmljZScsIHZhbHVlOiAndXNlcl9zZXJ2aWNlJ30sIHtvcHRpb246ICdQYXRpZW50IFNlcnZpY2UnLCB2YWx1ZTogJ3BhdGllbnRfc2VydmljZSd9LHtvcHRpb246ICdXb3JrZmxvdyBTZXJ2aWNlJywgdmFsdWU6ICd3b3JrZmxvd19zZXJ2aWNlJ31dKSxcclxuICAgICAgICAgICAgLy8gICAvLyBuZXcgRnhTZWxlY3RTZXR0aW5nKHtrZXk6ICdzZXJ2aWNlJywgJHRpdGxlOiAnU2VydmljZScsIHZhbHVlOiAnbG9jYWwnfSwgW3tvcHRpb246ICdMb2NhbCcsIHZhbHVlOiAnbG9jYWwnfSwge29wdGlvbjogJ1FBJywgdmFsdWU6ICdxYSd9LHtvcHRpb246ICdVQVQnLCB2YWx1ZTogJ3VhdCd9LHtvcHRpb246ICdQcm9kdWN0aW9uJywgdmFsdWU6ICdwcm9kJ31dKSwgICBcclxuICAgICAgICAgICAgLy8gICAvLyBuZXcgRnhTZWxlY3RTZXR0aW5nKHtrZXk6ICdpc1JlcXVpcmVkJywgJHRpdGxlOiAnUmVxdWlyZWQnLCB2YWx1ZTogdHJ1ZX0sIFt7b3B0aW9uOiAnWWVzJywgdmFsdWU6IHRydWV9LCB7b3B0aW9uOiAnTm8nLCB2YWx1ZTogZmFsc2V9XSksICAgIFxyXG4gICAgICAgICAgICAvLyAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnZXJyb3JNZXNzYWdlJywgJHRpdGxlOiAnRXJyb3IgTWVzc2FnZScsIHZhbHVlOiAnUGxlYXNlIGZpbGwgb3V0IHRoZSBmaWVsZCcgfSksICBcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uOiBzdHJpbmcpIHtcclxuXHJcbiAgICB0aGlzLnNob3dUZXh0QXJlYSA9IHNlbGVjdGlvbiA9PT0gdGhpcy5jb21wYXJlVmFsdWU7XHJcbiAgICBpZih0aGlzLnNob3dUZXh0QXJlYSl7XHJcbmNvbnN0IHZhbHVlVG9TaG93VGV4dEFyZWEgPSB0aGlzLmNvbmZpcm1hdGlvbkZvcm0uZ2V0KCd2YWx1ZVRvU2hvd1RleHRBcmVhJyk7XHJcbiB2YWx1ZVRvU2hvd1RleHRBcmVhPy5zZXRWYWx1ZSh0aGlzLnNldHRpbmcoJ3ZhbHVlLXNob3ctdGV4dCcpKTtcclxuY29uc3Qgb3RoZXJDb250cm9sID0gdGhpcy5jb25maXJtYXRpb25Gb3JtLmdldCgncmVtYXJrcycpO1xyXG50aGlzLmlzQ2hpbGRSZXF1aXJlZCA9IHRydWU7XHJcbm90aGVyQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5vdGhlckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIGNvbnN0IG90aGVyQ29udHJvbCA9IHRoaXMuY29uZmlybWF0aW9uRm9ybS5nZXQoJ3JlbWFya3MnKTtcclxuICAgICAgdGhpcy5pc0NoaWxkUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgb3RoZXJDb250cm9sPy5yZXNldCgpO1xyXG4gICAgICBvdGhlckNvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICBvdGhlckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcbiIsIjxmeC1jb21wb25lbnQgW2Z4RGF0YV09XCJmeERhdGFcIiAjZnhDb21wb25lbnQ+XHJcbiAgPGRpdiAgW25nQ2xhc3NdPVwic2V0dGluZygnY3VzdG9tQ2xhc3NzJylcIj5cclxuPGZvcm0gW2Zvcm1Hcm91cF09XCJjb25maXJtYXRpb25Gb3JtXCIgY2xhc3M9XCJmbGV4IGdhcC00IHctZnVsbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4LTEgdy1mdWxsXCI+XHJcbiAgICA8IS0tIFRpdGxlIC0tPlxyXG4gIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTgwMFwiPlxyXG4gICAge3sgc2V0dGluZygnc2VsZWN0LWxhYmVsJykgfX0gPHNwYW4gY2xhc3M9XCJmaWVsZC1yZXF1aXJlZFwiICpuZ0lmPVwiaXNSZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuXHJcbiAgPCEtLSBUV08gQ09MVU1OIExBWU9VVCAtLT5cclxuICBcclxuXHJcbiAgICA8IS0tIExFRlQgQ09MVU1OIChSQURJTyBHUk9VUCkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMyBteS0yXCI+IFxyXG4gICAgICAgIDwhLS0gc3RhY2sgdmVydGljYWxseSBzbyBoZWlnaHQgaXMgY29ycmVjdCAtLT5cclxuICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHQgb2Ygb3B0aW9uc1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGN1cnNvci1wb2ludGVyIHRleHQtZ3JheS03MDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maXJtYXRpb25cIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0LnZhbHVlXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZShvcHQudmFsdWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ3LTQgaC00IGFjY2VudC1ibHVlLTYwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW4+e3sgb3B0Lm9wdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gUmFkaW8gZXJyb3IgLS0+XHJcbiAgICAgIDxzbWFsbFxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjb25maXJtYXRpb25Gb3JtLmdldCgnY29uZmlybWF0aW9uJyk/LnRvdWNoZWQgJiZcclxuICAgICAgICAgIGNvbmZpcm1hdGlvbkZvcm0uZ2V0KCdjb25maXJtYXRpb24nKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwIG10LTFcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgc2V0dGluZygnZXJyb3ItbXNnJykgfX1cclxuICAgICAgPC9zbWFsbD5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgICA8IS0tIFJJR0hUIENPTFVNTiAoVEVYVEFSRUEpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dUZXh0QXJlYVwiIGNsYXNzPVwiZmxleC0xIHJlbGF0aXZlIG10LTIgbWQ6bXQtMVwiPlxyXG5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgIHt7IHNldHRpbmcoJ2FkZGl0aW9uYWwtZmllbGQtbGFiZWwnKSB9fSA8c3BhbiBjbGFzcz1cImZpZWxkLXJlcXVpcmVkXCIgKm5nSWY9XCJpc0NoaWxkUmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVtYXJrc1wiXHJcbiAgICAgICAgcm93cz1cIjNcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgc2V0dGluZygncmVtYXJrLXBsYWNlaG9sZGVyJykgfX1cIlxyXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIHAtMyB3LWZ1bGwgcmVzaXplLW5vbmUgc2hhZG93LXNtXHJcbiAgICAgICAgICAgICAgIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ibHVlLTUwMFwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG5cclxuICAgICAgPCEtLSBUZXh0YXJlYSBlcnJvciAtLT5cclxuICAgICAgPHNtYWxsXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbmZpcm1hdGlvbkZvcm0uZ2V0KCdyZW1hcmtzJyk/LnRvdWNoZWQgJiZcclxuICAgICAgICAgIGNvbmZpcm1hdGlvbkZvcm0uZ2V0KCdyZW1hcmtzJyk/LmVycm9ycz8uWydyZXF1aXJlZCddXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMCBtdC0xXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHNldHRpbmcoJ2FkZGl0aW9uYWwtZmllbGQtZXJyb3ItbXNnJykgfX1cclxuICAgICAgPC9zbWFsbD5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuPC9mb3JtPlxyXG48L2Rpdj5cclxuXHJcblxyXG48L2Z4LWNvbXBvbmVudD5cclxuIl19
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQWEsZUFBZSxFQUFvQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25LLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFTeEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUEwQmhDO0lBQStCO0lBQXlCO0lBQXlEO0lBekJqSSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBQzFDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDZixlQUFlLEdB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bUI7a0JBUC9CLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBQyxpQkFBaUIsQ0FBQztzTEFRakcsZUFBZTtzQkFBdkIsS0FBSztnQkFld0IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnkgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2NvcmUnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4Q29tcG9uZW50LCBGeE9wdGlvblNldHRpbmcsIEZ4U2VsZWN0U2V0dGluZywgRnhTZXR0aW5nLCBGeFN0cmluZ1NldHRpbmcsIEZ4VmFsaWRhdGlvbiwgRnhWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9meCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmFkaW8tZ3JvdXAtY3VzdG9tJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlLCBGeENvbXBvbmVudCwgQ2FsZW5kYXJNb2R1bGUsUmFkaW9CdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0dyb3VwQ29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0e1xyXG5wcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxucHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbmZvcm1PYmplY3Q6IG9iamVjdCA9IHt9O1xyXG5ASW5wdXQoKSBzaG93T25TZWxlY3Rpb246ICd5ZXMnIHwgJ25vJyA9ICd5ZXMnOyAvLyBjb25maWd1cmFibGU6IHNob3cgdGV4dGFyZWEgb24gWWVzIG9yIE5vXHJcbiAgc2hvd1RleHRBcmVhID0gZmFsc2U7XHJcbiBwdWJsaWMgY29uZmlybWF0aW9uRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBjb25maXJtYXRpb246IFsnJ10sXHJcbiAgICAgIHJlbWFya3M6IFsnJ10sXHJcbiAgICAgIHZhbHVlVG9TaG93VGV4dEFyZWE6IFsnJ10sXHJcbiAgICAgIGxhYmVsOlsnJ11cclxuICAgIH0pO1xyXG5cclxuICAgIG9wdGlvbnM6IGFueVtdID0gW1xyXG4gICAgICB7IG9wdGlvbjogJ1llcycsIHZhbHVlOiAnWUVTJyB9LFxyXG4gICAgICB7IG9wdGlvbjogJ05vJywgdmFsdWU6ICdOTycgfSxcclxuICAgICAgeyBvcHRpb246ICdOQScsIHZhbHVlOiAnTkEnIH1cclxuICAgIF07XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZnhDb21wb25lbnQnKSBmeENvbXBvbmVudCE6IEZ4Q29tcG9uZW50O1xyXG4gICAgcmFkb2lvTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICAgIGNvbXBhcmVWYWx1ZTogYW55O1xyXG4gICAgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaXNDaGlsZFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICByZW1hcmtNYXhMZW5ndGg6IG51bWJlciA9IDg0O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQscHJpdmF0ZSBmeEJ1aWxkZXJXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UscHJpdmF0ZSBmeEFwaVNlcnZpY2U6IEFwaVNlcnZpY2VSZWdpc3RyeSkge1xyXG4gICAgICAgc3VwZXIoY2RyKVxyXG4gICAgICAgIHRoaXMub25Jbml0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLmNvbmZpcm1hdGlvbkZvcm0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgXHJcbiAgICAgfVxyXG5cclxuICAgICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgID0gKHRoaXMuZnhDb21wb25lbnQ/LmZ4RGF0YT8uc2V0dGluZ3M/LmZpbmQoKHM6IGFueSkgPT4gcy5rZXkgPT09ICdpdGVtcycpIGFzIGFueSk/Lm9wdGlvbnMgfHwgW107XHJcbiAgICAgICBjb25zdCBsYWJlbERhdGEgPVxyXG4gICh0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/LnNldHRpbmdzPy5maW5kKChzOiBhbnkpID0+IHMua2V5ID09PSAnc2VsZWN0LWxhYmVsJykgYXMgYW55KT8udmFsdWUgPz9cclxuICAnJztcclxudGhpcy5jb21wYXJlVmFsdWUgPSAodGhpcy5meENvbXBvbmVudD8uZnhEYXRhPy5zZXR0aW5ncz8uZmluZCgoczogYW55KSA9PiBzLmtleSA9PT0gJ3ZhbHVlLXNob3ctdGV4dCcpIGFzIGFueSk/LnZhbHVlXHJcbiAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5jb25maXJtYXRpb25Gb3JtLmdldCgnbGFiZWwnKTtcclxuICAgICAgICAgbGFiZWw/LnNldFZhbHVlKGxhYmVsRGF0YSk7XHJcbiAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICBjb25zdCBrZXkgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/Lm5hbWU7XHJcblxyXG4gIGlmIChrZXkgJiYgdGhpcy5yYWRvaW9NYXAuaGFzKGtleSkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uRm9ybS5wYXRjaFZhbHVlKHRoaXMucmFkb2lvTWFwLmdldChrZXkpKTtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJhZG9pb01hcC5nZXQoa2V5KTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoZGF0YS5jb25maXJtYXRpb24pO1xyXG4gIH1cclxufSwgMjAwKTtcclxuXHJcbiAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgY29uc3QgbWFpbkNvbnRyb2wgPSB0aGlzLmNvbmZpcm1hdGlvbkZvcm0uZ2V0KCdjb25maXJtYXRpb24nKTtcclxuICAgICB0aGlzLnJlbWFya01heExlbmd0aCA9IE51bWJlcih0aGlzLnNldHRpbmcoJ3JlbWFyay1tYXhsZW5ndGgnKSkgfHwgODQ7XHJcbiAgICAgaWYodGhpcy5zZXR0aW5nKCdpc1JhZGlvUmVxdWlyZWQnKSA9PT0gJ3RydWUnKXtcclxuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgbWFpbkNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgbWFpbkNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICB9XHJcbiAgICB9LDEwMClcclxuXHJcbiAgICAgICAgXHJcbiAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAgICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykgYXMgW3N0cmluZywgYW55XVtdKSB7XHJcbiAgICAgICAgICAgIC8vICAgaWYgKGtleS5pbmNsdWRlcygncmFkaW8tZ3JvdXAtY3VzdG9tJykpIHtcclxuICAgICAgICAgICAgLy8gICAgdGhpcy5mb3JtT2JqZWN0ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpIGFzIFtzdHJpbmcsIGFueV1bXSkge1xyXG4gIGlmIChcclxuICAgIHZhbHVlICYmXHJcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXHJcbiAgICAnY29uZmlybWF0aW9uJyBpbiB2YWx1ZVxyXG4gICkge1xyXG4gICAgdGhpcy5yYWRvaW9NYXAuc2V0KGtleSwgdmFsdWUpO1xyXG4gIH1cclxufVxyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLm9wdGlvbnMgID0gKHRoaXMuZnhDb21wb25lbnQ/LmZ4RGF0YT8uc2V0dGluZ3M/LmZpbmQoKHM6IGFueSkgPT4gcy5rZXkgPT09ICdpdGVtcycpIGFzIGFueSk/Lm9wdGlvbnMgfHwgW107XHJcblxyXG5cclxuICAgICAgLy8gIHRoaXMuc2V0dGluZygnaXRlbXMnKS5sZW5ndGggPiAwID8gdGhpcy5vcHRpb25zID0gdGhpcy5zZXR0aW5nKCdpdGVtcycpIDogbnVsbDtcclxuICAgICBcclxuICAgICAgLy8gICB0aGlzLmNvbmZpcm1hdGlvbkZvcm0uZ2V0KCdjb25maXJtYXRpb24nKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIC8vICAgIGNvbnN0IG90aGVyQ29udHJvbCA9IHRoaXMuY29uZmlybWF0aW9uRm9ybS5nZXQoJ3JlbWFya3MnKTtcclxuICAgICAgLy8gICAgY29uc3QgdmFsdWVUb1Nob3dUZXh0QXJlYSA9IHRoaXMuY29uZmlybWF0aW9uRm9ybS5nZXQoJ3ZhbHVlVG9TaG93VGV4dEFyZWEnKTtcclxuICAgICAgLy8gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIC8vICAgICAgb3RoZXJDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgIC8vICAgICAgdmFsdWVUb1Nob3dUZXh0QXJlYT8uc2V0VmFsdWUodGhpcy5zZXR0aW5nKCd2YWx1ZS1zaG93LXRleHQnKSk7XHJcblxyXG4gICAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgICAgLy8gICAgICBvdGhlckNvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAvLyAgICAgIG90aGVyQ29udHJvbD8ucmVzZXQoKTtcclxuICAgICAgLy8gICAgICB2YWx1ZVRvU2hvd1RleHRBcmVhPy5yZXNldCgpO1xyXG4gICAgICAvLyAgICB9XHJcbiAgICAgIC8vICB9KTtcclxuICAgICAgIFxyXG4gICAgIFxyXG4gICAgIH1cclxuXHJcbiAgICAgcHJvdGVjdGVkIHNldHRpbmdzKCk6IEZ4U2V0dGluZ1tdIHtcclxuICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIC8vIG5ldyBGeFN0cmluZ1NldHRpbmcoeyBrZXk6ICdjbGluaWNhbE5vdGVzVVJMJywgJHRpdGxlOiAnQVBJIFVybCcsIHZhbHVlOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2N1c3RvbUNsYXNzcycsICR0aXRsZTogJ0N1c3RvbSBDbGFzcyBOYW1lJywgdmFsdWU6ICcnIH0pLFxyXG4gICAgICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3NlbGVjdC1sYWJlbCcsICR0aXRsZTogJ0hlYWRlciBMYWJlbCcsIHZhbHVlOiAnSGVhZGVyIExhYmVsJyB9KSwgXHJcbiAgICAgICAgICAgICAgLy8gbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ29wdGlvbi12YWx1ZS1vbmUnLCAkdGl0bGU6ICdWYWx1ZSBvbmUnLCB2YWx1ZTogJ1ZhbHVlIG9uZScgfSksIFxyXG4gICAgICAgICAgICAgIC8vICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnb3B0aW9uLXZhbHVlLXR3bycsICR0aXRsZTogJ1ZhbHVlIHR3bycsIHZhbHVlOiAnVmFsdWUgdHdvJyB9KSwgXHJcbiAgICAgICAgICAgICAgLy8gICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnb3B0aW9uLWxhYmVsLW9uZScsICR0aXRsZTogJ0xhYmVsIG9uZScsIHZhbHVlOiAnTGFiZWwgb25lJyB9KSwgXHJcbiAgICAgICAgICAgICAgLy8gICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnb3B0aW9uLWxhYmVsLXR3bycsICR0aXRsZTogJ0xhYmVsIHR3bycsIHZhbHVlOiAnTGFiZWwgdHdvJyB9KSwgXHJcbiAgICAgICAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAndmFsdWUtc2hvdy10ZXh0JywgJHRpdGxlOiAnVmFsdWUgdG8gc2hvdyB0ZXh0YXJlYScsIHZhbHVlOiAnVmFsdWUgdG8gc2hvdyB0ZXh0YXJlYScgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRnhPcHRpb25TZXR0aW5nKHsga2V5OiAnaXRlbXMnLCAkdGl0bGU6ICdPcHRpb25zJywgdmFsdWU6IFt7b3B0aW9uOiAnWWVzJywgdmFsdWU6ICd5ZXMnfSwge29wdGlvbjogJ05vJywgdmFsdWU6ICdubyd9XSAgfSwgW3tvcHRpb246ICdZZXMnLCB2YWx1ZTogJ3llcyd9LCB7b3B0aW9uOiAnTm8nLCB2YWx1ZTogJ25vJ31dKSwgXHJcbiAgICAgICAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnYWRkaXRpb25hbC1maWVsZC1sYWJlbCcsICR0aXRsZTogJ0FkZGl0aW9uYWwgZmllbGQgbGFiZWwnLCB2YWx1ZTogJycgfSksXHJcbiAgICAgICAgICAgICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnYWRkaXRpb25hbC1maWVsZC1lcnJvci1tc2cnLCAkdGl0bGU6ICdBZGRpdGlvbmFsIGZpZWxkIGVycm9yIG1lc3NhZ2UnLCB2YWx1ZTogJ1BsZWFzZSBmaWxsIG91dCB0aGUgZmllbGQnIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2Vycm9yLW1zZycsICR0aXRsZTogJ0Vycm9yIG1lc3NhZ2UnLCB2YWx1ZTogJ1BsZWFzZSBzZWxlY3QnIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3JlbWFyay1wbGFjZWhvbGRlcicsICR0aXRsZTogJ0FkZGl0aW9uYWwgZmllbGQgcGxhY2Vob2xkZXInLCB2YWx1ZTogJ2VudGVyIGhlcmUnIH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7a2V5OiAnaXNSYWRpb1JlcXVpcmVkJywgJHRpdGxlOiAnUmVxdWlyZWQnLCB2YWx1ZTogJ3RydWUnfSwgW3tvcHRpb246ICdZZXMnLCB2YWx1ZTogJ3RydWUnfSwge29wdGlvbjogJ05vJywgdmFsdWU6ICdmYWxzZSd9XSksICAgIFxyXG4gICAgICAgICAgICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3JlbWFyay1tYXhsZW5ndGgnLCAkdGl0bGU6ICdBZGRpdGlvbmFsIGZpZWxkIG1heCBsZW5ndGgnLCB2YWx1ZTogODQgfSksXHJcbiAgICAgICAgICAgIC8vICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ290aGVyLXBsYWNlaG9sZGVyJywgJHRpdGxlOiAnT3RoZXIgUGxhY2Vob2xkZXInLCB2YWx1ZTogJycgfSksICBcclxuICAgICAgICAgICAgLy8gICBuZXcgRnhTZWxlY3RTZXR0aW5nKHtrZXk6ICdzZXJ2aWNlTmFtZScsICR0aXRsZTogJ1NlcnZpY2UnLCB2YWx1ZTogJyd9LCBbe29wdGlvbjogJ1VzZXIgU2VydmljZScsIHZhbHVlOiAndXNlcl9zZXJ2aWNlJ30sIHtvcHRpb246ICdQYXRpZW50IFNlcnZpY2UnLCB2YWx1ZTogJ3BhdGllbnRfc2VydmljZSd9LHtvcHRpb246ICdXb3JrZmxvdyBTZXJ2aWNlJywgdmFsdWU6ICd3b3JrZmxvd19zZXJ2aWNlJ31dKSxcclxuICAgICAgICAgICAgLy8gICAvLyBuZXcgRnhTZWxlY3RTZXR0aW5nKHtrZXk6ICdzZXJ2aWNlJywgJHRpdGxlOiAnU2VydmljZScsIHZhbHVlOiAnbG9jYWwnfSwgW3tvcHRpb246ICdMb2NhbCcsIHZhbHVlOiAnbG9jYWwnfSwge29wdGlvbjogJ1FBJywgdmFsdWU6ICdxYSd9LHtvcHRpb246ICdVQVQnLCB2YWx1ZTogJ3VhdCd9LHtvcHRpb246ICdQcm9kdWN0aW9uJywgdmFsdWU6ICdwcm9kJ31dKSwgICBcclxuICAgICAgICAgICAgLy8gICAvLyBuZXcgRnhTZWxlY3RTZXR0aW5nKHtrZXk6ICdpc1JlcXVpcmVkJywgJHRpdGxlOiAnUmVxdWlyZWQnLCB2YWx1ZTogdHJ1ZX0sIFt7b3B0aW9uOiAnWWVzJywgdmFsdWU6IHRydWV9LCB7b3B0aW9uOiAnTm8nLCB2YWx1ZTogZmFsc2V9XSksICAgIFxyXG4gICAgICAgICAgICAvLyAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnZXJyb3JNZXNzYWdlJywgJHRpdGxlOiAnRXJyb3IgTWVzc2FnZScsIHZhbHVlOiAnUGxlYXNlIGZpbGwgb3V0IHRoZSBmaWVsZCcgfSksICBcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uOiBzdHJpbmcpIHtcclxuXHJcbiAgICB0aGlzLnNob3dUZXh0QXJlYSA9IHNlbGVjdGlvbiA9PT0gdGhpcy5jb21wYXJlVmFsdWU7XHJcbiAgICBpZih0aGlzLnNob3dUZXh0QXJlYSl7XHJcbmNvbnN0IHZhbHVlVG9TaG93VGV4dEFyZWEgPSB0aGlzLmNvbmZpcm1hdGlvbkZvcm0uZ2V0KCd2YWx1ZVRvU2hvd1RleHRBcmVhJyk7XHJcbiB2YWx1ZVRvU2hvd1RleHRBcmVhPy5zZXRWYWx1ZSh0aGlzLnNldHRpbmcoJ3ZhbHVlLXNob3ctdGV4dCcpKTtcclxuY29uc3Qgb3RoZXJDb250cm9sID0gdGhpcy5jb25maXJtYXRpb25Gb3JtLmdldCgncmVtYXJrcycpO1xyXG50aGlzLmlzQ2hpbGRSZXF1aXJlZCA9IHRydWU7XHJcbm90aGVyQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5vdGhlckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIGNvbnN0IG90aGVyQ29udHJvbCA9IHRoaXMuY29uZmlybWF0aW9uRm9ybS5nZXQoJ3JlbWFya3MnKTtcclxuICAgICAgdGhpcy5pc0NoaWxkUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgb3RoZXJDb250cm9sPy5yZXNldCgpO1xyXG4gICAgICBvdGhlckNvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICBvdGhlckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcbiIsIjxmeC1jb21wb25lbnQgW2Z4RGF0YV09XCJmeERhdGFcIiAjZnhDb21wb25lbnQ+XHJcbiAgPGRpdiAgW25nQ2xhc3NdPVwic2V0dGluZygnY3VzdG9tQ2xhc3NzJylcIj5cclxuPGZvcm0gW2Zvcm1Hcm91cF09XCJjb25maXJtYXRpb25Gb3JtXCIgY2xhc3M9XCJmbGV4IGdhcC00IHctZnVsbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4LTEgdy1mdWxsXCI+XHJcbiAgICA8IS0tIFRpdGxlIC0tPlxyXG4gIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTgwMFwiPlxyXG4gICAge3sgc2V0dGluZygnc2VsZWN0LWxhYmVsJykgfX0gPHNwYW4gY2xhc3M9XCJmaWVsZC1yZXF1aXJlZFwiICpuZ0lmPVwiaXNSZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuXHJcbiAgPCEtLSBUV08gQ09MVU1OIExBWU9VVCAtLT5cclxuICBcclxuXHJcbiAgICA8IS0tIExFRlQgQ09MVU1OIChSQURJTyBHUk9VUCkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMyBteS0yXCI+IFxyXG4gICAgICAgIDwhLS0gc3RhY2sgdmVydGljYWxseSBzbyBoZWlnaHQgaXMgY29ycmVjdCAtLT5cclxuICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHQgb2Ygb3B0aW9uc1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGN1cnNvci1wb2ludGVyIHRleHQtZ3JheS03MDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maXJtYXRpb25cIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0LnZhbHVlXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZShvcHQudmFsdWUpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ3LTQgaC00IGFjY2VudC1ibHVlLTYwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW4+e3sgb3B0Lm9wdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gUmFkaW8gZXJyb3IgLS0+XHJcbiAgICAgIDxzbWFsbFxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjb25maXJtYXRpb25Gb3JtLmdldCgnY29uZmlybWF0aW9uJyk/LnRvdWNoZWQgJiZcclxuICAgICAgICAgIGNvbmZpcm1hdGlvbkZvcm0uZ2V0KCdjb25maXJtYXRpb24nKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwIG10LTFcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgc2V0dGluZygnZXJyb3ItbXNnJykgfX1cclxuICAgICAgPC9zbWFsbD5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgICA8IS0tIFJJR0hUIENPTFVNTiAoVEVYVEFSRUEpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dUZXh0QXJlYVwiIGNsYXNzPVwiZmxleC0xIHJlbGF0aXZlIG10LTIgbWQ6bXQtMVwiPlxyXG5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiaW5wdXQtbGFiZWwgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgIHt7IHNldHRpbmcoJ2FkZGl0aW9uYWwtZmllbGQtbGFiZWwnKSB9fSA8c3BhbiBjbGFzcz1cImZpZWxkLXJlcXVpcmVkXCIgKm5nSWY9XCJpc0NoaWxkUmVxdWlyZWRcIj4qPC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVtYXJrc1wiXHJcbiAgICAgICAgcm93cz1cIjNcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgc2V0dGluZygncmVtYXJrLXBsYWNlaG9sZGVyJykgfX1cIlxyXG4gICAgICAgIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIHAtMyB3LWZ1bGwgcmVzaXplLW5vbmUgc2hhZG93LXNtXHJcbiAgICAgICAgICAgICAgIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ibHVlLTUwMFwiXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJyZW1hcmtNYXhMZW5ndGhcIiAgICAgICBcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcblxyXG4gICAgICA8IS0tIFRleHRhcmVhIGVycm9yIC0tPlxyXG4gICAgICA8c21hbGxcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY29uZmlybWF0aW9uRm9ybS5nZXQoJ3JlbWFya3MnKT8udG91Y2hlZCAmJlxyXG4gICAgICAgICAgY29uZmlybWF0aW9uRm9ybS5nZXQoJ3JlbWFya3MnKT8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1yZWQtNTAwIG10LTFcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgc2V0dGluZygnYWRkaXRpb25hbC1maWVsZC1lcnJvci1tc2cnKSB9fVxyXG4gICAgICA8L3NtYWxsPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG48L2Zvcm0+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjwvZngtY29tcG9uZW50PlxyXG4iXX0=
|