@ai-table/grid 0.0.67 → 0.0.69

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.
Files changed (48) hide show
  1. package/core/context.d.ts +1 -0
  2. package/core/context.d.ts.map +1 -1
  3. package/esm2022/components/drag/drag.component.mjs +3 -3
  4. package/esm2022/core/context.mjs +3 -2
  5. package/esm2022/grid.component.mjs +3 -2
  6. package/esm2022/renderer/components/frozen-heads.component.mjs +123 -38
  7. package/esm2022/renderer/components/hover-cell.component.mjs +4 -3
  8. package/esm2022/renderer/components/hover-row-heads.component.mjs +3 -3
  9. package/esm2022/renderer/creations/create-cells.mjs +10 -5
  10. package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +7 -7
  11. package/esm2022/renderer/drawers/layout-drawer.mjs +7 -3
  12. package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +46 -30
  13. package/esm2022/renderer/renderer.component.mjs +7 -5
  14. package/esm2022/types/grid.mjs +1 -1
  15. package/esm2022/types/layout.mjs +1 -1
  16. package/esm2022/utils/cell.mjs +4 -1
  17. package/esm2022/utils/clipboard/copy.mjs +4 -4
  18. package/esm2022/utils/field/model/date.mjs +5 -1
  19. package/esm2022/utils/field/model/rich-text.mjs +6 -3
  20. package/esm2022/utils/match-keywords.mjs +2 -3
  21. package/esm2022/utils/position.mjs +6 -6
  22. package/esm2022/utils/visible-range.mjs +3 -3
  23. package/fesm2022/ai-table-grid.mjs +217 -91
  24. package/fesm2022/ai-table-grid.mjs.map +1 -1
  25. package/grid.component.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/renderer/components/frozen-heads.component.d.ts +39 -3
  28. package/renderer/components/frozen-heads.component.d.ts.map +1 -1
  29. package/renderer/components/hover-cell.component.d.ts.map +1 -1
  30. package/renderer/components/hover-row-heads.component.d.ts.map +1 -1
  31. package/renderer/creations/create-cells.d.ts.map +1 -1
  32. package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -1
  33. package/renderer/drawers/layout-drawer.d.ts +3 -1
  34. package/renderer/drawers/layout-drawer.d.ts.map +1 -1
  35. package/renderer/drawers/record-row-layout-drawer.d.ts.map +1 -1
  36. package/renderer/renderer.component.d.ts +1 -0
  37. package/renderer/renderer.component.d.ts.map +1 -1
  38. package/types/grid.d.ts +2 -0
  39. package/types/grid.d.ts.map +1 -1
  40. package/types/layout.d.ts +2 -0
  41. package/types/layout.d.ts.map +1 -1
  42. package/utils/cell.d.ts.map +1 -1
  43. package/utils/field/model/date.d.ts +2 -1
  44. package/utils/field/model/date.d.ts.map +1 -1
  45. package/utils/field/model/rich-text.d.ts +2 -1
  46. package/utils/field/model/rich-text.d.ts.map +1 -1
  47. package/utils/position.d.ts +1 -1
  48. package/utils/position.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
2
  import { KoShape, KoContainer } from '../../angular-konva';
3
- import { AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_OFFSET, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD_WIDTH, Colors } from '../../constants';
3
+ import { AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_OFFSET, AI_TABLE_ROW_DRAG_ICON_WIDTH, Colors } from '../../constants';
4
4
  import { AITableCheckType, AITableSelectAllState } from '../../types';
5
5
  import { createColumnHeads } from '../creations/create-heads';
6
6
  import { AITableFieldHead } from './field-head.component';
