@dereekb/dbx-form 10.2.0 → 11.0.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/calendar/lib/calendar.schedule.selection.cell.component.d.ts +0 -1
- package/calendar/lib/calendar.schedule.selection.component.d.ts +1 -2
- package/calendar/lib/calendar.schedule.selection.days.component.d.ts +1 -2
- package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +1 -2
- package/calendar/lib/calendar.schedule.selection.popover.button.component.d.ts +1 -2
- package/calendar/lib/calendar.schedule.selection.range.component.d.ts +2 -3
- package/calendar/lib/calendar.schedule.selection.store.provide.d.ts +1 -2
- package/calendar/lib/calendar.schedule.selection.toggle.button.component.d.ts +0 -1
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +2 -3
- package/esm2022/calendar/lib/calendar.module.mjs +6 -6
- package/esm2022/calendar/lib/calendar.schedule.selection.cell.component.mjs +10 -13
- package/esm2022/calendar/lib/calendar.schedule.selection.component.mjs +49 -52
- package/esm2022/calendar/lib/calendar.schedule.selection.days.component.mjs +23 -27
- package/esm2022/calendar/lib/calendar.schedule.selection.days.form.component.mjs +5 -8
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +12 -13
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.component.mjs +4 -4
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +22 -24
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.component.mjs +4 -4
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +4 -4
- package/esm2022/calendar/lib/calendar.schedule.selection.range.component.mjs +81 -86
- package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +123 -123
- package/esm2022/calendar/lib/calendar.schedule.selection.store.provide.mjs +8 -13
- package/esm2022/calendar/lib/calendar.schedule.selection.toggle.button.component.mjs +39 -42
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +24 -31
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.module.mjs +6 -6
- package/esm2022/lib/form/action/form.action.directive.mjs +29 -20
- package/esm2022/lib/form/action/form.action.module.mjs +4 -4
- package/esm2022/lib/form/action/transition/form.action.transition.module.mjs +4 -4
- package/esm2022/lib/form/action/transition/form.action.transition.safety.directive.mjs +7 -18
- package/esm2022/lib/form/form.module.mjs +4 -4
- package/esm2022/lib/form/io/form.changes.directive.mjs +7 -13
- package/esm2022/lib/form/io/form.input.directive.mjs +7 -13
- package/esm2022/lib/form/io/form.io.module.mjs +4 -4
- package/esm2022/lib/form/io/form.loading.directive.mjs +9 -15
- package/esm2022/lib/form.module.mjs +4 -4
- package/esm2022/lib/formly/field/checklist/checklist.field.mjs +4 -4
- package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +23 -31
- package/esm2022/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +5 -4
- package/esm2022/lib/formly/field/checklist/checklist.item.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/component/component.field.component.mjs +4 -4
- package/esm2022/lib/formly/field/component/component.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/form.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/selection/list/list.field.component.mjs +33 -36
- package/esm2022/lib/formly/field/selection/list/list.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +3 -3
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.directive.mjs +72 -74
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +21 -24
- package/esm2022/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +6 -9
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +27 -34
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.directive.mjs +32 -30
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +8 -11
- package/esm2022/lib/formly/field/selection/selection.module.mjs +4 -4
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +143 -145
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/texteditor/texteditor.field.component.mjs +19 -24
- package/esm2022/lib/formly/field/texteditor/texteditor.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/value/array/array.field.component.mjs +22 -25
- package/esm2022/lib/formly/field/value/array/array.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/value/boolean/boolean.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/date/date.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +233 -236
- package/esm2022/lib/formly/field/value/date/datetime.field.service.mjs +7 -15
- package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +97 -101
- package/esm2022/lib/formly/field/value/number/number.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/phone/phone.field.component.mjs +15 -18
- package/esm2022/lib/formly/field/value/phone/phone.field.module.mjs +6 -6
- package/esm2022/lib/formly/field/value/text/text.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/value.module.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.component.mjs +39 -0
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.delegate.mjs +55 -0
- package/esm2022/lib/formly/field/wrapper/flex.wrapper.component.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/form.wrapper.module.mjs +10 -10
- package/esm2022/lib/formly/field/wrapper/index.mjs +3 -3
- package/esm2022/lib/formly/field/wrapper/info.wrapper.component.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/section.wrapper.component.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/style.wrapper.component.mjs +8 -11
- package/esm2022/lib/formly/field/wrapper/subsection.wrapper.component.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/toggle.wrapper.component.mjs +15 -18
- package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +6 -9
- package/esm2022/lib/formly/field/wrapper/wrapper.key.mjs +2 -3
- package/esm2022/lib/formly/field/wrapper/wrapper.mjs +3 -3
- package/esm2022/lib/formly/form/form.form.module.mjs +4 -4
- package/esm2022/lib/formly/form/search.form.component.mjs +6 -9
- package/esm2022/lib/formly/formly.context.directive.mjs +5 -8
- package/esm2022/lib/formly/formly.context.mjs +10 -12
- package/esm2022/lib/formly/formly.directive.mjs +16 -25
- package/esm2022/lib/formly/formly.form.component.mjs +73 -77
- package/esm2022/lib/formly/formly.module.mjs +6 -6
- package/esm2022/lib/layout/form.layout.module.mjs +4 -4
- package/esm2022/lib/layout/form.spacer.component.mjs +4 -4
- package/esm2022/mapbox/lib/field/latlng/latlng.field.component.mjs +48 -57
- package/esm2022/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +17 -20
- package/esm2022/mapbox/lib/field/latlng/latlng.module.mjs +6 -6
- package/esm2022/mapbox/lib/field/zoom/zoom.field.component.mjs +26 -32
- package/esm2022/mapbox/lib/field/zoom/zoom.module.mjs +6 -6
- package/esm2022/mapbox/lib/mapbox.module.mjs +4 -4
- package/fesm2022/dereekb-dbx-form-calendar.mjs +383 -407
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +96 -111
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +1071 -1163
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/form/action/form.action.directive.d.ts +3 -3
- package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +3 -7
- package/lib/form/io/form.changes.directive.d.ts +2 -3
- package/lib/form/io/form.input.directive.d.ts +3 -4
- package/lib/form/io/form.loading.directive.d.ts +3 -4
- package/lib/formly/field/checklist/checklist.field.d.ts +0 -1
- package/lib/formly/field/checklist/checklist.item.field.component.d.ts +4 -6
- package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +0 -1
- package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +1 -2
- package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +0 -1
- package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +2 -2
- package/lib/formly/field/texteditor/texteditor.field.component.d.ts +2 -4
- package/lib/formly/field/value/date/datetime.field.component.d.ts +1 -3
- package/lib/formly/field/value/date/datetime.field.service.d.ts +1 -4
- package/lib/formly/field/value/date/fixeddaterange.field.component.d.ts +2 -6
- package/lib/formly/field/wrapper/{expandable.wrapper.component.d.ts → expand.wrapper.component.d.ts} +4 -4
- package/lib/formly/field/wrapper/{expandable.wrapper.delegate.d.ts → expand.wrapper.delegate.d.ts} +7 -7
- package/lib/formly/field/wrapper/form.wrapper.module.d.ts +1 -1
- package/lib/formly/field/wrapper/index.d.ts +2 -2
- package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +4 -4
- package/lib/formly/field/wrapper/wrapper.d.ts +1 -1
- package/lib/formly/field/wrapper/wrapper.key.d.ts +1 -1
- package/lib/formly/formly.directive.d.ts +0 -1
- package/lib/formly/formly.form.component.d.ts +2 -3
- package/mapbox/esm2022/lib/field/latlng/latlng.field.component.mjs +48 -57
- package/mapbox/esm2022/lib/field/latlng/latlng.field.marker.component.mjs +17 -20
- package/mapbox/esm2022/lib/field/latlng/latlng.module.mjs +6 -6
- package/mapbox/esm2022/lib/field/zoom/zoom.field.component.mjs +26 -32
- package/mapbox/esm2022/lib/field/zoom/zoom.module.mjs +6 -6
- package/mapbox/esm2022/lib/mapbox.module.mjs +4 -4
- package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs +96 -111
- package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/mapbox/lib/field/latlng/latlng.field.component.d.ts +4 -6
- package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +1 -2
- package/mapbox/lib/field/zoom/zoom.field.component.d.ts +2 -3
- package/mapbox/package.json +1 -1
- package/package.json +1 -1
- package/esm2022/lib/formly/field/wrapper/expandable.wrapper.component.mjs +0 -39
- package/esm2022/lib/formly/field/wrapper/expandable.wrapper.delegate.mjs +0 -58
|
@@ -23,11 +23,11 @@ export class DbxPickableChipListFieldComponent extends AbstractDbxPickableItemFi
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
static
|
|
27
|
-
static
|
|
26
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxPickableChipListFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxPickableChipListFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-pickable-item-field\">\n <dbx-loading [context]=\"context\" [linear]=\"true\">\n <ng-container *ngIf=\"showFilterInput\">\n <ng-container *ngTemplateOutlet=\"filterTemplate\"></ng-container>\n </ng-container>\n <!-- Content -->\n <div class=\"dbx-pickable-item-field-chips\">\n <mat-chip-listbox [multiple]=\"multiSelect\" [required]=\"required\" [selectable]=\"!isReadonlyOrDisabled\" [disabled]=\"readonly\" #chipList>\n <mat-chip-option *ngFor=\"let item of items$ | async\" (click)=\"itemClicked(item)\" [selected]=\"item.selected\" [disabled]=\"isReadonlyOrDisabled || item.disabled\">\n <mat-icon matChipAvatar *ngIf=\"item.itemValue.icon\">{{ item.itemValue.icon }}</mat-icon>\n <span class=\"dbx-chip-label\">{{ item.itemValue.label }}</span>\n <span class=\"dbx-chip-sublabel\" *ngIf=\"item.itemValue.sublabel\">{{ item.itemValue.sublabel }}</span>\n </mat-chip-option>\n </mat-chip-listbox>\n <dbx-injection [config]=\"footerConfig\"></dbx-injection>\n </div>\n </dbx-loading>\n</div>\n\n<!-- Filter Input -->\n<ng-template #filterTemplate>\n <div class=\"dbx-pickable-item-field-filter\">\n <div class=\"dbx-label\">{{ filterLabel }}</div>\n <input [name]=\"name\" autocomplete=\"{{ autocomplete }}\" #filterMatInput=\"matInput\" matInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" />\n <mat-divider></mat-divider>\n <dbx-loading [linear]=\"true\" [context]=\"filterResultsContext\"></dbx-loading>\n <!-- No items found. -->\n <p *ngIf=\"noItemsAvailable$ | async\" class=\"dbx-label\">No items match this filter.</p>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DbxLoadingComponent, selector: "dbx-loading", inputs: ["show", "text", "mode", "color", "diameter", "linear", "padding", "context", "loading", "error"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i6.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
28
28
|
}
|
|
29
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxPickableChipListFieldComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{ template: "<div class=\"dbx-pickable-item-field\">\n <dbx-loading [context]=\"context\" [linear]=\"true\">\n <ng-container *ngIf=\"showFilterInput\">\n <ng-container *ngTemplateOutlet=\"filterTemplate\"></ng-container>\n </ng-container>\n <!-- Content -->\n <div class=\"dbx-pickable-item-field-chips\">\n <mat-chip-listbox [multiple]=\"multiSelect\" [required]=\"required\" [selectable]=\"!isReadonlyOrDisabled\" [disabled]=\"readonly\" #chipList>\n <mat-chip-option *ngFor=\"let item of items$ | async\" (click)=\"itemClicked(item)\" [selected]=\"item.selected\" [disabled]=\"isReadonlyOrDisabled || item.disabled\">\n <mat-icon matChipAvatar *ngIf=\"item.itemValue.icon\">{{ item.itemValue.icon }}</mat-icon>\n <span class=\"dbx-chip-label\">{{ item.itemValue.label }}</span>\n <span class=\"dbx-chip-sublabel\" *ngIf=\"item.itemValue.sublabel\">{{ item.itemValue.sublabel }}</span>\n </mat-chip-option>\n </mat-chip-listbox>\n <dbx-injection [config]=\"footerConfig\"></dbx-injection>\n </div>\n </dbx-loading>\n</div>\n\n<!-- Filter Input -->\n<ng-template #filterTemplate>\n <div class=\"dbx-pickable-item-field-filter\">\n <div class=\"dbx-label\">{{ filterLabel }}</div>\n <input [name]=\"name\" autocomplete=\"{{ autocomplete }}\" #filterMatInput=\"matInput\" matInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" />\n <mat-divider></mat-divider>\n <dbx-loading [linear]=\"true\" [context]=\"filterResultsContext\"></dbx-loading>\n <!-- No items found. -->\n <p *ngIf=\"noItemsAvailable$ | async\" class=\"dbx-label\">No items match this filter.</p>\n </div>\n</ng-template>\n" }]
|
|
32
32
|
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuY2hpcC5maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vcGlja2FibGUvcGlja2FibGUuY2hpcC5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vcGlja2FibGUvcGlja2FibGUuY2hpcC5maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBeUIsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQUUxRzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQ0FBcUMsU0FBUSxxQ0FBd0M7SUFDaEcsV0FBVyxDQUFDLElBQThCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNyQztTQUNGO0lBQ0gsQ0FBQzt3R0FUVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQywyRUNUOUMsdXBEQThCQTs7NEZEckJhLGlDQUFpQztrQkFIN0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhQaWNrYWJsZUl0ZW1GaWVsZERpcmVjdGl2ZSwgUGlja2FibGVJdGVtRmllbGRJdGVtIH0gZnJvbSAnLi9waWNrYWJsZS5maWVsZC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFVzZWQgZm9yIHBpY2tpbmcgcHJlLXNldCB2YWx1ZXMgdXNpbmcgY2hpcHMgYXMgdGhlIHByZXNlbnRhdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAncGlja2FibGUuY2hpcC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4UGlja2FibGVDaGlwTGlzdEZpZWxkQ29tcG9uZW50PFQ+IGV4dGVuZHMgQWJzdHJhY3REYnhQaWNrYWJsZUl0ZW1GaWVsZERpcmVjdGl2ZTxUPiB7XG4gIGl0ZW1DbGlja2VkKGl0ZW06IFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPik6IHZvaWQge1xuICAgIGlmICghaXRlbS5kaXNhYmxlZCAmJiAhdGhpcy5pc1JlYWRvbmx5T3JEaXNhYmxlZCkge1xuICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVWYWx1ZShpdGVtLml0ZW1WYWx1ZS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFkZFZhbHVlKGl0ZW0uaXRlbVZhbHVlLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtcGlja2FibGUtaXRlbS1maWVsZFwiPlxuICA8ZGJ4LWxvYWRpbmcgW2NvbnRleHRdPVwiY29udGV4dFwiIFtsaW5lYXJdPVwidHJ1ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVySW5wdXRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gQ29udGVudCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LXBpY2thYmxlLWl0ZW0tZmllbGQtY2hpcHNcIj5cbiAgICAgIDxtYXQtY2hpcC1saXN0Ym94IFttdWx0aXBsZV09XCJtdWx0aVNlbGVjdFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtzZWxlY3RhYmxlXT1cIiFpc1JlYWRvbmx5T3JEaXNhYmxlZFwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiICNjaGlwTGlzdD5cbiAgICAgICAgPG1hdC1jaGlwLW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyQgfCBhc3luY1wiIChjbGljayk9XCJpdGVtQ2xpY2tlZChpdGVtKVwiIFtzZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCIgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlPckRpc2FibGVkIHx8IGl0ZW0uZGlzYWJsZWRcIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0Q2hpcEF2YXRhciAqbmdJZj1cIml0ZW0uaXRlbVZhbHVlLmljb25cIj57eyBpdGVtLml0ZW1WYWx1ZS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRieC1jaGlwLWxhYmVsXCI+e3sgaXRlbS5pdGVtVmFsdWUubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYngtY2hpcC1zdWJsYWJlbFwiICpuZ0lmPVwiaXRlbS5pdGVtVmFsdWUuc3VibGFiZWxcIj57eyBpdGVtLml0ZW1WYWx1ZS5zdWJsYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtY2hpcC1vcHRpb24+XG4gICAgICA8L21hdC1jaGlwLWxpc3Rib3g+XG4gICAgICA8ZGJ4LWluamVjdGlvbiBbY29uZmlnXT1cImZvb3RlckNvbmZpZ1wiPjwvZGJ4LWluamVjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kYngtbG9hZGluZz5cbjwvZGl2PlxuXG48IS0tIEZpbHRlciBJbnB1dCAtLT5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJkYngtcGlja2FibGUtaXRlbS1maWVsZC1maWx0ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWxhYmVsXCI+e3sgZmlsdGVyTGFiZWwgfX08L2Rpdj5cbiAgICA8aW5wdXQgW25hbWVdPVwibmFtZVwiIGF1dG9jb21wbGV0ZT1cInt7IGF1dG9jb21wbGV0ZSB9fVwiICNmaWx0ZXJNYXRJbnB1dD1cIm1hdElucHV0XCIgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImlucHV0Q3RybFwiIC8+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPGRieC1sb2FkaW5nIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cImZpbHRlclJlc3VsdHNDb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbiAgICA8IS0tIE5vIGl0ZW1zIGZvdW5kLiAtLT5cbiAgICA8cCAqbmdJZj1cIm5vSXRlbXNBdmFpbGFibGUkIHwgYXN5bmNcIiBjbGFzcz1cImRieC1sYWJlbFwiPk5vIGl0ZW1zIG1hdGNoIHRoaXMgZmlsdGVyLjwvcD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { successResult, mapLoadingStateResults, filterMaybe, ListLoadingStateContextInstance,
|
|
1
|
+
import { successResult, mapLoadingStateResults, filterMaybe, ListLoadingStateContextInstance, mapIsListLoadingStateWithEmptyValue, startWithBeginLoading, SubscriptionObject } from '@dereekb/rxjs';
|
|
2
2
|
import { convertMaybeToArray, makeValuesGroupMap, separateValues, filterUniqueValues } from '@dereekb/util';
|
|
3
3
|
import { Directive, ViewChild } from '@angular/core';
|
|
4
4
|
import { FormControl } from '@angular/forms';
|
|
@@ -11,77 +11,75 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
* Used for picking pre-set values using items as the presentation.
|
|
12
12
|
*/
|
|
13
13
|
export class AbstractDbxPickableItemFieldDirective extends FieldType {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
valuesNotInDisplayMap.push(x);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
if (valuesNotInDisplayMap.length) {
|
|
44
|
-
return this.loadDisplayValuesForValues(valuesNotInDisplayMap).pipe(map((x) => mapLoadingStateResults(x, {
|
|
45
|
-
mapValue: (loadedValues) => {
|
|
46
|
-
loadedValues.forEach((x) => (x.isUnknown = x.isUnknown ?? true)); // Assign unknown flag.
|
|
47
|
-
return [...displayValues, ...loadedValues];
|
|
48
|
-
}
|
|
49
|
-
})));
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
return of(successResult(displayValues));
|
|
14
|
+
filterMatInput;
|
|
15
|
+
inputCtrl = new FormControl('');
|
|
16
|
+
_formControlObs = new BehaviorSubject(undefined);
|
|
17
|
+
formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
18
|
+
_clearDisplayHashMapSub = new SubscriptionObject();
|
|
19
|
+
_displayHashMap = new BehaviorSubject(new Map());
|
|
20
|
+
filterInputValue$ = this.inputCtrl.valueChanges.pipe(startWith(undefined));
|
|
21
|
+
filterInputValueString$ = this.filterInputValue$.pipe(debounceTime(200), distinctUntilChanged(), shareReplay(1));
|
|
22
|
+
loadResultsDisplayValuesState$ = this.formControl$.pipe(first(), switchMap(() => this.loadValuesFn().pipe(switchMap((x) => this.loadDisplayValuesForFieldValues(x)), startWithBeginLoading())), shareReplay(1));
|
|
23
|
+
_formControlValue$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value), shareReplay(1))));
|
|
24
|
+
loadResultsDisplayValues$ = this.loadResultsDisplayValuesState$.pipe(map((x) => x?.value ?? []));
|
|
25
|
+
/**
|
|
26
|
+
* Current values in the form control.
|
|
27
|
+
*/
|
|
28
|
+
values$ = this._formControlValue$.pipe(map(convertMaybeToArray), shareReplay(1));
|
|
29
|
+
/**
|
|
30
|
+
* Current values with their display value.
|
|
31
|
+
*/
|
|
32
|
+
displayValuesState$ = combineLatest([this.loadResultsDisplayValues$, this.values$]).pipe(switchMap(([displayValues, currentValues]) => {
|
|
33
|
+
const displayValuesMap = makeValuesGroupMap(displayValues, (x) => this.hashForValue(x.value));
|
|
34
|
+
const valuesNotInDisplayMap = [];
|
|
35
|
+
currentValues.forEach((x) => {
|
|
36
|
+
const key = this.hashForValue(x);
|
|
37
|
+
const displayValue = displayValuesMap.get(key)?.[0];
|
|
38
|
+
if (!displayValue) {
|
|
39
|
+
valuesNotInDisplayMap.push(x);
|
|
53
40
|
}
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
41
|
+
});
|
|
42
|
+
if (valuesNotInDisplayMap.length) {
|
|
43
|
+
return this.loadDisplayValuesForValues(valuesNotInDisplayMap).pipe(map((x) => mapLoadingStateResults(x, {
|
|
44
|
+
mapValue: (loadedValues) => {
|
|
45
|
+
loadedValues.forEach((x) => (x.isUnknown = x.isUnknown ?? true)); // Assign unknown flag.
|
|
46
|
+
return [...displayValues, ...loadedValues];
|
|
47
|
+
}
|
|
48
|
+
})));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return of(successResult(displayValues));
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
/**
|
|
55
|
+
* Results to be displayed if filtered.
|
|
56
|
+
*/
|
|
57
|
+
filteredSearchResultsState$ = this.loadResultsDisplayValues$.pipe(switchMap((values) => this.filterInputValueString$.pipe(switchMap((text) => combineLatest([this._filterValues(text, values), this.displayValuesState$]).pipe(map(([values, displayState]) => mapLoadingStateResults(displayState, {
|
|
58
|
+
mapValue: (displayValues) => {
|
|
59
|
+
const valueHashSet = new Set(values.map((x) => this.hashForValue(x)));
|
|
60
|
+
return displayValues.filter((x) => !x.isUnknown && valueHashSet.has(x._hash));
|
|
61
|
+
}
|
|
62
|
+
})), startWithBeginLoading())))), shareReplay(1));
|
|
63
|
+
filteredSearchResults$ = this.filteredSearchResultsState$.pipe(map((x) => x?.value), filterMaybe(), shareReplay(1));
|
|
64
|
+
items$ = combineLatest([this.filteredSearchResults$, this.values$]).pipe(map(([displayValues, values]) => {
|
|
65
|
+
const selectedHashValuesSet = new Set(values.map((x) => this.hashForValue(x)));
|
|
66
|
+
let items = displayValues.map((x) => ({ itemValue: x, selected: selectedHashValuesSet.has(x._hash) }));
|
|
67
|
+
if (this.sortItems) {
|
|
68
|
+
items = this.sortItems(items);
|
|
69
|
+
}
|
|
70
|
+
return items;
|
|
71
|
+
}), shareReplay(1));
|
|
72
|
+
itemsLoadingState$ = this.loadResultsDisplayValues$.pipe(switchMap(() => this.items$.pipe(first(), map((x) => successResult(x)), startWithBeginLoading(), shareReplay(1))));
|
|
73
|
+
/**
|
|
74
|
+
* Context used for managing the loading of items, or when the current results change.
|
|
75
|
+
*/
|
|
76
|
+
context = new ListLoadingStateContextInstance({ obs: this.itemsLoadingState$, showLoadingOnNoValue: false });
|
|
77
|
+
filterItemsLoadingState$ = this.items$.pipe(map((x) => successResult(x)), startWithBeginLoading(), shareReplay(1));
|
|
78
|
+
/**
|
|
79
|
+
* Context used for searching/filtering.
|
|
80
|
+
*/
|
|
81
|
+
filterResultsContext = new ListLoadingStateContextInstance({ obs: this.filteredSearchResultsState$, showLoadingOnNoValue: true });
|
|
82
|
+
noItemsAvailable$ = this.filterItemsLoadingState$.pipe(mapIsListLoadingStateWithEmptyValue(), distinctUntilChanged());
|
|
85
83
|
get readonly() {
|
|
86
84
|
return this.props.readonly;
|
|
87
85
|
}
|
|
@@ -262,8 +260,8 @@ export class AbstractDbxPickableItemFieldDirective extends FieldType {
|
|
|
262
260
|
this.formControl.markAsTouched();
|
|
263
261
|
this.formControl.markAsDirty();
|
|
264
262
|
}
|
|
265
|
-
static
|
|
266
|
-
static
|
|
263
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractDbxPickableItemFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
264
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AbstractDbxPickableItemFieldDirective, viewQueries: [{ propertyName: "filterMatInput", first: true, predicate: ["filterMatInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 });
|
|
267
265
|
}
|
|
268
266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractDbxPickableItemFieldDirective, decorators: [{
|
|
269
267
|
type: Directive
|
|
@@ -271,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
271
269
|
type: ViewChild,
|
|
272
270
|
args: ['filterMatInput', { static: true }]
|
|
273
271
|
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWdCLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsK0JBQStCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdE0sT0FBTyxFQUFnQixtQkFBbUIsRUFBRSxrQkFBa0IsRUFBdUIsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xMLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBcUZ4Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxxQ0FBNkYsU0FBUSxTQUFrRTtJQURwTDs7UUFLVyxjQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakMsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBeUIsU0FBUyxDQUFDLENBQUM7UUFDeEUsaUJBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXpELDRCQUF1QixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUErQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFOUYsc0JBQWlCLEdBQThCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0Ryw0QkFBdUIsR0FBOEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1SSxtQ0FBOEIsR0FBZ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzNJLEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUN0QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN6RCxxQkFBcUIsRUFBRSxDQUN4QixDQUNGLEVBQ0QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyx1QkFBa0IsR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5Siw4QkFBeUIsR0FBa0UsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6Szs7V0FFRztRQUNNLFlBQU8sR0FBb0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzRzs7V0FFRztRQUNNLHdCQUFtQixHQUFnRixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1SyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE1BQU0scUJBQXFCLEdBQVEsRUFBRSxDQUFDO1lBRXRDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsTUFBTSxZQUFZLEdBQTJELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU1RyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNqQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQy9CO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLHFCQUFxQixDQUFDLE1BQU0sRUFBRTtnQkFDaEMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ1Isc0JBQXNCLENBQUMsQ0FBQyxFQUFFO29CQUN4QixRQUFRLEVBQUUsQ0FBQyxZQUErRCxFQUFFLEVBQUU7d0JBQzVFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7d0JBQ3pGLE9BQU8sQ0FBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO29CQUM3QyxDQUFDO2lCQUNGLENBQUMsQ0FDSCxDQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzthQUN6QztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRjs7V0FFRztRQUNNLGdDQUEyQixHQUFnRixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUNySixTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNqQixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUM3QixzQkFBc0IsQ0FBQyxZQUFZLEVBQUU7WUFDbkMsUUFBUSxFQUFFLENBQUMsYUFBZ0UsRUFBRSxFQUFFO2dCQUM3RSxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEUsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRixDQUFDO1NBQ0YsQ0FBQyxDQUNILEVBQ0QscUJBQXFCLEVBQUUsQ0FDeEIsQ0FDRixDQUNGLENBQ0YsRUFDRCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLDJCQUFzQixHQUFrRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUNwSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFDcEIsV0FBVyxFQUFFLEVBQ2IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxXQUFNLEdBQThDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFILEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDOUIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLEtBQUssR0FBa0MsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFdEksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMvQjtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyx1QkFBa0IsR0FBeUQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FDckgsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLEtBQUssRUFBRSxFQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzVCLHFCQUFxQixFQUFFLEVBQ3ZCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQ0YsQ0FBQztRQUVGOztXQUVHO1FBQ00sWUFBTyxHQUFHLElBQUksK0JBQStCLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFN0csNkJBQXdCLEdBQXlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN4RyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1QixxQkFBcUIsRUFBRSxFQUN2QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVGOztXQUVHO1FBQ00seUJBQW9CLEdBQUcsSUFBSSwrQkFBK0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVsSSxzQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0tBb1BwSDtJQWxQQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUssSUFBSSxDQUFDLEdBQWMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFXLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksbUNBQW1DO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsSUFBSSxLQUFLLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBaUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxFQUEwQyxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzVCLEVBQUUsR0FBRyxDQUFDLFVBQXlCLEVBQUUsTUFBOEMsRUFBbUIsRUFBRTtnQkFDbEcsSUFBSSxNQUF1QixDQUFDO2dCQUU1QixJQUFJLFVBQVUsRUFBRTtvQkFDZCxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2xEO3FCQUFNO29CQUNMLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ3pDO2dCQUVELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsQ0FBQztTQUNIO2FBQU07WUFDTCxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMxQjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDO0lBQ2xELENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxNQUFXO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsK0JBQStCLENBQUMsTUFBdUM7UUFDckUsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNyRCxHQUFHLENBQUMsQ0FBQyxhQUFnRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsRUFDdkcscUJBQXFCLEVBQUUsRUFDdkIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsOEJBQThCLENBQUMsTUFBdUM7UUFDcEUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDOUIsUUFBUSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQXVDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBZ0csQ0FBQyxDQUFDO1lBRXhRLE1BQU07WUFDSixFQUFFO1lBQ0YsUUFBUSxFQUFFLFVBQVUsRUFDcEIsUUFBUSxFQUFFLFlBQVksRUFDdkIsR0FBRyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4RCxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU3RSxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FDMUIsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7b0JBQ3JCLE1BQU0sc0JBQXNCLEdBQXNELGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDeEcsQ0FBcUQsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzFGLE9BQU8sQ0FBb0QsQ0FBQztvQkFDOUQsQ0FBQyxDQUFDLENBQUM7b0JBRUgsd0NBQXdDO29CQUN4QyxNQUFNLHFCQUFxQixHQUEyRCxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN0SSxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRXZGLDZEQUE2RDtvQkFDN0QscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRXRFLDRCQUE0QjtvQkFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRXZGLHlCQUF5QjtvQkFDekIsT0FBTyxnQkFBZ0IsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLGdEQUFnRDtnQkFDaEQsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWtFLENBQUM7YUFDekc7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFFO1lBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5SDtRQUVELG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7YUFDbEIsSUFBSSxDQUNILEtBQUssQ0FBQyxFQUFFLENBQUMsRUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNoQixLQUFLLEVBQUUsQ0FDUjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLFdBQVc7UUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxrQkFBbUM7UUFDbEUsTUFBTSxLQUFLLEdBQVEsa0JBQWtCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBRSxFQUFVLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBCQUEwQjtRQUN2SCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBUTtRQUNmLElBQUksU0FBYyxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVE7UUFDbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNuQixtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1NBQy9DO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUI7SUFDUCxzQkFBc0IsQ0FBQyxNQUFXO1FBQzFDLElBQUksUUFBUSxHQUFZLE1BQU0sQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixRQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOytHQS9YVSxxQ0FBcUM7bUdBQXJDLHFDQUFxQzs7NEZBQXJDLHFDQUFxQztrQkFEakQsU0FBUzs4QkFHUixjQUFjO3NCQURiLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ1N0YXRlLCBzdWNjZXNzUmVzdWx0LCBtYXBMb2FkaW5nU3RhdGVSZXN1bHRzLCBmaWx0ZXJNYXliZSwgTGlzdExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSwgaXNMaXN0TG9hZGluZ1N0YXRlRW1wdHksIHN0YXJ0V2l0aEJlZ2luTG9hZGluZywgU3Vic2NyaXB0aW9uT2JqZWN0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBQcmltYXRpdmVLZXksIGNvbnZlcnRNYXliZVRvQXJyYXksIG1ha2VWYWx1ZXNHcm91cE1hcCwgTWF5YmUsIEFycmF5T3JWYWx1ZSwgc2VwYXJhdGVWYWx1ZXMsIGZpbHRlclVuaXF1ZVZhbHVlcyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIGZpbHRlciwgbWFwLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAsIHN0YXJ0V2l0aCwgc2hhcmVSZXBsYXksIG1lcmdlTWFwLCBmaXJzdCwgZGVsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlGdW5jdGlvbiwgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBQaWNrYWJsZVZhbHVlRmllbGRGaWx0ZXJGdW5jdGlvbiwgUGlja2FibGVWYWx1ZUZpZWxkSGFzaEZ1bmN0aW9uLCBQaWNrYWJsZVZhbHVlRmllbGRMb2FkVmFsdWVzRnVuY3Rpb24sIFBpY2thYmxlVmFsdWVGaWVsZFZhbHVlIH0gZnJvbSAnLi9waWNrYWJsZSc7XG5pbXBvcnQgeyBEYnhWYWx1ZUxpc3RJdGVtIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBjYW1lbENhc2UgfSBmcm9tICdjaGFuZ2UtY2FzZSc7XG5cbi8qKlxuICogV3JhcHMgdGhlIHNlbGVjdGVkIHN0YXRlIHdpdGggdGhlIGl0ZW1zLlxuICovXG5leHBvcnQgdHlwZSBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VCwgTSA9IHVua25vd24+ID0gRGJ4VmFsdWVMaXN0SXRlbTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+O1xuXG5leHBvcnQgdHlwZSBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW1Tb3J0Rm48VCwgTSA9IHVua25vd24+ID0gKGl0ZW1zOiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VCwgTT5bXSkgPT4gUGlja2FibGVJdGVtRmllbGRJdGVtPFQsIE0+W107XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlja2FibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBMb2FkcyBhbGwgcGlja2FibGUgdmFsdWVzLlxuICAgKi9cbiAgbG9hZFZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0Z1bmN0aW9uPFQsIE0+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIGRpc3BsYXlGb3JWYWx1ZTogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheUZ1bmN0aW9uPFQsIE0+O1xuICAvKipcbiAgICogVXNlZCBmb3IgaGFzaGluZyBkaXNwbGF5IHZhbHVlcyBhbmQgb21pdHRpbmcgcmVwZWF0IHZhbHVlcy5cbiAgICpcbiAgICogSWYgaGFzaEZvclZhbHVlIGlzIG5vdCBwcm92aWRlZCwgdGhlIHZhbHVlJ3MgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgaGFzaEZvclZhbHVlPzogUGlja2FibGVWYWx1ZUZpZWxkSGFzaEZ1bmN0aW9uPFQsIEg+O1xuICAvKipcbiAgICogVXNlZCBmb3IgZmlsdGVyaW5nIHZhbHVlcyB2aWEgdGhlIHNlYXJjaCB0ZXh0LlxuICAgKi9cbiAgZmlsdGVyVmFsdWVzPzogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRnVuY3Rpb248VCwgTT47XG4gIC8qKlxuICAgKiBVc2VkIGZvciBzb3J0aW5nIHRoZSBpdGVtcyBiZWZvcmUgdGhleSBhcmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiBTaG91bGQgb25seSBiZSB1c2VkIHRvIHNvcnQgdmFsdWVzLlxuICAgKi9cbiAgc29ydEl0ZW1zPzogUGlja2FibGVJdGVtRmllbGRJdGVtU29ydEZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgbXVsdGlwbGUgaXRlbXMgdG8gYmUgc2VsZWN0ZWQuXG4gICAqL1xuICBtdWx0aVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzZXQvZ2V0IHZhbHVlcyBhcyBhbiBhcnJheSBvciBhIHNpbmdsZSB2YWx1ZS4gSWYgc2V0IGZhbHNlLCBtdWx0aVNlbGVjdCBpcyBpZ25vcmVkLlxuICAgKi9cbiAgYXNBcnJheVZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIHRleHQgZmlsdGVyLiBUcnVlIGJ5IGRlZmF1bHQgaWYgZmlsdGVyVmFsdWVzIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgc2hvd1RleHRGaWx0ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2tpcCB0aGUgZmlsdGVyIGZ1bmN0aW9uIHdoZW4gdGhlIGlucHV0IGlzIGVtcHR5LlxuICAgKlxuICAgKiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBza2lwRmlsdGVyRm5PbkVtcHR5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZpbHRlciBMYWJlbFxuICAgKi9cbiAgZmlsdGVyTGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIHRoYXQgY2FuIGJlIHBpY2tlZFxuICAgKi9cbiAgbWF4UGlja3M/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbi9oaW50IHRvIGRpc3BsYXkuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEZvb3RlciBEaXNwbGF5XG4gICAqL1xuICBmb290ZXJDb25maWc/OiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc7XG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBzZWxlY3Rpb24gbW9kZSBvZiB0aGUgbGlzdCB0byBcInZpZXdcIiBtb2RlIG9uIGRpc2FibGVkLCBoaWRpbmcgdGhlIHNlbGVjdGlvbiBib3hlcy5cbiAgICovXG4gIGNoYW5nZVNlbGVjdGlvbk1vZGVUb1ZpZXdPbkRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbi8qKlxuICogRGlzcGxheWVkIHZhbHVlIHdpdGggdGhlIGNvbXB1dGVkIGhhc2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+IHtcbiAgX2hhc2g6IEg7XG59XG5cbi8qKlxuICogVXNlZCBmb3IgcGlja2luZyBwcmUtc2V0IHZhbHVlcyB1c2luZyBpdGVtcyBhcyB0aGUgcHJlc2VudGF0aW9uLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdERieFBpY2thYmxlSXRlbUZpZWxkRGlyZWN0aXZlPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5PiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8UGlja2FibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWF0SW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWx0ZXJNYXRJbnB1dCE6IE1hdElucHV0O1xuXG4gIHJlYWRvbmx5IGlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSBfY2xlYXJEaXNwbGF5SGFzaE1hcFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxILCBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuXG4gIHJlYWRvbmx5IGZpbHRlcklucHV0VmFsdWUkOiBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+ID0gdGhpcy5pbnB1dEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpO1xuICByZWFkb25seSBmaWx0ZXJJbnB1dFZhbHVlU3RyaW5nJDogT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PiA9IHRoaXMuZmlsdGVySW5wdXRWYWx1ZSQucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGxvYWRSZXN1bHRzRGlzcGxheVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT4+ID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBmaXJzdCgpLFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5sb2FkVmFsdWVzRm4oKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHgpID0+IHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh4KSksXG4gICAgICAgIHN0YXJ0V2l0aEJlZ2luTG9hZGluZygpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IF9mb3JtQ29udHJvbFZhbHVlJDogT2JzZXJ2YWJsZTxUIHwgVFtdPiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSk7XG5cbiAgcmVhZG9ubHkgbG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJDogT2JzZXJ2YWJsZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPltdPiA9IHRoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSkpO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlcyBpbiB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZSQucGlwZShtYXAoY29udmVydE1heWJlVG9BcnJheSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICAvKipcbiAgICogQ3VycmVudCB2YWx1ZXMgd2l0aCB0aGVpciBkaXNwbGF5IHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5sb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXMkLCB0aGlzLnZhbHVlcyRdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2Rpc3BsYXlWYWx1ZXMsIGN1cnJlbnRWYWx1ZXNdKSA9PiB7XG4gICAgICBjb25zdCBkaXNwbGF5VmFsdWVzTWFwID0gbWFrZVZhbHVlc0dyb3VwTWFwKGRpc3BsYXlWYWx1ZXMsICh4KSA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKSk7XG4gICAgICBjb25zdCB2YWx1ZXNOb3RJbkRpc3BsYXlNYXA6IFRbXSA9IFtdO1xuXG4gICAgICBjdXJyZW50VmFsdWVzLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5oYXNoRm9yVmFsdWUoeCk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZTogTWF5YmU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD4+ID0gZGlzcGxheVZhbHVlc01hcC5nZXQoa2V5KT8uWzBdO1xuXG4gICAgICAgIGlmICghZGlzcGxheVZhbHVlKSB7XG4gICAgICAgICAgdmFsdWVzTm90SW5EaXNwbGF5TWFwLnB1c2goeCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsdWVzTm90SW5EaXNwbGF5TWFwLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXNOb3RJbkRpc3BsYXlNYXApLnBpcGUoXG4gICAgICAgICAgbWFwKCh4KSA9PlxuICAgICAgICAgICAgbWFwTG9hZGluZ1N0YXRlUmVzdWx0cyh4LCB7XG4gICAgICAgICAgICAgIG1hcFZhbHVlOiAobG9hZGVkVmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPltdKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVzLmZvckVhY2goKHgpID0+ICh4LmlzVW5rbm93biA9IHguaXNVbmtub3duID8/IHRydWUpKTsgLy8gQXNzaWduIHVua25vd24gZmxhZy5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRpc3BsYXlWYWx1ZXMsIC4uLmxvYWRlZFZhbHVlc107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKHN1Y2Nlc3NSZXN1bHQoZGlzcGxheVZhbHVlcykpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgLyoqXG4gICAqIFJlc3VsdHMgdG8gYmUgZGlzcGxheWVkIGlmIGZpbHRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyZWRTZWFyY2hSZXN1bHRzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPltdPj4gPSB0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHZhbHVlcykgPT5cbiAgICAgIHRoaXMuZmlsdGVySW5wdXRWYWx1ZVN0cmluZyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh0ZXh0KSA9PlxuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2ZpbHRlclZhbHVlcyh0ZXh0LCB2YWx1ZXMpLCB0aGlzLmRpc3BsYXlWYWx1ZXNTdGF0ZSRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbdmFsdWVzLCBkaXNwbGF5U3RhdGVdKSA9PlxuICAgICAgICAgICAgICBtYXBMb2FkaW5nU3RhdGVSZXN1bHRzKGRpc3BsYXlTdGF0ZSwge1xuICAgICAgICAgICAgICAgIG1hcFZhbHVlOiAoZGlzcGxheVZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVIYXNoU2V0ID0gbmV3IFNldCh2YWx1ZXMubWFwKCh4KSA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSkpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlWYWx1ZXMuZmlsdGVyKCh4KSA9PiAheC5pc1Vua25vd24gJiYgdmFsdWVIYXNoU2V0Lmhhcyh4Ll9oYXNoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aEJlZ2luTG9hZGluZygpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkU2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT4gPSB0aGlzLmZpbHRlcmVkU2VhcmNoUmVzdWx0c1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8udmFsdWUpLFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpdGVtcyQ6IE9ic2VydmFibGU8UGlja2FibGVJdGVtRmllbGRJdGVtPFQsIE0+W10+ID0gY29tYmluZUxhdGVzdChbdGhpcy5maWx0ZXJlZFNlYXJjaFJlc3VsdHMkLCB0aGlzLnZhbHVlcyRdKS5waXBlKFxuICAgIG1hcCgoW2Rpc3BsYXlWYWx1ZXMsIHZhbHVlc10pID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSGFzaFZhbHVlc1NldCA9IG5ldyBTZXQodmFsdWVzLm1hcCgoeCkgPT4gdGhpcy5oYXNoRm9yVmFsdWUoeCkpKTtcbiAgICAgIGxldCBpdGVtczogUGlja2FibGVJdGVtRmllbGRJdGVtPFQsIE0+W10gPSBkaXNwbGF5VmFsdWVzLm1hcCgoeCkgPT4gKHsgaXRlbVZhbHVlOiB4LCBzZWxlY3RlZDogc2VsZWN0ZWRIYXNoVmFsdWVzU2V0Lmhhcyh4Ll9oYXNoKSB9KSk7XG5cbiAgICAgIGlmICh0aGlzLnNvcnRJdGVtcykge1xuICAgICAgICBpdGVtcyA9IHRoaXMuc29ydEl0ZW1zKGl0ZW1zKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXRlbXNMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD5bXT4+ID0gdGhpcy5sb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBtYXAoKHgpID0+IHN1Y2Nlc3NSZXN1bHQoeCkpLFxuICAgICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgLyoqXG4gICAqIENvbnRleHQgdXNlZCBmb3IgbWFuYWdpbmcgdGhlIGxvYWRpbmcgb2YgaXRlbXMsIG9yIHdoZW4gdGhlIGN1cnJlbnQgcmVzdWx0cyBjaGFuZ2UuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0ID0gbmV3IExpc3RMb2FkaW5nU3RhdGVDb250ZXh0SW5zdGFuY2UoeyBvYnM6IHRoaXMuaXRlbXNMb2FkaW5nU3RhdGUkLCBzaG93TG9hZGluZ09uTm9WYWx1ZTogZmFsc2UgfSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVySXRlbXNMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD5bXT4+ID0gdGhpcy5pdGVtcyQucGlwZShcbiAgICBtYXAoKHgpID0+IHN1Y2Nlc3NSZXN1bHQoeCkpLFxuICAgIHN0YXJ0V2l0aEJlZ2luTG9hZGluZygpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIENvbnRleHQgdXNlZCBmb3Igc2VhcmNoaW5nL2ZpbHRlcmluZy5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlclJlc3VsdHNDb250ZXh0ID0gbmV3IExpc3RMb2FkaW5nU3RhdGVDb250ZXh0SW5zdGFuY2UoeyBvYnM6IHRoaXMuZmlsdGVyZWRTZWFyY2hSZXN1bHRzU3RhdGUkLCBzaG93TG9hZGluZ09uTm9WYWx1ZTogdHJ1ZSB9KTtcblxuICByZWFkb25seSBub0l0ZW1zQXZhaWxhYmxlJCA9IHRoaXMuZmlsdGVySXRlbXNMb2FkaW5nU3RhdGUkLnBpcGUoaXNMaXN0TG9hZGluZ1N0YXRlRW1wdHkoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seTtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHBpY2thYmxlRmllbGQoKTogUGlja2FibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IG11bHRpU2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQubXVsdGlTZWxlY3QgPz8gdHJ1ZTtcbiAgfVxuXG4gIGdldCBhc0FycmF5VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5hc0FycmF5VmFsdWUgPz8gdHJ1ZTtcbiAgfVxuXG4gIGdldCBwaWNrT25seU9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hc0FycmF5VmFsdWUgPT09IGZhbHNlIHx8IHRoaXMubXVsdGlTZWxlY3QgPT09IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGZpbHRlckxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuZmlsdGVyTGFiZWw7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm5hbWUgPz8gY2FtZWxDYXNlKHRoaXMubGFiZWwgPz8gKHRoaXMua2V5IGFzIHN0cmluZykpO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsO1xuICB9XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5wcm9wcy5hdHRyaWJ1dGVzPy5bJ2F1dG9jb21wbGV0ZSddID8/IHRoaXMua2V5KSBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXQgY2hhbmdlU2VsZWN0aW9uTW9kZVRvVmlld09uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5jaGFuZ2VTZWxlY3Rpb25Nb2RlVG9WaWV3T25EaXNhYmxlZCA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCBzb3J0SXRlbXMoKTogTWF5YmU8UGlja2FibGVJdGVtRmllbGRJdGVtU29ydEZuPFQsIE0+PiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5zb3J0SXRlbXM7XG4gIH1cblxuICBnZXQgaGFzaEZvclZhbHVlKCk6IFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGdW5jdGlvbjxULCBIPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIHVua25vd24gYXMgSCk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlGdW5jdGlvbjxULCBNPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgc2hvd0ZpbHRlcklucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMucGlja2FibGVGaWVsZC5maWx0ZXJWYWx1ZXMpO1xuICB9XG5cbiAgZ2V0IGZpbHRlclZhbHVlc0ZuKCk6IFBpY2thYmxlVmFsdWVGaWVsZEZpbHRlckZ1bmN0aW9uPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLmZpbHRlclZhbHVlcyA/PyAoKF8sIHgpID0+IG9mKHgubWFwKCh5KSA9PiB5LnZhbHVlKSkpO1xuICB9XG5cbiAgZ2V0IHNraXBGaWx0ZXJGbk9uRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5za2lwRmlsdGVyRm5PbkVtcHR5ID8/IHRydWU7XG4gIH1cblxuICBnZXQgX2ZpbHRlclZhbHVlcygpOiBQaWNrYWJsZVZhbHVlRmllbGRGaWx0ZXJGdW5jdGlvbjxULCBNPiB7XG4gICAgbGV0IGZuOiBQaWNrYWJsZVZhbHVlRmllbGRGaWx0ZXJGdW5jdGlvbjxULCBNPjtcblxuICAgIGlmICh0aGlzLnNraXBGaWx0ZXJGbk9uRW1wdHkpIHtcbiAgICAgIGZuID0gKGZpbHRlclRleHQ6IE1heWJlPHN0cmluZz4sIHZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPFRbXT4gPT4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPFRbXT47XG5cbiAgICAgICAgaWYgKGZpbHRlclRleHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpbHRlclZhbHVlc0ZuKGZpbHRlclRleHQsIHZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gb2YodmFsdWVzLm1hcCgoeCkgPT4geC52YWx1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGZuID0gdGhpcy5maWx0ZXJWYWx1ZXNGbjtcbiAgICB9XG5cbiAgICByZXR1cm4gZm47XG4gIH1cblxuICBnZXQgc2hvd1RleHRGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5zaG93VGV4dEZpbHRlciA/PyBCb29sZWFuKHRoaXMucGlja2FibGVGaWVsZC5maWx0ZXJWYWx1ZXMpO1xuICB9XG5cbiAgZ2V0IGxvYWRWYWx1ZXNGbigpOiBQaWNrYWJsZVZhbHVlRmllbGRMb2FkVmFsdWVzRnVuY3Rpb248VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQubG9hZFZhbHVlcztcbiAgfVxuXG4gIGdldCB2YWx1ZXMoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VmFsdWVPbkZvcm1Db250cm9sKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpID8/IFtdO1xuICB9XG5cbiAgZ2V0IGZvb3RlckNvbmZpZygpOiBNYXliZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLmZvb3RlckNvbmZpZztcbiAgfVxuXG4gIGdldCByZWZyZXNoRGlzcGxheVZhbHVlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5yZWZyZXNoRGlzcGxheVZhbHVlcyQ7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXM6IFRbXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPltdKSA9PiBzdWNjZXNzUmVzdWx0KGRpc3BsYXlWYWx1ZXMpKSxcbiAgICAgIHN0YXJ0V2l0aEJlZ2luTG9hZGluZygpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgZ2V0RGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5SGFzaE1hcC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGRpc3BsYXlNYXApID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGluZ1Jlc3VsdCA9IHZhbHVlcy5tYXAoKHgpID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0gYXMgW1BpY2thYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBIXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgSCwgUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT4sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+XSk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaW5jbHVkZWQ6IGhhc0Rpc3BsYXksXG4gICAgICAgICAgZXhjbHVkZWQ6IG5lZWRzRGlzcGxheVxuICAgICAgICB9ID0gc2VwYXJhdGVWYWx1ZXMobWFwcGluZ1Jlc3VsdCwgKHgpID0+IEJvb2xlYW4oeFszXSkpO1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuXG4gICAgICAgICAgcmV0dXJuIGRpc3BsYXlWYWx1ZXNPYnMucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKGRpc3BsYXlSZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlSZXN1bHRzV2l0aEhhc2g6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10gPSBkaXNwbGF5UmVzdWx0cy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAoeCBhcyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPikuX2hhc2ggPSB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geCBhcyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPjtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbWFwIHRvIHJlLWpvaW4gdmFsdWVzIGxhdGVyLlxuICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5UmVzdWx0c01hcHBpbmc6IFtQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPiwgSF1bXSA9IGRpc3BsYXlSZXN1bHRzV2l0aEhhc2gubWFwKCh4KSA9PiBbeCwgeC5faGFzaF0pO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4SGFzaE1hcCA9IG5ldyBNYXAoZGlzcGxheVJlc3VsdHNNYXBwaW5nLm1hcCgoW3gsIGhhc2hdKSA9PiBbaGFzaCwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIGRpc3BsYXlSZXN1bHRzTWFwcGluZy5mb3JFYWNoKChbeCwgaGFzaF0pID0+IGRpc3BsYXlNYXAuc2V0KGhhc2gsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFszXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoYXQuXG4gICAgICAgICAgcmV0dXJuIG9mKGhhc0Rpc3BsYXkubWFwKCh4KSA9PiB4WzNdKSkgYXMgT2JzZXJ2YWJsZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPltdPjtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcblxuICAgIGlmICh0aGlzLnJlZnJlc2hEaXNwbGF5VmFsdWVzJCAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kaXNwbGF5SGFzaE1hcC5uZXh0KG5ldyBNYXAoKSkpO1xuICAgIH1cblxuICAgIC8vIEZvY3VzIGFmdGVyIGZpbmlzaGVkIGxvYWRpbmcgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgIHRoaXMuY29udGV4dC5sb2FkaW5nJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlbGF5KDEwKSxcbiAgICAgICAgZmlsdGVyKCh4KSA9PiB4KSxcbiAgICAgICAgZmlyc3QoKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyTWF0SW5wdXQ/LmZvY3VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fZGlzcGxheUhhc2hNYXAuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuZmlsdGVyUmVzdWx0c0NvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBBcnJheU9yVmFsdWU8VD4pOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlOiBUW10gPSB2YWx1ZU9uRm9ybUNvbnRyb2wgIT0gbnVsbCA/IChbXSBhcyBUW10pLmNvbmNhdCh2YWx1ZU9uRm9ybUNvbnRyb2wpIDogW107IC8vIEFsd2F5cyByZXR1cm4gYW4gYXJyYXkuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgYWRkVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICBsZXQgbmV3VmFsdWVzOiBUW107XG5cbiAgICBpZiAodGhpcy5waWNrT25seU9uZSkge1xuICAgICAgbmV3VmFsdWVzID0gW3ZhbHVlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWVzID0gWy4uLnRoaXMudmFsdWVzLCB2YWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZXMobmV3VmFsdWVzKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgY29uc3QgaGFzaFRvRmlsdGVyID0gdGhpcy5oYXNoRm9yVmFsdWUodmFsdWUpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudmFsdWVzLmZpbHRlcigoeCkgPT4gdGhpcy5oYXNoRm9yVmFsdWUoeCkgIT09IGhhc2hUb0ZpbHRlcik7XG4gICAgdGhpcy5zZXRWYWx1ZXModmFsdWVzKTtcbiAgfVxuXG4gIHNldFZhbHVlcyh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaWx0ZXJVbmlxdWVWYWx1ZXModmFsdWVzLCB0aGlzLmhhc2hGb3JWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGlja09ubHlPbmUpIHtcbiAgICAgIHZhbHVlcyA9IFt2YWx1ZXNbMF1dLmZpbHRlcigoeCkgPT4geCAhPSBudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVzKTtcbiAgfVxuXG4gIC8vIE1BUks6IEludGVybmFsXG4gIHByb3RlY3RlZCBfc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgbGV0IG5ld1ZhbHVlOiBUIHwgVFtdID0gdmFsdWVzO1xuXG4gICAgaWYgKCF0aGlzLmFzQXJyYXlWYWx1ZSkge1xuICAgICAgbmV3VmFsdWUgPSBbdmFsdWVzWzBdXS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbClbMF07XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICB9XG59XG4iXX0=
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWdCLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsK0JBQStCLEVBQUUsbUNBQW1DLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbE4sT0FBTyxFQUFnQixtQkFBbUIsRUFBRSxrQkFBa0IsRUFBdUIsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xMLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBcUZ4Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxxQ0FBNkYsU0FBUSxTQUFrRTtJQUVsTCxjQUFjLENBQVk7SUFFakIsU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFD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USxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzt3R0EvWFUscUNBQXFDOzRGQUFyQyxxQ0FBcUM7OzRGQUFyQyxxQ0FBcUM7a0JBRGpELFNBQVM7OEJBR1IsY0FBYztzQkFEYixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSwgc3VjY2Vzc1Jlc3VsdCwgbWFwTG9hZGluZ1N0YXRlUmVzdWx0cywgZmlsdGVyTWF5YmUsIExpc3RMb2FkaW5nU3RhdGVDb250ZXh0SW5zdGFuY2UsIG1hcElzTGlzdExvYWRpbmdTdGF0ZVdpdGhFbXB0eVZhbHVlLCBzdGFydFdpdGhCZWdpbkxvYWRpbmcsIFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgUHJpbWF0aXZlS2V5LCBjb252ZXJ0TWF5YmVUb0FycmF5LCBtYWtlVmFsdWVzR3JvdXBNYXAsIE1heWJlLCBBcnJheU9yVmFsdWUsIHNlcGFyYXRlVmFsdWVzLCBmaWx0ZXJVbmlxdWVWYWx1ZXMgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBmaWx0ZXIsIG1hcCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwLCBzdGFydFdpdGgsIHNoYXJlUmVwbGF5LCBtZXJnZU1hcCwgZmlyc3QsIGRlbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5RnVuY3Rpb24sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSwgUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRnVuY3Rpb24sIFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGdW5jdGlvbiwgUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0Z1bmN0aW9uLCBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZSB9IGZyb20gJy4vcGlja2FibGUnO1xuaW1wb3J0IHsgRGJ4VmFsdWVMaXN0SXRlbSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgY2FtZWxDYXNlIH0gZnJvbSAnY2hhbmdlLWNhc2UnO1xuXG4vKipcbiAqIFdyYXBzIHRoZSBzZWxlY3RlZCBzdGF0ZSB3aXRoIHRoZSBpdGVtcy5cbiAqL1xuZXhwb3J0IHR5cGUgUGlja2FibGVJdGVtRmllbGRJdGVtPFQsIE0gPSB1bmtub3duPiA9IERieFZhbHVlTGlzdEl0ZW08UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+PjtcblxuZXhwb3J0IHR5cGUgUGlja2FibGVJdGVtRmllbGRJdGVtU29ydEZuPFQsIE0gPSB1bmtub3duPiA9IChpdGVtczogUGlja2FibGVJdGVtRmllbGRJdGVtPFQsIE0+W10pID0+IFBpY2thYmxlSXRlbUZpZWxkSXRlbTxULCBNPltdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5PiBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICAvKipcbiAgICogTG9hZHMgYWxsIHBpY2thYmxlIHZhbHVlcy5cbiAgICovXG4gIGxvYWRWYWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZExvYWRWYWx1ZXNGdW5jdGlvbjxULCBNPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGJ1aWxkaW5nIGEgZGlzcGxheSB2YWx1ZSBnaXZlbiB0aGUgaW5wdXQuXG4gICAqL1xuICBkaXNwbGF5Rm9yVmFsdWU6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlGdW5jdGlvbjxULCBNPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGhhc2hpbmcgZGlzcGxheSB2YWx1ZXMgYW5kIG9taXR0aW5nIHJlcGVhdCB2YWx1ZXMuXG4gICAqXG4gICAqIElmIGhhc2hGb3JWYWx1ZSBpcyBub3QgcHJvdmlkZWQsIHRoZSB2YWx1ZSdzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBpcy5cbiAgICovXG4gIGhhc2hGb3JWYWx1ZT86IFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGdW5jdGlvbjxULCBIPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGZpbHRlcmluZyB2YWx1ZXMgdmlhIHRoZSBzZWFyY2ggdGV4dC5cbiAgICovXG4gIGZpbHRlclZhbHVlcz86IFBpY2thYmxlVmFsdWVGaWVsZEZpbHRlckZ1bmN0aW9uPFQsIE0+O1xuICAvKipcbiAgICogVXNlZCBmb3Igc29ydGluZyB0aGUgaXRlbXMgYmVmb3JlIHRoZXkgYXJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogU2hvdWxkIG9ubHkgYmUgdXNlZCB0byBzb3J0IHZhbHVlcy5cbiAgICovXG4gIHNvcnRJdGVtcz86IFBpY2thYmxlSXRlbUZpZWxkSXRlbVNvcnRGbjxULCBNPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IG11bHRpcGxlIGl0ZW1zIHRvIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgbXVsdGlTZWxlY3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2V0L2dldCB2YWx1ZXMgYXMgYW4gYXJyYXkgb3IgYSBzaW5nbGUgdmFsdWUuIElmIHNldCBmYWxzZSwgbXVsdGlTZWxlY3QgaXMgaWdub3JlZC5cbiAgICovXG4gIGFzQXJyYXlWYWx1ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSB0ZXh0IGZpbHRlci4gVHJ1ZSBieSBkZWZhdWx0IGlmIGZpbHRlclZhbHVlcyBpcyBwcm92aWRlZC5cbiAgICovXG4gIHNob3dUZXh0RmlsdGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdGhlIGZpbHRlciBmdW5jdGlvbiB3aGVuIHRoZSBpbnB1dCBpcyBlbXB0eS5cbiAgICpcbiAgICogVHJ1ZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgc2tpcEZpbHRlckZuT25FbXB0eT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGaWx0ZXIgTGFiZWxcbiAgICovXG4gIGZpbHRlckxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHZhbHVlcyB0aGF0IGNhbiBiZSBwaWNrZWRcbiAgICovXG4gIG1heFBpY2tzPzogbnVtYmVyO1xuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24vaGludCB0byBkaXNwbGF5LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGb290ZXIgRGlzcGxheVxuICAgKi9cbiAgZm9vdGVyQ29uZmlnPzogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnO1xuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgc2VsZWN0aW9uIG1vZGUgb2YgdGhlIGxpc3QgdG8gXCJ2aWV3XCIgbW9kZSBvbiBkaXNhYmxlZCwgaGlkaW5nIHRoZSBzZWxlY3Rpb24gYm94ZXMuXG4gICAqL1xuICBjaGFuZ2VTZWxlY3Rpb25Nb2RlVG9WaWV3T25EaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIG9ic2VydmFibGUgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGNsZWFyaW5nIG9mIGFsbCBjYWNoZWQgZGlzcGxheSB2YWx1ZXMuXG4gICAqL1xuICByZWZyZXNoRGlzcGxheVZhbHVlcyQ/OiBPYnNlcnZhYmxlPHVua25vd24+O1xufVxuXG4vKipcbiAqIERpc3BsYXllZCB2YWx1ZSB3aXRoIHRoZSBjb21wdXRlZCBoYXNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5PiBleHRlbmRzIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPiB7XG4gIF9oYXNoOiBIO1xufVxuXG4vKipcbiAqIFVzZWQgZm9yIHBpY2tpbmcgcHJlLXNldCB2YWx1ZXMgdXNpbmcgaXRlbXMgYXMgdGhlIHByZXNlbnRhdGlvbi5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQWJzdHJhY3REYnhQaWNrYWJsZUl0ZW1GaWVsZERpcmVjdGl2ZTxULCBNID0gdW5rbm93biwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPFBpY2thYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+Pj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlck1hdElucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgZmlsdGVyTWF0SW5wdXQhOiBNYXRJbnB1dDtcblxuICByZWFkb25seSBpbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHByaXZhdGUgX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2Rpc3BsYXlIYXNoTWFwID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8SCwgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+Pj4obmV3IE1hcCgpKTtcblxuICByZWFkb25seSBmaWx0ZXJJbnB1dFZhbHVlJDogT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PiA9IHRoaXMuaW5wdXRDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKTtcbiAgcmVhZG9ubHkgZmlsdGVySW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4gPSB0aGlzLmZpbHRlcklucHV0VmFsdWUkLnBpcGUoZGVib3VuY2VUaW1lKDIwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBsb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10+PiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgZmlyc3QoKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMubG9hZFZhbHVlc0ZuKCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXMoeCkpLFxuICAgICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKVxuICAgICAgKVxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBfZm9ybUNvbnRyb2xWYWx1ZSQ6IE9ic2VydmFibGU8VCB8IFRbXT4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSksIHNoYXJlUmVwbGF5KDEpKSkpO1xuXG4gIHJlYWRvbmx5IGxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQ6IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT4gPSB0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlc1N0YXRlJC5waXBlKG1hcCgoeCkgPT4geD8udmFsdWUgPz8gW10pKTtcblxuICAvKipcbiAgICogQ3VycmVudCB2YWx1ZXMgaW4gdGhlIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuX2Zvcm1Db250cm9sVmFsdWUkLnBpcGUobWFwKGNvbnZlcnRNYXliZVRvQXJyYXkpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgdmFsdWVzIHdpdGggdGhlaXIgZGlzcGxheSB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFtkaXNwbGF5VmFsdWVzLCBjdXJyZW50VmFsdWVzXSkgPT4ge1xuICAgICAgY29uc3QgZGlzcGxheVZhbHVlc01hcCA9IG1ha2VWYWx1ZXNHcm91cE1hcChkaXNwbGF5VmFsdWVzLCAoeCkgPT4gdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSkpO1xuICAgICAgY29uc3QgdmFsdWVzTm90SW5EaXNwbGF5TWFwOiBUW10gPSBbXTtcblxuICAgICAgY3VycmVudFZhbHVlcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuaGFzaEZvclZhbHVlKHgpO1xuICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWU6IE1heWJlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+PiA9IGRpc3BsYXlWYWx1ZXNNYXAuZ2V0KGtleSk/LlswXTtcblxuICAgICAgICBpZiAoIWRpc3BsYXlWYWx1ZSkge1xuICAgICAgICAgIHZhbHVlc05vdEluRGlzcGxheU1hcC5wdXNoKHgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbHVlc05vdEluRGlzcGxheU1hcC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JWYWx1ZXModmFsdWVzTm90SW5EaXNwbGF5TWFwKS5waXBlKFxuICAgICAgICAgIG1hcCgoeCkgPT5cbiAgICAgICAgICAgIG1hcExvYWRpbmdTdGF0ZVJlc3VsdHMoeCwge1xuICAgICAgICAgICAgICBtYXBWYWx1ZTogKGxvYWRlZFZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXSkgPT4ge1xuICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlcy5mb3JFYWNoKCh4KSA9PiAoeC5pc1Vua25vd24gPSB4LmlzVW5rbm93biA/PyB0cnVlKSk7IC8vIEFzc2lnbiB1bmtub3duIGZsYWcuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kaXNwbGF5VmFsdWVzLCAuLi5sb2FkZWRWYWx1ZXNdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvZihzdWNjZXNzUmVzdWx0KGRpc3BsYXlWYWx1ZXMpKTtcbiAgICAgIH1cbiAgICB9KVxuICApO1xuXG4gIC8qKlxuICAgKiBSZXN1bHRzIHRvIGJlIGRpc3BsYXllZCBpZiBmaWx0ZXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcmVkU2VhcmNoUmVzdWx0c1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT4+ID0gdGhpcy5sb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh2YWx1ZXMpID0+XG4gICAgICB0aGlzLmZpbHRlcklucHV0VmFsdWVTdHJpbmckLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodGV4dCkgPT5cbiAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9maWx0ZXJWYWx1ZXModGV4dCwgdmFsdWVzKSwgdGhpcy5kaXNwbGF5VmFsdWVzU3RhdGUkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3ZhbHVlcywgZGlzcGxheVN0YXRlXSkgPT5cbiAgICAgICAgICAgICAgbWFwTG9hZGluZ1N0YXRlUmVzdWx0cyhkaXNwbGF5U3RhdGUsIHtcbiAgICAgICAgICAgICAgICBtYXBWYWx1ZTogKGRpc3BsYXlWYWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10pID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlSGFzaFNldCA9IG5ldyBTZXQodmFsdWVzLm1hcCgoeCkgPT4gdGhpcy5oYXNoRm9yVmFsdWUoeCkpKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWVzLmZpbHRlcigoeCkgPT4gIXguaXNVbmtub3duICYmIHZhbHVlSGFzaFNldC5oYXMoeC5faGFzaCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaWx0ZXJlZFNlYXJjaFJlc3VsdHMkOiBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10+ID0gdGhpcy5maWx0ZXJlZFNlYXJjaFJlc3VsdHNTdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LnZhbHVlKSxcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPFBpY2thYmxlSXRlbUZpZWxkSXRlbTxULCBNPltdPiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZmlsdGVyZWRTZWFyY2hSZXN1bHRzJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICBtYXAoKFtkaXNwbGF5VmFsdWVzLCB2YWx1ZXNdKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEhhc2hWYWx1ZXNTZXQgPSBuZXcgU2V0KHZhbHVlcy5tYXAoKHgpID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpKSk7XG4gICAgICBsZXQgaXRlbXM6IFBpY2thYmxlSXRlbUZpZWxkSXRlbTxULCBNPltdID0gZGlzcGxheVZhbHVlcy5tYXAoKHgpID0+ICh7IGl0ZW1WYWx1ZTogeCwgc2VsZWN0ZWQ6IHNlbGVjdGVkSGFzaFZhbHVlc1NldC5oYXMoeC5faGFzaCkgfSkpO1xuXG4gICAgICBpZiAodGhpcy5zb3J0SXRlbXMpIHtcbiAgICAgICAgaXRlbXMgPSB0aGlzLnNvcnRJdGVtcyhpdGVtcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGl0ZW1zTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVJdGVtRmllbGRJdGVtPFQ+W10+PiA9IHRoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgdGhpcy5pdGVtcyQucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKCh4KSA9PiBzdWNjZXNzUmVzdWx0KHgpKSxcbiAgICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIC8qKlxuICAgKiBDb250ZXh0IHVzZWQgZm9yIG1hbmFnaW5nIHRoZSBsb2FkaW5nIG9mIGl0ZW1zLCBvciB3aGVuIHRoZSBjdXJyZW50IHJlc3VsdHMgY2hhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dCA9IG5ldyBMaXN0TG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlKHsgb2JzOiB0aGlzLml0ZW1zTG9hZGluZ1N0YXRlJCwgc2hvd0xvYWRpbmdPbk5vVmFsdWU6IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IGZpbHRlckl0ZW1zTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVJdGVtRmllbGRJdGVtPFQ+W10+PiA9IHRoaXMuaXRlbXMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBzdWNjZXNzUmVzdWx0KHgpKSxcbiAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBDb250ZXh0IHVzZWQgZm9yIHNlYXJjaGluZy9maWx0ZXJpbmcuXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJSZXN1bHRzQ29udGV4dCA9IG5ldyBMaXN0TG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlKHsgb2JzOiB0aGlzLmZpbHRlcmVkU2VhcmNoUmVzdWx0c1N0YXRlJCwgc2hvd0xvYWRpbmdPbk5vVmFsdWU6IHRydWUgfSk7XG5cbiAgcmVhZG9ubHkgbm9JdGVtc0F2YWlsYWJsZSQgPSB0aGlzLmZpbHRlckl0ZW1zTG9hZGluZ1N0YXRlJC5waXBlKG1hcElzTGlzdExvYWRpbmdTdGF0ZVdpdGhFbXB0eVZhbHVlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gIGdldCByZWFkb25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgaXNSZWFkb25seU9yRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBwaWNrYWJsZUZpZWxkKCk6IFBpY2thYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIGdldCBtdWx0aVNlbGVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLm11bHRpU2VsZWN0ID8/IHRydWU7XG4gIH1cblxuICBnZXQgYXNBcnJheVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuYXNBcnJheVZhbHVlID8/IHRydWU7XG4gIH1cblxuICBnZXQgcGlja09ubHlPbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXNBcnJheVZhbHVlID09PSBmYWxzZSB8fCB0aGlzLm11bHRpU2VsZWN0ID09PSBmYWxzZTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJMYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLmZpbHRlckxhYmVsO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5uYW1lID8/IGNhbWVsQ2FzZSh0aGlzLmxhYmVsID8/ICh0aGlzLmtleSBhcyBzdHJpbmcpKTtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5sYWJlbDtcbiAgfVxuXG4gIGdldCBhdXRvY29tcGxldGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMucHJvcHMuYXR0cmlidXRlcz8uWydhdXRvY29tcGxldGUnXSA/PyB0aGlzLmtleSkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0IGNoYW5nZVNlbGVjdGlvbk1vZGVUb1ZpZXdPbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuY2hhbmdlU2VsZWN0aW9uTW9kZVRvVmlld09uRGlzYWJsZWQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgc29ydEl0ZW1zKCk6IE1heWJlPFBpY2thYmxlSXRlbUZpZWxkSXRlbVNvcnRGbjxULCBNPj4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuc29ydEl0ZW1zO1xuICB9XG5cbiAgZ2V0IGhhc2hGb3JWYWx1ZSgpOiBQaWNrYWJsZVZhbHVlRmllbGRIYXNoRnVuY3Rpb248VCwgSD4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuaGFzaEZvclZhbHVlID8/ICgoeCkgPT4geCBhcyB1bmtub3duIGFzIEgpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlGb3JWYWx1ZSgpOiBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5RnVuY3Rpb248VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuZGlzcGxheUZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3dGaWx0ZXJJbnB1dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBpY2thYmxlRmllbGQuZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJWYWx1ZXNGbigpOiBQaWNrYWJsZVZhbHVlRmllbGRGaWx0ZXJGdW5jdGlvbjxULCBNPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5maWx0ZXJWYWx1ZXMgPz8gKChfLCB4KSA9PiBvZih4Lm1hcCgoeSkgPT4geS52YWx1ZSkpKTtcbiAgfVxuXG4gIGdldCBza2lwRmlsdGVyRm5PbkVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuc2tpcEZpbHRlckZuT25FbXB0eSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IF9maWx0ZXJWYWx1ZXMoKTogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRnVuY3Rpb248VCwgTT4ge1xuICAgIGxldCBmbjogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRnVuY3Rpb248VCwgTT47XG5cbiAgICBpZiAodGhpcy5za2lwRmlsdGVyRm5PbkVtcHR5KSB7XG4gICAgICBmbiA9IChmaWx0ZXJUZXh0OiBNYXliZTxzdHJpbmc+LCB2YWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKTogT2JzZXJ2YWJsZTxUW10+ID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgICAgIGlmIChmaWx0ZXJUZXh0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJWYWx1ZXNGbihmaWx0ZXJUZXh0LCB2YWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IG9mKHZhbHVlcy5tYXAoKHgpID0+IHgudmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBmbiA9IHRoaXMuZmlsdGVyVmFsdWVzRm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgZ2V0IHNob3dUZXh0RmlsdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuc2hvd1RleHRGaWx0ZXIgPz8gQm9vbGVhbih0aGlzLnBpY2thYmxlRmllbGQuZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBsb2FkVmFsdWVzRm4oKTogUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0Z1bmN0aW9uPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLmxvYWRWYWx1ZXM7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBmb290ZXJDb25maWcoKTogTWF5YmU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5mb290ZXJDb25maWc7XG4gIH1cblxuICBnZXQgcmVmcmVzaERpc3BsYXlWYWx1ZXMkKCkge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQucmVmcmVzaERpc3BsYXlWYWx1ZXMkO1xuICB9XG5cbiAgbG9hZERpc3BsYXlWYWx1ZXNGb3JWYWx1ZXModmFsdWVzOiBUW10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzLm1hcCgodmFsdWUpID0+ICh7IHZhbHVlIH0pKSk7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0sIEg+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldIGFzIFtQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgSF0pLm1hcCgoW3gsIGhhc2hdLCBpKSA9PiBbaSwgaGFzaCwgeCwgZGlzcGxheU1hcC5nZXQoaGFzaCldIGFzIFtudW1iZXIsIEgsIFBpY2thYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPl0pO1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGluY2x1ZGVkOiBoYXNEaXNwbGF5LFxuICAgICAgICAgIGV4Y2x1ZGVkOiBuZWVkc0Rpc3BsYXlcbiAgICAgICAgfSA9IHNlcGFyYXRlVmFsdWVzKG1hcHBpbmdSZXN1bHQsICh4KSA9PiBCb29sZWFuKHhbM10pKTtcblxuICAgICAgICBpZiAobmVlZHNEaXNwbGF5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAvLyBHbyBnZXQgdGhlIGRpc3BsYXkgdmFsdWUuXG4gICAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlc09icyA9IHRoaXMuZGlzcGxheUZvclZhbHVlKG5lZWRzRGlzcGxheS5tYXAoKHgpID0+IHhbMl0pKTtcblxuICAgICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5UmVzdWx0c1dpdGhIYXNoOiBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxULCBNLCBIPltdID0gZGlzcGxheVJlc3VsdHMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgKHggYXMgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD4pLl9oYXNoID0gdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHggYXMgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD47XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD4sIEhdW10gPSBkaXNwbGF5UmVzdWx0c1dpdGhIYXNoLm1hcCgoeCkgPT4gW3gsIHguX2hhc2hdKTtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleEhhc2hNYXAgPSBuZXcgTWFwKGRpc3BsYXlSZXN1bHRzTWFwcGluZy5tYXAoKFt4LCBoYXNoXSkgPT4gW2hhc2gsIHhdKSk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXlNYXAuIE5vIG5lZWQgdG8gcHVzaCBhbiB1cGRhdGUgbm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0c01hcHBpbmcuZm9yRWFjaCgoW3gsIGhhc2hdKSA9PiBkaXNwbGF5TWFwLnNldChoYXNoLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoKHgpID0+IHhbM10gPz8gdmFsdWVJbmRleEhhc2hNYXAuZ2V0KHhbMV0pKTtcblxuICAgICAgICAgICAgICAvLyBSZXR1cm4gZGlzcGxheSB2YWx1ZXMuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdEaXNwbGF5VmFsdWVzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGF0LlxuICAgICAgICAgIHJldHVybiBvZihoYXNEaXNwbGF5Lm1hcCgoeCkgPT4geFszXSkpIGFzIE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VCwgTSwgSD5bXT47XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG5cbiAgICBpZiAodGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fY2xlYXJEaXNwbGF5SGFzaE1hcFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnJlZnJlc2hEaXNwbGF5VmFsdWVzJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZGlzcGxheUhhc2hNYXAubmV4dChuZXcgTWFwKCkpKTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBhZnRlciBmaW5pc2hlZCBsb2FkaW5nIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICB0aGlzLmNvbnRleHQubG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWxheSgxMCksXG4gICAgICAgIGZpbHRlcigoeCkgPT4geCksXG4gICAgICAgIGZpcnN0KClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlck1hdElucHV0Py5mb2N1cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLmZpbHRlclJlc3VsdHNDb250ZXh0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlT25Gb3JtQ29udHJvbDogQXJyYXlPclZhbHVlPFQ+KTogVFtdIHtcbiAgICBjb25zdCB2YWx1ZTogVFtdID0gdmFsdWVPbkZvcm1Db250cm9sICE9IG51bGwgPyAoW10gYXMgVFtdKS5jb25jYXQodmFsdWVPbkZvcm1Db250cm9sKSA6IFtdOyAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGFkZFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgbGV0IG5ld1ZhbHVlczogVFtdO1xuXG4gICAgaWYgKHRoaXMucGlja09ubHlPbmUpIHtcbiAgICAgIG5ld1ZhbHVlcyA9IFt2YWx1ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlcyA9IFsuLi50aGlzLnZhbHVlcywgdmFsdWVdO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVzKG5ld1ZhbHVlcyk7XG4gIH1cblxuICByZW1vdmVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IGhhc2hUb0ZpbHRlciA9IHRoaXMuaGFzaEZvclZhbHVlKHZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHgpID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpICE9PSBoYXNoVG9GaWx0ZXIpO1xuICAgIHRoaXMuc2V0VmFsdWVzKHZhbHVlcyk7XG4gIH1cblxuICBzZXRWYWx1ZXModmFsdWVzOiBUW10pOiB2b2lkIHtcbiAgICAvLyBVc2UgdG8gZmlsdGVyIG5vbi11bmlxdWUgdmFsdWVzLlxuICAgIGlmICh0aGlzLmhhc2hGb3JWYWx1ZSkge1xuICAgICAgdmFsdWVzID0gZmlsdGVyVW5pcXVlVmFsdWVzKHZhbHVlcywgdGhpcy5oYXNoRm9yVmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBpY2tPbmx5T25lKSB7XG4gICAgICB2YWx1ZXMgPSBbdmFsdWVzWzBdXS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlcyk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBwcm90ZWN0ZWQgX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIGxldCBuZXdWYWx1ZTogVCB8IFRbXSA9IHZhbHVlcztcblxuICAgIGlmICghdGhpcy5hc0FycmF5VmFsdWUpIHtcbiAgICAgIG5ld1ZhbHVlID0gW3ZhbHVlc1swXV0uZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpWzBdO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxufVxuIl19
|
|
@@ -16,8 +16,8 @@ import { DbxRouterAnchorModule, DbxTextModule, DbxLoadingModule, DbxButtonModule
|
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
import * as i1 from "@ngx-formly/core";
|
|
18
18
|
export class DbxFormFormlyPickableFieldModule {
|
|
19
|
-
static
|
|
20
|
-
static
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxFormFormlyPickableFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DbxFormFormlyPickableFieldModule, declarations: [DbxPickableChipListFieldComponent, DbxPickableListFieldComponent, DbxPickableListFieldItemListComponent, DbxPickableListFieldItemListViewComponent, DbxPickableListFieldItemListViewItemComponent], imports: [CommonModule,
|
|
21
21
|
DbxTextModule,
|
|
22
22
|
DbxLoadingModule,
|
|
23
23
|
DbxButtonModule,
|
|
@@ -33,8 +33,8 @@ export class DbxFormFormlyPickableFieldModule {
|
|
|
33
33
|
MatChipsModule,
|
|
34
34
|
MatIconModule,
|
|
35
35
|
DbxInjectionComponentModule,
|
|
36
|
-
DbxListLayoutModule, i1.FormlyModule] });
|
|
37
|
-
static
|
|
36
|
+
DbxListLayoutModule, i1.FormlyModule] });
|
|
37
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxFormFormlyPickableFieldModule, imports: [CommonModule,
|
|
38
38
|
DbxTextModule,
|
|
39
39
|
DbxLoadingModule,
|
|
40
40
|
DbxButtonModule,
|
|
@@ -56,7 +56,7 @@ export class DbxFormFormlyPickableFieldModule {
|
|
|
56
56
|
{ name: 'pickablechipfield', component: DbxPickableChipListFieldComponent, wrappers: ['form-field'] },
|
|
57
57
|
{ name: 'pickablelistfield', component: DbxPickableListFieldComponent, wrappers: ['form-field'] }
|
|
58
58
|
]
|
|
59
|
-
})] });
|
|
59
|
+
})] });
|
|
60
60
|
}
|
|
61
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxFormFormlyPickableFieldModule, decorators: [{
|
|
62
62
|
type: NgModule,
|
|
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
90
90
|
exports: []
|
|
91
91
|
}]
|
|
92
92
|
}] });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHFDQUFxQyxFQUFFLHlDQUF5QyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDak4sT0FBTyxFQUFFLGlCQUFpQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBK0JoSSxNQUFNLE9BQU8sZ0NBQWdDO3dHQUFoQyxnQ0FBZ0M7eUdBQWhDLGdDQUFnQyxpQkFINUIsaUNBQWlDLEVBQUUsNkJBQTZCLEVBQUUscUNBQXFDLEVBQUUseUNBQXlDLEVBQUUsNkNBQTZDLGFBeEI5TSxZQUFZO1lBQ1osYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsV0FBVztZQUNYLGVBQWU7WUFDZixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsY0FBYztZQUNkLGFBQWE7WUFDYiwyQkFBMkI7WUFDM0IsbUJBQW1CO3lHQVdWLGdDQUFnQyxZQTNCekMsWUFBWTtZQUNaLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLFdBQVc7WUFDWCxlQUFlO1lBQ2YsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGFBQWE7WUFDYixpQkFBaUI7WUFDakIscUJBQXFCO1lBQ3JCLGNBQWM7WUFDZCxhQUFhO1lBQ2IsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUNwQixLQUFLLEVBQUU7b0JBQ0wsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNyRyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsNkJBQTZCLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7aUJBQ2xHO2FBQ0YsQ0FBQzs7NEZBS08sZ0NBQWdDO2tCQTdCNUMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLFlBQVksQ0FBQyxRQUFRLENBQUM7NEJBQ3BCLEtBQUssRUFBRTtnQ0FDTCxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsaUNBQWlDLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0NBQ3JHLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRTs2QkFDbEc7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSw2QkFBNkIsRUFBRSxxQ0FBcUMsRUFBRSx5Q0FBeUMsRUFBRSw2Q0FBNkMsQ0FBQztvQkFDak4sT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IERieFBpY2thYmxlQ2hpcExpc3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vcGlja2FibGUuY2hpcC5maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4UGlja2FibGVMaXN0RmllbGRDb21wb25lbnQsIERieFBpY2thYmxlTGlzdEZpZWxkSXRlbUxpc3RDb21wb25lbnQsIERieFBpY2thYmxlTGlzdEZpZWxkSXRlbUxpc3RWaWV3Q29tcG9uZW50LCBEYnhQaWNrYWJsZUxpc3RGaWVsZEl0ZW1MaXN0Vmlld0l0ZW1Db21wb25lbnQgfSBmcm9tICcuL3BpY2thYmxlLmxpc3QuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IERieERhdGVQaXBlTW9kdWxlLCBEYnhJbmplY3Rpb25Db21wb25lbnRNb2R1bGUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBEYnhSb3V0ZXJBbmNob3JNb2R1bGUsIERieFRleHRNb2R1bGUsIERieExvYWRpbmdNb2R1bGUsIERieEJ1dHRvbk1vZHVsZSwgRGJ4TGlzdExheW91dE1vZHVsZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERieFRleHRNb2R1bGUsXG4gICAgRGJ4TG9hZGluZ01vZHVsZSxcbiAgICBEYnhCdXR0b25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIERieERhdGVQaXBlTW9kdWxlLFxuICAgIERieFJvdXRlckFuY2hvck1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIERieEluamVjdGlvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBEYnhMaXN0TGF5b3V0TW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB0eXBlczogW1xuICAgICAgICB7IG5hbWU6ICdwaWNrYWJsZWNoaXBmaWVsZCcsIGNvbXBvbmVudDogRGJ4UGlja2FibGVDaGlwTGlzdEZpZWxkQ29tcG9uZW50LCB3cmFwcGVyczogWydmb3JtLWZpZWxkJ10gfSxcbiAgICAgICAgeyBuYW1lOiAncGlja2FibGVsaXN0ZmllbGQnLCBjb21wb25lbnQ6IERieFBpY2thYmxlTGlzdEZpZWxkQ29tcG9uZW50LCB3cmFwcGVyczogWydmb3JtLWZpZWxkJ10gfVxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW0RieFBpY2thYmxlQ2hpcExpc3RGaWVsZENvbXBvbmVudCwgRGJ4UGlja2FibGVMaXN0RmllbGRDb21wb25lbnQsIERieFBpY2thYmxlTGlzdEZpZWxkSXRlbUxpc3RDb21wb25lbnQsIERieFBpY2thYmxlTGlzdEZpZWxkSXRlbUxpc3RWaWV3Q29tcG9uZW50LCBEYnhQaWNrYWJsZUxpc3RGaWVsZEl0ZW1MaXN0Vmlld0l0ZW1Db21wb25lbnRdLFxuICBleHBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtRm9ybWx5UGlja2FibGVGaWVsZE1vZHVsZSB7fVxuIl19
|