@mediusinc/mng-commons 2.5.0-rc.0 → 2.6.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/i18n/en.json +4 -1
- package/assets/i18n/sl.json +4 -1
- package/esm2020/lib/components/action/action.component.mjs +8 -1
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +196 -115
- package/esm2020/lib/components/action/models/action-execution.model.mjs +99 -10
- package/esm2020/lib/components/action/route/action-route.component.mjs +53 -35
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +15 -6
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +4 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +69 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +54 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +4 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +5 -2
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +4 -1
- package/esm2020/lib/components/form/formly/fields/index.mjs +3 -1
- package/esm2020/lib/components/form/formly/formly.config.mjs +11 -1
- package/esm2020/lib/components/form/formly/models/formly-field.model.mjs +1 -1
- package/esm2020/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +21 -3
- package/esm2020/lib/components/layout/menu-item.component.mjs +9 -11
- package/esm2020/lib/components/layout/version.component.mjs +3 -3
- package/esm2020/lib/components/tableview/table/models/index.mjs +2 -0
- package/esm2020/lib/components/tableview/table/table.component.mjs +67 -9
- package/esm2020/lib/descriptors/action/action.descriptor.mjs +13 -1
- package/esm2020/lib/descriptors/editor/field.descriptor.mjs +77 -3
- package/esm2020/lib/descriptors/table/column.descriptor.mjs +25 -1
- package/esm2020/lib/descriptors/table/table.descriptor.mjs +13 -1
- package/esm2020/lib/descriptors/types/table.type.mjs +4 -1
- package/esm2020/lib/mng-commons.module.mjs +7 -4
- package/esm2020/lib/models/config.model.mjs +1 -1
- package/esm2020/lib/models/view-container.model.mjs +1 -1
- package/esm2020/lib/services/action-executor.service.mjs +313 -190
- package/esm2020/lib/services/commons.service.mjs +8 -1
- package/esm2020/lib/services/index.mjs +3 -1
- package/esm2020/lib/services/internal/commons-init.service.mjs +5 -9
- package/esm2020/lib/services/navigation.service.mjs +6 -3
- package/esm2020/lib/services/view-container.component.service.mjs +10 -1
- package/esm2020/lib/utils/action-data-provider.util.mjs +14 -1
- package/esm2020/lib/utils/editor-formly.util.mjs +23 -3
- package/fesm2015/mediusinc-mng-commons.mjs +2541 -1807
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +2167 -1451
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/components/action/action.component.d.ts +1 -2
- package/lib/components/action/editor/action-editor.component.d.ts +19 -6
- package/lib/components/action/models/action-execution.model.d.ts +35 -6
- package/lib/components/action/route/action-route.component.d.ts +7 -4
- package/lib/components/form/editor/form-editor.component.d.ts +2 -1
- package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +27 -0
- package/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +11 -0
- package/lib/components/form/formly/fields/index.d.ts +2 -0
- package/lib/components/form/formly/models/formly-field.model.d.ts +1 -0
- package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +5 -0
- package/lib/components/layout/menu-item.component.d.ts +1 -2
- package/lib/components/layout/version.component.d.ts +1 -1
- package/lib/components/tableview/table/models/index.d.ts +6 -0
- package/lib/components/tableview/table/table.component.d.ts +16 -1
- package/lib/descriptors/action/action.descriptor.d.ts +5 -0
- package/lib/descriptors/editor/field.descriptor.d.ts +28 -1
- package/lib/descriptors/table/column.descriptor.d.ts +8 -0
- package/lib/descriptors/table/table.descriptor.d.ts +2 -0
- package/lib/descriptors/types/table.type.d.ts +3 -0
- package/lib/mng-commons.module.d.ts +15 -14
- package/lib/models/config.model.d.ts +4 -0
- package/lib/models/view-container.model.d.ts +6 -0
- package/lib/services/action-executor.service.d.ts +69 -35
- package/lib/services/commons.service.d.ts +2 -0
- package/lib/services/index.d.ts +2 -0
- package/lib/services/internal/commons-init.service.d.ts +1 -3
- package/lib/services/navigation.service.d.ts +3 -2
- package/lib/services/view-container.component.service.d.ts +7 -2
- package/lib/utils/action-data-provider.util.d.ts +8 -0
- package/package.json +3 -3
- package/scss/mng-commons-light.scss +3 -0
- package/scss/mng-overrides/_theme_multiselect.scss +20 -0
- package/scss/mng-overrides/_theme_styles.scss +1 -0
|
@@ -26,6 +26,8 @@ export class MngFormEditorComponent {
|
|
|
26
26
|
this.submitLoading = false;
|
|
27
27
|
this.viewContainerSubject = new ReplaySubject(1);
|
|
28
28
|
this.viewContainer$ = this.viewContainerSubject.asObservable();
|
|
29
|
+
// extra features input
|
|
30
|
+
this.isFormDisabled = false;
|
|
29
31
|
// event outputs
|
|
30
32
|
this.formSubmitEventEmitter = new EventEmitter();
|
|
31
33
|
this.form = new FormGroup({});
|
|
@@ -69,6 +71,12 @@ export class MngFormEditorComponent {
|
|
|
69
71
|
if (changes['viewContainerInit'] && !changes['viewContainerInit'].firstChange) {
|
|
70
72
|
this.viewContainerSubject.next(changes['viewContainerInit']);
|
|
71
73
|
}
|
|
74
|
+
if (changes['isFormDisabled'] && !changes['isFormDisabled'].firstChange) {
|
|
75
|
+
this.updateFormState();
|
|
76
|
+
}
|
|
77
|
+
if (changes['item'] && !changes['item'].firstChange) {
|
|
78
|
+
this.resetFormModel(this.item);
|
|
79
|
+
}
|
|
72
80
|
}
|
|
73
81
|
ngOnDestroy() {
|
|
74
82
|
this.subscriptions.forEach(s => s.unsubscribe());
|
|
@@ -234,7 +242,8 @@ export class MngFormEditorComponent {
|
|
|
234
242
|
return false;
|
|
235
243
|
}
|
|
236
244
|
updateFormState() {
|
|
237
|
-
this.
|
|
245
|
+
const isDisabled = this.isFormDisabled || this.descriptor?.disabled === true || this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Details;
|
|
246
|
+
this.formOptions.formState.disabled = isDisabled;
|
|
238
247
|
}
|
|
239
248
|
/**
|
|
240
249
|
* @private Sets form state based on editor descriptor type.
|
|
@@ -247,13 +256,11 @@ export class MngFormEditorComponent {
|
|
|
247
256
|
else if (this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Edit) {
|
|
248
257
|
this.formOptions.formState.edit = true;
|
|
249
258
|
}
|
|
250
|
-
|
|
251
|
-
this.formOptions.formState.disabled = true;
|
|
252
|
-
}
|
|
259
|
+
this.updateFormState();
|
|
253
260
|
}
|
|
254
261
|
}
|
|
255
262
|
MngFormEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormEditorComponent, deps: [{ token: i1.MngCommonsService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
256
|
-
MngFormEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngFormEditorComponent, isStandalone: true, selector: "mng-form-editor", inputs: { descriptor: "descriptor", submitLoading: "submitLoading", item: "item", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { formSubmitEventEmitter: "formSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button #submitButton pButton type=\"submit\" class=\"hidden\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n", dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i3.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i5.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
263
|
+
MngFormEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngFormEditorComponent, isStandalone: true, selector: "mng-form-editor", inputs: { descriptor: "descriptor", submitLoading: "submitLoading", item: "item", viewContainerInit: ["viewContainer", "viewContainerInit"], isFormDisabled: "isFormDisabled" }, outputs: { formSubmitEventEmitter: "formSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button #submitButton pButton type=\"submit\" class=\"hidden\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n", dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i3.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i5.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
257
264
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormEditorComponent, decorators: [{
|
|
258
265
|
type: Component,
|
|
259
266
|
args: [{ standalone: true, selector: 'mng-form-editor', imports: [FormlyModule, ReactiveFormsModule, MessagesModule, AsyncPipe, ButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button #submitButton pButton type=\"submit\" class=\"hidden\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n" }]
|
|
@@ -266,6 +273,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
266
273
|
}], viewContainerInit: [{
|
|
267
274
|
type: Input,
|
|
268
275
|
args: ['viewContainer']
|
|
276
|
+
}], isFormDisabled: [{
|
|
277
|
+
type: Input
|
|
269
278
|
}], formSubmitEventEmitter: [{
|
|
270
279
|
type: Output,
|
|
271
280
|
args: ['formSubmit']
|
|
@@ -276,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
276
285
|
type: ViewChild,
|
|
277
286
|
args: ['submitButton']
|
|
278
287
|
}] } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2Zvcm0tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBR1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsU0FBUyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLE9BQU8sRUFBdUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFFLGFBQWEsRUFBZ0IsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsaUJBQWlC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QixLQUFLLHVCQUF1QixDQUFDLE9BQU8sRUFBRTtZQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQzlDO0lBQ0wsQ0FBQzs7bUhBclJRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHVTQWVkLG9CQUFvQiwwS0N6RHpDLDBhQUtBLDJDRGtDYyxZQUFZLDZLQUFFLG1CQUFtQixvYkFBRSxjQUFjLDRRQUFFLFNBQVMsNkNBQUUsWUFBWTsyRkFHM0Usc0JBQXNCO2tCQVBsQyxTQUFTO2lDQUNNLElBQUksWUFDTixpQkFBaUIsV0FFbEIsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsbUJBQ3BFLHVCQUF1QixDQUFDLE1BQU07dUlBSS9CLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFHVSxJQUFJO3NCQUFuQixLQUFLO2dCQUN5QixpQkFBaUI7c0JBQS9DLEtBQUs7dUJBQUMsZUFBZTtnQkFLTyxzQkFBc0I7c0JBQWxELE1BQU07dUJBQUMsWUFBWTtnQkFHMEIsU0FBUztzQkFBdEQsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBQ0gsc0JBQXNCO3NCQUF2RCxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMsIEZvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtNZXNzYWdlc01vZHVsZX0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgb2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge1RhYmxldmlld0VkaXRvclR5cGVFbnVtfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5pbXBvcnQge01uZ1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXJ9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0VkaXRvckZvcm1seVV0aWwsIE5vdGlmaWNhdGlvblV0aWwsIE9iamVjdFV0aWx9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7TW5nRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uL2Zvcm1seS9tb2RlbHMnO1xuaW1wb3J0IHtJRm9ybUVkaXRvckNvbXBvbmVudCwgTW5nRm9ybUVkaXRvclN1Ym1pdEV2ZW50LCBNbmdGb3JtRXZlbnRUeXBlRW51bSwgTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm0tZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtGb3JtbHlNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1lc3NhZ2VzTW9kdWxlLCBBc3luY1BpcGUsIEJ1dHRvbk1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybUVkaXRvckNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIElGb3JtRWRpdG9yQ29tcG9uZW50PFQ+LCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvLyBtZXRhZGF0YSBhbmQgZWRpdG9yIG1vZGUgaW5wdXRcbiAgICBASW5wdXQoKSBwdWJsaWMgZGVzY3JpcHRvcj86IEVkaXRvckRlc2NyaXB0b3I8VD47XG4gICAgQElucHV0KCkgcHVibGljIHN1Ym1pdExvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBkYXRhIHNvdXJjZSBpbnB1dHM7XG4gICAgQElucHV0KCkgcHVibGljIGl0ZW0/OiBUO1xuICAgIEBJbnB1dCgndmlld0NvbnRhaW5lcicpIHB1YmxpYyB2aWV3Q29udGFpbmVySW5pdD86IElWaWV3Q29udGFpbmVyPFQsIHVua25vd24+O1xuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxJVmlld0NvbnRhaW5lcjxULCB1bmtub3duPj4oMSk7XG4gICAgcHVibGljIHZpZXdDb250YWluZXIkID0gdGhpcy52aWV3Q29udGFpbmVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIC8vIGV2ZW50IG91dHB1dHNcbiAgICBAT3V0cHV0KCdmb3JtU3VibWl0JykgcHVibGljIGZvcm1TdWJtaXRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1uZ0Zvcm1FZGl0b3JTdWJtaXRFdmVudDxUPj4oKTtcblxuICAgIC8vIGNvbnRlbnQgYW5kIHZpZXcgcXVlcmllc1xuICAgIEBDb250ZW50Q2hpbGRyZW4oTW5nVGVtcGxhdGVEaXJlY3RpdmUpIHB1YmxpYyB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8TW5nVGVtcGxhdGVEaXJlY3RpdmU+O1xuICAgIEBWaWV3Q2hpbGQoJ3N1Ym1pdEJ1dHRvbicpIHB1YmxpYyBzdWJtaXRCdXR0b25FbGVtZW50UmVmPzogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBwdWJsaWMgZm9ybU9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge1xuICAgICAgICBmb3JtU3RhdGU6IHtcbiAgICAgICAgICAgIGFkZDogZmFsc2UsXG4gICAgICAgICAgICBlZGl0OiBmYWxzZSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICB9XG4gICAgfTtcbiAgICBwdWJsaWMgZm9ybUZpZWxkcyE6IEZvcm1seUZpZWxkQ29uZmlnW107XG4gICAgcHVibGljIGZvcm1Nb2RlbDogYW55ID0ge307XG4gICAgcHVibGljIGZvcm1NZXNzYWdlczogTWVzc2FnZVtdID0gW107XG4gICAgcHVibGljIHN1Ym1pdExvYWRpbmckITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwcml2YXRlIG9yaWdpbmFsSXRlbVByb3RvdHlwZT86IFR5cGU8VD47XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1uZ0NvbW1vbnNTZXJ2aWNlOiBNbmdDb21tb25zU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldEluaXRpYWxGb3JtU3RhdGUoKTtcbiAgICAgICAgdGhpcy5yZXNldEZvcm1Nb2RlbCh0aGlzLml0ZW0pO1xuICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmckID0gdGhpcy5zdWJtaXRMb2FkaW5nIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IHRoaXMuc3VibWl0TG9hZGluZyA6IG9mKHRoaXMuc3VibWl0TG9hZGluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgLy8gaW5pdCBmaWVsZHMgZm9yIGZvcm1seVxuICAgICAgICAgICAgdGhpcy5mb3JtRmllbGRzID0gRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlDb25maWdGcm9tRGVzY3JpcHRvcih0aGlzLmRlc2NyaXB0b3IsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtU3RhdGUoKTtcblxuICAgICAgICAgICAgLy8gbGV0IHRoZSB1c2VyIGtub3csIHRoYXQgYWRkaW5nIG5ldyB2YWx1ZSBpbiB0YWJsZSB2aWV3IHdpdGggbG9jYWxpemF0aW9ucyBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUgZGVmYXVsdCBsYW5ndWFnZVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5pc0xvY2FsaXplZCAmJlxuICAgICAgICAgICAgICAgICh0aGlzLmRlc2NyaXB0b3IudGFibGV2aWV3RWRpdG9yVHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkIHx8IHRoaXMuZGVzY3JpcHRvci50YWJsZXZpZXdFZGl0b3JUeXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5FZGl0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtTWVzc2FnZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uVXRpbC5nZXRGb3JtRWRpdG9ySW5mb01lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW5nRWRpdG9yLmxvY2FsaXphdGlvbnMuYWRkSW5EZWZhdWx0TGFuZ3VhZ2VUaXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW5nRWRpdG9yLmxvY2FsaXphdGlvbnMuYWRkSW5EZWZhdWx0TGFuZ3VhZ2VEZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGVmYXVsdExhbmd1YWdlOiB0aGlzLm1uZ0NvbW1vbnNTZXJ2aWNlLmRlZmF1bHREYXRhTGFuZ3VhZ2V9XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtRWRpdG9yQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyNTApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1WYWx1ZTogKCkgPT4gdGhpcy5nZXRGb3JtVmFsdWUoKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd2aWV3Q29udGFpbmVySW5pdCddICYmICFjaGFuZ2VzWyd2aWV3Q29udGFpbmVySW5pdCddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJTdWJqZWN0Lm5leHQoY2hhbmdlc1sndmlld0NvbnRhaW5lckluaXQnXSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtRWRpdG9yQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9ERVNUUk9ZXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjb21wbGV0ZSBlbWl0dGluZyBldmVudHNcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5jb21wbGV0ZUV2ZW50cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdWJtaXQoKSB7XG4gICAgICAgIHRoaXMuc3VibWl0QnV0dG9uRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9ybU9wdGlvbnMuZm9ybVN0YXRlLnN1Ym1pdHRlZE9uID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5mb3JtTWVzc2FnZXMgPSBbXTtcblxuICAgICAgICBjb25zdCBmb3JtU3VibWl0SXRlbSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVN1Ym1pdEV2ZW50RW1pdHRlci5uZXh0KG5ldyBNbmdGb3JtRWRpdG9yU3VibWl0RXZlbnQoZm9ybVN1Ym1pdEl0ZW0pKTtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KE1uZ0Zvcm1FdmVudFR5cGVFbnVtLlN1Ym1pdCwgTW5nRm9ybUVkaXRvckNvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgIHN1Ym1pdFZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1Ym1pdFZhbHVlOiBmb3JtU3VibWl0SXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBmaW5kIGFuZCBtYXJrIGludmFsaWQgdGFic1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUZpZWxkc1swXS50eXBlID09PSAndGFicycgJiYgdGhpcy5mb3JtRmllbGRzWzBdLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiB0aGlzLmZvcm1GaWVsZHNbMF0uZmllbGRHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ludmFsaWQgPSB0aGlzLmlzQW55RmllbGRJbnZhbGlkKHRhYi5maWVsZEdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5mb3JtU3RhdGVbJ3RhYl8nICsgKHRhYi5pZCA/IHRhYi5pZCA6ICh0YWIucHJvcHMgYXMgTW5nRm9ybWx5RmllbGRDb25maWcpLnByb3BzLmxhYmVsKSArICdfaW52YWxpZCddID0gaXNJbnZhbGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1uZ0Zvcm1FZGl0b3JTdWJtaXRFdmVudChmb3JtU3VibWl0SXRlbSk7XG4gICAgICAgICAgICBldmVudC5zdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvcm1NZXNzYWdlcy5wdXNoKE5vdGlmaWNhdGlvblV0aWwuZ2V0Rm9ybUVkaXRvcldhcm5pbmdNZXNzYWdlKHRoaXMudHJhbnNsYXRlU2VydmljZSwgJ21uZ0VkaXRvci5pbnZhbGlkRm9ybVRvYXN0VGl0bGUnLCAnbW5nRWRpdG9yLmludmFsaWRGb3JtVG9hc3RNZXNzYWdlJykpO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm1TdWJtaXRFdmVudEVtaXR0ZXIubmV4dChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3I/Lm5leHRFdmVudChNbmdGb3JtRXZlbnRUeXBlRW51bS5TdWJtaXQsIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgc3VibWl0VmFsdWU6IGZvcm1TdWJtaXRJdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtVmFsdWUoKTogVCB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IE9iamVjdFV0aWwuZGVlcENvcHlPYmplY3QodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHttYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzOiB0cnVlfSk7XG5cbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQuc2V0dGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BsaXRQYXRoID0gZmllbGQucHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0UGF0aC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN1YlBhdGggPSBzcGxpdFBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZVtjdXJyZW50U3ViUGF0aF0gIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlW2N1cnJlbnRTdWJQYXRoXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IGZpZWxkVmFsdWVbY3VycmVudFN1YlBhdGhdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlW3NwbGl0UGF0aFtzcGxpdFBhdGgubGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgICAgIGZpZWxkLnNldHRlcihmb3JtVmFsdWUsIGZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRGb3JtTW9kZWwoaXRlbT86IFQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEl0ZW1Qcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtTW9kZWwgPSBPYmplY3RVdGlsLmRlZXBDb3B5T2JqZWN0KGl0ZW0sIHttYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzOiB0cnVlfSkgPz8ge307XG5cbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGQuZ2V0dGVyICYmIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdFBhdGggPSBmaWVsZC5wcm9wZXJ0eS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50T2JqZWN0ID0gZm9ybU1vZGVsO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGxpdFBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN1YlBhdGggPSBzcGxpdFBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBzcGxpdFBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE9iamVjdFtjdXJyZW50U3ViUGF0aF0gPSBmaWVsZC5nZXR0ZXIoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRPYmplY3RbY3VycmVudFN1YlBhdGhdICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3RbY3VycmVudFN1YlBhdGhdID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QgPSBjdXJyZW50T2JqZWN0W2N1cnJlbnRTdWJQYXRoXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb3JtT3B0aW9ucy5yZXNldE1vZGVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBjb3VsZCBub3QgYmUgaW5pdGlhdGVkIHlldFxuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5yZXNldE1vZGVsKHRoaXMuZm9ybU1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm1Nb2RlbCA9IGZvcm1Nb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybUZpZWxkKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRGb3JtRmllbGQodGhpcy5mb3JtLCBrZXkuc3BsaXQoJy4nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZvcm1GaWVsZFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1GaWVsZChrZXkpO1xuICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVmFsdWUgd2FzIG5vdCBzZXQsIGJlY2F1c2UgZmllbGQgJHtrZXl9IHdhcyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcGF0Y2hGb3JtRmllbGRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtRmllbGQoa2V5KTtcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVmFsdWUgd2FzIG5vdCBzZXQsIGJlY2F1c2UgZmllbGQgJHtrZXl9IHdhcyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRGb3JtRmllbGRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUZpZWxkKGtleSk7XG4gICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICBjb250cm9sLnJlc2V0KHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBWYWx1ZSB3YXMgbm90IHNldCwgYmVjYXVzZSBmaWVsZCAke2tleX0gd2FzIG5vdCBmb3VuZC5gKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEZvcm1GaWVsZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGtleVBhdGg6IHN0cmluZ1tdKTogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB7XG4gICAgICAgIGlmIChrZXlQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleVBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbC5nZXQoa2V5UGF0aFswXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHRDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICAgIG5leHRDb250cm9sID0gY29udHJvbC5nZXQoa2V5UGF0aFswXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gK2tleVBhdGhbMF07XG4gICAgICAgICAgICBpZiAoIWlzTmFOKGlkeCkpIHtcbiAgICAgICAgICAgICAgICBuZXh0Q29udHJvbCA9IGNvbnRyb2wuYXQoaWR4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEZvcm1GaWVsZChuZXh0Q29udHJvbCEsIGtleVBhdGguc2xpY2UoMSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBbnlGaWVsZEludmFsaWQoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW10pOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgIGxldCBmaWVsZEludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmZpZWxkR3JvdXApKSB7XG4gICAgICAgICAgICAgICAgZmllbGRJbnZhbGlkID0gdGhpcy5pc0FueUZpZWxkSW52YWxpZChmaWVsZC5maWVsZEdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkLnR5cGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRJbnZhbGlkID0gIWZpZWxkLmZvcm1Db250cm9sPy52YWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWVsZEludmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGb3JtU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuZm9ybU9wdGlvbnMuZm9ybVN0YXRlLmRpc2FibGVkID0gdGhpcy5kZXNjcmlwdG9yPy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZSBTZXRzIGZvcm0gc3RhdGUgYmFzZWQgb24gZWRpdG9yIGRlc2NyaXB0b3IgdHlwZS5cbiAgICAgKiBQb3NzaWJsZSBvcHRpb25zIGFyZTogZGlzYWJsZWQsIGFkZCBvciBlZGl0LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0SW5pdGlhbEZvcm1TdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvcj8udGFibGV2aWV3RWRpdG9yVHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1PcHRpb25zLmZvcm1TdGF0ZS5hZGQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGVzY3JpcHRvcj8udGFibGV2aWV3RWRpdG9yVHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRWRpdCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5mb3JtU3RhdGUuZWRpdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kZXNjcmlwdG9yPy50YWJsZXZpZXdFZGl0b3JUeXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1PcHRpb25zLmZvcm1TdGF0ZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICAgIDxmb3JtbHktZm9ybSBbZm9ybV09XCJmb3JtXCIgW2ZpZWxkc109XCJmb3JtRmllbGRzXCIgW29wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIiBbbW9kZWxdPVwiZm9ybU1vZGVsXCI+PC9mb3JtbHktZm9ybT5cbiAgICA8YnV0dG9uICNzdWJtaXRCdXR0b24gcEJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJoaWRkZW5cIiBbZGlzYWJsZWRdPVwiZm9ybS5kaXNhYmxlZFwiIFtsb2FkaW5nXT1cIihzdWJtaXRMb2FkaW5nJCB8IGFzeW5jKSA/PyBmYWxzZVwiPjwvYnV0dG9uPlxuPC9mb3JtPlxuPHAtbWVzc2FnZXMgW3ZhbHVlXT1cImZvcm1NZXNzYWdlc1wiIFtlbmFibGVTZXJ2aWNlXT1cImZhbHNlXCI+PC9wLW1lc3NhZ2VzPlxuIl19
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2Zvcm0tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBR1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsU0FBUyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLE9BQU8sRUFBdUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFFLGFBQWEsRUFBZ0IsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsaUJBQWlC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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUeXBlLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0Zvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtT3B0aW9ucywgRm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lc3NhZ2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQge01lc3NhZ2VzTW9kdWxlfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBvZn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvZWRpdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RWRpdG9yVHlwZUVudW19IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtJVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RWRpdG9yRm9ybWx5VXRpbCwgTm90aWZpY2F0aW9uVXRpbCwgT2JqZWN0VXRpbH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNbmdGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vZm9ybWx5L21vZGVscyc7XG5pbXBvcnQge0lGb3JtRWRpdG9yQ29tcG9uZW50LCBNbmdGb3JtRWRpdG9yU3VibWl0RXZlbnQsIE1uZ0Zvcm1FdmVudFR5cGVFbnVtLCBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGV9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9ybS1lZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW0Zvcm1seU1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWVzc2FnZXNNb2R1bGUsIEFzeW5jUGlwZSwgQnV0dG9uTW9kdWxlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNbmdGb3JtRWRpdG9yQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgSUZvcm1FZGl0b3JDb21wb25lbnQ8VD4sIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBkZXNjcmlwdG9yPzogRWRpdG9yRGVzY3JpcHRvcjxUPjtcbiAgICBASW5wdXQoKSBwdWJsaWMgc3VibWl0TG9hZGluZzogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIGRhdGEgc291cmNlIGlucHV0cztcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbT86IFQ7XG4gICAgQElucHV0KCd2aWV3Q29udGFpbmVyJykgcHVibGljIHZpZXdDb250YWluZXJJbml0PzogSVZpZXdDb250YWluZXI8VCwgdW5rbm93bj47XG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PElWaWV3Q29udGFpbmVyPFQsIHVua25vd24+PigxKTtcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lciQgPSB0aGlzLnZpZXdDb250YWluZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLy8gZXh0cmEgZmVhdHVyZXMgaW5wdXRcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNGb3JtRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8vIGV2ZW50IG91dHB1dHNcbiAgICBAT3V0cHV0KCdmb3JtU3VibWl0JykgcHVibGljIGZvcm1TdWJtaXRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1uZ0Zvcm1FZGl0b3JTdWJtaXRFdmVudDxUPj4oKTtcblxuICAgIC8vIGNvbnRlbnQgYW5kIHZpZXcgcXVlcmllc1xuICAgIEBDb250ZW50Q2hpbGRyZW4oTW5nVGVtcGxhdGVEaXJlY3RpdmUpIHB1YmxpYyB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8TW5nVGVtcGxhdGVEaXJlY3RpdmU+O1xuICAgIEBWaWV3Q2hpbGQoJ3N1Ym1pdEJ1dHRvbicpIHB1YmxpYyBzdWJtaXRCdXR0b25FbGVtZW50UmVmPzogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBwdWJsaWMgZm9ybU9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge1xuICAgICAgICBmb3JtU3RhdGU6IHtcbiAgICAgICAgICAgIGFkZDogZmFsc2UsXG4gICAgICAgICAgICBlZGl0OiBmYWxzZSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICB9XG4gICAgfTtcbiAgICBwdWJsaWMgZm9ybUZpZWxkcyE6IEZvcm1seUZpZWxkQ29uZmlnW107XG4gICAgcHVibGljIGZvcm1Nb2RlbDogYW55ID0ge307XG4gICAgcHVibGljIGZvcm1NZXNzYWdlczogTWVzc2FnZVtdID0gW107XG4gICAgcHVibGljIHN1Ym1pdExvYWRpbmckITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwcml2YXRlIG9yaWdpbmFsSXRlbVByb3RvdHlwZT86IFR5cGU8VD47XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1uZ0NvbW1vbnNTZXJ2aWNlOiBNbmdDb21tb25zU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldEluaXRpYWxGb3JtU3RhdGUoKTtcbiAgICAgICAgdGhpcy5yZXNldEZvcm1Nb2RlbCh0aGlzLml0ZW0pO1xuICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmckID0gdGhpcy5zdWJtaXRMb2FkaW5nIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IHRoaXMuc3VibWl0TG9hZGluZyA6IG9mKHRoaXMuc3VibWl0TG9hZGluZyk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgLy8gaW5pdCBmaWVsZHMgZm9yIGZvcm1seVxuICAgICAgICAgICAgdGhpcy5mb3JtRmllbGRzID0gRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlDb25maWdGcm9tRGVzY3JpcHRvcih0aGlzLmRlc2NyaXB0b3IsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtU3RhdGUoKTtcblxuICAgICAgICAgICAgLy8gbGV0IHRoZSB1c2VyIGtub3csIHRoYXQgYWRkaW5nIG5ldyB2YWx1ZSBpbiB0YWJsZSB2aWV3IHdpdGggbG9jYWxpemF0aW9ucyBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUgZGVmYXVsdCBsYW5ndWFnZVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5pc0xvY2FsaXplZCAmJlxuICAgICAgICAgICAgICAgICh0aGlzLmRlc2NyaXB0b3IudGFibGV2aWV3RWRpdG9yVHlwZSA9PT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uQWRkIHx8IHRoaXMuZGVzY3JpcHRvci50YWJsZXZpZXdFZGl0b3JUeXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5FZGl0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtTWVzc2FnZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uVXRpbC5nZXRGb3JtRWRpdG9ySW5mb01lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW5nRWRpdG9yLmxvY2FsaXphdGlvbnMuYWRkSW5EZWZhdWx0TGFuZ3VhZ2VUaXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW5nRWRpdG9yLmxvY2FsaXphdGlvbnMuYWRkSW5EZWZhdWx0TGFuZ3VhZ2VEZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGVmYXVsdExhbmd1YWdlOiB0aGlzLm1uZ0NvbW1vbnNTZXJ2aWNlLmRlZmF1bHREYXRhTGFuZ3VhZ2V9XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtRWRpdG9yQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyNTApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1WYWx1ZTogKCkgPT4gdGhpcy5nZXRGb3JtVmFsdWUoKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd2aWV3Q29udGFpbmVySW5pdCddICYmICFjaGFuZ2VzWyd2aWV3Q29udGFpbmVySW5pdCddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJTdWJqZWN0Lm5leHQoY2hhbmdlc1sndmlld0NvbnRhaW5lckluaXQnXSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydpc0Zvcm1EaXNhYmxlZCddICYmICFjaGFuZ2VzWydpc0Zvcm1EaXNhYmxlZCddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1TdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydpdGVtJ10gJiYgIWNoYW5nZXNbJ2l0ZW0nXS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm1Nb2RlbCh0aGlzLml0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtRWRpdG9yQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9ERVNUUk9ZXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjb21wbGV0ZSBlbWl0dGluZyBldmVudHNcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5jb21wbGV0ZUV2ZW50cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdWJtaXQoKSB7XG4gICAgICAgIHRoaXMuc3VibWl0QnV0dG9uRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgb25TdWJtaXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9ybU9wdGlvbnMuZm9ybVN0YXRlLnN1Ym1pdHRlZE9uID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5mb3JtTWVzc2FnZXMgPSBbXTtcblxuICAgICAgICBjb25zdCBmb3JtU3VibWl0SXRlbSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVN1Ym1pdEV2ZW50RW1pdHRlci5uZXh0KG5ldyBNbmdGb3JtRWRpdG9yU3VibWl0RXZlbnQoZm9ybVN1Ym1pdEl0ZW0pKTtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KE1uZ0Zvcm1FdmVudFR5cGVFbnVtLlN1Ym1pdCwgTW5nRm9ybUVkaXRvckNvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgIHN1Ym1pdFZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1Ym1pdFZhbHVlOiBmb3JtU3VibWl0SXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBmaW5kIGFuZCBtYXJrIGludmFsaWQgdGFic1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUZpZWxkc1swXS50eXBlID09PSAndGFicycgJiYgdGhpcy5mb3JtRmllbGRzWzBdLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiB0aGlzLmZvcm1GaWVsZHNbMF0uZmllbGRHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ludmFsaWQgPSB0aGlzLmlzQW55RmllbGRJbnZhbGlkKHRhYi5maWVsZEdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5mb3JtU3RhdGVbJ3RhYl8nICsgKHRhYi5pZCA/IHRhYi5pZCA6ICh0YWIucHJvcHMgYXMgTW5nRm9ybWx5RmllbGRDb25maWcpLnByb3BzLmxhYmVsKSArICdfaW52YWxpZCddID0gaXNJbnZhbGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1uZ0Zvcm1FZGl0b3JTdWJtaXRFdmVudChmb3JtU3VibWl0SXRlbSk7XG4gICAgICAgICAgICBldmVudC5zdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvcm1NZXNzYWdlcy5wdXNoKE5vdGlmaWNhdGlvblV0aWwuZ2V0Rm9ybUVkaXRvcldhcm5pbmdNZXNzYWdlKHRoaXMudHJhbnNsYXRlU2VydmljZSwgJ21uZ0VkaXRvci5pbnZhbGlkRm9ybVRvYXN0VGl0bGUnLCAnbW5nRWRpdG9yLmludmFsaWRGb3JtVG9hc3RNZXNzYWdlJykpO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm1TdWJtaXRFdmVudEVtaXR0ZXIubmV4dChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3I/Lm5leHRFdmVudChNbmdGb3JtRXZlbnRUeXBlRW51bS5TdWJtaXQsIE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgc3VibWl0VmFsdWU6IGZvcm1TdWJtaXRJdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtVmFsdWUoKTogVCB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IE9iamVjdFV0aWwuZGVlcENvcHlPYmplY3QodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHttYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzOiB0cnVlfSk7XG5cbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQuc2V0dGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BsaXRQYXRoID0gZmllbGQucHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0UGF0aC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN1YlBhdGggPSBzcGxpdFBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZVtjdXJyZW50U3ViUGF0aF0gIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFZhbHVlW2N1cnJlbnRTdWJQYXRoXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IGZpZWxkVmFsdWVbY3VycmVudFN1YlBhdGhdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlW3NwbGl0UGF0aFtzcGxpdFBhdGgubGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgICAgIGZpZWxkLnNldHRlcihmb3JtVmFsdWUsIGZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRGb3JtTW9kZWwoaXRlbT86IFQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEl0ZW1Qcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtTW9kZWwgPSBPYmplY3RVdGlsLmRlZXBDb3B5T2JqZWN0KGl0ZW0sIHttYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzOiB0cnVlfSkgPz8ge307XG5cbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGQuZ2V0dGVyICYmIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdFBhdGggPSBmaWVsZC5wcm9wZXJ0eS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50T2JqZWN0ID0gZm9ybU1vZGVsO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGxpdFBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFN1YlBhdGggPSBzcGxpdFBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBzcGxpdFBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE9iamVjdFtjdXJyZW50U3ViUGF0aF0gPSBmaWVsZC5nZXR0ZXIoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRPYmplY3RbY3VycmVudFN1YlBhdGhdICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3RbY3VycmVudFN1YlBhdGhdID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QgPSBjdXJyZW50T2JqZWN0W2N1cnJlbnRTdWJQYXRoXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb3JtT3B0aW9ucy5yZXNldE1vZGVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBjb3VsZCBub3QgYmUgaW5pdGlhdGVkIHlldFxuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5yZXNldE1vZGVsKHRoaXMuZm9ybU1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvcm1Nb2RlbCA9IGZvcm1Nb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybUZpZWxkKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRGb3JtRmllbGQodGhpcy5mb3JtLCBrZXkuc3BsaXQoJy4nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZvcm1GaWVsZFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1GaWVsZChrZXkpO1xuICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVmFsdWUgd2FzIG5vdCBzZXQsIGJlY2F1c2UgZmllbGQgJHtrZXl9IHdhcyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcGF0Y2hGb3JtRmllbGRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtRmllbGQoa2V5KTtcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVmFsdWUgd2FzIG5vdCBzZXQsIGJlY2F1c2UgZmllbGQgJHtrZXl9IHdhcyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRGb3JtRmllbGRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUZpZWxkKGtleSk7XG4gICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICBjb250cm9sLnJlc2V0KHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBWYWx1ZSB3YXMgbm90IHNldCwgYmVjYXVzZSBmaWVsZCAke2tleX0gd2FzIG5vdCBmb3VuZC5gKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEZvcm1GaWVsZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGtleVBhdGg6IHN0cmluZ1tdKTogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB7XG4gICAgICAgIGlmIChrZXlQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleVBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udHJvbC5nZXQoa2V5UGF0aFswXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHRDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICAgIG5leHRDb250cm9sID0gY29udHJvbC5nZXQoa2V5UGF0aFswXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gK2tleVBhdGhbMF07XG4gICAgICAgICAgICBpZiAoIWlzTmFOKGlkeCkpIHtcbiAgICAgICAgICAgICAgICBuZXh0Q29udHJvbCA9IGNvbnRyb2wuYXQoaWR4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEZvcm1GaWVsZChuZXh0Q29udHJvbCEsIGtleVBhdGguc2xpY2UoMSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBbnlGaWVsZEludmFsaWQoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW10pOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgICAgICAgIGxldCBmaWVsZEludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmZpZWxkR3JvdXApKSB7XG4gICAgICAgICAgICAgICAgZmllbGRJbnZhbGlkID0gdGhpcy5pc0FueUZpZWxkSW52YWxpZChmaWVsZC5maWVsZEdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkLnR5cGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRJbnZhbGlkID0gIWZpZWxkLmZvcm1Db250cm9sPy52YWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWVsZEludmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGb3JtU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmlzRm9ybURpc2FibGVkIHx8IHRoaXMuZGVzY3JpcHRvcj8uZGlzYWJsZWQgPT09IHRydWUgfHwgdGhpcy5kZXNjcmlwdG9yPy50YWJsZXZpZXdFZGl0b3JUeXBlID09PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzO1xuICAgICAgICB0aGlzLmZvcm1PcHRpb25zLmZvcm1TdGF0ZS5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGUgU2V0cyBmb3JtIHN0YXRlIGJhc2VkIG9uIGVkaXRvciBkZXNjcmlwdG9yIHR5cGUuXG4gICAgICogUG9zc2libGUgb3B0aW9ucyBhcmU6IGRpc2FibGVkLCBhZGQgb3IgZWRpdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEluaXRpYWxGb3JtU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3I/LnRhYmxldmlld0VkaXRvclR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkFkZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtT3B0aW9ucy5mb3JtU3RhdGUuYWRkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRlc2NyaXB0b3I/LnRhYmxldmlld0VkaXRvclR5cGUgPT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybU9wdGlvbnMuZm9ybVN0YXRlLmVkaXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVN0YXRlKCk7XG4gICAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIj5cbiAgICA8Zm9ybWx5LWZvcm0gW2Zvcm1dPVwiZm9ybVwiIFtmaWVsZHNdPVwiZm9ybUZpZWxkc1wiIFtvcHRpb25zXT1cImZvcm1PcHRpb25zXCIgW21vZGVsXT1cImZvcm1Nb2RlbFwiPjwvZm9ybWx5LWZvcm0+XG4gICAgPGJ1dHRvbiAjc3VibWl0QnV0dG9uIHBCdXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiaGlkZGVuXCIgW2Rpc2FibGVkXT1cImZvcm0uZGlzYWJsZWRcIiBbbG9hZGluZ109XCIoc3VibWl0TG9hZGluZyQgfCBhc3luYykgPz8gZmFsc2VcIj48L2J1dHRvbj5cbjwvZm9ybT5cbjxwLW1lc3NhZ2VzIFt2YWx1ZV09XCJmb3JtTWVzc2FnZXNcIiBbZW5hYmxlU2VydmljZV09XCJmYWxzZVwiPjwvcC1tZXNzYWdlcz5cbiJdfQ==
|
|
@@ -25,6 +25,9 @@ export class MngFormlyFieldAutocompleteComponent extends FieldType {
|
|
|
25
25
|
this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldAutocompleteComponent, this, {
|
|
26
26
|
value: v
|
|
27
27
|
});
|
|
28
|
+
if (this.props['onValueChange']) {
|
|
29
|
+
this.props['onValueChange'](this.field, v);
|
|
30
|
+
}
|
|
28
31
|
});
|
|
29
32
|
this.subscriptions.push(subscription);
|
|
30
33
|
}
|
|
@@ -48,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
48
51
|
type: Component,
|
|
49
52
|
args: [{ standalone: true, selector: 'mng-formly-field-autocomplete', imports: [MngAutocompleteComponent, ReactiveFormsModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst\"\n [autoClear]=\"descriptor.autocompleteAutoClear\">\n</mng-autocomplete>\n" }]
|
|
50
53
|
}] });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1hdXRvY29tcGxldGUvZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1hdXRvY29tcGxldGUvZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLHVCQUF1QixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFjLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQWUsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3pDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxpQ0FBaUMsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVTdGLE1BQU0sT0FBTyxtQ0FBMkMsU0FBUSxTQUErQjtJQVAvRjs7UUFXWSxrQkFBYSxHQUFtQixFQUFFLENBQUM7S0F3QzlDO0lBdENVLFFBQVE7UUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUEwQixDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUEwQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUVqQyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxFQUFFO1lBQy9HLFlBQVksRUFBRSxpQ0FBaUMsQ0FBQyxPQUFPO1NBQzFELENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9ILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxtQ0FBbUMsRUFBRSxJQUFJLEVBQUU7Z0JBQ3hHLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQixFQUFFLG1DQUFtQyxFQUFFLElBQUksRUFBRTtZQUMvRyxZQUFZLEVBQUUsaUNBQWlDLENBQUMsWUFBWTtTQUMvRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNkLGtEQUFrRDtRQUVsRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXpELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsRUFBRSxtQ0FBbUMsRUFBRSxJQUFJLEVBQUU7WUFDaEgsWUFBWSxFQUFFLGlDQUFpQyxDQUFDLFVBQVU7U0FDN0QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0lBM0NRLG1DQUFtQztvSEFBbkMsbUNBQW1DLGdIQ25CaEQsbWtCQWFBLDRDREdjLHdCQUF3Qiw4VUFBRSxtQkFBbUIseVRBQUUsWUFBWTsyRkFHNUQsbUNBQW1DO2tCQVAvQyxTQUFTO2lDQUNNLElBQUksWUFDTiwrQkFBK0IsV0FFaEMsQ0FBQyx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUMsbUJBQ3JELHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtGaWVsZExvb2t1cERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge01uZ0F1dG9jb21wbGV0ZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbTW5nQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtbHlNb2R1bGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0Zvcm1seUZpZWxkQXV0b2NvbXBsZXRlQ29tcG9uZW50PFQsIEVUPiBleHRlbmRzIEZpZWxkVHlwZTxNbmdGb3JtbHlGaWVsZENvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGFGb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuICAgIHB1YmxpYyBkZXNjcmlwdG9yITogRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPjtcblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sO1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IgPSB0aGlzLnByb3BzLmRlc2NyaXB0b3IgYXMgRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPjtcbiAgICAgICAgdGhpcy5wcm9wcy5maWVsZENvbXBvbmVudCA9IHRoaXM7XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRBdXRvY29tcGxldGVDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5hRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuYUZvcm1Db250cm9sLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLlZhbHVlQ2hhbmdlLCBNbmdGb3JtbHlGaWVsZEF1dG9jb21wbGV0ZUNvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHNbJ29uVmFsdWVDaGFuZ2UnXSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHNbJ29uVmFsdWVDaGFuZ2UnXSh0aGlzLmZpZWxkLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRBdXRvY29tcGxldGVDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX1ZJRVdfSU5JVFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIC8vIHdhcm5pbmc6IGZvcm1seSBjYWxscyBvbiBkZXN0cm95IGJlZm9yZSBvbiBpbml0XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2godmFsdWUgPT4gdmFsdWUudW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkQXV0b2NvbXBsZXRlQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9ERVNUUk9ZXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxtbmctYXV0b2NvbXBsZXRlXG4gICAgW2lkXT1cIiRhbnkoa2V5KVwiXG4gICAgW2Zvcm1Db250cm9sXT1cImFGb3JtQ29udHJvbFwiXG4gICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgIFtkYXRhUHJvdmlkZXJdPVwiJGFueShkZXNjcmlwdG9yLmRhdGFQcm92aWRlcilcIlxuICAgIFtkYXRhS2V5UHJvcGVydHldPVwiJGFueShkZXNjcmlwdG9yLmRhdGFLZXlQcm9wZXJ0eSlcIlxuICAgIFtpdGVtc0xhYmVsUHJvcGVydHldPVwiJGFueShkZXNjcmlwdG9yLml0ZW1zTGFiZWxQcm9wZXJ0eSlcIlxuICAgIFtpdGVtc1ZhbHVlUHJvcGVydHldPVwiJGFueShkZXNjcmlwdG9yLml0ZW1zVmFsdWVQcm9wZXJ0eSlcIlxuICAgIFtjbGFzc05hbWVdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiXG4gICAgW3Nob3dDbGVhcl09XCIhcHJvcHMucmVxdWlyZWRcIlxuICAgIFtzZWxlY3RGaXJzdF09XCJkZXNjcmlwdG9yLmF1dG9jb21wbGV0ZVNlbGVjdEZpcnN0XCJcbiAgICBbYXV0b0NsZWFyXT1cImRlc2NyaXB0b3IuYXV0b2NvbXBsZXRlQXV0b0NsZWFyXCI+XG48L21uZy1hdXRvY29tcGxldGU+XG4iXX0=
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { AbstractControl } from '@angular/forms';
|
|
3
|
+
import { FieldType } from '@ngx-formly/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AMngFormlyCustomFieldComponent extends FieldType {
|
|
6
|
+
get model() {
|
|
7
|
+
return this._model;
|
|
8
|
+
}
|
|
9
|
+
get form() {
|
|
10
|
+
return this._form;
|
|
11
|
+
}
|
|
12
|
+
get options() {
|
|
13
|
+
return this._options;
|
|
14
|
+
}
|
|
15
|
+
get key() {
|
|
16
|
+
return this._key;
|
|
17
|
+
}
|
|
18
|
+
get formControl() {
|
|
19
|
+
return this._formControl;
|
|
20
|
+
}
|
|
21
|
+
get props() {
|
|
22
|
+
return this._props;
|
|
23
|
+
}
|
|
24
|
+
get showError() {
|
|
25
|
+
return this._showError;
|
|
26
|
+
}
|
|
27
|
+
get id() {
|
|
28
|
+
return this._id;
|
|
29
|
+
}
|
|
30
|
+
get formState() {
|
|
31
|
+
return this._formState;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
AMngFormlyCustomFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: AMngFormlyCustomFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
+
AMngFormlyCustomFieldComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: AMngFormlyCustomFieldComponent, inputs: { field: "field", _model: ["model", "_model"], _form: ["form", "_form"], _options: ["options", "_options"], _key: ["key", "_key"], _formControl: ["formControl", "_formControl"], _props: ["props", "_props"], _showError: ["showError", "_showError"], _id: ["id", "_id"], _formState: ["formState", "_formState"] }, usesInheritance: true, ngImport: i0 });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: AMngFormlyCustomFieldComponent, decorators: [{
|
|
37
|
+
type: Directive
|
|
38
|
+
}], propDecorators: { field: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: ['field']
|
|
41
|
+
}], _model: [{
|
|
42
|
+
type: Input,
|
|
43
|
+
args: ['model']
|
|
44
|
+
}], _form: [{
|
|
45
|
+
type: Input,
|
|
46
|
+
args: ['form']
|
|
47
|
+
}], _options: [{
|
|
48
|
+
type: Input,
|
|
49
|
+
args: ['options']
|
|
50
|
+
}], _key: [{
|
|
51
|
+
type: Input,
|
|
52
|
+
args: ['key']
|
|
53
|
+
}], _formControl: [{
|
|
54
|
+
type: Input,
|
|
55
|
+
args: ['formControl']
|
|
56
|
+
}], _props: [{
|
|
57
|
+
type: Input,
|
|
58
|
+
args: ['props']
|
|
59
|
+
}], _showError: [{
|
|
60
|
+
type: Input,
|
|
61
|
+
args: ['showError']
|
|
62
|
+
}], _id: [{
|
|
63
|
+
type: Input,
|
|
64
|
+
args: ['id']
|
|
65
|
+
}], _formState: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: ['formState']
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWN1c3RvbS1maWVsZC1iYXNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtY3VzdG9tL2Zvcm1seS1jdXN0b20tZmllbGQtYmFzZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZUFBZSxFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sRUFBQyxTQUFTLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7O0FBSzlELE1BQU0sT0FBZ0IsOEJBQStCLFNBQVEsU0FBK0I7SUFZeEYsSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFhLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQWEsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUNELElBQWEsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBYSxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFhLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFhLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQWEsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQzs7MkhBdENpQiw4QkFBOEI7K0dBQTlCLDhCQUE4QjsyRkFBOUIsOEJBQThCO2tCQURuRCxTQUFTOzhCQUVtQixLQUFLO3NCQUE3QixLQUFLO3VCQUFDLE9BQU87Z0JBQ0UsTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNDLEtBQUs7c0JBQW5CLEtBQUs7dUJBQUMsTUFBTTtnQkFDSyxRQUFRO3NCQUF6QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0YsSUFBSTtzQkFBakIsS0FBSzt1QkFBQyxLQUFLO2dCQUNVLFlBQVk7c0JBQWpDLEtBQUs7dUJBQUMsYUFBYTtnQkFDSixNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU87Z0JBQ00sVUFBVTtzQkFBN0IsS0FBSzt1QkFBQyxXQUFXO2dCQUNMLEdBQUc7c0JBQWYsS0FBSzt1QkFBQyxJQUFJO2dCQUNTLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seUZvcm1PcHRpb25zfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuaW1wb3J0IHtNbmdGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQU1uZ0Zvcm1seUN1c3RvbUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPE1uZ0Zvcm1seUZpZWxkQ29uZmlnPiB7XG4gICAgQElucHV0KCdmaWVsZCcpIG92ZXJyaWRlIGZpZWxkITogTW5nRm9ybWx5RmllbGRDb25maWc7XG4gICAgQElucHV0KCdtb2RlbCcpIF9tb2RlbDogYW55O1xuICAgIEBJbnB1dCgnZm9ybScpIF9mb3JtITogRm9ybUdyb3VwIHwgRm9ybUFycmF5O1xuICAgIEBJbnB1dCgnb3B0aW9ucycpIF9vcHRpb25zITogRm9ybWx5Rm9ybU9wdGlvbnM7XG4gICAgQElucHV0KCdrZXknKSBfa2V5ITogc3RyaW5nIHwgbnVtYmVyIHwgKHN0cmluZyB8IG51bWJlcilbXTtcbiAgICBASW5wdXQoJ2Zvcm1Db250cm9sJykgX2Zvcm1Db250cm9sITogQWJzdHJhY3RDb250cm9sO1xuICAgIEBJbnB1dCgncHJvcHMnKSBfcHJvcHMhOiBNbmdGb3JtbHlGaWVsZENvbmZpZ1sncHJvcHMnXTtcbiAgICBASW5wdXQoJ3Nob3dFcnJvcicpIF9zaG93RXJyb3IhOiBib29sZWFuO1xuICAgIEBJbnB1dCgnaWQnKSBfaWQhOiBzdHJpbmc7XG4gICAgQElucHV0KCdmb3JtU3RhdGUnKSBfZm9ybVN0YXRlOiBhbnk7XG5cbiAgICBvdmVycmlkZSBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG4gICAgb3ZlcnJpZGUgZ2V0IGZvcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtO1xuICAgIH1cbiAgICBvdmVycmlkZSBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuICAgIG92ZXJyaWRlIGdldCBrZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXk7XG4gICAgfVxuICAgIG92ZXJyaWRlIGdldCBmb3JtQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sO1xuICAgIH1cbiAgICBvdmVycmlkZSBnZXQgcHJvcHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wcztcbiAgICB9XG4gICAgb3ZlcnJpZGUgZ2V0IHNob3dFcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dFcnJvcjtcbiAgICB9XG4gICAgb3ZlcnJpZGUgZ2V0IGlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfVxuICAgIG92ZXJyaWRlIGdldCBmb3JtU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtU3RhdGU7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { FieldType } from '@ngx-formly/core';
|
|
3
|
+
import { MngComponentDirective } from '../../../../../directives';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class MngFormlyFieldCustomComponent extends FieldType {
|
|
6
|
+
ngOnInit() {
|
|
7
|
+
this.descriptor = this.props.descriptor;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
MngFormlyFieldCustomComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormlyFieldCustomComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
MngFormlyFieldCustomComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: MngFormlyFieldCustomComponent, isStandalone: true, selector: "mng-formly-field-custom", usesInheritance: true, ngImport: i0, template: `
|
|
12
|
+
<ng-container
|
|
13
|
+
[mngComponent]="descriptor.customComponentType!"
|
|
14
|
+
[inputs]="{
|
|
15
|
+
field: field,
|
|
16
|
+
model: model,
|
|
17
|
+
form: form,
|
|
18
|
+
options: options,
|
|
19
|
+
key: key,
|
|
20
|
+
formControl: formControl,
|
|
21
|
+
props: props,
|
|
22
|
+
showError: showError,
|
|
23
|
+
id: id,
|
|
24
|
+
formState: formState,
|
|
25
|
+
}">
|
|
26
|
+
</ng-container>
|
|
27
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs", "attachToHost"], outputs: ["instanceCreated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: MngFormlyFieldCustomComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{
|
|
31
|
+
standalone: true,
|
|
32
|
+
selector: 'mng-formly-field-custom',
|
|
33
|
+
template: `
|
|
34
|
+
<ng-container
|
|
35
|
+
[mngComponent]="descriptor.customComponentType!"
|
|
36
|
+
[inputs]="{
|
|
37
|
+
field: field,
|
|
38
|
+
model: model,
|
|
39
|
+
form: form,
|
|
40
|
+
options: options,
|
|
41
|
+
key: key,
|
|
42
|
+
formControl: formControl,
|
|
43
|
+
props: props,
|
|
44
|
+
showError: showError,
|
|
45
|
+
id: id,
|
|
46
|
+
formState: formState,
|
|
47
|
+
}">
|
|
48
|
+
</ng-container>
|
|
49
|
+
`,
|
|
50
|
+
imports: [MngComponentDirective],
|
|
51
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
52
|
+
}]
|
|
53
|
+
}] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWN1c3RvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1jdXN0b20vZm9ybWx5LWZpZWxkLWN1c3RvbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV6RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHM0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBMEJoRSxNQUFNLE9BQU8sNkJBQWtDLFNBQVEsU0FBK0I7SUFHbEYsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFzQyxDQUFDO0lBQ3hFLENBQUM7OzBIQUxRLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLDBHQXBCNUI7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnQlQsNERBQ1MscUJBQXFCOzJGQUd0Qiw2QkFBNkI7a0JBdkJ6QyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ2hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtGaWVsZFR5cGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuXG5pbXBvcnQge0ZpZWxkSW5wdXREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9lZGl0b3InO1xuaW1wb3J0IHtNbmdDb21wb25lbnREaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtNbmdGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1mb3JtbHktZmllbGQtY3VzdG9tJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbW5nQ29tcG9uZW50XT1cImRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50VHlwZSFcIlxuICAgICAgICAgICAgW2lucHV0c109XCJ7XG4gICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgICAgICAgICBmb3JtOiBmb3JtLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2w6IGZvcm1Db250cm9sLFxuICAgICAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgICAgICBzaG93RXJyb3I6IHNob3dFcnJvcixcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgZm9ybVN0YXRlOiBmb3JtU3RhdGUsXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgaW1wb3J0czogW01uZ0NvbXBvbmVudERpcmVjdGl2ZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGRDdXN0b21Db21wb25lbnQ8RVQ+IGV4dGVuZHMgRmllbGRUeXBlPE1uZ0Zvcm1seUZpZWxkQ29uZmlnPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIGRlc2NyaXB0b3IhOiBGaWVsZElucHV0RGVzY3JpcHRvcjxFVD47XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkSW5wdXREZXNjcmlwdG9yPEVUPjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -25,6 +25,9 @@ export class MngFormlyFieldDropdownComponent extends FieldType {
|
|
|
25
25
|
this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldDropdownComponent, this, {
|
|
26
26
|
value: v
|
|
27
27
|
});
|
|
28
|
+
if (this.props['onValueChange']) {
|
|
29
|
+
this.props['onValueChange'](this.field, v);
|
|
30
|
+
}
|
|
28
31
|
});
|
|
29
32
|
this.subscriptions.push(subscription);
|
|
30
33
|
}
|
|
@@ -43,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
43
46
|
type: Component,
|
|
44
47
|
args: [{ standalone: true, selector: 'mng-formly-field-dropdown', imports: [MngDropdownComponent, ReactiveFormsModule, FormlyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [itemsLabelProperty]=\"descriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"descriptor.itemsLabelTranslate\"\n [itemsValueProperty]=\"descriptor.itemsValueProperty\"\n [itemsDisabledProperty]=\"descriptor.itemsDisabledProperty\"\n [dataKeyProperty]=\"descriptor.dataKeyProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n" }]
|
|
45
48
|
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWRyb3Bkb3duL2Zvcm1seS1maWVsZC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1kcm9wZG93bi9mb3JtbHktZmllbGQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFjLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQWUsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3pDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVTdGLE1BQU0sT0FBTywrQkFBdUMsU0FBUSxTQUErQjtJQVAzRjs7UUFXWSxrQkFBYSxHQUFtQixFQUFFLENBQUM7S0FrQzlDO0lBaENVLFFBQVE7UUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUEwQixDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUEwQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUVqQyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLEVBQUUsK0JBQStCLEVBQUUsSUFBSSxFQUFFO1lBQzNHLFlBQVksRUFBRSxpQ0FBaUMsQ0FBQyxPQUFPO1NBQzFELENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9ILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSwrQkFBK0IsRUFBRSxJQUFJLEVBQUU7Z0JBQ3BHLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1Asa0RBQWtEO1FBRWxELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFakQsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQixFQUFFLCtCQUErQixFQUFFLElBQUksRUFBRTtZQUM1RyxZQUFZLEVBQUUsaUNBQWlDLENBQUMsVUFBVTtTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDOzs0SEFyQ1EsK0JBQStCO2dIQUEvQiwrQkFBK0IsNEdDbkI1QyxpbUJBY0EsNENERWMsb0JBQW9CLGdWQUFFLG1CQUFtQix5VEFBRSxZQUFZOzJGQUd4RCwrQkFBK0I7a0JBUDNDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDJCQUEyQixXQUU1QixDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxtQkFDakQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZSwgRm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCBkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0ZpZWxkTG9va3VwRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvZWRpdG9yJztcbmltcG9ydCB7TW5nRHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQge01uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZSwgTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bX0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9ybWx5LWZpZWxkLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybWx5LWZpZWxkLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbTW5nRHJvcGRvd25Db21wb25lbnQsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGREcm9wZG93bkNvbXBvbmVudDxULCBFVD4gZXh0ZW5kcyBGaWVsZFR5cGU8TW5nRm9ybWx5RmllbGRDb25maWc+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBkRm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDtcbiAgICBwdWJsaWMgZGVzY3JpcHRvciE6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxULCBFVD47XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkTG9va3VwRGVzY3JpcHRvcjxULCBFVD47XG4gICAgICAgIHRoaXMucHJvcHMuZmllbGRDb21wb25lbnQgPSB0aGlzO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkRHJvcGRvd25Db21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0lOSVRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5kRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZEZvcm1Db250cm9sLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLlZhbHVlQ2hhbmdlLCBNbmdGb3JtbHlGaWVsZERyb3Bkb3duQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wc1snb25WYWx1ZUNoYW5nZSddKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wc1snb25WYWx1ZUNoYW5nZSddKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gd2FybmluZzogZm9ybWx5IGNhbGxzIG9uIGRlc3Ryb3kgYmVmb3JlIG9uIGluaXRcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yPy5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkRHJvcGRvd25Db21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG1uZy1kcm9wZG93blxuICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgIFtmb3JtQ29udHJvbF09XCJkRm9ybUNvbnRyb2xcIlxuICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZGVzY3JpcHRvci5wbGFjZWhvbGRlclwiXG4gICAgW2RhdGFQcm92aWRlcl09XCJkZXNjcmlwdG9yLmRhdGFQcm92aWRlclwiXG4gICAgW2l0ZW1zTGFiZWxQcm9wZXJ0eV09XCJkZXNjcmlwdG9yLml0ZW1zTGFiZWxQcm9wZXJ0eVwiXG4gICAgW2l0ZW1zTGFiZWxUcmFuc2xhdGVdPVwiZGVzY3JpcHRvci5pdGVtc0xhYmVsVHJhbnNsYXRlXCJcbiAgICBbaXRlbXNWYWx1ZVByb3BlcnR5XT1cImRlc2NyaXB0b3IuaXRlbXNWYWx1ZVByb3BlcnR5XCJcbiAgICBbaXRlbXNEaXNhYmxlZFByb3BlcnR5XT1cImRlc2NyaXB0b3IuaXRlbXNEaXNhYmxlZFByb3BlcnR5XCJcbiAgICBbZGF0YUtleVByb3BlcnR5XT1cImRlc2NyaXB0b3IuZGF0YUtleVByb3BlcnR5XCJcbiAgICBbc2hvd0NsZWFyXT1cIiFwcm9wcy5yZXF1aXJlZFwiXG4gICAgW2NsYXNzTmFtZV09XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCI+XG48L21uZy1kcm9wZG93bj5cbiJdfQ==
|
|
@@ -77,6 +77,9 @@ export class MngFormlyFieldInputComponent extends FieldType {
|
|
|
77
77
|
this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldInputComponent, this, {
|
|
78
78
|
value: v
|
|
79
79
|
});
|
|
80
|
+
if (this.props['onValueChange']) {
|
|
81
|
+
this.props['onValueChange'](this.field, v);
|
|
82
|
+
}
|
|
80
83
|
});
|
|
81
84
|
this.subscriptions.push(subscription);
|
|
82
85
|
if (this.props.type === 'imageUrl') {
|
|
@@ -182,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
182
185
|
type: Inject,
|
|
183
186
|
args: [LOCALE_ID]
|
|
184
187
|
}] }, { type: i1.FormBuilder }, { type: i2.TranslateService }]; } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWlucHV0L2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1pbnB1dC9mb3JtbHktZmllbGQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBWSxXQUFXLEVBQWUsbUJBQW1CLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxp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QixJQUFJLDRGQUNKLGlCQUFpQixxVEFDakIsT0FBTyxrSEFDUCxjQUFjLDYxQ0FDZCxlQUFlLGdlQUNmLGdCQUFnQix3MUJBQ2hCLFdBQVcsa1RBQ1gsZUFBZSw2REFDZixtQkFBbUIsMkpBQ25CLGVBQWUsb0dBQ2YsWUFBWTsyRkFJUCw0QkFBNEI7a0JBMUJ4QyxTQUFTO2lDQUNNLElBQUksWUFDTix3QkFBd0IsV0FFekI7d0JBQ0wsUUFBUTt3QkFDUixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixJQUFJO3dCQUNKLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFlBQVk7cUJBQ2YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQWNsQyxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nRm9yT2YsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBMT0NBTEVfSUQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDYWxlbmRhck1vZHVsZX0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQge0ZpbGVVcGxvYWRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XG5pbXBvcnQge0ltYWdlTW9kdWxlfSBmcm9tICdwcmltZW5nL2ltYWdlJztcbmltcG9ydCB7SW5wdXRNYXNrTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0bWFzayc7XG5pbXBvcnQge0lucHV0TnVtYmVyTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcbmltcG9ydCB7SW5wdXRTd2l0Y2hNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRzd2l0Y2gnO1xuaW1wb3J0IHtJbnB1dFRleHRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7SW5wdXRUZXh0YXJlYU1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHRhcmVhJztcbmltcG9ydCB7UmFkaW9CdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmFkaW9idXR0b24nO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCBkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0ZpZWxkSW5wdXREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9lZGl0b3InO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW19IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7Tm90aWZpY2F0aW9uVXRpbH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNbmdGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvZm9ybS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLCBNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1mb3JtbHktZmllbGQtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtbHktZmllbGQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdTd2l0Y2gsXG4gICAgICAgIElucHV0TnVtYmVyTW9kdWxlLFxuICAgICAgICBOZ1N3aXRjaENhc2UsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEZvcm1seU1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBJbnB1dFN3aXRjaE1vZHVsZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgUmFkaW9CdXR0b25Nb2R1bGUsXG4gICAgICAgIE5nRm9yT2YsXG4gICAgICAgIENhbGVuZGFyTW9kdWxlLFxuICAgICAgICBJbnB1dE1hc2tNb2R1bGUsXG4gICAgICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgICAgIEltYWdlTW9kdWxlLFxuICAgICAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgICAgIElucHV0VGV4dGFyZWFNb2R1bGUsXG4gICAgICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICAgICAgUmlwcGxlTW9kdWxlXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNbmdGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50PEVUPiBleHRlbmRzIEZpZWxkVHlwZTxNbmdGb3JtbHlGaWVsZENvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGlGb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuICAgIHB1YmxpYyBkZXNjcmlwdG9yITogRmllbGRJbnB1dERlc2NyaXB0b3I8RVQ+O1xuICAgIHB1YmxpYyBudW1iZXJGaWVsZE1vZGU6ICdkZWNpbWFsJyB8ICdjdXJyZW5jeScgPSAnZGVjaW1hbCc7XG4gICAgcHVibGljIGN1cnJlbmN5Pzogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBmaWxlczogRmlsZVtdID0gW107XG4gICAgcHVibGljIGltYWdlRm9ybUFycmF5ITogRm9ybUFycmF5O1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHB1YmxpYyBmb3JtRWRpdG9yQ29tcG9uZW50PzogTW5nRm9ybUVkaXRvckNvbXBvbmVudDx1bmtub3duPjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBwdWJsaWMgYXBwbGljYXRpb25Mb2NhbGU6IHN0cmluZywgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlGb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvciA9IHRoaXMucHJvcHMuZGVzY3JpcHRvciBhcyBGaWVsZElucHV0RGVzY3JpcHRvcjxFVD47XG4gICAgICAgIHRoaXMucHJvcHMuZmllbGRDb21wb25lbnQgPSB0aGlzO1xuICAgICAgICB0aGlzLmZvcm1FZGl0b3JDb21wb25lbnQgPSB0aGlzLnByb3BzLmZvcm1FZGl0b3JDb21wb25lbnQgYXMgTW5nRm9ybUVkaXRvckNvbXBvbmVudDx1bmtub3duPjtcblxuICAgICAgICB0aGlzLmltYWdlRm9ybUFycmF5ID0gdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5maWVsZFR5cGUgPT09IEZpZWxkSW5wdXRUeXBlRW51bS5DdXJyZW5jeSkge1xuICAgICAgICAgICAgdGhpcy5udW1iZXJGaWVsZE1vZGUgPSAnY3VycmVuY3knO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5RnJvbVByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVuY3lGcm9tUHJvcFN1YnNjcmlwdGlvbiA9IHRoaXMuaUZvcm1Db250cm9sXG4gICAgICAgICAgICAgICAgICAgIC5nZXQodGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5RnJvbVByb3BlcnR5KSFcbiAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLm1vZGVsW3RoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eV0pLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IGM7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGN1cnJlbmN5RnJvbVByb3BTdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5ID8/ICdFVVInO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRJbnB1dENvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fSU5JVFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBpbml0IHZhbHVlc1xuICAgICAgICBpZiAodGhpcy5wcm9wcy50eXBlID09PSAnZGF0ZXBpY2tlcicgJiYgdHlwZW9mIHRoaXMuaUZvcm1Db250cm9sLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgZGF0ZU9iamVjdCA9IG5ldyBEYXRlKHRoaXMuaUZvcm1Db250cm9sLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnNldFZhbHVlKGRhdGVPYmplY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtQ29udHJvbCEudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLlZhbHVlQ2hhbmdlLCBNbmdGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy50eXBlID09PSAnaW1hZ2VVcmwnKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFZhbHVlID0gdGhpcy5pRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0YXJ0VmFsdWUpICYmIHN0YXJ0VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzdGFydFZhbHVlLmZvckVhY2godiA9PiB0aGlzLmFkZEltYWdlVXJsKHYpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydFZhbHVlID09PSAnc3RyaW5nJyAmJiBzdGFydFZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbWFnZVVybChzdGFydFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEltYWdlVXJsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmFsdWUgPT09ICdzdHJpbmcnICYmIHN0YXJ0VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEltYWdlVXJsKHN0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW1hZ2VVcmwoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuaW1hZ2VGb3JtQXJyYXkhLnZhbHVlQ2hhbmdlcy5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmY3YgPSB2LmZpbHRlcigoaTogc3RyaW5nKSA9PiAhIWkgJiYgdHlwZW9mIGkgPT09ICdzdHJpbmcnICYmIGkubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pRm9ybUNvbnRyb2wuc2V0VmFsdWUoZmN2Lmxlbmd0aCA+IDAgPyAodGhpcy5kZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSA/IGZjdiA6IGZjdlswXSkgOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyB3YXJuaW5nOiBmb3JtbHkgY2FsbHMgb24gZGVzdHJveSBiZWZvcmUgb24gaW5pdFxuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcblxuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3I/Lm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRJbnB1dENvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fREVTVFJPWVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBldmVudC5maWxlcyBhcyBGaWxlW107XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbLi4uZmlsZXNdO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGVGb3JtQ29udHJvbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVSZW1vdmUoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZXZlbnQuZmlsZSBhcyBGaWxlO1xuICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoZiA9PiBmICE9PSBmaWxlKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxlRm9ybUNvbnRyb2woKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIG9uRmlsZUNsZWFyKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlRmlsZUZvcm1Db250cm9sKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEltYWdlVXJsKHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL14oaHR0cHxodHRwcyk6XFwvXFwvW14gXCJdKyQvKSk7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSk7XG4gICAgICAgIHRoaXMuaW1hZ2VGb3JtQXJyYXkucHVzaCh0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodmFsdWUsIHZhbGlkYXRvcnMpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW1hZ2VVcmxBdChpZHg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmltYWdlRm9ybUFycmF5LnJlbW92ZUF0KGlkeCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW1hZ2VVcmxMb2FkRXJyb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1FZGl0b3JDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBOb3RpZmljYXRpb25VdGlsLmdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UsICdnZW5lcmFsLmVycm9yJywgJ21uZ0VkaXRvci5pbWFnZUxvYWRFcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5mb3JtRWRpdG9yQ29tcG9uZW50LmZvcm1NZXNzYWdlcyA9IFsuLi50aGlzLmZvcm1FZGl0b3JDb21wb25lbnQuZm9ybU1lc3NhZ2VzLCBtZXNzYWdlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRmlsZUZvcm1Db250cm9sKCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZmlsZXMubGVuZ3RoID4gMCA/IFsuLi50aGlzLmZpbGVzXSA6IG51bGw7XG4gICAgICAgIHRoaXMuaUZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0b3IuZmlsZU9uU2VsZWN0SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLmZpbGVPblNlbGVjdEhhbmRsZXIodmFsdWUsIHRoaXMuaUZvcm1Db250cm9sKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BzLnR5cGVcIj5cbiAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIlxuICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgW21pbl09XCIkYW55KGRlc2NyaXB0b3IubnVtYmVyQXV0b0NvcnJlY3QgPyBkZXNjcmlwdG9yLm51bWJlck1pbiA6IG51bGwpXCJcbiAgICAgICAgW21heF09XCIkYW55KGRlc2NyaXB0b3IubnVtYmVyQXV0b0NvcnJlY3QgPyBkZXNjcmlwdG9yLm51bWJlck1heCA6IG51bGwpXCJcbiAgICAgICAgW3N0ZXBdPVwiJGFueShkZXNjcmlwdG9yLm51bWJlclN0ZXApXCJcbiAgICAgICAgW3VzZUdyb3VwaW5nXT1cIiRhbnkoZGVzY3JpcHRvci5udW1iZXJVc2VHcm91cGluZylcIlxuICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZGVzY3JpcHRvci5udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cyB8fCAwXCJcbiAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cImRlc2NyaXB0b3IubnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgfHwgMFwiXG4gICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiXG4gICAgICAgIFtsb2NhbGVdPVwiJGFueShkZXNjcmlwdG9yLmxvY2FsZSA/PyBhcHBsaWNhdGlvbkxvY2FsZSlcIlxuICAgICAgICBbbW9kZV09XCIkYW55KG51bWJlckZpZWxkTW9kZSlcIlxuICAgICAgICBbY3VycmVuY3ldPVwiJGFueShjdXJyZW5jeSlcIlxuICAgICAgICBbY3VycmVuY3lEaXNwbGF5XT1cIiRhbnkoZGVzY3JpcHRvci5jdXJyZW5jeURpc3BsYXkpXCI+XG4gICAgPC9wLWlucHV0TnVtYmVyPlxuXG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3N3aXRjaCdcIiBjbGFzcz1cImZpZWxkIGZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgPGxhYmVsIFtmb3JdPVwia2V5XCIgW2NsYXNzXT1cImRlc2NyaXB0b3IubGFiZWxDbGFzc05hbWVcIj57eyBwcm9wcy5sYWJlbCEgfCB0cmFuc2xhdGUgfX0gPHNwYW4gKm5nSWY9XCJwcm9wcy5yZXF1aXJlZCAmJiBwcm9wc1snaGlkZVJlcXVpcmVkTWFya2VyJ10gIT09IHRydWVcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgIDxwLWlucHV0U3dpdGNoIFtpZF09XCIkYW55KGtleSlcIiBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCIgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIiBbc3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCI+PC9wLWlucHV0U3dpdGNoPlxuICAgICAgICA8c21hbGwgKm5nSWY9XCJzaG93RXJyb3JcIiBjbGFzcz1cInAtZXJyb3JcIj5cbiAgICAgICAgICAgIDxmb3JtbHktdmFsaWRhdGlvbi1tZXNzYWdlIFtmaWVsZF09XCJmaWVsZFwiPjwvZm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZT5cbiAgICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYWRpbydcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRlc2NyaXB0b3IucmFkaW9PcHRpb25zXCIgW2lkXT1cIiRhbnkoa2V5KVwiIGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cbiAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJGFueShrZXkpXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlQ2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiPjwvcC1yYWRpb0J1dHRvbj5cbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIm9wdGlvbi52YWx1ZVwiIFtjbGFzc109XCInbW5nLXJhZGlvLWJ1dHRvbi1sYWJlbCAnICsgZGVzY3JpcHRvci5sYWJlbENsYXNzTmFtZVwiPnt7IG9wdGlvbi50aXRsZSB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRleHRhcmVhXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCJcbiAgICAgICAgW2lkXT1cIiRhbnkoa2V5KVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgIFtyb3dzXT1cImRlc2NyaXB0b3Iucm93cyA/PyAzXCJcbiAgICAgICAgcElucHV0VGV4dGFyZWFcbiAgICAgICAgW2NsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIj5cbiAgICA8L3RleHRhcmVhPlxuXG4gICAgPHAtY2FsZW5kYXJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlcGlja2VyJ1wiXG4gICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgIFtkYXRlRm9ybWF0XT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlckZvcm1hdCA/PyAnZGQubW0ueXknXCJcbiAgICAgICAgW21pbkRhdGVdPVwiJGFueShkZXNjcmlwdG9yLmRhdGVQaWNrZXJNaW4pXCJcbiAgICAgICAgW21heERhdGVdPVwiJGFueShkZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXgpXCJcbiAgICAgICAgW3Nob3dUaW1lXT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lXCJcbiAgICAgICAgW3Nob3dTZWNvbmRzXT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dTZWNvbmRzXCJcbiAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICBbaW5wdXRTdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIlxuICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiMVwiPlxuICAgIDwvcC1jYWxlbmRhcj5cblxuICAgIDxwLWlucHV0TWFza1xuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ21hc2snXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgW21hc2tdPVwiJGFueShkZXNjcmlwdG9yLm1hc2spXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIiRhbnkoZGVzY3JpcHRvci5wbGFjZWhvbGRlcilcIlxuICAgICAgICBbc2xvdENoYXJdPVwiJGFueShkZXNjcmlwdG9yLnNsb3RDaGFyKVwiXG4gICAgICAgIFtzdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIj5cbiAgICA8L3AtaW5wdXRNYXNrPlxuXG4gICAgPHAtZmlsZVVwbG9hZFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUnXCJcbiAgICAgICAgW211bHRpcGxlXT1cImRlc2NyaXB0b3IuZmlsZU11bHRpcGxlXCJcbiAgICAgICAgW2FjY2VwdF09XCIkYW55KGRlc2NyaXB0b3IuZmlsZUFjY2VwdClcIlxuICAgICAgICBbbWF4RmlsZVNpemVdPVwiZGVzY3JpcHRvci5maWxlTWF4RmlsZVNpemVcIlxuICAgICAgICBbc2hvd1VwbG9hZEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkZpbGVTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgIChvblJlbW92ZSk9XCJvbkZpbGVSZW1vdmUoJGV2ZW50KVwiXG4gICAgICAgIChvbkNsZWFyKT1cIm9uRmlsZUNsZWFyKCRldmVudClcIj5cbiAgICA8L3AtZmlsZVVwbG9hZD5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZVVybCdcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3XCIgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIGltYWdlRm9ybUFycmF5LmNvbnRyb2xzOyBsZXQgaWR4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8cC1pbWFnZVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImltYWdlRm9ybUFycmF5LmF0KGlkeCkudmFsaWQgJiYgaW1hZ2VGb3JtQXJyYXkuYXQoaWR4KS52YWx1ZTsgZWxzZSBub0ltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZUZvcm1BcnJheS5hdChpZHgpLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3ByZXZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkltYWdlRXJyb3IpPVwib25JbWFnZVVybExvYWRFcnJvcigpXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cIm1uZy1pbWFnZSBtLTJcIj48L3AtaW1hZ2U+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWFnZT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1uZy1pbWFnZSBtLTIgcC1pbWFnZS1wcmV2aWV3LWNvbnRhaW5lciBuby1pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1pbWFnZS1wcmV2aWV3LWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwLWltYWdlLXByZXZpZXctaWNvbiBwaSBwaS1iYW5cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRlc2NyaXB0b3IuaW1hZ2VQcmV2aWV3IHx8IGRlc2NyaXB0b3IuaW1hZ2VVcmxJbnB1dFZpc2libGVPbkRpc2FibGVkIHx8ICFpRm9ybUNvbnRyb2wuZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGltYWdlQ3RybE5hbWUgb2YgaW1hZ2VGb3JtQXJyYXkuY29udHJvbHM7IGxldCBpZHggPSBpbmRleFwiIGNsYXNzPVwicC1pbnB1dGdyb3VwIG10LTFcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ21uZ0VkaXRvci5pbWFnZVVybFBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGltYWdlRm9ybUFycmF5LmF0KGlkeCkpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIiAvPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkZXNjcmlwdG9yLmZpbGVNdWx0aXBsZSAmJiAhaUZvcm1Db250cm9sLmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktbWludXNcIiAoY2xpY2spPVwicmVtb3ZlSW1hZ2VVcmxBdChpZHgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImRlc2NyaXB0b3IuZmlsZU11bHRpcGxlICYmICFpRm9ybUNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBsdXNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcHJpbWFyeSB3LWF1dG8gbXQtMVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidtbmdFZGl0b3IuaW1hZ2VVcmxBZGQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkSW1hZ2VVcmwoKVwiPjwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hEZWZhdWx0IHBJbnB1dFRleHQgW2lkXT1cIiRhbnkoa2V5KVwiIFt0eXBlXT1cInByb3BzLnR5cGUgfHwgJ3RleHQnXCIgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgLz5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWlucHV0L2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1pbnB1dC9mb3JtbHktZmllbGQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBWSxXQUFXLEVBQWUsbUJBQW1CLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxp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U0FBUzs2R0FacEIsNEJBQTRCLHlHQ3BEekMscS9MQWdJQSw0Q0RqR1EsUUFBUSw0RUFDUixpQkFBaUIsZ3RCQUNqQixZQUFZLG9GQUNaLG1CQUFtQix5a0JBQ25CLFlBQVkseVFBQ1osZUFBZSwyRkFDZixpQkFBaUIsZ1JBQ2pCLElBQUksNEZBQ0osaUJBQWlCLHFUQUNqQixPQUFPLGtIQUNQLGNBQWMsNjFDQUNkLGVBQWUsZ2VBQ2YsZ0JBQWdCLHcxQkFDaEIsV0FBVyxrVEFDWCxlQUFlLDZEQUNmLG1CQUFtQiwySkFDbkIsZUFBZSxvR0FDZixZQUFZOzJGQUlQLDRCQUE0QjtrQkExQnhDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHdCQUF3QixXQUV6Qjt3QkFDTCxRQUFRO3dCQUNSLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLElBQUk7d0JBQ0osaUJBQWlCO3dCQUNqQixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsWUFBWTtxQkFDZixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBY2xDLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZiwgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGaWVsZFR5cGUsIEZvcm1seU1vZHVsZX0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NhbGVuZGFyTW9kdWxlfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7RmlsZVVwbG9hZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcbmltcG9ydCB7SW1hZ2VNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW1hZ2UnO1xuaW1wb3J0IHtJbnB1dE1hc2tNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRtYXNrJztcbmltcG9ydCB7SW5wdXROdW1iZXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHtJbnB1dFN3aXRjaE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHN3aXRjaCc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtJbnB1dFRleHRhcmVhTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dGFyZWEnO1xuaW1wb3J0IHtSYWRpb0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7RmllbGRJbnB1dERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge0ZpZWxkSW5wdXRUeXBlRW51bX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvdHlwZXMnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25VdGlsfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQge01uZ0Zvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgICAgIE5nU3dpdGNoQ2FzZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9ybWx5TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIElucHV0U3dpdGNoTW9kdWxlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgICAgIElucHV0TWFza01vZHVsZSxcbiAgICAgICAgRmlsZVVwbG9hZE1vZHVsZSxcbiAgICAgICAgSW1hZ2VNb2R1bGUsXG4gICAgICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICAgICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBSaXBwbGVNb2R1bGVcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0Zvcm1seUZpZWxkSW5wdXRDb21wb25lbnQ8RVQ+IGV4dGVuZHMgRmllbGRUeXBlPE1uZ0Zvcm1seUZpZWxkQ29uZmlnPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgaUZvcm1Db250cm9sITogRm9ybUNvbnRyb2w7XG4gICAgcHVibGljIGRlc2NyaXB0b3IhOiBGaWVsZElucHV0RGVzY3JpcHRvcjxFVD47XG4gICAgcHVibGljIG51bWJlckZpZWxkTW9kZTogJ2RlY2ltYWwnIHwgJ2N1cnJlbmN5JyA9ICdkZWNpbWFsJztcbiAgICBwdWJsaWMgY3VycmVuY3k/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgICBwdWJsaWMgaW1hZ2VGb3JtQXJyYXkhOiBGb3JtQXJyYXk7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgcHVibGljIGZvcm1FZGl0b3JDb21wb25lbnQ/OiBNbmdGb3JtRWRpdG9yQ29tcG9uZW50PHVua25vd24+O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHB1YmxpYyBhcHBsaWNhdGlvbkxvY2FsZTogc3RyaW5nLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaUZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkSW5wdXREZXNjcmlwdG9yPEVUPjtcbiAgICAgICAgdGhpcy5wcm9wcy5maWVsZENvbXBvbmVudCA9IHRoaXM7XG4gICAgICAgIHRoaXMuZm9ybUVkaXRvckNvbXBvbmVudCA9IHRoaXMucHJvcHMuZm9ybUVkaXRvckNvbXBvbmVudCBhcyBNbmdGb3JtRWRpdG9yQ29tcG9uZW50PHVua25vd24+O1xuXG4gICAgICAgIHRoaXMuaW1hZ2VGb3JtQXJyYXkgPSB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKTtcblxuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmZpZWxkVHlwZSA9PT0gRmllbGRJbnB1dFR5cGVFbnVtLkN1cnJlbmN5KSB7XG4gICAgICAgICAgICB0aGlzLm51bWJlckZpZWxkTW9kZSA9ICdjdXJyZW5jeSc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lGcm9tUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW5jeUZyb21Qcm9wU3Vic2NyaXB0aW9uID0gdGhpcy5pRm9ybUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgLmdldCh0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lGcm9tUHJvcGVydHkpIVxuICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMubW9kZWxbdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5RnJvbVByb3BlcnR5XSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0gYztcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY3VycmVuY3lGcm9tUHJvcFN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSB0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3kgPz8gJ0VVUic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGluaXQgdmFsdWVzXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnR5cGUgPT09ICdkYXRlcGlja2VyJyAmJiB0eXBlb2YgdGhpcy5pRm9ybUNvbnRyb2wudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlT2JqZWN0ID0gbmV3IERhdGUodGhpcy5pRm9ybUNvbnRyb2wudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5pRm9ybUNvbnRyb2wuc2V0VmFsdWUoZGF0ZU9iamVjdCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Db250cm9sIS52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtQ29udHJvbCEudmFsdWUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIE1uZ0Zvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzWydvblZhbHVlQ2hhbmdlJ10pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzWydvblZhbHVlQ2hhbmdlJ10odGhpcy5maWVsZCwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnR5cGUgPT09ICdpbWFnZVVybCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VmFsdWUgPSB0aGlzLmlGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuZmlsZU11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3RhcnRWYWx1ZSkgJiYgc3RhcnRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VmFsdWUuZm9yRWFjaCh2ID0+IHRoaXMuYWRkSW1hZ2VVcmwodikpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0VmFsdWUgPT09ICdzdHJpbmcnICYmIHN0YXJ0VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEltYWdlVXJsKHN0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW1hZ2VVcmwoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgc3RhcnRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSW1hZ2VVcmwoc3RhcnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJbWFnZVVybCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5pbWFnZUZvcm1BcnJheSEudmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZjdiA9IHYuZmlsdGVyKChpOiBzdHJpbmcpID0+ICEhaSAmJiB0eXBlb2YgaSA9PT0gJ3N0cmluZycgJiYgaS5sZW5ndGggPiAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlGb3JtQ29udHJvbC5zZXRWYWx1ZShmY3YubGVuZ3RoID4gMCA/ICh0aGlzLmRlc2NyaXB0b3IuZmlsZU11bHRpcGxlID8gZmN2IDogZmN2WzBdKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIHdhcm5pbmc6IGZvcm1seSBjYWxscyBvbiBkZXN0cm95IGJlZm9yZSBvbiBpbml0XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9ERVNUUk9ZXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbGVTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmZpbGVzIGFzIEZpbGVbXTtcbiAgICAgICAgdGhpcy5maWxlcyA9IFsuLi5maWxlc107XG4gICAgICAgIHRoaXMudXBkYXRlRmlsZUZvcm1Db250cm9sKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmlsZVJlbW92ZShldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBldmVudC5maWxlIGFzIEZpbGU7XG4gICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihmID0+IGYgIT09IGZpbGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGVGb3JtQ29udHJvbCgpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgb25GaWxlQ2xlYXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxlRm9ybUNvbnRyb2woKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW1hZ2VVcmwodmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybigvXihodHRwfGh0dHBzKTpcXC9cXC9bXiBcIl0rJC8pKTtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpKTtcbiAgICAgICAgdGhpcy5pbWFnZUZvcm1BcnJheS5wdXNoKHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh2YWx1ZSwgdmFsaWRhdG9ycykpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbWFnZVVybEF0KGlkeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuaW1hZ2VGb3JtQXJyYXkucmVtb3ZlQXQoaWR4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbWFnZVVybExvYWRFcnJvcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUVkaXRvckNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IE5vdGlmaWNhdGlvblV0aWwuZ2V0Rm9ybUVkaXRvcldhcm5pbmdNZXNzYWdlKHRoaXMudHJhbnNsYXRlU2VydmljZSwgJ2dlbmVyYWwuZXJyb3InLCAnbW5nRWRpdG9yLmltYWdlTG9hZEVycm9yJyk7XG4gICAgICAgICAgICB0aGlzLmZvcm1FZGl0b3JDb21wb25lbnQuZm9ybU1lc3NhZ2VzID0gWy4uLnRoaXMuZm9ybUVkaXRvckNvbXBvbmVudC5mb3JtTWVzc2FnZXMsIG1lc3NhZ2VdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGaWxlRm9ybUNvbnRyb2woKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5maWxlcy5sZW5ndGggPiAwID8gWy4uLnRoaXMuZmlsZXNdIDogbnVsbDtcbiAgICAgICAgdGhpcy5pRm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVzY3JpcHRvci5maWxlT25TZWxlY3RIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IuZmlsZU9uU2VsZWN0SGFuZGxlcih2YWx1ZSwgdGhpcy5pRm9ybUNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcHMudHlwZVwiPlxuICAgIDxwLWlucHV0TnVtYmVyXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiXG4gICAgICAgIFtpZF09XCIkYW55KGtleSlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICBbbWluXT1cIiRhbnkoZGVzY3JpcHRvci5udW1iZXJBdXRvQ29ycmVjdCA/IGRlc2NyaXB0b3IubnVtYmVyTWluIDogbnVsbClcIlxuICAgICAgICBbbWF4XT1cIiRhbnkoZGVzY3JpcHRvci5udW1iZXJBdXRvQ29ycmVjdCA/IGRlc2NyaXB0b3IubnVtYmVyTWF4IDogbnVsbClcIlxuICAgICAgICBbc3RlcF09XCIkYW55KGRlc2NyaXB0b3IubnVtYmVyU3RlcClcIlxuICAgICAgICBbdXNlR3JvdXBpbmddPVwiJGFueShkZXNjcmlwdG9yLm51bWJlclVzZUdyb3VwaW5nKVwiXG4gICAgICAgIFttaW5GcmFjdGlvbkRpZ2l0c109XCJkZXNjcmlwdG9yLm51bWJlck1pbkZyYWN0aW9uRGlnaXRzIHx8IDBcIlxuICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZGVzY3JpcHRvci5udW1iZXJNYXhGcmFjdGlvbkRpZ2l0cyB8fCAwXCJcbiAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCJcbiAgICAgICAgW2xvY2FsZV09XCIkYW55KGRlc2NyaXB0b3IubG9jYWxlID8/IGFwcGxpY2F0aW9uTG9jYWxlKVwiXG4gICAgICAgIFttb2RlXT1cIiRhbnkobnVtYmVyRmllbGRNb2RlKVwiXG4gICAgICAgIFtjdXJyZW5jeV09XCIkYW55KGN1cnJlbmN5KVwiXG4gICAgICAgIFtjdXJyZW5jeURpc3BsYXldPVwiJGFueShkZXNjcmlwdG9yLmN1cnJlbmN5RGlzcGxheSlcIj5cbiAgICA8L3AtaW5wdXROdW1iZXI+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInc3dpdGNoJ1wiIGNsYXNzPVwiZmllbGQgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJrZXlcIiBbY2xhc3NdPVwiZGVzY3JpcHRvci5sYWJlbENsYXNzTmFtZVwiPnt7IHByb3BzLmxhYmVsISB8IHRyYW5zbGF0ZSB9fSA8c3BhbiAqbmdJZj1cInByb3BzLnJlcXVpcmVkICYmIHByb3BzWydoaWRlUmVxdWlyZWRNYXJrZXInXSAhPT0gdHJ1ZVwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgPHAtaW5wdXRTd2l0Y2ggW2lkXT1cIiRhbnkoa2V5KVwiIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIiBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIFtzdHlsZUNsYXNzXT1cImRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIj48L3AtaW5wdXRTd2l0Y2g+XG4gICAgICAgIDxzbWFsbCAqbmdJZj1cInNob3dFcnJvclwiIGNsYXNzPVwicC1lcnJvclwiPlxuICAgICAgICAgICAgPGZvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2UgW2ZpZWxkXT1cImZpZWxkXCI+PC9mb3JtbHktdmFsaWRhdGlvbi1tZXNzYWdlPlxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvJ1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZGVzY3JpcHRvci5yYWRpb09wdGlvbnNcIiBbaWRdPVwiJGFueShrZXkpXCIgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvblwiPlxuICAgICAgICAgICAgPHAtcmFkaW9CdXR0b25cbiAgICAgICAgICAgICAgICBbbmFtZV09XCIkYW55KGtleSlcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVDbGFzc109XCJkZXNjcmlwdG9yLmlucHV0Q2xhc3NOYW1lXCI+PC9wLXJhZGlvQnV0dG9uPlxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwib3B0aW9uLnZhbHVlXCIgW2NsYXNzXT1cIidtbmctcmFkaW8tYnV0dG9uLWxhYmVsICcgKyBkZXNjcmlwdG9yLmxhYmVsQ2xhc3NOYW1lXCI+e3sgb3B0aW9uLnRpdGxlIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dGV4dGFyZWFcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIlxuICAgICAgICBbaWRdPVwiJGFueShrZXkpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgW3Jvd3NdPVwiZGVzY3JpcHRvci5yb3dzID8/IDNcIlxuICAgICAgICBwSW5wdXRUZXh0YXJlYVxuICAgICAgICBbY2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiPlxuICAgIDwvdGV4dGFyZWE+XG5cbiAgICA8cC1jYWxlbmRhclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVwaWNrZXInXCJcbiAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImlGb3JtQ29udHJvbFwiXG4gICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyRm9ybWF0ID8/ICdkZC5tbS55eSdcIlxuICAgICAgICBbbWluRGF0ZV09XCIkYW55KGRlc2NyaXB0b3IuZGF0ZVBpY2tlck1pbilcIlxuICAgICAgICBbbWF4RGF0ZV09XCIkYW55KGRlc2NyaXB0b3IuZGF0ZVBpY2tlck1heClcIlxuICAgICAgICBbc2hvd1RpbWVdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWVcIlxuICAgICAgICBbc2hvd1NlY29uZHNdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1NlY29uZHNcIlxuICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCIxXCI+XG4gICAgPC9wLWNhbGVuZGFyPlxuXG4gICAgPHAtaW5wdXRNYXNrXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInbWFzaydcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgICAgICBbbWFza109XCIkYW55KGRlc2NyaXB0b3IubWFzaylcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJGFueShkZXNjcmlwdG9yLnBsYWNlaG9sZGVyKVwiXG4gICAgICAgIFtzbG90Q2hhcl09XCIkYW55KGRlc2NyaXB0b3Iuc2xvdENoYXIpXCJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiPlxuICAgIDwvcC1pbnB1dE1hc2s+XG5cbiAgICA8cC1maWxlVXBsb2FkXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZmlsZSdcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiZGVzY3JpcHRvci5maWxlTXVsdGlwbGVcIlxuICAgICAgICBbYWNjZXB0XT1cIiRhbnkoZGVzY3JpcHRvci5maWxlQWNjZXB0KVwiXG4gICAgICAgIFttYXhGaWxlU2l6ZV09XCJkZXNjcmlwdG9yLmZpbGVNYXhGaWxlU2l6ZVwiXG4gICAgICAgIFtzaG93VXBsb2FkQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgKG9uUmVtb3ZlKT1cIm9uRmlsZVJlbW92ZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2xlYXIpPVwib25GaWxlQ2xlYXIoJGV2ZW50KVwiPlxuICAgIDwvcC1maWxlVXBsb2FkPlxuXG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlVXJsJ1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGVzY3JpcHRvci5pbWFnZVByZXZpZXdcIiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgaW1hZ2VGb3JtQXJyYXkuY29udHJvbHM7IGxldCBpZHggPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxwLWltYWdlXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW1hZ2VGb3JtQXJyYXkuYXQoaWR4KS52YWxpZCAmJiBpbWFnZUZvcm1BcnJheS5hdChpZHgpLnZhbHVlOyBlbHNlIG5vSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlRm9ybUFycmF5LmF0KGlkeCkudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbcHJldmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uSW1hZ2VFcnJvcik9XCJvbkltYWdlVXJsTG9hZEVycm9yKClcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwibW5nLWltYWdlIG0tMlwiPjwvcC1pbWFnZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ltYWdlPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW5nLWltYWdlIG0tMiBwLWltYWdlLXByZXZpZXctY29udGFpbmVyIG5vLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWltYWdlLXByZXZpZXctaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInAtaW1hZ2UtcHJldmlldy1pY29uIHBpIHBpLWJhblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGVzY3JpcHRvci5pbWFnZVByZXZpZXcgfHwgZGVzY3JpcHRvci5pbWFnZVVybElucHV0VmlzaWJsZU9uRGlzYWJsZWQgfHwgIWlGb3JtQ29udHJvbC5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaW1hZ2VDdHJsTmFtZSBvZiBpbWFnZUZvcm1BcnJheS5jb250cm9sczsgbGV0IGlkeCA9IGluZGV4XCIgY2xhc3M9XCJwLWlucHV0Z3JvdXAgbXQtMVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInbW5nRWRpdG9yLmltYWdlVXJsUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cIiRhbnkoa2V5KVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkoaW1hZ2VGb3JtQXJyYXkuYXQoaWR4KSlcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIC8+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlc2NyaXB0b3IuZmlsZU11bHRpcGxlICYmICFpRm9ybUNvbnRyb2wuZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1taW51c1wiIChjbGljayk9XCJyZW1vdmVJbWFnZVVybEF0KGlkeClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGVzY3JpcHRvci5maWxlTXVsdGlwbGUgJiYgIWlGb3JtQ29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktcGx1c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1wcmltYXJ5IHctYXV0byBtdC0xXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ21uZ0VkaXRvci5pbWFnZVVybEFkZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRJbWFnZVVybCgpXCI+PC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaERlZmF1bHQgcElucHV0VGV4dCBbaWRdPVwiJGFueShrZXkpXCIgW3R5cGVdPVwicHJvcHMudHlwZSB8fCAndGV4dCdcIiBbZm9ybUNvbnRyb2xdPVwiaUZvcm1Db250cm9sXCIgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIiAvPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|