@plait/draw 0.59.0 → 0.62.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/constants/geometry.d.ts +115 -7
  2. package/constants/index.d.ts +2 -1
  3. package/constants/line.d.ts +1 -0
  4. package/constants/pointer.d.ts +2 -2
  5. package/constants/swimlane.d.ts +21 -0
  6. package/constants/text.d.ts +1 -0
  7. package/engines/uml/activity-class.d.ts +2 -0
  8. package/engines/uml/assembly.d.ts +2 -0
  9. package/engines/uml/component-box.d.ts +2 -0
  10. package/engines/uml/component.d.ts +2 -0
  11. package/engines/uml/deletion.d.ts +2 -0
  12. package/engines/uml/note.d.ts +2 -0
  13. package/engines/uml/provided-interface.d.ts +2 -0
  14. package/engines/uml/required-interface.d.ts +2 -0
  15. package/engines/uml/template.d.ts +2 -0
  16. package/esm2022/constants/geometry.mjs +87 -15
  17. package/esm2022/constants/index.mjs +3 -2
  18. package/esm2022/constants/line.mjs +2 -1
  19. package/esm2022/constants/pointer.mjs +3 -3
  20. package/esm2022/constants/swimlane.mjs +25 -0
  21. package/esm2022/constants/text.mjs +2 -0
  22. package/esm2022/engines/index.mjs +27 -2
  23. package/esm2022/engines/table/table.mjs +10 -3
  24. package/esm2022/engines/uml/activity-class.mjs +47 -0
  25. package/esm2022/engines/uml/assembly.mjs +56 -0
  26. package/esm2022/engines/uml/component-box.mjs +61 -0
  27. package/esm2022/engines/uml/component.mjs +72 -0
  28. package/esm2022/engines/uml/deletion.mjs +31 -0
  29. package/esm2022/engines/uml/note.mjs +58 -0
  30. package/esm2022/engines/uml/provided-interface.mjs +47 -0
  31. package/esm2022/engines/uml/required-interface.mjs +36 -0
  32. package/esm2022/engines/uml/template.mjs +47 -0
  33. package/esm2022/generators/single-text.generator.mjs +3 -3
  34. package/esm2022/generators/table.generator.mjs +1 -1
  35. package/esm2022/generators/text.generator.mjs +10 -13
  36. package/esm2022/geometry.component.mjs +12 -14
  37. package/esm2022/image.component.mjs +6 -8
  38. package/esm2022/interfaces/geometry.mjs +17 -10
  39. package/esm2022/interfaces/index.mjs +19 -9
  40. package/esm2022/interfaces/swimlane.mjs +13 -0
  41. package/esm2022/interfaces/table.mjs +5 -1
  42. package/esm2022/line.component.mjs +12 -13
  43. package/esm2022/plugins/with-draw-fragment.mjs +6 -2
  44. package/esm2022/plugins/with-geometry-create.mjs +16 -13
  45. package/esm2022/plugins/with-line-text.mjs +7 -8
  46. package/esm2022/plugins/with-swimlane-create.mjs +4 -4
  47. package/esm2022/plugins/with-swimlane.mjs +21 -2
  48. package/esm2022/plugins/with-table-resize.mjs +6 -5
  49. package/esm2022/plugins/with-table.mjs +28 -10
  50. package/esm2022/table.component.mjs +31 -12
  51. package/esm2022/transforms/geometry-text.mjs +8 -6
  52. package/esm2022/transforms/image.mjs +3 -3
  53. package/esm2022/transforms/index.mjs +5 -3
  54. package/esm2022/transforms/line.mjs +1 -1
  55. package/esm2022/transforms/multi-text-geometry-text.mjs +1 -1
  56. package/esm2022/transforms/swimlane.mjs +142 -47
  57. package/esm2022/utils/clipboard.mjs +27 -21
  58. package/esm2022/utils/common.mjs +6 -7
  59. package/esm2022/utils/geometry.mjs +16 -10
  60. package/esm2022/utils/hit.mjs +2 -2
  61. package/esm2022/utils/index.mjs +5 -1
  62. package/esm2022/utils/multi-text-geometry.mjs +4 -4
  63. package/esm2022/utils/selected.mjs +3 -8
  64. package/esm2022/utils/swimlane.mjs +73 -78
  65. package/esm2022/utils/table-selected.mjs +26 -0
  66. package/esm2022/utils/table.mjs +26 -1
  67. package/esm2022/utils/uml.mjs +88 -0
  68. package/fesm2022/plait-draw.mjs +1215 -367
  69. package/fesm2022/plait-draw.mjs.map +1 -1
  70. package/generators/single-text.generator.d.ts +3 -4
  71. package/generators/table.generator.d.ts +2 -2
  72. package/generators/text.generator.d.ts +3 -6
  73. package/image.component.d.ts +0 -1
  74. package/interfaces/geometry.d.ts +25 -24
  75. package/interfaces/index.d.ts +11 -6
  76. package/interfaces/swimlane.d.ts +22 -0
  77. package/interfaces/table.d.ts +13 -4
  78. package/line.component.d.ts +1 -2
  79. package/package.json +1 -3
  80. package/plugins/with-geometry-create.d.ts +1 -1
  81. package/plugins/with-swimlane-create.d.ts +1 -1
  82. package/plugins/with-swimlane.d.ts +3 -2
  83. package/plugins/with-table-resize.d.ts +1 -1
  84. package/plugins/with-table.d.ts +1 -4
  85. package/transforms/geometry.d.ts +2 -2
  86. package/transforms/index.d.ts +9 -7
  87. package/transforms/swimlane.d.ts +8 -5
  88. package/utils/clipboard.d.ts +4 -3
  89. package/utils/common.d.ts +5 -5
  90. package/utils/geometry.d.ts +43 -2
  91. package/utils/index.d.ts +4 -0
  92. package/utils/multi-text-geometry.d.ts +1 -1
  93. package/utils/selected.d.ts +2 -4
  94. package/utils/shape.d.ts +1 -1
  95. package/utils/swimlane.d.ts +11 -26
  96. package/utils/table-selected.d.ts +9 -0
  97. package/utils/table.d.ts +10 -9
  98. package/utils/uml.d.ts +3 -0
  99. package/constants/draw.d.ts +0 -1
  100. package/esm2022/constants/draw.mjs +0 -2
@@ -1,89 +1,157 @@
1
1
  import { idCreator, PlaitBoard, RectangleClient, Transforms } from '@plait/core';
2
- import { PlaitDrawElement, SwimlaneSymbols } from '../interfaces';
2
+ import { PlaitDrawElement } from '../interfaces';
3
3
  import { getCellWithPoints } from '../utils/table';
