@worktile/theia 15.1.6 → 15.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/esm2020/components/action/prevent-default.mjs +3 -3
  2. package/esm2020/components/column-resize/column-resize-notifier.mjs +3 -3
  3. package/esm2020/components/column-resize/column-resize.directive.mjs +3 -3
  4. package/esm2020/components/column-resize/column-resize.module.mjs +8 -8
  5. package/esm2020/components/column-resize/event-dispatcher.mjs +3 -3
  6. package/esm2020/components/column-resize/overlay-handle.component.mjs +3 -3
  7. package/esm2020/components/column-resize/resizing.store.mjs +3 -3
  8. package/esm2020/components/contextmenu/contextmenu.component.mjs +3 -3
  9. package/esm2020/components/conversion-hint/conversion-hint.component.mjs +3 -3
  10. package/esm2020/components/element/element.component.mjs +3 -3
  11. package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +3 -3
  12. package/esm2020/components/listbox/listbox.mjs +9 -9
  13. package/esm2020/components/plugin-menu/plugin-menu.component.mjs +3 -3
  14. package/esm2020/components/table-select/table-select.component.mjs +3 -3
  15. package/esm2020/components/template/template.component.mjs +3 -3
  16. package/esm2020/components/text/text.component.mjs +3 -3
  17. package/esm2020/components/toolbar/toolbar.component.mjs +3 -3
  18. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +3 -3
  19. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +3 -3
  20. package/esm2020/components/toolbar-item/toolbar-item.component.mjs +3 -3
  21. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +6 -6
  22. package/esm2020/editor.component.mjs +3 -3
  23. package/esm2020/editor.module.mjs +4 -4
  24. package/esm2020/interfaces/image.mjs +1 -1
  25. package/esm2020/interfaces/view-base.mjs +3 -3
  26. package/esm2020/pipes.mjs +6 -6
  27. package/esm2020/plugins/blockquote/blockquote.component.mjs +3 -3
  28. package/esm2020/plugins/code/code.component.mjs +3 -3
  29. package/esm2020/plugins/color/toolbar-item.component.mjs +3 -3
  30. package/esm2020/plugins/common/common.plugin.mjs +1 -1
  31. package/esm2020/plugins/hr/hr.component.mjs +3 -3
  32. package/esm2020/plugins/image/image.component.mjs +10 -6
  33. package/esm2020/plugins/inline-code/inline-code.component.mjs +3 -3
  34. package/esm2020/plugins/link/edit/link-edit.component.mjs +3 -3
  35. package/esm2020/plugins/link/hover/link-hover.component.mjs +3 -3
  36. package/esm2020/plugins/link/link.component.mjs +6 -6
  37. package/esm2020/plugins/list/components/bulleted-list.component.mjs +3 -3
  38. package/esm2020/plugins/list/components/list-item.component.mjs +3 -3
  39. package/esm2020/plugins/list/components/numbered-list.component.mjs +3 -3
  40. package/esm2020/plugins/mention/suggestion.component.mjs +3 -3
  41. package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +3 -3
  42. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +3 -3
  43. package/esm2020/plugins/table/components/row/row.component.mjs +27 -6
  44. package/esm2020/plugins/table/components/table.component.mjs +41 -59
  45. package/esm2020/plugins/table/components/td/td.component.mjs +3 -3
  46. package/esm2020/plugins/table/components/toolbar/table-options.component.mjs +3 -3
  47. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +5 -5
  48. package/esm2020/plugins/table/table.editor.mjs +11 -10
  49. package/esm2020/plugins/table/table.pipe.mjs +6 -6
  50. package/esm2020/plugins/table/table.service.mjs +3 -3
  51. package/esm2020/plugins/table/table.store.mjs +10 -9
  52. package/esm2020/plugins/table/table.types.mjs +2 -2
  53. package/esm2020/plugins/table/toolbar-item.component.mjs +3 -3
  54. package/esm2020/plugins/table/utils/get-grid-columns.mjs +58 -4
  55. package/esm2020/plugins/table/utils/is-header-row.mjs +14 -0
  56. package/esm2020/plugins/table/utils/set-cells-background-color.mjs +14 -14
  57. package/esm2020/plugins/todo-item/todo-item.component.mjs +3 -3
  58. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +3 -3
  59. package/esm2020/services/context.service.mjs +3 -3
  60. package/esm2020/services/table-contextmenu.service.mjs +3 -3
  61. package/esm2020/services/toolbar.service.mjs +3 -3
  62. package/fesm2015/worktile-theia.mjs +345 -273
  63. package/fesm2015/worktile-theia.mjs.map +1 -1
  64. package/fesm2020/worktile-theia.mjs +340 -270
  65. package/fesm2020/worktile-theia.mjs.map +1 -1
  66. package/interfaces/image.d.ts +1 -0
  67. package/package.json +1 -1
  68. package/plugins/image/image.component.d.ts +1 -0
  69. package/plugins/table/components/row/row.component.d.ts +4 -0
  70. package/plugins/table/components/table.component.d.ts +2 -11
  71. package/plugins/table/components/table.component.scss +42 -6
  72. package/plugins/table/table.editor.d.ts +4 -4
  73. package/plugins/table/table.store.d.ts +1 -0
  74. package/plugins/table/table.types.d.ts +1 -1
  75. package/plugins/table/utils/get-grid-columns.d.ts +14 -0
  76. package/plugins/table/utils/is-header-row.d.ts +6 -0
