@1money/component-ui 0.0.46 → 0.0.48

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 (75) hide show
  1. package/es/components/Table/Table.d.ts +2 -2
  2. package/es/components/Table/Table.js +25 -148
  3. package/es/components/Table/VirtualTable.d.ts +2 -2
  4. package/es/components/Table/VirtualTable.js +30 -143
  5. package/es/components/Table/core/useTableColumns.d.ts +21 -7
  6. package/es/components/Table/core/useTableColumns.js +76 -14
  7. package/es/components/Table/core/useTableDataPipeline.d.ts +13 -6
  8. package/es/components/Table/core/useTableDataPipeline.js +193 -27
  9. package/es/components/Table/core/useTableExpand.d.ts +4 -2
  10. package/es/components/Table/core/useTableExpand.js +30 -5
  11. package/es/components/Table/core/useTableSelection.d.ts +3 -5
  12. package/es/components/Table/core/useTableSelection.js +1 -1
  13. package/es/components/Table/core/useTableSetup.d.ts +42 -0
  14. package/es/components/Table/core/useTableSetup.js +195 -0
  15. package/es/components/Table/features/ExpandTrigger.js +10 -2
  16. package/es/components/Table/features/FilterTrigger.d.ts +9 -0
  17. package/es/components/Table/features/FilterTrigger.js +157 -0
  18. package/es/components/Table/features/SelectionColumn.d.ts +3 -2
  19. package/es/components/Table/features/SelectionColumn.js +19 -6
  20. package/es/components/Table/interface.d.ts +103 -21
  21. package/es/components/Table/internal/kernel/FixedHolder/index.js +1 -2
  22. package/es/components/Table/internal/kernel/Table.d.ts +1 -1
  23. package/es/components/Table/internal/kernel/Table.js +2 -8
  24. package/es/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -2
  25. package/es/components/Table/internal/kernel/VirtualTable/index.js +1 -2
  26. package/es/components/Table/internal/kernel/constant.d.ts +1 -1
  27. package/es/components/Table/internal/kernel/constant.js +1 -1
  28. package/es/components/Table/internal/kernel/hooks/useExpand.js +1 -2
  29. package/es/components/Table/internal/kernel/utils/offsetUtil.js +1 -2
  30. package/es/components/Table/renderers/BodyCell.d.ts +4 -4
  31. package/es/components/Table/renderers/BodyCell.js +1 -1
  32. package/es/components/Table/renderers/HeaderCell.d.ts +8 -4
  33. package/es/components/Table/renderers/HeaderCell.js +13 -3
  34. package/es/components/Table/style/Table.css +1 -1
  35. package/es/components/VirtualList/ScrollBar.js +1 -2
  36. package/es/index.css +1 -1
  37. package/lib/components/Table/Table.d.ts +2 -2
  38. package/lib/components/Table/Table.js +24 -150
  39. package/lib/components/Table/VirtualTable.d.ts +2 -2
  40. package/lib/components/Table/VirtualTable.js +28 -144
  41. package/lib/components/Table/core/useTableColumns.d.ts +21 -7
  42. package/lib/components/Table/core/useTableColumns.js +76 -14
  43. package/lib/components/Table/core/useTableDataPipeline.d.ts +13 -6
  44. package/lib/components/Table/core/useTableDataPipeline.js +192 -26
  45. package/lib/components/Table/core/useTableExpand.d.ts +4 -2
  46. package/lib/components/Table/core/useTableExpand.js +30 -5
  47. package/lib/components/Table/core/useTableSelection.d.ts +3 -5
  48. package/lib/components/Table/core/useTableSelection.js +1 -1
  49. package/lib/components/Table/core/useTableSetup.d.ts +42 -0
  50. package/lib/components/Table/core/useTableSetup.js +204 -0
  51. package/lib/components/Table/features/ExpandTrigger.js +10 -2
  52. package/lib/components/Table/features/FilterTrigger.d.ts +9 -0
  53. package/lib/components/Table/features/FilterTrigger.js +164 -0
  54. package/lib/components/Table/features/SelectionColumn.d.ts +3 -2
  55. package/lib/components/Table/features/SelectionColumn.js +19 -6
  56. package/lib/components/Table/interface.d.ts +103 -21
  57. package/lib/components/Table/internal/kernel/FixedHolder/index.js +1 -2
  58. package/lib/components/Table/internal/kernel/Table.d.ts +1 -1
  59. package/lib/components/Table/internal/kernel/Table.js +2 -8
  60. package/lib/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -2
  61. package/lib/components/Table/internal/kernel/VirtualTable/index.js +1 -2
  62. package/lib/components/Table/internal/kernel/constant.d.ts +1 -1
  63. package/lib/components/Table/internal/kernel/constant.js +1 -1
  64. package/lib/components/Table/internal/kernel/hooks/useExpand.js +1 -2
  65. package/lib/components/Table/internal/kernel/utils/offsetUtil.js +1 -2
  66. package/lib/components/Table/renderers/BodyCell.d.ts +4 -4
  67. package/lib/components/Table/renderers/BodyCell.js +1 -1
  68. package/lib/components/Table/renderers/HeaderCell.d.ts +8 -4
  69. package/lib/components/Table/renderers/HeaderCell.js +13 -3
  70. package/lib/components/Table/style/Table.css +1 -1
  71. package/lib/components/VirtualList/ScrollBar.js +1 -2
  72. package/lib/index.css +1 -1
  73. package/package.json +1 -1
  74. package/scripts/mcp-server/examples.generated.json +132 -0
  75. package/scripts/mcp-server/index.generated.json +344 -14
@@ -4,7 +4,7 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
4
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
5
5
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6
6
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
- import { useMemo } from 'react';
7
+ import { useMemo, useRef } from 'react';
8
8
  import { useControlledState, useMemoizedFn } from '@1money/hooks';
9
9
  function isColumnGroup(col) {
10
10
  return 'children' in col && Array.isArray(col.children);
@@ -86,17 +86,46 @@ function applySortToData(data, columns, sorterStates) {
86
86
  });
87
87
  return sorted;
88
88
  }
89
- export var applyTablePipeline = function applyTablePipeline(_ref) {
90
- var columns = _ref.columns,
91
- dataSource = _ref.dataSource,
92
- sorter = _ref.sorter,
93
- pagination = _ref.pagination;
89
+ function applyFiltersToData(data, columns, filters) {
90
+ // Resolve which columns have an active filter selection AND a predicate.
91
+ var activeFilters = columns.map(function (col) {
92
+ if (col.key == null) return null;
93
+ var selected = filters[String(col.key)];
94
+ if (!selected || selected.length === 0) return null;
95
+ if (!col.onFilter) return null;
96
+ return {
97
+ onFilter: col.onFilter,
98
+ selected: selected
99
+ };
100
+ }).filter(Boolean);
101
+ if (activeFilters.length === 0) return data;
102
+ return data.filter(function (record) {
103
+ return (
104
+ // Row passes only if EVERY active column has at least one matching selected value.
105
+ activeFilters.every(function (_ref) {
106
+ var onFilter = _ref.onFilter,
107
+ selected = _ref.selected;
108
+ return selected.some(function (value) {
109
+ return onFilter(value, record);
110
+ });
111
+ })
112
+ );
113
+ });
114
+ }
115
+ export var applyTablePipeline = function applyTablePipeline(_ref2) {
116
+ var columns = _ref2.columns,
117
+ dataSource = _ref2.dataSource,
118
+ sorter = _ref2.sorter,
119
+ _ref2$filters = _ref2.filters,
120
+ filters = _ref2$filters === void 0 ? {} : _ref2$filters,
121
+ pagination = _ref2.pagination;
94
122
  var sorterStates = sorter.columnKey != null && sorter.order ? [{
95
123
  columnKey: sorter.columnKey,
96
124
  order: sorter.order
97
125
  }] : [];
98
126
  var leafColumns = flattenColumns(columns);
99
- var sorted = applySortToData(dataSource, leafColumns, sorterStates);
127
+ var filtered = applyFiltersToData(dataSource, leafColumns, filters);
128
+ var sorted = applySortToData(filtered, leafColumns, sorterStates);
100
129
  if (!pagination) {
101
130
  return {
102
131
  currentDataSource: sorted,
@@ -156,24 +185,119 @@ var getControlledSorter = function getControlledSorter(columns) {
156
185
  order: (_a = controlledColumn.sortOrder) !== null && _a !== void 0 ? _a : null
157
186
  };
158
187
  };
159
- export var useTableDataPipeline = function useTableDataPipeline(_ref2) {
160
- var columns = _ref2.columns,
161
- dataSource = _ref2.dataSource,
162
- pagination = _ref2.pagination,
163
- onChange = _ref2.onChange;
188
+ var getInitialFilters = function getInitialFilters(columns) {
189
+ var _a;
190
+ var leaves = flattenColumns(columns);
191
+ var state = {};
192
+ var _iterator4 = _createForOfIteratorHelper(leaves),
193
+ _step4;
194
+ try {
195
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
196
+ var col = _step4.value;
197
+ if (col.key == null) continue;
198
+ var initial = (_a = col.defaultFilteredValue) !== null && _a !== void 0 ? _a : col.filteredValue;
199
+ if (initial !== undefined) {
200
+ state[String(col.key)] = initial !== null && initial !== void 0 ? initial : null;
201
+ }
202
+ }
203
+ } catch (err) {
204
+ _iterator4.e(err);
205
+ } finally {
206
+ _iterator4.f();
207
+ }
208
+ return state;
209
+ };
210
+ var getControlledFilters = function getControlledFilters(columns) {
211
+ var leaves = flattenColumns(columns);
212
+ var hasControlled = false;
213
+ var state = {};
214
+ var _iterator5 = _createForOfIteratorHelper(leaves),
215
+ _step5;
216
+ try {
217
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
218
+ var col = _step5.value;
219
+ if (col.key == null) continue;
220
+ if (col.filteredValue !== undefined) {
221
+ hasControlled = true;
222
+ state[String(col.key)] = col.filteredValue;
223
+ }
224
+ }
225
+ } catch (err) {
226
+ _iterator5.e(err);
227
+ } finally {
228
+ _iterator5.f();
229
+ }
230
+ return hasControlled ? state : undefined;
231
+ };
232
+ /**
233
+ * Returns a value whose reference is preserved across renders as long as the
234
+ * shallow contents are unchanged (per `equal`). Used to stabilise the derived
235
+ * controlled candidates fed to `useControlledState` — they would otherwise be
236
+ * fresh objects every render and thrash the hook's internal `useLayoutEffect`.
237
+ */
238
+ function useStableRef(value, equal) {
239
+ var ref = useRef(value);
240
+ if (!equal(ref.current, value)) {
241
+ ref.current = value;
242
+ }
243
+ return ref.current;
244
+ }
245
+ function sorterEqual(a, b) {
246
+ if (a === b) return true;
247
+ if (!a || !b) return false;
248
+ return a.columnKey === b.columnKey && a.order === b.order;
249
+ }
250
+ function filterValueEqual(a, b) {
251
+ if (a === b) return true;
252
+ if (!a || !b) return false;
253
+ if (a.length !== b.length) return false;
254
+ for (var i = 0; i < a.length; i++) {
255
+ if (a[i] !== b[i]) return false;
256
+ }
257
+ return true;
258
+ }
259
+ function filtersEqual(a, b) {
260
+ if (a === b) return true;
261
+ if (!a || !b) return false;
262
+ var keysA = Object.keys(a);
263
+ var keysB = Object.keys(b);
264
+ if (keysA.length !== keysB.length) return false;
265
+ for (var _i = 0, _keysA = keysA; _i < _keysA.length; _i++) {
266
+ var key = _keysA[_i];
267
+ if (!filterValueEqual(a[key], b[key])) return false;
268
+ }
269
+ return true;
270
+ }
271
+ export var useTableDataPipeline = function useTableDataPipeline(_ref3) {
272
+ var columns = _ref3.columns,
273
+ dataSource = _ref3.dataSource,
274
+ pagination = _ref3.pagination,
275
+ onChange = _ref3.onChange;
164
276
  var _a, _b, _c, _d;
165
- var _useControlledState = useControlledState(getInitialSorter(columns), getControlledSorter(columns)),
277
+ // Sorter / filters are "derived controlled" — the controlled value is built
278
+ // by scanning column props (`sortOrder` / `filteredValue`), so `getControlled*`
279
+ // returns a fresh object every render even when the underlying inputs are
280
+ // unchanged. Without stabilisation, `useControlledState`'s internal
281
+ // `useLayoutEffect([value])` would re-sync on every render → infinite loop.
282
+ // Pin the reference via a shallow-equal ref.
283
+ var controlledSorter = useStableRef(getControlledSorter(columns), sorterEqual);
284
+ var controlledFilters = useStableRef(getControlledFilters(columns), filtersEqual);
285
+ var _useControlledState = useControlledState(getInitialSorter(columns), controlledSorter),
166
286
  _useControlledState2 = _slicedToArray(_useControlledState, 2),
167
287
  sorter = _useControlledState2[0],
168
288
  setSorter = _useControlledState2[1];
169
- var _useControlledState3 = useControlledState(pagination === false ? 1 : (_b = (_a = pagination === null || pagination === void 0 ? void 0 : pagination.defaultCurrent) !== null && _a !== void 0 ? _a : pagination === null || pagination === void 0 ? void 0 : pagination.current) !== null && _b !== void 0 ? _b : 1, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.current),
289
+ var _useControlledState3 = useControlledState(getInitialFilters(columns), controlledFilters),
170
290
  _useControlledState4 = _slicedToArray(_useControlledState3, 2),
171
- current = _useControlledState4[0],
172
- setCurrent = _useControlledState4[1];
173
- var _useControlledState5 = useControlledState(pagination === false ? 10 : (_d = (_c = pagination === null || pagination === void 0 ? void 0 : pagination.defaultPageSize) !== null && _c !== void 0 ? _c : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize) !== null && _d !== void 0 ? _d : 10, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize),
291
+ filters = _useControlledState4[0],
292
+ setFilters = _useControlledState4[1];
293
+ var _useControlledState5 = useControlledState(pagination === false ? 1 : (_b = (_a = pagination === null || pagination === void 0 ? void 0 : pagination.defaultCurrent) !== null && _a !== void 0 ? _a : pagination === null || pagination === void 0 ? void 0 : pagination.current) !== null && _b !== void 0 ? _b : 1, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.current),
174
294
  _useControlledState6 = _slicedToArray(_useControlledState5, 2),
175
- pageSize = _useControlledState6[0],
176
- setPageSize = _useControlledState6[1];
295
+ current = _useControlledState6[0],
296
+ setCurrent = _useControlledState6[1];
297
+ var _useControlledState7 = useControlledState(pagination === false ? 10 : (_d = (_c = pagination === null || pagination === void 0 ? void 0 : pagination.defaultPageSize) !== null && _c !== void 0 ? _c : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize) !== null && _d !== void 0 ? _d : 10, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize),
298
+ _useControlledState8 = _slicedToArray(_useControlledState7, 2),
299
+ pageSize = _useControlledState8[0],
300
+ setPageSize = _useControlledState8[1];
177
301
  var mergedPagination = pagination === false ? false : {
178
302
  current: current,
179
303
  pageSize: pageSize
@@ -201,9 +325,19 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref2) {
201
325
  columns: columns,
202
326
  dataSource: dataSource,
203
327
  sorter: sorter,
328
+ filters: filters,
204
329
  pagination: mergedPagination
205
330
  });
206
- }, [columns, dataSource, sorter, mergedPagination]);
331
+ }, [columns, dataSource, sorter, filters, mergedPagination]);
332
+ var emitChange = useMemoizedFn(function (nextDataSource, action, nextState) {
333
+ onChange === null || onChange === void 0 ? void 0 : onChange({
334
+ currentDataSource: nextDataSource,
335
+ action: action,
336
+ sorter: nextState.sorter,
337
+ filters: nextState.filters,
338
+ pagination: nextState.pagination
339
+ });
340
+ });
207
341
  // useMemoizedFn: stable ref, always calls latest closure — no stale deps risk