4
- export const addSwimlaneRow = (board, swimlane, index) => {
5
- if (PlaitDrawElement.isSwimlane(swimlane) && swimlane.shape === SwimlaneSymbols.swimlaneHorizontal) {
4
+ import { getSwimlaneCount } from '../utils/swimlane';
5
+ import { getSelectedCells } from '../utils';
6
+ import { Alignment } from '@plait/common';
7
+ export const updateSwimlaneCount = (board, swimlane, count) => {
8
+ if (count > 0 && PlaitDrawElement.isSwimlane(swimlane)) {
9
+ const currentCount = getSwimlaneCount(swimlane);
10
+ if (PlaitDrawElement.isHorizontalSwimlane(swimlane)) {
11
+ if (count > currentCount) {
12
+ addSwimlaneRow(board, swimlane, swimlane.rows.length, count - currentCount);
13
+ }
14
+ else {
15
+ const deleteIndex = swimlane.rows.length - (currentCount - count);
16
+ removeSwimlaneRow(board, swimlane, deleteIndex, currentCount - count);
17
+ }
18
+ }
19
+ if (PlaitDrawElement.isVerticalSwimlane(swimlane)) {
20
+ if (count > currentCount) {
21
+ addSwimlaneColumn(board, swimlane, swimlane.columns.length, count - currentCount);
22
+ }
23
+ else {
24
+ const deleteIndex = swimlane.columns.length - (currentCount - count);
25
+ removeSwimlaneColumn(board, swimlane, deleteIndex, currentCount - count);
26
+ }
27
+ }
28
+ }
29
+ };
30
+ export const addSwimlaneRow = (board, swimlane, index, count = 1) => {
31
+ if (PlaitDrawElement.isHorizontalSwimlane(swimlane)) {
6
32
  const newRows = [...swimlane.rows];
7
- const newRowId = idCreator();
8
- newRows.splice(index, 0, { id: newRowId });
9
- let newCells = createNewRowCells(swimlane, newRowId);
10
- newCells.shift();
11
- newCells = [...swimlane.cells, ...newCells];
33
+ const addRows = [];
34
+ for (let i = 0; i < count; i++) {
35
+ addRows.push({ id: idCreator() });
36
+ }
37
+ newRows.splice(index, 0, ...addRows);
38
+ const newCells = [...swimlane.cells];
39
+ addRows.forEach(item => {
40
+ newCells.push(...createNewSwimlaneCells(swimlane, item.id, 'column'));
41
+ });
12
42
  const lastCellPoints = getCellWithPoints(board, swimlane, swimlane.cells[swimlane.cells.length - 1].id).points;
13
43
  const lastRowHeight = RectangleClient.getRectangleByPoints(lastCellPoints).height;
14
- const newPoints = [swimlane.points[0], [swimlane.points[1][0], swimlane.points[1][1] + lastRowHeight]];
44
+ const newPoints = [swimlane.points[0], [swimlane.points[1][0], swimlane.points[1][1] + lastRowHeight * count]];
15
45
  updateSwimlane(board, swimlane, swimlane.columns, newRows, newCells, newPoints);
16
46
  }
17
47
  };
18
- export const addSwimlaneColumn = (board, swimlane, index) => {
19
- if (PlaitDrawElement.isSwimlane(swimlane) && swimlane.shape === SwimlaneSymbols.swimlaneVertical) {
48
+ export const addSwimlaneColumn = (board, swimlane, index, count = 1) => {
49
+ if (PlaitDrawElement.isVerticalSwimlane(swimlane)) {
20
50
  const newColumns = [...swimlane.columns];
21
- const newColumnId = idCreator();
22
- newColumns.splice(index, 0, { id: newColumnId });
23
- let newCells = createNewColumnCells(swimlane, newColumnId);
24
- newCells.shift();
25
- newCells = [...swimlane.cells, ...newCells];
51
+ const addColumns = [];
52
+ for (let i = 0; i < count; i++) {
53
+ addColumns.push({ id: idCreator() });
54
+ }
55
+ newColumns.splice(index, 0, ...addColumns);
56
+ const newCells = [...swimlane.cells];
57
+ addColumns.forEach(item => {
58
+ newCells.push(...createNewSwimlaneCells(swimlane, item.id, 'row'));
59
+ });
26
60
  const lastCellPoints = getCellWithPoints(board, swimlane, swimlane.cells[swimlane.cells.length - 1].id).points;
27
61
  const lastColumnWidth = RectangleClient.getRectangleByPoints(lastCellPoints).width;
28
- const newPoints = [swimlane.points[0], [swimlane.points[1][0] + lastColumnWidth, swimlane.points[1][1]]];
62
+ const newPoints = [swimlane.points[0], [swimlane.points[1][0] + lastColumnWidth * count, swimlane.points[1][1]]];
29
63
  updateSwimlane(board, swimlane, newColumns, swimlane.rows, newCells, newPoints);
30
64
  }
31
65
  };
32
- export const removeSwimlaneRow = (board, swimlane, index) => {
33
- if (PlaitDrawElement.isSwimlane(swimlane) && swimlane.shape === SwimlaneSymbols.swimlaneHorizontal) {
66
+ export const removeSwimlaneRow = (board, swimlane, index, count = 1) => {
67
+ if (PlaitDrawElement.isHorizontalSwimlane(swimlane)) {
68
+ if (count > swimlane.rows.length) {
69
+ return;
70
+ }
34
71
  const newRows = [...swimlane.rows];
35
- newRows.splice(index, 1);
72
+ newRows.splice(index, count);
36
73
  if (newRows.length === 0) {
37
74
  const path = PlaitBoard.findPath(board, swimlane);
38
75
  Transforms.removeNode(board, path);
39
76
  }
40
77
  else {
41
- const removeRow = swimlane.rows[index];
42
- const newCells = swimlane.cells.filter(item => item.rowId !== removeRow.id);
43
- let removeRowHeight = removeRow.height;
44
- if (!removeRowHeight) {
45
- const cellPoints = getCellWithPoints(board, swimlane, swimlane.cells[index].id).points;
46
- removeRowHeight = RectangleClient.getRectangleByPoints(cellPoints).height;
78
+ let newCells = [...swimlane.cells];
79
+ const removeRows = [];
80
+ for (let i = index; i < count + index; i++) {
81
+ const removeRow = swimlane.rows[i];
82
+ removeRows.push(removeRow);
83
+ newCells = newCells.filter(item => item.rowId !== removeRow.id);
47
84
  }
85
+ let removeRowHeight = 0;
86
+ removeRows.forEach(row => {
87
+ if (!row.height) {
88
+ const rowCell = swimlane.cells.find(item => item.rowId === row.id);
89
+ const cellPoints = getCellWithPoints(board, swimlane, rowCell.id).points;
90
+ removeRowHeight += RectangleClient.getRectangleByPoints(cellPoints).height;
91
+ }
92
+ else {
93
+ removeRowHeight += row.height;
94
+ }
95
+ });
48
96
  const newPoints = [swimlane.points[0], [swimlane.points[1][0], swimlane.points[1][1] - removeRowHeight]];
49
97
  updateSwimlane(board, swimlane, swimlane.columns, newRows, newCells, newPoints);
50
98
  }
51
99
  }
52
100
  };
53
- export const removeSwimlaneColumn = (board, swimlane, index) => {
54
- if (PlaitDrawElement.isSwimlane(swimlane) && swimlane.shape === SwimlaneSymbols.swimlaneVertical) {
101
+ export const removeSwimlaneColumn = (board, swimlane, index, count = 1) => {
102
+ if (PlaitDrawElement.isVerticalSwimlane(swimlane)) {
103
+ if (count > swimlane.columns.length) {
104
+ return;
105
+ }
55
106
  const newColumns = [...swimlane.columns];
56
- newColumns.splice(index, 1);
107
+ newColumns.splice(index, count);
57
108
  if (newColumns.length === 0) {
58
109
  const path = PlaitBoard.findPath(board, swimlane);
59
110
  Transforms.removeNode(board, path);
60
111
  }
61
112
  else {
62
- const removeColumn = swimlane.columns[index];
63
- const newCells = swimlane.cells.filter(item => item.columnId !== removeColumn.id);
64
- let removeColumnWidth = removeColumn.width;
65
- if (!removeColumnWidth) {
66
- const cellPoints = getCellWithPoints(board, swimlane, swimlane.cells[index].id).points;
67
- removeColumnWidth = RectangleClient.getRectangleByPoints(cellPoints).width;
113
+ let newCells = [...swimlane.cells];
114
+ const removeColumns = [];
115
+ for (let i = index; i < count + index; i++) {
116
+ const removeColumn = swimlane.columns[i];
117
+ removeColumns.push(removeColumn);
118
+ newCells = newCells.filter(item => item.columnId !== removeColumn.id);
68
119
  }
120
+ let removeColumnWidth = 0;
121
+ removeColumns.forEach(column => {
122
+ if (!column.width) {
123
+ const rowCell = swimlane.cells.find(item => item.columnId === column.id);
124
+ const cellPoints = getCellWithPoints(board, swimlane, rowCell.id).points;
125
+ removeColumnWidth += RectangleClient.getRectangleByPoints(cellPoints).width;
126
+ }
127
+ else {
128
+ removeColumnWidth += column.width;
129
+ }
130
+ });
69
131
  const newPoints = [swimlane.points[0], [swimlane.points[1][0] - removeColumnWidth, swimlane.points[1][1]]];
70
132
  updateSwimlane(board, swimlane, newColumns, swimlane.rows, newCells, newPoints);
71
133
  }
72
134
  }
73
135
  };
74
- const createNewColumnCells = (swimlane, newColumnId) => {
75
- return swimlane.rows.map(row => ({
136
+ const createNewSwimlaneCells = (swimlane, newId, type) => {
137
+ const cells = swimlane[`${type}s`].map(item => ({
76
138
  id: idCreator(),
77
- rowId: row.id,
78
- columnId: newColumnId
79
- }));
80
- };
81
- const createNewRowCells = (swimlane, newRowId) => {
82
- return swimlane.columns.map(column => ({
83
- id: idCreator(),
84
- rowId: newRowId,
85
- columnId: column.id
139
+ rowId: type === 'row' ? item.id : newId,
140
+ columnId: type === 'row' ? newId : item.id
86
141
  }));
142
+ if (swimlane.header) {
143
+ cells.shift();
144
+ }
145
+ cells[0] = {
146
+ ...cells[0],
147
+ text: {
148
+ children: [{ text: swimlane.header ? 'Lane' : 'New Swimlane' }],
149
+ align: Alignment.center,
150
+ direction: type === 'row' ? undefined : 'vertical'
151
+ },
152
+ textHeight: 20
153
+ };
154
+ return cells;
87
155
  };
88
156
  const updateSwimlane = (board, swimlane, newColumns, newRows, newCells, newPoints) => {
89
157
  const path = PlaitBoard.findPath(board, swimlane);
@@ -94,4 +162,31 @@ const updateSwimlane = (board, swimlane, newColumns, newRows, newCells, newPoint
94
162
  points: newPoints
95
163
  }, path);
96
164
  };
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL3N3aW1sYW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFTLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF1QixFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQ3hGLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDakcsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUzQyxJQUFJLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckQsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDL0csTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNsRixNQUFNLFNBQVMsR0FBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUVoSCxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDcEYsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF1QixFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQzNGLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDL0YsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxNQUFNLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVqRCxJQUFJLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0QsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDL0csTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNuRixNQUFNLFNBQVMsR0FBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsSCxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDcEYsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF1QixFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQzNGLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDakcsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUUsSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN2QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZGLGVBQWUsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQzlFLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUNsSCxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEYsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBdUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUM5RixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9GLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLElBQUksaUJBQWlCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDdkYsaUJBQWlCLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMvRSxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwSCxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEYsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBdUIsRUFBRSxXQUFtQixFQUFvQixFQUFFO0lBQzVGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLEVBQUUsRUFBRSxTQUFTLEVBQUU7UUFDZixLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDYixRQUFRLEVBQUUsV0FBVztLQUN4QixDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxRQUF1QixFQUFFLFFBQWdCLEVBQW9CLEVBQUU7SUFDdEYsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsRUFBRSxFQUFFLFNBQVMsRUFBRTtRQUNmLEtBQUssRUFBRSxRQUFRO1FBQ2YsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO0tBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FDbkIsS0FBaUIsRUFDakIsUUFBdUIsRUFDdkIsVUFBNEMsRUFDNUMsT0FBMEMsRUFDMUMsUUFBMEIsRUFDMUIsU0FBa0IsRUFDcEIsRUFBRTtJQUNBLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELFVBQVUsQ0FBQyxPQUFPLENBQ2QsS0FBSyxFQUNMO1FBQ0ksT0FBTyxFQUFFLFVBQVU7UUFDbkIsSUFBSSxFQUFFLE9BQU87UUFDYixLQUFLLEVBQUUsUUFBUTtRQUNmLE1BQU0sRUFBRSxTQUFTO0tBQ3BCLEVBQ0QsSUFBSSxDQUNQLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZENyZWF0b3IsIFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdFN3aW1sYW5lLCBTd2ltbGFuZVN5bWJvbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBsYWl0VGFibGVDZWxsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZSc7XG5pbXBvcnQgeyBnZXRDZWxsV2l0aFBvaW50cyB9IGZyb20gJy4uL3V0aWxzL3RhYmxlJztcblxuZXhwb3J0IGNvbnN0IGFkZFN3aW1sYW5lUm93ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzU3dpbWxhbmUoc3dpbWxhbmUpICYmIHN3aW1sYW5lLnNoYXBlID09PSBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVIb3Jpem9udGFsKSB7XG4gICAgICAgIGNvbnN0IG5ld1Jvd3MgPSBbLi4uc3dpbWxhbmUucm93c107XG4gICAgICAgIGNvbnN0IG5ld1Jvd0lkID0gaWRDcmVhdG9yKCk7XG4gICAgICAgIG5ld1Jvd3Muc3BsaWNlKGluZGV4LCAwLCB7IGlkOiBuZXdSb3dJZCB9KTtcblxuICAgICAgICBsZXQgbmV3Q2VsbHMgPSBjcmVhdGVOZXdSb3dDZWxscyhzd2ltbGFuZSwgbmV3Um93SWQpO1xuICAgICAgICBuZXdDZWxscy5zaGlmdCgpO1xuICAgICAgICBuZXdDZWxscyA9IFsuLi5zd2ltbGFuZS5jZWxscywgLi4ubmV3Q2VsbHNdO1xuXG4gICAgICAgIGNvbnN0IGxhc3RDZWxsUG9pbnRzID0gZ2V0Q2VsbFdpdGhQb2ludHMoYm9hcmQsIHN3aW1sYW5lLCBzd2ltbGFuZS5jZWxsc1tzd2ltbGFuZS5jZWxscy5sZW5ndGggLSAxXS5pZCkucG9pbnRzO1xuICAgICAgICBjb25zdCBsYXN0Um93SGVpZ2h0ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGxhc3RDZWxsUG9pbnRzKS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IG5ld1BvaW50czogUG9pbnRbXSA9IFtzd2ltbGFuZS5wb2ludHNbMF0sIFtzd2ltbGFuZS5wb2ludHNbMV1bMF0sIHN3aW1sYW5lLnBvaW50c1sxXVsxXSArIGxhc3RSb3dIZWlnaHRdXTtcblxuICAgICAgICB1cGRhdGVTd2ltbGFuZShib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNvbHVtbnMsIG5ld1Jvd3MsIG5ld0NlbGxzLCBuZXdQb2ludHMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTd2ltbGFuZUNvbHVtbiA9IChib2FyZDogUGxhaXRCb2FyZCwgc3dpbWxhbmU6IFBsYWl0U3dpbWxhbmUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1N3aW1sYW5lKHN3aW1sYW5lKSAmJiBzd2ltbGFuZS5zaGFwZSA9PT0gU3dpbWxhbmVTeW1ib2xzLnN3aW1sYW5lVmVydGljYWwpIHtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5zd2ltbGFuZS5jb2x1bW5zXTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uSWQgPSBpZENyZWF0b3IoKTtcbiAgICAgICAgbmV3Q29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIHsgaWQ6IG5ld0NvbHVtbklkIH0pO1xuXG4gICAgICAgIGxldCBuZXdDZWxscyA9IGNyZWF0ZU5ld0NvbHVtbkNlbGxzKHN3aW1sYW5lLCBuZXdDb2x1bW5JZCk7XG4gICAgICAgIG5ld0NlbGxzLnNoaWZ0KCk7XG4gICAgICAgIG5ld0NlbGxzID0gWy4uLnN3aW1sYW5lLmNlbGxzLCAuLi5uZXdDZWxsc107XG5cbiAgICAgICAgY29uc3QgbGFzdENlbGxQb2ludHMgPSBnZXRDZWxsV2l0aFBvaW50cyhib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNlbGxzW3N3aW1sYW5lLmNlbGxzLmxlbmd0aCAtIDFdLmlkKS5wb2ludHM7XG4gICAgICAgIGNvbnN0IGxhc3RDb2x1bW5XaWR0aCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhsYXN0Q2VsbFBvaW50cykud2lkdGg7XG4gICAgICAgIGNvbnN0IG5ld1BvaW50czogUG9pbnRbXSA9IFtzd2ltbGFuZS5wb2ludHNbMF0sIFtzd2ltbGFuZS5wb2ludHNbMV1bMF0gKyBsYXN0Q29sdW1uV2lkdGgsIHN3aW1sYW5lLnBvaW50c1sxXVsxXV1dO1xuXG4gICAgICAgIHVwZGF0ZVN3aW1sYW5lKGJvYXJkLCBzd2ltbGFuZSwgbmV3Q29sdW1ucywgc3dpbWxhbmUucm93cywgbmV3Q2VsbHMsIG5ld1BvaW50cyk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVN3aW1sYW5lUm93ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzU3dpbWxhbmUoc3dpbWxhbmUpICYmIHN3aW1sYW5lLnNoYXBlID09PSBTd2ltbGFuZVN5bWJvbHMuc3dpbWxhbmVIb3Jpem9udGFsKSB7XG4gICAgICAgIGNvbnN0IG5ld1Jvd3MgPSBbLi4uc3dpbWxhbmUucm93c107XG4gICAgICAgIG5ld1Jvd3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgaWYgKG5ld1Jvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgc3dpbWxhbmUpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlKGJvYXJkLCBwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZVJvdyA9IHN3aW1sYW5lLnJvd3NbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgbmV3Q2VsbHMgPSBzd2ltbGFuZS5jZWxscy5maWx0ZXIoaXRlbSA9PiBpdGVtLnJvd0lkICE9PSByZW1vdmVSb3cuaWQpO1xuICAgICAgICAgICAgbGV0IHJlbW92ZVJvd0hlaWdodCA9IHJlbW92ZVJvdy5oZWlnaHQ7XG4gICAgICAgICAgICBpZiAoIXJlbW92ZVJvd0hlaWdodCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxQb2ludHMgPSBnZXRDZWxsV2l0aFBvaW50cyhib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNlbGxzW2luZGV4XS5pZCkucG9pbnRzO1xuICAgICAgICAgICAgICAgIHJlbW92ZVJvd0hlaWdodCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjZWxsUG9pbnRzKS5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdQb2ludHM6IFBvaW50W10gPSBbc3dpbWxhbmUucG9pbnRzWzBdLCBbc3dpbWxhbmUucG9pbnRzWzFdWzBdLCBzd2ltbGFuZS5wb2ludHNbMV1bMV0gLSByZW1vdmVSb3dIZWlnaHRdXTtcbiAgICAgICAgICAgIHVwZGF0ZVN3aW1sYW5lKGJvYXJkLCBzd2ltbGFuZSwgc3dpbWxhbmUuY29sdW1ucywgbmV3Um93cywgbmV3Q2VsbHMsIG5ld1BvaW50cyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU3dpbWxhbmVDb2x1bW4gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN3aW1sYW5lOiBQbGFpdFN3aW1sYW5lLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNTd2ltbGFuZShzd2ltbGFuZSkgJiYgc3dpbWxhbmUuc2hhcGUgPT09IFN3aW1sYW5lU3ltYm9scy5zd2ltbGFuZVZlcnRpY2FsKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbLi4uc3dpbWxhbmUuY29sdW1uc107XG4gICAgICAgIG5ld0NvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgaWYgKG5ld0NvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgc3dpbWxhbmUpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlKGJvYXJkLCBwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZUNvbHVtbiA9IHN3aW1sYW5lLmNvbHVtbnNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgbmV3Q2VsbHMgPSBzd2ltbGFuZS5jZWxscy5maWx0ZXIoaXRlbSA9PiBpdGVtLmNvbHVtbklkICE9PSByZW1vdmVDb2x1bW4uaWQpO1xuICAgICAgICAgICAgbGV0IHJlbW92ZUNvbHVtbldpZHRoID0gcmVtb3ZlQ29sdW1uLndpZHRoO1xuICAgICAgICAgICAgaWYgKCFyZW1vdmVDb2x1bW5XaWR0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxQb2ludHMgPSBnZXRDZWxsV2l0aFBvaW50cyhib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNlbGxzW2luZGV4XS5pZCkucG9pbnRzO1xuICAgICAgICAgICAgICAgIHJlbW92ZUNvbHVtbldpZHRoID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGNlbGxQb2ludHMpLndpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV3UG9pbnRzOiBQb2ludFtdID0gW3N3aW1sYW5lLnBvaW50c1swXSwgW3N3aW1sYW5lLnBvaW50c1sxXVswXSAtIHJlbW92ZUNvbHVtbldpZHRoLCBzd2ltbGFuZS5wb2ludHNbMV1bMV1dXTtcbiAgICAgICAgICAgIHVwZGF0ZVN3aW1sYW5lKGJvYXJkLCBzd2ltbGFuZSwgbmV3Q29sdW1ucywgc3dpbWxhbmUucm93cywgbmV3Q2VsbHMsIG5ld1BvaW50cyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jb25zdCBjcmVhdGVOZXdDb2x1bW5DZWxscyA9IChzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSwgbmV3Q29sdW1uSWQ6IHN0cmluZyk6IFBsYWl0VGFibGVDZWxsW10gPT4ge1xuICAgIHJldHVybiBzd2ltbGFuZS5yb3dzLm1hcChyb3cgPT4gKHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICByb3dJZDogcm93LmlkLFxuICAgICAgICBjb2x1bW5JZDogbmV3Q29sdW1uSWRcbiAgICB9KSk7XG59O1xuXG5jb25zdCBjcmVhdGVOZXdSb3dDZWxscyA9IChzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSwgbmV3Um93SWQ6IHN0cmluZyk6IFBsYWl0VGFibGVDZWxsW10gPT4ge1xuICAgIHJldHVybiBzd2ltbGFuZS5jb2x1bW5zLm1hcChjb2x1bW4gPT4gKHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICByb3dJZDogbmV3Um93SWQsXG4gICAgICAgIGNvbHVtbklkOiBjb2x1bW4uaWRcbiAgICB9KSk7XG59O1xuXG5jb25zdCB1cGRhdGVTd2ltbGFuZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSxcbiAgICBuZXdDb2x1bW5zOiB7IGlkOiBzdHJpbmc7IHdpZHRoPzogbnVtYmVyIH1bXSxcbiAgICBuZXdSb3dzOiB7IGlkOiBzdHJpbmc7IGhlaWdodD86IG51bWJlciB9W10sXG4gICAgbmV3Q2VsbHM6IFBsYWl0VGFibGVDZWxsW10sXG4gICAgbmV3UG9pbnRzOiBQb2ludFtdXG4pID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgc3dpbWxhbmUpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbHVtbnM6IG5ld0NvbHVtbnMsXG4gICAgICAgICAgICByb3dzOiBuZXdSb3dzLFxuICAgICAgICAgICAgY2VsbHM6IG5ld0NlbGxzLFxuICAgICAgICAgICAgcG9pbnRzOiBuZXdQb2ludHNcbiAgICAgICAgfSxcbiAgICAgICAgcGF0aFxuICAgICk7XG59O1xuIl19
165
+ export const setSwimlaneFill = (board, element, fill, path) => {
166
+ const selectedCells = getSelectedCells(element);
167
+ let newCells = element.cells;
168
+ if (selectedCells?.length) {
169
+ newCells = element.cells.map(cell => {
170
+ if (selectedCells.map(item => item.id).includes(cell.id)) {
171
+ return {
172
+ ...cell,
173
+ fill
174
+ };
175
+ }
176
+ return cell;
177
+ });
178
+ }
179
+ else {
180
+ newCells = element.cells.map(cell => {
181
+ if (cell.text && cell.textHeight) {
182
+ return {
183
+ ...cell,
184
+ fill
185
+ };
186
+ }
187
+ return cell;
188
+ });
189
+ }
190
+ Transforms.setNode(board, { cells: newCells }, path);
191
+ };
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL3N3aW1sYW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVEsVUFBVSxFQUFTLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBdUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUM3RixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksS0FBSyxHQUFHLFlBQVksRUFBRSxDQUFDO2dCQUN2QixjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7WUFDaEYsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxHQUFHLEtBQUss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O0lBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaWRDcmVhdG9yLCBQYXRoLCBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBUcmFuc2Zvcm1zIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRTd2ltbGFuZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGxhaXRCYXNlVGFibGUsIFBsYWl0VGFibGVDZWxsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZSc7XG5pbXBvcnQgeyBnZXRDZWxsV2l0aFBvaW50cyB9IGZyb20gJy4uL3V0aWxzL3RhYmxlJztcbmltcG9ydCB7IGdldFN3aW1sYW5lQ291bnQgfSBmcm9tICcuLi91dGlscy9zd2ltbGFuZSc7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZENlbGxzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQWxpZ25tZW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVTd2ltbGFuZUNvdW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSwgY291bnQ6IG51bWJlcikgPT4ge1xuICAgIGlmIChjb3VudCA+IDAgJiYgUGxhaXREcmF3RWxlbWVudC5pc1N3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICBjb25zdCBjdXJyZW50Q291bnQgPSBnZXRTd2ltbGFuZUNvdW50KHN3aW1sYW5lKTtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNIb3Jpem9udGFsU3dpbWxhbmUoc3dpbWxhbmUpKSB7XG4gICAgICAgICAgICBpZiAoY291bnQgPiBjdXJyZW50Q291bnQpIHtcbiAgICAgICAgICAgICAgICBhZGRTd2ltbGFuZVJvdyhib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLnJvd3MubGVuZ3RoLCBjb3VudCAtIGN1cnJlbnRDb3VudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUluZGV4ID0gc3dpbWxhbmUucm93cy5sZW5ndGggLSAoY3VycmVudENvdW50IC0gY291bnQpO1xuICAgICAgICAgICAgICAgIHJlbW92ZVN3aW1sYW5lUm93KGJvYXJkLCBzd2ltbGFuZSwgZGVsZXRlSW5kZXgsIGN1cnJlbnRDb3VudCAtIGNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1ZlcnRpY2FsU3dpbWxhbmUoc3dpbWxhbmUpKSB7XG4gICAgICAgICAgICBpZiAoY291bnQgPiBjdXJyZW50Q291bnQpIHtcbiAgICAgICAgICAgICAgICBhZGRTd2ltbGFuZUNvbHVtbihib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNvbHVtbnMubGVuZ3RoLCBjb3VudCAtIGN1cnJlbnRDb3VudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUluZGV4ID0gc3dpbWxhbmUuY29sdW1ucy5sZW5ndGggLSAoY3VycmVudENvdW50IC0gY291bnQpO1xuICAgICAgICAgICAgICAgIHJlbW92ZVN3aW1sYW5lQ29sdW1uKGJvYXJkLCBzd2ltbGFuZSwgZGVsZXRlSW5kZXgsIGN1cnJlbnRDb3VudCAtIGNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTd2ltbGFuZVJvdyA9IChib2FyZDogUGxhaXRCb2FyZCwgc3dpbWxhbmU6IFBsYWl0U3dpbWxhbmUsIGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIgPSAxKSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNIb3Jpem9udGFsU3dpbWxhbmUoc3dpbWxhbmUpKSB7XG4gICAgICAgIGNvbnN0IG5ld1Jvd3MgPSBbLi4uc3dpbWxhbmUucm93c107XG4gICAgICAgIGNvbnN0IGFkZFJvd3M6IHsgaWQ6IHN0cmluZyB9W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRSb3dzLnB1c2goeyBpZDogaWRDcmVhdG9yKCkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3Um93cy5zcGxpY2UoaW5kZXgsIDAsIC4uLmFkZFJvd3MpO1xuICAgICAgICBjb25zdCBuZXdDZWxscyA9IFsuLi5zd2ltbGFuZS5jZWxsc107XG4gICAgICAgIGFkZFJvd3MuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIG5ld0NlbGxzLnB1c2goLi4uY3JlYXRlTmV3U3dpbWxhbmVDZWxscyhzd2ltbGFuZSwgaXRlbS5pZCwgJ2NvbHVtbicpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxhc3RDZWxsUG9pbnRzID0gZ2V0Q2VsbFdpdGhQb2ludHMoYm9hcmQsIHN3aW1sYW5lLCBzd2ltbGFuZS5jZWxsc1tzd2ltbGFuZS5jZWxscy5sZW5ndGggLSAxXS5pZCkucG9pbnRzO1xuICAgICAgICBjb25zdCBsYXN0Um93SGVpZ2h0ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGxhc3RDZWxsUG9pbnRzKS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IG5ld1BvaW50czogUG9pbnRbXSA9IFtzd2ltbGFuZS5wb2ludHNbMF0sIFtzd2ltbGFuZS5wb2ludHNbMV1bMF0sIHN3aW1sYW5lLnBvaW50c1sxXVsxXSArIGxhc3RSb3dIZWlnaHQgKiBjb3VudF1dO1xuICAgICAgICB1cGRhdGVTd2ltbGFuZShib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNvbHVtbnMsIG5ld1Jvd3MsIG5ld0NlbGxzLCBuZXdQb2ludHMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTd2ltbGFuZUNvbHVtbiA9IChib2FyZDogUGxhaXRCb2FyZCwgc3dpbWxhbmU6IFBsYWl0U3dpbWxhbmUsIGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIgPSAxKSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNWZXJ0aWNhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICBjb25zdCBuZXdDb2x1bW5zID0gWy4uLnN3aW1sYW5lLmNvbHVtbnNdO1xuICAgICAgICBjb25zdCBhZGRDb2x1bW5zOiB7IGlkOiBzdHJpbmcgfVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgYWRkQ29sdW1ucy5wdXNoKHsgaWQ6IGlkQ3JlYXRvcigpIH0pO1xuICAgICAgICB9XG4gICAgICAgIG5ld0NvbHVtbnMuc3BsaWNlKGluZGV4LCAwLCAuLi5hZGRDb2x1bW5zKTtcbiAgICAgICAgY29uc3QgbmV3Q2VsbHMgPSBbLi4uc3dpbWxhbmUuY2VsbHNdO1xuICAgICAgICBhZGRDb2x1bW5zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBuZXdDZWxscy5wdXNoKC4uLmNyZWF0ZU5ld1N3aW1sYW5lQ2VsbHMoc3dpbWxhbmUsIGl0ZW0uaWQsICdyb3cnKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBsYXN0Q2VsbFBvaW50cyA9IGdldENlbGxXaXRoUG9pbnRzKGJvYXJkLCBzd2ltbGFuZSwgc3dpbWxhbmUuY2VsbHNbc3dpbWxhbmUuY2VsbHMubGVuZ3RoIC0gMV0uaWQpLnBvaW50cztcbiAgICAgICAgY29uc3QgbGFzdENvbHVtbldpZHRoID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGxhc3RDZWxsUG9pbnRzKS53aWR0aDtcbiAgICAgICAgY29uc3QgbmV3UG9pbnRzOiBQb2ludFtdID0gW3N3aW1sYW5lLnBvaW50c1swXSwgW3N3aW1sYW5lLnBvaW50c1sxXVswXSArIGxhc3RDb2x1bW5XaWR0aCAqIGNvdW50LCBzd2ltbGFuZS5wb2ludHNbMV1bMV1dXTtcblxuICAgICAgICB1cGRhdGVTd2ltbGFuZShib2FyZCwgc3dpbWxhbmUsIG5ld0NvbHVtbnMsIHN3aW1sYW5lLnJvd3MsIG5ld0NlbGxzLCBuZXdQb2ludHMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTd2ltbGFuZVJvdyA9IChib2FyZDogUGxhaXRCb2FyZCwgc3dpbWxhbmU6IFBsYWl0U3dpbWxhbmUsIGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIgPSAxKSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNIb3Jpem9udGFsU3dpbWxhbmUoc3dpbWxhbmUpKSB7XG4gICAgICAgIGlmIChjb3VudCA+IHN3aW1sYW5lLnJvd3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Um93cyA9IFsuLi5zd2ltbGFuZS5yb3dzXTtcbiAgICAgICAgbmV3Um93cy5zcGxpY2UoaW5kZXgsIGNvdW50KTtcbiAgICAgICAgaWYgKG5ld1Jvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgc3dpbWxhbmUpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlKGJvYXJkLCBwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBuZXdDZWxscyA9IFsuLi5zd2ltbGFuZS5jZWxsc107XG4gICAgICAgICAgICBjb25zdCByZW1vdmVSb3dzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCBjb3VudCArIGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVSb3cgPSBzd2ltbGFuZS5yb3dzW2ldO1xuICAgICAgICAgICAgICAgIHJlbW92ZVJvd3MucHVzaChyZW1vdmVSb3cpO1xuICAgICAgICAgICAgICAgIG5ld0NlbGxzID0gbmV3Q2VsbHMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5yb3dJZCAhPT0gcmVtb3ZlUm93LmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZW1vdmVSb3dIZWlnaHQgPSAwO1xuICAgICAgICAgICAgcmVtb3ZlUm93cy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyb3cuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd0NlbGwgPSBzd2ltbGFuZS5jZWxscy5maW5kKGl0ZW0gPT4gaXRlbS5yb3dJZCA9PT0gcm93LmlkKSE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxQb2ludHMgPSBnZXRDZWxsV2l0aFBvaW50cyhib2FyZCwgc3dpbWxhbmUsIHJvd0NlbGwuaWQpLnBvaW50cztcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUm93SGVpZ2h0ICs9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjZWxsUG9pbnRzKS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUm93SGVpZ2h0ICs9IHJvdy5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50czogUG9pbnRbXSA9IFtzd2ltbGFuZS5wb2ludHNbMF0sIFtzd2ltbGFuZS5wb2ludHNbMV1bMF0sIHN3aW1sYW5lLnBvaW50c1sxXVsxXSAtIHJlbW92ZVJvd0hlaWdodF1dO1xuICAgICAgICAgICAgdXBkYXRlU3dpbWxhbmUoYm9hcmQsIHN3aW1sYW5lLCBzd2ltbGFuZS5jb2x1bW5zLCBuZXdSb3dzLCBuZXdDZWxscywgbmV3UG9pbnRzKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTd2ltbGFuZUNvbHVtbiA9IChib2FyZDogUGxhaXRCb2FyZCwgc3dpbWxhbmU6IFBsYWl0U3dpbWxhbmUsIGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIgPSAxKSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNWZXJ0aWNhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICBpZiAoY291bnQgPiBzd2ltbGFuZS5jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbLi4uc3dpbWxhbmUuY29sdW1uc107XG4gICAgICAgIG5ld0NvbHVtbnMuc3BsaWNlKGluZGV4LCBjb3VudCk7XG4gICAgICAgIGlmIChuZXdDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHN3aW1sYW5lKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZShib2FyZCwgcGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbmV3Q2VsbHMgPSBbLi4uc3dpbWxhbmUuY2VsbHNdO1xuICAgICAgICAgICAgY29uc3QgcmVtb3ZlQ29sdW1ucyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4OyBpIDwgY291bnQgKyBpbmRleDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlQ29sdW1uID0gc3dpbWxhbmUuY29sdW1uc1tpXTtcbiAgICAgICAgICAgICAgICByZW1vdmVDb2x1bW5zLnB1c2gocmVtb3ZlQ29sdW1uKTtcbiAgICAgICAgICAgICAgICBuZXdDZWxscyA9IG5ld0NlbGxzLmZpbHRlcihpdGVtID0+IGl0ZW0uY29sdW1uSWQgIT09IHJlbW92ZUNvbHVtbi5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcmVtb3ZlQ29sdW1uV2lkdGggPSAwO1xuICAgICAgICAgICAgcmVtb3ZlQ29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjb2x1bW4ud2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93Q2VsbCA9IHN3aW1sYW5lLmNlbGxzLmZpbmQoaXRlbSA9PiBpdGVtLmNvbHVtbklkID09PSBjb2x1bW4uaWQpITtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBvaW50cyA9IGdldENlbGxXaXRoUG9pbnRzKGJvYXJkLCBzd2ltbGFuZSwgcm93Q2VsbC5pZCkucG9pbnRzO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDb2x1bW5XaWR0aCArPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoY2VsbFBvaW50cykud2lkdGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29sdW1uV2lkdGggKz0gY29sdW1uLndpZHRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgbmV3UG9pbnRzOiBQb2ludFtdID0gW3N3aW1sYW5lLnBvaW50c1swXSwgW3N3aW1sYW5lLnBvaW50c1sxXVswXSAtIHJlbW92ZUNvbHVtbldpZHRoLCBzd2ltbGFuZS5wb2ludHNbMV1bMV1dXTtcbiAgICAgICAgICAgIHVwZGF0ZVN3aW1sYW5lKGJvYXJkLCBzd2ltbGFuZSwgbmV3Q29sdW1ucywgc3dpbWxhbmUucm93cywgbmV3Q2VsbHMsIG5ld1BvaW50cyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jb25zdCBjcmVhdGVOZXdTd2ltbGFuZUNlbGxzID0gKHN3aW1sYW5lOiBQbGFpdFN3aW1sYW5lLCBuZXdJZDogc3RyaW5nLCB0eXBlOiAncm93JyB8ICdjb2x1bW4nKTogUGxhaXRUYWJsZUNlbGxbXSA9PiB7XG4gICAgY29uc3QgY2VsbHM6IFBsYWl0VGFibGVDZWxsW10gPSBzd2ltbGFuZVtgJHt0eXBlfXNgXS5tYXAoaXRlbSA9PiAoe1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIHJvd0lkOiB0eXBlID09PSAncm93JyA/IGl0ZW0uaWQgOiBuZXdJZCxcbiAgICAgICAgY29sdW1uSWQ6IHR5cGUgPT09ICdyb3cnID8gbmV3SWQgOiBpdGVtLmlkXG4gICAgfSkpO1xuICAgIGlmIChzd2ltbGFuZS5oZWFkZXIpIHtcbiAgICAgICAgY2VsbHMuc2hpZnQoKTtcbiAgICB9XG4gICAgY2VsbHNbMF0gPSB7XG4gICAgICAgIC4uLmNlbGxzWzBdLFxuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogW3sgdGV4dDogc3dpbWxhbmUuaGVhZGVyID8gJ0xhbmUnIDogJ05ldyBTd2ltbGFuZScgfV0sXG4gICAgICAgICAgICBhbGlnbjogQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdHlwZSA9PT0gJ3JvdycgPyB1bmRlZmluZWQgOiAndmVydGljYWwnXG4gICAgICAgIH0sXG4gICAgICAgIHRleHRIZWlnaHQ6IDIwXG4gICAgfTtcbiAgICByZXR1cm4gY2VsbHM7XG59O1xuXG5jb25zdCB1cGRhdGVTd2ltbGFuZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSxcbiAgICBuZXdDb2x1bW5zOiB7IGlkOiBzdHJpbmc7IHdpZHRoPzogbnVtYmVyIH1bXSxcbiAgICBuZXdSb3dzOiB7IGlkOiBzdHJpbmc7IGhlaWdodD86IG51bWJlciB9W10sXG4gICAgbmV3Q2VsbHM6IFBsYWl0VGFibGVDZWxsW10sXG4gICAgbmV3UG9pbnRzOiBQb2ludFtdXG4pID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgc3dpbWxhbmUpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbHVtbnM6IG5ld0NvbHVtbnMsXG4gICAgICAgICAgICByb3dzOiBuZXdSb3dzLFxuICAgICAgICAgICAgY2VsbHM6IG5ld0NlbGxzLFxuICAgICAgICAgICAgcG9pbnRzOiBuZXdQb2ludHNcbiAgICAgICAgfSxcbiAgICAgICAgcGF0aFxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0U3dpbWxhbmVGaWxsID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEJhc2VUYWJsZSwgZmlsbDogc3RyaW5nLCBwYXRoOiBQYXRoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRDZWxscyA9IGdldFNlbGVjdGVkQ2VsbHMoZWxlbWVudCk7XG4gICAgbGV0IG5ld0NlbGxzID0gZWxlbWVudC5jZWxscztcbiAgICBpZiAoc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgIG5ld0NlbGxzID0gZWxlbWVudC5jZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRDZWxscy5tYXAoaXRlbSA9PiBpdGVtLmlkKS5pbmNsdWRlcyhjZWxsLmlkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNlbGwsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0NlbGxzID0gZWxlbWVudC5jZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICBpZiAoY2VsbC50ZXh0ICYmIGNlbGwudGV4dEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNlbGwsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgY2VsbHM6IG5ld0NlbGxzIH0sIHBhdGgpO1xufTtcbiJdfQ==
@@ -4,7 +4,7 @@ import { getConnectionPoint } from './line/line-common';
4
4
  import { updateCellIds, updateRowOrColumnIds } from './table';
5
5
  export const buildClipboardData = (board, elements, startPoint) => {
6
6
  return elements.map(element => {
7
- if (PlaitDrawElement.isGeometry(element) || PlaitDrawElement.isImage(element) || PlaitDrawElement.isTable(element)) {
7
+ if (PlaitDrawElement.isShapeElement(element)) {
8
8
  const points = element.points.map(point => [point[0] - startPoint[0], point[1] - startPoint[1]]);
9
9
  return { ...element, points };
10
10
  }
@@ -34,37 +34,28 @@ export const buildClipboardData = (board, elements, startPoint) => {
34
34
  };
35
35
  export const insertClipboardData = (board, elements, startPoint) => {
36
36
  const lines = elements.filter(value => PlaitDrawElement.isLine(value));
37
- const geometries = elements.filter(value => PlaitDrawElement.isGeometry(value) || PlaitDrawElement.isImage(value));
38
- const tables = elements.filter(value => PlaitDrawElement.isTable(value));
37
+ const geometries = elements.filter(value => (PlaitDrawElement.isGeometry(value) && !PlaitDrawElement.isGeometryByTable(value)) || PlaitDrawElement.isImage(value));
38
+ const tables = elements.filter(value => PlaitDrawElement.isElementByTable(value));
39
39
  geometries.forEach(element => {
40
- const sourceLines = [];
41
- const targetLines = [];
42
- lines.forEach(line => {
43
- if (PlaitLine.isBoundElementOfSource(line, element)) {
44
- sourceLines.push(line);
45
- }
46
- if (PlaitLine.isBoundElementOfTarget(line, element)) {
47
- targetLines.push(line);
48
- }
49
- });
50
- element.id = idCreator();
51
- // update lines
52
- sourceLines.forEach(sourceLine => (sourceLine.source.boundId = element.id));
53
- targetLines.forEach(targetLine => (targetLine.target.boundId = element.id));
40
+ const newId = idCreator();
41
+ updateBoundLinesId(element, lines, newId);
42
+ element.id = newId;
54
43
  element.points = element.points.map(point => [startPoint[0] + point[0], startPoint[1] + point[1]]);
55
44
  Transforms.insertNode(board, element, [board.children.length]);
56
45
  });
46
+ insertClipboardTableData(board, tables, startPoint, lines);
57
47
  lines.forEach(element => {
58
48
  element.id = idCreator();
59
49
  element.points = element.points.map(point => [startPoint[0] + point[0], startPoint[1] + point[1]]);
60
50
  Transforms.insertNode(board, element, [board.children.length]);
61
51
  });
62
- insertClipboardTableData(board, tables, startPoint);
63
52
  Transforms.addSelectionWithTemporaryElements(board, elements);
64
53
  };
65
- export const insertClipboardTableData = (board, elements, startPoint) => {
54
+ export const insertClipboardTableData = (board, elements, startPoint, lines) => {
66
55
  elements.forEach(element => {
67
- element.id = idCreator();
56
+ const newId = idCreator();
57
+ updateBoundLinesId(element, lines, newId);
58
+ element.id = newId;
68
59
  updateRowOrColumnIds(element, 'row');
69
60
  updateRowOrColumnIds(element, 'column');
70
61
  updateCellIds(element.cells);
@@ -72,4 +63,19 @@ export const insertClipboardTableData = (board, elements, startPoint) => {
72
63
  Transforms.insertNode(board, element, [board.children.length]);
73
64
  });
74
65
  };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBNEIsRUFBRSxVQUFpQixFQUFFLEVBQUU7SUFDckcsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNqSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFtQixDQUFDO1FBQ25ELENBQUM7UUFDRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBZ0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFFLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFXLENBQUMsQ0FBQztnQkFDMUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDM0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO29CQUN0QixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQzdCLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FDMUMsY0FBYyxDQUFnQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUUsRUFDN0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFXLENBQzdCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDM0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO29CQUN0QixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQzdCLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkYsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFlLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQTRCLEVBQUUsVUFBaUIsRUFBRSxFQUFFO0lBQ3RHLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQWdCLENBQUM7SUFDdEYsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBRzlHLENBQUM7SUFDSixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFpQixDQUFDO0lBRXpGLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDekIsTUFBTSxXQUFXLEdBQWdCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBZ0IsRUFBRSxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakIsSUFBSSxTQUFTLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELElBQUksU0FBUyxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFFekIsZUFBZTtRQUNmLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFtQixDQUFDO1FBQ3JILFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDcEIsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBbUIsQ0FBQztRQUNySCxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXNCLEVBQUUsVUFBaUIsRUFBRSxFQUFFO0lBQ3JHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUN6QixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQW1CLENBQUM7UUFDckgsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFRyYW5zZm9ybXMsIGdldEVsZW1lbnRCeUlkLCBpZENyZWF0b3IgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5LCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBsYWl0SW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ltYWdlJztcbmltcG9ydCB7IGdldENvbm5lY3Rpb25Qb2ludCB9IGZyb20gJy4vbGluZS9saW5lLWNvbW1vbic7XG5pbXBvcnQgeyBQbGFpdFRhYmxlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZSc7XG5pbXBvcnQgeyB1cGRhdGVDZWxsSWRzLCB1cGRhdGVSb3dPckNvbHVtbklkcyB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgY29uc3QgYnVpbGRDbGlwYm9hcmREYXRhID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXREcmF3RWxlbWVudFtdLCBzdGFydFBvaW50OiBQb2ludCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkgfHwgUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpIHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNUYWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZWxlbWVudC5wb2ludHMubWFwKHBvaW50ID0+IFtwb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0sIHBvaW50WzFdIC0gc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uZWxlbWVudCwgcG9pbnRzIH0gYXMgUGxhaXRHZW9tZXRyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGxldCBzb3VyY2UgPSB7IC4uLmVsZW1lbnQuc291cmNlIH07XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0geyAuLi5lbGVtZW50LnRhcmdldCB9O1xuICAgICAgICAgICAgbGV0IHBvaW50cyA9IFsuLi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5zb3VyY2UuYm91bmRJZCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1swXSA9IGdldENvbm5lY3Rpb25Qb2ludChnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCkhLCBlbGVtZW50LnNvdXJjZS5jb25uZWN0aW9uISk7XG4gICAgICAgICAgICAgICAgaWYgKCFnZXRFbGVtZW50QnlJZChib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCwgZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzb3VyY2UuYm91bmRJZDtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNvdXJjZS5jb25uZWN0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnRhcmdldC5ib3VuZElkKSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSA9IGdldENvbm5lY3Rpb25Qb2ludChcbiAgICAgICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpISxcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICghZ2V0RWxlbWVudEJ5SWQoYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQsIGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0LmJvdW5kSWQ7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQuY29ubmVjdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb2ludHMgPSBwb2ludHMubWFwKHBvaW50ID0+IFtwb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0sIHBvaW50WzFdIC0gc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uZWxlbWVudCwgcG9pbnRzLCBzb3VyY2UsIHRhcmdldCB9IGFzIFBsYWl0TGluZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDbGlwYm9hcmREYXRhID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXREcmF3RWxlbWVudFtdLCBzdGFydFBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGxpbmVzID0gZWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKHZhbHVlKSkgYXMgUGxhaXRMaW5lW107XG4gICAgY29uc3QgZ2VvbWV0cmllcyA9IGVsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodmFsdWUpIHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZSh2YWx1ZSkpIGFzIChcbiAgICAgICAgfCBQbGFpdEltYWdlXG4gICAgICAgIHwgUGxhaXRHZW9tZXRyeVxuICAgIClbXTtcbiAgICBjb25zdCB0YWJsZXMgPSBlbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc1RhYmxlKHZhbHVlKSkgYXMgUGxhaXRUYWJsZVtdO1xuXG4gICAgZ2VvbWV0cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBzb3VyY2VMaW5lczogUGxhaXRMaW5lW10gPSBbXTtcbiAgICAgICAgY29uc3QgdGFyZ2V0TGluZXM6IFBsYWl0TGluZVtdID0gW107XG4gICAgICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgICAgICBpZiAoUGxhaXRMaW5lLmlzQm91bmRFbGVtZW50T2ZTb3VyY2UobGluZSwgZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBzb3VyY2VMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFBsYWl0TGluZS5pc0JvdW5kRWxlbWVudE9mVGFyZ2V0KGxpbmUsIGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGVsZW1lbnQuaWQgPSBpZENyZWF0b3IoKTtcblxuICAgICAgICAvLyB1cGRhdGUgbGluZXNcbiAgICAgICAgc291cmNlTGluZXMuZm9yRWFjaChzb3VyY2VMaW5lID0+IChzb3VyY2VMaW5lLnNvdXJjZS5ib3VuZElkID0gZWxlbWVudC5pZCkpO1xuICAgICAgICB0YXJnZXRMaW5lcy5mb3JFYWNoKHRhcmdldExpbmUgPT4gKHRhcmdldExpbmUudGFyZ2V0LmJvdW5kSWQgPSBlbGVtZW50LmlkKSk7XG5cbiAgICAgICAgZWxlbWVudC5wb2ludHMgPSBlbGVtZW50LnBvaW50cy5tYXAocG9pbnQgPT4gW3N0YXJ0UG9pbnRbMF0gKyBwb2ludFswXSwgc3RhcnRQb2ludFsxXSArIHBvaW50WzFdXSkgYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgIH0pO1xuICAgIGxpbmVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGVsZW1lbnQuaWQgPSBpZENyZWF0b3IoKTtcbiAgICAgICAgZWxlbWVudC5wb2ludHMgPSBlbGVtZW50LnBvaW50cy5tYXAocG9pbnQgPT4gW3N0YXJ0UG9pbnRbMF0gKyBwb2ludFswXSwgc3RhcnRQb2ludFsxXSArIHBvaW50WzFdXSkgYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgIH0pO1xuICAgIGluc2VydENsaXBib2FyZFRhYmxlRGF0YShib2FyZCwgdGFibGVzLCBzdGFydFBvaW50KTtcbiAgICBUcmFuc2Zvcm1zLmFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydENsaXBib2FyZFRhYmxlRGF0YSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0VGFibGVbXSwgc3RhcnRQb2ludDogUG9pbnQpID0+IHtcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBlbGVtZW50LmlkID0gaWRDcmVhdG9yKCk7XG4gICAgICAgIHVwZGF0ZVJvd09yQ29sdW1uSWRzKGVsZW1lbnQsICdyb3cnKTtcbiAgICAgICAgdXBkYXRlUm93T3JDb2x1bW5JZHMoZWxlbWVudCwgJ2NvbHVtbicpO1xuICAgICAgICB1cGRhdGVDZWxsSWRzKGVsZW1lbnQuY2VsbHMpO1xuICAgICAgICBlbGVtZW50LnBvaW50cyA9IGVsZW1lbnQucG9pbnRzLm1hcChwb2ludCA9PiBbc3RhcnRQb2ludFswXSArIHBvaW50WzBdLCBzdGFydFBvaW50WzFdICsgcG9pbnRbMV1dKSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgfSk7XG59O1xuIl19
66
+ export const updateBoundLinesId = (element, lines, newId) => {
67
+ const sourceLines = [];
68
+ const targetLines = [];
69
+ lines.forEach(line => {
70
+ if (PlaitLine.isBoundElementOfSource(line, element)) {
71
+ sourceLines.push(line);
72
+ }
73
+ if (PlaitLine.isBoundElementOfTarget(line, element)) {
74
+ targetLines.push(line);
75
+ }
76
+ });
77
+ // update lines
78
+ sourceLines.forEach(sourceLine => (sourceLine.source.boundId = newId));
79
+ targetLines.forEach(targetLine => (targetLine.target.boundId = newId));
80
+ };
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQTRCLEVBQUUsVUFBaUIsRUFBRSxFQUFFO0lBQ3JHLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMxQixJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQW1CLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLE1BQU0sR0FBRyxF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LHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xELFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsZUFBZTtJQUNmLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgVHJhbnNmb3JtcywgZ2V0RWxlbWVudEJ5SWQsIGlkQ3JlYXRvciB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSwgUGxhaXRTaGFwZUVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBsYWl0SW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ltYWdlJztcbmltcG9ydCB7IGdldENvbm5lY3Rpb25Qb2ludCB9IGZyb20gJy4vbGluZS9saW5lLWNvbW1vbic7XG5pbXBvcnQgeyBQbGFpdFRhYmxlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZSc7XG5pbXBvcnQgeyB1cGRhdGVDZWxsSWRzLCB1cGRhdGVSb3dPckNvbHVtbklkcyB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgY29uc3QgYnVpbGRDbGlwYm9hcmREYXRhID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXREcmF3RWxlbWVudFtdLCBzdGFydFBvaW50OiBQb2ludCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzU2hhcGVFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBlbGVtZW50LnBvaW50cy5tYXAocG9pbnQgPT4gW3BvaW50WzBdIC0gc3RhcnRQb2ludFswXSwgcG9pbnRbMV0gLSBzdGFydFBvaW50WzFdXSk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5lbGVtZW50LCBwb2ludHMgfSBhcyBQbGFpdEdlb21ldHJ5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgbGV0IHNvdXJjZSA9IHsgLi4uZWxlbWVudC5zb3VyY2UgfTtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSB7IC4uLmVsZW1lbnQudGFyZ2V0IH07XG4gICAgICAgICAgICBsZXQgcG9pbnRzID0gWy4uLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnNvdXJjZS5ib3VuZElkKSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdID0gZ2V0Q29ubmVjdGlvblBvaW50KGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnNvdXJjZS5ib3VuZElkKSEsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hKTtcbiAgICAgICAgICAgICAgICBpZiAoIWdldEVsZW1lbnRCeUlkKGJvYXJkLCBlbGVtZW50LnNvdXJjZS5ib3VuZElkLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNvdXJjZS5ib3VuZElkO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc291cmNlLmNvbm5lY3Rpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdID0gZ2V0Q29ubmVjdGlvblBvaW50KFxuICAgICAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC50YXJnZXQuYm91bmRJZCkhLFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uIVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFnZXRFbGVtZW50QnlJZChib2FyZCwgZWxlbWVudC50YXJnZXQuYm91bmRJZCwgZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQuYm91bmRJZDtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRhcmdldC5jb25uZWN0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvaW50cyA9IHBvaW50cy5tYXAocG9pbnQgPT4gW3BvaW50WzBdIC0gc3RhcnRQb2ludFswXSwgcG9pbnRbMV0gLSBzdGFydFBvaW50WzFdXSk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5lbGVtZW50LCBwb2ludHMsIHNvdXJjZSwgdGFyZ2V0IH0gYXMgUGxhaXRMaW5lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydENsaXBib2FyZERhdGEgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdERyYXdFbGVtZW50W10sIHN0YXJ0UG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBlbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0xpbmUodmFsdWUpKSBhcyBQbGFpdExpbmVbXTtcbiAgICBjb25zdCBnZW9tZXRyaWVzID0gZWxlbWVudHMuZmlsdGVyKFxuICAgICAgICB2YWx1ZSA9PiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHZhbHVlKSAmJiAhUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5QnlUYWJsZSh2YWx1ZSkpIHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZSh2YWx1ZSlcbiAgICApIGFzIChQbGFpdEltYWdlIHwgUGxhaXRHZW9tZXRyeSlbXTtcbiAgICBjb25zdCB0YWJsZXMgPSBlbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKHZhbHVlKSkgYXMgUGxhaXRUYWJsZVtdO1xuICAgIGdlb21ldHJpZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3QgbmV3SWQgPSBpZENyZWF0b3IoKTtcbiAgICAgICAgdXBkYXRlQm91bmRMaW5lc0lkKGVsZW1lbnQsIGxpbmVzLCBuZXdJZCk7XG4gICAgICAgIGVsZW1lbnQuaWQgPSBuZXdJZDtcbiAgICAgICAgZWxlbWVudC5wb2ludHMgPSBlbGVtZW50LnBvaW50cy5tYXAocG9pbnQgPT4gW3N0YXJ0UG9pbnRbMF0gKyBwb2ludFswXSwgc3RhcnRQb2ludFsxXSArIHBvaW50WzFdXSkgYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgIH0pO1xuICAgIGluc2VydENsaXBib2FyZFRhYmxlRGF0YShib2FyZCwgdGFibGVzLCBzdGFydFBvaW50LCBsaW5lcyk7XG4gICAgbGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5pZCA9IGlkQ3JlYXRvcigpO1xuICAgICAgICBlbGVtZW50LnBvaW50cyA9IGVsZW1lbnQucG9pbnRzLm1hcChwb2ludCA9PiBbc3RhcnRQb2ludFswXSArIHBvaW50WzBdLCBzdGFydFBvaW50WzFdICsgcG9pbnRbMV1dKSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgfSk7XG4gICAgVHJhbnNmb3Jtcy5hZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDbGlwYm9hcmRUYWJsZURhdGEgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdFRhYmxlW10sIHN0YXJ0UG9pbnQ6IFBvaW50LCBsaW5lczogUGxhaXRMaW5lW10pID0+IHtcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBuZXdJZCA9IGlkQ3JlYXRvcigpO1xuICAgICAgICB1cGRhdGVCb3VuZExpbmVzSWQoZWxlbWVudCwgbGluZXMsIG5ld0lkKTtcbiAgICAgICAgZWxlbWVudC5pZCA9IG5ld0lkO1xuICAgICAgICB1cGRhdGVSb3dPckNvbHVtbklkcyhlbGVtZW50LCAncm93Jyk7XG4gICAgICAgIHVwZGF0ZVJvd09yQ29sdW1uSWRzKGVsZW1lbnQsICdjb2x1bW4nKTtcbiAgICAgICAgdXBkYXRlQ2VsbElkcyhlbGVtZW50LmNlbGxzKTtcbiAgICAgICAgZWxlbWVudC5wb2ludHMgPSBlbGVtZW50LnBvaW50cy5tYXAocG9pbnQgPT4gW3N0YXJ0UG9pbnRbMF0gKyBwb2ludFswXSwgc3RhcnRQb2ludFsxXSArIHBvaW50WzFdXSkgYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUJvdW5kTGluZXNJZCA9IChlbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCwgbGluZXM6IFBsYWl0TGluZVtdLCBuZXdJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgc291cmNlTGluZXM6IFBsYWl0TGluZVtdID0gW107XG4gICAgY29uc3QgdGFyZ2V0TGluZXM6IFBsYWl0TGluZVtdID0gW107XG4gICAgbGluZXMuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgaWYgKFBsYWl0TGluZS5pc0JvdW5kRWxlbWVudE9mU291cmNlKGxpbmUsIGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBzb3VyY2VMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdExpbmUuaXNCb3VuZEVsZW1lbnRPZlRhcmdldChsaW5lLCBlbGVtZW50KSkge1xuICAgICAgICAgICAgdGFyZ2V0TGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIHVwZGF0ZSBsaW5lc1xuICAgIHNvdXJjZUxpbmVzLmZvckVhY2goc291cmNlTGluZSA9PiAoc291cmNlTGluZS5zb3VyY2UuYm91bmRJZCA9IG5ld0lkKSk7XG4gICAgdGFyZ2V0TGluZXMuZm9yRWFjaCh0YXJnZXRMaW5lID0+ICh0YXJnZXRMaW5lLnRhcmdldC5ib3VuZElkID0gbmV3SWQpKTtcbn07XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { ACTIVE_STROKE_WIDTH, addSelectedElement, BoardTransforms, clearSelectedElement, createG, depthFirstRecursion, drawCircle, getIsRecursionFunc, PlaitBoard, PlaitPointerType, RectangleClient, rotateAntiPointsByElement, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, SNAPPING_STROKE_WIDTH, Transforms } from '@plait/core';
2
2
  import { DefaultDrawStyle, LINE_HIT_GEOMETRY_BUFFER, LINE_SNAPPING_BUFFER, ShapeDefaultSpace } from '../constants';
3
3
  import { MultipleTextGeometryCommonTextKeys, PlaitDrawElement } from '../interfaces';
4
- import { getTextEditorsByElement } from '@plait/common';
4
+ import { Alignment, getTextEditorsByElement } from '@plait/common';
5
5
  import { isCellIncludeText } from './table';
6
6
  import { getEngine } from '../engines';
7
7
  import { getElementShape } from './shape';
@@ -10,7 +10,6 @@ import { isHitEdgeOfShape, isInsideOfShape } from './hit';
10
10
  import { getHitConnectorPoint } from './line';
11
11
  import { getNearestPoint, isGeometryIncludeText, isSingleTextGeometry } from './geometry';
12
12
  import { isMultipleTextGeometry } from './multi-text-geometry';
13
- import { Alignment } from '@plait/text';
14
13
  export const getTextRectangle = (element) => {
15
14
  const elementRectangle = RectangleClient.getRectangleByPoints(element.points);
16
15
  const strokeWidth = getStrokeWidthByElement(element);
@@ -51,7 +50,7 @@ export const isDrawElementIncludeText = (element) => {
51
50
  const editors = getTextEditorsByElement(element);
52
51
  return editors.length > 0;
53
52
  }
54
- if (PlaitDrawElement.isTable(element)) {
53
+ if (PlaitDrawElement.isElementByTable(element)) {
55
54
  return element.cells.some(cell => isCellIncludeText(cell));
56
55
  }
57
56
  return true;
@@ -103,7 +102,7 @@ export const drawBoundReaction = (board, element, roughOptions = { hasMask: true
103
102
  const activeRectangle = RectangleClient.inflate(rectangle, SNAPPING_STROKE_WIDTH);
104
103
  const shape = getElementShape(element);
105
104
  let drawOptions = {};
106
- if (PlaitDrawElement.isTable(element)) {
105
+ if (PlaitDrawElement.isElementByTable(element)) {
107
106
  drawOptions = { element };
108
107
  }
109
108
  const strokeG = drawShape(board, activeRectangle, shape, {
@@ -142,7 +141,7 @@ export const getTextKey = (element, text) => {
142
141
  return text.key;
143
142
  }
144
143
  };
145
- export const getGeometryAlign = (element) => {
144
+ export const getGeometryAlign = (board, element) => {
146
145
  if (isMultipleTextGeometry(element)) {
147
146
  const drawShapeText = element.texts.find(item => item.key.includes(MultipleTextGeometryCommonTextKeys.content));
148
147
  return drawShapeText?.text.align || Alignment.center;
@@ -150,10 +149,10 @@ export const getGeometryAlign = (element) => {
150
149
  if (isSingleTextGeometry(element)) {
151
150
  return element.text?.align || Alignment.center;
152
151
  }
153
- if (PlaitDrawElement.isTable(element)) {
152
+ if (PlaitDrawElement.isElementByTable(element)) {
154
153
  const firstTextCell = element.cells.find(item => item.text);
155
154
  return firstTextCell?.text?.align || Alignment.center;
156
155
  }
157
156
  return Alignment.center;
158
157
  };
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixVQUFVLEVBQ1Ysa0JBQWtCLEVBRWxCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBRXBCLHFCQUFxQixFQUNyQixVQUFVLEVBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ILE9BQU8sRUFHSCxrQ0FBa0MsRUFFbEMsZ0JBQWdCLEVBSW5CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixD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QUUsRUFBRTtJQUMxRSxJQUFJLHNCQUFzQixDQUFDLE9BQThCLENBQUMsRUFBRSxDQUFDO1FBQ3pELE1BQU0sYUFBYSxHQUFJLE9BQXFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMzRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLENBQUMsQ0FDaEUsQ0FBQztRQUNGLE9BQU8sYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxPQUE4QixDQUFDLEVBQUUsQ0FBQztRQUN2RCxPQUFRLE9BQXlCLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUMxRCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQzVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgQW5jZXN0b3IsXG4gICAgQm9hcmRUcmFuc2Zvcm1zLFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNyZWF0ZUcsXG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbixcbiAgICBkcmF3Q2lyY2xlLFxuICAgIGdldElzUmVjdXJzaW9uRnVuYyxcbiAgICBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbixcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50LFxuICAgIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgU2V0U2VsZWN0aW9uT3BlcmF0aW9uLFxuICAgIFNOQVBQSU5HX1NUUk9LRV9XSURUSCxcbiAgICBUcmFuc2Zvcm1zXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IERlZmF1bHREcmF3U3R5bGUsIExJTkVfSElUX0dFT01FVFJZX0JVRkZFUiwgTElORV9TTkFQUElOR19CVUZGRVIsIFNoYXBlRGVmYXVsdFNwYWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgRHJhd1NoYXBlcyxcbiAgICBFbmdpbmVFeHRyYURhdGEsXG4gICAgTXVsdGlwbGVUZXh0R2VvbWV0cnlDb21tb25UZXh0S2V5cyxcbiAgICBQbGFpdENvbW1vbkdlb21ldHJ5LFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LFxuICAgIFBsYWl0U2hhcGVFbGVtZW50XG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGlzQ2VsbEluY2x1ZGVUZXh0IH0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldEVsZW1lbnRTaGFwZSB9IGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRUYWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgbWVtb3JpemVMYXRlc3RTaGFwZSB9IGZyb20gJy4vbWVtb3JpemUnO1xuaW1wb3J0IHsgaXNIaXRFZGdlT2ZTaGFwZSwgaXNJbnNpZGVPZlNoYXBlIH0gZnJvbSAnLi9oaXQnO1xuaW1wb3J0IHsgZ2V0SGl0Q29ubmVjdG9yUG9pbnQgfSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50LCBpc0dlb21ldHJ5SW5jbHVkZVRleHQsIGlzU2luZ2xlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBpc011bHRpcGxlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi9tdWx0aS10ZXh0LWdlb21ldHJ5JztcbmltcG9ydCB7IFBsYWl0RHJhd1NoYXBlVGV4dCB9IGZyb20gJy4uL2dlbmVyYXRvcnMvdGV4dC5nZW5lcmF0b3InO1xuaW1wb3J0IHsgQWxpZ25tZW50IH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dFJlY3RhbmdsZSA9IDxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRHZW9tZXRyeT4oZWxlbWVudDogVCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQudGV4dEhlaWdodCE7XG4gICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZWxlbWVudC5zdHJva2VXaWR0aCB8fCBEZWZhdWx0RHJhd1N0eWxlLnN0cm9rZVdpZHRoO1xuICAgIHJldHVybiBzdHJva2VXaWR0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5IHwgUGxhaXRUYWJsZSkgPT4ge1xuICAgIG1lbW9yaXplTGF0ZXN0U2hhcGUoYm9hcmQsIGVsZW1lbnQuc2hhcGUpO1xuICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRHJhd0VsZW1lbnRJbmNsdWRlVGV4dCA9IChlbGVtZW50OiBQbGFpdERyYXdFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gaXNHZW9tZXRyeUluY2x1ZGVUZXh0KGVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZWRpdG9ycy5sZW5ndGggPiAwO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNlbGxzLnNvbWUoY2VsbCA9PiBpc0NlbGxJbmNsdWRlVGV4dChjZWxsKSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRHJhd0VsZW1lbnRzSW5jbHVkZVRleHQgPSAoZWxlbWVudHM6IFBsYWl0RHJhd0VsZW1lbnRbXSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50cy5zb21lKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gaXNEcmF3RWxlbWVudEluY2x1ZGVUZXh0KGl0ZW0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNuYXBwaW5nU2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCk6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbCA9PiB7XG4gICAgbGV0IGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbCA9IGdldEhpdFNoYXBlKGJvYXJkLCBwb2ludCk7XG4gICAgaWYgKGhpdEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcmVmID0gZ2V0U25hcHBpbmdSZWYoYm9hcmQsIGhpdEVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgaWYgKHJlZi5pc0hpdENvbm5lY3RvciB8fCByZWYuaXNIaXRFZGdlKSB7XG4gICAgICAgICAgICByZXR1cm4gaGl0RWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTbmFwcGluZ1JlZiA9IChib2FyZDogUGxhaXRCb2FyZCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHJvdGF0ZWRQb2ludCA9IHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQocG9pbnQsIGhpdEVsZW1lbnQpIHx8IHBvaW50O1xuICAgIGNvbnN0IGNvbm5lY3RvclBvaW50ID0gZ2V0SGl0Q29ubmVjdG9yUG9pbnQocm90YXRlZFBvaW50LCBoaXRFbGVtZW50KTtcbiAgICBjb25zdCBlZGdlUG9pbnQgPSBnZXROZWFyZXN0UG9pbnQoaGl0RWxlbWVudCwgcm90YXRlZFBvaW50KTtcbiAgICBjb25zdCBpc0hpdEVkZ2UgPSBpc0hpdEVkZ2VPZlNoYXBlKGJvYXJkLCBoaXRFbGVtZW50LCByb3RhdGVkUG9pbnQsIExJTkVfU05BUFBJTkdfQlVGRkVSKTtcbiAgICByZXR1cm4geyBpc0hpdEVkZ2UsIGlzSGl0Q29ubmVjdG9yOiAhIWNvbm5lY3RvclBvaW50LCBjb25uZWN0b3JQb2ludCwgZWRnZVBvaW50IH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgb2Zmc2V0ID0gTElORV9ISVRfR0VPTUVUUllfQlVGRkVSKTogUGxhaXRTaGFwZUVsZW1lbnQgfCBudWxsID0+IHtcbiAgICBsZXQgaGl0U2hhcGU6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgdHJhdmVyc2VEcmF3U2hhcGVzKGJvYXJkLCAoZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGhpdFNoYXBlID09PSBudWxsICYmIGlzSW5zaWRlT2ZTaGFwZShib2FyZCwgZWxlbWVudCwgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudChwb2ludCwgZWxlbWVudCkgfHwgcG9pbnQsIG9mZnNldCAqIDIpKSB7XG4gICAgICAgICAgICBoaXRTaGFwZSA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaGl0U2hhcGU7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VEcmF3U2hhcGVzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBjYWxsYmFjazogKGVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50KSA9PiB2b2lkKSA9PiB7XG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxBbmNlc3Rvcj4oXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgIGlmICghUGxhaXRCb2FyZC5pc0JvYXJkKG5vZGUpICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNTaGFwZUVsZW1lbnQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SXNSZWN1cnNpb25GdW5jKGJvYXJkKSxcbiAgICAgICAgdHJ1ZVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd1NoYXBlID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIG91dGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgc2hhcGU6IERyYXdTaGFwZXMsXG4gICAgcm91Z2hPcHRpb25zOiBPcHRpb25zLFxuICAgIGRyYXdPcHRpb25zOiBFbmdpbmVFeHRyYURhdGFcbikgPT4ge1xuICAgIHJldHVybiBnZXRFbmdpbmUoc2hhcGUpLmRyYXcoYm9hcmQsIG91dGVyUmVjdGFuZ2xlLCByb3VnaE9wdGlvbnMsIGRyYXdPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3Qm91bmRSZWFjdGlvbiA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCxcbiAgICByb3VnaE9wdGlvbnM6IHsgaGFzTWFzazogYm9vbGVhbjsgaGFzQ29ubmVjdG9yOiBib29sZWFuIH0gPSB7IGhhc01hc2s6IHRydWUsIGhhc0Nvbm5lY3RvcjogdHJ1ZSB9XG4pID0+IHtcbiAgICBjb25zdCBnID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBTTkFQUElOR19TVFJPS0VfV0lEVEgpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0RWxlbWVudFNoYXBlKGVsZW1lbnQpO1xuICAgIGxldCBkcmF3T3B0aW9uczogRW5naW5lRXh0cmFEYXRhID0ge307XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUYWJsZShlbGVtZW50KSkge1xuICAgICAgICBkcmF3T3B0aW9ucyA9IHsgZWxlbWVudCB9O1xuICAgIH1cbiAgICBjb25zdCBzdHJva2VHID0gZHJhd1NoYXBlKFxuICAgICAgICBib2FyZCxcbiAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IFNOQVBQSU5HX1NUUk9LRV9XSURUSFxuICAgICAgICB9LFxuICAgICAgICBkcmF3T3B0aW9uc1xuICAgICk7XG4gICAgZy5hcHBlbmRDaGlsZChzdHJva2VHKTtcblxuICAgIGlmIChyb3VnaE9wdGlvbnMuaGFzTWFzaykge1xuICAgICAgICBjb25zdCBtYXNrRyA9IGRyYXdTaGFwZShcbiAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLFxuICAgICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAwLFxuICAgICAgICAgICAgICAgIGZpbGw6IFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyYXdPcHRpb25zXG4gICAgICAgICk7XG4gICAgICAgIGcuYXBwZW5kQ2hpbGQobWFza0cpO1xuICAgIH1cbiAgICBpZiAocm91Z2hPcHRpb25zLmhhc0Nvbm5lY3Rvcikge1xuICAgICAgICBjb25zdCBjb25uZWN0b3JQb2ludHMgPSBnZXRFbmdpbmUoc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICBjb25uZWN0b3JQb2ludHMuZm9yRWFjaChwb2ludCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaXJjbGVHID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSwgcG9pbnQsIDgsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICAgICAgZmlsbDogJyNGRkYnLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBnLmFwcGVuZENoaWxkKGNpcmNsZUcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEtleSA9IDxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRHZW9tZXRyeT4oZWxlbWVudDogVCwgdGV4dDogUGxhaXREcmF3U2hhcGVUZXh0KSA9PiB7XG4gICAgaWYgKGlzTXVsdGlwbGVUZXh0R2VvbWV0cnkoKGVsZW1lbnQgYXMgdW5rbm93bikgYXMgUGxhaXRDb21tb25HZW9tZXRyeSkpIHtcbiAgICAgICAgcmV0dXJuIGAke2VsZW1lbnQuaWR9LSR7dGV4dC5rZXl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGV4dC5rZXk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEdlb21ldHJ5QWxpZ24gPSAoZWxlbWVudDogUGxhaXRDb21tb25HZW9tZXRyeSB8IFBsYWl0VGFibGUpID0+IHtcbiAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeShlbGVtZW50IGFzIFBsYWl0Q29tbW9uR2VvbWV0cnkpKSB7XG4gICAgICAgIGNvbnN0IGRyYXdTaGFwZVRleHQgPSAoZWxlbWVudCBhcyBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5KS50ZXh0cy5maW5kKGl0ZW0gPT5cbiAgICAgICAgICAgIGl0ZW0ua2V5LmluY2x1ZGVzKE11bHRpcGxlVGV4dEdlb21ldHJ5Q29tbW9uVGV4dEtleXMuY29udGVudClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGRyYXdTaGFwZVRleHQ/LnRleHQuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcjtcbiAgICB9XG4gICAgaWYgKGlzU2luZ2xlVGV4dEdlb21ldHJ5KGVsZW1lbnQgYXMgUGxhaXRDb21tb25HZW9tZXRyeSkpIHtcbiAgICAgICAgcmV0dXJuIChlbGVtZW50IGFzIFBsYWl0R2VvbWV0cnkpLnRleHQ/LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXI7XG4gICAgfVxuXG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUYWJsZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmaXJzdFRleHRDZWxsID0gZWxlbWVudC5jZWxscy5maW5kKGl0ZW0gPT4gaXRlbS50ZXh0KTtcbiAgICAgICAgcmV0dXJuIGZpcnN0VGV4dENlbGw/LnRleHQ/LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXI7XG4gICAgfVxuICAgIHJldHVybiBBbGlnbm1lbnQuY2VudGVyO1xufTtcbiJdfQ==
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixVQUFVLEVBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ILE9BQU8sRUFHSCxrQ0FBa0MsRUFHbEMsZ0JBQWdCLEVBSW5CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUcxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFB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QUksc0JBQXNCLENBQUMsT0FBOEIsQ0FBQyxFQUFFLENBQUM7UUFDekQsTUFBTSxhQUFhLEdBQUksT0FBcUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzNFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUNoRSxDQUFDO1FBQ0YsT0FBTyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFJLG9CQUFvQixDQUFDLE9BQThCLENBQUMsRUFBRSxDQUFDO1FBQ3ZELE9BQVEsT0FBeUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDdEUsQ0FBQztJQUVELElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDMUQsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUM1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIEFuY2VzdG9yLFxuICAgIEJvYXJkVHJhbnNmb3JtcyxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBjcmVhdGVHLFxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24sXG4gICAgZHJhd0NpcmNsZSxcbiAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudCxcbiAgICBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgIFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgIFNOQVBQSU5HX1NUUk9LRV9XSURUSCxcbiAgICBUcmFuc2Zvcm1zXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IERlZmF1bHREcmF3U3R5bGUsIExJTkVfSElUX0dFT01FVFJZX0JVRkZFUiwgTElORV9TTkFQUElOR19CVUZGRVIsIFNoYXBlRGVmYXVsdFNwYWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgRHJhd1NoYXBlcyxcbiAgICBFbmdpbmVFeHRyYURhdGEsXG4gICAgTXVsdGlwbGVUZXh0R2VvbWV0cnlDb21tb25UZXh0S2V5cyxcbiAgICBQbGFpdEJhc2VHZW9tZXRyeSxcbiAgICBQbGFpdENvbW1vbkdlb21ldHJ5LFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LFxuICAgIFBsYWl0U2hhcGVFbGVtZW50XG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBnZXRUZXh0RWRpdG9yc0J5RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgaXNDZWxsSW5jbHVkZVRleHQgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudFNoYXBlIH0gZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBQbGFpdEJhc2VUYWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgbWVtb3JpemVMYXRlc3RTaGFwZSB9IGZyb20gJy4vbWVtb3JpemUnO1xuaW1wb3J0IHsgaXNIaXRFZGdlT2ZTaGFwZSwgaXNJbnNpZGVPZlNoYXBlIH0gZnJvbSAnLi9oaXQnO1xuaW1wb3J0IHsgZ2V0SGl0Q29ubmVjdG9yUG9pbnQgfSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50LCBpc0dlb21ldHJ5SW5jbHVkZVRleHQsIGlzU2luZ2xlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBpc011bHRpcGxlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi9tdWx0aS10ZXh0LWdlb21ldHJ5JztcbmltcG9ydCB7IFBsYWl0RHJhd1NoYXBlVGV4dCB9IGZyb20gJy4uL2dlbmVyYXRvcnMvdGV4dC5nZW5lcmF0b3InO1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dFJlY3RhbmdsZSA9IDxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRHZW9tZXRyeT4oZWxlbWVudDogVCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMhKTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQudGV4dEhlaWdodCE7XG4gICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZWxlbWVudC5zdHJva2VXaWR0aCB8fCBEZWZhdWx0RHJhd1N0eWxlLnN0cm9rZVdpZHRoO1xuICAgIHJldHVybiBzdHJva2VXaWR0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEJhc2VHZW9tZXRyeSB8IFBsYWl0QmFzZVRhYmxlKSA9PiB7XG4gICAgbWVtb3JpemVMYXRlc3RTaGFwZShib2FyZCwgZWxlbWVudC5zaGFwZSk7XG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVBvaW50ZXJUeXBlKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEcmF3RWxlbWVudEluY2x1ZGVUZXh0ID0gKGVsZW1lbnQ6IFBsYWl0RHJhd0VsZW1lbnQpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc0dlb21ldHJ5SW5jbHVkZVRleHQoZWxlbWVudCk7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBlZGl0b3JzID0gZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBlZGl0b3JzLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2VsbHMuc29tZShjZWxsID0+IGlzQ2VsbEluY2x1ZGVUZXh0KGNlbGwpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEcmF3RWxlbWVudHNJbmNsdWRlVGV4dCA9IChlbGVtZW50czogUGxhaXREcmF3RWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLnNvbWUoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBpc0RyYXdFbGVtZW50SW5jbHVkZVRleHQoaXRlbSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U25hcHBpbmdTaGFwZSA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IFBvaW50KTogUGxhaXRTaGFwZUVsZW1lbnQgfCBudWxsID0+IHtcbiAgICBsZXQgaGl0RWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQgfCBudWxsID0gZ2V0SGl0U2hhcGUoYm9hcmQsIHBvaW50KTtcbiAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICBjb25zdCByZWYgPSBnZXRTbmFwcGluZ1JlZihib2FyZCwgaGl0RWxlbWVudCwgcG9pbnQpO1xuICAgICAgICBpZiAocmVmLmlzSGl0Q29ubmVjdG9yIHx8IHJlZi5pc0hpdEVkZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBoaXRFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNuYXBwaW5nUmVmID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBoaXRFbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3Qgcm90YXRlZFBvaW50ID0gcm90YXRlQW50aVBvaW50c0J5RWxlbWVudChwb2ludCwgaGl0RWxlbWVudCkgfHwgcG9pbnQ7XG4gICAgY29uc3QgY29ubmVjdG9yUG9pbnQgPSBnZXRIaXRDb25uZWN0b3JQb2ludChyb3RhdGVkUG9pbnQsIGhpdEVsZW1lbnQpO1xuICAgIGNvbnN0IGVkZ2VQb2ludCA9IGdldE5lYXJlc3RQb2ludChoaXRFbGVtZW50LCByb3RhdGVkUG9pbnQpO1xuICAgIGNvbnN0IGlzSGl0RWRnZSA9IGlzSGl0RWRnZU9mU2hhcGUoYm9hcmQsIGhpdEVsZW1lbnQsIHJvdGF0ZWRQb2ludCwgTElORV9TTkFQUElOR19CVUZGRVIpO1xuICAgIHJldHVybiB7IGlzSGl0RWRnZSwgaXNIaXRDb25uZWN0b3I6ICEhY29ubmVjdG9yUG9pbnQsIGNvbm5lY3RvclBvaW50LCBlZGdlUG9pbnQgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRTaGFwZSA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IFBvaW50LCBvZmZzZXQgPSBMSU5FX0hJVF9HRU9NRVRSWV9CVUZGRVIpOiBQbGFpdFNoYXBlRWxlbWVudCB8IG51bGwgPT4ge1xuICAgIGxldCBoaXRTaGFwZTogUGxhaXRTaGFwZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICB0cmF2ZXJzZURyYXdTaGFwZXMoYm9hcmQsIChlbGVtZW50OiBQbGFpdFNoYXBlRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoaGl0U2hhcGUgPT09IG51bGwgJiYgaXNJbnNpZGVPZlNoYXBlKGJvYXJkLCBlbGVtZW50LCByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KHBvaW50LCBlbGVtZW50KSB8fCBwb2ludCwgb2Zmc2V0ICogMikpIHtcbiAgICAgICAgICAgIGhpdFNoYXBlID0gZWxlbWVudDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBoaXRTaGFwZTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZURyYXdTaGFwZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGNhbGxiYWNrOiAoZWxlbWVudDogUGxhaXRTaGFwZUVsZW1lbnQpID0+IHZvaWQpID0+IHtcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uPEFuY2VzdG9yPihcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgJiYgUGxhaXREcmF3RWxlbWVudC5pc1NoYXBlRWxlbWVudChub2RlKSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMoYm9hcmQpLFxuICAgICAgICB0cnVlXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3U2hhcGUgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgb3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCxcbiAgICBzaGFwZTogRHJhd1NoYXBlcyxcbiAgICByb3VnaE9wdGlvbnM6IE9wdGlvbnMsXG4gICAgZHJhd09wdGlvbnM6IEVuZ2luZUV4dHJhRGF0YVxuKSA9PiB7XG4gICAgcmV0dXJuIGdldEVuZ2luZShzaGFwZSkuZHJhdyhib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIHJvdWdoT3B0aW9ucywgZHJhd09wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdCb3VuZFJlYWN0aW9uID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50LFxuICAgIHJvdWdoT3B0aW9uczogeyBoYXNNYXNrOiBib29sZWFuOyBoYXNDb25uZWN0b3I6IGJvb2xlYW4gfSA9IHsgaGFzTWFzazogdHJ1ZSwgaGFzQ29ubmVjdG9yOiB0cnVlIH1cbikgPT4ge1xuICAgIGNvbnN0IGcgPSBjcmVhdGVHKCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIFNOQVBQSU5HX1NUUk9LRV9XSURUSCk7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRFbGVtZW50U2hhcGUoZWxlbWVudCk7XG4gICAgbGV0IGRyYXdPcHRpb25zOiBFbmdpbmVFeHRyYURhdGEgPSB7fTtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgIGRyYXdPcHRpb25zID0geyBlbGVtZW50IH07XG4gICAgfVxuICAgIGNvbnN0IHN0cm9rZUcgPSBkcmF3U2hhcGUoXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBhY3RpdmVSZWN0YW5nbGUsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogU05BUFBJTkdfU1RST0tFX1dJRFRIXG4gICAgICAgIH0sXG4gICAgICAgIGRyYXdPcHRpb25zXG4gICAgKTtcbiAgICBnLmFwcGVuZENoaWxkKHN0cm9rZUcpO1xuXG4gICAgaWYgKHJvdWdoT3B0aW9ucy5oYXNNYXNrKSB7XG4gICAgICAgIGNvbnN0IG1hc2tHID0gZHJhd1NoYXBlKFxuICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICBhY3RpdmVSZWN0YW5nbGUsXG4gICAgICAgICAgICBzaGFwZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgICAgICAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZHJhd09wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgICAgZy5hcHBlbmRDaGlsZChtYXNrRyk7XG4gICAgfVxuICAgIGlmIChyb3VnaE9wdGlvbnMuaGFzQ29ubmVjdG9yKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3RvclBvaW50cyA9IGdldEVuZ2luZShzaGFwZSkuZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbm5lY3RvclBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNpcmNsZUcgPSBkcmF3Q2lyY2xlKFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLCBwb2ludCwgOCwge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICAgICAgICAgICAgICBmaWxsOiAnI0ZGRicsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGcuYXBwZW5kQ2hpbGQoY2lyY2xlRyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0S2V5ID0gPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEdlb21ldHJ5PihlbGVtZW50OiBULCB0ZXh0OiBQbGFpdERyYXdTaGFwZVRleHQpID0+IHtcbiAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeSgoZWxlbWVudCBhcyB1bmtub3duKSBhcyBQbGFpdENvbW1vbkdlb21ldHJ5KSkge1xuICAgICAgICByZXR1cm4gYCR7ZWxlbWVudC5pZH0tJHt0ZXh0LmtleX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0ZXh0LmtleTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2VvbWV0cnlBbGlnbiA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRDb21tb25HZW9tZXRyeSB8IFBsYWl0QmFzZVRhYmxlKSA9PiB7XG4gICAgaWYgKGlzTXVsdGlwbGVUZXh0R2VvbWV0cnkoZWxlbWVudCBhcyBQbGFpdENvbW1vbkdlb21ldHJ5KSkge1xuICAgICAgICBjb25zdCBkcmF3U2hhcGVUZXh0ID0gKGVsZW1lbnQgYXMgUGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeSkudGV4dHMuZmluZChpdGVtID0+XG4gICAgICAgICAgICBpdGVtLmtleS5pbmNsdWRlcyhNdWx0aXBsZVRleHRHZW9tZXRyeUNvbW1vblRleHRLZXlzLmNvbnRlbnQpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBkcmF3U2hhcGVUZXh0Py50ZXh0LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXI7XG4gICAgfVxuICAgIGlmIChpc1NpbmdsZVRleHRHZW9tZXRyeShlbGVtZW50IGFzIFBsYWl0Q29tbW9uR2VvbWV0cnkpKSB7XG4gICAgICAgIHJldHVybiAoZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5KS50ZXh0Py5hbGlnbiB8fCBBbGlnbm1lbnQuY2VudGVyO1xuICAgIH1cblxuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZmlyc3RUZXh0Q2VsbCA9IGVsZW1lbnQuY2VsbHMuZmluZChpdGVtID0+IGl0ZW0udGV4dCk7XG4gICAgICAgIHJldHVybiBmaXJzdFRleHRDZWxsPy50ZXh0Py5hbGlnbiB8fCBBbGlnbm1lbnQuY2VudGVyO1xuICAgIH1cbiAgICByZXR1cm4gQWxpZ25tZW50LmNlbnRlcjtcbn07XG4iXX0=