@@ -28,6 +28,7 @@ export class TableStore {
28
28
  this.isPrepareSelecting = false;
29
29
  this.isCellSelecting = false;
30
30
  this.isRightClicking = false;
31
+ this.isFocusedInput = false;
31
32
  this.pointerSelection = false;
32
33
  this.isSelectedAllCell = () => {
33
34
  if (!this.editor.selection)
@@ -175,6 +176,7 @@ export class TableStore {
175
176
  this.isSelectedTable = false;
176
177
  this.isCellSelecting = false;
177
178
  this.isRightClicking = false;
179
+ this.isFocusedInput = false;
178
180
  this.selectedCells$.next([]);
179
181
  }
180
182
  clearLastFocusPath() {
@@ -311,13 +313,12 @@ export class TableStore {
311
313
  Transforms.select(this.editor, path);
312
314
  }
313
315
  setSelectedCellsBackgroundColor(backgroundColor) {
314
- const tablePath = getTablePath(this.editor);
315
- const cells = this.getSelectedCellPositions();
316
+ const cells = this.selectedCells$.getValue();
316
317
  Editor.withoutNormalizing(this.editor, () => {
317
- for (const { row, col } of cells) {
318
- const cellPath = [...tablePath, row, col];
318
+ cells.map(cell => {
319
+ const cellPath = AngularEditor.findPath(this.editor, cell);
319
320
  Transforms.setNodes(this.editor, { backgroundColor }, { at: cellPath });
320
- }
321
+ });
321
322
  });
322
323
  }
323
324
  clearSelectedCellsContent() {
@@ -384,9 +385,9 @@ export class TableStore {
384
385
  }
385
386
  }
386
387
  }
387
- TableStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
388
- TableStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableStore });
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TableStore, decorators: [{
388
+ TableStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TableStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
389
+ TableStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TableStore });
390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TableStore, decorators: [{
390
391
  type: Injectable
391
392
  }], ctorParameters: function () { return []; } });
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR2pFLE1BQU0sT0FBTyxVQUFVO0lBMkNuQixJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEO1FBOUNRLG1CQUFjLEdBQXdDLElBQUksZUFBZSxDQUFxQixFQUFFLENBQUMsQ0FBQztRQUVsRyxvQkFBZSxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzRSx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXpDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUUzQyx5QkFBb0IsR0FBYSxFQUFFLENBQUM7UUFFcEMsc0JBQWlCLEdBQWEsRUFBRSxDQUFDO1FBRWpDLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUVyQyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFrQjNCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFVekMsc0JBQWlCLEdBQUcsR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDekMsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDOUQsT0FBTyxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUsscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBQy9HLENBQUMsQ0FBQztJQVBhLENBQUM7SUFTaEIsd0JBQXdCO1FBQ3BCLE9BQU8sd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELDZCQUE2QjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDekIsT0FBTztTQUNWO1FBRUQsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ2IsT0FBTztTQUNWO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM5RCxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO1lBQzNDLHdCQUF3QjtZQUN4QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUU7WUFDeEIsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbEQ7U0FDSjtRQUNELEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFO1lBQ3hCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3JEO1NBQ0o7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUQsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDL0I7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQXFCLEVBQUUsR0FBa0I7UUFDdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9HLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLEtBQWE7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcseUJBQXlCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYyxFQUFFLEtBQWE7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcseUJBQXlCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsS0FBSztJQUNMLFdBQVcsQ0FBQyxNQUFjO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDNUUsTUFBTSxFQUNOLElBQUksQ0FBQyxjQUFjLENBQ3RCLENBQUMsQ0FBQyxDQUFxQixDQUFDO1FBQ3pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBcUIsQ0FBQztRQUVsSSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLHFCQUFxQixDQUM1RCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUMvQixVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQ1YsR0FBRyxDQUFDLEtBQUssQ0FDWixDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcseUJBQXlCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVoRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRO0lBQ1IsVUFBVSxDQUFDLElBQTBCLEVBQUUsTUFBYztRQUNqRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQXFCLENBQUM7UUFDekUsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBbUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQUM7WUFDdEMscUJBQXFCO1lBQ3JCLE1BQU0sYUFBYSxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM3RSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7WUFDOUIsZ0NBQWdDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxJQUFJLFNBQVMsRUFBRTtnQkFDWCxNQUFNLFVBQVUsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGVBQWUsQ0FBQyxJQUEwQixFQUFFLE1BQWM7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDL0M7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBMEIsRUFBRSxNQUFjO1FBQ3hELElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxJQUFJLEVBQUU7WUFDTixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRCxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7U0FDaEM7YUFBTTtZQUNILE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDOUQsU0FBUztnQkFDTCxDQUFDLElBQUksQ0FBQyxhQUFhO29CQUNuQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDaEg7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxTQUFTLEVBQUU7WUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUM5RSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDOUM7U0FDSjtJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYztRQUN4QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLElBQWM7UUFDcEMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxpQkFBaUI7UUFDYixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDakQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtZQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbkk7SUFDTCxDQUFDO0lBRUQsOEJBQThCO1FBQzFCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVELGdCQUFnQjtRQUNaLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQWMsQ0FBQztRQUMzRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1RTtRQUVELEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxFQUFFO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1IsR0FBRyxFQUFFLFFBQVE7b0JBQ2IsR0FBRyxFQUFFLENBQUM7aUJBQ1QsQ0FBQyxDQUFDO2FBQ047U0FDSjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUI7UUFDZixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlELE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFjLENBQUM7UUFDM0QsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUU7UUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksRUFBRTtZQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNSLEdBQUcsRUFBRSxDQUFDO29CQUNOLEdBQUcsRUFBRSxRQUFRO2lCQUNoQixDQUFDLENBQUM7YUFDTjtTQUNKO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELCtCQUErQixDQUFDLGVBQTBCO1FBQ3RELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDOUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLEVBQUU7Z0JBQzlCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQzNFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQseUJBQXlCO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2RCxJQUFJLGFBQWEsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMzQixNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ3hDLEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxLQUFLLEVBQUU7b0JBQzlCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBcUIsQ0FBQztvQkFDakUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7aUJBQ3hEO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pGO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjLEVBQUUsVUFBMkI7UUFDdkQsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDcEQsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCw0QkFBNEI7UUFDeEIsTUFBTSxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjtRQUMzRyxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxJQUFJLGVBQWUsRUFBRTtZQUNqQixXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxPQUFPO1NBQ1Y7UUFDRCxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBUSxDQUFDO1FBQzVFLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25FLFlBQVk7WUFDWixJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksY0FBYyxDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxnREFBZ0Q7Z0JBQ2hELElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUN4QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakYsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7aUJBQ3ZFO2FBQ0o7WUFDRCxpQkFBaUI7aUJBQ1osSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNiLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25FLFlBQVk7WUFDWixJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDOUQ7WUFDRCxvQkFBb0I7aUJBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNiLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7O3VHQXRjUSxVQUFVOzJHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zLCBOb2RlLCBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBFTEVNRU5UX1RPX0NPTVBPTkVOVCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ3JvdXBCeSwgdW5pcSwgbWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IENvbG9yVHlwZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1zZWxlY3QnO1xuaW1wb3J0IHsgQ2VsbFBvc2l0aW9uLCBUaGVUYWJsZU9wdGlvbnMgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRhYmxlQ2VsbEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuL3RhYmxlLmVkaXRvcic7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZVRhYmxlUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NyZWF0ZS10YWJsZS1wb3NpdGlvbic7XG5pbXBvcnQgeyBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlLCBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMsIGlzU2VsZWN0ZWRBbGxDZWxsLCB1bmlxdWVDZWxsUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NlbGwtcG9zaXRpb24nO1xuaW1wb3J0IHsgZ2V0VGFibGVQYXRoIH0gZnJvbSAnLi91dGlscy90YWJsZS1lbnRyeSc7XG5pbXBvcnQgeyBnZXRNaW5BbmRNYXhDZWxsSW5kZXggfSBmcm9tICcuL3V0aWxzL2dldC1taW4tbWF4LWNlbGwtaW5kZXgnO1xuaW1wb3J0IHsgZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlIH0gZnJvbSAnLi91dGlscy9tZXJnZS1jZWxsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUge1xuICAgIHByaXZhdGUgc2VsZWN0ZWRDZWxscyQ6IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+KFtdKTtcblxuICAgIHByaXZhdGUgZGFuZ2Vyb3VzQ2VsbHMkOiBCZWhhdmlvclN1YmplY3Q8Q2VsbFBvc2l0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgICBwcml2YXRlIGNlbGxzQ2hhbmdlT2JqZWN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHRhYmxlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBzZWxlY3RlZENvbHVtbnNJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIHNlbGVjdGVkUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzQ29sdW1uc0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgaXNTZWxlY3RlZFRhYmxlOiBib29sZWFuO1xuXG4gICAgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBwdWJsaWMgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuXG4gICAgcHVibGljIGFuY2hvckNlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBmb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBwcmVGb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBsYXN0Rm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgZm9jdXNDZWxsRWxlbWVudDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgaXNQcmVwYXJlU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNDZWxsU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNSaWdodENsaWNraW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgcG9pbnRlclNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIG1heENvbDogbnVtYmVyO1xuXG4gICAgZ2V0IGRhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYW5nZXJvdXNDZWxscyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBpc1NlbGVjdGVkQWxsQ2VsbCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRvci5zZWxlY3Rpb24pIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIHJldHVybiAhIXNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGggJiYgcG9zLmdldEhlaWdodCgpICogcG9zLmdldFdpZHRoKCkgPT09IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGg7XG4gICAgfTtcblxuICAgIGdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIGdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucyh0aGlzLmVkaXRvciwgdGhpcy5zZWxlY3RlZENlbGxzJC5nZXRWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3RlZENvbHVtbnNBbmRSb3dJbmRleCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRvcj8uc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKCFwb3M/LnRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXJnZUJlZm9yZUNlbGxzID0gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5mb3JFYWNoKCh7IHJvdywgY29sIH0pID0+IHtcbiAgICAgICAgICAgIC8vIOiuoeeul+WQiOW5tuWNleWFg+agvOaVsOaNruaXtu+8jOimgeaMieWQiOW5tuWJjeeahOaVsOaNruWkhOeQhlxuICAgICAgICAgICAgbWVyZ2VCZWZvcmVDZWxscy5wdXNoKC4uLmdldENlbGxQb3NpdGlvbnNCZWZvcmVNZXJnZSh0aGlzLmVkaXRvciwgeyByb3csIGNvbCB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjZWxscyA9IHVuaXF1ZUNlbGxQb3NpdGlvbihtZXJnZUJlZm9yZUNlbGxzLCBzZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgICAgICBjb25zdCByb3dHcm91cCA9IGdyb3VwQnkoY2VsbHMsICh7IHJvdyB9KSA9PiByb3cpO1xuICAgICAgICBjb25zdCBjb2xHcm91cCA9IGdyb3VwQnkoY2VsbHMsICh7IGNvbCB9KSA9PiBjb2wpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXggPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCByb3cgaW4gcm93R3JvdXApIHtcbiAgICAgICAgICAgIGlmIChyb3dHcm91cFtyb3ddLmxlbmd0aCA9PT0gcG9zLmdldFdpZHRoKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4LnB1c2gocGFyc2VJbnQocm93LCAxMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgY29sIGluIGNvbEdyb3VwKSB7XG4gICAgICAgICAgICBpZiAoY29sR3JvdXBbY29sXS5sZW5ndGggPT09IHBvcy5nZXRIZWlnaHQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgucHVzaChwYXJzZUludChjb2wsIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NJbmRleCA9IHVuaXEodGhpcy5zZWxlY3RlZFJvd3NJbmRleCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXggPSB1bmlxKHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgpO1xuICAgICAgICBpZiAoaXNTZWxlY3RlZEFsbENlbGwodGhpcy5lZGl0b3IsIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTZWxlY3RlZENlbGxzKGNlbGxzOiBDZWxsUG9zaXRpb25bXSwgcG9zOiBUYWJsZVBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZUNlbGxzID0gdGhpcy5wb2ludGVyU2VsZWN0aW9uID8gdW5pcXVlQ2VsbFBvc2l0aW9uKGNlbGxzLCB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpKSA6IGNlbGxzO1xuICAgICAgICBjb25zdCBjZWxsRWxlbWVudHMgPSB1bmlxdWVDZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcG9zLmZpbmRDZWxsQnlQYXRoKGNlbGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENlbGxzJC5uZXh0KGNlbGxFbGVtZW50cyk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zQW5kUm93SW5kZXgoKTtcbiAgICB9XG5cbiAgICBpbml0RWRpdG9yKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgIH1cblxuICAgIHNlbGVjdFJvdyhlZGl0b3I6IEVkaXRvciwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNsZWFyTGFzdEZvY3VzUGF0aCgpO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShpbmRleCwgMCwgaW5kZXggKyAxLCBwb3MuZ2V0V2lkdGgoKSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoW2luZGV4LCAwXSkpO1xuICAgIH1cblxuICAgIHNlbGVjdENvbHVtbihlZGl0b3I6IEVkaXRvciwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNsZWFyTGFzdEZvY3VzUGF0aCgpO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCBpbmRleCwgcG9zLmdldEhlaWdodCgpLCBpbmRleCArIDEpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGVkaXRvciwgcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFswLCBpbmRleF0pKTtcbiAgICB9XG5cbiAgICBzZWxlY3RUYWJsZShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMoY2VsbHMsIHBvcyk7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsKGVkaXRvciwgcG9zLnRhYmxlRW50cnlbMV0uY29uY2F0KFswLCAwXSkpO1xuICAgIH1cblxuICAgIC8vIOaLlumAiVxuICAgIHNlbGVjdENlbGxzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgYW5jaG9yUGF0aCA9IHRoaXMuYW5jaG9yQ2VsbFBhdGguc2xpY2UoLTIpO1xuICAgICAgICBjb25zdCBmb2N1c1BhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGguc2xpY2UoLTIpO1xuXG4gICAgICAgIGNvbnN0IHJvd3MgPSBbYW5jaG9yUGF0aFswXSwgZm9jdXNQYXRoWzBdXS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBbYW5jaG9yUGF0aFsxXSwgZm9jdXNQYXRoWzFdXS5zb3J0KChtLCBuKSA9PiBtIC0gbik7XG5cbiAgICAgICAgY29uc3QgeyBjb2xzcGFuOiBhbmNob3JDb2xzcGFuQ291bnQsIHJvd3NwYW46IGFuY2hvclJvd3NwYW5Db3VudCB9ID0gRWRpdG9yLm5vZGUoXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoXG4gICAgICAgIClbMF0gYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgY29uc3QgeyBjb2xzcGFuOiBmb2N1c0NvbHNwYW5Db3VudCwgcm93c3BhbjogZm9jdXNSb3dzcGFuQ291bnQgfSA9IEVkaXRvci5ub2RlKGVkaXRvciwgdGhpcy5mb2N1c0NlbGxQYXRoKVswXSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuXG4gICAgICAgIGNvbnN0IGFuY2hvclJvdyA9IGFuY2hvclBhdGhbMF0gKyAoYW5jaG9yUm93c3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgZm9jdXNSb3cgPSBmb2N1c1BhdGhbMF0gKyAoZm9jdXNSb3dzcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBhbmNob3JDb2wgPSBhbmNob3JQYXRoWzFdICsgKGFuY2hvckNvbHNwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGZvY3VzQ29sID0gZm9jdXNQYXRoWzFdICsgKGZvY3VzQ29sc3BhbkNvdW50IHx8IDEpIC0gMTtcblxuICAgICAgICBsZXQgaW5pdE1heENvbCA9IE1hdGgubWF4KGFuY2hvckNvbCwgZm9jdXNDb2wpO1xuICAgICAgICBsZXQgaW5pdE1heFJvdyA9IE1hdGgubWF4KGFuY2hvclJvdywgZm9jdXNSb3cpO1xuICAgICAgICBjb25zdCB7IG1pblJvdywgbWF4Um93LCBtaW5Db2wsIG1heENvbCB9ID0gZ2V0TWluQW5kTWF4Q2VsbEluZGV4KFxuICAgICAgICAgICAgdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpLFxuICAgICAgICAgICAgaW5pdE1heFJvdyxcbiAgICAgICAgICAgIGluaXRNYXhDb2wsXG4gICAgICAgICAgICByb3dzWzBdLFxuICAgICAgICAgICAgY29sdW1uc1swXSxcbiAgICAgICAgICAgIHBvcy50YWJsZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UobWluUm93LCBtaW5Db2wsIG1heFJvdyArIDEsIG1heENvbCArIDEpO1xuXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICB9XG5cbiAgICAvLyDpgInmi6nljZXlhYPmoLxcbiAgICBzZWxlY3RDZWxsKGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbEVsZW1lbnQgPSBjZWxsO1xuICAgICAgICBjb25zdCBbcm93LCBjb2xdID0gcGF0aC5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBDZWxsUG9zaXRpb25bXSA9IFt7IHJvdywgY29sIH1dO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5wb2ludGVyU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5zZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgICAgICAgICAgLy8g5aSE55CG5Y2V5YWD5qC86YCJ5Lit5pe277yM5aSE55CG5Li66YCJ5Lit5aSa5Y2V5YWD5qC8XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHRoaXMuZWRpdG9yLCB7IHJvdywgY29sIH0pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uc2VsZWN0ZWRDZWxscyk7XG4gICAgICAgICAgICAvLyDlt7LogZrnhKbnmoTljZXlhYPmoLzlnKjlpJrpgInmqKHlvI/kuIvpgInkuK3vvIjmmoLlrZjkuIrmrKHogZrnhKbnmoTljZXlhYPmoLzmlbDmja7vvIlcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2VsbCA9IHRoaXMubGFzdEZvY3VzQ2VsbFBhdGg/LnNsaWNlKC0yKTtcbiAgICAgICAgICAgIGlmIChmb2N1c0NlbGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb2N1c0NlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHRoaXMuZWRpdG9yLCB7IHJvdzogZm9jdXNDZWxsWzBdLCBjb2w6IGZvY3VzQ2VsbFsxXSB9KTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5mb2N1c0NlbGxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ2VsbHMocmVzdWx0LCBwb3MpO1xuICAgIH1cblxuICAgIHNlbGVjdGVkQ2VsbHNDaGFuZ2UoKTogT2JzZXJ2YWJsZTxUYWJsZUNlbGxFbGVtZW50W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKTtcbiAgICB9XG5cbiAgICBjZWxsc1Bvc2l0aW9uQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxsc0NoYW5nZU9iamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuY2VsbHNDaGFuZ2VPYmplY3QkLm5leHQoKTtcbiAgICB9XG5cbiAgICBlbWl0VGFibGVDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudGFibGVDaGFuZ2UkLm5leHQoKTtcbiAgICB9XG5cbiAgICB0YWJsZUNoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxscygpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNDZWxsU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNSaWdodENsaWNraW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxscyQubmV4dChbXSk7XG4gICAgfVxuXG4gICAgY2xlYXJMYXN0Rm9jdXNQYXRoKCkge1xuICAgICAgICB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyDmi5bpgInlvIDlp4sgfHwg6K6w5b2V6IGa54Sm54K5XG4gICAgc2VsZWN0Q2VsbFN0YXJ0KGNlbGw6IEhUTUxUYWJsZUNlbGxFbGVtZW50LCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICB0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmxhc3RGb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgaWYgKCF0aGlzLnByZUZvY3VzQ2VsbFBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IHRoaXMuYW5jaG9yQ2VsbFBhdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RDZWxsT25nb2luZyhjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgaWYgKEFuZ3VsYXJFZGl0b3IuaXNSZWFkb25seShlZGl0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlzQ2hhbmdlZDogYm9vbGVhbjtcbiAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCk7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIG5vZGUpO1xuICAgICAgICAgICAgaXNDaGFuZ2VkID0gIXRoaXMuZm9jdXNDZWxsUGF0aCB8fCB0aGlzLmZvY3VzQ2VsbFBhdGgudG9TdHJpbmcoKSAhPT0gcGF0aC50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgaXNDaGFuZ2VkID1cbiAgICAgICAgICAgICAgICAhdGhpcy5mb2N1c0NlbGxQYXRoIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuZm9jdXNDZWxsUGF0aC50b1N0cmluZygpID09PSB0aGlzLmFuY2hvckNlbGxQYXRoLnRvU3RyaW5nKCkgJiYgc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nICYmIGlzQ2hhbmdlZCkge1xuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMucHJlRm9jdXNDZWxsUGF0aCkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9jdXNDZWxsUGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ2VsbFNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RDZWxscyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IHRoaXMuZm9jdXNDZWxsUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdENlbGxFbmQoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDZWxsU2VsZWN0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbChlZGl0b3IsIHRoaXMuZm9jdXNDZWxsUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmVGb2N1c0NlbGxQYXRoID0gbnVsbDtcbiAgICB9XG5cbiAgICBmb2N1c0NlbGwoZWRpdG9yOiBFZGl0b3IsIHBhdGg6IG51bWJlcltdKSB7XG4gICAgICAgIGNvbnN0IGF0ID0gRWRpdG9yLnN0YXJ0KGVkaXRvciwgcGF0aCk7XG4gICAgICAgIFRoZUVkaXRvci5mb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgYXQpO1xuICAgIH1cblxuICAgIGRhbmdlcm91c0NlbGxzQ2hhbmdlKCk6IE9ic2VydmFibGU8Q2VsbFBvc2l0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gdGhpcy5zZWxlY3RlZFJvd3NJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4O1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgfVxuXG4gICAgY2xlYXJEYW5nZXJvdXNDZWxscygpIHtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChbXSk7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAocG9zLnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0SGVpZ2h0KCkgJiYgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleC5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGFuZ2Vyb3VzT3JTZWxlY3RlZENlbGxzQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gbWVyZ2UodGhpcy5kYW5nZXJvdXNDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSwgdGhpcy5zZWxlY3RlZENlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpKTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNSb3dzKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICBjb25zdCBjZWxscyA9IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucztcbiAgICAgICAgY29uc3Qgcm93cyA9IHVuaXEobWFwKGNlbGxzLCAncm93JykpLnZhbHVlT2YoKSBhcyBudW1iZXJbXTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gcm93cztcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSByb3dzLmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpO1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gWy4uLkFycmF5KHBvcy5nZXRXaWR0aCgpKV0ubWFwKCh2LCBpKSA9PiBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgcm93SW5kZXggb2Ygcm93cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MuZ2V0V2lkdGgoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICByb3c6IHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICBjb2w6IGlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzQ29sdW1ucygpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBzZWxlY3RlZENlbGxQb3NpdGlvbnM7XG4gICAgICAgIGNvbnN0IGNvbHMgPSB1bmlxKG1hcChjZWxscywgJ2NvbCcpKS52YWx1ZU9mKCkgYXMgbnVtYmVyW107XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IGNvbHM7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gY29scy5sZW5ndGggPT09IHBvcy5nZXRXaWR0aCgpO1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gWy4uLkFycmF5KHBvcy5nZXRIZWlnaHQoKSldLm1hcCgoXywgaSkgPT4gaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNvbEluZGV4IG9mIGNvbHMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmdldEhlaWdodCgpOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHJvdzogaSxcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2xJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBzZXREYW5nZXJvdXNUYWJsZSgpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIDAsIHBvcy5nZXRIZWlnaHQoKSwgcG9zLmdldFdpZHRoKCkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0SGVpZ2h0KCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0V2lkdGgoKSldLm1hcCgoXywgaSkgPT4gaSk7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoY2VsbHMpO1xuICAgIH1cblxuICAgIHNlbGVjdEZpcnN0Q2VsbCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgeyByb3csIGNvbCB9ID0gc2VsZWN0ZWRDZWxsUG9zaXRpb25zWzBdO1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSBnZXRUYWJsZVBhdGgodGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCBwYXRoID0gRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCBbLi4udGFibGVQYXRoLCByb3csIGNvbF0pO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3I6IENvbG9yVHlwZSkge1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSBnZXRUYWJsZVBhdGgodGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcodGhpcy5lZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyByb3csIGNvbCB9IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQYXRoLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgeyBiYWNrZ3JvdW5kQ29sb3IgfSwgeyBhdDogY2VsbFBhdGggfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLmlzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IHJvdywgY29sIH0gb2YgY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQb3NpdGlvbi50YWJsZUVudHJ5WzFdLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgY2VsbFBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmNsZWFyQ2VsbCh0aGlzLmVkaXRvciwgW25vZGUsIGNlbGxQYXRoXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLmNlbGxFbnRyeVsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGFibGVPcHRpb25zKGVkaXRvcjogRWRpdG9yLCBuZXdPcHRpb25zOiBUaGVUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgdGFibGVQYXRoID0gZ2V0VGFibGVQYXRoKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZVBvc2l0aW9uLnRhYmxlO1xuICAgICAgICBjb25zdCBvcHRpb25zID0geyAuLi50YWJsZS5vcHRpb25zLCAuLi5uZXdPcHRpb25zIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7IG9wdGlvbnMgfSwgeyBhdDogdGFibGVQYXRoIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZURhbmdlcm91c0NvbHVtbnNPclJvd3MoKSB7XG4gICAgICAgIGNvbnN0IHsgZGFuZ2Vyb3VzUm93c0luZGV4LCBkYW5nZXJvdXNDb2x1bW5zSW5kZXggfSA9IHRoaXM7XG4gICAgICAgIHRoaXMucmVtb3ZlQ29sdW1uT3JSb3dzKGRhbmdlcm91c1Jvd3NJbmRleCwgZGFuZ2Vyb3VzQ29sdW1uc0luZGV4KTtcbiAgICB9XG5cbiAgICByZW1vdmVDb2x1bW5PclJvd3Moc2VsZWN0ZWRSb3dJbmRleHMgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4LCBzZWxlY3RlZENvbHVtbkluZGV4cyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgpIHtcbiAgICAgICAgY29uc3QgeyBpc1NlbGVjdGVkVGFibGUgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHRhYmxlUG9zaXRpb24gPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgVGFibGVFZGl0b3IucmVtb3ZlVGFibGUodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHRhYmxlUG9zaXRpb24udGFibGUpIGFzIGFueTtcbiAgICAgICAgaWYgKHNlbGVjdGVkUm93SW5kZXhzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRDb2x1bW5JbmRleHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyDliKDpmaTooYzml7blj5bmtojmoIfpopjooYxcbiAgICAgICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLnRhYmxlICYmIHRhYmxlQ29tcG9uZW50LmhlYWRlclJvdyAmJiBzZWxlY3RlZFJvd0luZGV4cy5pbmNsdWRlcygwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVPcHRpb25zKHRoaXMuZWRpdG9yLCB7IGhlYWRlclJvdzogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgLy8gaGVhZGVyUm93IOWFvOWuueS7o+eggSwg5Y+W5raI5qCH6aKY6KGM55qE5pe25YCZ5ZCM5pe26K6+572uIHJvdyDkuK3nmoQgaGVhZGVyIOWxnuaAp1xuICAgICAgICAgICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLnRhYmxlLmNoaWxkcmVuWzBdLmhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dQYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLnRhYmxlLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgeyBoZWFkZXI6IG51bGwgfSwgeyBhdDogcm93UGF0aCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZFJvd0luZGV4c1xuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZVJvdyh0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDZWxscygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxlY3RlZENvbHVtbkluZGV4cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkUm93SW5kZXhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8g5Yig6Zmk5YiX5pe25Y+W5raI5qCH6aKY5YiXXG4gICAgICAgICAgICBpZiAodGFibGVQb3NpdGlvbi50YWJsZSAmJiB0YWJsZVBvc2l0aW9uLnRhYmxlLm9wdGlvbnM/LmhlYWRlckNvbHVtbiAmJiBzZWxlY3RlZENvbHVtbkluZGV4cy5pbmNsdWRlcygwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVPcHRpb25zKHRoaXMuZWRpdG9yLCB7IGhlYWRlckNvbHVtbjogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkluZGV4c1xuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZUNvbHVtbih0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDZWxscygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWMsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR2pFLE1BQU0sT0FBTyxVQUFVO0lBNkNuQixJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFD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O2FBQ0o7WUFDRCxpQkFBaUI7aUJBQ1osSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNiLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25FLFlBQVk7WUFDWixJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDOUQ7WUFDRCxvQkFBb0I7aUJBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNiLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUM7O3VHQXhjUSxVQUFVOzJHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zLCBOb2RlLCBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBFTEVNRU5UX1RPX0NPTVBPTkVOVCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGFibGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ3JvdXBCeSwgdW5pcSwgbWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IENvbG9yVHlwZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1zZWxlY3QnO1xuaW1wb3J0IHsgQ2VsbFBvc2l0aW9uLCBUaGVUYWJsZU9wdGlvbnMgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRhYmxlQ2VsbEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuL3RhYmxlLmVkaXRvcic7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZVRhYmxlUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NyZWF0ZS10YWJsZS1wb3NpdGlvbic7XG5pbXBvcnQgeyBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlLCBnZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMsIGlzU2VsZWN0ZWRBbGxDZWxsLCB1bmlxdWVDZWxsUG9zaXRpb24gfSBmcm9tICcuL3V0aWxzL2NlbGwtcG9zaXRpb24nO1xuaW1wb3J0IHsgZ2V0VGFibGVQYXRoIH0gZnJvbSAnLi91dGlscy90YWJsZS1lbnRyeSc7XG5pbXBvcnQgeyBnZXRNaW5BbmRNYXhDZWxsSW5kZXggfSBmcm9tICcuL3V0aWxzL2dldC1taW4tbWF4LWNlbGwtaW5kZXgnO1xuaW1wb3J0IHsgZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlIH0gZnJvbSAnLi91dGlscy9tZXJnZS1jZWxsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUge1xuICAgIHByaXZhdGUgc2VsZWN0ZWRDZWxscyQ6IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNlbGxFbGVtZW50W10+KFtdKTtcblxuICAgIHByaXZhdGUgZGFuZ2Vyb3VzQ2VsbHMkOiBCZWhhdmlvclN1YmplY3Q8Q2VsbFBvc2l0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgICBwcml2YXRlIGNlbGxzQ2hhbmdlT2JqZWN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHRhYmxlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBzZWxlY3RlZENvbHVtbnNJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICAgIHNlbGVjdGVkUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzQ29sdW1uc0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZGFuZ2Vyb3VzUm93c0luZGV4OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgaXNTZWxlY3RlZFRhYmxlOiBib29sZWFuO1xuXG4gICAgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBwdWJsaWMgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuXG4gICAgcHVibGljIGFuY2hvckNlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBmb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBwcmVGb2N1c0NlbGxQYXRoOiBudW1iZXJbXTtcblxuICAgIHB1YmxpYyBsYXN0Rm9jdXNDZWxsUGF0aDogbnVtYmVyW107XG5cbiAgICBwdWJsaWMgZm9jdXNDZWxsRWxlbWVudDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgaXNQcmVwYXJlU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNDZWxsU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNSaWdodENsaWNraW5nID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaXNGb2N1c2VkSW5wdXQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBwb2ludGVyU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbWF4Q29sOiBudW1iZXI7XG5cbiAgICBnZXQgZGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIGlzU2VsZWN0ZWRBbGxDZWxsID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLnNlbGVjdGlvbikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuICEhc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmxlbmd0aCAmJiBwb3MuZ2V0SGVpZ2h0KCkgKiBwb3MuZ2V0V2lkdGgoKSA9PT0gc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmxlbmd0aDtcbiAgICB9O1xuXG4gICAgZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCkge1xuICAgICAgICByZXR1cm4gZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKHRoaXMuZWRpdG9yLCB0aGlzLnNlbGVjdGVkQ2VsbHMkLmdldFZhbHVlKCkpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ29sdW1uc0FuZFJvd0luZGV4KCkge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yPy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAoIXBvcz8udGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lcmdlQmVmb3JlQ2VsbHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgc2VsZWN0ZWRDZWxsUG9zaXRpb25zLmZvckVhY2goKHsgcm93LCBjb2wgfSkgPT4ge1xuICAgICAgICAgICAgLy8g6K6h566X5ZCI5bm25Y2V5YWD5qC85pWw5o2u5pe277yM6KaB5oyJ5ZCI5bm25YmN55qE5pWw5o2u5aSE55CGXG4gICAgICAgICAgICBtZXJnZUJlZm9yZUNlbGxzLnB1c2goLi4uZ2V0Q2VsbFBvc2l0aW9uc0JlZm9yZU1lcmdlKHRoaXMuZWRpdG9yLCB7IHJvdywgY29sIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdW5pcXVlQ2VsbFBvc2l0aW9uKG1lcmdlQmVmb3JlQ2VsbHMsIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgICAgIGNvbnN0IHJvd0dyb3VwID0gZ3JvdXBCeShjZWxscywgKHsgcm93IH0pID0+IHJvdyk7XG4gICAgICAgIGNvbnN0IGNvbEdyb3VwID0gZ3JvdXBCeShjZWxscywgKHsgY29sIH0pID0+IGNvbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBpbiByb3dHcm91cCkge1xuICAgICAgICAgICAgaWYgKHJvd0dyb3VwW3Jvd10ubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXgucHVzaChwYXJzZUludChyb3csIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBjb2wgaW4gY29sR3JvdXApIHtcbiAgICAgICAgICAgIGlmIChjb2xHcm91cFtjb2xdLmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleC5wdXNoKHBhcnNlSW50KGNvbCwgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0luZGV4ID0gdW5pcSh0aGlzLnNlbGVjdGVkUm93c0luZGV4KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCA9IHVuaXEodGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleCk7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkQWxsQ2VsbCh0aGlzLmVkaXRvciwgc2VsZWN0ZWRDZWxsUG9zaXRpb25zKSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHMoY2VsbHM6IENlbGxQb3NpdGlvbltdLCBwb3M6IFRhYmxlUG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgdW5pcXVlQ2VsbHMgPSB0aGlzLnBvaW50ZXJTZWxlY3Rpb24gPyB1bmlxdWVDZWxsUG9zaXRpb24oY2VsbHMsIHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCkpIDogY2VsbHM7XG4gICAgICAgIGNvbnN0IGNlbGxFbGVtZW50cyA9IHVuaXF1ZUNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwb3MuZmluZENlbGxCeVBhdGgoY2VsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoY2VsbEVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENvbHVtbnNBbmRSb3dJbmRleCgpO1xuICAgIH1cblxuICAgIGluaXRFZGl0b3IoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgfVxuXG4gICAgc2VsZWN0Um93KGVkaXRvcjogRWRpdG9yLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY2xlYXJMYXN0Rm9jdXNQYXRoKCk7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKGluZGV4LCAwLCBpbmRleCArIDEsIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKGNlbGxzLCBwb3MpO1xuICAgICAgICB0aGlzLmZvY3VzQ2VsbChlZGl0b3IsIHBvcy50YWJsZUVudHJ5WzFdLmNvbmNhdChbaW5kZXgsIDBdKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0Q29sdW1uKGVkaXRvcjogRWRpdG9yLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY2xlYXJMYXN0Rm9jdXNQYXRoKCk7XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zRnJvbVJhbmdlKDAsIGluZGV4LCBwb3MuZ2V0SGVpZ2h0KCksIGluZGV4ICsgMSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoWzAsIGluZGV4XSkpO1xuICAgIH1cblxuICAgIHNlbGVjdFRhYmxlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCBjZWxscyA9IGdldENlbGxQb3NpdGlvbnNGcm9tUmFuZ2UoMCwgMCwgcG9zLmdldEhlaWdodCgpLCBwb3MuZ2V0V2lkdGgoKSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhjZWxscywgcG9zKTtcbiAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCBwb3MudGFibGVFbnRyeVsxXS5jb25jYXQoWzAsIDBdKSk7XG4gICAgfVxuXG4gICAgLy8g5ouW6YCJXG4gICAgc2VsZWN0Q2VsbHMoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCBhbmNob3JQYXRoID0gdGhpcy5hbmNob3JDZWxsUGF0aC5zbGljZSgtMik7XG4gICAgICAgIGNvbnN0IGZvY3VzUGF0aCA9IHRoaXMuZm9jdXNDZWxsUGF0aC5zbGljZSgtMik7XG5cbiAgICAgICAgY29uc3Qgcm93cyA9IFthbmNob3JQYXRoWzBdLCBmb2N1c1BhdGhbMF1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IFthbmNob3JQYXRoWzFdLCBmb2N1c1BhdGhbMV1dLnNvcnQoKG0sIG4pID0+IG0gLSBuKTtcblxuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGFuY2hvckNvbHNwYW5Db3VudCwgcm93c3BhbjogYW5jaG9yUm93c3BhbkNvdW50IH0gPSBFZGl0b3Iubm9kZShcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2VsbFBhdGhcbiAgICAgICAgKVswXSBhcyBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICBjb25zdCB7IGNvbHNwYW46IGZvY3VzQ29sc3BhbkNvdW50LCByb3dzcGFuOiBmb2N1c1Jvd3NwYW5Db3VudCB9ID0gRWRpdG9yLm5vZGUoZWRpdG9yLCB0aGlzLmZvY3VzQ2VsbFBhdGgpWzBdIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgYW5jaG9yUm93ID0gYW5jaG9yUGF0aFswXSArIChhbmNob3JSb3dzcGFuQ291bnQgfHwgMSkgLSAxO1xuICAgICAgICBjb25zdCBmb2N1c1JvdyA9IGZvY3VzUGF0aFswXSArIChmb2N1c1Jvd3NwYW5Db3VudCB8fCAxKSAtIDE7XG4gICAgICAgIGNvbnN0IGFuY2hvckNvbCA9IGFuY2hvclBhdGhbMV0gKyAoYW5jaG9yQ29sc3BhbkNvdW50IHx8IDEpIC0gMTtcbiAgICAgICAgY29uc3QgZm9jdXNDb2wgPSBmb2N1c1BhdGhbMV0gKyAoZm9jdXNDb2xzcGFuQ291bnQgfHwgMSkgLSAxO1xuXG4gICAgICAgIGxldCBpbml0TWF4Q29sID0gTWF0aC5tYXgoYW5jaG9yQ29sLCBmb2N1c0NvbCk7XG4gICAgICAgIGxldCBpbml0TWF4Um93ID0gTWF0aC5tYXgoYW5jaG9yUm93LCBmb2N1c1Jvdyk7XG4gICAgICAgIGNvbnN0IHsgbWluUm93LCBtYXhSb3csIG1pbkNvbCwgbWF4Q29sIH0gPSBnZXRNaW5BbmRNYXhDZWxsSW5kZXgoXG4gICAgICAgICAgICB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCksXG4gICAgICAgICAgICBpbml0TWF4Um93LFxuICAgICAgICAgICAgaW5pdE1heENvbCxcbiAgICAgICAgICAgIHJvd3NbMF0sXG4gICAgICAgICAgICBjb2x1bW5zWzBdLFxuICAgICAgICAgICAgcG9zLnRhYmxlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZShtaW5Sb3csIG1pbkNvbCwgbWF4Um93ICsgMSwgbWF4Q29sICsgMSk7XG5cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENlbGxzKGNlbGxzLCBwb3MpO1xuICAgIH1cblxuICAgIC8vIOmAieaLqeWNleWFg+agvFxuICAgIHNlbGVjdENlbGwoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgY2VsbCkgYXMgVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgdGhpcy5hbmNob3JDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZm9jdXNDZWxsRWxlbWVudCA9IGNlbGw7XG4gICAgICAgIGNvbnN0IFtyb3csIGNvbF0gPSBwYXRoLnNsaWNlKC0yKTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbihlZGl0b3IpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IENlbGxQb3NpdGlvbltdID0gW3sgcm93LCBjb2wgfV07XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgICAgICAgICAvLyDlpITnkIbljZXlhYPmoLzpgInkuK3ml7bvvIzlpITnkIbkuLrpgInkuK3lpJrljZXlhYPmoLxcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UodGhpcy5lZGl0b3IsIHsgcm93LCBjb2wgfSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5zZWxlY3RlZENlbGxzKTtcbiAgICAgICAgICAgIC8vIOW3suiBmueEpueahOWNleWFg+agvOWcqOWkmumAieaooeW8j+S4i+mAieS4re+8iOaaguWtmOS4iuasoeiBmueEpueahOWNleWFg+agvOaVsOaNru+8iVxuICAgICAgICAgICAgY29uc3QgZm9jdXNDZWxsID0gdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aD8uc2xpY2UoLTIpO1xuICAgICAgICAgICAgaWYgKGZvY3VzQ2VsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2VsbHMgPSBnZXRDZWxsUG9zaXRpb25zQmVmb3JlTWVyZ2UodGhpcy5lZGl0b3IsIHsgcm93OiBmb2N1c0NlbGxbMF0sIGNvbDogZm9jdXNDZWxsWzFdIH0pO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmZvY3VzQ2VsbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDZWxscyhyZXN1bHQsIHBvcyk7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPFRhYmxlQ2VsbEVsZW1lbnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIGNlbGxzUG9zaXRpb25DaGFuZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxzQ2hhbmdlT2JqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDZWxscygpIHtcbiAgICAgICAgdGhpcy5jZWxsc0NoYW5nZU9iamVjdCQubmV4dCgpO1xuICAgIH1cblxuICAgIGVtaXRUYWJsZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy50YWJsZUNoYW5nZSQubmV4dCgpO1xuICAgIH1cblxuICAgIHRhYmxlQ2hhbmdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3RlZENlbGxzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXggPSBbXTtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JpZ2h0Q2xpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWRJbnB1dCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMkLm5leHQoW10pO1xuICAgIH1cblxuICAgIGNsZWFyTGFzdEZvY3VzUGF0aCgpIHtcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8g5ouW6YCJ5byA5aeLIHx8IOiusOW9leiBmueEpueCuVxuICAgIHNlbGVjdENlbGxTdGFydChjZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5pc1ByZXBhcmVTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpO1xuICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIG5vZGUpO1xuICAgICAgICB0aGlzLmFuY2hvckNlbGxQYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgIGlmICghdGhpcy5wcmVGb2N1c0NlbGxQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmFuY2hvckNlbGxQYXRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q2VsbE9uZ29pbmcoY2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQsIGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmIChBbmd1bGFyRWRpdG9yLmlzUmVhZG9ubHkoZWRpdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpc0NoYW5nZWQ6IGJvb2xlYW47XG4gICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gQW5ndWxhckVkaXRvci50b1NsYXRlTm9kZShlZGl0b3IsIGNlbGwpO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgIGlzQ2hhbmdlZCA9ICF0aGlzLmZvY3VzQ2VsbFBhdGggfHwgdGhpcy5mb2N1c0NlbGxQYXRoLnRvU3RyaW5nKCkgIT09IHBhdGgudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNDZWxsUGF0aCA9IHBhdGg7XG4gICAgICAgICAgICB0aGlzLmZvY3VzQ2VsbEVsZW1lbnQgPSBjZWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgIGlzQ2hhbmdlZCA9XG4gICAgICAgICAgICAgICAgIXRoaXMuZm9jdXNDZWxsUGF0aCB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmZvY3VzQ2VsbFBhdGgudG9TdHJpbmcoKSA9PT0gdGhpcy5hbmNob3JDZWxsUGF0aC50b1N0cmluZygpICYmIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGggPT09IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUHJlcGFyZVNlbGVjdGluZyAmJiBpc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLnByZUZvY3VzQ2VsbFBhdGgpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvY3VzQ2VsbFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q2VsbHMoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZUZvY3VzQ2VsbFBhdGggPSB0aGlzLmZvY3VzQ2VsbFBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RDZWxsRW5kKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2VsbFNlbGVjdGluZykge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NlbGwoZWRpdG9yLCB0aGlzLmZvY3VzQ2VsbFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNQcmVwYXJlU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJlRm9jdXNDZWxsUGF0aCA9IG51bGw7XG4gICAgfVxuXG4gICAgZm9jdXNDZWxsKGVkaXRvcjogRWRpdG9yLCBwYXRoOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBhdCA9IEVkaXRvci5zdGFydChlZGl0b3IsIHBhdGgpO1xuICAgICAgICBUaGVFZGl0b3IuZm9jdXModGhpcy5lZGl0b3IpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGF0KTtcbiAgICB9XG5cbiAgICBkYW5nZXJvdXNDZWxsc0NoYW5nZSgpOiBPYnNlcnZhYmxlPENlbGxQb3NpdGlvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhbmdlcm91c0NlbGxzJC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NlbGxzKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5kZXg7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gdGhpcy5zZWxlY3RlZENvbHVtbnNJbmRleDtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChzZWxlY3RlZENlbGxQb3NpdGlvbnMpO1xuICAgIH1cblxuICAgIGNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKSB7XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzUm93c0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4ID0gW107XG4gICAgICAgIHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLm5leHQoW10pO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKHBvcy50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkVGFibGUgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCA9PT0gcG9zLmdldEhlaWdodCgpICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhbmdlcm91c09yU2VsZWN0ZWRDZWxsc0NoYW5nZSgpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHRoaXMuZGFuZ2Vyb3VzQ2VsbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSksIHRoaXMuc2VsZWN0ZWRDZWxscyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzUm93cygpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsUG9zaXRpb25zID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBzZWxlY3RlZENlbGxQb3NpdGlvbnM7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB1bmlxKG1hcChjZWxscywgJ3JvdycpKS52YWx1ZU9mKCkgYXMgbnVtYmVyW107XG4gICAgICAgIGNvbnN0IHBvcyA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IHJvd3M7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gcm93cy5sZW5ndGggPT09IHBvcy5nZXRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZFRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRhbmdlcm91c0NvbHVtbnNJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0V2lkdGgoKSldLm1hcCgodiwgaSkgPT4gaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHJvd0luZGV4IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmdldFdpZHRoKCk7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgY29sOiBpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDZWxscyQubmV4dChyZXN1bHQpO1xuICAgIH1cblxuICAgIHNldERhbmdlcm91c0NvbHVtbnMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gc2VsZWN0ZWRDZWxsUG9zaXRpb25zO1xuICAgICAgICBjb25zdCBjb2xzID0gdW5pcShtYXAoY2VsbHMsICdjb2wnKSkudmFsdWVPZigpIGFzIG51bWJlcltdO1xuICAgICAgICBjb25zdCBwb3MgPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBjb2xzO1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRUYWJsZSA9IGNvbHMubGVuZ3RoID09PSBwb3MuZ2V0V2lkdGgoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZFRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRhbmdlcm91c1Jvd3NJbmRleCA9IFsuLi5BcnJheShwb3MuZ2V0SGVpZ2h0KCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjb2xJbmRleCBvZiBjb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5nZXRIZWlnaHQoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICByb3c6IGksXG4gICAgICAgICAgICAgICAgICAgIGNvbDogY29sSW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgc2V0RGFuZ2Vyb3VzVGFibGUoKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFRhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0Q2VsbFBvc2l0aW9uc0Zyb21SYW5nZSgwLCAwLCBwb3MuZ2V0SGVpZ2h0KCksIHBvcy5nZXRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNSb3dzSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldEhlaWdodCgpKV0ubWFwKChfLCBpKSA9PiBpKTtcbiAgICAgICAgdGhpcy5kYW5nZXJvdXNDb2x1bW5zSW5kZXggPSBbLi4uQXJyYXkocG9zLmdldFdpZHRoKCkpXS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICB0aGlzLmRhbmdlcm91c0NlbGxzJC5uZXh0KGNlbGxzKTtcbiAgICB9XG5cbiAgICBzZWxlY3RGaXJzdENlbGwoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2wgfSA9IHNlbGVjdGVkQ2VsbFBvc2l0aW9uc1swXTtcbiAgICAgICAgY29uc3QgdGFibGVQYXRoID0gZ2V0VGFibGVQYXRoKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IEVkaXRvci5zdGFydCh0aGlzLmVkaXRvciwgWy4uLnRhYmxlUGF0aCwgcm93LCBjb2xdKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIHBhdGgpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yOiBDb2xvclR5cGUpIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnNlbGVjdGVkQ2VsbHMkLmdldFZhbHVlKCk7XG4gICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcodGhpcy5lZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsUGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIGNlbGwpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXModGhpcy5lZGl0b3IsIHsgYmFja2dyb3VuZENvbG9yIH0sIHsgYXQ6IGNlbGxQYXRoIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0ZWRDZWxsc0NvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IGNyZWF0ZVRhYmxlUG9zaXRpb24odGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLmlzSW5UYWJsZSgpKSB7XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IHJvdywgY29sIH0gb2YgY2VsbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBhdGggPSBbLi4udGFibGVQb3NpdGlvbi50YWJsZUVudHJ5WzFdLCByb3csIGNvbF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgY2VsbFBhdGgpIGFzIFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLmNsZWFyQ2VsbCh0aGlzLmVkaXRvciwgW25vZGUsIGNlbGxQYXRoXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgRWRpdG9yLnN0YXJ0KHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLmNlbGxFbnRyeVsxXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGFibGVPcHRpb25zKGVkaXRvcjogRWRpdG9yLCBuZXdPcHRpb25zOiBUaGVUYWJsZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdGFibGVQb3NpdGlvbiA9IGNyZWF0ZVRhYmxlUG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgY29uc3QgdGFibGVQYXRoID0gZ2V0VGFibGVQYXRoKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0YWJsZVBvc2l0aW9uLnRhYmxlO1xuICAgICAgICBjb25zdCBvcHRpb25zID0geyAuLi50YWJsZS5vcHRpb25zLCAuLi5uZXdPcHRpb25zIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7IG9wdGlvbnMgfSwgeyBhdDogdGFibGVQYXRoIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZURhbmdlcm91c0NvbHVtbnNPclJvd3MoKSB7XG4gICAgICAgIGNvbnN0IHsgZGFuZ2Vyb3VzUm93c0luZGV4LCBkYW5nZXJvdXNDb2x1bW5zSW5kZXggfSA9IHRoaXM7XG4gICAgICAgIHRoaXMucmVtb3ZlQ29sdW1uT3JSb3dzKGRhbmdlcm91c1Jvd3NJbmRleCwgZGFuZ2Vyb3VzQ29sdW1uc0luZGV4KTtcbiAgICB9XG5cbiAgICByZW1vdmVDb2x1bW5PclJvd3Moc2VsZWN0ZWRSb3dJbmRleHMgPSB0aGlzLnNlbGVjdGVkUm93c0luZGV4LCBzZWxlY3RlZENvbHVtbkluZGV4cyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zSW5kZXgpIHtcbiAgICAgICAgY29uc3QgeyBpc1NlbGVjdGVkVGFibGUgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHRhYmxlUG9zaXRpb24gPSBjcmVhdGVUYWJsZVBvc2l0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgVGFibGVFZGl0b3IucmVtb3ZlVGFibGUodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHRhYmxlUG9zaXRpb24udGFibGUpIGFzIGFueTtcbiAgICAgICAgaWYgKHNlbGVjdGVkUm93SW5kZXhzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRDb2x1bW5JbmRleHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyDliKDpmaTooYzml7blj5bmtojmoIfpopjooYxcbiAgICAgICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLnRhYmxlICYmIHRhYmxlQ29tcG9uZW50LmhlYWRlclJvdyAmJiBzZWxlY3RlZFJvd0luZGV4cy5pbmNsdWRlcygwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVPcHRpb25zKHRoaXMuZWRpdG9yLCB7IGhlYWRlclJvdzogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgLy8gaGVhZGVyUm93IOWFvOWuueS7o+eggSwg5Y+W5raI5qCH6aKY6KGM55qE5pe25YCZ5ZCM5pe26K6+572uIHJvdyDkuK3nmoQgaGVhZGVyIOWxnuaAp1xuICAgICAgICAgICAgICAgIGlmICh0YWJsZVBvc2l0aW9uLnRhYmxlLmNoaWxkcmVuWzBdLmhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dQYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0YWJsZVBvc2l0aW9uLnRhYmxlLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgeyBoZWFkZXI6IG51bGwgfSwgeyBhdDogcm93UGF0aCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZFJvd0luZGV4c1xuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZVJvdyh0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDZWxscygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxlY3RlZENvbHVtbkluZGV4cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkUm93SW5kZXhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8g5Yig6Zmk5YiX5pe25Y+W5raI5qCH6aKY5YiXXG4gICAgICAgICAgICBpZiAodGFibGVQb3NpdGlvbi50YWJsZSAmJiB0YWJsZVBvc2l0aW9uLnRhYmxlLm9wdGlvbnM/LmhlYWRlckNvbHVtbiAmJiBzZWxlY3RlZENvbHVtbkluZGV4cy5pbmNsdWRlcygwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVPcHRpb25zKHRoaXMuZWRpdG9yLCB7IGhlYWRlckNvbHVtbjogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkluZGV4c1xuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFRhYmxlRWRpdG9yLnJlbW92ZUNvbHVtbih0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VDZWxscygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -16,7 +16,7 @@ export const TABLE_INSERT_MASK = 19;
16
16
  export const TABLE_BORDER = 1;