208
342
  var wrappedSetSorter = useMemoizedFn(function (updater) {
209
343
  var nextSorter = typeof updater === 'function' ? updater(sorter) : updater;
@@ -221,11 +355,39 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref2) {
221
355
  columns: columns,
222
356
  dataSource: dataSource,
223
357
  sorter: nextSorter,
358
+ filters: filters,
224
359
  pagination: resetPagination
225
360
  });
226
- onChange({
227
- currentDataSource: nextResult.currentDataSource,
228
- action: 'sort'
361
+ emitChange(nextResult.currentDataSource, 'sort', {
362
+ sorter: nextSorter,
363
+ filters: filters,
364
+ pagination: resetPagination
365
+ });
366
+ }
367
+ });
368
+ var wrappedSetFilters = useMemoizedFn(function (updater) {
369
+ var nextFilters = typeof updater === 'function' ? updater(filters) : updater;
370
+ setFilters(nextFilters);
371
+ // Reset pagination to page 1 when filters change
372
+ if (mergedPagination !== false) {
373
+ setCurrent(1);
374
+ }
375
+ if (onChange) {
376
+ var resetPagination = mergedPagination === false ? false : {
377
+ current: 1,
378
+ pageSize: pageSize
379
+ };
380
+ var nextResult = applyTablePipeline({
381
+ columns: columns,
382
+ dataSource: dataSource,
383
+ sorter: sorter,
384
+ filters: nextFilters,
385
+ pagination: resetPagination
386
+ });
387
+ emitChange(nextResult.currentDataSource, 'filter', {
388
+ sorter: sorter,
389
+ filters: nextFilters,
390
+ pagination: resetPagination
229
391
  });
230
392
  }
231
393
  });
@@ -243,20 +405,24 @@ export var useTableDataPipeline = function useTableDataPipeline(_ref2) {
243
405
  columns: columns,
244
406
  dataSource: dataSource,
245
407
  sorter: sorter,
408
+ filters: filters,
246
409
  pagination: nextValue
247
410
  });
248
- onChange({
249
- currentDataSource: nextResult.currentDataSource,
250
- action: 'paginate'
411
+ emitChange(nextResult.currentDataSource, 'paginate', {
412
+ sorter: sorter,
413
+ filters: filters,
414
+ pagination: nextValue
251
415
  });
252
416
  }
253
417
  });
254
418
  return Object.assign(Object.assign({}, result), {
255
419
  sorter: sorter,
256
420
  sorterStates: sorterStates,
421
+ filters: filters,
257
422
  pagination: mergedPagination,
258
423
  setSorter: wrappedSetSorter,
424
+ setFilters: wrappedSetFilters,
259
425
  setPagination: wrappedSetPagination
260
426
  });
261
427
  };
