@skyux/list-builder-view-grids 8.0.0-alpha.6 → 8.0.0-alpha.8
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/documentation.json +82 -82
- package/esm2020/lib/modules/column-selector/column-selector-modal.component.mjs +3 -3
- package/esm2020/lib/modules/column-selector/column-selector-modal.module.mjs +4 -4
- package/esm2020/lib/modules/list-column-selector-action/list-column-selector-action.component.mjs +3 -3
- package/esm2020/lib/modules/list-column-selector-action/list-column-selector-action.module.mjs +4 -4
- package/esm2020/lib/modules/list-column-selector-action/list-column-selector-button.component.mjs +3 -3
- package/esm2020/lib/modules/list-view-grid/list-view-grid.component.mjs +38 -38
- package/esm2020/lib/modules/list-view-grid/list-view-grid.module.mjs +4 -4
- package/esm2020/lib/modules/list-view-grid/state/grid-state.rxstate.mjs +3 -3
- package/esm2020/lib/modules/list-view-grid/state/grid-state.state-node.mjs +3 -3
- package/esm2020/lib/modules/shared/sky-list-builder-view-grids-resources.module.mjs +4 -4
- package/fesm2015/skyux-list-builder-view-grids.mjs +69 -69
- package/fesm2015/skyux-list-builder-view-grids.mjs.map +1 -1
- package/fesm2020/skyux-list-builder-view-grids.mjs +69 -69
- package/fesm2020/skyux-list-builder-view-grids.mjs.map +1 -1
- package/lib/modules/list-view-grid/state/grid-state-action.type.d.ts +1 -1
- package/package.json +14 -14
|
@@ -27,9 +27,9 @@ export class SkyColumnSelectorComponent {
|
|
|
27
27
|
this.instance.save(this.newSelectedColumnIds);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
SkyColumnSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
31
|
-
SkyColumnSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
30
|
+
SkyColumnSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyColumnSelectorComponent, deps: [{ token: i1.SkyColumnSelectorContext }, { token: i2.SkyModalInstance }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
+
SkyColumnSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyColumnSelectorComponent, selector: "sky-column-selector", ngImport: i0, template: "<sky-modal>\n <sky-modal-header>\n {{ 'skyux_grid_column_picker_header' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-list\n #list\n [data]=\"context.columns\"\n [selectedIds]=\"context.selectedColumnIds\"\n (selectedIdsChange)=\"selectedColumnsChange($event)\"\n >\n <sky-list-toolbar\n [placeholder]=\"\n 'skyux_grid_column_picker_search_placeholder' | skyLibResources\n \"\n >\n </sky-list-toolbar>\n\n <sky-list-view-checklist label=\"heading\" description=\"description\">\n </sky-list-view-checklist>\n </sky-list>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n sky-cmp-id=\"apply-changes\"\n class=\"sky-btn sky-btn-primary\"\n (click)=\"applyChanges()\"\n >\n {{ 'skyux_grid_column_picker_submit' | skyLibResources }}\n </button>\n <button\n sky-cmp-id=\"cancel\"\n class=\"sky-btn sky-btn-link\"\n (click)=\"cancelChanges()\"\n >\n {{ 'skyux_grid_column_picker_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n", dependencies: [{ kind: "component", type: i2.λ5, selector: "sky-modal", inputs: ["ariaRole", "tiledBody", "ariaDescribedBy", "ariaLabelledBy"] }, { kind: "component", type: i2.λ2, selector: "sky-modal-content" }, { kind: "component", type: i2.λ3, selector: "sky-modal-footer" }, { kind: "component", type: i2.λ4, selector: "sky-modal-header" }, { kind: "component", type: i3.SkyListComponent, selector: "sky-list", inputs: ["data", "dataProvider", "defaultView", "initialTotal", "selectedIds", "sortFields", "appliedFilters", "search"], outputs: ["selectedIdsChange", "appliedFiltersChange"] }, { kind: "component", type: i3.SkyListToolbarComponent, selector: "sky-list-toolbar", inputs: ["inMemorySearchEnabled", "placeholder", "searchEnabled", "sortSelectorEnabled", "toolbarType", "searchText"] }, { kind: "component", type: i4.SkyListViewChecklistComponent, selector: "sky-list-view-checklist", inputs: ["name", "search", "label", "description", "selectMode", "showOnlySelected"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyColumnSelectorComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
34
|
args: [{ selector: 'sky-column-selector', template: "<sky-modal>\n <sky-modal-header>\n {{ 'skyux_grid_column_picker_header' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-list\n #list\n [data]=\"context.columns\"\n [selectedIds]=\"context.selectedColumnIds\"\n (selectedIdsChange)=\"selectedColumnsChange($event)\"\n >\n <sky-list-toolbar\n [placeholder]=\"\n 'skyux_grid_column_picker_search_placeholder' | skyLibResources\n \"\n >\n </sky-list-toolbar>\n\n <sky-list-view-checklist label=\"heading\" description=\"description\">\n </sky-list-view-checklist>\n </sky-list>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n sky-cmp-id=\"apply-changes\"\n class=\"sky-btn sky-btn-primary\"\n (click)=\"applyChanges()\"\n >\n {{ 'skyux_grid_column_picker_submit' | skyLibResources }}\n </button>\n <button\n sky-cmp-id=\"cancel\"\n class=\"sky-btn sky-btn-link\"\n (click)=\"cancelChanges()\"\n >\n {{ 'skyux_grid_column_picker_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n" }]
|
|
35
35
|
}], ctorParameters: function () { return [{ type: i1.SkyColumnSelectorContext }, { type: i2.SkyModalInstance }]; } });
|
|
@@ -11,20 +11,20 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
*/
|
|
12
12
|
export class SkyColumnSelectorModule {
|
|
13
13
|
}
|
|
14
|
-
SkyColumnSelectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
15
|
-
SkyColumnSelectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1
|
|
14
|
+
SkyColumnSelectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyColumnSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
SkyColumnSelectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyColumnSelectorModule, declarations: [SkyColumnSelectorComponent], imports: [CommonModule,
|
|
16
16
|
SkyI18nModule,
|
|
17
17
|
SkyModalModule,
|
|
18
18
|
SkyListModule,
|
|
19
19
|
SkyListToolbarModule,
|
|
20
20
|
SkyListViewChecklistModule] });
|
|
21
|
-
SkyColumnSelectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1
|
|
21
|
+
SkyColumnSelectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyColumnSelectorModule, imports: [CommonModule,
|
|
22
22
|
SkyI18nModule,
|
|
23
23
|
SkyModalModule,
|
|
24
24
|
SkyListModule,
|
|
25
25
|
SkyListToolbarModule,
|
|
26
26
|
SkyListViewChecklistModule] });
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyColumnSelectorModule, decorators: [{
|
|
28
28
|
type: NgModule,
|
|
29
29
|
args: [{
|
|
30
30
|
declarations: [SkyColumnSelectorComponent],
|
package/esm2020/lib/modules/list-column-selector-action/list-column-selector-action.component.mjs
CHANGED
|
@@ -109,9 +109,9 @@ export class SkyListColumnSelectorActionComponent {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
SkyListColumnSelectorActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
113
|
-
SkyListColumnSelectorActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
112
|
+
SkyListColumnSelectorActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorActionComponent, deps: [{ token: i1.ListState }, { token: i2.SkyModalService }, { token: i1.ListStateDispatcher }, { token: i1.SkyListSecondaryActionsComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
+
SkyListColumnSelectorActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyListColumnSelectorActionComponent, selector: "sky-list-column-selector-action", inputs: { gridView: "gridView", helpKey: "helpKey" }, outputs: { helpOpened: "helpOpened" }, viewQueries: [{ propertyName: "columnChooserTemplate", first: true, predicate: ["columnChooser"], descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"isInGridViewAndSecondary | async\">\n <sky-list-secondary-action>\n <button type=\"button\" (click)=\"openColumnSelector()\">\n {{ 'skyux_grid_columns_button' | skyLibResources }}\n </button>\n </sky-list-secondary-action>\n</ng-container>\n\n<ng-template #columnChooser>\n <sky-list-column-selector-button\n *ngIf=\"isInGridView | async\"\n (click)=\"openColumnSelector()\"\n >\n </sky-list-column-selector-button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.λ6, selector: "sky-list-secondary-action" }, { kind: "component", type: i4.SkyListColumnSelectorButtonComponent, selector: "sky-list-column-selector-button" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] });
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorActionComponent, decorators: [{
|
|
115
115
|
type: Component,
|
|
116
116
|
args: [{ selector: 'sky-list-column-selector-action', template: "<ng-container *ngIf=\"isInGridViewAndSecondary | async\">\n <sky-list-secondary-action>\n <button type=\"button\" (click)=\"openColumnSelector()\">\n {{ 'skyux_grid_columns_button' | skyLibResources }}\n </button>\n </sky-list-secondary-action>\n</ng-container>\n\n<ng-template #columnChooser>\n <sky-list-column-selector-button\n *ngIf=\"isInGridView | async\"\n (click)=\"openColumnSelector()\"\n >\n </sky-list-column-selector-button>\n</ng-template>\n" }]
|
|
117
117
|
}], ctorParameters: function () { return [{ type: i1.ListState }, { type: i2.SkyModalService }, { type: i1.ListStateDispatcher }, { type: i1.SkyListSecondaryActionsComponent, decorators: [{
|
package/esm2020/lib/modules/list-column-selector-action/list-column-selector-action.module.mjs
CHANGED
|
@@ -13,21 +13,21 @@ import * as i0 from "@angular/core";
|
|
|
13
13
|
*/
|
|
14
14
|
export class SkyListColumnSelectorActionModule {
|
|
15
15
|
}
|
|
16
|
-
SkyListColumnSelectorActionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
17
|
-
SkyListColumnSelectorActionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1
|
|
16
|
+
SkyListColumnSelectorActionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
SkyListColumnSelectorActionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorActionModule, declarations: [SkyListColumnSelectorActionComponent,
|
|
18
18
|
SkyListColumnSelectorButtonComponent], imports: [CommonModule,
|
|
19
19
|
SkyI18nModule,
|
|
20
20
|
SkyModalModule,
|
|
21
21
|
SkyListSecondaryActionsModule,
|
|
22
22
|
SkyListToolbarModule,
|
|
23
23
|
SkyIconModule], exports: [SkyListColumnSelectorActionComponent, SkyColumnSelectorModule] });
|
|
24
|
-
SkyListColumnSelectorActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1
|
|
24
|
+
SkyListColumnSelectorActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorActionModule, imports: [CommonModule,
|
|
25
25
|
SkyI18nModule,
|
|
26
26
|
SkyModalModule,
|
|
27
27
|
SkyListSecondaryActionsModule,
|
|
28
28
|
SkyListToolbarModule,
|
|
29
29
|
SkyIconModule, SkyColumnSelectorModule] });
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorActionModule, decorators: [{
|
|
31
31
|
type: NgModule,
|
|
32
32
|
args: [{
|
|
33
33
|
declarations: [
|
package/esm2020/lib/modules/list-column-selector-action/list-column-selector-button.component.mjs
CHANGED
|
@@ -4,9 +4,9 @@ import * as i1 from "@skyux/indicators";
|
|
|
4
4
|
import * as i2 from "@skyux/i18n";
|
|
5
5
|
export class SkyListColumnSelectorButtonComponent {
|
|
6
6
|
}
|
|
7
|
-
SkyListColumnSelectorButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
8
|
-
SkyListColumnSelectorButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
7
|
+
SkyListColumnSelectorButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
+
SkyListColumnSelectorButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyListColumnSelectorButtonComponent, selector: "sky-list-column-selector-button", ngImport: i0, template: "<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_grid_columns_button' | skyLibResources\"\n [title]=\"'skyux_grid_columns_button' | skyLibResources\"\n>\n <sky-icon icon=\"columns\"></sky-icon>\n <span class=\"sky-column-selector-action-btn-text\">\n {{ 'skyux_grid_columns_toolbar_button' | skyLibResources }}\n </span>\n</button>\n", styles: [":host .sky-column-selector-action-btn-text{display:none}:host-context(.sky-responsive-container-xs) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-sm) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-column-selector-action-btn-text{display:none}@media (min-width: 768px){:host .sky-column-selector-action-btn-text{display:inline}}:host-context(.sky-responsive-container-sm) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-column-selector-action-btn-text{display:inline}\n"], dependencies: [{ kind: "component", type: i1.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }] });
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListColumnSelectorButtonComponent, decorators: [{
|
|
10
10
|
type: Component,
|
|
11
11
|
args: [{ selector: 'sky-list-column-selector-button', template: "<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_grid_columns_button' | skyLibResources\"\n [title]=\"'skyux_grid_columns_button' | skyLibResources\"\n>\n <sky-icon icon=\"columns\"></sky-icon>\n <span class=\"sky-column-selector-action-btn-text\">\n {{ 'skyux_grid_columns_toolbar_button' | skyLibResources }}\n </span>\n</button>\n", styles: [":host .sky-column-selector-action-btn-text{display:none}:host-context(.sky-responsive-container-xs) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-sm) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-column-selector-action-btn-text{display:none}@media (min-width: 768px){:host .sky-column-selector-action-btn-text{display:inline}}:host-context(.sky-responsive-container-sm) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-column-selector-action-btn-text{display:inline}\n"] }]
|
|
12
12
|
}] });
|
|
@@ -27,6 +27,40 @@ import * as i7 from "@skyux/grids";
|
|
|
27
27
|
* @deprecated List builder view grid and its features are deprecated. Use data entry grid instead. For more information, see https://developer.blackbaud.com/skyux/components/data-entry-grid.
|
|
28
28
|
*/
|
|
29
29
|
export class SkyListViewGridComponent extends ListViewComponent {
|
|
30
|
+
/**
|
|
31
|
+
* The name of the view.
|
|
32
|
+
* @required
|
|
33
|
+
*/
|
|
34
|
+
set name(value) {
|
|
35
|
+
this.viewName = value;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The observable to send commands to the grid.
|
|
39
|
+
* The commands should respect the `SkyListViewGridMessage` type.
|
|
40
|
+
*/
|
|
41
|
+
set messageStream(stream) {
|
|
42
|
+
/* istanbul ignore else */
|
|
43
|
+
if (this._messageStream) {
|
|
44
|
+
this._messageStream.unsubscribe();
|
|
45
|
+
}
|
|
46
|
+
this._messageStream = stream;
|
|
47
|
+
this.initInlineDeleteMessages();
|
|
48
|
+
}
|
|
49
|
+
get messageStream() {
|
|
50
|
+
return this._messageStream;
|
|
51
|
+
}
|
|
52
|
+
get gridHeight() {
|
|
53
|
+
/* istanbul ignore next */
|
|
54
|
+
return typeof this.height === 'number'
|
|
55
|
+
? observableOf(this.height)
|
|
56
|
+
: this.height;
|
|
57
|
+
}
|
|
58
|
+
get gridWidth() {
|
|
59
|
+
/* istanbul ignore next */
|
|
60
|
+
return typeof this.width === 'number'
|
|
61
|
+
? observableOf(this.width)
|
|
62
|
+
: this.width;
|
|
63
|
+
}
|
|
30
64
|
constructor(state, dispatcher, gridState, gridDispatcher, logger) {
|
|
31
65
|
super(state, 'Grid View');
|
|
32
66
|
this.dispatcher = dispatcher;
|
|
@@ -80,40 +114,6 @@ export class SkyListViewGridComponent extends ListViewComponent {
|
|
|
80
114
|
replacementRecommendation: 'Use data entry grid instead.',
|
|
81
115
|
});
|
|
82
116
|
}
|
|
83
|
-
/**
|
|
84
|
-
* The name of the view.
|
|
85
|
-
* @required
|
|
86
|
-
*/
|
|
87
|
-
set name(value) {
|
|
88
|
-
this.viewName = value;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* The observable to send commands to the grid.
|
|
92
|
-
* The commands should respect the `SkyListViewGridMessage` type.
|
|
93
|
-
*/
|
|
94
|
-
set messageStream(stream) {
|
|
95
|
-
/* istanbul ignore else */
|
|
96
|
-
if (this._messageStream) {
|
|
97
|
-
this._messageStream.unsubscribe();
|
|
98
|
-
}
|
|
99
|
-
this._messageStream = stream;
|
|
100
|
-
this.initInlineDeleteMessages();
|
|
101
|
-
}
|
|
102
|
-
get messageStream() {
|
|
103
|
-
return this._messageStream;
|
|
104
|
-
}
|
|
105
|
-
get gridHeight() {
|
|
106
|
-
/* istanbul ignore next */
|
|
107
|
-
return typeof this.height === 'number'
|
|
108
|
-
? observableOf(this.height)
|
|
109
|
-
: this.height;
|
|
110
|
-
}
|
|
111
|
-
get gridWidth() {
|
|
112
|
-
/* istanbul ignore next */
|
|
113
|
-
return typeof this.width === 'number'
|
|
114
|
-
? observableOf(this.width)
|
|
115
|
-
: this.width;
|
|
116
|
-
}
|
|
117
117
|
ngAfterContentInit() {
|
|
118
118
|
// Watch for selection changes and update multiselectSelectedIds for local comparison.
|
|
119
119
|
this.state
|
|
@@ -401,8 +401,8 @@ export class SkyListViewGridComponent extends ListViewComponent {
|
|
|
401
401
|
arrayA.every((value, index) => value === arrayB[index]));
|
|
402
402
|
}
|
|
403
403
|
}
|
|
404
|
-
SkyListViewGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
405
|
-
SkyListViewGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1
|
|
404
|
+
SkyListViewGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewGridComponent, deps: [{ token: i1.ListState }, { token: i1.ListStateDispatcher }, { token: i2.GridState }, { token: i3.GridStateDispatcher }, { token: i4.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
405
|
+
SkyListViewGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyListViewGridComponent, selector: "sky-list-view-grid", inputs: { name: "name", displayedColumns: "displayedColumns", hiddenColumns: "hiddenColumns", fit: "fit", width: "width", height: "height", highlightSearchText: "highlightSearchText", messageStream: "messageStream", rowHighlightedId: "rowHighlightedId", enableMultiselect: "enableMultiselect", settingsKey: "settingsKey", searchFunction: ["search", "searchFunction"] }, outputs: { rowDeleteCancel: "rowDeleteCancel", rowDeleteConfirm: "rowDeleteConfirm", selectedColumnIdsChange: "selectedColumnIdsChange" }, providers: [
|
|
406
406
|
{
|
|
407
407
|
provide: ListViewComponent,
|
|
408
408
|
useExisting: forwardRef(() => SkyListViewGridComponent),
|
|
@@ -411,7 +411,7 @@ SkyListViewGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0
|
|
|
411
411
|
GridStateDispatcher,
|
|
412
412
|
GridStateModel,
|
|
413
413
|
], queries: [{ propertyName: "columnComponents", predicate: SkyGridColumnComponent }], viewQueries: [{ propertyName: "gridComponent", first: true, predicate: SkyGridComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"active | async\">\n <sky-grid\n [columns]=\"columns | async\"\n [data]=\"items | async\"\n [enableMultiselect]=\"enableMultiselect\"\n [fit]=\"fit\"\n [height]=\"gridHeight | async\"\n [highlightText]=\"\n highlightSearchText ? (currentSearchText | async) : undefined\n \"\n [rowHighlightedId]=\"rowHighlightedId\"\n [messageStream]=\"gridMessageStream\"\n [selectedColumnIds]=\"selectedColumnIds | async\"\n [selectedRowIds]=\"multiselectSelectedIds\"\n [settingsKey]=\"settingsKey\"\n [sortField]=\"sortField | async\"\n [width]=\"gridWidth | async\"\n (multiselectSelectionChange)=\"onMultiselectSelectionChange($event)\"\n (rowDeleteCancel)=\"cancelRowDelete($event)\"\n (rowDeleteConfirm)=\"confirmRowDelete($event)\"\n (selectedColumnIdsChange)=\"columnIdsChanged($event)\"\n (sortFieldChange)=\"sortFieldChanged($event)\"\n #skyGrid\n >\n </sky-grid>\n <sky-wait [isWaiting]=\"loading | async\"> </sky-wait>\n</div>\n", styles: [":host ::ng-deep .sky-grid-heading{border-top:0!important}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking"] }, { kind: "component", type: i7.SkyGridComponent, selector: "sky-grid", inputs: ["columns", "data", "enableMultiselect", "fit", "hasToolbar", "height", "highlightText", "messageStream", "multiselectRowId", "rowHighlightedId", "selectedColumnIds", "selectedRowIds", "settingsKey", "sortField", "width"], outputs: ["columnWidthChange", "multiselectSelectionChange", "rowDeleteCancel", "rowDeleteConfirm", "selectedColumnIdsChange", "sortFieldChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
414
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
414
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewGridComponent, decorators: [{
|
|
415
415
|
type: Component,
|
|
416
416
|
args: [{ selector: 'sky-list-view-grid', providers: [
|
|
417
417
|
{
|
|
@@ -460,4 +460,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
460
460
|
type: ContentChildren,
|
|
461
461
|
args: [SkyGridColumnComponent]
|
|
462
462
|
}] } });
|
|
463
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci12aWV3LWdyaWRzL3NyYy9saWIvbW9kdWxlcy9saXN0LXZpZXctZ3JpZC9saXN0LXZpZXctZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdC1idWlsZGVyLXZpZXctZ3JpZHMvc3JjL2xpYi9tb2R1bGVzL2xpc3Qtdmlldy1ncmlkL2xpc3Qtdmlldy1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxzQkFBc0IsRUFHdEIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVoQixrQkFBa0IsRUFFbEIseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxlQUFlLEVBSWYsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFhLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFHTCxPQUFPLEVBQ1AsWUFBWSxHQUNiLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxJQUFJLGFBQWEsRUFDcEIsSUFBSSxFQUNKLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUs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ICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5R3JpZENvbHVtbkNvbXBvbmVudCxcbiAgU2t5R3JpZENvbHVtbkRlc2NyaXB0aW9uTW9kZWxDaGFuZ2UsXG4gIFNreUdyaWRDb2x1bW5IZWFkaW5nTW9kZWxDaGFuZ2UsXG4gIFNreUdyaWRDb2x1bW5Nb2RlbCxcbiAgU2t5R3JpZENvbXBvbmVudCxcbiAgU2t5R3JpZE1lc3NhZ2UsXG4gIFNreUdyaWRNZXNzYWdlVHlwZSxcbiAgU2t5R3JpZFNlbGVjdGVkUm93c01vZGVsQ2hhbmdlLFxuICBTa3lHcmlkU2VsZWN0ZWRSb3dzU291cmNlLFxufSBmcm9tICdAc2t5dXgvZ3JpZHMnO1xuaW1wb3J0IHtcbiAgTGlzdFNlYXJjaE1vZGVsLFxuICBMaXN0U2VsZWN0ZWRNb2RlbCxcbiAgTGlzdFN0YXRlLFxuICBMaXN0U3RhdGVEaXNwYXRjaGVyLFxuICBMaXN0Vmlld0NvbXBvbmVudCxcbn0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlcic7XG5pbXBvcnQgeyBBc3luY0xpc3QsIGdldFZhbHVlIH0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlci1jb21tb24nO1xuaW1wb3J0IHtcbiAgTGlzdEl0ZW1Nb2RlbCxcbiAgTGlzdFNvcnRGaWVsZFNlbGVjdG9yTW9kZWwsXG4gIGdldERhdGEsXG4gIGlzT2JzZXJ2YWJsZSxcbn0gZnJvbSAnQHNreXV4L2xpc3QtYnVpbGRlci1jb21tb24nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAgYXMgb2JzZXJ2YWJsZU1hcCxcbiAgc2NhbixcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExpc3RWaWV3R3JpZENvbHVtbnNMb2FkQWN0aW9uIH0gZnJvbSAnLi9zdGF0ZS9jb2x1bW5zL2xvYWQuYWN0aW9uJztcbmltcG9ydCB7IExpc3RWaWV3RGlzcGxheWVkR3JpZENvbHVtbnNMb2FkQWN0aW9uIH0gZnJvbSAnLi9zdGF0ZS9kaXNwbGF5ZWQtY29sdW1ucy9sb2FkLmFjdGlvbic7XG5pbXBvcnQgeyBHcmlkU3RhdGVNb2RlbCB9IGZyb20gJy4vc3RhdGUvZ3JpZC1zdGF0ZS5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkU3RhdGVEaXNwYXRjaGVyIH0gZnJvbSAnLi9zdGF0ZS9ncmlkLXN0YXRlLnJ4c3RhdGUnO1xuaW1wb3J0IHsgR3JpZFN0YXRlIH0gZnJvbSAnLi9zdGF0ZS9ncmlkLXN0YXRlLnN0YXRlLW5vZGUnO1xuaW1wb3J0IHsgU2t5TGlzdFZpZXdHcmlkTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvbGlzdC12aWV3LWdyaWQtbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lMaXN0Vmlld0dyaWRNZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvbGlzdC12aWV3LWdyaWQtbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreUxpc3RWaWV3R3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3MgfSBmcm9tICcuL3R5cGVzL2xpc3Qtdmlldy1ncmlkLXJvdy1kZWxldGUtY2FuY2VsLWFyZ3MnO1xuaW1wb3J0IHsgU2t5TGlzdFZpZXdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3MgfSBmcm9tICcuL3R5cGVzL2xpc3Qtdmlldy1ncmlkLXJvdy1kZWxldGUtY29uZmlybS1hcmdzJztcblxuLyoqXG4gKiBEaXNwbGF5cyBhIGdyaWQgZm9yIGFcbiAqIFtTS1kgVVgtdGhlbWVkIGxpc3Qgb2YgZGF0YV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2xpc3Qvb3ZlcnZpZXcpXG4gKiB1c2luZyB0aGUgW2dyaWQgY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZ3JpZCkuXG4gKiBZb3UgbXVzdCBpbnN0YWxsIGBTa3lMaXN0TW9kdWxlYCBhcyBhIGRlcGVuZGVuY3kuXG4gKiBAZGVwcmVjYXRlZCBMaXN0IGJ1aWxkZXIgdmlldyBncmlkIGFuZCBpdHMgZmVhdHVyZXMgYXJlIGRlcHJlY2F0ZWQuIFVzZSBkYXRhIGVudHJ5IGdyaWQgaW5zdGVhZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZGF0YS1lbnRyeS1ncmlkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbGlzdC12aWV3LWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC12aWV3LWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LXZpZXctZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBMaXN0Vmlld0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreUxpc3RWaWV3R3JpZENvbXBvbmVudCksXG4gICAgfSxcbiAgICBHcmlkU3RhdGUsXG4gICAgR3JpZFN0YXRlRGlzcGF0Y2hlcixcbiAgICBHcmlkU3RhdGVNb2RlbCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUxpc3RWaWV3R3JpZENvbXBvbmVudFxuICBleHRlbmRzIExpc3RWaWV3Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdmlldy5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmlld05hbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29sdW1ucyB0byBkaXNwbGF5IGJ5IGRlZmF1bHQgYmFzZWQgb24gdGhlIElEIG9yIGZpZWxkIG9mIHRoZSBpdGVtLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRpc3BsYXllZENvbHVtbnM6IEFycmF5PHN0cmluZz4gfCBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29sdW1ucyB0byBoaWRlIGJ5IGRlZmF1bHQgYmFzZWQgb24gdGhlIElEIG9yIGZpZWxkIG9mIHRoZSBpdGVtLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGRlbkNvbHVtbnM6IEFycmF5PHN0cmluZz4gfCBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBIb3cgdGhlIGdyaWQgZml0cyB0byBpdHMgcGFyZW50LiBgXCJ3aWR0aFwiYCBmaXRzIHRoZSBncmlkIHRvIHRoZSBwYXJlbnQncyBmdWxsXG4gICAqIHdpZHRoLCBhbmQgYFwic2Nyb2xsXCJgIGFsbG93cyB0aGUgZ3JpZCB0byBleGNlZWQgdGhlIHBhcmVudCdzIHdpZHRoLiBJZiB0aGUgZ3JpZCBkb2VzIG5vdCBoYXZlXG4gICAqIGVub3VnaCBjb2x1bW5zIHRvIGZpbGwgdGhlIHBhcmVudCdzIHdpZHRoLCBpdCBhbHdheXMgc3RyZXRjaGVzIHRvIHRoZSBwYXJlbnQncyBmdWxsIHdpZHRoLlxuICAgKiBAZGVmYXVsdCBcIndpZHRoXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaXQgPSAnd2lkdGgnO1xuXG4gIC8qKlxuICAgKiBUaGUgd2lkdGggb2YgdGhlIGdyaWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgd2lkdGg6IG51bWJlciB8IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAvKipcbiAgICogVGhlIGhlaWdodCBvZiB0aGUgZ3JpZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWlnaHQ6IG51bWJlciB8IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWdobGlnaHQgc2VhcmNoIHRleHQgd2l0aGluIHRoZSBncmlkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGlnaGxpZ2h0U2VhcmNoVGV4dCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBvYnNlcnZhYmxlIHRvIHNlbmQgY29tbWFuZHMgdG8gdGhlIGdyaWQuXG4gICAqIFRoZSBjb21tYW5kcyBzaG91bGQgcmVzcGVjdCB0aGUgYFNreUxpc3RWaWV3R3JpZE1lc3NhZ2VgIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lc3NhZ2VTdHJlYW0oc3RyZWFtOiBTdWJqZWN0PFNreUxpc3RWaWV3R3JpZE1lc3NhZ2U+KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5fbWVzc2FnZVN0cmVhbSkge1xuICAgICAgdGhpcy5fbWVzc2FnZVN0cmVhbS51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX21lc3NhZ2VTdHJlYW0gPSBzdHJlYW07XG5cbiAgICB0aGlzLmluaXRJbmxpbmVEZWxldGVNZXNzYWdlcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXNzYWdlU3RyZWFtKCk6IFN1YmplY3Q8U2t5TGlzdFZpZXdHcmlkTWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlU3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm93IHRvIGhpZ2hsaWdodC4gVGhlIElEIG1hdGNoZXMgdGhlIGBpZGAgcHJvcGVydHkgb2ZcbiAgICogdGhlIGBkYXRhYCBvYmplY3QuIFR5cGljYWxseSwgdGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlXG4gICAqIFtmbHlvdXQgY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZmx5b3V0KSB0b1xuICAgKiBpbmRpY2F0ZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHJvdy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dIaWdobGlnaHRlZElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBtdWx0aXNlbGVjdCBmZWF0dXJlIHRvIGRpc3BsYXkgYSBjb2x1bW4gb2YgY2hlY2tib3hlc1xuICAgKiBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBncmlkLiBNdWx0aXNlbGVjdCBhbHNvIGRpc3BsYXlzIGFuIGFjdGlvbiBiYXIgd2l0aCBidXR0b25zIHRvXG4gICAqIHNlbGVjdCBhbmQgY2xlYXIgYWxsIGNoZWNrYm94ZXMuIE11bHRpc2VsZWN0IGRlZmF1bHRzIHRvIHRoZSBgaWRgIHByb3BlcnR5IG9uIHRoZSBsaXN0J3NcbiAgICogYGRhdGFgIG9iamVjdC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmFibGVNdWx0aXNlbGVjdCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGtleSBmb3IgdGhlIFVJIENvbmZpZyBTZXJ2aWNlIHRoYXQgcmV0cmlldmVzIHN0b3JlZCBzZXR0aW5ncyBmcm9tXG4gICAqIGEgZGF0YWJhc2UuIFRoZSBzZXJ2aWNlIHNhdmVzIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHVzZXJzIGFuZCByZXR1cm5zIGBzZWxlY3RlZENvbHVtbklkc2BcbiAgICogZm9yIHRoZSBjb2x1bW5zIHRvIGRpc3BsYXkgYW5kIHRoZSBwcmVmZXJyZWQgY29sdW1uIG9yZGVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZVxuICAgKiBbc3RpY2t5IHNldHRpbmdzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZ2V0LXN0YXJ0ZWQvYWR2YW5jZWQvc3RpY2t5LXNldHRpbmdzKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXR0aW5nc0tleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNhbmNlbCB0aGUgZGVsZXRpb24gb2YgYSByb3cuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNhbmNlbCA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxTa3lMaXN0Vmlld0dyaWRSb3dEZWxldGVDYW5jZWxBcmdzPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNvbmZpcm0gdGhlIGRlbGV0aW9uIG9mIGEgcm93LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByb3dEZWxldGVDb25maXJtID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFNreUxpc3RWaWV3R3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGNvbHVtbnMgY2hhbmdlLiBUaGlzIGluY2x1ZGVzIGNoYW5nZXMgdG8gdGhlIGRpc3BsYXllZCBjb2x1bW5zIGFuZCBjaGFuZ2VzXG4gICAqIHRvIHRoZSBvcmRlciBvZiBjb2x1bW5zLiBUaGUgZXZlbnQgZW1pdHMgYW4gYXJyYXkgb2YgSURzIGZvciB0aGUgZGlzcGxheWVkIGNvbHVtbnMgdGhhdFxuICAgKiByZWZsZWN0cyB0aGUgY29sdW1uIG9yZGVyLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZENvbHVtbklkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8c3RyaW5nPj4oKTtcblxuICBAVmlld0NoaWxkKFNreUdyaWRDb21wb25lbnQpXG4gIHB1YmxpYyBncmlkQ29tcG9uZW50OiBTa3lHcmlkQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBnZXQgZ3JpZEhlaWdodCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmhlaWdodCA9PT0gJ251bWJlcidcbiAgICAgID8gb2JzZXJ2YWJsZU9mKHRoaXMuaGVpZ2h0KVxuICAgICAgOiB0aGlzLmhlaWdodDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JpZFdpZHRoKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdHlwZW9mIHRoaXMud2lkdGggPT09ICdudW1iZXInXG4gICAgICA/IG9ic2VydmFibGVPZih0aGlzLndpZHRoKVxuICAgICAgOiB0aGlzLndpZHRoO1xuICB9XG5cbiAgcHVibGljIGNvbHVtbnM6IE9ic2VydmFibGU8QXJyYXk8U2t5R3JpZENvbHVtbk1vZGVsPj47XG5cbiAgcHVibGljIHNlbGVjdGVkQ29sdW1uSWRzOiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+O1xuXG4gIHB1YmxpYyBpdGVtczogT2JzZXJ2YWJsZTxMaXN0SXRlbU1vZGVsW10+O1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIHN0cmVhbSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBpbnRlcm5hbCBncmlkIGluc3RhbmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGdyaWRNZXNzYWdlU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5R3JpZE1lc3NhZ2U+KCk7XG5cbiAgcHVibGljIGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHVibGljIHNvcnRGaWVsZDogT2JzZXJ2YWJsZTxMaXN0U29ydEZpZWxkU2VsZWN0b3JNb2RlbD47XG5cbiAgcHVibGljIGN1cnJlbnRTZWFyY2hUZXh0OiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHVibGljIG11bHRpc2VsZWN0U2VsZWN0ZWRJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzZWFyY2ggZnVuY3Rpb24gdG8gYXBwbHkgb24gdGhlIHZpZXcgZGF0YS5cbiAgICogQHBhcmFtIGRhdGEgU3BlY2lmaWVzIHRoZSBkYXRhIHRvIHNlYXJjaC5cbiAgICogQHBhcmFtIHNlYXJjaFRleHQgU3BlY2lmaWVzIGEgdGV4dCBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnc2VhcmNoJylcbiAgcHVibGljIHNlYXJjaEZ1bmN0aW9uOiAoZGF0YTogYW55LCBzZWFyY2hUZXh0OiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lHcmlkQ29sdW1uQ29tcG9uZW50KVxuICBwcml2YXRlIGNvbHVtbkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxTa3lHcmlkQ29sdW1uQ29tcG9uZW50PjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX21lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lMaXN0Vmlld0dyaWRNZXNzYWdlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0YXRlOiBMaXN0U3RhdGUsXG4gICAgcHJpdmF0ZSBkaXNwYXRjaGVyOiBMaXN0U3RhdGVEaXNwYXRjaGVyLFxuICAgIHB1YmxpYyBncmlkU3RhdGU6IEdyaWRTdGF0ZSxcbiAgICBwdWJsaWMgZ3JpZERpc3BhdGNoZXI6IEdyaWRTdGF0ZURpc3BhdGNoZXIsXG4gICAgbG9nZ2VyOiBTa3lMb2dTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHN0YXRlLCAnR3JpZCBWaWV3Jyk7XG5cbiAgICBsb2dnZXIuZGVwcmVjYXRlZCgnU2t5TGlzdFZpZXdHcmlkQ29tcG9uZW50Jywge1xuICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDYsXG4gICAgICBtb3JlSW5mb1VybDpcbiAgICAgICAgJ2h0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9kYXRhLWVudHJ5LWdyaWQnLFxuICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSBkYXRhIGVudHJ5IGdyaWQgaW5zdGVhZC4nLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAvLyBXYXRjaCBmb3Igc2VsZWN0aW9uIGNoYW5nZXMgYW5kIHVwZGF0ZSBtdWx0aXNlbGVjdFNlbGVjdGVkSWRzIGZvciBsb2NhbCBjb21wYXJpc29uLlxuICAgIHRoaXMuc3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNlbGVjdGVkLml0ZW0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQodGhpcy5zZWxlY3RlZE1hcEVxdWFsKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IExpc3RTZWxlY3RlZE1vZGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGl0ZW1zLnNlbGVjdGVkSWRNYXAuZm9yRWFjaCgoaXNTZWxlY3RlZCwgaWQpID0+IHtcbiAgICAgICAgICBpZiAoaXRlbXMuc2VsZWN0ZWRJZE1hcC5nZXQoaWQpID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZElkcy5wdXNoKGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RTZWxlY3RlZElkcyA9IHNlbGVjdGVkSWRzO1xuICAgICAgfSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmNvbHVtbkNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdHcmlkIHZpZXcgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHNreS1ncmlkLWNvbHVtbiB0byByZW5kZXIuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5Nb2RlbHMgPSB0aGlzLmNvbHVtbkNvbXBvbmVudHMubWFwKChjb2x1bW5Db21wb25lbnQpID0+IHtcbiAgICAgIHJldHVybiBuZXcgU2t5R3JpZENvbHVtbk1vZGVsKGNvbHVtbkNvbXBvbmVudC50ZW1wbGF0ZSwgY29sdW1uQ29tcG9uZW50KTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLndpZHRoICYmICFpc09ic2VydmFibGUodGhpcy53aWR0aCkpIHtcbiAgICAgIHRoaXMud2lkdGggPSBvYnNlcnZhYmxlT2YodGhpcy53aWR0aCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGVpZ2h0ICYmICFpc09ic2VydmFibGUodGhpcy5oZWlnaHQpKSB7XG4gICAgICB0aGlzLmhlaWdodCA9IG9ic2VydmFibGVPZih0aGlzLmhlaWdodCk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgT2JzZXJ2YWJsZXMgZm9yIHRlbXBsYXRlXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5ncmlkU3RhdGUucGlwZShcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuY29sdW1ucy5pdGVtcyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCh0aGlzLmFycmF5c0VxdWFsKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5JZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XG5cbiAgICB0aGlzLml0ZW1zID0gdGhpcy5nZXRHcmlkSXRlbXMoKTtcblxuICAgIHRoaXMubG9hZGluZyA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHMuaXRlbXMubG9hZGluZztcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgKTtcblxuICAgIHRoaXMuc29ydEZpZWxkID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgaWYgKHMuc29ydCAmJiBzLnNvcnQuZmllbGRTZWxlY3RvcnMpIHtcbiAgICAgICAgICByZXR1cm4gcy5zb3J0LmZpZWxkU2VsZWN0b3JzWzBdO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICApO1xuXG4gICAgdGhpcy5ncmlkU3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmNvbHVtbnMuaXRlbXMpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQodGhpcy5hcnJheXNFcXVhbClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbHVtbnMpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRoaXMuaGlkZGVuQ29sdW1ucykge1xuICAgICAgICAgIGdldFZhbHVlKHRoaXMuaGlkZGVuQ29sdW1ucywgKGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyaWREaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgICAgIG5ldyBMaXN0Vmlld0Rpc3BsYXllZEdyaWRDb2x1bW5zTG9hZEFjdGlvbihcbiAgICAgICAgICAgICAgICBjb2x1bW5zLmZpbHRlcigoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSB4LmlkIHx8IHguZmllbGQ7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gaGlkZGVuQ29sdW1ucy5pbmRleE9mKGlkKSA9PT0gLTE7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheWVkQ29sdW1ucykge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgZ2V0VmFsdWUodGhpcy5kaXNwbGF5ZWRDb2x1bW5zLCAoZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZERpc3BhdGNoZXIubmV4dChcbiAgICAgICAgICAgICAgbmV3IExpc3RWaWV3RGlzcGxheWVkR3JpZENvbHVtbnNMb2FkQWN0aW9uKFxuICAgICAgICAgICAgICAgIGNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgKHgpID0+IGRpc3BsYXllZENvbHVtbnMuaW5kZXhPZih4LmlkIHx8IHguZmllbGQpICE9PSAtMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ3JpZERpc3BhdGNoZXIubmV4dChcbiAgICAgICAgICAgIG5ldyBMaXN0Vmlld0Rpc3BsYXllZEdyaWRDb2x1bW5zTG9hZEFjdGlvbihcbiAgICAgICAgICAgICAgY29sdW1ucy5maWx0ZXIoKHgpID0+ICF4LmhpZGRlbiksXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudFNlYXJjaFRleHQgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLnNlYXJjaC5zZWFyY2hUZXh0KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICk7XG5cbiAgICB0aGlzLmdyaWREaXNwYXRjaGVyLm5leHQoXG4gICAgICBuZXcgTGlzdFZpZXdHcmlkQ29sdW1uc0xvYWRBY3Rpb24oY29sdW1uTW9kZWxzLCB0cnVlKVxuICAgICk7XG5cbiAgICB0aGlzLmhhbmRsZUNvbHVtbkNoYW5nZSgpO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlTXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hlci50b29sYmFyU2hvd011bHRpc2VsZWN0VG9vbGJhcih0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRJbmxpbmVEZWxldGVNZXNzYWdlcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdXNlciBtYWtlcyBzZWxlY3Rpb24sIHRlbGwgbGlzdC1idWlsZGVyIHRvIHVwZGF0ZSB0aGUgbGlzdCBzdGF0ZS5cbiAgICogVGhpcyBsb2dpYyBzaG91bGQgb25seSBydW4gb24gdXNlciBpbnRlcmFjdGlvbiAtIE5PVCBwcm9ncmFtbWF0aWMgdXBkYXRlcy5cbiAgICovXG4gIHB1YmxpYyBvbk11bHRpc2VsZWN0U2VsZWN0aW9uQ2hhbmdlKFxuICAgIGV2ZW50OiBTa3lHcmlkU2VsZWN0ZWRSb3dzTW9kZWxDaGFuZ2VcbiAgKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQuc291cmNlID09PSBTa3lHcmlkU2VsZWN0ZWRSb3dzU291cmNlLkNoZWNrYm94Q2hhbmdlIHx8XG4gICAgICBldmVudC5zb3VyY2UgPT09IFNreUdyaWRTZWxlY3RlZFJvd3NTb3VyY2UuUm93Q2xpY2tcbiAgICApIHtcbiAgICAgIHRoaXMuc3RhdGVcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5pdGVtcy5pdGVtcyksXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBMaXN0SXRlbU1vZGVsW10pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdJdGVtSWRzID0gdGhpcy5hcnJheUludGVyc2VjdGlvbihcbiAgICAgICAgICAgIGl0ZW1zLm1hcCgoaSkgPT4gaS5pZCksXG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0U2VsZWN0ZWRJZHNcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IG5ld0lkcyA9IGl0ZW1zLmZpbHRlcigoaSkgPT4gaS5pc1NlbGVjdGVkKS5tYXAoKGkpID0+IGkuaWQpO1xuXG4gICAgICAgICAgLy8gQ2hlY2sgZm9yIGRlc2VsZWN0ZWQgaWRzICYgc2VuZCBtZXNzYWdlIHRvIGRpc3BhdGNoZXIuXG4gICAgICAgICAgY29uc3QgZGVzZWxlY3RlZElkcyA9IHRoaXMuYXJyYXlEaWZmKG5ld0l0ZW1JZHMsIG5ld0lkcyk7XG4gICAgICAgICAgaWYgKGRlc2VsZWN0ZWRJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnNldFNlbGVjdGVkKGRlc2VsZWN0ZWRJZHMsIGZhbHNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDaGVjayBmb3Igc2VsZWN0ZWQgaWRzICYgc2VuZCBtZXNzYWdlIHRvIGRpc3BhdGNoZXIuXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLmFycmF5RGlmZihuZXdJZHMsIG5ld0l0ZW1JZHMpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZElkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIuc2V0U2VsZWN0ZWQoc2VsZWN0ZWRJZHMsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbHVtbklkc0NoYW5nZWQoc2VsZWN0ZWRDb2x1bW5JZHM6IEFycmF5PHN0cmluZz4pIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uSWRzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjdXJyZW50SWRzKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYXJyYXlzRXF1YWwoc2VsZWN0ZWRDb2x1bW5JZHMsIGN1cnJlbnRJZHMpKSB7XG4gICAgICAgIHRoaXMuZ3JpZFN0YXRlXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmNvbHVtbnMuaXRlbXMpLFxuICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChjb2x1bW5zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRDb2x1bW5zID0gc2VsZWN0ZWRDb2x1bW5JZHMubWFwKFxuICAgICAgICAgICAgICAoY29sdW1uSWQpID0+IGNvbHVtbnMuZmlsdGVyKChjKSA9PiBjLmlkID09PSBjb2x1bW5JZClbMF1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyaWREaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgICAgIG5ldyBMaXN0Vmlld0Rpc3BsYXllZEdyaWRDb2x1bW5zTG9hZEFjdGlvbihkaXNwbGF5ZWRDb2x1bW5zLCB0cnVlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxSb3dEZWxldGUoYXJnczogU2t5TGlzdFZpZXdHcmlkUm93RGVsZXRlQ2FuY2VsQXJncyk6IHZvaWQge1xuICAgIHRoaXMucm93RGVsZXRlQ2FuY2VsLmVtaXQoYXJncyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlybVJvd0RlbGV0ZShhcmdzOiBTa3lMaXN0Vmlld0dyaWRSb3dEZWxldGVDb25maXJtQXJncyk6IHZvaWQge1xuICAgIHRoaXMucm93RGVsZXRlQ29uZmlybS5lbWl0KGFyZ3MpO1xuICB9XG5cbiAgcHVibGljIHNvcnRGaWVsZENoYW5nZWQoc29ydEZpZWxkOiBMaXN0U29ydEZpZWxkU2VsZWN0b3JNb2RlbCkge1xuICAgIHRoaXMuZGlzcGF0Y2hlci5zb3J0U2V0RmllbGRTZWxlY3RvcnMoW3NvcnRGaWVsZF0pO1xuICB9XG5cbiAgcHVibGljIG9uVmlld0FjdGl2ZSgpIHtcbiAgICAvKlxuICAgICAgUmFuIGludG8gcHJvYmxlbSB3aGVyZSBzdGF0ZSB1cGRhdGVzIHdlcmUgY29uc3VtZWQgb3V0IG9mIG9yZGVyLiBGb3IgZXhhbXBsZSwgb24gc2VhcmNoIHRleHRcbiAgICAgIHVwZGF0ZSwgdGhlIHNlYXJjaFRleHQgdXBkYXRlIHdhcyBjb25zdW1lZCBhZnRlciB0aGUgcmVzdWx0aW5nIGxpc3QgaXRlbSB1cGRhdGUuIFNjYW5uaW5nIHRoZVxuICAgICAgcHJldmlvdXMgdmFsdWUgb2YgaXRlbXMgbGFzdFVwZGF0ZSBlbnN1cmVzIHRoYXQgd2Ugb25seSByZWNlaXZlIHRoZSBsYXRlc3QgaXRlbXMuXG4gICAgKi9cbiAgICB0aGlzLmdyaWRTdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICBzY2FuKChwcmV2aW91c1ZhbHVlOiBHcmlkU3RhdGVNb2RlbCwgbmV3VmFsdWU6IEdyaWRTdGF0ZU1vZGVsKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZS5kaXNwbGF5ZWRDb2x1bW5zLmxhc3RVcGRhdGUgPlxuICAgICAgICAgICAgbmV3VmFsdWUuZGlzcGxheWVkQ29sdW1ucy5sYXN0VXBkYXRlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuZGlzcGxheWVkQ29sdW1ucy5pdGVtcyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKHRoaXMuYXJyYXlzRXF1YWwpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkaXNwbGF5ZWRDb2x1bW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldEZ1bmN0aW9ucyA9XG4gICAgICAgICAgdGhpcy5zZWFyY2hGdW5jdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IFt0aGlzLnNlYXJjaEZ1bmN0aW9uXVxuICAgICAgICAgICAgOiBkaXNwbGF5ZWRDb2x1bW5zXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgIChjb2x1bW4pID0+IChkYXRhOiBhbnksIHNlYXJjaFRleHQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLnNlYXJjaEZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgIGdldERhdGEoZGF0YSwgY29sdW1uLmZpZWxkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYykgPT4gYyAhPT0gdW5kZWZpbmVkKTtcblxuICAgICAgICB0aGlzLnN0YXRlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChzKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnNlYXJjaFNldE9wdGlvbnMoXG4gICAgICAgICAgICBuZXcgTGlzdFNlYXJjaE1vZGVsKHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcy5zZWFyY2guc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgZnVuY3Rpb25zOiBzZXRGdW5jdGlvbnMsXG4gICAgICAgICAgICAgIGZpZWxkU2VsZWN0b3JzOiBkaXNwbGF5ZWRDb2x1bW5zLm1hcCgoZCkgPT4gZC5maWVsZCksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRJbmxpbmVEZWxldGVNZXNzYWdlcygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLm1lc3NhZ2VTdHJlYW0pIHtcbiAgICAgIHRoaXMubWVzc2FnZVN0cmVhbS5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreUxpc3RWaWV3R3JpZE1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gU2t5TGlzdFZpZXdHcmlkTWVzc2FnZVR5cGUuQWJvcnREZWxldGVSb3cpIHtcbiAgICAgICAgICB0aGlzLmdyaWRNZXNzYWdlU3RyZWFtLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogU2t5R3JpZE1lc3NhZ2VUeXBlLkFib3J0RGVsZXRlUm93LFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBhYm9ydERlbGV0ZVJvdzogbWVzc2FnZS5kYXRhLmFib3J0RGVsZXRlUm93LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBtZXNzYWdlLnR5cGUgPT09IFNreUxpc3RWaWV3R3JpZE1lc3NhZ2VUeXBlLlByb21wdERlbGV0ZVJvd1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmdyaWRNZXNzYWdlU3RyZWFtLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogU2t5R3JpZE1lc3NhZ2VUeXBlLlByb21wdERlbGV0ZVJvdyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgcHJvbXB0RGVsZXRlUm93OiBtZXNzYWdlLmRhdGEucHJvbXB0RGVsZXRlUm93LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb2x1bW5DaGFuZ2UoKSB7XG4gICAgLy8gd2F0Y2ggZm9yIGNoYW5nZXMgaW4gY29sdW1uIGNvbXBvbmVudHNcbiAgICB0aGlzLmNvbHVtbkNvbXBvbmVudHMuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjb2x1bW5Db21wb25lbnRzKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbk1vZGVscyA9IHRoaXMuY29sdW1uQ29tcG9uZW50cy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgU2t5R3JpZENvbHVtbk1vZGVsKGNvbHVtbi50ZW1wbGF0ZSwgY29sdW1uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JpZERpc3BhdGNoZXIubmV4dChcbiAgICAgICAgICBuZXcgTGlzdFZpZXdHcmlkQ29sdW1uc0xvYWRBY3Rpb24oY29sdW1uTW9kZWxzLCB0cnVlKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgY29sdW1uIGhlYWRpbmcgY2hhbmdlczpcbiAgICB0aGlzLmNvbHVtbkNvbXBvbmVudHMuZm9yRWFjaCgoY29tcCkgPT4ge1xuICAgICAgY29tcC5oZWFkaW5nTW9kZWxDaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2U6IFNreUdyaWRDb2x1bW5IZWFkaW5nTW9kZWxDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQudXBkYXRlQ29sdW1uSGVhZGluZyhjaGFuZ2UpO1xuICAgICAgICB9KTtcbiAgICAgIGNvbXAuZGVzY3JpcHRpb25Nb2RlbENoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5R3JpZENvbHVtbkRlc2NyaXB0aW9uTW9kZWxDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQudXBkYXRlQ29sdW1uRGVzY3JpcHRpb24oY2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEdyaWRJdGVtcygpOiBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtTW9kZWw+PiB7XG4gICAgLypcbiAgICAgIFNhbWUgcHJvYmxlbSBhcyBhYm92ZS4gV2Ugc2hvdWxkIG1vdmUgZnJvbSBoYXZpbmcgYSBzdGF0ZSBvYmplY3Qgb2JzZXJ2YWJsZSB3aXRoIGEgYnVuY2ggb2ZcbiAgICAgIHN0YXRpYyBwcm9wZXJ0aWVzIHRvIGEgc3RhdGljIHN0YXRlIG9iamVjdCB3aXRoIG9ic2VydmFibGUgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4gc3Vic2NyaWJlXG4gICAgICB0by5cbiAgICAqL1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiB7XG4gICAgICAgIHJldHVybiBzLml0ZW1zO1xuICAgICAgfSksXG4gICAgICBzY2FuKFxuICAgICAgICAoXG4gICAgICAgICAgcHJldmlvdXNWYWx1ZTogQXN5bmNMaXN0PExpc3RJdGVtTW9kZWw+LFxuICAgICAgICAgIG5ld1ZhbHVlOiBBc3luY0xpc3Q8TGlzdEl0ZW1Nb2RlbD5cbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUubGFzdFVwZGF0ZSA+IG5ld1ZhbHVlLmxhc3RVcGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocmVzdWx0OiBBc3luY0xpc3Q8TGlzdEl0ZW1Nb2RlbD4pID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVtcztcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkSWRzKCk6IE9ic2VydmFibGU8QXJyYXk8c3RyaW5nPj4ge1xuICAgIC8qXG4gICAgICBTYW1lIHByb2JsZW0gYXMgYWJvdmUuIFdlIHNob3VsZCBtb3ZlIGZyb20gaGF2aW5nIGEgc3RhdGUgb2JqZWN0IG9ic2VydmFibGUgd2l0aCBhIGJ1bmNoIG9mXG4gICAgICBzdGF0aWMgcHJvcGVydGllcyB0byBhIHN0YXRpYyBzdGF0ZSBvYmplY3Qgd2l0aCBvYnNlcnZhYmxlIHByb3BlcnRpZXMgdGhhdCB5b3UgY2FuIHN1YnNjcmliZVxuICAgICAgdG8uXG4gICAgKi9cbiAgICByZXR1cm4gdGhpcy5ncmlkU3RhdGUucGlwZShcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuZGlzcGxheWVkQ29sdW1ucyksXG4gICAgICBzY2FuKFxuICAgICAgICAoXG4gICAgICAgICAgcHJldmlvdXNWYWx1ZTogQXN5bmNMaXN0PFNreUdyaWRDb2x1bW5Nb2RlbD4sXG4gICAgICAgICAgbmV3VmFsdWU6IEFzeW5jTGlzdDxTa3lHcmlkQ29sdW1uTW9kZWw+XG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91c1ZhbHVlLmxhc3RVcGRhdGUgPiBuZXdWYWx1ZS5sYXN0VXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHJlc3VsdDogQXN5bmNMaXN0PFNreUdyaWRDb2x1bW5Nb2RlbD4pID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIHJldHVybiByZXN1bHQuaXRlbXMubWFwKChjb2x1bW46IFNreUdyaWRDb2x1bW5Nb2RlbCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb2x1bW4uaWQgfHwgY29sdW1uLmZpZWxkO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzVmFsdWU6IHN0cmluZ1tdLCBuZXdWYWx1ZTogc3RyaW5nW10pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGF2ZUNvbHVtbklkc0NoYW5nZWQocHJldmlvdXNWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXZlQ29sdW1uSWRzQ2hhbmdlZChwcmV2aW91c1ZhbHVlOiBzdHJpbmdbXSwgbmV3VmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgaWYgKHByZXZpb3VzVmFsdWUubGVuZ3RoICE9PSBuZXdWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5JZHNDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2aW91c1ZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwcmV2aW91c1ZhbHVlW2ldICE9PSBuZXdWYWx1ZVtpXSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uSWRzQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZE1hcEVxdWFsKFxuICAgIHByZXY6IExpc3RTZWxlY3RlZE1vZGVsLFxuICAgIG5leHQ6IExpc3RTZWxlY3RlZE1vZGVsXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChwcmV2LnNlbGVjdGVkSWRNYXAuc2l6ZSAhPT0gbmV4dC5zZWxlY3RlZElkTWFwLnNpemUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIG5leHQuc2VsZWN0ZWRJZE1hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9KTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcblxuICAgICAgY29uc3QgdmFsdWUgPSBuZXh0LnNlbGVjdGVkSWRNYXAuZ2V0KGtleSk7XG4gICAgICBpZiAodmFsdWUgIT09IHByZXYuc2VsZWN0ZWRJZE1hcC5nZXQoa2V5KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFycmF5RGlmZihhcnJBOiBBcnJheTxhbnk+LCBhcnJCOiBBcnJheTxhbnk+KTogQXJyYXk8YW55PiB7XG4gICAgcmV0dXJuIGFyckEuZmlsdGVyKChpKSA9PiBhcnJCLmluZGV4T2YoaSkgPCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgYXJyYXlJbnRlcnNlY3Rpb24oYXJyQTogQXJyYXk8YW55PiwgYXJyQjogQXJyYXk8YW55Pik6IEFycmF5PGFueT4ge1xuICAgIHJldHVybiBhcnJBLmZpbHRlcigodmFsdWUpID0+IC0xICE9PSBhcnJCLmluZGV4T2YodmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXJyYXlzRXF1YWwoYXJyYXlBOiBhbnlbXSwgYXJyYXlCOiBhbnlbXSkge1xuICAgIHJldHVybiAoXG4gICAgICBhcnJheUEubGVuZ3RoID09PSBhcnJheUIubGVuZ3RoICYmXG4gICAgICBhcnJheUEuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gdmFsdWUgPT09IGFycmF5QltpbmRleF0pXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImFjdGl2ZSB8IGFzeW5jXCI+XG4gIDxza3ktZ3JpZFxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnMgfCBhc3luY1wiXG4gICAgW2RhdGFdPVwiaXRlbXMgfCBhc3luY1wiXG4gICAgW2VuYWJsZU11bHRpc2VsZWN0XT1cImVuYWJsZU11bHRpc2VsZWN0XCJcbiAgICBbZml0XT1cImZpdFwiXG4gICAgW2hlaWdodF09XCJncmlkSGVpZ2h0IHwgYXN5bmNcIlxuICAgIFtoaWdobGlnaHRUZXh0XT1cIlxuICAgICAgaGlnaGxpZ2h0U2VhcmNoVGV4dCA/IChjdXJyZW50U2VhcmNoVGV4dCB8IGFzeW5jKSA6IHVuZGVmaW5lZFxuICAgIFwiXG4gICAgW3Jvd0hpZ2hsaWdodGVkSWRdPVwicm93SGlnaGxpZ2h0ZWRJZFwiXG4gICAgW21lc3NhZ2VTdHJlYW1dPVwiZ3JpZE1lc3NhZ2VTdHJlYW1cIlxuICAgIFtzZWxlY3RlZENvbHVtbklkc109XCJzZWxlY3RlZENvbHVtbklkcyB8IGFzeW5jXCJcbiAgICBbc2VsZWN0ZWRSb3dJZHNdPVwibXVsdGlzZWxlY3RTZWxlY3RlZElkc1wiXG4gICAgW3NldHRpbmdzS2V5XT1cInNldHRpbmdzS2V5XCJcbiAgICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZCB8IGFzeW5jXCJcbiAgICBbd2lkdGhdPVwiZ3JpZFdpZHRoIHwgYXN5bmNcIlxuICAgIChtdWx0aXNlbGVjdFNlbGVjdGlvbkNoYW5nZSk9XCJvbk11bHRpc2VsZWN0U2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgIChyb3dEZWxldGVDYW5jZWwpPVwiY2FuY2VsUm93RGVsZXRlKCRldmVudClcIlxuICAgIChyb3dEZWxldGVDb25maXJtKT1cImNvbmZpcm1Sb3dEZWxldGUoJGV2ZW50KVwiXG4gICAgKHNlbGVjdGVkQ29sdW1uSWRzQ2hhbmdlKT1cImNvbHVtbklkc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgKHNvcnRGaWVsZENoYW5nZSk9XCJzb3J0RmllbGRDaGFuZ2VkKCRldmVudClcIlxuICAgICNza3lHcmlkXG4gID5cbiAgPC9za3ktZ3JpZD5cbiAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwibG9hZGluZyB8IGFzeW5jXCI+IDwvc2t5LXdhaXQ+XG48L2Rpdj5cbiJdfQ==
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci12aWV3LWdyaWRzL3NyYy9saWIvbW9kdWxlcy9saXN0LXZpZXctZ3JpZC9saXN0LXZpZXctZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdC1idWlsZGVyLXZpZXctZ3JpZHMvc3JjL2xpYi9tb2R1bGVzL2xpc3Qtdmlldy1ncmlkL2xpc3Qtdmlldy1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxzQkFBc0IsRUFHdEIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVoQixrQkFBa0IsRUFFbEIseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxlQUFlLEVBSWYsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFhLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFHTCxPQUFPLEVBQ1AsWUFBWSxHQUNiLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxJQUFJLGFBQWEsRUFDcEIsSUFBSSxFQUNKLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUs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Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7XG4gIFNreUdyaWRDb2x1bW5Db21wb25lbnQsXG4gIFNreUdyaWRDb2x1bW5EZXNjcmlwdGlvbk1vZGVsQ2hhbmdlLFxuICBTa3lHcmlkQ29sdW1uSGVhZGluZ01vZGVsQ2hhbmdlLFxuICBTa3lHcmlkQ29sdW1uTW9kZWwsXG4gIFNreUdyaWRDb21wb25lbnQsXG4gIFNreUdyaWRNZXNzYWdlLFxuICBTa3lHcmlkTWVzc2FnZVR5cGUsXG4gIFNreUdyaWRTZWxlY3RlZFJvd3NNb2RlbENoYW5nZSxcbiAgU2t5R3JpZFNlbGVjdGVkUm93c1NvdXJjZSxcbn0gZnJvbSAnQHNreXV4L2dyaWRzJztcbmltcG9ydCB7XG4gIExpc3RTZWFyY2hNb2RlbCxcbiAgTGlzdFNlbGVjdGVkTW9kZWwsXG4gIExpc3RTdGF0ZSxcbiAgTGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgTGlzdFZpZXdDb21wb25lbnQsXG59IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXInO1xuaW1wb3J0IHsgQXN5bmNMaXN0LCBnZXRWYWx1ZSB9IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcbmltcG9ydCB7XG4gIExpc3RJdGVtTW9kZWwsXG4gIExpc3RTb3J0RmllbGRTZWxlY3Rvck1vZGVsLFxuICBnZXREYXRhLFxuICBpc09ic2VydmFibGUsXG59IGZyb20gJ0Bza3l1eC9saXN0LWJ1aWxkZXItY29tbW9uJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwIGFzIG9ic2VydmFibGVNYXAsXG4gIHNjYW4sXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMaXN0Vmlld0dyaWRDb2x1bW5zTG9hZEFjdGlvbiB9IGZyb20gJy4vc3RhdGUvY29sdW1ucy9sb2FkLmFjdGlvbic7XG5pbXBvcnQgeyBMaXN0Vmlld0Rpc3BsYXllZEdyaWRDb2x1bW5zTG9hZEFjdGlvbiB9IGZyb20gJy4vc3RhdGUvZGlzcGxheWVkLWNvbHVtbnMvbG9hZC5hY3Rpb24nO1xuaW1wb3J0IHsgR3JpZFN0YXRlTW9kZWwgfSBmcm9tICcuL3N0YXRlL2dyaWQtc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgR3JpZFN0YXRlRGlzcGF0Y2hlciB9IGZyb20gJy4vc3RhdGUvZ3JpZC1zdGF0ZS5yeHN0YXRlJztcbmltcG9ydCB7IEdyaWRTdGF0ZSB9IGZyb20gJy4vc3RhdGUvZ3JpZC1zdGF0ZS5zdGF0ZS1ub2RlJztcbmltcG9ydCB7IFNreUxpc3RWaWV3R3JpZE1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2xpc3Qtdmlldy1ncmlkLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5TGlzdFZpZXdHcmlkTWVzc2FnZVR5cGUgfSBmcm9tICcuL3R5cGVzL2xpc3Qtdmlldy1ncmlkLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lMaXN0Vmlld0dyaWRSb3dEZWxldGVDYW5jZWxBcmdzIH0gZnJvbSAnLi90eXBlcy9saXN0LXZpZXctZ3JpZC1yb3ctZGVsZXRlLWNhbmNlbC1hcmdzJztcbmltcG9ydCB7IFNreUxpc3RWaWV3R3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzIH0gZnJvbSAnLi90eXBlcy9saXN0LXZpZXctZ3JpZC1yb3ctZGVsZXRlLWNvbmZpcm0tYXJncyc7XG5cbi8qKlxuICogRGlzcGxheXMgYSBncmlkIGZvciBhXG4gKiBbU0tZIFVYLXRoZW1lZCBsaXN0IG9mIGRhdGFdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9saXN0L292ZXJ2aWV3KVxuICogdXNpbmcgdGhlIFtncmlkIGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2dyaWQpLlxuICogWW91IG11c3QgaW5zdGFsbCBgU2t5TGlzdE1vZHVsZWAgYXMgYSBkZXBlbmRlbmN5LlxuICogQGRlcHJlY2F0ZWQgTGlzdCBidWlsZGVyIHZpZXcgZ3JpZCBhbmQgaXRzIGZlYXR1cmVzIGFyZSBkZXByZWNhdGVkLiBVc2UgZGF0YSBlbnRyeSBncmlkIGluc3RlYWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2RhdGEtZW50cnktZ3JpZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxpc3Qtdmlldy1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Qtdmlldy1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC12aWV3LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTGlzdFZpZXdDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lMaXN0Vmlld0dyaWRDb21wb25lbnQpLFxuICAgIH0sXG4gICAgR3JpZFN0YXRlLFxuICAgIEdyaWRTdGF0ZURpc3BhdGNoZXIsXG4gICAgR3JpZFN0YXRlTW9kZWwsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMaXN0Vmlld0dyaWRDb21wb25lbnRcbiAgZXh0ZW5kcyBMaXN0Vmlld0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHZpZXcuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZpZXdOYW1lID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbHVtbnMgdG8gZGlzcGxheSBieSBkZWZhdWx0IGJhc2VkIG9uIHRoZSBJRCBvciBmaWVsZCBvZiB0aGUgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxBcnJheTxzdHJpbmc+PjtcblxuICAvKipcbiAgICogVGhlIGNvbHVtbnMgdG8gaGlkZSBieSBkZWZhdWx0IGJhc2VkIG9uIHRoZSBJRCBvciBmaWVsZCBvZiB0aGUgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRkZW5Db2x1bW5zOiBBcnJheTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxBcnJheTxzdHJpbmc+PjtcblxuICAvKipcbiAgICogSG93IHRoZSBncmlkIGZpdHMgdG8gaXRzIHBhcmVudC4gYFwid2lkdGhcImAgZml0cyB0aGUgZ3JpZCB0byB0aGUgcGFyZW50J3MgZnVsbFxuICAgKiB3aWR0aCwgYW5kIGBcInNjcm9sbFwiYCBhbGxvd3MgdGhlIGdyaWQgdG8gZXhjZWVkIHRoZSBwYXJlbnQncyB3aWR0aC4gSWYgdGhlIGdyaWQgZG9lcyBub3QgaGF2ZVxuICAgKiBlbm91Z2ggY29sdW1ucyB0byBmaWxsIHRoZSBwYXJlbnQncyB3aWR0aCwgaXQgYWx3YXlzIHN0cmV0Y2hlcyB0byB0aGUgcGFyZW50J3MgZnVsbCB3aWR0aC5cbiAgICogQGRlZmF1bHQgXCJ3aWR0aFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZml0ID0gJ3dpZHRoJztcblxuICAvKipcbiAgICogVGhlIHdpZHRoIG9mIHRoZSBncmlkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHdpZHRoOiBudW1iZXIgfCBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIGdyaWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVpZ2h0OiBudW1iZXIgfCBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaGlnaGxpZ2h0IHNlYXJjaCB0ZXh0IHdpdGhpbiB0aGUgZ3JpZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpZ2hsaWdodFNlYXJjaFRleHQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgb2JzZXJ2YWJsZSB0byBzZW5kIGNvbW1hbmRzIHRvIHRoZSBncmlkLlxuICAgKiBUaGUgY29tbWFuZHMgc2hvdWxkIHJlc3BlY3QgdGhlIGBTa3lMaXN0Vmlld0dyaWRNZXNzYWdlYCB0eXBlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZXNzYWdlU3RyZWFtKHN0cmVhbTogU3ViamVjdDxTa3lMaXN0Vmlld0dyaWRNZXNzYWdlPikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuX21lc3NhZ2VTdHJlYW0pIHtcbiAgICAgIHRoaXMuX21lc3NhZ2VTdHJlYW0udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXNzYWdlU3RyZWFtID0gc3RyZWFtO1xuXG4gICAgdGhpcy5pbml0SW5saW5lRGVsZXRlTWVzc2FnZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVzc2FnZVN0cmVhbSgpOiBTdWJqZWN0PFNreUxpc3RWaWV3R3JpZE1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZVN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdyB0byBoaWdobGlnaHQuIFRoZSBJRCBtYXRjaGVzIHRoZSBgaWRgIHByb3BlcnR5IG9mXG4gICAqIHRoZSBgZGF0YWAgb2JqZWN0LiBUeXBpY2FsbHksIHRoaXMgcHJvcGVydHkgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZVxuICAgKiBbZmx5b3V0IGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2ZseW91dCkgdG9cbiAgICogaW5kaWNhdGUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCByb3cuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcm93SGlnaGxpZ2h0ZWRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgbXVsdGlzZWxlY3QgZmVhdHVyZSB0byBkaXNwbGF5IGEgY29sdW1uIG9mIGNoZWNrYm94ZXNcbiAgICogb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZ3JpZC4gTXVsdGlzZWxlY3QgYWxzbyBkaXNwbGF5cyBhbiBhY3Rpb24gYmFyIHdpdGggYnV0dG9ucyB0b1xuICAgKiBzZWxlY3QgYW5kIGNsZWFyIGFsbCBjaGVja2JveGVzLiBNdWx0aXNlbGVjdCBkZWZhdWx0cyB0byB0aGUgYGlkYCBwcm9wZXJ0eSBvbiB0aGUgbGlzdCdzXG4gICAqIGBkYXRhYCBvYmplY3QuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlTXVsdGlzZWxlY3QgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBrZXkgZm9yIHRoZSBVSSBDb25maWcgU2VydmljZSB0aGF0IHJldHJpZXZlcyBzdG9yZWQgc2V0dGluZ3MgZnJvbVxuICAgKiBhIGRhdGFiYXNlLiBUaGUgc2VydmljZSBzYXZlcyBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB1c2VycyBhbmQgcmV0dXJucyBgc2VsZWN0ZWRDb2x1bW5JZHNgXG4gICAqIGZvciB0aGUgY29sdW1ucyB0byBkaXNwbGF5IGFuZCB0aGUgcHJlZmVycmVkIGNvbHVtbiBvcmRlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGVcbiAgICogW3N0aWNreSBzZXR0aW5ncyBkb2N1bWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2dldC1zdGFydGVkL2FkdmFuY2VkL3N0aWNreS1zZXR0aW5ncykuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0dGluZ3NLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjYW5jZWwgdGhlIGRlbGV0aW9uIG9mIGEgcm93LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByb3dEZWxldGVDYW5jZWwgPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2t5TGlzdFZpZXdHcmlkUm93RGVsZXRlQ2FuY2VsQXJncz4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjb25maXJtIHRoZSBkZWxldGlvbiBvZiBhIHJvdy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcm93RGVsZXRlQ29uZmlybSA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxTa3lMaXN0Vmlld0dyaWRSb3dEZWxldGVDb25maXJtQXJncz4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBjb2x1bW5zIGNoYW5nZS4gVGhpcyBpbmNsdWRlcyBjaGFuZ2VzIHRvIHRoZSBkaXNwbGF5ZWQgY29sdW1ucyBhbmQgY2hhbmdlc1xuICAgKiB0byB0aGUgb3JkZXIgb2YgY29sdW1ucy4gVGhlIGV2ZW50IGVtaXRzIGFuIGFycmF5IG9mIElEcyBmb3IgdGhlIGRpc3BsYXllZCBjb2x1bW5zIHRoYXRcbiAgICogcmVmbGVjdHMgdGhlIGNvbHVtbiBvcmRlci5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRDb2x1bW5JZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PHN0cmluZz4+KCk7XG5cbiAgQFZpZXdDaGlsZChTa3lHcmlkQ29tcG9uZW50KVxuICBwdWJsaWMgZ3JpZENvbXBvbmVudDogU2t5R3JpZENvbXBvbmVudDtcblxuICBwdWJsaWMgZ2V0IGdyaWRIZWlnaHQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5oZWlnaHQgPT09ICdudW1iZXInXG4gICAgICA/IG9ic2VydmFibGVPZih0aGlzLmhlaWdodClcbiAgICAgIDogdGhpcy5oZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdyaWRXaWR0aCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLndpZHRoID09PSAnbnVtYmVyJ1xuICAgICAgPyBvYnNlcnZhYmxlT2YodGhpcy53aWR0aClcbiAgICAgIDogdGhpcy53aWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5zOiBPYnNlcnZhYmxlPEFycmF5PFNreUdyaWRDb2x1bW5Nb2RlbD4+O1xuXG4gIHB1YmxpYyBzZWxlY3RlZENvbHVtbklkczogT2JzZXJ2YWJsZTxBcnJheTxzdHJpbmc+PjtcblxuICBwdWJsaWMgaXRlbXM6IE9ic2VydmFibGU8TGlzdEl0ZW1Nb2RlbFtdPjtcblxuICAvKipcbiAgICogTWVzc2FnZSBzdHJlYW0gZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgaW50ZXJuYWwgZ3JpZCBpbnN0YW5jZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBncmlkTWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreUdyaWRNZXNzYWdlPigpO1xuXG4gIHB1YmxpYyBsb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHB1YmxpYyBzb3J0RmllbGQ6IE9ic2VydmFibGU8TGlzdFNvcnRGaWVsZFNlbGVjdG9yTW9kZWw+O1xuXG4gIHB1YmxpYyBjdXJyZW50U2VhcmNoVGV4dDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBtdWx0aXNlbGVjdFNlbGVjdGVkSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VhcmNoIGZ1bmN0aW9uIHRvIGFwcGx5IG9uIHRoZSB2aWV3IGRhdGEuXG4gICAqIEBwYXJhbSBkYXRhIFNwZWNpZmllcyB0aGUgZGF0YSB0byBzZWFyY2guXG4gICAqIEBwYXJhbSBzZWFyY2hUZXh0IFNwZWNpZmllcyBhIHRleHQgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3NlYXJjaCcpXG4gIHB1YmxpYyBzZWFyY2hGdW5jdGlvbjogKGRhdGE6IGFueSwgc2VhcmNoVGV4dDogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5R3JpZENvbHVtbkNvbXBvbmVudClcbiAgcHJpdmF0ZSBjb2x1bW5Db21wb25lbnRzOiBRdWVyeUxpc3Q8U2t5R3JpZENvbHVtbkNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9tZXNzYWdlU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5TGlzdFZpZXdHcmlkTWVzc2FnZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdGF0ZTogTGlzdFN0YXRlLFxuICAgIHByaXZhdGUgZGlzcGF0Y2hlcjogTGlzdFN0YXRlRGlzcGF0Y2hlcixcbiAgICBwdWJsaWMgZ3JpZFN0YXRlOiBHcmlkU3RhdGUsXG4gICAgcHVibGljIGdyaWREaXNwYXRjaGVyOiBHcmlkU3RhdGVEaXNwYXRjaGVyLFxuICAgIGxvZ2dlcjogU2t5TG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcihzdGF0ZSwgJ0dyaWQgVmlldycpO1xuXG4gICAgbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreUxpc3RWaWV3R3JpZENvbXBvbmVudCcsIHtcbiAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA2LFxuICAgICAgbW9yZUluZm9Vcmw6XG4gICAgICAgICdodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZGF0YS1lbnRyeS1ncmlkJyxcbiAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246ICdVc2UgZGF0YSBlbnRyeSBncmlkIGluc3RlYWQuJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLy8gV2F0Y2ggZm9yIHNlbGVjdGlvbiBjaGFuZ2VzIGFuZCB1cGRhdGUgbXVsdGlzZWxlY3RTZWxlY3RlZElkcyBmb3IgbG9jYWwgY29tcGFyaXNvbi5cbiAgICB0aGlzLnN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5zZWxlY3RlZC5pdGVtKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKHRoaXMuc2VsZWN0ZWRNYXBFcXVhbClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBMaXN0U2VsZWN0ZWRNb2RlbCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBpdGVtcy5zZWxlY3RlZElkTWFwLmZvckVhY2goKGlzU2VsZWN0ZWQsIGlkKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW1zLnNlbGVjdGVkSWRNYXAuZ2V0KGlkKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChpZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0U2VsZWN0ZWRJZHMgPSBzZWxlY3RlZElkcztcbiAgICAgIH0pO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodGhpcy5jb2x1bW5Db21wb25lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnR3JpZCB2aWV3IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBza3ktZ3JpZC1jb2x1bW4gdG8gcmVuZGVyLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uTW9kZWxzID0gdGhpcy5jb2x1bW5Db21wb25lbnRzLm1hcCgoY29sdW1uQ29tcG9uZW50KSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFNreUdyaWRDb2x1bW5Nb2RlbChjb2x1bW5Db21wb25lbnQudGVtcGxhdGUsIGNvbHVtbkNvbXBvbmVudCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy53aWR0aCAmJiAhaXNPYnNlcnZhYmxlKHRoaXMud2lkdGgpKSB7XG4gICAgICB0aGlzLndpZHRoID0gb2JzZXJ2YWJsZU9mKHRoaXMud2lkdGgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhlaWdodCAmJiAhaXNPYnNlcnZhYmxlKHRoaXMuaGVpZ2h0KSkge1xuICAgICAgdGhpcy5oZWlnaHQgPSBvYnNlcnZhYmxlT2YodGhpcy5oZWlnaHQpO1xuICAgIH1cblxuICAgIC8vIFNldHVwIE9ic2VydmFibGVzIGZvciB0ZW1wbGF0ZVxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ3JpZFN0YXRlLnBpcGUoXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmNvbHVtbnMuaXRlbXMpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQodGhpcy5hcnJheXNFcXVhbCksXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICk7XG5cbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uSWRzID0gdGhpcy5nZXRTZWxlY3RlZElkcygpO1xuXG4gICAgdGhpcy5pdGVtcyA9IHRoaXMuZ2V0R3JpZEl0ZW1zKCk7XG5cbiAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLnN0YXRlLnBpcGUoXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiB7XG4gICAgICAgIHJldHVybiBzLml0ZW1zLmxvYWRpbmc7XG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICk7XG5cbiAgICB0aGlzLnNvcnRGaWVsZCA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIGlmIChzLnNvcnQgJiYgcy5zb3J0LmZpZWxkU2VsZWN0b3JzKSB7XG4gICAgICAgICAgcmV0dXJuIHMuc29ydC5maWVsZFNlbGVjdG9yc1swXTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgKTtcblxuICAgIHRoaXMuZ3JpZFN0YXRlXG4gICAgICAucGlwZShcbiAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5jb2x1bW5zLml0ZW1zKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKHRoaXMuYXJyYXlzRXF1YWwpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjb2x1bW5zKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0aGlzLmhpZGRlbkNvbHVtbnMpIHtcbiAgICAgICAgICBnZXRWYWx1ZSh0aGlzLmhpZGRlbkNvbHVtbnMsIChoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ncmlkRGlzcGF0Y2hlci5uZXh0KFxuICAgICAgICAgICAgICBuZXcgTGlzdFZpZXdEaXNwbGF5ZWRHcmlkQ29sdW1uc0xvYWRBY3Rpb24oXG4gICAgICAgICAgICAgICAgY29sdW1ucy5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0geC5pZCB8fCB4LmZpZWxkO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGhpZGRlbkNvbHVtbnMuaW5kZXhPZihpZCkgPT09IC0xO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXllZENvbHVtbnMpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGdldFZhbHVlKHRoaXMuZGlzcGxheWVkQ29sdW1ucywgKGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyaWREaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgICAgIG5ldyBMaXN0Vmlld0Rpc3BsYXllZEdyaWRDb2x1bW5zTG9hZEFjdGlvbihcbiAgICAgICAgICAgICAgICBjb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICh4KSA9PiBkaXNwbGF5ZWRDb2x1bW5zLmluZGV4T2YoeC5pZCB8fCB4LmZpZWxkKSAhPT0gLTFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdyaWREaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgICBuZXcgTGlzdFZpZXdEaXNwbGF5ZWRHcmlkQ29sdW1uc0xvYWRBY3Rpb24oXG4gICAgICAgICAgICAgIGNvbHVtbnMuZmlsdGVyKCh4KSA9PiAheC5oaWRkZW4pLFxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmN1cnJlbnRTZWFyY2hUZXh0ID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5zZWFyY2guc2VhcmNoVGV4dCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICApO1xuXG4gICAgdGhpcy5ncmlkRGlzcGF0Y2hlci5uZXh0KFxuICAgICAgbmV3IExpc3RWaWV3R3JpZENvbHVtbnNMb2FkQWN0aW9uKGNvbHVtbk1vZGVscywgdHJ1ZSlcbiAgICApO1xuXG4gICAgdGhpcy5oYW5kbGVDb2x1bW5DaGFuZ2UoKTtcblxuICAgIGlmICh0aGlzLmVuYWJsZU11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLmRpc3BhdGNoZXIudG9vbGJhclNob3dNdWx0aXNlbGVjdFRvb2xiYXIodHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0SW5saW5lRGVsZXRlTWVzc2FnZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHVzZXIgbWFrZXMgc2VsZWN0aW9uLCB0ZWxsIGxpc3QtYnVpbGRlciB0byB1cGRhdGUgdGhlIGxpc3Qgc3RhdGUuXG4gICAqIFRoaXMgbG9naWMgc2hvdWxkIG9ubHkgcnVuIG9uIHVzZXIgaW50ZXJhY3Rpb24gLSBOT1QgcHJvZ3JhbW1hdGljIHVwZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgb25NdWx0aXNlbGVjdFNlbGVjdGlvbkNoYW5nZShcbiAgICBldmVudDogU2t5R3JpZFNlbGVjdGVkUm93c01vZGVsQ2hhbmdlXG4gICk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGV2ZW50LnNvdXJjZSA9PT0gU2t5R3JpZFNlbGVjdGVkUm93c1NvdXJjZS5DaGVja2JveENoYW5nZSB8fFxuICAgICAgZXZlbnQuc291cmNlID09PSBTa3lHcmlkU2VsZWN0ZWRSb3dzU291cmNlLlJvd0NsaWNrXG4gICAgKSB7XG4gICAgICB0aGlzLnN0YXRlXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG9ic2VydmFibGVNYXAoKHMpID0+IHMuaXRlbXMuaXRlbXMpLFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChpdGVtczogTGlzdEl0ZW1Nb2RlbFtdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3SXRlbUlkcyA9IHRoaXMuYXJyYXlJbnRlcnNlY3Rpb24oXG4gICAgICAgICAgICBpdGVtcy5tYXAoKGkpID0+IGkuaWQpLFxuICAgICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFNlbGVjdGVkSWRzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBuZXdJZHMgPSBpdGVtcy5maWx0ZXIoKGkpID0+IGkuaXNTZWxlY3RlZCkubWFwKChpKSA9PiBpLmlkKTtcblxuICAgICAgICAgIC8vIENoZWNrIGZvciBkZXNlbGVjdGVkIGlkcyAmIHNlbmQgbWVzc2FnZSB0byBkaXNwYXRjaGVyLlxuICAgICAgICAgIGNvbnN0IGRlc2VsZWN0ZWRJZHMgPSB0aGlzLmFycmF5RGlmZihuZXdJdGVtSWRzLCBuZXdJZHMpO1xuICAgICAgICAgIGlmIChkZXNlbGVjdGVkSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci5zZXRTZWxlY3RlZChkZXNlbGVjdGVkSWRzLCBmYWxzZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2sgZm9yIHNlbGVjdGVkIGlkcyAmIHNlbmQgbWVzc2FnZSB0byBkaXNwYXRjaGVyLlxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gdGhpcy5hcnJheURpZmYobmV3SWRzLCBuZXdJdGVtSWRzKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnNldFNlbGVjdGVkKHNlbGVjdGVkSWRzLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5JZHNDaGFuZ2VkKHNlbGVjdGVkQ29sdW1uSWRzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbklkcy5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoY3VycmVudElkcykgPT4ge1xuICAgICAgaWYgKCF0aGlzLmFycmF5c0VxdWFsKHNlbGVjdGVkQ29sdW1uSWRzLCBjdXJyZW50SWRzKSkge1xuICAgICAgICB0aGlzLmdyaWRTdGF0ZVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4gcy5jb2x1bW5zLml0ZW1zKSxcbiAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoY29sdW1ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheWVkQ29sdW1ucyA9IHNlbGVjdGVkQ29sdW1uSWRzLm1hcChcbiAgICAgICAgICAgICAgKGNvbHVtbklkKSA9PiBjb2x1bW5zLmZpbHRlcigoYykgPT4gYy5pZCA9PT0gY29sdW1uSWQpWzBdXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncmlkRGlzcGF0Y2hlci5uZXh0KFxuICAgICAgICAgICAgICBuZXcgTGlzdFZpZXdEaXNwbGF5ZWRHcmlkQ29sdW1uc0xvYWRBY3Rpb24oZGlzcGxheWVkQ29sdW1ucywgdHJ1ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsUm93RGVsZXRlKGFyZ3M6IFNreUxpc3RWaWV3R3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RlbGV0ZUNhbmNlbC5lbWl0KGFyZ3MpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpcm1Sb3dEZWxldGUoYXJnczogU2t5TGlzdFZpZXdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbmZpcm0uZW1pdChhcmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0RmllbGRDaGFuZ2VkKHNvcnRGaWVsZDogTGlzdFNvcnRGaWVsZFNlbGVjdG9yTW9kZWwpIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIuc29ydFNldEZpZWxkU2VsZWN0b3JzKFtzb3J0RmllbGRdKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvblZpZXdBY3RpdmUoKSB7XG4gICAgLypcbiAgICAgIFJhbiBpbnRvIHByb2JsZW0gd2hlcmUgc3RhdGUgdXBkYXRlcyB3ZXJlIGNvbnN1bWVkIG91dCBvZiBvcmRlci4gRm9yIGV4YW1wbGUsIG9uIHNlYXJjaCB0ZXh0XG4gICAgICB1cGRhdGUsIHRoZSBzZWFyY2hUZXh0IHVwZGF0ZSB3YXMgY29uc3VtZWQgYWZ0ZXIgdGhlIHJlc3VsdGluZyBsaXN0IGl0ZW0gdXBkYXRlLiBTY2FubmluZyB0aGVcbiAgICAgIHByZXZpb3VzIHZhbHVlIG9mIGl0ZW1zIGxhc3RVcGRhdGUgZW5zdXJlcyB0aGF0IHdlIG9ubHkgcmVjZWl2ZSB0aGUgbGF0ZXN0IGl0ZW1zLlxuICAgICovXG4gICAgdGhpcy5ncmlkU3RhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgc2NhbigocHJldmlvdXNWYWx1ZTogR3JpZFN0YXRlTW9kZWwsIG5ld1ZhbHVlOiBHcmlkU3RhdGVNb2RlbCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUuZGlzcGxheWVkQ29sdW1ucy5sYXN0VXBkYXRlID5cbiAgICAgICAgICAgIG5ld1ZhbHVlLmRpc3BsYXllZENvbHVtbnMubGFzdFVwZGF0ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmRpc3BsYXllZENvbHVtbnMuaXRlbXMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCh0aGlzLmFycmF5c0VxdWFsKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGlzcGxheWVkQ29sdW1ucykgPT4ge1xuICAgICAgICBjb25zdCBzZXRGdW5jdGlvbnMgPVxuICAgICAgICAgIHRoaXMuc2VhcmNoRnVuY3Rpb24gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBbdGhpcy5zZWFyY2hGdW5jdGlvbl1cbiAgICAgICAgICAgIDogZGlzcGxheWVkQ29sdW1uc1xuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAoY29sdW1uKSA9PiAoZGF0YTogYW55LCBzZWFyY2hUZXh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5zZWFyY2hGdW5jdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICBnZXREYXRhKGRhdGEsIGNvbHVtbi5maWVsZCksXG4gICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IGMgIT09IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgocykgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci5zZWFyY2hTZXRPcHRpb25zKFxuICAgICAgICAgICAgbmV3IExpc3RTZWFyY2hNb2RlbCh7XG4gICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHMuc2VhcmNoLnNlYXJjaFRleHQsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uczogc2V0RnVuY3Rpb25zLFxuICAgICAgICAgICAgICBmaWVsZFNlbGVjdG9yczogZGlzcGxheWVkQ29sdW1ucy5tYXAoKGQpID0+IGQuZmllbGQpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0SW5saW5lRGVsZXRlTWVzc2FnZXMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodGhpcy5tZXNzYWdlU3RyZWFtKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTdHJlYW0uc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lMaXN0Vmlld0dyaWRNZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFNreUxpc3RWaWV3R3JpZE1lc3NhZ2VUeXBlLkFib3J0RGVsZXRlUm93KSB7XG4gICAgICAgICAgdGhpcy5ncmlkTWVzc2FnZVN0cmVhbS5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6IFNreUdyaWRNZXNzYWdlVHlwZS5BYm9ydERlbGV0ZVJvdyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgYWJvcnREZWxldGVSb3c6IG1lc3NhZ2UuZGF0YS5hYm9ydERlbGV0ZVJvdyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgbWVzc2FnZS50eXBlID09PSBTa3lMaXN0Vmlld0dyaWRNZXNzYWdlVHlwZS5Qcm9tcHREZWxldGVSb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5ncmlkTWVzc2FnZVN0cmVhbS5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6IFNreUdyaWRNZXNzYWdlVHlwZS5Qcm9tcHREZWxldGVSb3csXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIHByb21wdERlbGV0ZVJvdzogbWVzc2FnZS5kYXRhLnByb21wdERlbGV0ZVJvdyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29sdW1uQ2hhbmdlKCkge1xuICAgIC8vIHdhdGNoIGZvciBjaGFuZ2VzIGluIGNvbHVtbiBjb21wb25lbnRzXG4gICAgdGhpcy5jb2x1bW5Db21wb25lbnRzLmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY29sdW1uQ29tcG9uZW50cykgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5Nb2RlbHMgPSB0aGlzLmNvbHVtbkNvbXBvbmVudHMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNreUdyaWRDb2x1bW5Nb2RlbChjb2x1bW4udGVtcGxhdGUsIGNvbHVtbik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyaWREaXNwYXRjaGVyLm5leHQoXG4gICAgICAgICAgbmV3IExpc3RWaWV3R3JpZENvbHVtbnNMb2FkQWN0aW9uKGNvbHVtbk1vZGVscywgdHJ1ZSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gV2F0Y2ggZm9yIGNvbHVtbiBoZWFkaW5nIGNoYW5nZXM6XG4gICAgdGhpcy5jb2x1bW5Db21wb25lbnRzLmZvckVhY2goKGNvbXApID0+IHtcbiAgICAgIGNvbXAuaGVhZGluZ01vZGVsQ2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlOiBTa3lHcmlkQ29sdW1uSGVhZGluZ01vZGVsQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnVwZGF0ZUNvbHVtbkhlYWRpbmcoY2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgICBjb21wLmRlc2NyaXB0aW9uTW9kZWxDaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2U6IFNreUdyaWRDb2x1bW5EZXNjcmlwdGlvbk1vZGVsQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnVwZGF0ZUNvbHVtbkRlc2NyaXB0aW9uKGNoYW5nZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkSXRlbXMoKTogT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbU1vZGVsPj4ge1xuICAgIC8qXG4gICAgICBTYW1lIHByb2JsZW0gYXMgYWJvdmUuIFdlIHNob3VsZCBtb3ZlIGZyb20gaGF2aW5nIGEgc3RhdGUgb2JqZWN0IG9ic2VydmFibGUgd2l0aCBhIGJ1bmNoIG9mXG4gICAgICBzdGF0aWMgcHJvcGVydGllcyB0byBhIHN0YXRpYyBzdGF0ZSBvYmplY3Qgd2l0aCBvYnNlcnZhYmxlIHByb3BlcnRpZXMgdGhhdCB5b3UgY2FuIHN1YnNjcmliZVxuICAgICAgdG8uXG4gICAgKi9cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgb2JzZXJ2YWJsZU1hcCgocykgPT4ge1xuICAgICAgICByZXR1cm4gcy5pdGVtcztcbiAgICAgIH0pLFxuICAgICAgc2NhbihcbiAgICAgICAgKFxuICAgICAgICAgIHByZXZpb3VzVmFsdWU6IEFzeW5jTGlzdDxMaXN0SXRlbU1vZGVsPixcbiAgICAgICAgICBuZXdWYWx1ZTogQXN5bmNMaXN0PExpc3RJdGVtTW9kZWw+XG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91c1ZhbHVlLmxhc3RVcGRhdGUgPiBuZXdWYWx1ZS5sYXN0VXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIG9ic2VydmFibGVNYXAoKHJlc3VsdDogQXN5bmNMaXN0PExpc3RJdGVtTW9kZWw+KSA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHQuaXRlbXM7XG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZElkcygpOiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+IHtcbiAgICAvKlxuICAgICAgU2FtZSBwcm9ibGVtIGFzIGFib3ZlLiBXZSBzaG91bGQgbW92ZSBmcm9tIGhhdmluZyBhIHN0YXRlIG9iamVjdCBvYnNlcnZhYmxlIHdpdGggYSBidW5jaCBvZlxuICAgICAgc3RhdGljIHByb3BlcnRpZXMgdG8gYSBzdGF0aWMgc3RhdGUgb2JqZWN0IHdpdGggb2JzZXJ2YWJsZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbiBzdWJzY3JpYmVcbiAgICAgIHRvLlxuICAgICovXG4gICAgcmV0dXJuIHRoaXMuZ3JpZFN0YXRlLnBpcGUoXG4gICAgICBvYnNlcnZhYmxlTWFwKChzKSA9PiBzLmRpc3BsYXllZENvbHVtbnMpLFxuICAgICAgc2NhbihcbiAgICAgICAgKFxuICAgICAgICAgIHByZXZpb3VzVmFsdWU6IEFzeW5jTGlzdDxTa3lHcmlkQ29sdW1uTW9kZWw+LFxuICAgICAgICAgIG5ld1ZhbHVlOiBBc3luY0xpc3Q8U2t5R3JpZENvbHVtbk1vZGVsPlxuICAgICAgICApID0+IHtcbiAgICAgICAgICBpZiAocHJldmlvdXNWYWx1ZS5sYXN0VXBkYXRlID4gbmV3VmFsdWUubGFzdFVwZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBvYnNlcnZhYmxlTWFwKChyZXN1bHQ6IEFzeW5jTGlzdDxTa3lHcmlkQ29sdW1uTW9kZWw+KSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcCgoY29sdW1uOiBTa3lHcmlkQ29sdW1uTW9kZWwpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29sdW1uLmlkIHx8IGNvbHVtbi5maWVsZDtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91c1ZhbHVlOiBzdHJpbmdbXSwgbmV3VmFsdWU6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhdmVDb2x1bW5JZHNDaGFuZ2VkKHByZXZpb3VzVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGF2ZUNvbHVtbklkc0NoYW5nZWQocHJldmlvdXNWYWx1ZTogc3RyaW5nW10sIG5ld1ZhbHVlOiBzdHJpbmdbXSkge1xuICAgIGlmIChwcmV2aW91c1ZhbHVlLmxlbmd0aCAhPT0gbmV3VmFsdWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uSWRzQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldmlvdXNWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAocHJldmlvdXNWYWx1ZVtpXSAhPT0gbmV3VmFsdWVbaV0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbklkc0NoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0ZWRNYXBFcXVhbChcbiAgICBwcmV2OiBMaXN0U2VsZWN0ZWRNb2RlbCxcbiAgICBuZXh0OiBMaXN0U2VsZWN0ZWRNb2RlbFxuICApOiBib29sZWFuIHtcbiAgICBpZiAocHJldi5zZWxlY3RlZElkTWFwLnNpemUgIT09IG5leHQuc2VsZWN0ZWRJZE1hcC5zaXplKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXTtcbiAgICBuZXh0LnNlbGVjdGVkSWRNYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gbmV4dC5zZWxlY3RlZElkTWFwLmdldChrZXkpO1xuICAgICAgaWYgKHZhbHVlICE9PSBwcmV2LnNlbGVjdGVkSWRNYXAuZ2V0KGtleSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhcnJheURpZmYoYXJyQTogQXJyYXk8YW55PiwgYXJyQjogQXJyYXk8YW55Pik6IEFycmF5PGFueT4ge1xuICAgIHJldHVybiBhcnJBLmZpbHRlcigoaSkgPT4gYXJyQi5pbmRleE9mKGkpIDwgMCk7XG4gIH1cblxuICBwcml2YXRlIGFycmF5SW50ZXJzZWN0aW9uKGFyckE6IEFycmF5PGFueT4sIGFyckI6IEFycmF5PGFueT4pOiBBcnJheTxhbnk+IHtcbiAgICByZXR1cm4gYXJyQS5maWx0ZXIoKHZhbHVlKSA9PiAtMSAhPT0gYXJyQi5pbmRleE9mKHZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIGFycmF5c0VxdWFsKGFycmF5QTogYW55W10sIGFycmF5QjogYW55W10pIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXJyYXlBLmxlbmd0aCA9PT0gYXJyYXlCLmxlbmd0aCAmJlxuICAgICAgYXJyYXlBLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBhcnJheUJbaW5kZXhdKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJhY3RpdmUgfCBhc3luY1wiPlxuICA8c2t5LWdyaWRcbiAgICBbY29sdW1uc109XCJjb2x1bW5zIHwgYXN5bmNcIlxuICAgIFtkYXRhXT1cIml0ZW1zIHwgYXN5bmNcIlxuICAgIFtlbmFibGVNdWx0aXNlbGVjdF09XCJlbmFibGVNdWx0aXNlbGVjdFwiXG4gICAgW2ZpdF09XCJmaXRcIlxuICAgIFtoZWlnaHRdPVwiZ3JpZEhlaWdodCB8IGFzeW5jXCJcbiAgICBbaGlnaGxpZ2h0VGV4dF09XCJcbiAgICAgIGhpZ2hsaWdodFNlYXJjaFRleHQgPyAoY3VycmVudFNlYXJjaFRleHQgfCBhc3luYykgOiB1bmRlZmluZWRcbiAgICBcIlxuICAgIFtyb3dIaWdobGlnaHRlZElkXT1cInJvd0hpZ2hsaWdodGVkSWRcIlxuICAgIFttZXNzYWdlU3RyZWFtXT1cImdyaWRNZXNzYWdlU3RyZWFtXCJcbiAgICBbc2VsZWN0ZWRDb2x1bW5JZHNdPVwic2VsZWN0ZWRDb2x1bW5JZHMgfCBhc3luY1wiXG4gICAgW3NlbGVjdGVkUm93SWRzXT1cIm11bHRpc2VsZWN0U2VsZWN0ZWRJZHNcIlxuICAgIFtzZXR0aW5nc0tleV09XCJzZXR0aW5nc0tleVwiXG4gICAgW3NvcnRGaWVsZF09XCJzb3J0RmllbGQgfCBhc3luY1wiXG4gICAgW3dpZHRoXT1cImdyaWRXaWR0aCB8IGFzeW5jXCJcbiAgICAobXVsdGlzZWxlY3RTZWxlY3Rpb25DaGFuZ2UpPVwib25NdWx0aXNlbGVjdFNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAocm93RGVsZXRlQ2FuY2VsKT1cImNhbmNlbFJvd0RlbGV0ZSgkZXZlbnQpXCJcbiAgICAocm93RGVsZXRlQ29uZmlybSk9XCJjb25maXJtUm93RGVsZXRlKCRldmVudClcIlxuICAgIChzZWxlY3RlZENvbHVtbklkc0NoYW5nZSk9XCJjb2x1bW5JZHNDaGFuZ2VkKCRldmVudClcIlxuICAgIChzb3J0RmllbGRDaGFuZ2UpPVwic29ydEZpZWxkQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAjc2t5R3JpZFxuICA+XG4gIDwvc2t5LWdyaWQ+XG4gIDxza3ktd2FpdCBbaXNXYWl0aW5nXT1cImxvYWRpbmcgfCBhc3luY1wiPiA8L3NreS13YWl0PlxuPC9kaXY+XG4iXX0=
|
|
@@ -11,19 +11,19 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
*/
|
|
12
12
|
export class SkyListViewGridModule {
|
|
13
13
|
}
|
|
14
|
-
SkyListViewGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
15
|
-
SkyListViewGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1
|
|
14
|
+
SkyListViewGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
SkyListViewGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewGridModule, declarations: [SkyListViewGridComponent], imports: [CommonModule,
|
|
16
16
|
SkyWaitModule,
|
|
17
17
|
SkyGridModule,
|
|
18
18
|
SkyListBuilderViewGridsResourcesModule], exports: [SkyListViewGridComponent,
|
|
19
19
|
SkyListColumnSelectorActionModule,
|
|
20
20
|
SkyGridModule] });
|
|
21
|
-
SkyListViewGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1
|
|
21
|
+
SkyListViewGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewGridModule, imports: [CommonModule,
|
|
22
22
|
SkyWaitModule,
|
|
23
23
|
SkyGridModule,
|
|
24
24
|
SkyListBuilderViewGridsResourcesModule, SkyListColumnSelectorActionModule,
|
|
25
25
|
SkyGridModule] });
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListViewGridModule, decorators: [{
|
|
27
27
|
type: NgModule,
|
|
28
28
|
args: [{
|
|
29
29
|
declarations: [SkyListViewGridComponent],
|
|
@@ -7,9 +7,9 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
*/
|
|
8
8
|
export class GridStateDispatcher extends StateDispatcher {
|
|
9
9
|
}
|
|
10
|
-
GridStateDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
11
|
-
GridStateDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
10
|
+
GridStateDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: GridStateDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
11
|
+
GridStateDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: GridStateDispatcher });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: GridStateDispatcher, decorators: [{
|
|
13
13
|
type: Injectable
|
|
14
14
|
}] });
|
|
15
15
|
/**
|
|
@@ -18,9 +18,9 @@ export class GridState extends StateNode {
|
|
|
18
18
|
.begin();
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
GridState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
22
|
-
GridState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
21
|
+
GridState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: GridState, deps: [{ token: i1.GridStateModel }, { token: i2.GridStateDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
GridState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: GridState });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: GridState, decorators: [{
|
|
24
24
|
type: Injectable
|
|
25
25
|
}], ctorParameters: function () { return [{ type: i1.GridStateModel }, { type: i2.GridStateDispatcher }]; } });
|
|
26
26
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1zdGF0ZS5zdGF0ZS1ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3QtYnVpbGRlci12aWV3LWdyaWRzL3NyYy9saWIvbW9kdWxlcy9saXN0LXZpZXctZ3JpZC9zdGF0ZS9ncmlkLXN0YXRlLnN0YXRlLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7QUFJOUc7OztHQUdHO0FBRUgsTUFBTSxPQUFPLFNBQVUsU0FBUSxTQUF5QjtJQUN0RCwwQkFBMEI7SUFDMUIsWUFBWSxZQUE0QixFQUFFLFVBQStCO1FBQ3ZFLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsK0JBQStCLENBQUM7YUFDdEQsUUFBUSxDQUFDLGtCQUFrQixFQUFFLHdDQUF3QyxDQUFDO2FBQ3RFLEtBQUssRUFBRSxDQUFDO0lBQ2IsQ0FBQzs7c0dBUlUsU0FBUzswR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdGF0ZU5vZGUgfSBmcm9tICdAc2t5dXgvbGlzdC1idWlsZGVyLWNvbW1vbic7XG5cbmltcG9ydCB7IExpc3RWaWV3R3JpZENvbHVtbnNPcmNoZXN0cmF0b3IgfSBmcm9tICcuL2NvbHVtbnMvY29sdW1ucy5vcmNoZXN0cmF0b3InO1xuaW1wb3J0IHsgTGlzdFZpZXdEaXNwbGF5ZWRHcmlkQ29sdW1uc09yY2hlc3RyYXRvciB9IGZyb20gJy4vZGlzcGxheWVkLWNvbHVtbnMvZGlzcGxheWVkLWNvbHVtbnMub3JjaGVzdHJhdG9yJztcbmltcG9ydCB7IEdyaWRTdGF0ZU1vZGVsIH0gZnJvbSAnLi9ncmlkLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IEdyaWRTdGF0ZURpc3BhdGNoZXIgfSBmcm9tICcuL2dyaWQtc3RhdGUucnhzdGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAZGVwcmVjYXRlZFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR3JpZFN0YXRlIGV4dGVuZHMgU3RhdGVOb2RlPEdyaWRTdGF0ZU1vZGVsPiB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxTdGF0ZTogR3JpZFN0YXRlTW9kZWwsIGRpc3BhdGNoZXI6IEdyaWRTdGF0ZURpc3BhdGNoZXIpIHtcbiAgICBzdXBlcihpbml0aWFsU3RhdGUsIGRpc3BhdGNoZXIpO1xuXG4gICAgdGhpcy5yZWdpc3RlcignY29sdW1ucycsIExpc3RWaWV3R3JpZENvbHVtbnNPcmNoZXN0cmF0b3IpXG4gICAgICAucmVnaXN0ZXIoJ2Rpc3BsYXllZENvbHVtbnMnLCBMaXN0Vmlld0Rpc3BsYXllZEdyaWRDb2x1bW5zT3JjaGVzdHJhdG9yKVxuICAgICAgLmJlZ2luKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -31,16 +31,16 @@ export class SkyListBuilderViewGridsResourcesProvider {
|
|
|
31
31
|
*/
|
|
32
32
|
export class SkyListBuilderViewGridsResourcesModule {
|
|
33
33
|
}
|
|
34
|
-
SkyListBuilderViewGridsResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
35
|
-
SkyListBuilderViewGridsResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1
|
|
36
|
-
SkyListBuilderViewGridsResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1
|
|
34
|
+
SkyListBuilderViewGridsResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListBuilderViewGridsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
35
|
+
SkyListBuilderViewGridsResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyListBuilderViewGridsResourcesModule, exports: [SkyI18nModule] });
|
|
36
|
+
SkyListBuilderViewGridsResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListBuilderViewGridsResourcesModule, providers: [
|
|
37
37
|
{
|
|
38
38
|
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
39
39
|
useClass: SkyListBuilderViewGridsResourcesProvider,
|
|
40
40
|
multi: true,
|
|
41
41
|
},
|
|
42
42
|
], imports: [SkyI18nModule] });
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyListBuilderViewGridsResourcesModule, decorators: [{
|
|
44
44
|
type: NgModule,
|
|
45
45
|
args: [{
|
|
46
46
|
exports: [SkyI18nModule],
|