17
17
  export const TABLE_PADDING = 8;
18
18
  export const TABLE_CONTROL = 11;
19
- export const TABLE_NUMBER_COLUMN = 44;
19
+ export const TABLE_NUMBER_COLUMN = 45;
20
20
  export const TableWithStickyRowClass = 'the-table-with-sticky-row';
21
21
  export var FullscreenState;
22
22
  (function (FullscreenState) {
@@ -57,4 +57,4 @@ export var TableInsertType;
57
57
  TableInsertType["insertColumnsLeft"] = "insert-columns-left";
58
58
  TableInsertType["insertColumnsRight"] = "insert-columns-right";
59
59
  })(TableInsertType || (TableInsertType = {}));
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUsxRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBbUMsaUJBQWlCLENBQUMsQ0FBQztBQUVqSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBRTdDLE1BQU0sQ0FBTixJQUFZLGVBTVg7QUFORCxXQUFZLGVBQWU7SUFDdkIsMENBQXVCLENBQUE7SUFFdkIsZ0RBQTZCLENBQUE7SUFFN0Isb0RBQWlDLENBQUE7QUFDckMsQ0FBQyxFQU5XLGVBQWUsS0FBZixlQUFlLFFBTTFCO0FBUUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYTtBQUNqRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtBQUNwRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUs7QUFDaEYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDOUIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRywyQkFBMkIsQ0FBQztBQTRCbkUsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN2Qiw0QkFBUyxDQUFBO0lBQ1QsOEJBQVcsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQWlDRCxNQUFNLE9BQU8sWUFBWTtJQXNCckIsWUFBWSxPQUE0QjtRQXJCeEMsMkJBQTJCO1FBQzNCLGNBQVMsR0FBdUIsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNuRCx5QkFBeUI7UUFDekIsWUFBTyxHQUEwQixZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3ZELDBCQUEwQjtRQUMxQixhQUFRLEdBQTJCLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDMUQsdUNBQXVDO1FBQ3ZDLGdCQUFXLEdBQThCLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDbkUsMENBQTBDO1FBQzFDLGtCQUFhLEdBQTJCLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFFL0QsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFFbkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBR2YsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU87U0FDVjtRQUNELE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbkMsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFOLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN2QixrREFBK0IsQ0FBQTtJQUMvQixzREFBbUMsQ0FBQTtJQUNuQyw0REFBeUMsQ0FBQTtJQUN6Qyw4REFBMkMsQ0FBQTtBQUMvQyxDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZpZXctYmFzZSc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRoZVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBUSEVfVEFCTEVfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8VGhlVGFibGVDb21wb25lbnQ+PigndGhlLVRhYmxlLXRva2VuJyk7XG5cbmV4cG9ydCBjb25zdCBIRUFERVJfQ0VMTF9DTEFTUyA9ICd0aGUtaGVhZGVyLWNlbGwnO1xuXG5leHBvcnQgY29uc3QgVE9QX0NFTExfQ0xBU1MgPSAndGhlLXRvcC1jZWxsJztcblxuZXhwb3J0IGVudW0gVGFibGVPcGVyYXRpb25zIHtcbiAgICBoZWFkZXJSb3cgPSAnaGVhZGVyUm93JyxcblxuICAgIGhlYWRlckNvbHVtbiA9ICdoZWFkZXJDb2x1bW4nLFxuXG4gICAgbnVtYmVyZWRDb2x1bW4gPSAnbnVtYmVyZWRDb2x1bW4nXG59XG5leHBvcnQgaW50ZXJmYWNlIFRoZVRhYmxlQ29tcG9uZW50QmFzZSBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50IHtcbiAgICBpbml0aWFsaXplQ29sdW1uczogKCkgPT4gdm9pZDtcbiAgICB0cmFuc2Zvcm1Db2x1bW5zV2lkdGg6ICgpID0+IHZvaWQ7XG4gICAgaW5pdGlhbGl6ZVJvd3M6ICgpID0+IHZvaWQ7XG4gICAgdHJhbnNmb3JtUm93SGVpZ2h0OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQkFTRV9DRUxMX0hFSUdIVCA9IDQxOyAvLyBtaW4gaGVpZ2h0XG5leHBvcnQgY29uc3QgQkFTRV9GSUxMX0hFSUdIVCA9IDIgKiA4ICsgMTsgLy8gcGFkZGluZyAqIDIgKyBib3JkZXIgMVxuZXhwb3J0IGNvbnN0IEJBU0VfQ0VMTF9JTk5FUl9IRUlHSFQgPSBCQVNFX0NFTExfSEVJR0hUIC0gQkFTRV9GSUxMX0hFSUdIVDsgLy8gMjRcbmV4cG9ydCBjb25zdCBUQUJMRV9JTlNFUlRfTUFTSyA9IDE5O1xuZXhwb3J0IGNvbnN0IFRBQkxFX0JPUkRFUiA9IDE7XG5leHBvcnQgY29uc3QgVEFCTEVfUEFERElORyA9IDg7XG5leHBvcnQgY29uc3QgVEFCTEVfQ09OVFJPTCA9IDExO1xuZXhwb3J0IGNvbnN0IFRBQkxFX05VTUJFUl9DT0xVTU4gPSA0NDtcblxuZXhwb3J0IGNvbnN0IFRhYmxlV2l0aFN0aWNreVJvd0NsYXNzID0gJ3RoZS10YWJsZS13aXRoLXN0aWNreS1yb3cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVRhYmxlQ29sdW1uIHtcbiAgICB3aWR0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVRhYmxlT3B0aW9ucyB7XG4gICAgaGVhZGVyUm93PzogYm9vbGVhbjtcbiAgICBoZWFkZXJDb2x1bW4/OiBib29sZWFuO1xuICAgIG51bWJlcmVkQ29sdW1uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW51RW50aXR5IHtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGRpdmlkZXI/OiBib29sZWFuO1xuICAgIGV4dGVuZEljb24/OiBzdHJpbmc7XG4gICAgdmlzaWJpbGl0eT86IGJvb2xlYW47XG4gICAgaXNJbnB1dE51bWJlcj86IGJvb2xlYW47XG4gICAgbmFtZVN1ZmZpeD86IHN0cmluZztcbiAgICBjb3VudD86IG51bWJlcjtcbiAgICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gICAgYWN0aW9uSGFuZGxlOiAoZW50aXR5OiBNZW51RW50aXR5KSA9PiB2b2lkO1xuICAgIGFjdGl2ZUhhbmRsZT86IChldmVudDogTW91c2VFdmVudCwgZW50aXR5PzogTWVudUVudGl0eSkgPT4gdm9pZDtcbiAgICBkZWFjdGl2YXRlSGFuZGxlPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZW51bSBGdWxsc2NyZWVuU3RhdGUge1xuICAgIG9uID0gJ29uJyxcbiAgICBvZmYgPSAnb2ZmJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVBsdWdpblRhYmxlT3B0aW9uIHtcbiAgICBmcmVlemVDb2x1bW5IZWFkZXI/OiBib29sZWFuOyAvLyDmoIfpopjliJflkI7mu5rliqjmmK/lkKbmlK/mjIHlhrvnu5NcbiAgICBmcmVlemVSb3dIZWFkZXI/OiBib29sZWFuOyAvLyDmoIfpopjooYzlkI7mu5rliqjmmK/lkKbmlK/mjIHlhrvnu5NcbiAgICAvLyDlkI7mnJ/mj5Lku7bnmoTlt6XlhbfmoI/mlK/mjIHlpJbpg6joh6rlrprkuYnml7blj6/ku6XliKDpmaRcbiAgICBzaG93RnVsbHNjcmVlbj86IGJvb2xlYW47XG4gICAgc2V0RnVsbHNjcmVlbj86IChlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnQpID0+IHZvaWQ7XG4gICAgZnVsbHNjcmVlbkFjdGlvbj86IChlZGl0b3I6IEVkaXRvcikgPT4gT2JzZXJ2YWJsZTx7IGVsZW1lbnQ6IEVsZW1lbnQgfCB1bmRlZmluZWQ7IHN0YXRlOiBGdWxsc2NyZWVuU3RhdGUgfT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFBvc2l0aW9uIHtcbiAgICByb3c6IG51bWJlcjtcbiAgICBjb2w6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZURyb3Bkb3duT3B0aW9uIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlT3B0aW9uc0Zvcm1hdCB7XG4gICAgdHlwZVRhYmxlPzogRWxlbWVudEtpbmRzLnRhYmxlO1xuICAgIHR5cGVSb3c/OiBFbGVtZW50S2luZHMudGFibGVSb3c7XG4gICAgdHlwZUNlbGw/OiBFbGVtZW50S2luZHMudGFibGVDZWxsO1xuICAgIHR5cGVDb250ZW50PzogRWxlbWVudEtpbmRzLnRhYmxlQ29udGVudDtcbiAgICBleGl0QmxvY2tUeXBlPzogc3RyaW5nO1xuICAgIGRlZmF1bHRXaWR0aD86IG51bWJlcjtcbiAgICBtaW5XaWR0aD86IG51bWJlcjtcbiAgICBtYXhXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlT3B0aW9ucyB7XG4gICAgLy8gVGhlIHR5cGUgb2YgdGFibGUgYmxvY2tzXG4gICAgdHlwZVRhYmxlOiBFbGVtZW50S2luZHMudGFibGUgPSBFbGVtZW50S2luZHMudGFibGU7XG4gICAgLy8gVGhlIHR5cGUgb2Ygcm93IGJsb2Nrc1xuICAgIHR5cGVSb3c6IEVsZW1lbnRLaW5kcy50YWJsZVJvdyA9IEVsZW1lbnRLaW5kcy50YWJsZVJvdztcbiAgICAvLyBUaGUgdHlwZSBvZiBjZWxsIGJsb2Nrc1xuICAgIHR5cGVDZWxsOiBFbGVtZW50S2luZHMudGFibGVDZWxsID0gRWxlbWVudEtpbmRzLnRhYmxlQ2VsbDtcbiAgICAvLyBUaGUgZGVmYXVsdCB0eXBlIGZvciBibG9ja3MgaW4gY2VsbHNcbiAgICB0eXBlQ29udGVudDogRWxlbWVudEtpbmRzLnRhYmxlQ29udGVudCA9IEVsZW1lbnRLaW5kcy50YWJsZUNvbnRlbnQ7XG4gICAgLy8gVGhlIHR5cGUgb2YgYmxvY2sgaW5zZXJ0ZWQgd2hlbiBleGl0aW5nXG4gICAgZXhpdEJsb2NrVHlwZTogRWxlbWVudEtpbmRzLnBhcmFncmFwaCA9IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGg7XG5cbiAgICBkZWZhdWx0V2lkdGggPSAyMDA7XG5cbiAgICBtaW5XaWR0aFB4ID0gNTI7XG5cbiAgICBtYXhXaWR0aFB4ID0gMTAwMDtcblxuICAgIG1pbkhlaWdodFB4ID0gNDE7XG5cbiAgICBtYXhIZWlnaHRQeCA9IDEwMDA7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zPzogVGFibGVPcHRpb25zRm9ybWF0KSB7XG4gICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdHlwZVRhYmxlLCB0eXBlUm93LCB0eXBlQ2VsbCwgdHlwZUNvbnRlbnQgfSA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMudHlwZVRhYmxlID0gdHlwZVRhYmxlO1xuICAgICAgICB0aGlzLnR5cGVSb3cgPSB0eXBlUm93O1xuICAgICAgICB0aGlzLnR5cGVDZWxsID0gdHlwZUNlbGw7XG4gICAgICAgIHRoaXMudHlwZUNvbnRlbnQgPSB0eXBlQ29udGVudDtcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIFRhYmxlSW5zZXJ0VHlwZSB7XG4gICAgaW5zZXJ0Um93c1VwID0gJ2luc2VydC1yb3dzLXVwJyxcbiAgICBpbnNlcnRSb3dzRG93biA9ICdpbnNlcnQtcm93cy1kb3duJyxcbiAgICBpbnNlcnRDb2x1bW5zTGVmdCA9ICdpbnNlcnQtY29sdW1ucy1sZWZ0JyxcbiAgICBpbnNlcnRDb2x1bW5zUmlnaHQgPSAnaW5zZXJ0LWNvbHVtbnMtcmlnaHQnXG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS90YWJsZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUsxRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBbUMsaUJBQWlCLENBQUMsQ0FBQztBQUVqSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBRTdDLE1BQU0sQ0FBTixJQUFZLGVBTVg7QUFORCxXQUFZLGVBQWU7SUFDdkIsMENBQXVCLENBQUE7SUFFdkIsZ0RBQTZCLENBQUE7SUFFN0Isb0RBQWlDLENBQUE7QUFDckMsQ0FBQyxFQU5XLGVBQWUsS0FBZixlQUFlLFFBTTFCO0FBUUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYTtBQUNqRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtBQUNwRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUs7QUFDaEYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDOUIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRywyQkFBMkIsQ0FBQztBQTRCbkUsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN2Qiw0QkFBUyxDQUFBO0lBQ1QsOEJBQVcsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQWlDRCxNQUFNLE9BQU8sWUFBWTtJQXNCckIsWUFBWSxPQUE0QjtRQXJCeEMsMkJBQTJCO1FBQzNCLGNBQVMsR0FBdUIsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNuRCx5QkFBeUI7UUFDekIsWUFBTyxHQUEwQixZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3ZELDBCQUEwQjtRQUMxQixhQUFRLEdBQTJCLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDMUQsdUNBQXVDO1FBQ3ZDLGdCQUFXLEdBQThCLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDbkUsMENBQTBDO1FBQzFDLGtCQUFhLEdBQTJCLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFFL0QsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFFbkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBR2YsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU87U0FDVjtRQUNELE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbkMsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFOLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN2QixrREFBK0IsQ0FBQTtJQUMvQixzREFBbUMsQ0FBQTtJQUNuQyw0REFBeUMsQ0FBQTtJQUN6Qyw4REFBMkMsQ0FBQTtBQUMvQyxDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZpZXctYmFzZSc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRoZVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBUSEVfVEFCTEVfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENvbXBvbmVudFR5cGU8VGhlVGFibGVDb21wb25lbnQ+PigndGhlLVRhYmxlLXRva2VuJyk7XG5cbmV4cG9ydCBjb25zdCBIRUFERVJfQ0VMTF9DTEFTUyA9ICd0aGUtaGVhZGVyLWNlbGwnO1xuXG5leHBvcnQgY29uc3QgVE9QX0NFTExfQ0xBU1MgPSAndGhlLXRvcC1jZWxsJztcblxuZXhwb3J0IGVudW0gVGFibGVPcGVyYXRpb25zIHtcbiAgICBoZWFkZXJSb3cgPSAnaGVhZGVyUm93JyxcblxuICAgIGhlYWRlckNvbHVtbiA9ICdoZWFkZXJDb2x1bW4nLFxuXG4gICAgbnVtYmVyZWRDb2x1bW4gPSAnbnVtYmVyZWRDb2x1bW4nXG59XG5leHBvcnQgaW50ZXJmYWNlIFRoZVRhYmxlQ29tcG9uZW50QmFzZSBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50IHtcbiAgICBpbml0aWFsaXplQ29sdW1uczogKCkgPT4gdm9pZDtcbiAgICB0cmFuc2Zvcm1Db2x1bW5zV2lkdGg6ICgpID0+IHZvaWQ7XG4gICAgaW5pdGlhbGl6ZVJvd3M6ICgpID0+IHZvaWQ7XG4gICAgdHJhbnNmb3JtUm93SGVpZ2h0OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQkFTRV9DRUxMX0hFSUdIVCA9IDQxOyAvLyBtaW4gaGVpZ2h0XG5leHBvcnQgY29uc3QgQkFTRV9GSUxMX0hFSUdIVCA9IDIgKiA4ICsgMTsgLy8gcGFkZGluZyAqIDIgKyBib3JkZXIgMVxuZXhwb3J0IGNvbnN0IEJBU0VfQ0VMTF9JTk5FUl9IRUlHSFQgPSBCQVNFX0NFTExfSEVJR0hUIC0gQkFTRV9GSUxMX0hFSUdIVDsgLy8gMjRcbmV4cG9ydCBjb25zdCBUQUJMRV9JTlNFUlRfTUFTSyA9IDE5O1xuZXhwb3J0IGNvbnN0IFRBQkxFX0JPUkRFUiA9IDE7XG5leHBvcnQgY29uc3QgVEFCTEVfUEFERElORyA9IDg7XG5leHBvcnQgY29uc3QgVEFCTEVfQ09OVFJPTCA9IDExO1xuZXhwb3J0IGNvbnN0IFRBQkxFX05VTUJFUl9DT0xVTU4gPSA0NTtcblxuZXhwb3J0IGNvbnN0IFRhYmxlV2l0aFN0aWNreVJvd0NsYXNzID0gJ3RoZS10YWJsZS13aXRoLXN0aWNreS1yb3cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVRhYmxlQ29sdW1uIHtcbiAgICB3aWR0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVRhYmxlT3B0aW9ucyB7XG4gICAgaGVhZGVyUm93PzogYm9vbGVhbjtcbiAgICBoZWFkZXJDb2x1bW4/OiBib29sZWFuO1xuICAgIG51bWJlcmVkQ29sdW1uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW51RW50aXR5IHtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGRpdmlkZXI/OiBib29sZWFuO1xuICAgIGV4dGVuZEljb24/OiBzdHJpbmc7XG4gICAgdmlzaWJpbGl0eT86IGJvb2xlYW47XG4gICAgaXNJbnB1dE51bWJlcj86IGJvb2xlYW47XG4gICAgbmFtZVN1ZmZpeD86IHN0cmluZztcbiAgICBjb3VudD86IG51bWJlcjtcbiAgICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gICAgYWN0aW9uSGFuZGxlOiAoZW50aXR5OiBNZW51RW50aXR5KSA9PiB2b2lkO1xuICAgIGFjdGl2ZUhhbmRsZT86IChldmVudDogTW91c2VFdmVudCwgZW50aXR5PzogTWVudUVudGl0eSkgPT4gdm9pZDtcbiAgICBkZWFjdGl2YXRlSGFuZGxlPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZW51bSBGdWxsc2NyZWVuU3RhdGUge1xuICAgIG9uID0gJ29uJyxcbiAgICBvZmYgPSAnb2ZmJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZVBsdWdpblRhYmxlT3B0aW9uIHtcbiAgICBmcmVlemVDb2x1bW5IZWFkZXI/OiBib29sZWFuOyAvLyDmoIfpopjliJflkI7mu5rliqjmmK/lkKbmlK/mjIHlhrvnu5NcbiAgICBmcmVlemVSb3dIZWFkZXI/OiBib29sZWFuOyAvLyDmoIfpopjooYzlkI7mu5rliqjmmK/lkKbmlK/mjIHlhrvnu5NcbiAgICAvLyDlkI7mnJ/mj5Lku7bnmoTlt6XlhbfmoI/mlK/mjIHlpJbpg6joh6rlrprkuYnml7blj6/ku6XliKDpmaRcbiAgICBzaG93RnVsbHNjcmVlbj86IGJvb2xlYW47XG4gICAgc2V0RnVsbHNjcmVlbj86IChlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnQpID0+IHZvaWQ7XG4gICAgZnVsbHNjcmVlbkFjdGlvbj86IChlZGl0b3I6IEVkaXRvcikgPT4gT2JzZXJ2YWJsZTx7IGVsZW1lbnQ6IEVsZW1lbnQgfCB1bmRlZmluZWQ7IHN0YXRlOiBGdWxsc2NyZWVuU3RhdGUgfT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFBvc2l0aW9uIHtcbiAgICByb3c6IG51bWJlcjtcbiAgICBjb2w6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZURyb3Bkb3duT3B0aW9uIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlT3B0aW9uc0Zvcm1hdCB7XG4gICAgdHlwZVRhYmxlPzogRWxlbWVudEtpbmRzLnRhYmxlO1xuICAgIHR5cGVSb3c/OiBFbGVtZW50S2luZHMudGFibGVSb3c7XG4gICAgdHlwZUNlbGw/OiBFbGVtZW50S2luZHMudGFibGVDZWxsO1xuICAgIHR5cGVDb250ZW50PzogRWxlbWVudEtpbmRzLnRhYmxlQ29udGVudDtcbiAgICBleGl0QmxvY2tUeXBlPzogc3RyaW5nO1xuICAgIGRlZmF1bHRXaWR0aD86IG51bWJlcjtcbiAgICBtaW5XaWR0aD86IG51bWJlcjtcbiAgICBtYXhXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlT3B0aW9ucyB7XG4gICAgLy8gVGhlIHR5cGUgb2YgdGFibGUgYmxvY2tzXG4gICAgdHlwZVRhYmxlOiBFbGVtZW50S2luZHMudGFibGUgPSBFbGVtZW50S2luZHMudGFibGU7XG4gICAgLy8gVGhlIHR5cGUgb2Ygcm93IGJsb2Nrc1xuICAgIHR5cGVSb3c6IEVsZW1lbnRLaW5kcy50YWJsZVJvdyA9IEVsZW1lbnRLaW5kcy50YWJsZVJvdztcbiAgICAvLyBUaGUgdHlwZSBvZiBjZWxsIGJsb2Nrc1xuICAgIHR5cGVDZWxsOiBFbGVtZW50S2luZHMudGFibGVDZWxsID0gRWxlbWVudEtpbmRzLnRhYmxlQ2VsbDtcbiAgICAvLyBUaGUgZGVmYXVsdCB0eXBlIGZvciBibG9ja3MgaW4gY2VsbHNcbiAgICB0eXBlQ29udGVudDogRWxlbWVudEtpbmRzLnRhYmxlQ29udGVudCA9IEVsZW1lbnRLaW5kcy50YWJsZUNvbnRlbnQ7XG4gICAgLy8gVGhlIHR5cGUgb2YgYmxvY2sgaW5zZXJ0ZWQgd2hlbiBleGl0aW5nXG4gICAgZXhpdEJsb2NrVHlwZTogRWxlbWVudEtpbmRzLnBhcmFncmFwaCA9IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGg7XG5cbiAgICBkZWZhdWx0V2lkdGggPSAyMDA7XG5cbiAgICBtaW5XaWR0aFB4ID0gNTI7XG5cbiAgICBtYXhXaWR0aFB4ID0gMTAwMDtcblxuICAgIG1pbkhlaWdodFB4ID0gNDE7XG5cbiAgICBtYXhIZWlnaHRQeCA9IDEwMDA7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zPzogVGFibGVPcHRpb25zRm9ybWF0KSB7XG4gICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdHlwZVRhYmxlLCB0eXBlUm93LCB0eXBlQ2VsbCwgdHlwZUNvbnRlbnQgfSA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMudHlwZVRhYmxlID0gdHlwZVRhYmxlO1xuICAgICAgICB0aGlzLnR5cGVSb3cgPSB0eXBlUm93O1xuICAgICAgICB0aGlzLnR5cGVDZWxsID0gdHlwZUNlbGw7XG4gICAgICAgIHRoaXMudHlwZUNvbnRlbnQgPSB0eXBlQ29udGVudDtcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIFRhYmxlSW5zZXJ0VHlwZSB7XG4gICAgaW5zZXJ0Um93c1VwID0gJ2luc2VydC1yb3dzLXVwJyxcbiAgICBpbnNlcnRSb3dzRG93biA9ICdpbnNlcnQtcm93cy1kb3duJyxcbiAgICBpbnNlcnRDb2x1bW5zTGVmdCA9ICdpbnNlcnQtY29sdW1ucy1sZWZ0JyxcbiAgICBpbnNlcnRDb2x1bW5zUmlnaHQgPSAnaW5zZXJ0LWNvbHVtbnMtcmlnaHQnXG59XG4iXX0=
@@ -51,8 +51,8 @@ export class TheTableToolbarItemComponent extends TheBaseToolbarItem {
51
51
  return this.tableSelectRef;
52
52
  }