@@ -10,20 +10,43 @@ export class AITableFrozenColumnHeads {
10
10
  constructor() {
11
11
  this.config = input.required();
12
12
  this.coordinate = computed(() => {
13
- return this.config().coordinate;
13
+ const config = this.config();
14
+ if (!config)
15
+ return null;
16
+ return config.coordinate;
17
+ });
18
+ this.hiddenIndexColumn = computed(() => {
19
+ const context = this.context();
20
+ if (!context)
21
+ return false;
22
+ return context?.aiFieldConfig()?.hiddenIndexColumn;
23
+ });
24
+ this.context = computed(() => {
25
+ const config = this.config();
26
+ if (!config)
27
+ return null;
28
+ return config?.aiTable.context;
14
29
  });
15
30
  this.isChecked = computed(() => {
16
- // 目前只需要展示全部选中和空的状态
17
- return this.config().aiTable.selection().selectAllState === AITableSelectAllState.all;
31
+ const config = this.config();
32
+ if (!config)
33
+ return false;
34
+ return config.aiTable.selection().selectAllState === AITableSelectAllState.all;
18
35
  });
19
36
  this.fieldHeadHeight = computed(() => {
20
- return this.coordinate().rowInitSize;
37
+ const coord = this.coordinate();
38
+ if (!coord)
39
+ return 0;
40
+ return coord.rowInitSize;
21
41
  });
22
42
  this.headConfigs = computed(() => {
43
+ const coord = this.coordinate();
44
+ if (!coord)
45
+ return [];
23
46
  return createColumnHeads({
24
47
  ...this.config(),
25
48
  columnStartIndex: 0,
26
- columnStopIndex: this.coordinate().frozenColumnCount - 1
49
+ columnStopIndex: coord.frozenColumnCount - 1
27
50
  });
28
51
  });
29
52
  this.dragHeadBgConfig = computed(() => {
@@ -37,28 +60,39 @@ export class AITableFrozenColumnHeads {
37
60
  };
38
61
  });
39
62
  this.numberHeadBgConfig = computed(() => {
63
+ const ctx = this.context();
64
+ if (!ctx)
65
+ return { width: 0, height: 0 };
40
66
  return {
41
67
  x: AI_TABLE_OFFSET,
42
68
  y: AI_TABLE_OFFSET,
43
- width: AI_TABLE_ROW_HEAD_WIDTH,
69
+ width: ctx.rowHeadWidth() || 0,
44
70
  height: this.fieldHeadHeight(),
45
71
  fill: Colors.white,
46
72
  listening: false
47
73
  };
48
74
  });
49
- this.topLineConfig = {
50
- x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
51
- y: AI_TABLE_OFFSET,
52
- points: [0, 0, AI_TABLE_ROW_HEAD_WIDTH, 0],
53
- stroke: Colors.gray200,
54
- strokeWidth: 1,
55
- listening: false
56
- };
75
+ this.topLineConfig = computed(() => {
76
+ const ctx = this.context();
77
+ if (!ctx)
78
+ return { points: [0, 0, 0, 0] };
79
+ return {
80
+ x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
81
+ y: AI_TABLE_OFFSET,
82
+ points: [0, 0, ctx.rowHeadWidth(), 0],
83
+ stroke: Colors.gray200,
84
+ strokeWidth: 1,
85
+ listening: false
86
+ };
87
+ });
57
88
  this.bottomLineConfig = computed(() => {
89
+ const ctx = this.context();
90
+ if (!ctx)
91
+ return { points: [0, 0, 0, 0] };
58
92
  return {
59
93
  x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
60
94
  y: AI_TABLE_OFFSET,
61
- points: [AI_TABLE_ROW_HEAD_WIDTH, this.fieldHeadHeight(), 0, this.fieldHeadHeight()],
95
+ points: [ctx.rowHeadWidth(), this.fieldHeadHeight(), 0, this.fieldHeadHeight()],
62
96
  stroke: Colors.gray200,
63
97
  strokeWidth: 1,
64
98
  listening: false
@@ -76,32 +110,77 @@ export class AITableFrozenColumnHeads {
76
110
  };
77
111
  });
78
112
  this.headBgConfig = computed(() => {
79
- const { frozenColumnWidth } = this.coordinate();
113
+ const coord = this.coordinate();
114
+ const ctx = this.context();
115
+ if (!coord || !ctx)
116
+ return { width: 0, height: 0 };
80
117
  return {
81
- x: AI_TABLE_ROW_HEAD_WIDTH,
118
+ x: ctx.rowHeadWidth(),
82
119
  y: AI_TABLE_OFFSET,
83
- width: frozenColumnWidth + AI_TABLE_OFFSET,
120
+ width: coord.frozenColumnWidth + AI_TABLE_OFFSET,
84
121
  height: this.fieldHeadHeight(),
85
122
  stroke: Colors.gray200,
86
- strokeWidth: 1,
123
+ strokeWidth: this.hiddenIndexColumn() ? 0 : 1,
87
124
  fill: Colors.transparent,
88
- listening: false
125
+ listening: false,
126
+ zIndex: 10
89
127
  };
90
128
  });
129
+ this.cellLinesConfig = computed(() => {
130
+ const coord = this.coordinate();
131
+ const ctx = this.context();
132
+ if (!coord || !ctx)
133
+ return [];
134
+ return [
135
+ {
136
+ x: ctx.rowHeadWidth(),
137
+ y: AI_TABLE_OFFSET,
138
+ points: [0, 0, coord.frozenColumnWidth + AI_TABLE_OFFSET, 0],
139
+ stroke: Colors.gray200,
140
+ strokeWidth: 1,
141
+ listening: false,
142
+ zIndex: 10
143
+ },
144
+ {
145
+ x: ctx.rowHeadWidth(),
146
+ y: AI_TABLE_OFFSET,
147
+ points: [coord.frozenColumnWidth + AI_TABLE_OFFSET, 0, coord.frozenColumnWidth + AI_TABLE_OFFSET, this.fieldHeadHeight()],
148
+ stroke: Colors.gray200,
149
+ strokeWidth: 1,
150
+ listening: false,
151
+ zIndex: 10
152
+ },
153
+ {
154
+ x: ctx.rowHeadWidth(),
155
+ y: AI_TABLE_OFFSET,
156
+ points: [0, this.fieldHeadHeight(), coord.frozenColumnWidth + AI_TABLE_OFFSET, this.fieldHeadHeight()],
157
+ stroke: Colors.gray200,
158
+ strokeWidth: 1,
159
+ listening: false,
160
+ zIndex: 10
161
+ }
162
+ ];
163
+ });
91
164
  }
92
165
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableFrozenColumnHeads, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
166
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableFrozenColumnHeads, isStandalone: true, selector: "ai-table-frozen-column-heads", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
94
- <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
95
- <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
96
- <ko-line [config]="topLineConfig"></ko-line>
97
- <ko-line [config]="bottomLineConfig()"></ko-line>
98
- <ko-group>
99
- <ai-table-icon [config]="iconConfig()"></ai-table-icon>
100
- </ko-group>
167
+ <ko-rect [config]="headBgConfig()"></ko-rect>
168
+ @if (!hiddenIndexColumn()) {
169
+ <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
170
+ <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
171
+ <ko-line [config]="topLineConfig()"></ko-line>
172
+ <ko-line [config]="bottomLineConfig()"></ko-line>
173
+ <ko-group>
174
+ <ai-table-icon [config]="iconConfig()"></ai-table-icon>
175
+ </ko-group>
176
+ } @else {
177
+ @for (lineConfig of cellLinesConfig(); track $index) {
178
+ <ko-line [config]="lineConfig"></ko-line>
179
+ }
180
+ }
101
181
  @for (config of headConfigs(); track $index) {
102
182
  <ai-table-field-head [config]="config"></ai-table-field-head>
103
183
  }
104
- <ko-rect [config]="headBgConfig()"></ko-rect>
105
184
  `, isInline: true, dependencies: [{ kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableFieldHead, selector: "ai-table-field-head", inputs: ["config"] }, { kind: "component", type: AITableIcon, selector: "ai-table-icon", inputs: ["config"] }, { kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
185
  }
107
186
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableFrozenColumnHeads, decorators: [{
@@ -109,21 +188,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
109
188
  args: [{
110
189
  selector: 'ai-table-frozen-column-heads',
111
190
  template: `
112
- <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
113
- <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
114
- <ko-line [config]="topLineConfig"></ko-line>
115
- <ko-line [config]="bottomLineConfig()"></ko-line>
116
- <ko-group>
117
- <ai-table-icon [config]="iconConfig()"></ai-table-icon>
118
- </ko-group>
191
+ <ko-rect [config]="headBgConfig()"></ko-rect>
192
+ @if (!hiddenIndexColumn()) {
193
+ <ko-rect [config]="dragHeadBgConfig()"></ko-rect>
194
+ <ko-rect [config]="numberHeadBgConfig()"></ko-rect>
195
+ <ko-line [config]="topLineConfig()"></ko-line>
196
+ <ko-line [config]="bottomLineConfig()"></ko-line>
197
+ <ko-group>
198
+ <ai-table-icon [config]="iconConfig()"></ai-table-icon>
199
+ </ko-group>
200
+ } @else {
201
+ @for (lineConfig of cellLinesConfig(); track $index) {
202
+ <ko-line [config]="lineConfig"></ko-line>
203
+ }
204
+ }
119
205
  @for (config of headConfigs(); track $index) {
120
206
  <ai-table-field-head [config]="config"></ai-table-field-head>
121
207
  }
122
- <ko-rect [config]="headBgConfig()"></ko-rect>
123
208
  `,
124
209
  standalone: true,
125
210
  imports: [KoShape, AITableFieldHead, AITableIcon, KoContainer],
126
211
  changeDetection: ChangeDetectionStrategy.OnPush
127
212
  }]
128
213
  }] });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLWhlYWRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3JlbmRlcmVyL2NvbXBvbmVudHMvZnJvemVuLWhlYWRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1DQUFtQyxFQUNuQyx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsTUFBTSxFQUNULE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGdCQUFnQixFQUE0QixxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBcUIvQyxNQUFNLE9BQU8sd0JBQXdCO0lBbkJyQztRQW9CSSxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNEIsQ0FBQztRQUVwRCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0QixtQkFBbUI7WUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNB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QkFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO2FBQzNCLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN6QixNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEQsT0FBTztnQkFDSCxDQUFDLEVBQUUsdUJBQXVCO2dCQUMxQixDQUFDLEVBQUUsZUFBZTtnQkFDbEIsS0FBSyxFQUFFLGlCQUFpQixHQUFHLGVBQWU7Z0JBQzFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUM5QixNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3RCLFdBQVcsRUFBRSxDQUFDO2dCQUNkLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDeEIsU0FBUyxFQUFFLEtBQUs7YUFDbkIsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0tBQ047K0dBNUZZLHdCQUF3QjttR0FBeEIsd0JBQXdCLDhOQWpCdkI7Ozs7Ozs7Ozs7OztLQVlULDREQUVTLE9BQU8sK2hCQUFFLGdCQUFnQixvRkFBRSxXQUFXLDhFQUFFLFdBQVc7OzRGQUdwRCx3QkFBd0I7a0JBbkJwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O0tBWVQ7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUM5RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0YWdlQ29uZmlnIH0gZnJvbSAna29udmEvbGliL1N0YWdlJztcbmltcG9ydCB7IEtvU2hhcGUsIEtvQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vYW5ndWxhci1rb252YSc7XG5pbXBvcnQge1xuICAgIEFJX1RBQkxFX0NFTExfUEFERElORyxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX1NFTEVDVF9DSEVDS0JPWCxcbiAgICBBSV9UQUJMRV9JQ09OX0NPTU1PTl9TSVpFLFxuICAgIEFJX1RBQkxFX09GRlNFVCxcbiAgICBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgIEFJX1RBQkxFX1JPV19IRUFEX1dJRFRILFxuICAgIENvbG9yc1xufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUlUYWJsZUNoZWNrVHlwZSwgQUlUYWJsZUNvbHVtbkhlYWRzQ29uZmlnLCBBSVRhYmxlU2VsZWN0QWxsU3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb2x1bW5IZWFkcyB9IGZyb20gJy4uL2NyZWF0aW9ucy9jcmVhdGUtaGVhZHMnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkSGVhZCB9IGZyb20gJy4vZmllbGQtaGVhZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQUlUYWJsZUljb24gfSBmcm9tICcuL2ljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1mcm96ZW4tY29sdW1uLWhlYWRzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8a28tcmVjdCBbY29uZmlnXT1cImRyYWdIZWFkQmdDb25maWcoKVwiPjwva28tcmVjdD5cbiAgICAgICAgPGtvLXJlY3QgW2NvbmZpZ109XCJudW1iZXJIZWFkQmdDb25maWcoKVwiPjwva28tcmVjdD5cbiAgICAgICAgPGtvLWxpbmUgW2NvbmZpZ109XCJ0b3BMaW5lQ29uZmlnXCI+PC9rby1saW5lPlxuICAgICAgICA8a28tbGluZSBbY29uZmlnXT1cImJvdHRvbUxpbmVDb25maWcoKVwiPjwva28tbGluZT5cbiAgICAgICAgPGtvLWdyb3VwPlxuICAgICAgICAgICAgPGFpLXRhYmxlLWljb24gW2NvbmZpZ109XCJpY29uQ29uZmlnKClcIj48L2FpLXRhYmxlLWljb24+XG4gICAgICAgIDwva28tZ3JvdXA+XG4gICAgICAgIEBmb3IgKGNvbmZpZyBvZiBoZWFkQ29uZmlncygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxhaS10YWJsZS1maWVsZC1oZWFkIFtjb25maWddPVwiY29uZmlnXCI+PC9haS10YWJsZS1maWVsZC1oZWFkPlxuICAgICAgICB9XG4gICAgICAgIDxrby1yZWN0IFtjb25maWddPVwiaGVhZEJnQ29uZmlnKClcIj48L2tvLXJlY3Q+XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLb1NoYXBlLCBBSVRhYmxlRmllbGRIZWFkLCBBSVRhYmxlSWNvbiwgS29Db250YWluZXJdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFJVGFibGVGcm96ZW5Db2x1bW5IZWFkcyB7XG4gICAgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8QUlUYWJsZUNvbHVtbkhlYWRzQ29uZmlnPigpO1xuXG4gICAgY29vcmRpbmF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnKCkuY29vcmRpbmF0ZTtcbiAgICB9KTtcblxuICAgIGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgLy8g55uu5YmN5Y+q6ZyA6KaB5bGV56S65YWo6YOo6YCJ5Lit5ZKM56m655qE54q25oCBXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLmFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0QWxsU3RhdGUgPT09IEFJVGFibGVTZWxlY3RBbGxTdGF0ZS5hbGw7XG4gICAgfSk7XG5cbiAgICBmaWVsZEhlYWRIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvb3JkaW5hdGUoKS5yb3dJbml0U2l6ZTtcbiAgICB9KTtcblxuICAgIGhlYWRDb25maWdzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlQ29sdW1uSGVhZHMoe1xuICAgICAgICAgICAgLi4udGhpcy5jb25maWcoKSxcbiAgICAgICAgICAgIGNvbHVtblN0YXJ0SW5kZXg6IDAsXG4gICAgICAgICAgICBjb2x1bW5TdG9wSW5kZXg6IHRoaXMuY29vcmRpbmF0ZSgpLmZyb3plbkNvbHVtbkNvdW50IC0gMVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRyYWdIZWFkQmdDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgd2lkdGg6IEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuZmllbGRIZWFkSGVpZ2h0KCksXG4gICAgICAgICAgICBmaWxsOiBDb2xvcnMud2hpdGUsXG4gICAgICAgICAgICBsaXN0ZW5pbmc6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBudW1iZXJIZWFkQmdDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgd2lkdGg6IEFJX1RBQkxFX1JPV19IRUFEX1dJRFRILFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmZpZWxkSGVhZEhlaWdodCgpLFxuICAgICAgICAgICAgZmlsbDogQ29sb3JzLndoaXRlLFxuICAgICAgICAgICAgbGlzdGVuaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgdG9wTGluZUNvbmZpZyA9IHtcbiAgICAgICAgeDogQUlfVEFCTEVfT0ZGU0VUICsgQUlfVEFCTEVfUk9XX0RSQUdfSUNPTl9XSURUSCxcbiAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICBwb2ludHM6IFswLCAwLCBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSCwgMF0sXG4gICAgICAgIHN0cm9rZTogQ29sb3JzLmdyYXkyMDAsXG4gICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICBsaXN0ZW5pbmc6IGZhbHNlXG4gICAgfTtcblxuICAgIGJvdHRvbUxpbmVDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBBSV9UQUJMRV9PRkZTRVQgKyBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgcG9pbnRzOiBbQUlfVEFCTEVfUk9XX0hFQURfV0lEVEgsIHRoaXMuZmllbGRIZWFkSGVpZ2h0KCksIDAsIHRoaXMuZmllbGRIZWFkSGVpZ2h0KCldLFxuICAgICAgICAgICAgc3Ryb2tlOiBDb2xvcnMuZ3JheTIwMCxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgbGlzdGVuaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgaWNvbkNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IEFJX1RBQkxFX0ZJRUxEX0hFQURfU0VMRUNUX0NIRUNLQk9YLFxuICAgICAgICAgICAgeDogQUlfVEFCTEVfQ0VMTF9QQURESU5HICsgQUlfVEFCTEVfUk9XX0RSQUdfSUNPTl9XSURUSCxcbiAgICAgICAgICAgIHk6ICh0aGlzLmZpZWxkSGVhZEhlaWdodCgpIC0gQUlfVEFCTEVfSUNPTl9DT01NT05fU0laRSkgLyAyLFxuICAgICAgICAgICAgdHlwZTogdGhpcy5pc0NoZWNrZWQoKSA/IEFJVGFibGVDaGVja1R5cGUuY2hlY2tlZCA6IEFJVGFibGVDaGVja1R5cGUudW5jaGVja2VkLFxuICAgICAgICAgICAgZmlsbDpcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ2hlY2tlZCgpIHx8ICh0aGlzLmNvbmZpZygpLnBvaW50UG9zaXRpb24udGFyZ2V0TmFtZSA9PT0gQUlfVEFCTEVfRklFTERfSEVBRF9TRUxFQ1RfQ0hFQ0tCT1ggJiYgIXRoaXMuaXNDaGVja2VkKCkpXG4gICAgICAgICAgICAgICAgICAgID8gQ29sb3JzLnByaW1hcnlcbiAgICAgICAgICAgICAgICAgICAgOiBDb2xvcnMuZ3JheTMwMFxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgaGVhZEJnQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGZyb3plbkNvbHVtbldpZHRoIH0gPSB0aGlzLmNvb3JkaW5hdGUoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IEFJX1RBQkxFX1JPV19IRUFEX1dJRFRILFxuICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgd2lkdGg6IGZyb3plbkNvbHVtbldpZHRoICsgQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmZpZWxkSGVhZEhlaWdodCgpLFxuICAgICAgICAgICAgc3Ryb2tlOiBDb2xvcnMuZ3JheTIwMCxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgZmlsbDogQ29sb3JzLnRyYW5zcGFyZW50LFxuICAgICAgICAgICAgbGlzdGVuaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH0pO1xufVxuIl19
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvemVuLWhlYWRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3JlbmRlcmVyL2NvbXBvbmVudHMvZnJvemVuLWhlYWRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1DQUFtQyxFQUNuQyx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLDRCQUE0QixFQUM1QixNQUFNLEVBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZ0JBQWdCLEVBQTRCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUEyQi9DLE1BQU0sT0FBTyx3QkFBd0I7SUF6QnJDO1FBMEJJLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUE0QixDQUFDO1FBRXBELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN6QixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sT0FB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QixHQUFHLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3RHLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTztvQkFDdEIsV0FBVyxFQUFFLENBQUM7b0JBQ2QsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLE1BQU0sRUFBRSxFQUFFO2lCQUNiO2FBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0tBQ047K0dBN0pZLHdCQUF3QjttR0FBeEIsd0JBQXdCLDhOQXZCdkI7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWtCVCw0REFFUyxPQUFPLCtoQkFBRSxnQkFBZ0Isb0ZBQUUsV0FBVyw4RUFBRSxXQUFXOzs0RkFHcEQsd0JBQXdCO2tCQXpCcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWtCVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7b0JBQzlELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RhZ2VDb25maWcgfSBmcm9tICdrb252YS9saWIvU3RhZ2UnO1xuaW1wb3J0IHsgS29TaGFwZSwgS29Db250YWluZXIgfSBmcm9tICcuLi8uLi9hbmd1bGFyLWtvbnZhJztcbmltcG9ydCB7XG4gICAgQUlfVEFCTEVfQ0VMTF9QQURESU5HLFxuICAgIEFJX1RBQkxFX0ZJRUxEX0hFQURfU0VMRUNUX0NIRUNLQk9YLFxuICAgIEFJX1RBQkxFX0lDT05fQ09NTU9OX1NJWkUsXG4gICAgQUlfVEFCTEVfT0ZGU0VULFxuICAgIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEgsXG4gICAgQ29sb3JzXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlQ2hlY2tUeXBlLCBBSVRhYmxlQ29sdW1uSGVhZHNDb25maWcsIEFJVGFibGVTZWxlY3RBbGxTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUNvbHVtbkhlYWRzIH0gZnJvbSAnLi4vY3JlYXRpb25zL2NyZWF0ZS1oZWFkcyc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGRIZWFkIH0gZnJvbSAnLi9maWVsZC1oZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSVRhYmxlSWNvbiB9IGZyb20gJy4vaWNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWZyb3plbi1jb2x1bW4taGVhZHMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxrby1yZWN0IFtjb25maWddPVwiaGVhZEJnQ29uZmlnKClcIj48L2tvLXJlY3Q+XG4gICAgICAgIEBpZiAoIWhpZGRlbkluZGV4Q29sdW1uKCkpIHtcbiAgICAgICAgICAgIDxrby1yZWN0IFtjb25maWddPVwiZHJhZ0hlYWRCZ0NvbmZpZygpXCI+PC9rby1yZWN0PlxuICAgICAgICAgICAgPGtvLXJlY3QgW2NvbmZpZ109XCJudW1iZXJIZWFkQmdDb25maWcoKVwiPjwva28tcmVjdD5cbiAgICAgICAgICAgIDxrby1saW5lIFtjb25maWddPVwidG9wTGluZUNvbmZpZygpXCI+PC9rby1saW5lPlxuICAgICAgICAgICAgPGtvLWxpbmUgW2NvbmZpZ109XCJib3R0b21MaW5lQ29uZmlnKClcIj48L2tvLWxpbmU+XG4gICAgICAgICAgICA8a28tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGFpLXRhYmxlLWljb24gW2NvbmZpZ109XCJpY29uQ29uZmlnKClcIj48L2FpLXRhYmxlLWljb24+XG4gICAgICAgICAgICA8L2tvLWdyb3VwPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBmb3IgKGxpbmVDb25maWcgb2YgY2VsbExpbmVzQ29uZmlnKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxrby1saW5lIFtjb25maWddPVwibGluZUNvbmZpZ1wiPjwva28tbGluZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChjb25maWcgb2YgaGVhZENvbmZpZ3MoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8YWktdGFibGUtZmllbGQtaGVhZCBbY29uZmlnXT1cImNvbmZpZ1wiPjwvYWktdGFibGUtZmllbGQtaGVhZD5cbiAgICAgICAgfVxuICAgIGAsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbS29TaGFwZSwgQUlUYWJsZUZpZWxkSGVhZCwgQUlUYWJsZUljb24sIEtvQ29udGFpbmVyXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlRnJvemVuQ29sdW1uSGVhZHMge1xuICAgIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVDb2x1bW5IZWFkc0NvbmZpZz4oKTtcblxuICAgIGNvb3JkaW5hdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGlmICghY29uZmlnKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5jb29yZGluYXRlO1xuICAgIH0pO1xuXG4gICAgaGlkZGVuSW5kZXhDb2x1bW4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQoKTtcbiAgICAgICAgaWYgKCFjb250ZXh0KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBjb250ZXh0Py5haUZpZWxkQ29uZmlnKCk/LmhpZGRlbkluZGV4Q29sdW1uO1xuICAgIH0pO1xuXG4gICAgY29udGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICAgICAgaWYgKCFjb25maWcpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gY29uZmlnPy5haVRhYmxlLmNvbnRleHQ7XG4gICAgfSk7XG5cbiAgICBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGlmICghY29uZmlnKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBjb25maWcuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RBbGxTdGF0ZSA9PT0gQUlUYWJsZVNlbGVjdEFsbFN0YXRlLmFsbDtcbiAgICB9KTtcblxuICAgIGZpZWxkSGVhZEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29vcmQgPSB0aGlzLmNvb3JkaW5hdGUoKTtcbiAgICAgICAgaWYgKCFjb29yZCkgcmV0dXJuIDA7XG4gICAgICAgIHJldHVybiBjb29yZC5yb3dJbml0U2l6ZTtcbiAgICB9KTtcblxuICAgIGhlYWRDb25maWdzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjb29yZCA9IHRoaXMuY29vcmRpbmF0ZSgpO1xuICAgICAgICBpZiAoIWNvb3JkKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBjcmVhdGVDb2x1bW5IZWFkcyh7XG4gICAgICAgICAgICAuLi50aGlzLmNvbmZpZygpLFxuICAgICAgICAgICAgY29sdW1uU3RhcnRJbmRleDogMCxcbiAgICAgICAgICAgIGNvbHVtblN0b3BJbmRleDogY29vcmQuZnJvemVuQ29sdW1uQ291bnQgLSAxXG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZHJhZ0hlYWRCZ0NvbmZpZyA9IGNvbXB1dGVkPFBhcnRpYWw8U3RhZ2VDb25maWc+PigoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB5OiBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB3aWR0aDogQUlfVEFCTEVfUk9XX0RSQUdfSUNPTl9XSURUSCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5maWVsZEhlYWRIZWlnaHQoKSxcbiAgICAgICAgICAgIGZpbGw6IENvbG9ycy53aGl0ZSxcbiAgICAgICAgICAgIGxpc3RlbmluZzogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIG51bWJlckhlYWRCZ0NvbmZpZyA9IGNvbXB1dGVkPFBhcnRpYWw8U3RhZ2VDb25maWc+PigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuY29udGV4dCgpO1xuICAgICAgICBpZiAoIWN0eCkgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgd2lkdGg6IGN0eC5yb3dIZWFkV2lkdGgoKSB8fCAwLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmZpZWxkSGVhZEhlaWdodCgpLFxuICAgICAgICAgICAgZmlsbDogQ29sb3JzLndoaXRlLFxuICAgICAgICAgICAgbGlzdGVuaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgdG9wTGluZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0KCk7XG4gICAgICAgIGlmICghY3R4KSByZXR1cm4geyBwb2ludHM6IFswLCAwLCAwLCAwXSB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogQUlfVEFCTEVfT0ZGU0VUICsgQUlfVEFCTEVfUk9XX0RSQUdfSUNPTl9XSURUSCxcbiAgICAgICAgICAgIHk6IEFJX1RBQkxFX09GRlNFVCxcbiAgICAgICAgICAgIHBvaW50czogWzAsIDAsIGN0eC5yb3dIZWFkV2lkdGgoKSwgMF0sXG4gICAgICAgICAgICBzdHJva2U6IENvbG9ycy5ncmF5MjAwLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICBsaXN0ZW5pbmc6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBib3R0b21MaW5lQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHQoKTtcbiAgICAgICAgaWYgKCFjdHgpIHJldHVybiB7IHBvaW50czogWzAsIDAsIDAsIDBdIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBBSV9UQUJMRV9PRkZTRVQgKyBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgcG9pbnRzOiBbY3R4LnJvd0hlYWRXaWR0aCgpLCB0aGlzLmZpZWxkSGVhZEhlaWdodCgpLCAwLCB0aGlzLmZpZWxkSGVhZEhlaWdodCgpXSxcbiAgICAgICAgICAgIHN0cm9rZTogQ29sb3JzLmdyYXkyMDAsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGxpc3RlbmluZzogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGljb25Db25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBBSV9UQUJMRV9GSUVMRF9IRUFEX1NFTEVDVF9DSEVDS0JPWCxcbiAgICAgICAgICAgIHg6IEFJX1RBQkxFX0NFTExfUEFERElORyArIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEgsXG4gICAgICAgICAgICB5OiAodGhpcy5maWVsZEhlYWRIZWlnaHQoKSAtIEFJX1RBQkxFX0lDT05fQ09NTU9OX1NJWkUpIC8gMixcbiAgICAgICAgICAgIHR5cGU6IHRoaXMuaXNDaGVja2VkKCkgPyBBSVRhYmxlQ2hlY2tUeXBlLmNoZWNrZWQgOiBBSVRhYmxlQ2hlY2tUeXBlLnVuY2hlY2tlZCxcbiAgICAgICAgICAgIGZpbGw6XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQoKSB8fCAodGhpcy5jb25maWcoKS5wb2ludFBvc2l0aW9uLnRhcmdldE5hbWUgPT09IEFJX1RBQkxFX0ZJRUxEX0hFQURfU0VMRUNUX0NIRUNLQk9YICYmICF0aGlzLmlzQ2hlY2tlZCgpKVxuICAgICAgICAgICAgICAgICAgICA/IENvbG9ycy5wcmltYXJ5XG4gICAgICAgICAgICAgICAgICAgIDogQ29sb3JzLmdyYXkzMDBcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGhlYWRCZ0NvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29vcmQgPSB0aGlzLmNvb3JkaW5hdGUoKTtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0KCk7XG4gICAgICAgIGlmICghY29vcmQgfHwgIWN0eCkgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogY3R4LnJvd0hlYWRXaWR0aCgpLFxuICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgd2lkdGg6IGNvb3JkLmZyb3plbkNvbHVtbldpZHRoICsgQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmZpZWxkSGVhZEhlaWdodCgpLFxuICAgICAgICAgICAgc3Ryb2tlOiBDb2xvcnMuZ3JheTIwMCxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiB0aGlzLmhpZGRlbkluZGV4Q29sdW1uKCkgPyAwIDogMSxcbiAgICAgICAgICAgIGZpbGw6IENvbG9ycy50cmFuc3BhcmVudCxcbiAgICAgICAgICAgIGxpc3RlbmluZzogZmFsc2UsXG4gICAgICAgICAgICB6SW5kZXg6IDEwXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjZWxsTGluZXNDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvb3JkID0gdGhpcy5jb29yZGluYXRlKCk7XG4gICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuY29udGV4dCgpO1xuICAgICAgICBpZiAoIWNvb3JkIHx8ICFjdHgpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB4OiBjdHgucm93SGVhZFdpZHRoKCksXG4gICAgICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIHBvaW50czogWzAsIDAsIGNvb3JkLmZyb3plbkNvbHVtbldpZHRoICsgQUlfVEFCTEVfT0ZGU0VULCAwXSxcbiAgICAgICAgICAgICAgICBzdHJva2U6IENvbG9ycy5ncmF5MjAwLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgICAgIGxpc3RlbmluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB4OiBjdHgucm93SGVhZFdpZHRoKCksXG4gICAgICAgICAgICAgICAgeTogQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIHBvaW50czogW2Nvb3JkLmZyb3plbkNvbHVtbldpZHRoICsgQUlfVEFCTEVfT0ZGU0VULCAwLCBjb29yZC5mcm96ZW5Db2x1bW5XaWR0aCArIEFJX1RBQkxFX09GRlNFVCwgdGhpcy5maWVsZEhlYWRIZWlnaHQoKV0sXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBDb2xvcnMuZ3JheTIwMCxcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICBsaXN0ZW5pbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMTBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgeDogY3R4LnJvd0hlYWRXaWR0aCgpLFxuICAgICAgICAgICAgICAgIHk6IEFJX1RBQkxFX09GRlNFVCxcbiAgICAgICAgICAgICAgICBwb2ludHM6IFswLCB0aGlzLmZpZWxkSGVhZEhlaWdodCgpLCBjb29yZC5mcm96ZW5Db2x1bW5XaWR0aCArIEFJX1RBQkxFX09GRlNFVCwgdGhpcy5maWVsZEhlYWRIZWlnaHQoKV0sXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBDb2xvcnMuZ3JheTIwMCxcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICBsaXN0ZW5pbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMTBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9KTtcbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/co
2
2
  import { KoContainer } from '../../angular-konva';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { AI_TABLE_CELL_PADDING, AI_TABLE_OFFSET, DEFAULT_TEXT_ALIGN_LEFT, DEFAULT_TEXT_ALIGN_RIGHT } from '../../constants';
5
- import { AITableQueries, getCellHorizontalPosition, getHoverCell, transformCellValue } from '../../utils';
5
+ import { AITableQueries, FieldModelMap, getCellHorizontalPosition, getHoverCell } from '../../utils';
6
6
  import { isSelectedField } from '../creations/create-cells';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common";
@@ -25,7 +25,8 @@ export class AITableHoverCells {
25
25
  }
26
26
  const { field, recordId } = hoverCell;
27
27
  const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, field._id]);
28
- const transformValue = transformCellValue(aiTable, field, cellValue);
28
+ const fieldModel = FieldModelMap[field.type];
29
+ const transformValue = fieldModel.transformCellValue(cellValue, { aiTable, field });
29
30
  const { rowHeight, columnCount, rowCount } = coordinate;
30
31
  const columnIndex = pointPosition.columnIndex;
31
32
  const rowIndex = pointPosition.rowIndex;
@@ -100,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
100
101
  changeDetection: ChangeDetectionStrategy.OnPush
101
102
  }]
102
103
  }] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2hvdmVyLWNlbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1SCxPQUFPLEVBQUUsY0FBYyxFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQW1CNUQsTUFBTSxPQUFPLGlCQUFpQjtJQWQ5QjtRQWVJLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFzQixDQUFDO1FBRTlDLGlCQUFZLEdBQXVFLEVBQUUsQ0FBQztRQUV0RixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTztnQkFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQzthQUMvQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxvQkFBZSxHQUFHLFFBQVEsQ0FBcUMsR0FBRyxFQUFFO1lBQ2hFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FB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QUM7b0JBQ3BDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS29Db250YWluZXIgfSBmcm9tICcuLi8uLi9hbmd1bGFyLWtvbnZhJztcbmltcG9ydCB7IEFJVGFibGVDZWxsc0NvbmZpZywgQUlUYWJsZUhvdmVyQ2VsbENvbmZpZyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZFR5cGUgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFJX1RBQkxFX0NFTExfUEFERElORywgQUlfVEFCTEVfT0ZGU0VULCBERUZBVUxUX1RFWFRfQUxJR05fTEVGVCwgREVGQVVMVF9URVhUX0FMSUdOX1JJR0hUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGVRdWVyaWVzLCBnZXRDZWxsSG9yaXpvbnRhbFBvc2l0aW9uLCBnZXRIb3ZlckNlbGwsIHRyYW5zZm9ybUNlbGxWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGlzU2VsZWN0ZWRGaWVsZCB9IGZyb20gJy4uL2NyZWF0aW9ucy9jcmVhdGUtY2VsbHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEhvdmVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWhvdmVyLWNlbGwnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoaG92ZXJDZWxsKCkpIHtcbiAgICAgICAgICAgIDxrby1ncm91cCBbY29uZmlnXT1cImdyb3VwQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImhvdmVyQ2VsbCgpIS5yZW5kZXJDb21wb25lbnREZWZpbml0aW9uOyBpbnB1dHM6IHsgY29uZmlnOiBob3ZlckNlbGxDb25maWcoKSB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2tvLWdyb3VwPlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLb0NvbnRhaW5lciwgQ29tbW9uTW9kdWxlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlSG92ZXJDZWxscyB7XG4gICAgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8QUlUYWJsZUNlbGxzQ29uZmlnPigpO1xuXG4gICAgY29tcG9uZW50TWFwOiBQYXJ0aWFsPFJlY29yZDxBSVRhYmxlRmllbGRUeXBlLCBDb25zdHJ1Y3RvcjxIb3ZlckNlbGxDb21wb25lbnQ+Pj4gPSB7fTtcblxuICAgIGdyb3VwQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogdGhpcy5ob3ZlckNlbGxDb25maWcoKT8ueCxcbiAgICAgICAgICAgIHk6IHRoaXMuaG92ZXJDZWxsQ29uZmlnKCk/LnlcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGhvdmVyQ2VsbENvbmZpZyA9IGNvbXB1dGVkPEFJVGFibGVIb3ZlckNlbGxDb25maWcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICAgICAgY29uc3QgeyBhaVRhYmxlLCBjb29yZGluYXRlLCByZWZlcmVuY2VzLCByZWFkb25seSwgYWN0aW9ucyB9ID0gdGhpcy5jb25maWcoKTtcbiAgICAgICAgY29uc3QgcG9pbnRQb3NpdGlvbiA9IGFpVGFibGUuY29udGV4dCEucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBob3ZlckNlbGwgPSB0aGlzLmhvdmVyQ2VsbCgpO1xuICAgICAgICBpZiAoIWhvdmVyQ2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgZmllbGQsIHJlY29yZElkIH0gPSBob3ZlckNlbGw7XG4gICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgW3JlY29yZElkLCBmaWVsZC5faWRdKTtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtVmFsdWUgPSB0cmFuc2Zvcm1DZWxsVmFsdWUoYWlUYWJsZSwgZmllbGQsIGNlbGxWYWx1ZSk7XG5cbiAgICAgICAgY29uc3QgeyByb3dIZWlnaHQsIGNvbHVtbkNvdW50LCByb3dDb3VudCB9ID0gY29vcmRpbmF0ZTtcbiAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBwb2ludFBvc2l0aW9uLmNvbHVtbkluZGV4O1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHBvaW50UG9zaXRpb24ucm93SW5kZXg7XG5cbiAgICAgICAgY29uc3QgeCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KGNvbHVtbkluZGV4KSArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBjb29yZGluYXRlLmdldENvbHVtbldpZHRoKGNvbHVtbkluZGV4KTtcbiAgICAgICAgY29uc3QgeSA9IGNvb3JkaW5hdGUuZ2V0Um93T2Zmc2V0KHJvd0luZGV4KSArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gZ2V0Q2VsbEhvcml6b250YWxQb3NpdGlvbih7XG4gICAgICAgICAgICBjb2x1bW5XaWR0aCxcbiAgICAgICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgY29sdW1uQ291bnRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICAgICAgICB0ZXh0QWxpZ246IERFRkFVTFRfVEVYVF9BTElHTl9MRUZUXG4gICAgICAgIH0gYXMgYW55O1xuICAgICAgICBjb25zdCB0ZXh0QWxpZ24gPSBzdHlsZS50ZXh0QWxpZ247XG4gICAgICAgIGNvbnN0IHJlbmRlclggPVxuICAgICAgICAgICAgdGV4dEFsaWduID09PSBERUZBVUxUX1RFWFRfQUxJR05fUklHSFRcbiAgICAgICAgICAgICAgICA/IGNvbHVtbldpZHRoIC0gQUlfVEFCTEVfQ0VMTF9QQURESU5HICsgQUlfVEFCTEVfT0ZGU0VUXG4gICAgICAgICAgICAgICAgOiBBSV9UQUJMRV9DRUxMX1BBRERJTkcgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgIGNvbnN0IHJlbmRlclkgPSAwIC0gQUlfVEFCTEVfT0ZGU0VUICogMjtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IEFJVGFibGVIb3ZlckNlbGxDb25maWcgPSB7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgIGNvb3JkaW5hdGUsXG4gICAgICAgICAgICB4LFxuICAgICAgICAgICAgeSxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgYWN0aW9ucyxcbiAgICAgICAgICAgIHJlbmRlcjoge1xuICAgICAgICAgICAgICAgIGFpVGFibGUsXG4gICAgICAgICAgICAgICAgcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgaXNBY3RpdmU6IGlzU2VsZWN0ZWRGaWVsZChmaWVsZC5faWQsIGFpVGFibGUpLFxuICAgICAgICAgICAgICAgIHg6IHJlbmRlclgsXG4gICAgICAgICAgICAgICAgeTogcmVuZGVyWSxcbiAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgcm93SGVpZ2h0LFxuICAgICAgICAgICAgICAgIGNlbGxWYWx1ZSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZSxcbiAgICAgICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIGhvdmVyQ2VsbCA9IGNvbXB1dGVkKCgpID0+IGdldEhvdmVyQ2VsbCh0aGlzLmNvbmZpZygpLmFpVGFibGUpKTtcbn1cbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2hvdmVyLWNlbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1SCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxZQUFZLEVBQXNCLE1BQU0sYUFBYSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBbUI1RCxNQUFNLE9BQU8saUJBQWlCO0lBZDlCO1FBZUksV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXNCLENBQUM7UUFFOUMsaUJBQVksR0FBdUUsRUFBRSxDQUFDO1FBRXRGLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QixPQUFPO2dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO2FBQy9CLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILG9CQUFlLEdBQUcsUUFBUSxDQUFxQyxHQUFHLEVBQUU7WUFDaEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFP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QUFFOzs7Ozs7O0tBT1Q7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7b0JBQ3BDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS29Db250YWluZXIgfSBmcm9tICcuLi8uLi9hbmd1bGFyLWtvbnZhJztcbmltcG9ydCB7IEFJVGFibGVDZWxsc0NvbmZpZywgQUlUYWJsZUhvdmVyQ2VsbENvbmZpZyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZFR5cGUgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFJX1RBQkxFX0NFTExfUEFERElORywgQUlfVEFCTEVfT0ZGU0VULCBERUZBVUxUX1RFWFRfQUxJR05fTEVGVCwgREVGQVVMVF9URVhUX0FMSUdOX1JJR0hUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGVRdWVyaWVzLCBGaWVsZE1vZGVsTWFwLCBnZXRDZWxsSG9yaXpvbnRhbFBvc2l0aW9uLCBnZXRIb3ZlckNlbGwsIHRyYW5zZm9ybUNlbGxWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGlzU2VsZWN0ZWRGaWVsZCB9IGZyb20gJy4uL2NyZWF0aW9ucy9jcmVhdGUtY2VsbHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEhvdmVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWhvdmVyLWNlbGwnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoaG92ZXJDZWxsKCkpIHtcbiAgICAgICAgICAgIDxrby1ncm91cCBbY29uZmlnXT1cImdyb3VwQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImhvdmVyQ2VsbCgpIS5yZW5kZXJDb21wb25lbnREZWZpbml0aW9uOyBpbnB1dHM6IHsgY29uZmlnOiBob3ZlckNlbGxDb25maWcoKSB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2tvLWdyb3VwPlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLb0NvbnRhaW5lciwgQ29tbW9uTW9kdWxlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlSG92ZXJDZWxscyB7XG4gICAgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8QUlUYWJsZUNlbGxzQ29uZmlnPigpO1xuXG4gICAgY29tcG9uZW50TWFwOiBQYXJ0aWFsPFJlY29yZDxBSVRhYmxlRmllbGRUeXBlLCBDb25zdHJ1Y3RvcjxIb3ZlckNlbGxDb21wb25lbnQ+Pj4gPSB7fTtcblxuICAgIGdyb3VwQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogdGhpcy5ob3ZlckNlbGxDb25maWcoKT8ueCxcbiAgICAgICAgICAgIHk6IHRoaXMuaG92ZXJDZWxsQ29uZmlnKCk/LnlcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGhvdmVyQ2VsbENvbmZpZyA9IGNvbXB1dGVkPEFJVGFibGVIb3ZlckNlbGxDb25maWcgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICAgICAgY29uc3QgeyBhaVRhYmxlLCBjb29yZGluYXRlLCByZWZlcmVuY2VzLCByZWFkb25seSwgYWN0aW9ucyB9ID0gdGhpcy5jb25maWcoKTtcbiAgICAgICAgY29uc3QgcG9pbnRQb3NpdGlvbiA9IGFpVGFibGUuY29udGV4dCEucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBob3ZlckNlbGwgPSB0aGlzLmhvdmVyQ2VsbCgpO1xuICAgICAgICBpZiAoIWhvdmVyQ2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgZmllbGQsIHJlY29yZElkIH0gPSBob3ZlckNlbGw7XG4gICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgW3JlY29yZElkLCBmaWVsZC5faWRdKTtcbiAgICAgICAgY29uc3QgZmllbGRNb2RlbCA9IEZpZWxkTW9kZWxNYXBbZmllbGQudHlwZV07XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybVZhbHVlID0gZmllbGRNb2RlbC50cmFuc2Zvcm1DZWxsVmFsdWUoY2VsbFZhbHVlLCB7IGFpVGFibGUsIGZpZWxkIH0pO1xuXG4gICAgICAgIGNvbnN0IHsgcm93SGVpZ2h0LCBjb2x1bW5Db3VudCwgcm93Q291bnQgfSA9IGNvb3JkaW5hdGU7XG4gICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gcG9pbnRQb3NpdGlvbi5jb2x1bW5JbmRleDtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSBwb2ludFBvc2l0aW9uLnJvd0luZGV4O1xuXG4gICAgICAgIGNvbnN0IHggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChjb2x1bW5JbmRleCkgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHkgPSBjb29yZGluYXRlLmdldFJvd09mZnNldChyb3dJbmRleCkgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgIGNvbnN0IHsgd2lkdGggfSA9IGdldENlbGxIb3Jpem9udGFsUG9zaXRpb24oe1xuICAgICAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgICAgICBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgIGNvbHVtbkNvdW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgICAgICAgdGV4dEFsaWduOiBERUZBVUxUX1RFWFRfQUxJR05fTEVGVFxuICAgICAgICB9IGFzIGFueTtcbiAgICAgICAgY29uc3QgdGV4dEFsaWduID0gc3R5bGUudGV4dEFsaWduO1xuICAgICAgICBjb25zdCByZW5kZXJYID1cbiAgICAgICAgICAgIHRleHRBbGlnbiA9PT0gREVGQVVMVF9URVhUX0FMSUdOX1JJR0hUXG4gICAgICAgICAgICAgICAgPyBjb2x1bW5XaWR0aCAtIEFJX1RBQkxFX0NFTExfUEFERElORyArIEFJX1RBQkxFX09GRlNFVFxuICAgICAgICAgICAgICAgIDogQUlfVEFCTEVfQ0VMTF9QQURESU5HICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICBjb25zdCByZW5kZXJZID0gMCAtIEFJX1RBQkxFX09GRlNFVCAqIDI7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBBSVRhYmxlSG92ZXJDZWxsQ29uZmlnID0ge1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByZWNvcmRJZCxcbiAgICAgICAgICAgIGFpVGFibGUsXG4gICAgICAgICAgICBjb29yZGluYXRlLFxuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHksXG4gICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIGFjdGlvbnMsXG4gICAgICAgICAgICByZW5kZXI6IHtcbiAgICAgICAgICAgICAgICBhaVRhYmxlLFxuICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBpc1NlbGVjdGVkRmllbGQoZmllbGQuX2lkLCBhaVRhYmxlKSxcbiAgICAgICAgICAgICAgICB4OiByZW5kZXJYLFxuICAgICAgICAgICAgICAgIHk6IHJlbmRlclksXG4gICAgICAgICAgICAgICAgY29sdW1uV2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgIHJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICBjZWxsVmFsdWUsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWUsXG4gICAgICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlc1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICBob3ZlckNlbGwgPSBjb21wdXRlZCgoKSA9PiBnZXRIb3ZlckNlbGwodGhpcy5jb25maWcoKS5haVRhYmxlKSk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
2
  import { KoContainer, KoShape } from '../../angular-konva';
3
- import { AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_SELECT_CHECKBOX, Colors } from '../../constants';
3
+ import { AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_SELECT_CHECKBOX, Colors } from '../../constants';
4
4
  import { AITableAreaType, AITableCheckType, AITableRowType } from '../../types';
5
5
  import { generateTargetName } from '../../utils';
6
6
  import { AITableIcon } from './icon.component';
@@ -53,7 +53,7 @@ export class AITableHoverRowHeads {
53
53
  y: coordinate.getRowOffset(rowIndex),
54
54
  bgConfig: {
55
55
  name: generateTargetName({ targetName: AI_TABLE_ROW_HEAD, recordId }),
56
- width: AI_TABLE_ROW_HEAD_WIDTH + 1,
56
+ width: context.rowHeadWidth() + 1,
57
57
  height: coordinate.rowHeight,
58
58
  fill: Colors.transparent
59
59
  }
@@ -129,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
129
129
  changeDetection: ChangeDetectionStrategy.OnPush
130
130
  }]
131
131
  }] });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItcm93LWhlYWRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3JlbmRlcmVyL2NvbXBvbmVudHMvaG92ZXItcm93LWhlYWRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1QixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixNQUFNLEVBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUErQyxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0gsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBdUIzQyxNQUFNLE9BQU8sb0JBQW9CO0lBckJqQztRQXNCSSxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBeUIsQ0FBQztRQUVqRCxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QixPQUFP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QkFBb0I7bUdBQXBCLG9CQUFvQiwwTkFuQm5COzs7Ozs7Ozs7Ozs7OztLQWNULDREQUVTLFdBQVcsNkVBQUUsT0FBTywraEJBQUUsV0FBVzs7NEZBR2xDLG9CQUFvQjtrQkFyQmhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7OztLQWNUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQztvQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLb0NvbnRhaW5lciwgS29TaGFwZSB9IGZyb20gJy4uLy4uL2FuZ3VsYXIta29udmEnO1xuaW1wb3J0IHtcbiAgICBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9ST1dfRFJBRyxcbiAgICBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgIEFJX1RBQkxFX1JPV19IRUFELFxuICAgIEFJX1RBQkxFX1JPV19IRUFEX1dJRFRILFxuICAgIEFJX1RBQkxFX1JPV19TRUxFQ1RfQ0hFQ0tCT1gsXG4gICAgQ29sb3JzXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSZW5kZXJlckNvbnRleHQgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVBcmVhVHlwZSwgQUlUYWJsZUNoZWNrVHlwZSwgQUlUYWJsZVBvaW50UG9zaXRpb24sIEFJVGFibGVSb3dIZWFkc0NvbmZpZywgQUlUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVRhcmdldE5hbWUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBBSVRhYmxlSWNvbiB9IGZyb20gJy4vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJhZ1R5cGUgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWhvdmVyLXJvdy1oZWFkcycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGZvciAoY29uZmlnIG9mIGhlYWRDb25maWdzKCk7IHRyYWNrIGNvbmZpZy5yZWNvcmRJZCkge1xuICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwieyB4OiAwLCB5OiBjb25maWcueSwgbmFtZTogJ2hvdmVyLWhlYWRzJyB9XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjb25maWcuYmdDb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGtvLXJlY3QgW2NvbmZpZ109XCJjb25maWcuYmdDb25maWdcIj48L2tvLXJlY3Q+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoY29uZmlnLmljb25Db25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFpLXRhYmxlLWljb24gW2NvbmZpZ109XCJjb25maWcuaWNvbkNvbmZpZ1wiPjwvYWktdGFibGUtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChjb25maWcuZHJhZ0NvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICA8YWktdGFibGUtaWNvbiBbY29uZmlnXT1cImNvbmZpZy5kcmFnQ29uZmlnXCI+PC9haS10YWJsZS1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwva28tZ3JvdXA+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0tvQ29udGFpbmVyLCBLb1NoYXBlLCBBSVRhYmxlSWNvbl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUhvdmVyUm93SGVhZHMge1xuICAgIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVSb3dIZWFkc0NvbmZpZz4oKTtcblxuICAgIHBvaW50UG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLmFpVGFibGUuY29udGV4dCEucG9pbnRQb3NpdGlvbigpO1xuICAgIH0pO1xuXG4gICAgaGVhZENvbmZpZ3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUhvdmVyUm93SGVhZHModGhpcy5wb2ludFBvc2l0aW9uKCkpO1xuICAgIH0pO1xuXG4gICAgcmVhZG9ubHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLnJlYWRvbmx5O1xuICAgIH0pO1xuXG4gICAgcm93RHJhZ0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKS5yb3dEcmFnRGlzYWJsZWQ7XG4gICAgfSk7XG5cbiAgICBjcmVhdGVIb3ZlclJvd0hlYWRzID0gKHBvaW50UG9zaXRpb246IEFJVGFibGVQb2ludFBvc2l0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29vcmRpbmF0ZSwgcm93U3RhcnRJbmRleCwgcm93U3RvcEluZGV4LCBhaVRhYmxlIH0gPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gYWlUYWJsZS5jb250ZXh0IGFzIFJlbmRlcmVyQ29udGV4dDtcbiAgICAgICAgY29uc3QgaGVhZENvbmZpZ3M6IGFueVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgcm93SW5kZXggPSByb3dTdGFydEluZGV4OyByb3dJbmRleCA8PSByb3dTdG9wSW5kZXg7IHJvd0luZGV4KyspIHtcbiAgICAgICAgICAgIGlmIChyb3dJbmRleCA+IGNvb3JkaW5hdGUucm93Q291bnQgLSAxKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IGNvbnRleHQubGluZWFyUm93cygpW3Jvd0luZGV4XTtcbiAgICAgICAgICAgIGlmIChyb3cgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIF9pZDogcmVjb3JkSWQgfSA9IHJvdztcbiAgICAgICAgICAgIGlmICh0eXBlICE9PSBBSVRhYmxlUm93VHlwZS5yZWNvcmQgfHwgcmVjb3JkSWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0NoZWNrZWRSb3cgPSBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5oYXMocmVjb3JkSWQpO1xuICAgICAgICAgICAgY29uc3QgeyBhcmVhVHlwZSwgcm93SW5kZXg6IHBvaW50Um93SW5kZXgsIHRhcmdldE5hbWUgfSA9IHBvaW50UG9zaXRpb247XG5cbiAgICAgICAgICAgIGlmICghaXNDaGVja2VkUm93ICYmIGFyZWFUeXBlID09PSBBSVRhYmxlQXJlYVR5cGUubm9uZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaXNIb3ZlclJvdztcbiAgICAgICAgICAgIGlmIChwb2ludFJvd0luZGV4ID4gLTEgJiYgISFjb250ZXh0LmxpbmVhclJvd3MoKS5sZW5ndGggJiYgcG9pbnRSb3dJbmRleCA8IGNvbnRleHQubGluZWFyUm93cygpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZTogcG9pbnRSb3dUeXBlLCBfaWQ6IHBvaW50UmVjb3JkSWQgfSA9IGNvbnRleHQubGluZWFyUm93cygpW3BvaW50Um93SW5kZXhdO1xuICAgICAgICAgICAgICAgIGlzSG92ZXJSb3cgPSByZWNvcmRJZCA9PT0gcG9pbnRSZWNvcmRJZCAmJiBwb2ludFJvd1R5cGUgPT09IEFJVGFibGVSb3dUeXBlLnJlY29yZCAmJiB0YXJnZXROYW1lICE9PSBBSV9UQUJMRV9GSUVMRF9IRUFEO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgb3BlcmF0aW9uR3JvdXA6IHsgcmVjb3JkSWQ6IHN0cmluZzsgeTogbnVtYmVyOyBiZ0NvbmZpZzogYW55OyBpY29uQ29uZmlnPzogYW55OyBkcmFnQ29uZmlnPzogYW55IH07XG5cbiAgICAgICAgICAgIG9wZXJhdGlvbkdyb3VwID0ge1xuICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgIHk6IGNvb3JkaW5hdGUuZ2V0Um93T2Zmc2V0KHJvd0luZGV4KSxcbiAgICAgICAgICAgICAgICBiZ0NvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZW5lcmF0ZVRhcmdldE5hbWUoeyB0YXJnZXROYW1lOiBBSV9UQUJMRV9ST1dfSEVBRCwgcmVjb3JkSWQgfSksXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSCArIDEsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogY29vcmRpbmF0ZS5yb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IENvbG9ycy50cmFuc3BhcmVudFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWRSb3cgfHwgaXNIb3ZlclJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGljb25PZmZzZXRZID0gKEFJX1RBQkxFX0ZJRUxEX0hFQURfSEVJR0hUIC0gMTYpIC8gMjtcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25Hcm91cC5pY29uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZW5lcmF0ZVRhcmdldE5hbWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogQUlfVEFCTEVfUk9XX1NFTEVDVF9DSEVDS0JPWCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZElkXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB4OiBBSV9UQUJMRV9DRUxMX1BBRERJTkcgKyBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgICAgICAgICAgICAgICAgICB5OiBpY29uT2Zmc2V0WSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXNDaGVja2VkUm93ID8gQUlUYWJsZUNoZWNrVHlwZS5jaGVja2VkIDogQUlUYWJsZUNoZWNrVHlwZS51bmNoZWNrZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IGlzQ2hlY2tlZFJvdyB8fCAodGFyZ2V0TmFtZSA9PT0gQUlfVEFCTEVfUk9XX1NFTEVDVF9DSEVDS0JPWCAmJiAhaXNDaGVja2VkUm93KSA/IENvbG9ycy5wcmltYXJ5IDogQ29sb3JzLmdyYXkzMDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZWFkb25seSgpICYmICF0aGlzLnJvd0RyYWdEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbkdyb3VwLmRyYWdDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZW5lcmF0ZVRhcmdldE5hbWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IEFJX1RBQkxFX1JPV19EUkFHLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZElkXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBpY29uT2Zmc2V0WSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IERyYWdUeXBlLnJlY29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IENvbG9ycy5ncmF5NjAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhlYWRDb25maWdzLnB1c2gob3BlcmF0aW9uR3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhlYWRDb25maWdzO1xuICAgIH07XG59XG4iXX0=
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItcm93LWhlYWRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3JlbmRlcmVyL2NvbXBvbmVudHMvaG92ZXItcm93LWhlYWRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1QixpQkFBaUIsRUFDakIsNEJBQTRCLEVBQzVCLE1BQU0sRUFDVCxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQStDLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUF1QjNDLE1BQU0sT0FBTyxvQkFBb0I7SUFyQmpDO1FBc0JJLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF5QixDQUFDO1FBRWpELGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBRUgsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVILHdCQUFtQixHQUFHLENBQUMsYUFBbUMsRUFBRSxFQUFFO1lBQzFELE1BQU0sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0UsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQTBCLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFDO1lBRTlCLEtBQUssSUFBSSxRQUFRLEdBQUcsYUFBYSxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDdEUsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDckMsTUFBTTtnQkFDVixDQUFDO2dCQUVELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2QsU0FBUztnQkFDYixDQUFDO2dCQUVELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQztnQkFDcEMsSUFBSSxJQUFJLEtBQUssY0FBYyxDQUFDLE1BQU0sSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3JELFNBQVM7Z0JBQ2IsQ0FBQztnQkFFRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdkUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLGFBQWEsQ0FBQztnQkFFeEUsSUFBSSxDQUFDLFlBQVksSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNyRCxTQUFTO2dCQUNiLENBQUM7Z0JBRUQsSUFBSSxVQUFVLENBQUM7Z0JBQ2YsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDckcsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDdkYsVUFBVSxHQUFHLFFBQVEsS0FBSyxhQUFhLElBQUksWUFBWSxLQUFLLGNBQWMsQ0FBQyxNQUFNLElBQUksVUFBVSxLQUFLLG1CQUFtQixDQUFDO2dCQUM1SCxDQUFDO2dCQUVELElBQUksY0FBa0csQ0FBQztnQkFFdkcsY0FBYyxHQUFHO29CQUNiLFFBQVE7b0JBQ1IsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO29CQUNwQyxRQUFRLEVBQUU7d0JBQ04sSUFBSSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUNyRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUM7d0JBQ2pDLE1BQU0sRUFBRSxVQUFVLENBQUMsU0FBUzt3QkFDNUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXO3FCQUMzQjtpQkFDSixDQUFDO2dCQUVGLElBQUksWUFBWSxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUM3QixNQUFNLFdBQVcsR0FBRyxDQUFDLDBCQUEwQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDMUQsY0FBYyxDQUFDLFVBQVUsR0FBRzt3QkFDeEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDOzRCQUNyQixVQUFVLEVBQUUsNEJBQTRCOzRCQUN4QyxRQUFRO3lCQUNYLENBQUM7d0JBQ0YsQ0FBQyxFQUFFLHFCQUFxQixHQUFHLDRCQUE0Qjt3QkFDdkQsQ0FBQyxFQUFFLFdBQVc7d0JBQ2QsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTO3dCQUMxRSxJQUFJLEVBQUUsWUFBWSxJQUFJLENBQUMsVUFBVSxLQUFLLDRCQUE0QixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO3FCQUN6SCxDQUFDO29CQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQzt3QkFDOUMsY0FBYyxDQUFDLFVBQVUsR0FBRzs0QkFDeEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDO2dDQUNyQixVQUFVLEVBQUUsaUJBQWlCO2dDQUM3QixRQUFROzZCQUNYLENBQUM7NEJBQ0YsQ0FBQyxFQUFFLENBQUM7NEJBQ0osQ0FBQyxFQUFFLFdBQVc7NEJBQ2QsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNOzRCQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU87eUJBQ3ZCLENBQUM7b0JBQ04sQ0FBQztvQkFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztLQUNMOytHQS9GWSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwwTkFuQm5COzs7Ozs7Ozs7Ozs7OztLQWNULDREQUVTLFdBQVcsNkVBQUUsT0FBTywraEJBQUUsV0FBVzs7NEZBR2xDLG9CQUFvQjtrQkFyQmhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7OztLQWNUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQztvQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLb0NvbnRhaW5lciwgS29TaGFwZSB9IGZyb20gJy4uLy4uL2FuZ3VsYXIta29udmEnO1xuaW1wb3J0IHtcbiAgICBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9ST1dfRFJBRyxcbiAgICBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgIEFJX1RBQkxFX1JPV19IRUFELFxuICAgIEFJX1RBQkxFX1JPV19TRUxFQ1RfQ0hFQ0tCT1gsXG4gICAgQ29sb3JzXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSZW5kZXJlckNvbnRleHQgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVBcmVhVHlwZSwgQUlUYWJsZUNoZWNrVHlwZSwgQUlUYWJsZVBvaW50UG9zaXRpb24sIEFJVGFibGVSb3dIZWFkc0NvbmZpZywgQUlUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVRhcmdldE5hbWUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBBSVRhYmxlSWNvbiB9IGZyb20gJy4vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJhZ1R5cGUgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWhvdmVyLXJvdy1oZWFkcycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGZvciAoY29uZmlnIG9mIGhlYWRDb25maWdzKCk7IHRyYWNrIGNvbmZpZy5yZWNvcmRJZCkge1xuICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwieyB4OiAwLCB5OiBjb25maWcueSwgbmFtZTogJ2hvdmVyLWhlYWRzJyB9XCI+XG4gICAgICAgICAgICAgICAgQGlmIChjb25maWcuYmdDb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGtvLXJlY3QgW2NvbmZpZ109XCJjb25maWcuYmdDb25maWdcIj48L2tvLXJlY3Q+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoY29uZmlnLmljb25Db25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFpLXRhYmxlLWljb24gW2NvbmZpZ109XCJjb25maWcuaWNvbkNvbmZpZ1wiPjwvYWktdGFibGUtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChjb25maWcuZHJhZ0NvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICA8YWktdGFibGUtaWNvbiBbY29uZmlnXT1cImNvbmZpZy5kcmFnQ29uZmlnXCI+PC9haS10YWJsZS1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwva28tZ3JvdXA+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0tvQ29udGFpbmVyLCBLb1NoYXBlLCBBSVRhYmxlSWNvbl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUhvdmVyUm93SGVhZHMge1xuICAgIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVSb3dIZWFkc0NvbmZpZz4oKTtcblxuICAgIHBvaW50UG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLmFpVGFibGUuY29udGV4dCEucG9pbnRQb3NpdGlvbigpO1xuICAgIH0pO1xuXG4gICAgaGVhZENvbmZpZ3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUhvdmVyUm93SGVhZHModGhpcy5wb2ludFBvc2l0aW9uKCkpO1xuICAgIH0pO1xuXG4gICAgcmVhZG9ubHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLnJlYWRvbmx5O1xuICAgIH0pO1xuXG4gICAgcm93RHJhZ0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKS5yb3dEcmFnRGlzYWJsZWQ7XG4gICAgfSk7XG5cbiAgICBjcmVhdGVIb3ZlclJvd0hlYWRzID0gKHBvaW50UG9zaXRpb246IEFJVGFibGVQb2ludFBvc2l0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29vcmRpbmF0ZSwgcm93U3RhcnRJbmRleCwgcm93U3RvcEluZGV4LCBhaVRhYmxlIH0gPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gYWlUYWJsZS5jb250ZXh0IGFzIFJlbmRlcmVyQ29udGV4dDtcbiAgICAgICAgY29uc3QgaGVhZENvbmZpZ3M6IGFueVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgcm93SW5kZXggPSByb3dTdGFydEluZGV4OyByb3dJbmRleCA8PSByb3dTdG9wSW5kZXg7IHJvd0luZGV4KyspIHtcbiAgICAgICAgICAgIGlmIChyb3dJbmRleCA+IGNvb3JkaW5hdGUucm93Q291bnQgLSAxKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IGNvbnRleHQubGluZWFyUm93cygpW3Jvd0luZGV4XTtcbiAgICAgICAgICAgIGlmIChyb3cgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIF9pZDogcmVjb3JkSWQgfSA9IHJvdztcbiAgICAgICAgICAgIGlmICh0eXBlICE9PSBBSVRhYmxlUm93VHlwZS5yZWNvcmQgfHwgcmVjb3JkSWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0NoZWNrZWRSb3cgPSBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5oYXMocmVjb3JkSWQpO1xuICAgICAgICAgICAgY29uc3QgeyBhcmVhVHlwZSwgcm93SW5kZXg6IHBvaW50Um93SW5kZXgsIHRhcmdldE5hbWUgfSA9IHBvaW50UG9zaXRpb247XG5cbiAgICAgICAgICAgIGlmICghaXNDaGVja2VkUm93ICYmIGFyZWFUeXBlID09PSBBSVRhYmxlQXJlYVR5cGUubm9uZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaXNIb3ZlclJvdztcbiAgICAgICAgICAgIGlmIChwb2ludFJvd0luZGV4ID4gLTEgJiYgISFjb250ZXh0LmxpbmVhclJvd3MoKS5sZW5ndGggJiYgcG9pbnRSb3dJbmRleCA8IGNvbnRleHQubGluZWFyUm93cygpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZTogcG9pbnRSb3dUeXBlLCBfaWQ6IHBvaW50UmVjb3JkSWQgfSA9IGNvbnRleHQubGluZWFyUm93cygpW3BvaW50Um93SW5kZXhdO1xuICAgICAgICAgICAgICAgIGlzSG92ZXJSb3cgPSByZWNvcmRJZCA9PT0gcG9pbnRSZWNvcmRJZCAmJiBwb2ludFJvd1R5cGUgPT09IEFJVGFibGVSb3dUeXBlLnJlY29yZCAmJiB0YXJnZXROYW1lICE9PSBBSV9UQUJMRV9GSUVMRF9IRUFEO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgb3BlcmF0aW9uR3JvdXA6IHsgcmVjb3JkSWQ6IHN0cmluZzsgeTogbnVtYmVyOyBiZ0NvbmZpZzogYW55OyBpY29uQ29uZmlnPzogYW55OyBkcmFnQ29uZmlnPzogYW55IH07XG5cbiAgICAgICAgICAgIG9wZXJhdGlvbkdyb3VwID0ge1xuICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgIHk6IGNvb3JkaW5hdGUuZ2V0Um93T2Zmc2V0KHJvd0luZGV4KSxcbiAgICAgICAgICAgICAgICBiZ0NvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZW5lcmF0ZVRhcmdldE5hbWUoeyB0YXJnZXROYW1lOiBBSV9UQUJMRV9ST1dfSEVBRCwgcmVjb3JkSWQgfSksXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb250ZXh0LnJvd0hlYWRXaWR0aCgpICsgMSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjb29yZGluYXRlLnJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogQ29sb3JzLnRyYW5zcGFyZW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZFJvdyB8fCBpc0hvdmVyUm93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWNvbk9mZnNldFkgPSAoQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQgLSAxNikgLyAyO1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbkdyb3VwLmljb25Db25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGdlbmVyYXRlVGFyZ2V0TmFtZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBBSV9UQUJMRV9ST1dfU0VMRUNUX0NIRUNLQk9YLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWRcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHg6IEFJX1RBQkxFX0NFTExfUEFERElORyArIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEgsXG4gICAgICAgICAgICAgICAgICAgIHk6IGljb25PZmZzZXRZLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBpc0NoZWNrZWRSb3cgPyBBSVRhYmxlQ2hlY2tUeXBlLmNoZWNrZWQgOiBBSVRhYmxlQ2hlY2tUeXBlLnVuY2hlY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogaXNDaGVja2VkUm93IHx8ICh0YXJnZXROYW1lID09PSBBSV9UQUJMRV9ST1dfU0VMRUNUX0NIRUNLQk9YICYmICFpc0NoZWNrZWRSb3cpID8gQ29sb3JzLnByaW1hcnkgOiBDb2xvcnMuZ3JheTMwMFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5KCkgJiYgIXRoaXMucm93RHJhZ0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uR3JvdXAuZHJhZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGdlbmVyYXRlVGFyZ2V0TmFtZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogQUlfVEFCTEVfUk9XX0RSQUcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGljb25PZmZzZXRZLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRHJhZ1R5cGUucmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogQ29sb3JzLmdyYXk2MDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaGVhZENvbmZpZ3MucHVzaChvcGVyYXRpb25Hcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGVhZENvbmZpZ3M7XG4gICAgfTtcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_OFFSET, AI_TABLE_ROW_ADD_BUTTON, DEFAULT_FONT_STYLE } from '../../constants';
2
2
  import { AITable, AITableQueries } from '../../core';
3
3
  import { AITableRowType } from '../../types';
4
- import { getCellHorizontalPosition, getHoverCell, transformCellValue } from '../../utils';
4
+ import { FieldModelMap, getCellHorizontalPosition, getHoverCell } from '../../utils';
5
5
  import { addRowLayout } from '../drawers/add-row-layout-drawer';
6
6
  import { cellDrawer } from '../drawers/cell-drawer';
7
7
  import { recordRowLayout } from '../drawers/record-row-layout-drawer';
@@ -57,7 +57,9 @@ export const createCells = (config) => {
57
57
  columnWidth,
58
58
  rowHeight: AI_TABLE_FIELD_HEAD_HEIGHT,
59
59
  columnCount,
60
- containerWidth: coordinate.containerWidth
60
+ containerWidth: coordinate.containerWidth,
61
+ rowHeadWidth: context.rowHeadWidth(),
62
+ hiddenIndexColumn: !!context.aiFieldConfig()?.hiddenIndexColumn
61
63
  });
62
64
  addRowLayout.render({
63
65
  isHoverRow,
@@ -77,7 +79,9 @@ export const createCells = (config) => {
77
79
  columnWidth,
78
80
  rowHeight,
79
81
  columnCount,
80
- containerWidth: coordinate.containerWidth
82
+ containerWidth: coordinate.containerWidth,
83
+ rowHeadWidth: context.rowHeadWidth(),
84
+ hiddenIndexColumn: !!context.aiFieldConfig()?.hiddenIndexColumn
81
85
  });
82
86
  recordRowLayout.render({
83
87
  row,
@@ -94,7 +98,8 @@ export const createCells = (config) => {
94
98
  const realY = y + AI_TABLE_OFFSET;
95
99
  const style = { fontWeight: DEFAULT_FONT_STYLE };
96
100
  const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, fieldId]);
97
- const transformValue = transformCellValue(aiTable, field, cellValue);
101
+ const fieldModel = FieldModelMap[field.type];
102
+ const transformValue = fieldModel.transformCellValue(cellValue, { aiTable, field });
98
103
  const render = {
99
104
  aiTable,
100
105
  x: realX,
@@ -182,4 +187,4 @@ const isSelectedRecord = (recordId, aiTable) => {
182
187
  const isHoverRecord = (isHover, targetName) => {
183
188
  return isHover && targetName !== AI_TABLE_FIELD_HEAD;
184
189
  };
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNlbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvY3JlYXRpb25zL2NyZWF0ZS1jZWxscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUN0RSxPQUFPLEVBQTJDLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN4SCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBMEIsQ0FBQztJQUNuRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFDeEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25DLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxn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QyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztBQUMzRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZ0IsRUFBVyxFQUFFO0lBQzFFLE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsT0FBZ0IsRUFBVyxFQUFFO0lBQ3JFLE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFnQixFQUFFLFVBQWtCLEVBQVcsRUFBRTtJQUNwRSxPQUFPLE9BQU8sSUFBSSxVQUFVLEtBQUssbUJBQW1CLENBQUM7QUFDekQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlSZWNvcmRGaWVsZElkUGF0aCB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQge1xuICAgIEFJX1RBQkxFX0ZJRUxEX0hFQUQsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsXG4gICAgQUlfVEFCTEVfT0ZGU0VULFxuICAgIEFJX1RBQkxFX1JPV19BRERfQlVUVE9OLFxuICAgIERFRkFVTFRfRk9OVF9TVFlMRVxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUlUYWJsZSwgQUlUYWJsZVF1ZXJpZXMsIFJlbmRlcmVyQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUNlbGxzRHJhd2VyQ29uZmlnLCBBSVRhYmxlUmVuZGVyLCBBSVRhYmxlUm93VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldENlbGxIb3Jpem9udGFsUG9zaXRpb24sIGdldEhvdmVyQ2VsbCwgdHJhbnNmb3JtQ2VsbFZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgYWRkUm93TGF5b3V0IH0gZnJvbSAnLi4vZHJhd2Vycy9hZGQtcm93LWxheW91dC1kcmF3ZXInO1xuaW1wb3J0IHsgY2VsbERyYXdlciB9IGZyb20gJy4uL2RyYXdlcnMvY2VsbC1kcmF3ZXInO1xuaW1wb3J0IHsgcmVjb3JkUm93TGF5b3V0IH0gZnJvbSAnLi4vZHJhd2Vycy9yZWNvcmQtcm93LWxheW91dC1kcmF3ZXInO1xuXG4vKipcbiAqIOe7mOWItuWNleWFg+agvOWGheWuueeahOWHveaVsFxuICog5Yip55SoIENhbnZhcyBBUEkg57uY5Yi25q+P5Liq5Y2V5YWD5qC855qE6IOM5pmv6aKc6Imy44CB5paH5pys5Lul5Y+K5YW25LuW5Y+v6IO955qE5qC35byP44CC6L+Z5Liq5Ye95pWw6YCa5bi455So5LqO6Ieq5a6a5LmJ6KGo5qC85riy5p+T77yM5bCk5YW25piv5Zyo5aSE55CG5aSn6YeP5pWw5o2u5pe277yM6YCa6L+H55u05o6l5pON5L2cIENhbnZhcyDmnaXmj5Dpq5jmuLLmn5PmgKfog71cbiAqIEBwYXJhbSBjb25maWdcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNlbGxzID0gKGNvbmZpZzogQUlUYWJsZUNlbGxzRHJhd2VyQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBhaVRhYmxlLCBjb29yZGluYXRlLCByZWZlcmVuY2VzLCBjdHgsIHJvd1N0YXJ0SW5kZXgsIHJvd1N0b3BJbmRleCwgY29sdW1uU3RhcnRJbmRleCwgY29sdW1uU3RvcEluZGV4IH0gPSBjb25maWc7XG4gICAgY29uc3QgY29udGV4dCA9IGFpVGFibGUuY29udGV4dCBhcyBSZW5kZXJlckNvbnRleHQ7XG4gICAgY29uc3QgeyByb3dIZWlnaHQsIGNvbHVtbkNvdW50LCByb3dDb3VudCB9ID0gY29vcmRpbmF0ZTtcbiAgICBjb25zdCBjb2xvcnMgPSBBSVRhYmxlLmdldENvbG9ycygpO1xuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gQUlUYWJsZS5nZXRWaXNpYmxlRmllbGRzKGFpVGFibGUpO1xuXG4gICAgLy8g5Yid5aeL5YyW57uY5Zu+5LiK5LiL5paHLCDkuLrlkI7nu63nmoTnu5jliLbmk43kvZzlgZrlh4blpIdcbiAgICBjZWxsRHJhd2VyLmluaXRDdHgoY3R4IGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgYWRkUm93TGF5b3V0LmluaXRDdHgoY3R4IGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgcmVjb3JkUm93TGF5b3V0LmluaXRDdHgoY3R4IGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG5cbiAgICBjb25zdCBob3ZlckNlbGwgPSBnZXRIb3ZlckNlbGwoYWlUYWJsZSk7XG5cbiAgICAvLyDpgY3ljobliJcsIOehruWumuWcqOWTquS6m+WIl+S4iue7mOWItuWNleWFg+agvFxuICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gY29sdW1uU3RhcnRJbmRleDsgY29sdW1uSW5kZXggPD0gY29sdW1uU3RvcEluZGV4OyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA+IGNvbHVtbkNvdW50IC0gMSkgYnJlYWs7XG5cbiAgICAgICAgLy8g6I635Y+W6K+l5YiX5a+55bqU55qEIGZpZWxk77yM5aaC5p6cIGZpZWxkIOS4jeWGjeWxleekuuiMg+WbtO+8jOWImei3s+i/h+ivpeWIl1xuICAgICAgICBjb25zdCBmaWVsZCA9IHZpc2libGVDb2x1bW5zW2NvbHVtbkluZGV4XTtcbiAgICAgICAgaWYgKGZpZWxkID09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIOiOt+WPluivpeWIl+WvueW6lOeahOWuveW6plxuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uV2lkdGgoY29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCB4ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5PZmZzZXQoY29sdW1uSW5kZXgpICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICBjb25zdCBpc0xhc3RDb2x1bW4gPSBjb2x1bW5JbmRleCA9PT0gYWlUYWJsZS5ncmlkRGF0YSgpLmZpZWxkcz8ubGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoY29sdW1uSW5kZXggPT09IDEpIHtcbiAgICAgICAgICAgIGNlbGxEcmF3ZXIuaW5pdFN0eWxlKGZpZWxkLCB7IGZvbnRXZWlnaHQ6IERFRkFVTFRfRk9OVF9TVFlMRSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOmBjeWOhuihjCwg5LuOIHJvd1N0YXJ0SW5kZXgg5YiwIHJvd1N0b3BJbmRleCDnmoTmiYDmnInooYzvvIzlhrPlrprlsIblnKjlk6rkupvooYzkuIrnu5jliLbljZXlhYPmoLxcbiAgICAgICAgZm9yIChsZXQgcm93SW5kZXggPSByb3dTdGFydEluZGV4OyByb3dJbmRleCA8PSByb3dTdG9wSW5kZXg7IHJvd0luZGV4KyspIHtcbiAgICAgICAgICAgIGlmIChyb3dJbmRleCA+IHJvd0NvdW50IC0gMSkgYnJlYWs7XG4gICAgICAgICAgICBjb25zdCByb3cgPSBjb250ZXh0LmxpbmVhclJvd3MoKVtyb3dJbmRleF07XG4gICAgICAgICAgICBjb25zdCB7IF9pZDogcmVjb3JkSWQsIHR5cGUgfSA9IHJvdztcbiAgICAgICAgICAgIGNvbnN0IHkgPSBjb29yZGluYXRlLmdldFJvd09mZnNldChyb3dJbmRleCkgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgICAgICBjb25zdCB7IHJvd0luZGV4OiBwb2ludFJvd0luZGV4LCB0YXJnZXROYW1lIH0gPSBjb250ZXh0LnBvaW50UG9zaXRpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IGlzSG92ZXIgPSBwb2ludFJvd0luZGV4ID09PSByb3dJbmRleDtcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBSVRhYmxlUm93VHlwZS5hZGQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNIb3ZlclJvdyA9IGlzSG92ZXIgJiYgdGFyZ2V0TmFtZSA9PT0gQUlfVEFCTEVfUk9XX0FERF9CVVRUT047XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ2hlY2tlZFJvdyA9IGFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRSZWNvcmRzLmhhcyhyb3cuX2lkKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkUm93TGF5b3V0LmluaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHQ6IEFJX1RBQkxFX0ZJRUxEX0hFQURfSEVJR0hULFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJXaWR0aDogY29vcmRpbmF0ZS5jb250YWluZXJXaWR0aFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkUm93TGF5b3V0LnJlbmRlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0hvdmVyUm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGVja2VkUm93XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBSVRhYmxlUm93VHlwZS5yZWNvcmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRJZCA9IGZpZWxkLl9pZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCA9IFtyZWNvcmRJZCwgZmllbGRJZF07XG4gICAgICAgICAgICAgICAgICAgIGxldCBiYWNrZ3JvdW5kID0gZ2V0Q2VsbEJhY2tncm91bmQoY2VsbCwgaXNIb3ZlciwgdGFyZ2V0TmFtZSwgYWlUYWJsZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkUm93TGF5b3V0LmluaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBjb29yZGluYXRlLmNvbnRhaW5lcldpZHRoXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRSb3dMYXlvdXQucmVuZGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IGZpbGw6IGJhY2tncm91bmQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSG92ZXJSb3c6IGlzSG92ZXJSZWNvcmQoaXNIb3ZlciwgdGFyZ2V0TmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NoZWNrZWRSb3c6IGlzU2VsZWN0ZWRSZWNvcmQocmVjb3JkSWQsIGFpVGFibGUpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBvZmZzZXQgfSA9IGdldENlbGxIb3Jpem9udGFsUG9zaXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvdW50XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFsWCA9IHggKyBvZmZzZXQgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxZID0geSArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6IERFRkFVTFRfRk9OVF9TVFlMRSB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPSBBSVRhYmxlUXVlcmllcy5nZXRGaWVsZFZhbHVlKGFpVGFibGUsIFtyZWNvcmRJZCwgZmllbGRJZF0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1WYWx1ZSA9IHRyYW5zZm9ybUNlbGxWYWx1ZShhaVRhYmxlLCBmaWVsZCwgY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHJlYWxYLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogcmVhbFksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRJZDogcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBpc1NlbGVjdGVkRmllbGQoZmllbGRJZCwgYWlUYWJsZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAvLyBob3ZlciDnu4Tku7bmuLLmn5Pml7bvvIzlupXlsYLnmoQgY2VsbCDmuLLmn5PkuLrnqbpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhvdmVyQ2VsbCAmJiBob3ZlckNlbGwucmVjb3JkSWQgPT09IHJlY29yZElkICYmIGhvdmVyQ2VsbC5maWVsZElkID09PSBmaWVsZElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIuY2VsbFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIudHJhbnNmb3JtVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNlbGxEcmF3ZXIuaW5pdFN0eWxlKGZpZWxkLCBzdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIOacgOWQjuS4gOWIl++8jOS4lOWNleWFg+agvOWGheWuueWtmOWcqO+8jOmcgOimgeijgeWJquWGheWuue+8jOS7pemYsuatouaWh+acrOa6ouWHuuWNleWFg+agvOi+ueeVjFxuICAgICAgICAgICAgICAgICAgICAvLyDnhLblkI7vvIzmoLnmja7orqHnrpflpb3nmoTmoLflvI/lkozluIPlsYDnu5jliLbljZXlhYPmoLzlhoXlrrlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGFzdENvbHVtbiAmJiBjZWxsVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnNhdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5yZWN0KHJlYWxYLCByZWFsWSwgd2lkdGgsIHJvd0hlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHguY2xpcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbERyYXdlci5yZW5kZXJDZWxsKHJlbmRlciBhcyBBSVRhYmxlUmVuZGVyLCBjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbERyYXdlci5yZW5kZXJDZWxsKHJlbmRlciBhcyBBSVRhYmxlUmVuZGVyLCBjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jb25zdCBnZXRDZWxsQmFja2dyb3VuZCA9IChjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoLCBpc0hvdmVyOiBib29sZWFuLCB0YXJnZXROYW1lOiBzdHJpbmcsIGFpVGFibGU6IEFJVGFibGUpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG4gICAgY29uc3QgW3JlY29yZElkLCBmaWVsZElkXSA9IGNlbGw7XG4gICAgbGV0IGJhY2tncm91bmQgPSBjb2xvcnMud2hpdGU7XG5cbiAgICBjb25zdCBfaXNIb3ZlclJlY29yZCA9IGlzSG92ZXJSZWNvcmQoaXNIb3ZlciwgdGFyZ2V0TmFtZSk7XG4gICAgY29uc3QgX2lzU2VsZWN0ZWRSZWNvcmQgPSBpc1NlbGVjdGVkUmVjb3JkKHJlY29yZElkLCBhaVRhYmxlKTtcbiAgICBjb25zdCBfaXNTZWxlY3RlZEZpZWxkID0gaXNTZWxlY3RlZEZpZWxkKGZpZWxkSWQsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc1NpYmxpbmdDZWxsID0gaXNTaWJsaW5nQ2VsbChjZWxsLCBhaVRhYmxlKTtcbiAgICBjb25zdCBfaXNBY3RpdmVDZWxsID0gaXNBY3RpdmVDZWxsKGNlbGwsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc1NlbGVjdGVkQ2VsbCA9IGlzU2VsZWN0ZWRDZWxsKGNlbGwsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc0tleXdvcmRzTWF0Y2hlZENlbGwgPSBpc0tleXdvcmRzTWF0Y2hlZENlbGwoY2VsbCwgYWlUYWJsZSk7XG5cbiAgICBpZiAoX2lzS2V5d29yZHNNYXRjaGVkQ2VsbCkge1xuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3JzLml0ZW1NYXRjaEJnQ29sb3I7XG4gICAgfSBlbHNlIGlmIChfaXNTZWxlY3RlZFJlY29yZCB8fCBfaXNTZWxlY3RlZEZpZWxkIHx8IF9pc1NpYmxpbmdDZWxsIHx8IChfaXNTZWxlY3RlZENlbGwgJiYgIV9pc0FjdGl2ZUNlbGwpKSB7XG4gICAgICAgIGJhY2tncm91bmQgPSBjb2xvcnMuaXRlbUFjdGl2ZUJnQ29sb3I7XG4gICAgfSBlbHNlIGlmIChfaXNIb3ZlclJlY29yZCAmJiAhX2lzQWN0aXZlQ2VsbCkge1xuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3JzLmdyYXk4MDtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFja2dyb3VuZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0FjdGl2ZUNlbGwgPSAoY2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCwgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBjZWxsO1xuICAgIGNvbnN0IFthY3RpdmVSZWNvcmRJZCwgYWN0aXZlRmllbGRJZF0gPSBBSVRhYmxlLmdldEFjdGl2ZUNlbGwoYWlUYWJsZSkgfHwgW107XG4gICAgcmV0dXJuIHJlY29yZElkID09PSBhY3RpdmVSZWNvcmRJZCAmJiBmaWVsZElkID09PSBhY3RpdmVGaWVsZElkO1xufTtcblxuY29uc3QgaXNTaWJsaW5nQ2VsbCA9IChjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoLCBhaVRhYmxlOiBBSVRhYmxlKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgW3JlY29yZElkLCBmaWVsZElkXSA9IGNlbGw7XG4gICAgY29uc3QgW2FjdGl2ZVJlY29yZElkLCBhY3RpdmVGaWVsZElkXSA9IEFJVGFibGUuZ2V0QWN0aXZlQ2VsbChhaVRhYmxlKSB8fCBbXTtcbiAgICByZXR1cm4gQUlUYWJsZS5nZXRBY3RpdmVSZWNvcmRJZHMoYWlUYWJsZSkubGVuZ3RoID09PSAxICYmIHJlY29yZElkID09PSBhY3RpdmVSZWNvcmRJZCAmJiBmaWVsZElkICE9PSBhY3RpdmVGaWVsZElkO1xufTtcblxuY29uc3QgaXNLZXl3b3Jkc01hdGNoZWRDZWxsID0gKGNlbGw6IEFJUmVjb3JkRmllbGRJZFBhdGgsIGFpVGFibGU6IEFJVGFibGUpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBbcmVjb3JkSWQsIGZpZWxkSWRdID0gY2VsbDtcbiAgICByZXR1cm4gYWlUYWJsZS5rZXl3b3Jkc01hdGNoZWRDZWxscygpLmhhcyhgJHtyZWNvcmRJZH06JHtmaWVsZElkfWApO1xufTtcblxuY29uc3QgaXNTZWxlY3RlZENlbGwgPSAoY2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCwgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBjZWxsO1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkQ2VsbHMuaGFzKGAke3JlY29yZElkfToke2ZpZWxkSWR9YCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3RlZEZpZWxkID0gKGZpZWxkSWQ6IHN0cmluZywgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkRmllbGRzLmhhcyhmaWVsZElkKTtcbn07XG5cbmNvbnN0IGlzU2VsZWN0ZWRSZWNvcmQgPSAocmVjb3JkSWQ6IHN0cmluZywgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5oYXMocmVjb3JkSWQpO1xufTtcblxuY29uc3QgaXNIb3ZlclJlY29yZCA9IChpc0hvdmVyOiBib29sZWFuLCB0YXJnZXROYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gaXNIb3ZlciAmJiB0YXJnZXROYW1lICE9PSBBSV9UQUJMRV9GSUVMRF9IRUFEO1xufTtcbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNlbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvY3JlYXRpb25zL2NyZWF0ZS1jZWxscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUN0RSxPQUFPLEVBQTJDLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLFlBQVksRUFBc0IsTUFBTSxhQUFhLENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdEU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWdDLEVBQUUsRUFBRTtJQUM1RCxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3hILE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUEwQixDQUFDO0lBQ25ELE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUN4RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGdC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QztBQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUF5QixFQUFFLE9BQWdCLEVBQVcsRUFBRTtJQUNuRixNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyxPQUFPLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBeUIsRUFBRSxPQUFnQixFQUFXLEVBQUU7SUFDNUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQWUsRUFBRSxPQUFnQixFQUFXLEVBQUU7SUFDMUUsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxPQUFnQixFQUFXLEVBQUU7SUFDckUsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsVUFBa0IsRUFBVyxFQUFFO0lBQ3BFLE9BQU8sT0FBTyxJQUFJLFVBQVUsS0FBSyxtQkFBbUIsQ0FBQztBQUN6RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBSVJlY29yZEZpZWxkSWRQYXRoIH0gZnJvbSAnQGFpLXRhYmxlL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQUlfVEFCTEVfRklFTERfSEVBRCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9PRkZTRVQsXG4gICAgQUlfVEFCTEVfUk9XX0FERF9CVVRUT04sXG4gICAgREVGQVVMVF9GT05UX1NUWUxFXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlLCBBSVRhYmxlUXVlcmllcywgUmVuZGVyZXJDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBBSVRhYmxlQ2VsbHNEcmF3ZXJDb25maWcsIEFJVGFibGVSZW5kZXIsIEFJVGFibGVSb3dUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmllbGRNb2RlbE1hcCwgZ2V0Q2VsbEhvcml6b250YWxQb3NpdGlvbiwgZ2V0SG92ZXJDZWxsLCB0cmFuc2Zvcm1DZWxsVmFsdWUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBhZGRSb3dMYXlvdXQgfSBmcm9tICcuLi9kcmF3ZXJzL2FkZC1yb3ctbGF5b3V0LWRyYXdlcic7XG5pbXBvcnQgeyBjZWxsRHJhd2VyIH0gZnJvbSAnLi4vZHJhd2Vycy9jZWxsLWRyYXdlcic7XG5pbXBvcnQgeyByZWNvcmRSb3dMYXlvdXQgfSBmcm9tICcuLi9kcmF3ZXJzL3JlY29yZC1yb3ctbGF5b3V0LWRyYXdlcic7XG5cbi8qKlxuICog57uY5Yi25Y2V5YWD5qC85YaF5a6555qE5Ye95pWwXG4gKiDliKnnlKggQ2FudmFzIEFQSSDnu5jliLbmr4/kuKrljZXlhYPmoLznmoTog4zmma/popzoibLjgIHmlofmnKzku6Xlj4rlhbbku5blj6/og73nmoTmoLflvI/jgILov5nkuKrlh73mlbDpgJrluLjnlKjkuo7oh6rlrprkuYnooajmoLzmuLLmn5PvvIzlsKTlhbbmmK/lnKjlpITnkIblpKfph4/mlbDmja7ml7bvvIzpgJrov4fnm7TmjqXmk43kvZwgQ2FudmFzIOadpeaPkOmrmOa4suafk+aAp+iDvVxuICogQHBhcmFtIGNvbmZpZ1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQ2VsbHMgPSAoY29uZmlnOiBBSVRhYmxlQ2VsbHNEcmF3ZXJDb25maWcpID0+IHtcbiAgICBjb25zdCB7IGFpVGFibGUsIGNvb3JkaW5hdGUsIHJlZmVyZW5jZXMsIGN0eCwgcm93U3RhcnRJbmRleCwgcm93U3RvcEluZGV4LCBjb2x1bW5TdGFydEluZGV4LCBjb2x1bW5TdG9wSW5kZXggfSA9IGNvbmZpZztcbiAgICBjb25zdCBjb250ZXh0ID0gYWlUYWJsZS5jb250ZXh0IGFzIFJlbmRlcmVyQ29udGV4dDtcbiAgICBjb25zdCB7IHJvd0hlaWdodCwgY29sdW1uQ291bnQsIHJvd0NvdW50IH0gPSBjb29yZGluYXRlO1xuICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBBSVRhYmxlLmdldFZpc2libGVGaWVsZHMoYWlUYWJsZSk7XG5cbiAgICAvLyDliJ3lp4vljJbnu5jlm77kuIrkuIvmlocsIOS4uuWQjue7reeahOe7mOWItuaTjeS9nOWBmuWHhuWkh1xuICAgIGNlbGxEcmF3ZXIuaW5pdEN0eChjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICBhZGRSb3dMYXlvdXQuaW5pdEN0eChjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICByZWNvcmRSb3dMYXlvdXQuaW5pdEN0eChjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcblxuICAgIGNvbnN0IGhvdmVyQ2VsbCA9IGdldEhvdmVyQ2VsbChhaVRhYmxlKTtcblxuICAgIC8vIOmBjeWOhuWIlywg56Gu5a6a5Zyo5ZOq5Lqb5YiX5LiK57uY5Yi25Y2V5YWD5qC8XG4gICAgZm9yIChsZXQgY29sdW1uSW5kZXggPSBjb2x1bW5TdGFydEluZGV4OyBjb2x1bW5JbmRleCA8PSBjb2x1bW5TdG9wSW5kZXg7IGNvbHVtbkluZGV4KyspIHtcbiAgICAgICAgaWYgKGNvbHVtbkluZGV4ID4gY29sdW1uQ291bnQgLSAxKSBicmVhaztcblxuICAgICAgICAvLyDojrflj5bor6XliJflr7nlupTnmoQgZmllbGTvvIzlpoLmnpwgZmllbGQg5LiN5YaN5bGV56S66IyD5Zu077yM5YiZ6Lez6L+H6K+l5YiXXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdmlzaWJsZUNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBpZiAoZmllbGQgPT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgLy8g6I635Y+W6K+l5YiX5a+55bqU55qE5a695bqmXG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChjb2x1bW5JbmRleCkgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgIGNvbnN0IGlzTGFzdENvbHVtbiA9IGNvbHVtbkluZGV4ID09PSBhaVRhYmxlLmdyaWREYXRhKCkuZmllbGRzPy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA9PT0gMSkge1xuICAgICAgICAgICAgY2VsbERyYXdlci5pbml0U3R5bGUoZmllbGQsIHsgZm9udFdlaWdodDogREVGQVVMVF9GT05UX1NUWUxFIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6YGN5Y6G6KGMLCDku44gcm93U3RhcnRJbmRleCDliLAgcm93U3RvcEluZGV4IOeahOaJgOacieihjO+8jOWGs+WumuWwhuWcqOWTquS6m+ihjOS4iue7mOWItuWNleWFg+agvFxuICAgICAgICBmb3IgKGxldCByb3dJbmRleCA9IHJvd1N0YXJ0SW5kZXg7IHJvd0luZGV4IDw9IHJvd1N0b3BJbmRleDsgcm93SW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4ID4gcm93Q291bnQgLSAxKSBicmVhaztcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IGNvbnRleHQubGluZWFyUm93cygpW3Jvd0luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHsgX2lkOiByZWNvcmRJZCwgdHlwZSB9ID0gcm93O1xuICAgICAgICAgICAgY29uc3QgeSA9IGNvb3JkaW5hdGUuZ2V0Um93T2Zmc2V0KHJvd0luZGV4KSArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgIGNvbnN0IHsgcm93SW5kZXg6IHBvaW50Um93SW5kZXgsIHRhcmdldE5hbWUgfSA9IGNvbnRleHQucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgY29uc3QgaXNIb3ZlciA9IHBvaW50Um93SW5kZXggPT09IHJvd0luZGV4O1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEFJVGFibGVSb3dUeXBlLmFkZDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hvdmVyUm93ID0gaXNIb3ZlciAmJiB0YXJnZXROYW1lID09PSBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDaGVja2VkUm93ID0gYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJlY29yZHMuaGFzKHJvdy5faWQpO1xuICAgICAgICAgICAgICAgICAgICBhZGRSb3dMYXlvdXQuaW5pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0hlaWdodDogQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBjb29yZGluYXRlLmNvbnRhaW5lcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SGVhZFdpZHRoOiBjb250ZXh0LnJvd0hlYWRXaWR0aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuSW5kZXhDb2x1bW46ICEhY29udGV4dC5haUZpZWxkQ29uZmlnKCk/LmhpZGRlbkluZGV4Q29sdW1uXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBhZGRSb3dMYXlvdXQucmVuZGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSG92ZXJSb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NoZWNrZWRSb3dcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFJVGFibGVSb3dUeXBlLnJlY29yZDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZElkID0gZmllbGQuX2lkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoID0gW3JlY29yZElkLCBmaWVsZElkXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJhY2tncm91bmQgPSBnZXRDZWxsQmFja2dyb3VuZChjZWxsLCBpc0hvdmVyLCB0YXJnZXROYW1lLCBhaVRhYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICByZWNvcmRSb3dMYXlvdXQuaW5pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyV2lkdGg6IGNvb3JkaW5hdGUuY29udGFpbmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWFkV2lkdGg6IGNvbnRleHQucm93SGVhZFdpZHRoKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5JbmRleENvbHVtbjogISFjb250ZXh0LmFpRmllbGRDb25maWcoKT8uaGlkZGVuSW5kZXhDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFJvd0xheW91dC5yZW5kZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHsgZmlsbDogYmFja2dyb3VuZCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3ZlclJvdzogaXNIb3ZlclJlY29yZChpc0hvdmVyLCB0YXJnZXROYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hlY2tlZFJvdzogaXNTZWxlY3RlZFJlY29yZChyZWNvcmRJZCwgYWlUYWJsZSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIG9mZnNldCB9ID0gZ2V0Q2VsbEhvcml6b250YWxQb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxYID0geCArIG9mZnNldCArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhbFkgPSB5ICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IHsgZm9udFdlaWdodDogREVGQVVMVF9GT05UX1NUWUxFIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgW3JlY29yZElkLCBmaWVsZElkXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkTW9kZWwgPSBGaWVsZE1vZGVsTWFwW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1WYWx1ZSA9IGZpZWxkTW9kZWwudHJhbnNmb3JtQ2VsbFZhbHVlKGNlbGxWYWx1ZSwgeyBhaVRhYmxlLCBmaWVsZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHJlYWxYLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogcmVhbFksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRJZDogcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBpc1NlbGVjdGVkRmllbGQoZmllbGRJZCwgYWlUYWJsZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAvLyBob3ZlciDnu4Tku7bmuLLmn5Pml7bvvIzlupXlsYLnmoQgY2VsbCDmuLLmn5PkuLrnqbpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhvdmVyQ2VsbCAmJiBob3ZlckNlbGwucmVjb3JkSWQgPT09IHJlY29yZElkICYmIGhvdmVyQ2VsbC5maWVsZElkID09PSBmaWVsZElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIuY2VsbFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXIudHJhbnNmb3JtVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNlbGxEcmF3ZXIuaW5pdFN0eWxlKGZpZWxkLCBzdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIOacgOWQjuS4gOWIl++8jOS4lOWNleWFg+agvOWGheWuueWtmOWcqO+8jOmcgOimgeijgeWJquWGheWuue+8jOS7pemYsuatouaWh+acrOa6ouWHuuWNleWFg+agvOi+ueeVjFxuICAgICAgICAgICAgICAgICAgICAvLyDnhLblkI7vvIzmoLnmja7orqHnrpflpb3nmoTmoLflvI/lkozluIPlsYDnu5jliLbljZXlhYPmoLzlhoXlrrlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGFzdENvbHVtbiAmJiBjZWxsVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnNhdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5yZWN0KHJlYWxYLCByZWFsWSwgd2lkdGgsIHJvd0hlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHguY2xpcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbERyYXdlci5yZW5kZXJDZWxsKHJlbmRlciBhcyBBSVRhYmxlUmVuZGVyLCBjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbERyYXdlci5yZW5kZXJDZWxsKHJlbmRlciBhcyBBSVRhYmxlUmVuZGVyLCBjdHggYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBjb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jb25zdCBnZXRDZWxsQmFja2dyb3VuZCA9IChjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoLCBpc0hvdmVyOiBib29sZWFuLCB0YXJnZXROYW1lOiBzdHJpbmcsIGFpVGFibGU6IEFJVGFibGUpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG4gICAgY29uc3QgW3JlY29yZElkLCBmaWVsZElkXSA9IGNlbGw7XG4gICAgbGV0IGJhY2tncm91bmQgPSBjb2xvcnMud2hpdGU7XG5cbiAgICBjb25zdCBfaXNIb3ZlclJlY29yZCA9IGlzSG92ZXJSZWNvcmQoaXNIb3ZlciwgdGFyZ2V0TmFtZSk7XG4gICAgY29uc3QgX2lzU2VsZWN0ZWRSZWNvcmQgPSBpc1NlbGVjdGVkUmVjb3JkKHJlY29yZElkLCBhaVRhYmxlKTtcbiAgICBjb25zdCBfaXNTZWxlY3RlZEZpZWxkID0gaXNTZWxlY3RlZEZpZWxkKGZpZWxkSWQsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc1NpYmxpbmdDZWxsID0gaXNTaWJsaW5nQ2VsbChjZWxsLCBhaVRhYmxlKTtcbiAgICBjb25zdCBfaXNBY3RpdmVDZWxsID0gaXNBY3RpdmVDZWxsKGNlbGwsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc1NlbGVjdGVkQ2VsbCA9IGlzU2VsZWN0ZWRDZWxsKGNlbGwsIGFpVGFibGUpO1xuICAgIGNvbnN0IF9pc0tleXdvcmRzTWF0Y2hlZENlbGwgPSBpc0tleXdvcmRzTWF0Y2hlZENlbGwoY2VsbCwgYWlUYWJsZSk7XG5cbiAgICBpZiAoX2lzS2V5d29yZHNNYXRjaGVkQ2VsbCkge1xuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3JzLml0ZW1NYXRjaEJnQ29sb3I7XG4gICAgfSBlbHNlIGlmIChfaXNTZWxlY3RlZFJlY29yZCB8fCBfaXNTZWxlY3RlZEZpZWxkIHx8IF9pc1NpYmxpbmdDZWxsIHx8IChfaXNTZWxlY3RlZENlbGwgJiYgIV9pc0FjdGl2ZUNlbGwpKSB7XG4gICAgICAgIGJhY2tncm91bmQgPSBjb2xvcnMuaXRlbUFjdGl2ZUJnQ29sb3I7XG4gICAgfSBlbHNlIGlmIChfaXNIb3ZlclJlY29yZCAmJiAhX2lzQWN0aXZlQ2VsbCkge1xuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3JzLmdyYXk4MDtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFja2dyb3VuZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0FjdGl2ZUNlbGwgPSAoY2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCwgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBjZWxsO1xuICAgIGNvbnN0IFthY3RpdmVSZWNvcmRJZCwgYWN0aXZlRmllbGRJZF0gPSBBSVRhYmxlLmdldEFjdGl2ZUNlbGwoYWlUYWJsZSkgfHwgW107XG4gICAgcmV0dXJuIHJlY29yZElkID09PSBhY3RpdmVSZWNvcmRJZCAmJiBmaWVsZElkID09PSBhY3RpdmVGaWVsZElkO1xufTtcblxuY29uc3QgaXNTaWJsaW5nQ2VsbCA9IChjZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoLCBhaVRhYmxlOiBBSVRhYmxlKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgW3JlY29yZElkLCBmaWVsZElkXSA9IGNlbGw7XG4gICAgY29uc3QgW2FjdGl2ZVJlY29yZElkLCBhY3RpdmVGaWVsZElkXSA9IEFJVGFibGUuZ2V0QWN0aXZlQ2VsbChhaVRhYmxlKSB8fCBbXTtcbiAgICByZXR1cm4gQUlUYWJsZS5nZXRBY3RpdmVSZWNvcmRJZHMoYWlUYWJsZSkubGVuZ3RoID09PSAxICYmIHJlY29yZElkID09PSBhY3RpdmVSZWNvcmRJZCAmJiBmaWVsZElkICE9PSBhY3RpdmVGaWVsZElkO1xufTtcblxuY29uc3QgaXNLZXl3b3Jkc01hdGNoZWRDZWxsID0gKGNlbGw6IEFJUmVjb3JkRmllbGRJZFBhdGgsIGFpVGFibGU6IEFJVGFibGUpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBbcmVjb3JkSWQsIGZpZWxkSWRdID0gY2VsbDtcbiAgICByZXR1cm4gYWlUYWJsZS5rZXl3b3Jkc01hdGNoZWRDZWxscygpLmhhcyhgJHtyZWNvcmRJZH06JHtmaWVsZElkfWApO1xufTtcblxuY29uc3QgaXNTZWxlY3RlZENlbGwgPSAoY2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCwgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFtyZWNvcmRJZCwgZmllbGRJZF0gPSBjZWxsO1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkQ2VsbHMuaGFzKGAke3JlY29yZElkfToke2ZpZWxkSWR9YCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3RlZEZpZWxkID0gKGZpZWxkSWQ6IHN0cmluZywgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkRmllbGRzLmhhcyhmaWVsZElkKTtcbn07XG5cbmNvbnN0IGlzU2VsZWN0ZWRSZWNvcmQgPSAocmVjb3JkSWQ6IHN0cmluZywgYWlUYWJsZTogQUlUYWJsZSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5oYXMocmVjb3JkSWQpO1xufTtcblxuY29uc3QgaXNIb3ZlclJlY29yZCA9IChpc0hvdmVyOiBib29sZWFuLCB0YXJnZXROYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gaXNIb3ZlciAmJiB0YXJnZXROYW1lICE9PSBBSV9UQUJMRV9GSUVMRF9IRUFEO1xufTtcbiJdfQ==