262
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsImlzQ29sdW1uR3JvdXAiLCJjb2wiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZHJlbiIsImZsYXR0ZW5Db2x1bW5zIiwiY29sdW1ucyIsInJlc3VsdCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImVyciIsImUiLCJmIiwiZ2V0U29ydEZ1bmN0aW9uIiwic29ydGVyIiwiX3R5cGVvZiIsImNvbXBhcmUiLCJnZXRNdWx0aXBsZVByaW9yaXR5IiwiY29sdW1uIiwibXVsdGlwbGUiLCJhcHBseVNvcnRUb0RhdGEiLCJkYXRhIiwic29ydGVyU3RhdGVzIiwibGVuZ3RoIiwic29ydGVkIiwicnVubmluZ1NvcnRlcnMiLCJtYXAiLCJzdGF0ZSIsImZpbmQiLCJrZXkiLCJjb2x1bW5LZXkiLCJjb21wYXJlRm4iLCJwcmlvcml0eSIsIm9yZGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsInNvcnQiLCJhIiwiYiIsImFwIiwiYnAiLCJyZWNvcmQxIiwicmVjb3JkMiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfc3RlcDIkdmFsdWUiLCJhcHBseVRhYmxlUGlwZWxpbmUiLCJfcmVmIiwiZGF0YVNvdXJjZSIsInBhZ2luYXRpb24iLCJsZWFmQ29sdW1ucyIsImN1cnJlbnREYXRhU291cmNlIiwidG90YWwiLCJzdGFydCIsImN1cnJlbnQiLCJwYWdlU2l6ZSIsImVuZCIsInNsaWNlIiwiY29sbGVjdFNvcnRlclN0YXRlcyIsIl9hIiwibGVhdmVzIiwic3RhdGVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNvcnRPcmRlciIsImRlZmF1bHRTb3J0T3JkZXIiLCJnZXRJbml0aWFsU29ydGVyIiwiZ2V0Q29udHJvbGxlZFNvcnRlciIsImNvbnRyb2xsZWRDb2x1bW4iLCJ1bmRlZmluZWQiLCJ1c2VUYWJsZURhdGFQaXBlbGluZSIsIl9yZWYyIiwib25DaGFuZ2UiLCJfYiIsIl9jIiwiX2QiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldFNvcnRlciIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiZGVmYXVsdEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsInNldEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNSIsImRlZmF1bHRQYWdlU2l6ZSIsIl91c2VDb250cm9sbGVkU3RhdGU2Iiwic2V0UGFnZVNpemUiLCJtZXJnZWRQYWdpbmF0aW9uIiwicHJpbWFyeSIsImFkZGl0aW9uYWwiLCJjb25jYXQiLCJ3cmFwcGVkU2V0U29ydGVyIiwidXBkYXRlciIsIm5leHRTb3J0ZXIiLCJyZXNldFBhZ2luYXRpb24iLCJuZXh0UmVzdWx0IiwiYWN0aW9uIiwid3JhcHBlZFNldFBhZ2luYXRpb24iLCJjdXJyZW50VmFsdWUiLCJuZXh0VmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRQYWdpbmF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxPQUFPLFFBQVEsT0FBTztBQUMvQixTQUFTQyxrQkFBa0IsRUFBRUMsYUFBYSxRQUFRLGVBQWU7QUFJakUsU0FBU0MsYUFBYUEsQ0FBSUMsR0FBdUIsRUFBQTtFQUMvQyxPQUFPLFVBQVUsSUFBSUEsR0FBRyxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBRUYsR0FBMkIsQ0FBQ0csUUFBUSxDQUFDO0FBQ2xGO0FBRUEsU0FBU0MsY0FBY0EsQ0FBSUMsT0FBNkIsRUFBQTtFQUN0RCxJQUFNQyxNQUFNLEdBQXFCLEVBQUU7RUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ2xCSCxPQUFPO0lBQUFJLEtBQUE7RUFBQTtJQUF6QixLQUFBRixTQUFBLENBQUFHLENBQUEsTUFBQUQsS0FBQSxHQUFBRixTQUFBLENBQUFJLENBQUEsSUFBQUMsSUFBQSxHQUEyQjtNQUFBLElBQWhCWixHQUFHLEdBQUFTLEtBQUEsQ0FBQUksS0FBQTtNQUNaLElBQUlkLGFBQWEsQ0FBQ0MsR0FBRyxDQUFDLEVBQUU7UUFDdEJNLE1BQU0sQ0FBQ1EsSUFBSSxDQUFBQyxLQUFBLENBQVhULE1BQU0sRUFBQVUsa0JBQUEsQ0FBU1osY0FBYyxDQUFDSixHQUFHLENBQUNHLFFBQVEsQ0FBQyxFQUFDO01BQzlDLENBQUMsTUFBTTtRQUNMRyxNQUFNLENBQUNRLElBQUksQ0FBQ2QsR0FBRyxDQUFDO01BQ2xCO0lBQ0Y7RUFBQyxTQUFBaUIsR0FBQTtJQUFBVixTQUFBLENBQUFXLENBQUEsQ0FBQUQsR0FBQTtFQUFBO0lBQUFWLFNBQUEsQ0FBQVksQ0FBQTtFQUFBO0VBQ0QsT0FBT2IsTUFBTTtBQUNmO0FBNkNBLFNBQVNjLGVBQWVBLENBQ3RCQyxNQUFnQyxFQUFBO0VBRWhDLElBQUksT0FBT0EsTUFBTSxLQUFLLFVBQVUsRUFBRSxPQUFPQSxNQUFNO0VBQy9DLElBQUlBLE1BQU0sSUFBSUMsT0FBQSxDQUFPRCxNQUFNLE1BQUssUUFBUSxJQUFJLFNBQVMsSUFBSUEsTUFBTSxFQUFFLE9BQU9BLE1BQU0sQ0FBQ0UsT0FBTztFQUN0RixPQUFPLEtBQUs7QUFDZDtBQUVBLFNBQVNDLG1CQUFtQkEsQ0FBSUMsTUFBc0IsRUFBQTtFQUNwRCxJQUFJQSxNQUFNLENBQUNKLE1BQU0sSUFBSUMsT0FBQSxDQUFPRyxNQUFNLENBQUNKLE1BQU0sTUFBSyxRQUFRLElBQUksVUFBVSxJQUFJSSxNQUFNLENBQUNKLE1BQU0sRUFBRTtJQUNyRixPQUFRSSxNQUFNLENBQUNKLE1BQXFDLENBQUNLLFFBQVE7RUFDL0Q7RUFDQSxPQUFPLEtBQUs7QUFDZDtBQUVBLFNBQVNDLGVBQWVBLENBQ3RCQyxJQUFTLEVBQ1R2QixPQUF5QixFQUN6QndCLFlBQXFDLEVBQUE7RUFFckMsSUFBSUEsWUFBWSxDQUFDQyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU9GLElBQUk7RUFFMUMsSUFBTUcsTUFBTSxHQUFBZixrQkFBQSxDQUFPWSxJQUFJLENBQUM7RUFFeEIsSUFBTUksY0FBYyxHQUFHSCxZQUFZLENBQ2hDSSxHQUFHLENBQUMsVUFBQ0MsS0FBSyxFQUFJO0lBQ2IsSUFBTVQsTUFBTSxHQUFHcEIsT0FBTyxDQUFDOEIsSUFBSSxDQUFDLFVBQUNuQyxHQUFHO01BQUEsT0FBS0EsR0FBRyxDQUFDb0MsR0FBRyxLQUFLRixLQUFLLENBQUNHLFNBQVM7SUFBQSxFQUFDO0lBQ2pFLElBQUksQ0FBQ1osTUFBTSxFQUFFLE9BQU8sSUFBSTtJQUN4QixJQUFNYSxTQUFTLEdBQUdsQixlQUFlLENBQUNLLE1BQU0sQ0FBQ0osTUFBTSxDQUFDO0lBQ2hELElBQUksQ0FBQ2lCLFNBQVMsRUFBRSxPQUFPLElBQUk7SUFDM0IsSUFBTUMsUUFBUSxHQUFHZixtQkFBbUIsQ0FBQ0MsTUFBTSxDQUFDO0lBQzVDLE9BQU87TUFBRWEsU0FBUyxFQUFUQSxTQUFTO01BQUVFLEtBQUssRUFBRU4sS0FBSyxDQUFDTSxLQUFLO01BQUVELFFBQVEsRUFBUkE7SUFBUSxDQUFFO0VBQ3BELENBQUMsQ0FBQyxDQUNERSxNQUFNLENBQUNDLE9BQU8sQ0FBbUc7RUFFcEgsSUFBSVYsY0FBYyxDQUFDRixNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU9GLElBQUk7RUFFNUM7RUFDQUksY0FBYyxDQUFDVyxJQUFJLENBQUMsVUFBQ0MsQ0FBQyxFQUFFQyxDQUFDLEVBQUk7SUFDM0IsSUFBTUMsRUFBRSxHQUFHLE9BQU9GLENBQUMsQ0FBQ0wsUUFBUSxLQUFLLFFBQVEsR0FBR0ssQ0FBQyxDQUFDTCxRQUFRLEdBQUcsQ0FBQztJQUMxRCxJQUFNUSxFQUFFLEdBQUcsT0FBT0YsQ0FBQyxDQUFDTixRQUFRLEtBQUssUUFBUSxHQUFHTSxDQUFDLENBQUNOLFFBQVEsR0FBRyxDQUFDO0lBQzFELE9BQU9RLEVBQUUsR0FBR0QsRUFBRTtFQUNoQixDQUFDLENBQUM7RUFFRmYsTUFBTSxDQUFDWSxJQUFJLENBQUMsVUFBQ0ssT0FBTyxFQUFFQyxPQUFPLEVBQUk7SUFBQSxJQUFBQyxVQUFBLEdBQUExQywwQkFBQSxDQUNJd0IsY0FBYztNQUFBbUIsTUFBQTtJQUFBO01BQWpELEtBQUFELFVBQUEsQ0FBQXhDLENBQUEsTUFBQXlDLE1BQUEsR0FBQUQsVUFBQSxDQUFBdkMsQ0FBQSxJQUFBQyxJQUFBLEdBQW1EO1FBQUEsSUFBQXdDLFlBQUEsR0FBQUQsTUFBQSxDQUFBdEMsS0FBQTtVQUF0Q3lCLFNBQVMsR0FBQWMsWUFBQSxDQUFUZCxTQUFTO1VBQUVFLEtBQUssR0FBQVksWUFBQSxDQUFMWixLQUFLO1FBQzNCLElBQU1sQyxNQUFNLEdBQUdnQyxTQUFTLENBQUNVLE9BQU8sRUFBRUMsT0FBTyxDQUFDO1FBQzFDLElBQUkzQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1VBQ2hCLE9BQU9rQyxLQUFLLEtBQUssUUFBUSxHQUFHbEMsTUFBTSxHQUFHLENBQUNBLE1BQU07UUFDOUM7TUFDRjtJQUFDLFNBQUFXLEdBQUE7TUFBQWlDLFVBQUEsQ0FBQWhDLENBQUEsQ0FBQUQsR0FBQTtJQUFBO01BQUFpQyxVQUFBLENBQUEvQixDQUFBO0lBQUE7SUFDRCxPQUFPLENBQUM7RUFDVixDQUFDLENBQUM7RUFFRixPQUFPWSxNQUFNO0FBQ2Y7QUFFQSxPQUFPLElBQU1zQixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBQyxJQUFBLEVBS0U7RUFBQSxJQUovQmpELE9BQU8sR0FBQWlELElBQUEsQ0FBUGpELE9BQU87SUFDUGtELFVBQVUsR0FBQUQsSUFBQSxDQUFWQyxVQUFVO0lBQ1ZsQyxNQUFNLEdBQUFpQyxJQUFBLENBQU5qQyxNQUFNO0lBQ05tQyxVQUFVLEdBQUFGLElBQUEsQ0FBVkUsVUFBVTtFQUVWLElBQU0zQixZQUFZLEdBQ2hCUixNQUFNLENBQUNnQixTQUFTLElBQUksSUFBSSxJQUFJaEIsTUFBTSxDQUFDbUIsS0FBSyxHQUNwQyxDQUFDO0lBQUVILFNBQVMsRUFBRWhCLE1BQU0sQ0FBQ2dCLFNBQVM7SUFBRUcsS0FBSyxFQUFFbkIsTUFBTSxDQUFDbUI7RUFBSyxDQUFFLENBQUMsR0FDdEQsRUFBRTtFQUVSLElBQU1pQixXQUFXLEdBQUdyRCxjQUFjLENBQUNDLE9BQU8sQ0FBQztFQUMzQyxJQUFNMEIsTUFBTSxHQUFHSixlQUFlLENBQUM0QixVQUFVLEVBQUVFLFdBQVcsRUFBRTVCLFlBQVksQ0FBQztFQUVyRSxJQUFJLENBQUMyQixVQUFVLEVBQUU7SUFDZixPQUFPO01BQUVFLGlCQUFpQixFQUFFM0IsTUFBTTtNQUFFNEIsS0FBSyxFQUFFNUIsTUFBTSxDQUFDRDtJQUFNLENBQUU7RUFDNUQ7RUFFQSxJQUFNOEIsS0FBSyxHQUFHLENBQUNKLFVBQVUsQ0FBQ0ssT0FBTyxHQUFHLENBQUMsSUFBSUwsVUFBVSxDQUFDTSxRQUFRO0VBQzVELElBQU1DLEdBQUcsR0FBR0gsS0FBSyxHQUFHSixVQUFVLENBQUNNLFFBQVE7RUFFdkMsT0FBTztJQUNMSixpQkFBaUIsRUFBRTNCLE1BQU0sQ0FBQ2lDLEtBQUssQ0FBQ0osS0FBSyxFQUFFRyxHQUFHLENBQUM7SUFDM0NKLEtBQUssRUFBRTVCLE1BQU0sQ0FBQ0Q7RUNqRWQsQ0RrRUQ7QUFDSCxDQUFDO0FBRUQsU0FBU21DLG1CQUFtQkEsQ0FBSTVELE9BQTZCLEVBQUE7RUNsRXpELElBQUk2RCxFQUFFO0VEbUVSLElBQU1DLE1BQU0sR0FBRy9ELGNBQWMsQ0FBQ0MsT0FBTyxDQUFDO0VBQ3RDLElBQU0rRCxNQUFNLEdBQTRCLEVBQUU7RUFBQyxJQUFBQyxVQUFBLEdBQUE3RCwwQkFBQSxDQUN6QjJELE1BQU07SUFBQUcsTUFBQTtFQUFBO0lBQXhCLEtBQUFELFVBQUEsQ0FBQTNELENBQUEsTUFBQTRELE1BQUEsR0FBQUQsVUFBQSxDQUFBMUQsQ0FBQSxJQUFBQyxJQUFBLEdBQTBCO01BQUEsSUFBZlosR0FBRyxHQUFBc0UsTUFBQSxDQUFBekQsS0FBQTtNQUNaLElBQU0yQixLQUFLLEdBQUcsQ0FBQTBCLEVBQUEsR0FBQWxFLEdBQUcsQ0FBQ3VFLFNBQVMsTUFBQSxJQUFBLElBQUFMLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJbEUsR0FBRyxDQUFDd0UsZ0JBQWdCO01BQ25ELElBQUl4RSxHQUFHLENBQUNvQyxHQUFHLElBQUksSUFBSSxJQUFJSSxLQUFLLEVBQUU7UUFDNUI0QixNQUFNLENBQUN0RCxJQUFJLENBQUM7VUFBRXVCLFNBQVMsRUFBRXJDLEdBQUcsQ0FBQ29DLEdBQUc7VUFBRUksS0FBSyxFQUFMQTtRQUFLLENBQUUsQ0FBQztNQUM1QztJQUNGO0VBQUMsU0FBQXZCLEdBQUE7SUFBQW9ELFVBQUEsQ0FBQW5ELENBQUEsQ0FBQUQsR0FBQTtFQUFBO0lBQUFvRCxVQUFBLENBQUFsRCxDQUFBO0VBQUE7RUFDRCxPQUFPaUQsTUFBTTtBQUNmO0FBRUEsSUFBTUssZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBUXBFLE9BQTZCLEVBQXNCO0VBQy9FLElBQU0rRCxNQUFNLEdBQUdILG1CQUFtQixDQUFDNUQsT0FBTyxDQUFDO0VBQzNDLElBQUkrRCxNQUFNLENBQUN0QyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQSxDQUFFO0VBQ2xDLE9BQU87SUFBRU8sU0FBUyxFQUFFK0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDL0IsU0FBUztJQUFFRyxLQUFLLEVBQUU0QixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM1QjtFQUFLLENBQUU7QUFDbkUsQ0FBQztBQUVELElBQU1rQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFRckUsT0FBNkIsRUFBa0M7RUNsRTVGLElBQUk2RCxFQUFFO0VEbUVSLElBQU1DLE1BQU0sR0FBRy9ELGNBQWMsQ0FBQ0MsT0FBTyxDQUFDO0VBQ3RDLElBQU1zRSxnQkFBZ0IsR0FBR1IsTUFBTSxDQUFDaEMsSUFBSSxDQUFDLFVBQUNWLE1BQU07SUFBQSxPQUFLQSxNQUFNLENBQUM4QyxTQUFTLEtBQUtLLFNBQVM7RUFBQSxFQUFDO0VBRWhGLElBQUksQ0FBQ0QsZ0JBQWdCLEVBQUU7SUFDckIsT0FBT0MsU0FBUztFQUNsQjtFQUVBLE9BQU87SUFDTHZDLFNBQVMsRUFBRXNDLGdCQUFnQixDQUFDdkMsR0FBRztJQUMvQkksS0FBSyxFQUFFLENBQUEwQixFQUFBLEdBQUFTLGdCQUFnQixDQUFDSixTQUFTLE1BQUEsSUFBQSxJQUFBTCxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSTtFQ25FckMsQ0RvRUQ7QUFDSCxDQUFDO0FBRUQsT0FBTyxJQUFNVyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBQyxLQUFBLEVBS2lDO0VBQUEsSUFKaEV6RSxPQUFPLEdBQUF5RSxLQUFBLENBQVB6RSxPQUFPO0lBQ1BrRCxVQUFVLEdBQUF1QixLQUFBLENBQVZ2QixVQUFVO0lBQ1ZDLFVBQVUsR0FBQXNCLEtBQUEsQ0FBVnRCLFVBQVU7SUFDVnVCLFFBQVEsR0FBQUQsS0FBQSxDQUFSQyxRQUFRO0VDeEVOLElBQUliLEVBQUUsRUFBRWMsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUU7RUQwRXBCLElBQUFDLG1CQUFBLEdBQTRCdEYsa0JBQWtCLENBQzVDNEUsZ0JBQWdCLENBQUNwRSxPQUFPLENBQUMsRUFDekJxRSxtQkFBbUIsQ0FBQ3JFLE9BQU8sQ0FBQyxDQUM3QjtJQUFBK0Usb0JBQUEsR0FBQUMsY0FBQSxDQUFBRixtQkFBQTtJQUhNOUQsTUFBTSxHQUFBK0Qsb0JBQUE7SUFBRUUsU0FBUyxHQUFBRixvQkFBQTtFQUl4QixJQUFBRyxvQkFBQSxHQUE4QjFGLGtCQUFrQixDQUM5QzJELFVBQVUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxHQUFJLENBQUF3QixFQUFBLEdBQUEsQ0FBQWQsRUFBQSxHQUFBVixVQUFVLEtBQUEsSUFBQSxJQUFWQSxVQUFVLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVZBLFVBQVUsQ0FBRWdDLGNBQWMsTUFBQSxJQUFBLElBQUF0QixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSVYsVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVLLE9BQU8sTUFBQSxJQUFBLElBQUFtQixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSSxDQUFFLEVBQ25GeEIsVUFBVSxLQUFLLEtBQUssR0FBR29CLFNBQVMsR0FBR3BCLFVBQVUsS0FBQSxJQUFBLElBQVZBLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVkEsVUFBVSxDQUFFSyxPQUFPLENBQ3ZEO0lBQUE0QixvQkFBQSxHQUFBSixjQUFBLENBQUFFLG9CQUFBO0lBSE0xQixPQUFPLEdBQUE0QixvQkFBQTtJQUFFQyxVQUFVLEdBQUFELG9CQUFBO0VBSTFCLElBQUFFLG9CQUFBLEdBQWdDOUYsa0JBQWtCLENBQ2hEMkQsVUFBVSxLQUFLLEtBQUssR0FBRyxFQUFFLEdBQUksQ0FBQTBCLEVBQUEsR0FBQSxDQUFBRCxFQUFBLEdBQUF6QixVQUFVLEtBQUEsSUFBQSxJQUFWQSxVQUFVLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVZBLFVBQVUsQ0FBRW9DLGVBQWUsTUFBQSxJQUFBLElBQUFYLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJekIsVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVNLFFBQVEsTUFBQSxJQUFBLElBQUFvQixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSSxFQUFHLEVBQ3ZGMUIsVUFBVSxLQUFLLEtBQUssR0FBR29CLFNBQVMsR0FBR3BCLFVBQVUsS0FBQSxJQUFBLElBQVZBLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVkEsVUFBVSxDQUFFTSxRQUFRLENBQ3hEO0lBQUErQixvQkFBQSxHQUFBUixjQUFBLENBQUFNLG9CQUFBO0lBSE03QixRQUFRLEdBQUErQixvQkFBQTtJQUFFQyxXQUFXLEdBQUFELG9CQUFBO0VBSzVCLElBQU1FLGdCQUFnQixHQUFHdkMsVUFBVSxLQUFLLEtBQUssR0FDekMsS0FBSyxHQUNMO0lBQUVLLE9BQU8sRUFBUEEsT0FBTztJQUFFQyxRQUFRLEVBQVJBO0VBQVEsQ0FBRTtFQUV6QixJQUFNakMsWUFBWSxHQUE0QmpDLE9BQU8sQ0FBQyxZQUFLO0lBQ3pEO0lBQ0EsSUFBTW9HLE9BQU8sR0FDWDNFLE1BQU0sQ0FBQ2dCLFNBQVMsSUFBSSxJQUFJLElBQUloQixNQUFNLENBQUNtQixLQUFLLEdBQ3BDLENBQUM7TUFBRUgsU0FBUyxFQUFFaEIsTUFBTSxDQUFDZ0IsU0FBUztNQUFFRyxLQUFLLEVBQUVuQixNQUFNLENBQUNtQjtJQUFLLENBQUUsQ0FBQyxHQUN0RCxFQUFFO0lBRVI7SUFDQSxJQUFNaUIsV0FBVyxHQUFHckQsY0FBYyxDQUFDQyxPQUFPLENBQUM7SUFDM0MsSUFBTTRGLFVBQVUsR0FBR3hDLFdBQVcsQ0FDM0JoQixNQUFNLENBQUMsVUFBQ3pDLEdBQUc7TUFBQSxPQUFLQSxHQUFHLENBQUNvQyxHQUFHLElBQUksSUFBSSxJQUFJcEMsR0FBRyxDQUFDdUUsU0FBUyxJQUFJdkUsR0FBRyxDQUFDb0MsR0FBRyxLQUFLZixNQUFNLENBQUNnQixTQUFTO0lBQUEsRUFBQyxDQUNqRkosR0FBRyxDQUFDLFVBQUNqQyxHQUFHO01BQUEsT0FBTTtRQUFFcUMsU0FBUyxFQUFFckMsR0FBRyxDQUFDb0MsR0FBSTtRQUFFSSxLQUFLLEVBQUV4QyxHQUFHLENBQUN1RTtNQUEyQyxDQUFFO0lBQUEsQ0FBQyxDQUFDO0lBRWxHLFVBQUEyQixNQUFBLENBQVdGLE9BQU8sRUFBQWhGLGtCQUFBLENBQUtpRixVQUFVO0VBQ25DLENBQUMsRUFBRSxDQUFDNUUsTUFBTSxFQUFFaEIsT0FBTyxDQUFDLENBQUM7RUFFckIsSUFBTUMsTUFBTSxHQUFHVixPQUFPLENBQ3BCO0lBQUEsT0FBTXlELGtCQUFrQixDQUFDO01BQ3ZCaEQsT0FBTyxFQUFQQSxPQUFPO01BQ1BrRCxVQUFVLEVBQVZBLFVBQVU7TUFDVmxDLE1BQU0sRUFBTkEsTUFBTTtNQUNObUMsVUFBVSxFQUFFdUM7SUN4RmQsQ0R5RkMsQ0FBQztFQUFBLEdBQ0YsQ0FBQzFGLE9BQU8sRUFBRWtELFVBQVUsRUFBRWxDLE1BQU0sRUFBRTBFLGdCQUFnQixDQUFDLENBQ2hEO0VBRUQ7RUFDQSxJQUFNSSxnQkFBZ0IsR0FBR3JHLGFBQWEsQ0FDcEMsVUFBQ3NHLE9BQTZFLEVBQUk7SUFDaEYsSUFBTUMsVUFBVSxHQUFHLE9BQU9ELE9BQU8sS0FBSyxVQUFVLEdBQUdBLE9BQU8sQ0FBQy9FLE1BQU0sQ0FBQyxHQUFHK0UsT0FBTztJQUM1RWQsU0FBUyxDQUFDZSxVQUFVLENBQUM7SUFFckI7SUFDQSxJQUFJTixnQkFBZ0IsS0FBSyxLQUFLLEVBQUU7TUFDOUJMLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDZjtJQUVBLElBQUlYLFFBQVEsRUFBRTtNQUNaLElBQU11QixlQUFlLEdBQUdQLGdCQUFnQixLQUFLLEtBQUssR0FDOUMsS0FBSyxHQUNMO1FBQUVsQyxPQUFPLEVBQUUsQ0FBQztRQUFFQyxRQUFRLEVBQVJBO01BQVEsQ0FBRTtNQUM1QixJQUFNeUMsVUFBVSxHQUFHbEQsa0JBQWtCLENBQUM7UUFDcENoRCxPQUFPLEVBQVBBLE9BQU87UUFDUGtELFVBQVUsRUFBVkEsVUFBVTtRQUNWbEMsTUFBTSxFQUFFZ0YsVUFBVTtRQUNsQjdDLFVBQVUsRUFBRThDO01DOUZWLENEK0ZILENBQUM7TUFDRnZCLFFBQVEsQ0FBQztRQUFFckIsaUJBQWlCLEVBQUU2QyxVQUFVLENBQUM3QyxpQkFBaUI7UUFBRThDLE1BQU0sRUFBRTtNQUFNLENBQUUsQ0FBQztJQUMvRTtFQUNGLENBQUMsQ0FDRjtFQUVELElBQU1DLG9CQUFvQixHQUFHM0csYUFBYSxDQUN4QyxVQUNFc0csT0FDa0csRUFDaEc7SUFDRixJQUFJNUMsVUFBVSxLQUFLLEtBQUssRUFBRTtJQUUxQixJQUFNa0QsWUFBWSxHQUFHO01BQUU3QyxPQUFPLEVBQVBBLE9BQU87TUFBRUMsUUFBUSxFQUFSQTtJQUFRLENBQUU7SUFDMUMsSUFBTTZDLFNBQVMsR0FBRyxPQUFPUCxPQUFPLEtBQUssVUFBVSxHQUFHQSxPQUFPLENBQUNNLFlBQVksQ0FBQyxHQUFHTixPQUFPO0lBRWpGVixVQUFVLENBQUNpQixTQUFTLENBQUM5QyxPQUFPLENBQUM7SUFDN0JpQyxXQUFXLENBQUNhLFNBQVMsQ0FBQzdDLFFBQVEsQ0FBQztJQUUvQixJQUFJaUIsUUFBUSxFQUFFO01BQ1osSUFBTXdCLFVBQVUsR0FBR2xELGtCQUFrQixDQUFDO1FBQ3BDaEQsT0FBTyxFQUFQQSxPQUFPO1FBQ1BrRCxVQUFVLEVBQVZBLFVBQVU7UUFDVmxDLE1BQU0sRUFBTkEsTUFBTTtRQUNObUMsVUFBVSxFQUFFbUQ7TUN0R1YsQ0R1R0gsQ0FBQztNQUNGNUIsUUFBUSxDQUFDO1FBQUVyQixpQkFBaUIsRUFBRTZDLFVBQVUsQ0FBQzdDLGlCQUFpQjtRQUFFOEMsTUFBTSxFQUFFO01BQVUsQ0FBRSxDQUFDO0lBQ25GO0VBQ0YsQ0FBQyxDQUNGO0VBRUQsT0FBQUksTUFBQSxDQUFBQyxNQUFBLENBQUFELE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNLdkcsTUFBTSxDQUFBLEVBQUE7SUFDVGUsTUFBTSxFQUFOQSxNQUFNO0lBQ05RLFlBQVksRUFBWkEsWUFBWTtJQUNaMkIsVUFBVSxFQUFFdUMsZ0JBQWdCO0lBQzVCVCxTQUFTLEVBQUVhLGdCQUFnQjtJQUMzQlcsYUFBYSxFQUFFTDtFQUFvQixDQUFBLENBQUE7QUFFdkMsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVEYXRhUGlwZWxpbmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZU1lbW9pemVkRm4gfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmZ1bmN0aW9uIGlzQ29sdW1uR3JvdXAoY29sKSB7XG4gICAgcmV0dXJuICdjaGlsZHJlbicgaW4gY29sICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmZsYXR0ZW5Db2x1bW5zKGNvbC5jaGlsZHJlbikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goY29sKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0U29ydEZ1bmN0aW9uKHNvcnRlcikge1xuICAgIGlmICh0eXBlb2Ygc29ydGVyID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4gc29ydGVyO1xuICAgIGlmIChzb3J0ZXIgJiYgdHlwZW9mIHNvcnRlciA9PT0gJ29iamVjdCcgJiYgJ2NvbXBhcmUnIGluIHNvcnRlcilcbiAgICAgICAgcmV0dXJuIHNvcnRlci5jb21wYXJlO1xuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGdldE11bHRpcGxlUHJpb3JpdHkoY29sdW1uKSB7XG4gICAgaWYgKGNvbHVtbi5zb3J0ZXIgJiYgdHlwZW9mIGNvbHVtbi5zb3J0ZXIgPT09ICdvYmplY3QnICYmICdtdWx0aXBsZScgaW4gY29sdW1uLnNvcnRlcikge1xuICAgICAgICByZXR1cm4gY29sdW1uLnNvcnRlci5tdWx0aXBsZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gYXBwbHlTb3J0VG9EYXRhKGRhdGEsIGNvbHVtbnMsIHNvcnRlclN0YXRlcykge1xuICAgIGlmIChzb3J0ZXJTdGF0ZXMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZGF0YV07XG4gICAgY29uc3QgcnVubmluZ1NvcnRlcnMgPSBzb3J0ZXJTdGF0ZXNcbiAgICAgICAgLm1hcCgoc3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5rZXkgPT09IHN0YXRlLmNvbHVtbktleSk7XG4gICAgICAgIGlmICghY29sdW1uKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IGNvbXBhcmVGbiA9IGdldFNvcnRGdW5jdGlvbihjb2x1bW4uc29ydGVyKTtcbiAgICAgICAgaWYgKCFjb21wYXJlRm4pXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcHJpb3JpdHkgPSBnZXRNdWx0aXBsZVByaW9yaXR5KGNvbHVtbik7XG4gICAgICAgIHJldHVybiB7IGNvbXBhcmVGbiwgb3JkZXI6IHN0YXRlLm9yZGVyLCBwcmlvcml0eSB9O1xuICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgaWYgKHJ1bm5pbmdTb3J0ZXJzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgLy8gSGlnaGVyIHByaW9yaXR5IG51bWJlciA9IGNvbXBhcmVkIGZpcnN0XG4gICAgcnVubmluZ1NvcnRlcnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBhcCA9IHR5cGVvZiBhLnByaW9yaXR5ID09PSAnbnVtYmVyJyA/IGEucHJpb3JpdHkgOiAwO1xuICAgICAgICBjb25zdCBicCA9IHR5cGVvZiBiLnByaW9yaXR5ID09PSAnbnVtYmVyJyA/IGIucHJpb3JpdHkgOiAwO1xuICAgICAgICByZXR1cm4gYnAgLSBhcDtcbiAgICB9KTtcbiAgICBzb3J0ZWQuc29ydCgocmVjb3JkMSwgcmVjb3JkMikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHsgY29tcGFyZUZuLCBvcmRlciB9IG9mIHJ1bm5pbmdTb3J0ZXJzKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjb21wYXJlRm4ocmVjb3JkMSwgcmVjb3JkMik7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyID09PSAnYXNjZW5kJyA/IHJlc3VsdCA6IC1yZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvcnRlZDtcbn1cbmV4cG9ydCBjb25zdCBhcHBseVRhYmxlUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBzb3J0ZXIsIHBhZ2luYXRpb24sIH0pID0+IHtcbiAgICBjb25zdCBzb3J0ZXJTdGF0ZXMgPSBzb3J0ZXIuY29sdW1uS2V5ICE9IG51bGwgJiYgc29ydGVyLm9yZGVyXG4gICAgICAgID8gW3sgY29sdW1uS2V5OiBzb3J0ZXIuY29sdW1uS2V5LCBvcmRlcjogc29ydGVyLm9yZGVyIH1dXG4gICAgICAgIDogW107XG4gICAgY29uc3QgbGVhZkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBhcHBseVNvcnRUb0RhdGEoZGF0YVNvdXJjZSwgbGVhZkNvbHVtbnMsIHNvcnRlclN0YXRlcyk7XG4gICAgaWYgKCFwYWdpbmF0aW9uKSB7XG4gICAgICAgIHJldHVybiB7IGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQsIHRvdGFsOiBzb3J0ZWQubGVuZ3RoIH07XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ID0gKHBhZ2luYXRpb24uY3VycmVudCAtIDEpICogcGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IHNvcnRlZC5zbGljZShzdGFydCwgZW5kKSxcbiAgICAgICAgdG90YWw6IHNvcnRlZC5sZW5ndGgsXG4gICAgfTtcbn07XG5mdW5jdGlvbiBjb2xsZWN0U29ydGVyU3RhdGVzKGNvbHVtbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3Qgc3RhdGVzID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gKF9hID0gY29sLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29sLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIGlmIChjb2wua2V5ICE9IG51bGwgJiYgb3JkZXIpIHtcbiAgICAgICAgICAgIHN0YXRlcy5wdXNoKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlciB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGVzO1xufVxuY29uc3QgZ2V0SW5pdGlhbFNvcnRlciA9IChjb2x1bW5zKSA9PiB7XG4gICAgY29uc3Qgc3RhdGVzID0gY29sbGVjdFNvcnRlclN0YXRlcyhjb2x1bW5zKTtcbiAgICBpZiAoc3RhdGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIHJldHVybiB7IGNvbHVtbktleTogc3RhdGVzWzBdLmNvbHVtbktleSwgb3JkZXI6IHN0YXRlc1swXS5vcmRlciB9O1xufTtcbmNvbnN0IGdldENvbnRyb2xsZWRTb3J0ZXIgPSAoY29sdW1ucykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsZWF2ZXMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBjb25zdCBjb250cm9sbGVkQ29sdW1uID0gbGVhdmVzLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uLnNvcnRPcmRlciAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAoIWNvbnRyb2xsZWRDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uS2V5OiBjb250cm9sbGVkQ29sdW1uLmtleSxcbiAgICAgICAgb3JkZXI6IChfYSA9IGNvbnRyb2xsZWRDb2x1bW4uc29ydE9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsLFxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHVzZVRhYmxlRGF0YVBpcGVsaW5lID0gKHsgY29sdW1ucywgZGF0YVNvdXJjZSwgcGFnaW5hdGlvbiwgb25DaGFuZ2UsIH0pID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgY29uc3QgW3NvcnRlciwgc2V0U29ydGVyXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShnZXRJbml0aWFsU29ydGVyKGNvbHVtbnMpLCBnZXRDb250cm9sbGVkU29ydGVyKGNvbHVtbnMpKTtcbiAgICBjb25zdCBbY3VycmVudCwgc2V0Q3VycmVudF0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxIDogKChfYiA9IChfYSA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0Q3VycmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcGFnaW5hdGlvbiA9PT0gbnVsbCB8fCBwYWdpbmF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYWdpbmF0aW9uLmN1cnJlbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEpLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KTtcbiAgICBjb25zdCBbcGFnZVNpemUsIHNldFBhZ2VTaXplXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShwYWdpbmF0aW9uID09PSBmYWxzZSA/IDEwIDogKChfZCA9IChfYyA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0UGFnZVNpemUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMTApLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gICAgY29uc3QgbWVyZ2VkUGFnaW5hdGlvbiA9IHBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgID8gZmFsc2VcbiAgICAgICAgOiB7IGN1cnJlbnQsIHBhZ2VTaXplIH07XG4gICAgY29uc3Qgc29ydGVyU3RhdGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIC8vIFN0YXJ0IHdpdGggdGhlIHByaW1hcnkgdXNlci10b2dnbGVkIHNvcnRlclxuICAgICAgICBjb25zdCBwcmltYXJ5ID0gc29ydGVyLmNvbHVtbktleSAhPSBudWxsICYmIHNvcnRlci5vcmRlclxuICAgICAgICAgICAgPyBbeyBjb2x1bW5LZXk6IHNvcnRlci5jb2x1bW5LZXksIG9yZGVyOiBzb3J0ZXIub3JkZXIgfV1cbiAgICAgICAgICAgIDogW107XG4gICAgICAgIC8vIENvbGxlY3QgYW55IG90aGVyIGNvbHVtbnMgdGhhdCBoYXZlIGEgY29udHJvbGxlZCBzb3J0T3JkZXIgKGZvciBtdWx0aS1zb3J0KVxuICAgICAgICBjb25zdCBsZWFmQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsID0gbGVhZkNvbHVtbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sLmtleSAhPSBudWxsICYmIGNvbC5zb3J0T3JkZXIgJiYgY29sLmtleSAhPT0gc29ydGVyLmNvbHVtbktleSlcbiAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlcjogY29sLnNvcnRPcmRlciB9KSk7XG4gICAgICAgIHJldHVybiBbLi4ucHJpbWFyeSwgLi4uYWRkaXRpb25hbF07XG4gICAgfSwgW3NvcnRlciwgY29sdW1uc10pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHVzZU1lbW8oKCkgPT4gYXBwbHlUYWJsZVBpcGVsaW5lKHtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgc29ydGVyLFxuICAgICAgICBwYWdpbmF0aW9uOiBtZXJnZWRQYWdpbmF0aW9uLFxuICAgIH0pLCBbY29sdW1ucywgZGF0YVNvdXJjZSwgc29ydGVyLCBtZXJnZWRQYWdpbmF0aW9uXSk7XG4gICAgLy8gdXNlTWVtb2l6ZWRGbjogc3RhYmxlIHJlZiwgYWx3YXlzIGNhbGxzIGxhdGVzdCBjbG9zdXJlIOKAlCBubyBzdGFsZSBkZXBzIHJpc2tcbiAgICBjb25zdCB3cmFwcGVkU2V0U29ydGVyID0gdXNlTWVtb2l6ZWRGbigodXBkYXRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0U29ydGVyID0gdHlwZW9mIHVwZGF0ZXIgPT09ICdmdW5jdGlvbicgPyB1cGRhdGVyKHNvcnRlcikgOiB1cGRhdGVyO1xuICAgICAgICBzZXRTb3J0ZXIobmV4dFNvcnRlcik7XG4gICAgICAgIC8vIFJlc2V0IHBhZ2luYXRpb24gdG8gcGFnZSAxIHdoZW4gc29ydGluZyBjaGFuZ2VzXG4gICAgICAgIGlmIChtZXJnZWRQYWdpbmF0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc2V0Q3VycmVudCgxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc2V0UGFnaW5hdGlvbiA9IG1lcmdlZFBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogeyBjdXJyZW50OiAxLCBwYWdlU2l6ZSB9O1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlc3VsdCA9IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgIHNvcnRlcjogbmV4dFNvcnRlcixcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHsgY3VycmVudERhdGFTb3VyY2U6IG5leHRSZXN1bHQuY3VycmVudERhdGFTb3VyY2UsIGFjdGlvbjogJ3NvcnQnIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgd3JhcHBlZFNldFBhZ2luYXRpb24gPSB1c2VNZW1vaXplZEZuKCh1cGRhdGVyKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uID09PSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0geyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoY3VycmVudFZhbHVlKSA6IHVwZGF0ZXI7XG4gICAgICAgIHNldEN1cnJlbnQobmV4dFZhbHVlLmN1cnJlbnQpO1xuICAgICAgICBzZXRQYWdlU2l6ZShuZXh0VmFsdWUucGFnZVNpemUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogbmV4dFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvbkNoYW5nZSh7IGN1cnJlbnREYXRhU291cmNlOiBuZXh0UmVzdWx0LmN1cnJlbnREYXRhU291cmNlLCBhY3Rpb246ICdwYWdpbmF0ZScgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN1bHQpLCB7IHNvcnRlcixcbiAgICAgICAgc29ydGVyU3RhdGVzLCBwYWdpbmF0aW9uOiBtZXJnZWRQYWdpbmF0aW9uLCBzZXRTb3J0ZXI6IHdyYXBwZWRTZXRTb3J0ZXIsIHNldFBhZ2luYXRpb246IHdyYXBwZWRTZXRQYWdpbmF0aW9uIH0pO1xufTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
428
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlUmVmIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsImlzQ29sdW1uR3JvdXAiLCJjb2wiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZHJlbiIsImZsYXR0ZW5Db2x1bW5zIiwiY29sdW1ucyIsInJlc3VsdCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImVyciIsImUiLCJmIiwiZ2V0U29ydEZ1bmN0aW9uIiwic29ydGVyIiwiX3R5cGVvZiIsImNvbXBhcmUiLCJnZXRNdWx0aXBsZVByaW9yaXR5IiwiY29sdW1uIiwibXVsdGlwbGUiLCJhcHBseVNvcnRUb0RhdGEiLCJkYXRhIiwic29ydGVyU3RhdGVzIiwibGVuZ3RoIiwic29ydGVkIiwicnVubmluZ1NvcnRlcnMiLCJtYXAiLCJzdGF0ZSIsImZpbmQiLCJrZXkiLCJjb2x1bW5LZXkiLCJjb21wYXJlRm4iLCJwcmlvcml0eSIsIm9yZGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsInNvcnQiLCJhIiwiYiIsImFwIiwiYnAiLCJyZWNvcmQxIiwicmVjb3JkMiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfc3RlcDIkdmFsdWUiLCJhcHBseUZpbHRlcnNUb0RhdGEiLCJmaWx0ZXJzIiwiYWN0aXZlRmlsdGVycyIsInNlbGVjdGVkIiwiU3RyaW5nIiwib25GaWx0ZXIiLCJyZWNvcmQiLCJldmVyeSIsIl9yZWYiLCJzb21lIiwiYXBwbHlUYWJsZVBpcGVsaW5lIiwiX3JlZjIiLCJkYXRhU291cmNlIiwiX3JlZjIkZmlsdGVycyIsInBhZ2luYXRpb24iLCJsZWFmQ29sdW1ucyIsImZpbHRlcmVkIiwiY3VycmVudERhdGFTb3VyY2UiLCJ0b3RhbCIsInN0YXJ0IiwiY3VycmVudCIsInBhZ2VTaXplIiwiZW5kIiwic2xpY2UiLCJjb2xsZWN0U29ydGVyU3RhdGVzIiwiX2EiLCJsZWF2ZXMiLCJzdGF0ZXMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwic29ydE9yZGVyIiwiZGVmYXVsdFNvcnRPcmRlciIsImdldEluaXRpYWxTb3J0ZXIiLCJnZXRDb250cm9sbGVkU29ydGVyIiwiY29udHJvbGxlZENvbHVtbiIsInVuZGVmaW5lZCIsImdldEluaXRpYWxGaWx0ZXJzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImluaXRpYWwiLCJkZWZhdWx0RmlsdGVyZWRWYWx1ZSIsImZpbHRlcmVkVmFsdWUiLCJnZXRDb250cm9sbGVkRmlsdGVycyIsImhhc0NvbnRyb2xsZWQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwidXNlU3RhYmxlUmVmIiwiZXF1YWwiLCJyZWYiLCJzb3J0ZXJFcXVhbCIsImZpbHRlclZhbHVlRXF1YWwiLCJpIiwiZmlsdGVyc0VxdWFsIiwia2V5c0EiLCJPYmplY3QiLCJrZXlzIiwia2V5c0IiLCJfaSIsIl9rZXlzQSIsInVzZVRhYmxlRGF0YVBpcGVsaW5lIiwiX3JlZjMiLCJvbkNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsImNvbnRyb2xsZWRTb3J0ZXIiLCJjb250cm9sbGVkRmlsdGVycyIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0U29ydGVyIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsInNldEZpbHRlcnMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNSIsImRlZmF1bHRDdXJyZW50IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTYiLCJzZXRDdXJyZW50IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTciLCJkZWZhdWx0UGFnZVNpemUiLCJfdXNlQ29udHJvbGxlZFN0YXRlOCIsInNldFBhZ2VTaXplIiwibWVyZ2VkUGFnaW5hdGlvbiIsInByaW1hcnkiLCJhZGRpdGlvbmFsIiwiY29uY2F0IiwiZW1pdENoYW5nZSIsIm5leHREYXRhU291cmNlIiwiYWN0aW9uIiwibmV4dFN0YXRlIiwid3JhcHBlZFNldFNvcnRlciIsInVwZGF0ZXIiLCJuZXh0U29ydGVyIiwicmVzZXRQYWdpbmF0aW9uIiwibmV4dFJlc3VsdCIsIndyYXBwZWRTZXRGaWx0ZXJzIiwibmV4dEZpbHRlcnMiLCJ3cmFwcGVkU2V0UGFnaW5hdGlvbiIsImN1cnJlbnRWYWx1ZSIsIm5leHRWYWx1ZSIsImFzc2lnbiIsInNldFBhZ2luYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQVNBLE9BQU8sRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDdkMsU0FBU0Msa0JBQWtCLEVBQUVDLGFBQWEsUUFBUSxlQUFlO0FBZWpFLFNBQVNDLGFBQWFBLENBQ3BCQyxHQUF1QixFQUFBO0VBRXZCLE9BQU8sVUFBVSxJQUFJQSxHQUFHLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFFRixHQUEyQixDQUFDRyxRQUFRLENBQUM7QUFDbEY7QUFFQSxTQUFTQyxjQUFjQSxDQUNyQkMsT0FBNkIsRUFBQTtFQUU3QixJQUFNQyxNQUFNLEdBQXFCLEVBQUU7RUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBQ2xCSCxPQUFPO0lBQUFJLEtBQUE7RUFBQTtJQUF6QixLQUFBRixTQUFBLENBQUFHLENBQUEsTUFBQUQsS0FBQSxHQUFBRixTQUFBLENBQUFJLENBQUEsSUFBQUMsSUFBQSxHQUEyQjtNQUFBLElBQWhCWixHQUFHLEdBQUFTLEtBQUEsQ0FBQUksS0FBQTtNQUNaLElBQUlkLGFBQWEsQ0FBQ0MsR0FBRyxDQUFDLEVBQUU7UUFDdEJNLE1BQU0sQ0FBQ1EsSUFBSSxDQUFBQyxLQUFBLENBQVhULE1BQU0sRUFBQVUsa0JBQUEsQ0FBU1osY0FBYyxD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QUNzQixTQUFTLENBQUMvRSxPQUFPLENBQUM7SUFDN0I2RCxXQUFXLENBQUNrQixTQUFTLENBQUM5RSxRQUFRLENBQUM7SUFFL0IsSUFBSXdDLFFBQVEsRUFBRTtNQUNaLElBQU1pQyxVQUFVLEdBQUdwRixrQkFBa0IsQ0FBQztRQUNwQzFELE9BQU8sRUFBUEEsT0FBTztRQUNQNEQsVUFBVSxFQUFWQSxVQUFVO1FBQ1Y1QyxNQUFNLEVBQU5BLE1BQU07UUFDTmlDLE9BQU8sRUFBUEEsT0FBTztRQUNQYSxVQUFVLEVBQUVxRjtNQ3hLVixDRHlLSCxDQUFDO01BQ0ZiLFVBQVUsQ0FBQ1EsVUFBVSxDQUFDN0UsaUJBQWlCLEVBQUUsVUFBVSxFQUFFO1FBQ25EakQsTUFBTSxFQUFOQSxNQUFNO1FBQ05pQyxPQUFPLEVBQVBBLE9BQU87UUFDUGEsVUFBVSxFQUFFcUY7TUN4S1YsQ0R5S0gsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxDQUNGO0VBRUQsT0FBQTdDLE1BQUEsQ0FBQThDLE1BQUEsQ0FBQTlDLE1BQUEsQ0FBQThDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDS25KLE1BQU0sQ0FBQSxFQUFBO0lBQ1RlLE1BQU0sRUFBTkEsTUFBTTtJQUNOUSxZQUFZLEVBQVpBLFlBQVk7SUFDWnlCLE9BQU8sRUFBUEEsT0FBTztJQUNQYSxVQUFVLEVBQUVvRSxnQkFBZ0I7SUFDNUJaLFNBQVMsRUFBRW9CLGdCQUFnQjtJQUMzQmpCLFVBQVUsRUFBRXNCLGlCQUFpQjtJQUM3Qk0sYUFBYSxFQUFFSjtFQUFvQixDQUFBLENBQUE7QUFFdkMsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVEYXRhUGlwZWxpbmUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlTWVtb2l6ZWRGbiB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuZnVuY3Rpb24gaXNDb2x1bW5Hcm91cChjb2wpIHtcbiAgICByZXR1cm4gJ2NoaWxkcmVuJyBpbiBjb2wgJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pO1xufVxuZnVuY3Rpb24gZmxhdHRlbkNvbHVtbnMoY29sdW1ucykge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZmxhdHRlbkNvbHVtbnMoY29sLmNoaWxkcmVuKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRTb3J0RnVuY3Rpb24oc29ydGVyKSB7XG4gICAgaWYgKHR5cGVvZiBzb3J0ZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiBzb3J0ZXI7XG4gICAgaWYgKHNvcnRlciAmJiB0eXBlb2Ygc29ydGVyID09PSAnb2JqZWN0JyAmJiAnY29tcGFyZScgaW4gc29ydGVyKVxuICAgICAgICByZXR1cm4gc29ydGVyLmNvbXBhcmU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pIHtcbiAgICBpZiAoY29sdW1uLnNvcnRlciAmJiB0eXBlb2YgY29sdW1uLnNvcnRlciA9PT0gJ29iamVjdCcgJiYgJ211bHRpcGxlJyBpbiBjb2x1bW4uc29ydGVyKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uc29ydGVyLm11bHRpcGxlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBhcHBseVNvcnRUb0RhdGEoZGF0YSwgY29sdW1ucywgc29ydGVyU3RhdGVzKSB7XG4gICAgaWYgKHNvcnRlclN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kYXRhXTtcbiAgICBjb25zdCBydW5uaW5nU29ydGVycyA9IHNvcnRlclN0YXRlc1xuICAgICAgICAubWFwKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmtleSA9PT0gc3RhdGUuY29sdW1uS2V5KTtcbiAgICAgICAgaWYgKCFjb2x1bW4pXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgY29tcGFyZUZuID0gZ2V0U29ydEZ1bmN0aW9uKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBpZiAoIWNvbXBhcmVGbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IGdldE11bHRpcGxlUHJpb3JpdHkoY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHsgY29tcGFyZUZuLCBvcmRlcjogc3RhdGUub3JkZXIsIHByaW9yaXR5IH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAocnVubmluZ1NvcnRlcnMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyBIaWdoZXIgcHJpb3JpdHkgbnVtYmVyID0gY29tcGFyZWQgZmlyc3RcbiAgICBydW5uaW5nU29ydGVycy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGFwID0gdHlwZW9mIGEucHJpb3JpdHkgPT09ICdudW1iZXInID8gYS5wcmlvcml0eSA6IDA7XG4gICAgICAgIGNvbnN0IGJwID0gdHlwZW9mIGIucHJpb3JpdHkgPT09ICdudW1iZXInID8gYi5wcmlvcml0eSA6IDA7XG4gICAgICAgIHJldHVybiBicCAtIGFwO1xuICAgIH0pO1xuICAgIHNvcnRlZC5zb3J0KChyZWNvcmQxLCByZWNvcmQyKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgeyBjb21wYXJlRm4sIG9yZGVyIH0gb2YgcnVubmluZ1NvcnRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbXBhcmVGbihyZWNvcmQxLCByZWNvcmQyKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXIgPT09ICdhc2NlbmQnID8gcmVzdWx0IDogLXJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gc29ydGVkO1xufVxuZnVuY3Rpb24gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGEsIGNvbHVtbnMsIGZpbHRlcnMpIHtcbiAgICAvLyBSZXNvbHZlIHdoaWNoIGNvbHVtbnMgaGF2ZSBhbiBhY3RpdmUgZmlsdGVyIHNlbGVjdGlvbiBBTkQgYSBwcmVkaWNhdGUuXG4gICAgY29uc3QgYWN0aXZlRmlsdGVycyA9IGNvbHVtbnNcbiAgICAgICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBmaWx0ZXJzW1N0cmluZyhjb2wua2V5KV07XG4gICAgICAgIGlmICghc2VsZWN0ZWQgfHwgc2VsZWN0ZWQubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmICghY29sLm9uRmlsdGVyKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB7IG9uRmlsdGVyOiBjb2wub25GaWx0ZXIsIHNlbGVjdGVkIH07XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAoYWN0aXZlRmlsdGVycy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIHJldHVybiBkYXRhLmZpbHRlcigocmVjb3JkKSA9PiBcbiAgICAvLyBSb3cgcGFzc2VzIG9ubHkgaWYgRVZFUlkgYWN0aXZlIGNvbHVtbiBoYXMgYXQgbGVhc3Qgb25lIG1hdGNoaW5nIHNlbGVjdGVkIHZhbHVlLlxuICAgIGFjdGl2ZUZpbHRlcnMuZXZlcnkoKHsgb25GaWx0ZXIsIHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkLnNvbWUoKHZhbHVlKSA9PiBvbkZpbHRlcih2YWx1ZSwgcmVjb3JkKSkpKTtcbn1cbmV4cG9ydCBjb25zdCBhcHBseVRhYmxlUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBzb3J0ZXIsIGZpbHRlcnMgPSB7fSwgcGFnaW5hdGlvbiwgfSkgPT4ge1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgPyBbeyBjb2x1bW5LZXk6IHNvcnRlci5jb2x1bW5LZXksIG9yZGVyOiBzb3J0ZXIub3JkZXIgfV1cbiAgICAgICAgOiBbXTtcbiAgICBjb25zdCBsZWFmQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gYXBwbHlGaWx0ZXJzVG9EYXRhKGRhdGFTb3VyY2UsIGxlYWZDb2x1bW5zLCBmaWx0ZXJzKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBhcHBseVNvcnRUb0RhdGEoZmlsdGVyZWQsIGxlYWZDb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpO1xuICAgIGlmICghcGFnaW5hdGlvbikge1xuICAgICAgICByZXR1cm4geyBjdXJyZW50RGF0YVNvdXJjZTogc29ydGVkLCB0b3RhbDogc29ydGVkLmxlbmd0aCB9O1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IChwYWdpbmF0aW9uLmN1cnJlbnQgLSAxKSAqIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgIHRvdGFsOiBzb3J0ZWQubGVuZ3RoLFxuICAgIH07XG59O1xuZnVuY3Rpb24gY29sbGVjdFNvcnRlclN0YXRlcyhjb2x1bW5zKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGxlYXZlcyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IHN0YXRlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGxlYXZlcykge1xuICAgICAgICBjb25zdCBvcmRlciA9IChfYSA9IGNvbC5zb3J0T3JkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbC5kZWZhdWx0U29ydE9yZGVyO1xuICAgICAgICBpZiAoY29sLmtleSAhPSBudWxsICYmIG9yZGVyKSB7XG4gICAgICAgICAgICBzdGF0ZXMucHVzaCh7IGNvbHVtbktleTogY29sLmtleSwgb3JkZXIgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlcztcbn1cbmNvbnN0IGdldEluaXRpYWxTb3J0ZXIgPSAoY29sdW1ucykgPT4ge1xuICAgIGNvbnN0IHN0YXRlcyA9IGNvbGxlY3RTb3J0ZXJTdGF0ZXMoY29sdW1ucyk7XG4gICAgaWYgKHN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB7fTtcbiAgICByZXR1cm4geyBjb2x1bW5LZXk6IHN0YXRlc1swXS5jb2x1bW5LZXksIG9yZGVyOiBzdGF0ZXNbMF0ub3JkZXIgfTtcbn07XG5jb25zdCBnZXRDb250cm9sbGVkU29ydGVyID0gKGNvbHVtbnMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3QgY29udHJvbGxlZENvbHVtbiA9IGxlYXZlcy5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5zb3J0T3JkZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgaWYgKCFjb250cm9sbGVkQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbktleTogY29udHJvbGxlZENvbHVtbi5rZXksXG4gICAgICAgIG9yZGVyOiAoX2EgPSBjb250cm9sbGVkQ29sdW1uLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbCxcbiAgICB9O1xufTtcbmNvbnN0IGdldEluaXRpYWxGaWx0ZXJzID0gKGNvbHVtbnMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBsZWF2ZXMpIHtcbiAgICAgICAgaWYgKGNvbC5rZXkgPT0gbnVsbClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBpbml0aWFsID0gKF9hID0gY29sLmRlZmF1bHRGaWx0ZXJlZFZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBjb2wuZmlsdGVyZWRWYWx1ZTtcbiAgICAgICAgaWYgKGluaXRpYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3RhdGVbU3RyaW5nKGNvbC5rZXkpXSA9IGluaXRpYWwgIT09IG51bGwgJiYgaW5pdGlhbCAhPT0gdm9pZCAwID8gaW5pdGlhbCA6IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xufTtcbmNvbnN0IGdldENvbnRyb2xsZWRGaWx0ZXJzID0gKGNvbHVtbnMpID0+IHtcbiAgICBjb25zdCBsZWF2ZXMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBsZXQgaGFzQ29udHJvbGxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHN0YXRlID0ge307XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGlmIChjb2wua2V5ID09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGNvbC5maWx0ZXJlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhhc0NvbnRyb2xsZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGVbU3RyaW5nKGNvbC5rZXkpXSA9IGNvbC5maWx0ZXJlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNDb250cm9sbGVkID8gc3RhdGUgOiB1bmRlZmluZWQ7XG59O1xuLyoqXG4gKiBSZXR1cm5zIGEgdmFsdWUgd2hvc2UgcmVmZXJlbmNlIGlzIHByZXNlcnZlZCBhY3Jvc3MgcmVuZGVycyBhcyBsb25nIGFzIHRoZVxuICogc2hhbGxvdyBjb250ZW50cyBhcmUgdW5jaGFuZ2VkIChwZXIgYGVxdWFsYCkuIFVzZWQgdG8gc3RhYmlsaXNlIHRoZSBkZXJpdmVkXG4gKiBjb250cm9sbGVkIGNhbmRpZGF0ZXMgZmVkIHRvIGB1c2VDb250cm9sbGVkU3RhdGVgIOKAlCB0aGV5IHdvdWxkIG90aGVyd2lzZSBiZVxuICogZnJlc2ggb2JqZWN0cyBldmVyeSByZW5kZXIgYW5kIHRocmFzaCB0aGUgaG9vaydzIGludGVybmFsIGB1c2VMYXlvdXRFZmZlY3RgLlxuICovXG5mdW5jdGlvbiB1c2VTdGFibGVSZWYodmFsdWUsIGVxdWFsKSB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgICBpZiAoIWVxdWFsKHJlZi5jdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuZnVuY3Rpb24gc29ydGVyRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYS5jb2x1bW5LZXkgPT09IGIuY29sdW1uS2V5ICYmIGEub3JkZXIgPT09IGIub3JkZXI7XG59XG5mdW5jdGlvbiBmaWx0ZXJWYWx1ZUVxdWFsKGEsIGIpIHtcbiAgICBpZiAoYSA9PT0gYilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFhIHx8ICFiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBmaWx0ZXJzRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZUVxdWFsKGFba2V5XSwgYltrZXldKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgY29uc3QgdXNlVGFibGVEYXRhUGlwZWxpbmUgPSAoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBwYWdpbmF0aW9uLCBvbkNoYW5nZSwgfSkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAvLyBTb3J0ZXIgLyBmaWx0ZXJzIGFyZSBcImRlcml2ZWQgY29udHJvbGxlZFwiIOKAlCB0aGUgY29udHJvbGxlZCB2YWx1ZSBpcyBidWlsdFxuICAgIC8vIGJ5IHNjYW5uaW5nIGNvbHVtbiBwcm9wcyAoYHNvcnRPcmRlcmAgLyBgZmlsdGVyZWRWYWx1ZWApLCBzbyBgZ2V0Q29udHJvbGxlZCpgXG4gICAgLy8gcmV0dXJucyBhIGZyZXNoIG9iamVjdCBldmVyeSByZW5kZXIgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIGlucHV0cyBhcmVcbiAgICAvLyB1bmNoYW5nZWQuIFdpdGhvdXQgc3RhYmlsaXNhdGlvbiwgYHVzZUNvbnRyb2xsZWRTdGF0ZWAncyBpbnRlcm5hbFxuICAgIC8vIGB1c2VMYXlvdXRFZmZlY3QoW3ZhbHVlXSlgIHdvdWxkIHJlLXN5bmMgb24gZXZlcnkgcmVuZGVyIOKGkiBpbmZpbml0ZSBsb29wLlxuICAgIC8vIFBpbiB0aGUgcmVmZXJlbmNlIHZpYSBhIHNoYWxsb3ctZXF1YWwgcmVmLlxuICAgIGNvbnN0IGNvbnRyb2xsZWRTb3J0ZXIgPSB1c2VTdGFibGVSZWYoZ2V0Q29udHJvbGxlZFNvcnRlcihjb2x1bW5zKSwgc29ydGVyRXF1YWwpO1xuICAgIGNvbnN0IGNvbnRyb2xsZWRGaWx0ZXJzID0gdXNlU3RhYmxlUmVmKGdldENvbnRyb2xsZWRGaWx0ZXJzKGNvbHVtbnMpLCBmaWx0ZXJzRXF1YWwpO1xuICAgIGNvbnN0IFtzb3J0ZXIsIHNldFNvcnRlcl0gPSB1c2VDb250cm9sbGVkU3RhdGUoZ2V0SW5pdGlhbFNvcnRlcihjb2x1bW5zKSwgY29udHJvbGxlZFNvcnRlcik7XG4gICAgY29uc3QgW2ZpbHRlcnMsIHNldEZpbHRlcnNdID0gdXNlQ29udHJvbGxlZFN0YXRlKGdldEluaXRpYWxGaWx0ZXJzKGNvbHVtbnMpLCBjb250cm9sbGVkRmlsdGVycyk7XG4gICAgY29uc3QgW2N1cnJlbnQsIHNldEN1cnJlbnRdID0gdXNlQ29udHJvbGxlZFN0YXRlKHBhZ2luYXRpb24gPT09IGZhbHNlID8gMSA6ICgoX2IgPSAoX2EgPSBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uZGVmYXVsdEN1cnJlbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAxKSwgcGFnaW5hdGlvbiA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uY3VycmVudCk7XG4gICAgY29uc3QgW3BhZ2VTaXplLCBzZXRQYWdlU2l6ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxMCA6ICgoX2QgPSAoX2MgPSBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uZGVmYXVsdFBhZ2VTaXplKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24ucGFnZVNpemUpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDEwKSwgcGFnaW5hdGlvbiA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24ucGFnZVNpemUpO1xuICAgIGNvbnN0IG1lcmdlZFBhZ2luYXRpb24gPSBwYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogeyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBwcmltYXJ5IHVzZXItdG9nZ2xlZCBzb3J0ZXJcbiAgICAgICAgY29uc3QgcHJpbWFyeSA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgICAgID8gW3sgY29sdW1uS2V5OiBzb3J0ZXIuY29sdW1uS2V5LCBvcmRlcjogc29ydGVyLm9yZGVyIH1dXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAvLyBDb2xsZWN0IGFueSBvdGhlciBjb2x1bW5zIHRoYXQgaGF2ZSBhIGNvbnRyb2xsZWQgc29ydE9yZGVyIChmb3IgbXVsdGktc29ydClcbiAgICAgICAgY29uc3QgbGVhZkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGxlYWZDb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKChjb2wpID0+IGNvbC5rZXkgIT0gbnVsbCAmJiBjb2wuc29ydE9yZGVyICYmIGNvbC5rZXkgIT09IHNvcnRlci5jb2x1bW5LZXkpXG4gICAgICAgICAgICAubWFwKChjb2wpID0+ICh7IGNvbHVtbktleTogY29sLmtleSwgb3JkZXI6IGNvbC5zb3J0T3JkZXIgfSkpO1xuICAgICAgICByZXR1cm4gWy4uLnByaW1hcnksIC4uLmFkZGl0aW9uYWxdO1xuICAgIH0sIFtzb3J0ZXIsIGNvbHVtbnNdKTtcbiAgICBjb25zdCByZXN1bHQgPSB1c2VNZW1vKCgpID0+IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbixcbiAgICB9KSwgW2NvbHVtbnMsIGRhdGFTb3VyY2UsIHNvcnRlciwgZmlsdGVycywgbWVyZ2VkUGFnaW5hdGlvbl0pO1xuICAgIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChuZXh0RGF0YVNvdXJjZSwgYWN0aW9uLCBuZXh0U3RhdGUpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKHtcbiAgICAgICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBuZXh0RGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHNvcnRlcjogbmV4dFN0YXRlLnNvcnRlcixcbiAgICAgICAgICAgIGZpbHRlcnM6IG5leHRTdGF0ZS5maWx0ZXJzLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogbmV4dFN0YXRlLnBhZ2luYXRpb24sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHVzZU1lbW9pemVkRm46IHN0YWJsZSByZWYsIGFsd2F5cyBjYWxscyBsYXRlc3QgY2xvc3VyZSDigJQgbm8gc3RhbGUgZGVwcyByaXNrXG4gICAgY29uc3Qgd3JhcHBlZFNldFNvcnRlciA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFNvcnRlciA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihzb3J0ZXIpIDogdXBkYXRlcjtcbiAgICAgICAgc2V0U29ydGVyKG5leHRTb3J0ZXIpO1xuICAgICAgICAvLyBSZXNldCBwYWdpbmF0aW9uIHRvIHBhZ2UgMSB3aGVuIHNvcnRpbmcgY2hhbmdlc1xuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXI6IG5leHRTb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3NvcnQnLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyOiBuZXh0U29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB3cmFwcGVkU2V0RmlsdGVycyA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dEZpbHRlcnMgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoZmlsdGVycykgOiB1cGRhdGVyO1xuICAgICAgICBzZXRGaWx0ZXJzKG5leHRGaWx0ZXJzKTtcbiAgICAgICAgLy8gUmVzZXQgcGFnaW5hdGlvbiB0byBwYWdlIDEgd2hlbiBmaWx0ZXJzIGNoYW5nZVxuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogbmV4dEZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbWl0Q2hhbmdlKG5leHRSZXN1bHQuY3VycmVudERhdGFTb3VyY2UsICdmaWx0ZXInLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IG5leHRGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHJlc2V0UGFnaW5hdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgd3JhcHBlZFNldFBhZ2luYXRpb24gPSB1c2VNZW1vaXplZEZuKCh1cGRhdGVyKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmF0aW9uID09PSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0geyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIoY3VycmVudFZhbHVlKSA6IHVwZGF0ZXI7XG4gICAgICAgIHNldEN1cnJlbnQobmV4dFZhbHVlLmN1cnJlbnQpO1xuICAgICAgICBzZXRQYWdlU2l6ZShuZXh0VmFsdWUucGFnZVNpemUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBuZXh0VmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ3BhZ2luYXRlJywge1xuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IG5leHRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdWx0KSwgeyBzb3J0ZXIsXG4gICAgICAgIHNvcnRlclN0YXRlcyxcbiAgICAgICAgZmlsdGVycywgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbiwgc2V0U29ydGVyOiB3cmFwcGVkU2V0U29ydGVyLCBzZXRGaWx0ZXJzOiB3cmFwcGVkU2V0RmlsdGVycywgc2V0UGFnaW5hdGlvbjogd3JhcHBlZFNldFBhZ2luYXRpb24gfSk7XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -1,7 +1,9 @@
1
1
  import type { Key } from 'react';