53
53
  }
54
- TheTableToolbarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TheTableToolbarItemComponent, deps: [{ token: i1.ThyPopover }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component });
55
- TheTableToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: TheTableToolbarItemComponent, selector: "the-table-toolbar-item", host: { classAttribute: "the-toolbar-dropdown-container" }, usesInheritance: true, ngImport: i0, template: `
54
+ TheTableToolbarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TheTableToolbarItemComponent, deps: [{ token: i1.ThyPopover }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component });
55
+ TheTableToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: TheTableToolbarItemComponent, selector: "the-table-toolbar-item", host: { classAttribute: "the-toolbar-dropdown-container" }, usesInheritance: true, ngImport: i0, template: `
56
56
  <a
57
57
  href="javascript:;"
58
58
  class="link-with-down"
@@ -67,7 +67,7 @@ TheTableToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
67
67
  <thy-icon class="link-down-icon font-size-sm text-desc ml-1" thyIconName="caret-down"> </thy-icon>
68
68
  </a>
69
69
  `, isInline: true, dependencies: [{ kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i4.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }] });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TheTableToolbarItemComponent, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TheTableToolbarItemComponent, decorators: [{
71
71
  type: Component,
72
72
  args: [{
73
73
  selector: 'the-table-toolbar-item',
@@ -1,4 +1,6 @@
1
- import { IS_SAFARI } from "slate-angular";
1
+ import { IS_SAFARI } from 'slate-angular';
2
+ import { TheMode } from '../../../interfaces';
3
+ import { TABLE_NUMBER_COLUMN, TableOptions } from '../table.types';
2
4
  /**
3
5
  * 获取标题行网格列宽值
4
6
  * @param editor
@@ -8,7 +10,9 @@ import { IS_SAFARI } from "slate-angular";
8
10
  */
9
11
  export const getGridColumns = (headerRow, cellsWidth) => {
10
12
  let result = '';
11
- headerRow.childNodes.forEach((node, i) => {
13
+ Array.from(headerRow.childNodes)
14
+ .filter((n) => n.nodeType === 1)
15
+ .forEach((node, i) => {
12
16
  const col = node.getAttribute('colspan');
13
17
  const display = node.style.display;
14
18
  if (display === 'none') {
@@ -30,7 +34,9 @@ export const getGridColumns = (headerRow, cellsWidth) => {
30
34
  };
31
35
  export const getColumnsWidth = (cellRow, isColgroup = false) => {
32
36
  const result = [];
33
- cellRow.childNodes.forEach((item) => {
37
+ Array.from(cellRow.childNodes)
38
+ .filter((n) => n.nodeType === 1)
39
+ .forEach((item) => {
34
40
  if (isColgroup && IS_SAFARI) {
35
41
  result.push(item.offsetWidth);
36
42
  return;
@@ -41,4 +47,52 @@ export const getColumnsWidth = (cellRow, isColgroup = false) => {
41
47
  });
42
48
  return result;
43
49
  };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWdyaWQtY29sdW1ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3V0aWxzL2dldC1ncmlkLWNvbHVtbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFzQixFQUFFLFVBQW9CLEVBQVUsRUFBRTtJQUNuRixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFpQixFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELElBQUksR0FBRyxFQUFFO1lBQ0wsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyQyxLQUFLLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQzNCO2FBQU07WUFDSCxNQUFNLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNuQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBb0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFDeEUsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFO1FBQzdDLElBQUksVUFBVSxJQUFJLFNBQVMsRUFBRTtZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJU19TQUZBUkkgfSBmcm9tIFwic2xhdGUtYW5ndWxhclwiO1xuXG4vKipcbiAqIOiOt+WPluagh+mimOihjOe9keagvOWIl+WuveWAvFxuICogQHBhcmFtIGVkaXRvclxuICogQHBhcmFtIGhlYWRlclJvdyDmoIfpopjooYxcbiAqIEBwYXJhbSBjZWxsc1dpZHRoXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEdyaWRDb2x1bW5zID0gKGhlYWRlclJvdzogSFRNTEVsZW1lbnQsIGNlbGxzV2lkdGg6IG51bWJlcltdKTogc3RyaW5nID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgaGVhZGVyUm93LmNoaWxkTm9kZXMuZm9yRWFjaCgobm9kZTogSFRNTEVsZW1lbnQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgY29sID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKTtcbiAgICAgICAgY29uc3QgZGlzcGxheSA9IG5vZGUuc3R5bGUuZGlzcGxheTtcbiAgICAgICAgaWYgKGRpc3BsYXkgPT09ICdub25lJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbFNwYW4gPSBOdW1iZXIoY29sKSA/PyAxO1xuICAgICAgICAgICAgbGV0IHdpZHRoID0gMDtcbiAgICAgICAgICAgIEFycmF5LmZyb20oeyBsZW5ndGg6IGNvbFNwYW4gfSwgKF8sIGopID0+IHtcbiAgICAgICAgICAgICAgICB3aWR0aCArPSBjZWxsc1dpZHRoW2kgKyBqXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0ICs9IHdpZHRoICsgJ3B4ICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gY2VsbHNXaWR0aFtpXSArICdweCAnO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb2x1bW5zV2lkdGggPSAoY2VsbFJvdzogSFRNTEVsZW1lbnQsIGlzQ29sZ3JvdXAgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGNlbGxSb3cuY2hpbGROb2Rlcy5mb3JFYWNoKChpdGVtOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoaXNDb2xncm91cCAmJiBJU19TQUZBUkkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0ub2Zmc2V0V2lkdGgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==
50
+ /**
51
+ * 计算表格列宽
52
+ * 1. 编辑模式下,返回原始列宽
53
+ * 2. 预览模式下,返回基于当前表格宽度计算的列宽
54
+ * a. 打印模式下,按照原宽度比例基于当前表格宽度计算列宽
55
+ * b. 非打印模式下计算
56
+ * @param isReadonly
57
+ * @param element
58
+ * @param tableWidth
59
+ * @param mode
60
+ * @returns number[]
61
+ */
62
+ export const calcColumnGroups = (isReadonly, element, tableWidth, mode) => {
63
+ const columns = element?.columns;
64
+ if (isReadonly) {
65
+ const isPrint = mode === TheMode.print;
66
+ const numberedColumnWidth = element.options?.numberedColumn ? TABLE_NUMBER_COLUMN : 0;
67
+ if (columns) {
68
+ const opts = new TableOptions();
69
+ const columnsWidth = columns.reduce((a, b) => a + b.width, 0);
70
+ const cellsWidthRatio = columns.map(column => {
71
+ return isPrint ? Math.floor((column.width / columnsWidth) * 100) / 100 : column.width / columnsWidth;
72
+ });
73
+ const newColumns = cellsWidthRatio.map(item => {
74
+ let cellWidth = opts.minWidthPx;
75
+ if (isPrint) {
76
+ // 按照 DPI 96 的 A4 纸宽度是 794, 打印时左右 80px 的边距,所以这里取 794 - 80 * 2 = 634
77
+ // 如果存在序号列,还需要在 634 基础上减去序号列的宽度,剩下的才是内容区域的宽度
78
+ // 为什么减 1, 因为这个宽度是内容区域宽度,但 td 右侧还有一个边框,所以减去 1
79
+ const newTableWidth = 634 - numberedColumnWidth;
80
+ cellWidth = parseInt(`${item * newTableWidth}`) - 1;
81
+ }
82
+ else {
83
+ // 总列宽大于当前表格宽度时,按照设置时的总列宽计算
84
+ const newTableWidth = tableWidth - numberedColumnWidth;
85
+ const columnTotalWidth = columnsWidth > tableWidth ? columnsWidth : newTableWidth;
86
+ cellWidth = item * columnTotalWidth;
87
+ }
88
+ return { width: cellWidth < opts.minWidthPx ? opts.minWidthPx : cellWidth };
89
+ });
90
+ return newColumns;
91
+ }
92
+ return [];
93
+ }
94
+ else {
95
+ return columns;
96
+ }
97
+ };
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWdyaWQtY29sdW1ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3V0aWxzL2dldC1ncmlkLWNvbHVtbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQXNCLEVBQUUsVUFBb0IsRUFBVSxFQUFFO0lBQ25GLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7U0FDM0IsTUFBTSxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztTQUM1QyxPQUFPLENBQUMsQ0FBQyxJQUFpQixFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELElBQUksR0FBRyxFQUFFO1lBQ0wsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyQyxLQUFLLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQzNCO2FBQU07WUFDSCxNQUFNLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNuQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBb0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFDeEUsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO1NBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRTtRQUMzQixJQUFJLFVBQVUsSUFBSSxTQUFTLEVBQUU7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUIsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRDtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFVBQW1CLEVBQUUsT0FBcUIsRUFBRSxVQUFrQixFQUFFLElBQVksRUFBRSxFQUFFO0lBQzdHLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDakMsSUFBSSxVQUFVLEVBQUU7UUFDWixNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN2QyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRGLElBQUksT0FBTyxFQUFFO1lBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDekMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7WUFDekcsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNoQyxJQUFJLE9BQU8sRUFBRTtvQkFDVCxtRUFBbUU7b0JBQ25FLDRDQUE0QztvQkFDNUMsNkNBQTZDO29CQUM3QyxNQUFNLGFBQWEsR0FBRyxHQUFHLEdBQUcsbUJBQW1CLENBQUM7b0JBQ2hELFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLEdBQUcsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3ZEO3FCQUFNO29CQUNILDJCQUEyQjtvQkFDM0IsTUFBTSxhQUFhLEdBQUcsVUFBVSxHQUFHLG1CQUFtQixDQUFDO29CQUN2RCxNQUFNLGdCQUFnQixHQUFHLFlBQVksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO29CQUNsRixTQUFTLEdBQUcsSUFBSSxHQUFHLGdCQUFnQixDQUFDO2lCQUN2QztnQkFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sVUFBVSxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxFQUFFLENBQUM7S0FDYjtTQUFNO1FBQ0gsT0FBTyxPQUFPLENBQUM7S0FDbEI7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJU19TQUZBUkkgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRhYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBUaGVNb2RlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUQUJMRV9OVU1CRVJfQ09MVU1OLCBUYWJsZU9wdGlvbnMgfSBmcm9tICcuLi90YWJsZS50eXBlcyc7XG5cbi8qKlxuICog6I635Y+W5qCH6aKY6KGM572R5qC85YiX5a695YC8XG4gKiBAcGFyYW0gZWRpdG9yXG4gKiBAcGFyYW0gaGVhZGVyUm93IOagh+mimOihjFxuICogQHBhcmFtIGNlbGxzV2lkdGhcbiAqIEByZXR1cm5zIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgZ2V0R3JpZENvbHVtbnMgPSAoaGVhZGVyUm93OiBIVE1MRWxlbWVudCwgY2VsbHNXaWR0aDogbnVtYmVyW10pOiBzdHJpbmcgPT4ge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBBcnJheS5mcm9tKGhlYWRlclJvdy5jaGlsZE5vZGVzKVxuICAgICAgICAuZmlsdGVyKChuOiBIVE1MRWxlbWVudCkgPT4gbi5ub2RlVHlwZSA9PT0gMSlcbiAgICAgICAgLmZvckVhY2goKG5vZGU6IEhUTUxFbGVtZW50LCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2wgPSBub2RlLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpO1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheSA9IG5vZGUuc3R5bGUuZGlzcGxheTtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sU3BhbiA9IE51bWJlcihjb2wpID8/IDE7XG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gMDtcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb2xTcGFuIH0sIChfLCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoICs9IGNlbGxzV2lkdGhbaSArIGpdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aWR0aCArICdweCAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gY2VsbHNXaWR0aFtpXSArICdweCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbHVtbnNXaWR0aCA9IChjZWxsUm93OiBIVE1MRWxlbWVudCwgaXNDb2xncm91cCA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgQXJyYXkuZnJvbShjZWxsUm93LmNoaWxkTm9kZXMpXG4gICAgICAgIC5maWx0ZXIoKG46IEhUTUxFbGVtZW50KSA9PiBuLm5vZGVUeXBlID09PSAxKVxuICAgICAgICAuZm9yRWFjaCgoaXRlbTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0NvbGdyb3VwICYmIElTX1NBRkFSSSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0ub2Zmc2V0V2lkdGgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiDorqHnrpfooajmoLzliJflrr1cbiAqIDEuIOe8lui+keaooeW8j+S4i++8jOi/lOWbnuWOn+Wni+WIl+WuvVxuICogMi4g6aKE6KeI5qih5byP5LiL77yM6L+U5Zue5Z+65LqO5b2T5YmN6KGo5qC85a695bqm6K6h566X55qE5YiX5a69XG4gKiAgICBhLiDmiZPljbDmqKHlvI/kuIvvvIzmjInnhafljp/lrr3luqbmr5Tkvovln7rkuo7lvZPliY3ooajmoLzlrr3luqborqHnrpfliJflrr1cbiAqICAgIGIuIOmdnuaJk+WNsOaooeW8j+S4i+iuoeeul1xuICogQHBhcmFtIGlzUmVhZG9ubHlcbiAqIEBwYXJhbSBlbGVtZW50XG4gKiBAcGFyYW0gdGFibGVXaWR0aFxuICogQHBhcmFtIG1vZGVcbiAqIEByZXR1cm5zIG51bWJlcltdXG4gKi9cbmV4cG9ydCBjb25zdCBjYWxjQ29sdW1uR3JvdXBzID0gKGlzUmVhZG9ubHk6IGJvb2xlYW4sIGVsZW1lbnQ6IFRhYmxlRWxlbWVudCwgdGFibGVXaWR0aDogbnVtYmVyLCBtb2RlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBjb2x1bW5zID0gZWxlbWVudD8uY29sdW1ucztcbiAgICBpZiAoaXNSZWFkb25seSkge1xuICAgICAgICBjb25zdCBpc1ByaW50ID0gbW9kZSA9PT0gVGhlTW9kZS5wcmludDtcbiAgICAgICAgY29uc3QgbnVtYmVyZWRDb2x1bW5XaWR0aCA9IGVsZW1lbnQub3B0aW9ucz8ubnVtYmVyZWRDb2x1bW4gPyBUQUJMRV9OVU1CRVJfQ09MVU1OIDogMDtcblxuICAgICAgICBpZiAoY29sdW1ucykge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9IG5ldyBUYWJsZU9wdGlvbnMoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnNXaWR0aCA9IGNvbHVtbnMucmVkdWNlKChhLCBiKSA9PiBhICsgYi53aWR0aCwgMCk7XG4gICAgICAgICAgICBjb25zdCBjZWxsc1dpZHRoUmF0aW8gPSBjb2x1bW5zLm1hcChjb2x1bW4gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc1ByaW50ID8gTWF0aC5mbG9vcigoY29sdW1uLndpZHRoIC8gY29sdW1uc1dpZHRoKSAqIDEwMCkgLyAxMDAgOiBjb2x1bW4ud2lkdGggLyBjb2x1bW5zV2lkdGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBjZWxsc1dpZHRoUmF0aW8ubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjZWxsV2lkdGggPSBvcHRzLm1pbldpZHRoUHg7XG4gICAgICAgICAgICAgICAgaWYgKGlzUHJpbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5oyJ54WnIERQSSA5NiDnmoQgQTQg57q45a695bqm5pivIDc5NCwg5omT5Y2w5pe25bem5Y+zIDgwcHgg55qE6L656Led77yM5omA5Lul6L+Z6YeM5Y+WIDc5NCAtIDgwICogMiA9IDYzNFxuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzlrZjlnKjluo/lj7fliJfvvIzov5jpnIDopoHlnKggNjM0IOWfuuehgOS4iuWHj+WOu+W6j+WPt+WIl+eahOWuveW6pu+8jOWJqeS4i+eahOaJjeaYr+WGheWuueWMuuWfn+eahOWuveW6plxuICAgICAgICAgICAgICAgICAgICAvLyDkuLrku4DkuYjlh48gMe+8jCDlm6DkuLrov5nkuKrlrr3luqbmmK/lhoXlrrnljLrln5/lrr3luqbvvIzkvYYgdGQg5Y+z5L6n6L+Y5pyJ5LiA5Liq6L655qGG77yM5omA5Lul5YeP5Y67IDFcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFibGVXaWR0aCA9IDYzNCAtIG51bWJlcmVkQ29sdW1uV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNlbGxXaWR0aCA9IHBhcnNlSW50KGAke2l0ZW0gKiBuZXdUYWJsZVdpZHRofWApIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyDmgLvliJflrr3lpKfkuo7lvZPliY3ooajmoLzlrr3luqbml7bvvIzmjInnhaforr7nva7ml7bnmoTmgLvliJflrr3orqHnrpdcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFibGVXaWR0aCA9IHRhYmxlV2lkdGggLSBudW1iZXJlZENvbHVtbldpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5Ub3RhbFdpZHRoID0gY29sdW1uc1dpZHRoID4gdGFibGVXaWR0aCA/IGNvbHVtbnNXaWR0aCA6IG5ld1RhYmxlV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNlbGxXaWR0aCA9IGl0ZW0gKiBjb2x1bW5Ub3RhbFdpZHRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyB3aWR0aDogY2VsbFdpZHRoIDwgb3B0cy5taW5XaWR0aFB4ID8gb3B0cy5taW5XaWR0aFB4IDogY2VsbFdpZHRoIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXdDb2x1bW5zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9XG59O1xuIl19
@@ -0,0 +1,14 @@
1
+ /**
2
+ * compatible with old data
3
+ * @returns
4
+ */
5
+ export function isHeaderRow(element) {
6
+ if (element?.options?.headerRow) {
7
+ return true;
8
+ }
9
+ // compat old data
10
+ if (element?.children[0].header) {
11
+ return true;
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaGVhZGVyLXJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3RhYmxlL3V0aWxzL2lzLWhlYWRlci1yb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFxQjtJQUM3QyxJQUFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxrQkFBa0I7SUFDbEIsSUFBSSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtRQUM3QixPQUFPLElBQUksQ0FBQztLQUNmO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10eXBlcyc7XG5cbi8qKlxuICogY29tcGF0aWJsZSB3aXRoIG9sZCBkYXRhXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIZWFkZXJSb3coZWxlbWVudDogVGFibGVFbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQ/Lm9wdGlvbnM/LmhlYWRlclJvdykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gY29tcGF0IG9sZCBkYXRhXG4gICAgaWYgKGVsZW1lbnQ/LmNoaWxkcmVuWzBdLmhlYWRlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iXX0=
@@ -1,22 +1,22 @@
1
- import { reSelection } from '../../../utils/refocus';
2
1
  import { TableEditor } from '../table.editor';
3
2
  import { TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../constants';
3
+ import { THE_EDITOR_PREVIOUS_SELECTION } from '../../../utils';
4
4
  export const setSelectedCellsBackgroundColor = (editor, color, tableStore) => {
5
5
  // 点击自定义颜色面板输入框设置颜色值时,会丢失焦点和选区(目前无法做到焦点同时存在于编辑器和输入框)
6
+ let location;
6
7
  if (!editor.selection) {
7
- reSelection(editor);
8
+ const { rangeRef } = THE_EDITOR_PREVIOUS_SELECTION.get(editor);
9
+ location = rangeRef.current.anchor;
8
10
  }
9
- if (editor.selection) {
10
- const isHeader = TableEditor.isActiveHeader(editor);
11
- if (color === 'transparent') {
12
- color = null;
13
- }
14
- if ((color === TableHeaderBackgroundColor && isHeader) || (color === SpecialBackgroundColor && !isHeader)) {
15
- tableStore.setSelectedCellsBackgroundColor(null);
16
- }
17
- else {
18
- tableStore.setSelectedCellsBackgroundColor(color);
19
- }
11
+ const isHeader = TableEditor.isActiveHeader(editor, location);
12
+ if (color === 'transparent') {
13
+ color = null;
14
+ }
15
+ if ((color === TableHeaderBackgroundColor && isHeader) || (color === SpecialBackgroundColor && !isHeader)) {
16
+ tableStore.setSelectedCellsBackgroundColor(null);
17
+ }
18
+ else {
19
+ tableStore.setSelectedCellsBackgroundColor(color);
20
20
  }
21
21
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWNlbGxzLWJhY2tncm91bmQtY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS91dGlscy9zZXQtY2VsbHMtYmFja2dyb3VuZC1jb2xvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsTUFBaUIsRUFBRSxLQUFhLEVBQUUsVUFBc0IsRUFBRSxFQUFFO0lBQ3hHLG9EQUFvRDtJQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNuQixXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdkI7SUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDbEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssS0FBSyxhQUFhLEVBQUU7WUFDekIsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQTBCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssc0JBQXNCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2RyxVQUFVLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNILFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDtLQUNKO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWZvY3VzJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi90YWJsZS5zdG9yZSc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4uL3RhYmxlLmVkaXRvcic7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yLCBTcGVjaWFsQmFja2dyb3VuZENvbG9yIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IgPSAoZWRpdG9yOiBUaGVFZGl0b3IsIGNvbG9yOiBzdHJpbmcsIHRhYmxlU3RvcmU6IFRhYmxlU3RvcmUpID0+IHtcbiAgICAvLyDngrnlh7voh6rlrprkuYnpopzoibLpnaLmnb/ovpPlhaXmoYborr7nva7popzoibLlgLzml7bvvIzkvJrkuKLlpLHnhKbngrnlkozpgInljLrvvIjnm67liY3ml6Dms5XlgZrliLDnhKbngrnlkIzml7blrZjlnKjkuo7nvJbovpHlmajlkozovpPlhaXmoYbvvIlcbiAgICBpZiAoIWVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgcmVTZWxlY3Rpb24oZWRpdG9yKTtcbiAgICB9XG4gICAgaWYgKGVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcihlZGl0b3IpO1xuICAgICAgICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHtcbiAgICAgICAgICAgIGNvbG9yID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGNvbG9yID09PSBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciAmJiBpc0hlYWRlcikgfHwgKGNvbG9yID09PSBTcGVjaWFsQmFja2dyb3VuZENvbG9yICYmICFpc0hlYWRlcikpIHtcbiAgICAgICAgICAgIHRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihjb2xvcik7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWNlbGxzLWJhY2tncm91bmQtY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS91dGlscy9zZXQtY2VsbHMtYmFja2dyb3VuZC1jb2xvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxNQUFpQixFQUFFLEtBQWEsRUFBRSxVQUFzQixFQUFFLEVBQUU7SUFDeEcsb0RBQW9EO0lBQ3BELElBQUksUUFBZSxDQUFDO0lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ25CLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ3RDO0lBRUQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUQsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFO1FBQ3pCLEtBQUssR0FBRyxJQUFJLENBQUM7S0FDaEI7SUFDRCxJQUFJLENBQUMsS0FBSyxLQUFLLDBCQUEwQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLHNCQUFzQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDdkcsVUFBVSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3BEO1NBQU07UUFDSCxVQUFVLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDckQ7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgVGhlRWRpdG9yIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciwgU3BlY2lhbEJhY2tncm91bmRDb2xvciB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFZGl0b3IsIFBvaW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT04gfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBzZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yID0gKGVkaXRvcjogVGhlRWRpdG9yLCBjb2xvcjogc3RyaW5nLCB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlKSA9PiB7XG4gICAgLy8g54K55Ye76Ieq5a6a5LmJ6aKc6Imy6Z2i5p2/6L6T5YWl5qGG6K6+572u6aKc6Imy5YC85pe277yM5Lya5Lii5aSx54Sm54K55ZKM6YCJ5Yy677yI55uu5YmN5peg5rOV5YGa5Yiw54Sm54K55ZCM5pe25a2Y5Zyo5LqO57yW6L6R5Zmo5ZKM6L6T5YWl5qGG77yJXG4gICAgbGV0IGxvY2F0aW9uOiBQb2ludDtcbiAgICBpZiAoIWVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgeyByYW5nZVJlZiB9ID0gVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT04uZ2V0KGVkaXRvcik7XG4gICAgICAgIGxvY2F0aW9uID0gcmFuZ2VSZWYuY3VycmVudC5hbmNob3I7XG4gICAgfVxuXG4gICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcihlZGl0b3IsIGxvY2F0aW9uKTtcbiAgICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHtcbiAgICAgICAgY29sb3IgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoKGNvbG9yID09PSBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciAmJiBpc0hlYWRlcikgfHwgKGNvbG9yID09PSBTcGVjaWFsQmFja2dyb3VuZENvbG9yICYmICFpc0hlYWRlcikpIHtcbiAgICAgICAgdGFibGVTdG9yZS5zZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihjb2xvcik7XG4gICAgfVxufTtcbiJdfQ==
@@ -32,14 +32,14 @@ export class TheTodoItemComponent extends TheBaseElementComponent {
32
32
  TheTransforms.setNode(this.editor, { checked }, this.element);
33
33
  }
34
34
  }
35
- TheTodoItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TheTodoItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.TheContextService }], target: i0.ɵɵFactoryTarget.Component });
36
- TheTodoItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: TheTodoItemComponent, selector: "div[theTodoItem]", host: { properties: { "class.the-check-item": "this.checkItemClass", "class.the-todo-item-selectable": "this.checkItemSelectable", "attr.the-level": "this.level" } }, usesInheritance: true, ngImport: i0, template: `
35
+ TheTodoItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TheTodoItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.TheContextService }], target: i0.ɵɵFactoryTarget.Component });
36
+ TheTodoItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: TheTodoItemComponent, selector: "div[theTodoItem]", host: { properties: { "class.the-check-item": "this.checkItemClass", "class.the-todo-item-selectable": "this.checkItemSelectable", "attr.the-level": "this.level" } }, usesInheritance: true, ngImport: i0, template: `
37
37
  <span contenteditable="false" class="todo-item-status">
38
38
  <input #checkbox type="checkbox" [checked]="element.checked" (click)="onCheck(checkbox.checked)" />
39
39
  </span>
40
40
  <span><slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children></span>
41
41
  `, isInline: true, dependencies: [{ kind: "component", type: i2.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TheTodoItemComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TheTodoItemComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{
45
45
  selector: 'div[theTodoItem]',
@@ -65,9 +65,9 @@ export class TheVerticalToolbarItemComponent extends TheBaseToolbarDropdown {
65
65
  }
66
66
  }
67
67
  }
68
- TheVerticalToolbarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TheVerticalToolbarItemComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
69
- TheVerticalToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: TheVerticalToolbarItemComponent, selector: "the-toolbar-vertical-align-item", host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.hide": "!active" }, classAttribute: "the-toolbar-dropdown-container verticalAlign" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["VerticalAlignItems"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n href=\"javascript:;\"\n class=\"icon-mode link-with-down\"\n thyAction\n [thyActionIcon]=\"activeMenuItem?.icon\"\n [thyActionActive]=\"isOpened\"\n [thyTooltip]=\"toolbarItem?.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #VerticalAlignItems>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of toolbarItem?.includes\">\n <a\n href=\"javascript:;\"\n thyDropdownMenuItem\n [thyDropdownMenuItemActive]=\"menu.key === activeMenuItem?.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <thy-icon *ngIf=\"menu.icon\" thyDropdownMenuItemIcon [thyIconName]=\"menu?.icon\"></thy-icon>\n <span thyDropdownMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i4.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }] });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: TheVerticalToolbarItemComponent, decorators: [{
68
+ TheVerticalToolbarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TheVerticalToolbarItemComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
69
+ TheVerticalToolbarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: TheVerticalToolbarItemComponent, selector: "the-toolbar-vertical-align-item", host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" }, properties: { "class.hide": "!active" }, classAttribute: "the-toolbar-dropdown-container verticalAlign" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["VerticalAlignItems"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<a\n href=\"javascript:;\"\n class=\"icon-mode link-with-down\"\n thyAction\n [thyActionIcon]=\"activeMenuItem?.icon\"\n [thyActionActive]=\"isOpened\"\n [thyTooltip]=\"toolbarItem?.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #VerticalAlignItems>\n <div class=\"thy-dropdown-menu\">\n <ng-container *ngFor=\"let menu of toolbarItem?.includes\">\n <a\n href=\"javascript:;\"\n thyDropdownMenuItem\n [thyDropdownMenuItemActive]=\"menu.key === activeMenuItem?.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <thy-icon *ngIf=\"menu.icon\" thyDropdownMenuItemIcon [thyIconName]=\"menu?.icon\"></thy-icon>\n <span thyDropdownMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i4.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i5.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i6.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i6.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }, { kind: "directive", type: i6.ThyDropdownMenuItemActiveDirective, selector: "[thyDropdownMenuItemActive]", inputs: ["thyDropdownMenuItemActive"] }] });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: TheVerticalToolbarItemComponent, decorators: [{
71
71
  type: Component,
72
72
  args: [{ selector: 'the-toolbar-vertical-align-item', host: {
73
73
  class: 'the-toolbar-dropdown-container verticalAlign',