2
- import type { TableExpandableConfig } from '../interface';
3
- export declare const useTableExpand: <T>({ expandable, }: {
2
+ import type { TableExpandableConfig, TableRecord } from '../interface';
3
+ export declare const useTableExpand: <T extends TableRecord = TableRecord>({ expandable, dataSource, getRowKey, }: {
4
4
  expandable?: TableExpandableConfig<T>;
5
+ dataSource?: readonly T[];
6
+ getRowKey?: (record: T, index: number) => Key;
5
7
  }) => {
6
8
  mergedExpandedRowKeys: Key[];
7
9
  triggerExpand: (recordKey: Key, record: T) => void;
@@ -1,15 +1,39 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import { useControlledState, useMemoizedFn } from '@1money/hooks';
4
4
  export var useTableExpand = function useTableExpand(_ref) {
5
- var expandable = _ref.expandable;
6
- var _a;
7
- var _useControlledState = useControlledState((_a = expandable === null || expandable === void 0 ? void 0 : expandable.defaultExpandedRowKeys) !== null && _a !== void 0 ? _a : [], expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowKeys),
5
+ var expandable = _ref.expandable,
6
+ dataSource = _ref.dataSource,
7
+ getRowKey = _ref.getRowKey;
8
+ // Match table: `defaultExpandAllRows` seeds initial expansion with every
9
+ // row whose key is expandable. `rowExpandable` (if present) still gates this.
10
+ var computeDefaultKeys = function computeDefaultKeys() {
11
+ if (expandable === null || expandable === void 0 ? void 0 : expandable.defaultExpandedRowKeys) return _toConsumableArray(expandable.defaultExpandedRowKeys);
12
+ if (!(expandable === null || expandable === void 0 ? void 0 : expandable.defaultExpandAllRows) || !dataSource || !getRowKey) return [];
13
+ var rowExpandable = expandable.rowExpandable;
14
+ return dataSource.map(function (record, index) {
15
+ return {
16
+ record: record,
17
+ key: getRowKey(record, index)
18
+ };
19
+ }).filter(function (_ref2) {
20
+ var record = _ref2.record;
21
+ return rowExpandable ? rowExpandable(record) : true;
22
+ }).map(function (_ref3) {
23
+ var key = _ref3.key;
24
+ return key;
25
+ });
26
+ };
27
+ var _useControlledState = useControlledState(computeDefaultKeys(), expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowKeys),
8
28
  _useControlledState2 = _slicedToArray(_useControlledState, 2),
9
29
  mergedExpandedRowKeys = _useControlledState2[0],
10
30
  setMergedExpandedRowKeys = _useControlledState2[1];
11
31
  var triggerExpand = useMemoizedFn(function (recordKey, record) {
12
32
  var _a, _b;
33
+ // Honor `rowExpandable`: rows the predicate denies cannot be toggled. This
34
+ // also blocks programmatic callers (e.g. expandRowByClick on the kernel)
35
+ // from bypassing the predicate.
36
+ if ((expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable) && !expandable.rowExpandable(record)) return;
13
37
  var expanded = mergedExpandedRowKeys.includes(recordKey);
14
38
  var nextKeys = expanded ? mergedExpandedRowKeys.filter(function (key) {
15
39
  return key !== recordKey;
@@ -22,6 +46,7 @@ export var useTableExpand = function useTableExpand(_ref) {
22
46
  // and delegates to user callbacks
23
47
  var onKernelExpand = useMemoizedFn(function (expanded, record, recordKey) {
24
48
  var _a, _b;
49
+ if ((expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable) && !expandable.rowExpandable(record)) return;
25
50
  var nextKeys = expanded ? [].concat(_toConsumableArray(mergedExpandedRowKeys), [recordKey]) : mergedExpandedRowKeys.filter(function (key) {
26
51
  return key !== recordKey;
27
52
  });
@@ -35,4 +60,4 @@ export var useTableExpand = function useTableExpand(_ref) {
35
60
  onKernelExpand: onKernelExpand
36
61
  };
37
62
  };
38
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC5qcyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwidXNlVGFibGVFeHBhbmQiLCJfcmVmIiwiZXhwYW5kYWJsZSIsIl9hIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsImRlZmF1bHRFeHBhbmRlZFJvd0tleXMiLCJleHBhbmRlZFJvd0tleXMiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwic2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsInJlY29yZEtleSIsInJlY29yZCIsIl9iIiwiZXhwYW5kZWQiLCJpbmNsdWRlcyIsIm5leHRLZXlzIiwiZmlsdGVyIiwia2V5IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwib25FeHBhbmQiLCJjYWxsIiwib25FeHBhbmRlZFJvd3NDaGFuZ2UiLCJvbktlcm5lbEV4cGFuZCJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxTQUFTQSxrQkFBa0IsRUFBRUMsYUFBYSxRQUFRLGVBQWU7QUFHakUsT0FBTyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUFDLElBQUEsRUFJdEI7RUFBQSxJQUhIQyxVQUFVLEdBQUFELElBQUEsQ0FBVkMsVUFBVTtFQ0hSLElBQUlDLEVBQUU7RURPUixJQUFBQyxtQkFBQSxHQUEwRE4sa0JBQWtCLENBQzFFLENBQUFLLEVBQUEsR0FBQUQsVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVHLHNCQUFzQixNQUFBLElBQUEsSUFBQUYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdB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b25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVFeHBhbmQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlTWVtb2l6ZWRGbiB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuZXhwb3J0IGNvbnN0IHVzZVRhYmxlRXhwYW5kID0gKHsgZXhwYW5kYWJsZSwgfSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBbbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCBzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXNdID0gdXNlQ29udHJvbGxlZFN0YXRlKChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5kZWZhdWx0RXhwYW5kZWRSb3dLZXlzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSwgZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93S2V5cyk7XG4gICAgY29uc3QgdHJpZ2dlckV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSwgcmVjb3JkKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IGV4cGFuZGVkID0gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSk7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gZXhwYW5kZWRcbiAgICAgICAgICAgID8gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpXG4gICAgICAgICAgICA6IFsuLi5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHJlY29yZEtleV07XG4gICAgICAgIHNldE1lcmdlZEV4cGFuZGVkUm93S2V5cyhuZXh0S2V5cyk7XG4gICAgICAgIChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZXhwYW5kYWJsZSwgIWV4cGFuZGVkLCByZWNvcmQpO1xuICAgICAgICAoX2IgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmRlZFJvd3NDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGV4cGFuZGFibGUsIG5leHRLZXlzKTtcbiAgICB9KTtcbiAgICAvLyBDYWxsZWQgYnkgdGhlIGtlcm5lbCdzIG9uRXhwYW5kIChlLmcuIGV4cGFuZFJvd0J5Q2xpY2spIOKAlCB1cGRhdGVzIHN0YXRlXG4gICAgLy8gYW5kIGRlbGVnYXRlcyB0byB1c2VyIGNhbGxiYWNrc1xuICAgIGNvbnN0IG9uS2VybmVsRXhwYW5kID0gdXNlTWVtb2l6ZWRGbigoZXhwYW5kZWQsIHJlY29yZCwgcmVjb3JkS2V5KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gZXhwYW5kZWRcbiAgICAgICAgICAgID8gWy4uLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgcmVjb3JkS2V5XVxuICAgICAgICAgICAgOiBtZXJnZWRFeHBhbmRlZFJvd0tleXMuZmlsdGVyKGtleSA9PiBrZXkgIT09IHJlY29yZEtleSk7XG4gICAgICAgIHNldE1lcmdlZEV4cGFuZGVkUm93S2V5cyhuZXh0S2V5cyk7XG4gICAgICAgIChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZXhwYW5kYWJsZSwgZXhwYW5kZWQsIHJlY29yZCk7XG4gICAgICAgIChfYiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZGVkUm93c0NoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoZXhwYW5kYWJsZSwgbmV4dEtleXMpO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgdHJpZ2dlckV4cGFuZCxcbiAgICAgICAgb25LZXJuZWxFeHBhbmQsXG4gICAgfTtcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
63
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC5qcyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwidXNlVGFibGVFeHBhbmQiLCJfcmVmIiwiZXhwYW5kYWJsZSIsImRhdGFTb3VyY2UiLCJnZXRSb3dLZXkiLCJjb21wdXRlRGVmYXVsdEtleXMiLCJkZWZhdWx0RXhwYW5kZWRSb3dLZXlzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZGVmYXVsdEV4cGFuZEFsbFJvd3MiLCJyb3dFeHBhbmRhYmxlIiwibWFwIiwicmVjb3JkIiwiaW5kZXgiLCJrZXkiLCJmaWx0ZXIiLCJfcmVmMiIsIl9yZWYzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsImV4cGFuZGVkUm93S2V5cyIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwicmVjb3JkS2V5IiwiX2EiLCJfYiIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJuZXh0S2V5cyIsImNvbmNhdCIsIm9uRXhwYW5kIiwiY2FsbCIsIm9uRXhwYW5kZWRSb3dzQ2hhbmdlIiwib25LZXJuZWxFeHBhbmQiXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBU0Esa0JBQWtCLEVBQUVDLGFBQWEsUUFBUSxlQUFlO0FBR2pFLE9BQU8sSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBQyxJQUFBLEVBUXRCO0VBQUEsSUFQSEMsVUFBVSxHQUFBRCxJQUFBLENBQVZDLFVBQVU7SUFDVkMsVUFBVSxHQUFBRixJQUFBLENBQVZFLFVBQVU7SUFDVkMsU0FBUyxHQUFBSCxJQUFBLENBQVRHLFNBQVM7RUFNVDtFQUNBO0VBQ0EsSUFB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LElBQUFQLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFBTSxJQUFBLENBQUE5QixVQUFBLEVBQUcyQixRQUFRLENBQUM7RUFDOUMsQ0FBQyxDQUFDO0VBRUYsT0FBTztJQUNMUixxQkFBcUIsRUFBckJBLHFCQUFxQjtJQUNyQkUsYUFBYSxFQUFiQSxhQUFhO0lBQ2JXLGNBQWMsRUFBZEE7RUNmQSxDRGdCRDtBQUNILENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlRXhwYW5kLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZU1lbW9pemVkRm4gfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmV4cG9ydCBjb25zdCB1c2VUYWJsZUV4cGFuZCA9ICh7IGV4cGFuZGFibGUsIGRhdGFTb3VyY2UsIGdldFJvd0tleSwgfSkgPT4ge1xuICAgIC8vIE1hdGNoIHRhYmxlOiBgZGVmYXVsdEV4cGFuZEFsbFJvd3NgIHNlZWRzIGluaXRpYWwgZXhwYW5zaW9uIHdpdGggZXZlcnlcbiAgICAvLyByb3cgd2hvc2Uga2V5IGlzIGV4cGFuZGFibGUuIGByb3dFeHBhbmRhYmxlYCAoaWYgcHJlc2VudCkgc3RpbGwgZ2F0ZXMgdGhpcy5cbiAgICBjb25zdCBjb21wdXRlRGVmYXVsdEtleXMgPSAoKSA9PiB7XG4gICAgICAgIGlmIChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZGVmYXVsdEV4cGFuZGVkUm93S2V5cylcbiAgICAgICAgICAgIHJldHVybiBbLi4uZXhwYW5kYWJsZS5kZWZhdWx0RXhwYW5kZWRSb3dLZXlzXTtcbiAgICAgICAgaWYgKCEoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmRlZmF1bHRFeHBhbmRBbGxSb3dzKSB8fCAhZGF0YVNvdXJjZSB8fCAhZ2V0Um93S2V5KVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCByb3dFeHBhbmRhYmxlID0gZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlO1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZVxuICAgICAgICAgICAgLm1hcCgocmVjb3JkLCBpbmRleCkgPT4gKHsgcmVjb3JkLCBrZXk6IGdldFJvd0tleShyZWNvcmQsIGluZGV4KSB9KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgcmVjb3JkIH0pID0+IChyb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZSkpXG4gICAgICAgICAgICAubWFwKCh7IGtleSB9KSA9PiBrZXkpO1xuICAgIH07XG4gICAgY29uc3QgW21lcmdlZEV4cGFuZGVkUm93S2V5cywgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShjb21wdXRlRGVmYXVsdEtleXMoKSwgZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93S2V5cyk7XG4gICAgY29uc3QgdHJpZ2dlckV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSwgcmVjb3JkKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIC8vIEhvbm9yIGByb3dFeHBhbmRhYmxlYDogcm93cyB0aGUgcHJlZGljYXRlIGRlbmllcyBjYW5ub3QgYmUgdG9nZ2xlZC4gVGhpc1xuICAgICAgICAvLyBhbHNvIGJsb2NrcyBwcm9ncmFtbWF0aWMgY2FsbGVycyAoZS5nLiBleHBhbmRSb3dCeUNsaWNrIG9uIHRoZSBrZXJuZWwpXG4gICAgICAgIC8vIGZyb20gYnlwYXNzaW5nIHRoZSBwcmVkaWNhdGUuXG4gICAgICAgIGlmICgoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUpICYmICFleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUocmVjb3JkKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBtZXJnZWRFeHBhbmRlZFJvd0tleXMuaW5jbHVkZXMocmVjb3JkS2V5KTtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBleHBhbmRlZFxuICAgICAgICAgICAgPyBtZXJnZWRFeHBhbmRlZFJvd0tleXMuZmlsdGVyKGtleSA9PiBrZXkgIT09IHJlY29yZEtleSlcbiAgICAgICAgICAgIDogWy4uLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgcmVjb3JkS2V5XTtcbiAgICAgICAgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzKG5leHRLZXlzKTtcbiAgICAgICAgKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLm9uRXhwYW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCAhZXhwYW5kZWQsIHJlY29yZCk7XG4gICAgICAgIChfYiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZGVkUm93c0NoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoZXhwYW5kYWJsZSwgbmV4dEtleXMpO1xuICAgIH0pO1xuICAgIC8vIENhbGxlZCBieSB0aGUga2VybmVsJ3Mgb25FeHBhbmQgKGUuZy4gZXhwYW5kUm93QnlDbGljaykg4oCUIHVwZGF0ZXMgc3RhdGVcbiAgICAvLyBhbmQgZGVsZWdhdGVzIHRvIHVzZXIgY2FsbGJhY2tzXG4gICAgY29uc3Qgb25LZXJuZWxFeHBhbmQgPSB1c2VNZW1vaXplZEZuKChleHBhbmRlZCwgcmVjb3JkLCByZWNvcmRLZXkpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZSkgJiYgIWV4cGFuZGFibGUucm93RXhwYW5kYWJsZShyZWNvcmQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0S2V5cyA9IGV4cGFuZGVkXG4gICAgICAgICAgICA/IFsuLi5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHJlY29yZEtleV1cbiAgICAgICAgICAgIDogbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpO1xuICAgICAgICBzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMobmV4dEtleXMpO1xuICAgICAgICAoX2EgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGV4cGFuZGFibGUsIGV4cGFuZGVkLCByZWNvcmQpO1xuICAgICAgICAoX2IgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmRlZFJvd3NDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGV4cGFuZGFibGUsIG5leHRLZXlzKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIG9uS2VybmVsRXhwYW5kLFxuICAgIH07XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -1,15 +1,13 @@
1
1
  import { type Key } from 'react';
2
- import type { TableRowSelection } from '../interface';
3
- export declare const useTableSelection: <T>({ rowSelection, dataSource, currentDataSource, getRowKey, }: {
2
+ import type { TableRecord, TableRowSelection } from '../interface';
3
+ export declare const useTableSelection: <T extends TableRecord = TableRecord>({ rowSelection, dataSource, currentDataSource, getRowKey, }: {
4
4
  rowSelection?: TableRowSelection<T>;
5
5
  dataSource: T[];
6
6
  currentDataSource: T[];
7
7
  getRowKey: (record: T, index: number) => Key;
8
8
  }) => {
9
9
  mergedSelectedRowKeys: Key[];
10
- checkboxPropsMap: Map<Key, Partial<{
11
- disabled: boolean;
12
- }>>;
10
+ checkboxPropsMap: Map<Key, Partial<Omit<import("../../Checkbox").CheckboxProps, "checked" | "defaultChecked" | "onChange">>>;
13
11
  isAllSelected: boolean;
14
12
  isIndeterminate: boolean;
15
13
  triggerSelection: (recordKey: Key) => void;