@plait/core 0.75.0 → 0.77.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.
@@ -5,16 +5,15 @@ import { RectangleClient } from '../interfaces/rectangle-client';
5
5
  import { cacheSelectedElements, clearSelectedElement, getHitElementsBySelection, getSelectedElements, isHitElement, removeSelectedElement } from '../utils/selected-element';
6
6
  import { PlaitPointerType, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR } from '../interfaces';
7
7
  import { ATTACHED_ELEMENT_CLASS_NAME } from '../constants/selection';
8
- import { clearSelectionMoving, deleteTemporaryElements, drawRectangle, getTemporaryElements, isDragging, isHandleSelection, isSelectionMoving, setSelectionMoving, throttleRAF, toHostPoint, toViewBoxPoint, setSelectedElementsWithGroup, hasSetSelectionOperation, getSelectionOptions, setSelectionOptions, distanceBetweenPointAndPoint, isMobileDeviceEvent } from '../utils';
8
+ import { clearSelectionMoving, deleteTemporaryElements, drawRectangle, getTemporaryElements, isDragging, isHandleSelection, isSelectionMoving, setSelectionMoving, throttleRAF, toHostPoint, toViewBoxPoint, setSelectedElementsWithGroup, hasSetSelectionOperation, getSelectionOptions, setSelectionOptions, distanceBetweenPointAndPoint, isMobileDeviceEvent, toActivePoint } from '../utils';
9
9
  import { Selection } from '../interfaces/selection';
10
10
  import { DRAG_SELECTION_PRESS_AND_MOVE_BUFFER } from '../constants';
11
11
  export function withSelection(board) {
12
12
  const { pointerDown, pointerUp, pointerMove, globalPointerUp, onChange, afterChange, drawSelectionRectangle } = board;
13
- let start = null;
14
- let end = null;
13
+ let screenStart = null;
14
+ let screenEnd = null;
15
15
  let selectionMovingG;
16
16
  let selectionRectangleG;
17
- let previousSelectedElements;
18
17
  let isShift = false;
19
18
  let timerId = null;
20
19
  let pointerDownEvent = null;
@@ -29,18 +28,18 @@ export function withSelection(board) {
29
28
  const isHitTarget = isHitElement(board, point);
30
29
  const options = getSelectionOptions(board);
31
30
  if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
31
+ isMainPointer(event) &&
32
32
  !isHitTarget &&
33
33
  options.isMultipleSelection &&
34
34
  !options.isDisabledSelection) {
35
- // start drag selection
36
35
  if (isMobileDeviceEvent(event)) {
37
36
  timerId = setTimeout(() => {
38
- start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
37
+ screenStart = [event.x, event.y];
39
38
  timerId = null;
40
39
  }, 120);
41
40
  }
42
41
  else {
43
- start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
42
+ screenStart = [event.x, event.y];
44
43
  }
45
44
  }
46
45
  pointerDownEvent = event;
@@ -53,14 +52,20 @@ export function withSelection(board) {
53
52
  clearTimeout(timerId);
54
53
  timerId = null;
55
54
  }
56
- if (PlaitBoard.isPointer(board, PlaitPointerType.selection) && start) {
57
- const movedTarget = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
58
- const rectangle = RectangleClient.getRectangleByPoints([start, movedTarget]);
55
+ if (PlaitBoard.isPointer(board, PlaitPointerType.selection) && screenStart) {
56
+ event.preventDefault();
57
+ screenEnd = [event.x, event.y];
58
+ const rectangle = RectangleClient.getRectangleByPoints([
59
+ toActivePoint(board, ...screenStart),
60
+ toActivePoint(board, ...screenEnd)
61
+ ]);
59
62
  selectionMovingG?.remove();
60
- end = movedTarget;
61
63
  throttleRAF(board, 'with-selection', () => {
62
- if (start && end) {
63
- Transforms.setSelection(board, { anchor: start, focus: end });
64
+ if (screenStart && screenEnd) {
65
+ Transforms.setSelection(board, {
66
+ anchor: toViewBoxPoint(board, toHostPoint(board, screenStart[0], screenStart[1])),
67
+ focus: toViewBoxPoint(board, toHostPoint(board, screenEnd[0], screenEnd[1]))
68
+ });
64
69
  }
65
70
  });
66
71
  setSelectionMoving(board);
@@ -70,7 +75,7 @@ export function withSelection(board) {
70
75
  fill: SELECTION_FILL_COLOR,
71
76
  fillStyle: 'solid'
72
77
  });
73
- PlaitBoard.getElementActiveHost(board).append(selectionMovingG);
78
+ PlaitBoard.getActiveHost(board).append(selectionMovingG);
74
79
  }
75
80
  pointerMove(event);
76
81
  };
@@ -88,10 +93,13 @@ export function withSelection(board) {
88
93
  pointerUp(event);
89
94
  };
90
95
  board.globalPointerUp = (event) => {
91
- if (start && end) {
96
+ if (screenStart && screenEnd) {
92
97
  selectionMovingG?.remove();
93
98
  clearSelectionMoving(board);
94
- Transforms.setSelection(board, { anchor: start, focus: end });
99
+ Transforms.setSelection(board, {
100
+ anchor: toViewBoxPoint(board, toHostPoint(board, screenStart[0], screenStart[1])),
101
+ focus: toViewBoxPoint(board, toHostPoint(board, screenEnd[0], screenEnd[1]))
102
+ });
95
103
  }
96
104
  const options = getSelectionOptions(board);
97
105
  if (PlaitBoard.isFocus(board) && !options.isPreventClearSelection) {
@@ -100,12 +108,12 @@ export function withSelection(board) {
100
108
  const isAttachedElement = event.target instanceof Element && event.target.closest(`.${ATTACHED_ELEMENT_CLASS_NAME}`);
101
109
  // Clear selection when mouse board outside area
102
110
  // The framework needs to determine whether the board is focused through selection
103
- if (!isInBoard && !start && !isAttachedElement && isInDocument) {
111
+ if (!isInBoard && !screenStart && !isAttachedElement && isInDocument) {
104
112
  Transforms.setSelection(board, null);
105
113
  }
106
114
  }
107
- start = null;
108
- end = null;
115
+ screenStart = null;
116
+ screenEnd = null;
109
117
  if (timerId) {
110
118
  clearTimeout(timerId);
111
119
  timerId = null;
@@ -178,13 +186,12 @@ export function withSelection(board) {
178
186
  }
179
187
  }
180
188
  const newElements = getSelectedElements(board);
181
- previousSelectedElements = [...newElements];
182
189
  deleteTemporaryElements(board);
183
190
  if (!isSelectionMoving(board)) {
184
191
  selectionRectangleG?.remove();
185
192
  if (newElements.length > 1) {
186
193
  selectionRectangleG = board.drawSelectionRectangle();
187
- PlaitBoard.getElementActiveHost(board).append(selectionRectangleG);
194
+ PlaitBoard.getActiveHost(board).append(selectionRectangleG);
188
195
  }
189
196
  }
190
197
  }
@@ -199,14 +206,9 @@ export function withSelection(board) {
199
206
  try {
200
207
  const currentSelectedElements = getSelectedElements(board);
201
208
  if (currentSelectedElements.length && currentSelectedElements.length > 1) {
202
- if (previousSelectedElements &&
203
- (currentSelectedElements.length !== previousSelectedElements.length ||
204
- currentSelectedElements.some((c, index) => c !== previousSelectedElements[index]))) {
205
- selectionRectangleG?.remove();
206
- selectionRectangleG = board.drawSelectionRectangle();
207
- PlaitBoard.getElementActiveHost(board).append(selectionRectangleG);
208
- previousSelectedElements = [...currentSelectedElements];
209
- }
209
+ selectionRectangleG?.remove();
210
+ selectionRectangleG = board.drawSelectionRectangle();
211
+ PlaitBoard.getActiveHost(board).append(selectionRectangleG);
210
212
  }
211
213
  else {
212
214
  selectionRectangleG?.remove();
@@ -225,4 +227,4 @@ export function withSelection(board) {
225
227
  });
226
228
  return board;
227
229
  }
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFnQixnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsRUFDZCw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLG1CQUFtQixFQUN0QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBFLE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBaUI7SUFDM0Ms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QUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdkUsSUFDSSx3QkFBd0I7d0JBQ3hCLENBQUMsdUJBQXVCLENBQUMsTUFBTSxLQUFLLHdCQUF3QixDQUFDLE1BQU07NEJBQy9ELHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ3hGLENBQUM7d0JBQ0MsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLENBQUM7d0JBQzlCLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO3dCQUNyRCxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFvQixDQUFDLENBQUM7d0JBQ3BFLHdCQUF3QixHQUFHLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDSixtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRixtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7UUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLHVCQUF1QixFQUFFLEtBQUs7S0FDakMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc01haW5Qb2ludGVyIH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbixcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzSGl0RWxlbWVudCxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBsYWl0UG9pbnRlclR5cGUsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsIFNFTEVDVElPTl9GSUxMX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7XG4gICAgY2xlYXJTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgZHJhd1JlY3RhbmdsZSxcbiAgICBnZXRUZW1wb3JhcnlFbGVtZW50cyxcbiAgICBpc0RyYWdnaW5nLFxuICAgIGlzSGFuZGxlU2VsZWN0aW9uLFxuICAgIGlzU2VsZWN0aW9uTW92aW5nLFxuICAgIHNldFNlbGVjdGlvbk1vdmluZyxcbiAgICB0aHJvdHRsZVJBRixcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludCxcbiAgICBzZXRTZWxlY3RlZEVsZW1lbnRzV2l0aEdyb3VwLFxuICAgIGhhc1NldFNlbGVjdGlvbk9wZXJhdGlvbixcbiAgICBnZXRTZWxlY3Rpb25PcHRpb25zLFxuICAgIHNldFNlbGVjdGlvbk9wdGlvbnMsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBpc01vYmlsZURldmljZUV2ZW50XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IERSQUdfU0VMRUNUSU9OX1BSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2VsZWN0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlclVwLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBvbkNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGRyYXdTZWxlY3Rpb25SZWN0YW5nbGUgfSA9IGJvYXJkO1xuICAgIGxldCBzdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgZW5kOiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzZWxlY3Rpb25Nb3ZpbmdHOiBTVkdHRWxlbWVudDtcbiAgICBsZXQgc2VsZWN0aW9uUmVjdGFuZ2xlRzogU1ZHR0VsZW1lbnQgfCBudWxsO1xuICAgIGxldCBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdO1xuICAgIGxldCBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgbGV0IHRpbWVySWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHBvaW50ZXJEb3duRXZlbnQ6IFBvaW50ZXJFdmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzU2hpZnQgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NoaWZ0ICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgaXNTaGlmdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IGlzSGl0VGFyZ2V0ID0gaXNIaXRFbGVtZW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJlxuICAgICAgICAgICAgIWlzSGl0VGFyZ2V0ICYmXG4gICAgICAgICAgICBvcHRpb25zLmlzTXVsdGlwbGVTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBzdGFydCBkcmFnIHNlbGVjdGlvblxuICAgICAgICAgICAgaWYgKGlzTW9iaWxlRGV2aWNlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgICAgICAgICB0aW1lcklkID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9LCAxMjApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJEb3duRXZlbnQgPSBldmVudDtcbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRpbWVySWQgJiZcbiAgICAgICAgICAgIHBvaW50ZXJEb3duRXZlbnQgJiZcbiAgICAgICAgICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRlckRvd25FdmVudC54LCBwb2ludGVyRG93bkV2ZW50LnksIGV2ZW50LngsIGV2ZW50LnkpID4gRFJBR19TRUxFQ1RJT05fUFJFU1NfQU5EX01PVkVfQlVGRkVSXG4gICAgICAgICkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiYgc3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vdmVkVGFyZ2V0ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3N0YXJ0LCBtb3ZlZFRhcmdldF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBlbmQgPSBtb3ZlZFRhcmdldDtcbiAgICAgICAgICAgIHRocm90dGxlUkFGKGJvYXJkLCAnd2l0aC1zZWxlY3Rpb24nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0U2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0cgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25Nb3ZpbmdHKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIC8vIGhhbmRsZSB0aGUgZW5kIG9mIGNsaWNrIHNlbGVjdFxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0U2VsZWN0aW9uUG9pbnRlciA9XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpO1xuICAgICAgICBjb25zdCBpc1NraXAgPSAhaXNNYWluUG9pbnRlcihldmVudCkgfHwgaXNEcmFnZ2luZyhib2FyZCkgfHwgIWlzU2V0U2VsZWN0aW9uUG9pbnRlcjtcbiAgICAgICAgaWYgKGlzU2tpcCkge1xuICAgICAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9O1xuICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgc2VsZWN0aW9uKTtcbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkKTtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNGb2N1cyhib2FyZCkgJiYgIW9wdGlvbnMuaXNQcmV2ZW50Q2xlYXJTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Cb2FyZCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Eb2N1bWVudCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgZG9jdW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXR0YWNoZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdChgLiR7QVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FfWApO1xuICAgICAgICAgICAgLy8gQ2xlYXIgc2VsZWN0aW9uIHdoZW4gbW91c2UgYm9hcmQgb3V0c2lkZSBhcmVhXG4gICAgICAgICAgICAvLyBUaGUgZnJhbWV3b3JrIG5lZWRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBib2FyZCBpcyBmb2N1c2VkIHRocm91Z2ggc2VsZWN0aW9uXG4gICAgICAgICAgICBpZiAoIWlzSW5Cb2FyZCAmJiAhc3RhcnQgJiYgIWlzQXR0YWNoZWRFbGVtZW50ICYmIGlzSW5Eb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgIGVuZCA9IG51bGw7XG4gICAgICAgIGlmICh0aW1lcklkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bkV2ZW50ID0gbnVsbDtcbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdGlvbikge1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBlbGVtZW50IGlmIGluY2x1ZGVcbiAgICAgICAgYm9hcmQub3BlcmF0aW9ucy5mb3JFYWNoKChvcCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT09ICdyZW1vdmVfbm9kZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG9wLm5vZGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiBoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLnRlbXBvcmFyeUVsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbihib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlU2VsZWN0aW9uICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hpdEVsZW1lbnRXaXRoR3JvdXAgPSBlbGVtZW50cy5zb21lKChpdGVtKSA9PiBpdGVtLmdyb3VwSWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0hpdEVsZW1lbnRXaXRoR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkRWxlbWVudHNXaXRoR3JvdXAoYm9hcmQsIGVsZW1lbnRzLCBpc1NoaWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gYm9hcmQuZ2V0T25lSGl0RWxlbWVudChlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50cyA9IFsuLi5zZWxlY3RlZEVsZW1lbnRzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9hcmQuc2VsZWN0aW9uICYmIFNlbGVjdGlvbi5pc0NvbGxhcHNlZChib2FyZC5zZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnNwbGljZShuZXdFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3RWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3RWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4ubmV3RWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLmVsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgPSBbLi4ubmV3RWxlbWVudHNdO1xuICAgICAgICAgICAgICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBib2FyZC5kcmF3U2VsZWN0aW9uUmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uUmVjdGFuZ2xlRyEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSgpO1xuICAgIH07XG5cbiAgICBib2FyZC5hZnRlckNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiAhaGFzU2V0U2VsZWN0aW9uT3BlcmF0aW9uKGJvYXJkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggJiYgY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5zb21lKChjLCBpbmRleCkgPT4gYyAhPT0gcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzW2luZGV4XSkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHID0gYm9hcmQuZHJhd1NlbGVjdGlvblJlY3RhbmdsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHNlbGVjdGlvblJlY3RhbmdsZUchKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5jdXJyZW50U2VsZWN0ZWRFbGVtZW50c107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFmdGVyQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIHNldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQsIHtcbiAgICAgICAgaXNNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgaXNEaXNhYmxlZFNlbGVjdGlvbjogZmFsc2UsXG4gICAgICAgIGlzUHJldmVudENsZWFyU2VsZWN0aW9uOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLDRCQUE0QixFQUM1Qix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDaEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRSxNQUFNLFVBQVUsYUFBYSxDQUFDLEtB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LENBQUM7UUFDTCxDQUFDO1FBQ0QsUUFBUSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUNyQixJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUM7Z0JBQ0QsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLElBQUksdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN2RSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDOUIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3JELFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFvQixDQUFDLENBQUM7Z0JBQ2pFLENBQUM7cUJBQU0sQ0FBQztvQkFDSixtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRixtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7UUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLHVCQUF1QixFQUFFLEtBQUs7S0FDakMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc01haW5Qb2ludGVyIH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbixcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzSGl0RWxlbWVudCxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlLCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLCBTRUxFQ1RJT05fRklMTF9DT0xPUiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3NlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nLFxuICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzLFxuICAgIGRyYXdSZWN0YW5nbGUsXG4gICAgZ2V0VGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgaXNEcmFnZ2luZyxcbiAgICBpc0hhbmRsZVNlbGVjdGlvbixcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgdGhyb3R0bGVSQUYsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cCxcbiAgICBoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24sXG4gICAgZ2V0U2VsZWN0aW9uT3B0aW9ucyxcbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgaXNNb2JpbGVEZXZpY2VFdmVudCxcbiAgICB0b0FjdGl2ZVBvaW50XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IERSQUdfU0VMRUNUSU9OX1BSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2VsZWN0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlclVwLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBvbkNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGRyYXdTZWxlY3Rpb25SZWN0YW5nbGUgfSA9IGJvYXJkO1xuICAgIGxldCBzY3JlZW5TdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2NyZWVuRW5kOiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzZWxlY3Rpb25Nb3ZpbmdHOiBTVkdHRWxlbWVudDtcbiAgICBsZXQgc2VsZWN0aW9uUmVjdGFuZ2xlRzogU1ZHR0VsZW1lbnQgfCBudWxsO1xuICAgIGxldCBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgbGV0IHRpbWVySWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHBvaW50ZXJEb3duRXZlbnQ6IFBvaW50ZXJFdmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzU2hpZnQgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NoaWZ0ICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgaXNTaGlmdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IGlzSGl0VGFyZ2V0ID0gaXNIaXRFbGVtZW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJlxuICAgICAgICAgICAgaXNNYWluUG9pbnRlcihldmVudCkgJiZcbiAgICAgICAgICAgICFpc0hpdFRhcmdldCAmJlxuICAgICAgICAgICAgb3B0aW9ucy5pc011bHRpcGxlU2VsZWN0aW9uICYmXG4gICAgICAgICAgICAhb3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGlzTW9iaWxlRGV2aWNlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzY3JlZW5TdGFydCA9IFtldmVudC54LCBldmVudC55XTtcbiAgICAgICAgICAgICAgICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSwgMTIwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2NyZWVuU3RhcnQgPSBbZXZlbnQueCwgZXZlbnQueV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd25FdmVudCA9IGV2ZW50O1xuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZXJJZCAmJlxuICAgICAgICAgICAgcG9pbnRlckRvd25FdmVudCAmJlxuICAgICAgICAgICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChwb2ludGVyRG93bkV2ZW50LngsIHBvaW50ZXJEb3duRXZlbnQueSwgZXZlbnQueCwgZXZlbnQueSkgPiBEUkFHX1NFTEVDVElPTl9QUkVTU19BTkRfTU9WRV9CVUZGRVJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJiBzY3JlZW5TdGFydCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNjcmVlbkVuZCA9IFtldmVudC54LCBldmVudC55XTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbXG4gICAgICAgICAgICAgICAgdG9BY3RpdmVQb2ludChib2FyZCwgLi4uc2NyZWVuU3RhcnQpLFxuICAgICAgICAgICAgICAgIHRvQWN0aXZlUG9pbnQoYm9hcmQsIC4uLnNjcmVlbkVuZClcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aHJvdHRsZVJBRihib2FyZCwgJ3dpdGgtc2VsZWN0aW9uJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzY3JlZW5TdGFydCAmJiBzY3JlZW5FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcjogdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBzY3JlZW5TdGFydFswXSwgc2NyZWVuU3RhcnRbMV0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOiB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIHNjcmVlbkVuZFswXSwgc2NyZWVuRW5kWzFdKSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRyA9IGRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlY3RhbmdsZSwge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uTW92aW5nRyk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICAvLyBoYW5kbGUgdGhlIGVuZCBvZiBjbGljayBzZWxlY3RcbiAgICBib2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc1NldFNlbGVjdGlvblBvaW50ZXIgPVxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSB8fCBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKTtcbiAgICAgICAgY29uc3QgaXNTa2lwID0gIWlzTWFpblBvaW50ZXIoZXZlbnQpIHx8IGlzRHJhZ2dpbmcoYm9hcmQpIHx8ICFpc1NldFNlbGVjdGlvblBvaW50ZXI7XG4gICAgICAgIGlmIChpc1NraXApIHtcbiAgICAgICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0geyBhbmNob3I6IHBvaW50LCBmb2N1czogcG9pbnQgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHNlbGVjdGlvbik7XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzY3JlZW5TdGFydCAmJiBzY3JlZW5FbmQpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0c/LnJlbW92ZSgpO1xuICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgc2NyZWVuU3RhcnRbMF0sIHNjcmVlblN0YXJ0WzFdKSksXG4gICAgICAgICAgICAgICAgZm9jdXM6IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgc2NyZWVuRW5kWzBdLCBzY3JlZW5FbmRbMV0pKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQpO1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSAmJiAhb3B0aW9ucy5pc1ByZXZlbnRDbGVhclNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzY3JlZW5TdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNjcmVlblN0YXJ0ID0gbnVsbDtcbiAgICAgICAgc2NyZWVuRW5kID0gbnVsbDtcbiAgICAgICAgaWYgKHRpbWVySWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJEb3duRXZlbnQgPSBudWxsO1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQpO1xuICAgICAgICBpZiAob3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgaWYgaW5jbHVkZVxuICAgICAgICBib2FyZC5vcGVyYXRpb25zLmZvckVhY2goKG9wKSA9PiB7XG4gICAgICAgICAgICBpZiAob3AudHlwZSA9PT0gJ3JlbW92ZV9ub2RlJykge1xuICAgICAgICAgICAgICAgIHJlbW92ZVNlbGVjdGVkRWxlbWVudChib2FyZCwgb3Aubm9kZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmIGhhc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1NoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0ZW1wb3JhcnlFbGVtZW50cyA9IGdldFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAodGVtcG9yYXJ5RWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4udGVtcG9yYXJ5RWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHMgPSBnZXRIaXRFbGVtZW50c0J5U2VsZWN0aW9uKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlzTXVsdGlwbGVTZWxlY3Rpb24gJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGl0RWxlbWVudFdpdGhHcm91cCA9IGVsZW1lbnRzLnNvbWUoKGl0ZW0pID0+IGl0ZW0uZ3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSGl0RWxlbWVudFdpdGhHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cChib2FyZCwgZWxlbWVudHMsIGlzU2hpZnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvYXJkLnNlbGVjdGlvbiAmJiBTZWxlY3Rpb24uaXNDb2xsYXBzZWQoYm9hcmQuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBib2FyZC5nZXRPbmVIaXRFbGVtZW50KGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gWy4uLnNlbGVjdGVkRWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMuc3BsaWNlKG5ld0VsZW1lbnRzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBuZXdFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFsuLi5uZXdFbGVtZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4uZWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBib2FyZC5kcmF3U2VsZWN0aW9uUmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmICFoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCAmJiBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHID0gYm9hcmQuZHJhd1NlbGVjdGlvblJlY3RhbmdsZSgpO1xuICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhZnRlckNoYW5nZSgpO1xuICAgIH07XG5cbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkLCB7XG4gICAgICAgIGlzTXVsdGlwbGVTZWxlY3Rpb246IHRydWUsXG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICBpc1ByZXZlbnRDbGVhclNlbGVjdGlvbjogZmFsc2VcbiAgICB9KTtcblxuICAgIHJldHVybiBib2FyZDtcbn1cbiJdfQ==
@@ -2,6 +2,7 @@ import { PlaitBoard, RectangleClient } from '../interfaces';
2
2
  import { Transforms } from '../transforms';
3
3
  import { getRectangleByElements } from './element';
4
4
  import { approximately, rotate } from './math';
5
+ import { toActiveRectangleFromViewBoxRectangle } from './to-point';
5
6
  export const rotatePoints = (points, centerPoint, angle) => {
6
7
  if (!angle) {
7
8
  angle = 0;
@@ -10,14 +11,14 @@ export const rotatePoints = (points, centerPoint, angle) => {
10
11
  return rotate(points[0], points[1], centerPoint[0], centerPoint[1], angle);
11
12
  }
12
13
  else {
13
- return points.map(point => {
14
+ return points.map((point) => {
14
15
  return rotate(point[0], point[1], centerPoint[0], centerPoint[1], angle || 0);
15
16
  });
16
17
  }
17
18
  };
18
19
  export const getSelectionAngle = (elements) => {
19
20
  let angle = elements[0]?.angle || 0;
20
- elements.forEach(item => {
21
+ elements.forEach((item) => {
21
22
  if (item.angle !== angle && !approximately(((item.angle || 0) % (Math.PI / 2)) - (angle % (Math.PI / 2)), 0)) {
22
23
  angle = 0;
23
24
  }
@@ -32,7 +33,7 @@ export const hasSameAngle = (elements) => {
32
33
  if (angle === undefined) {
33
34
  return false;
34
35
  }
35
- return !elements.some(item => item.angle !== angle);
36
+ return !elements.some((item) => item.angle !== angle);
36
37
  };
37
38
  export const getRotatedBoundingRectangle = (rectanglesCornerPoints, angle) => {
38
39
  let rectanglesFromOrigin = [];
@@ -56,7 +57,7 @@ export const getOffsetAfterRotate = (rectangle, rotateCenterPoint, angle) => {
56
57
  };
57
58
  export const rotatedDataPoints = (points, rotateCenterPoint, angle) => {
58
59
  const { offsetX, offsetY } = getOffsetAfterRotate(RectangleClient.getRectangleByPoints(points), rotateCenterPoint, angle);
59
- return points.map(p => [p[0] + offsetX, p[1] + offsetY]);
60
+ return points.map((p) => [p[0] + offsetX, p[1] + offsetY]);
60
61
  };
61
62
  export const hasValidAngle = (node) => {
62
63
  return isValidAngle(node.angle);
@@ -84,10 +85,11 @@ export const rotatePointsByAngle = (points, angle) => {
84
85
  return null;
85
86
  }
86
87
  };
87
- export const rotateAntiPointsByElement = (points, element) => {
88
+ export const rotateAntiPointsByElement = (board, points, element, isToActive = false) => {
88
89
  if (hasValidAngle(element)) {
89
90
  let rectangle = RectangleClient.getRectangleByPoints(element.points);
90
- const centerPoint = RectangleClient.getCenterPoint(rectangle);
91
+ const activeRectangle = isToActive ? toActiveRectangleFromViewBoxRectangle(board, rectangle) : rectangle;
92
+ const centerPoint = RectangleClient.getCenterPoint(activeRectangle);
91
93
  return rotatePoints(points, centerPoint, element.angle ? -element.angle : 0);
92
94
  }
93
95
  else {
@@ -115,7 +117,7 @@ export function radiansToDegrees(r) {
115
117
  export function rotateElements(board, elements, angle) {
116
118
  const selectionRectangle = getRectangleByElements(board, elements, false);
117
119
  const selectionCenterPoint = RectangleClient.getCenterPoint(selectionRectangle);
118
- elements.forEach(item => {
120
+ elements.forEach((item) => {
119
121
  const originAngle = item.angle;
120
122
  const points = rotatedDataPoints(item.points, selectionCenterPoint, normalizeAngle(angle));
121
123
  const path = PlaitBoard.findPath(board, item);
@@ -159,4 +161,4 @@ export const setAngleForG = (g, centerPoint, angle) => {
159
161
  let matrix = 'matrix(' + transformMatrix.join(',') + ')';
160
162
  g.setAttribute('transform', `${matrix}`);
161
163
  };
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5nbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9hbmdsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF1QixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUksTUFBUyxFQUFFLFdBQWtCLEVBQUUsS0FBYyxFQUFLLEVBQUU7SUFDaEYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1QsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBTSxDQUFDO0lBQ3BGLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBUSxNQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENB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Q0QsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFL0IsSUFBSSxlQUFlLEdBQUc7UUFDbEIsUUFBUTtRQUNSLFFBQVE7UUFDUixDQUFDLFFBQVE7UUFDVCxRQUFRO1FBQ1IsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLE9BQU8sR0FBRyxRQUFRO1FBQzdDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsUUFBUTtLQUNoRCxDQUFDO0lBRUYsSUFBSSxNQUFNLEdBQUcsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3pELENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgYXBwcm94aW1hdGVseSwgcm90YXRlIH0gZnJvbSAnLi9tYXRoJztcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50cyA9IDxUPihwb2ludHM6IFQsIGNlbnRlclBvaW50OiBQb2ludCwgYW5nbGU/OiBudW1iZXIpOiBUID0+IHtcbiAgICBpZiAoIWFuZ2xlKSB7XG4gICAgICAgIGFuZ2xlID0gMDtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocG9pbnRzKSAmJiB0eXBlb2YgcG9pbnRzWzBdID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gcm90YXRlKHBvaW50c1swXSwgcG9pbnRzWzFdLCBjZW50ZXJQb2ludFswXSwgY2VudGVyUG9pbnRbMV0sIGFuZ2xlKSBhcyBUO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAocG9pbnRzIGFzIFBvaW50W10pLm1hcChwb2ludCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlKHBvaW50WzBdLCBwb2ludFsxXSwgY2VudGVyUG9pbnRbMF0sIGNlbnRlclBvaW50WzFdLCBhbmdsZSB8fCAwKTtcbiAgICAgICAgfSkgYXMgVDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0aW9uQW5nbGUgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IGFuZ2xlID0gZWxlbWVudHNbMF0/LmFuZ2xlIHx8IDA7XG4gICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uYW5nbGUgIT09IGFuZ2xlICYmICFhcHByb3hpbWF0ZWx5KCgoaXRlbS5hbmdsZSB8fCAwKSAlIChNYXRoLlBJIC8gMikpIC0gKGFuZ2xlICUgKE1hdGguUEkgLyAyKSksIDApKSB7XG4gICAgICAgICAgICBhbmdsZSA9IDA7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYW5nbGU7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzU2FtZUFuZ2xlID0gKGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhbmdsZSA9IGVsZW1lbnRzWzBdLmFuZ2xlO1xuICAgIGlmIChhbmdsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWVsZW1lbnRzLnNvbWUoaXRlbSA9PiBpdGVtLmFuZ2xlICE9PSBhbmdsZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Um90YXRlZEJvdW5kaW5nUmVjdGFuZ2xlID0gKHJlY3RhbmdsZXNDb3JuZXJQb2ludHM6IFtQb2ludCwgUG9pbnQsIFBvaW50LCBQb2ludF1bXSwgYW5nbGU6IG51bWJlcikgPT4ge1xuICAgIGxldCByZWN0YW5nbGVzRnJvbU9yaWdpbjogUmVjdGFuZ2xlQ2xpZW50W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY3RhbmdsZXNDb3JuZXJQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY29ybmVyUG9pbnRzID0gcmVjdGFuZ2xlc0Nvcm5lclBvaW50c1tpXTtcbiAgICAgICAgY29uc3QgaW52ZXJ0Q29ybmVyUG9pbnRzRnJvbU9yaWdpbiA9IHJvdGF0ZVBvaW50cyhjb3JuZXJQb2ludHMsIFswLCAwXSwgLWFuZ2xlKTtcbiAgICAgICAgcmVjdGFuZ2xlc0Zyb21PcmlnaW4ucHVzaChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoaW52ZXJ0Q29ybmVyUG9pbnRzRnJvbU9yaWdpbikpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZUZyb21PcmlnaW4gPSBSZWN0YW5nbGVDbGllbnQuZ2V0Qm91bmRpbmdSZWN0YW5nbGUocmVjdGFuZ2xlc0Zyb21PcmlnaW4pO1xuICAgIGNvbnN0IHNlbGVjdGlvbkNvcm5lclBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMoc2VsZWN0aW9uUmVjdGFuZ2xlRnJvbU9yaWdpbik7XG4gICAgY29uc3QgY29ybmVyUG9pbnRzRnJvbU9yaWdpbiA9IHJvdGF0ZVBvaW50cyhzZWxlY3Rpb25Db3JuZXJQb2ludHMsIFswLCAwXSwgYW5nbGUpO1xuICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjb3JuZXJQb2ludHNGcm9tT3JpZ2luKSk7XG4gICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyb3RhdGVQb2ludHMoY29ybmVyUG9pbnRzRnJvbU9yaWdpbiwgY2VudGVyUG9pbnQsIC1hbmdsZSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9mZnNldEFmdGVyUm90YXRlID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCByb3RhdGVDZW50ZXJQb2ludDogUG9pbnQsIGFuZ2xlOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB0YXJnZXRDZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChyZWN0YW5nbGUpO1xuICAgIGNvbnN0IFtyb3RhdGVkQ2VudGVyUG9pbnRdID0gcm90YXRlUG9pbnRzKFt0YXJnZXRDZW50ZXJQb2ludF0sIHJvdGF0ZUNlbnRlclBvaW50LCBhbmdsZSk7XG4gICAgY29uc3Qgb2Zmc2V0WCA9IHJvdGF0ZWRDZW50ZXJQb2ludFswXSAtIHRhcmdldENlbnRlclBvaW50WzBdO1xuICAgIGNvbnN0IG9mZnNldFkgPSByb3RhdGVkQ2VudGVyUG9pbnRbMV0gLSB0YXJnZXRDZW50ZXJQb2ludFsxXTtcbiAgICByZXR1cm4geyBvZmZzZXRYLCBvZmZzZXRZIH07XG59O1xuXG5leHBvcnQgY29uc3Qgcm90YXRlZERhdGFQb2ludHMgPSAocG9pbnRzOiBQb2ludFtdLCByb3RhdGVDZW50ZXJQb2ludDogUG9pbnQsIGFuZ2xlOiBudW1iZXIpOiBQb2ludFtdID0+IHtcbiAgICBjb25zdCB7IG9mZnNldFgsIG9mZnNldFkgfSA9IGdldE9mZnNldEFmdGVyUm90YXRlKFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpLCByb3RhdGVDZW50ZXJQb2ludCwgYW5nbGUpO1xuICAgIHJldHVybiBwb2ludHMubWFwKHAgPT4gW3BbMF0gKyBvZmZzZXRYLCBwWzFdICsgb2Zmc2V0WV0pIGFzIFBvaW50W107XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVmFsaWRBbmdsZSA9IChub2RlOiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gaXNWYWxpZEFuZ2xlKG5vZGUuYW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRBbmdsZSA9IChhbmdsZTogdW5kZWZpbmVkIHwgbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGFuZ2xlICYmIGFuZ2xlICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50c0J5RWxlbWVudCA9IDxUPihwb2ludHM6IFQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCk6IFQgfCBudWxsID0+IHtcbiAgICBpZiAoaGFzVmFsaWRBbmdsZShlbGVtZW50KSkge1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiByb3RhdGVQb2ludHMocG9pbnRzLCBjZW50ZXJQb2ludCwgZWxlbWVudC5hbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50c0J5QW5nbGUgPSAocG9pbnRzOiBQb2ludFtdLCBhbmdsZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogUG9pbnRbXSB8IG51bGwgPT4ge1xuICAgIGlmIChpc1ZhbGlkQW5nbGUoYW5nbGUpKSB7XG4gICAgICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIHJvdGF0ZVBvaW50cyhwb2ludHMsIGNlbnRlclBvaW50LCBhbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQgPSA8VD4ocG9pbnRzOiBULCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpOiBUIHwgbnVsbCA9PiB7XG4gICAgaWYgKGhhc1ZhbGlkQW5nbGUoZWxlbWVudCkpIHtcbiAgICAgICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChyZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gcm90YXRlUG9pbnRzKHBvaW50cywgY2VudGVyUG9pbnQsIGVsZW1lbnQuYW5nbGUgPyAtZWxlbWVudC5hbmdsZSA6IDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWN0YW5nbGVCeUFuZ2xlID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyb3RhdGVQb2ludHMoY29ybmVyUG9pbnRzLCBjZW50ZXJQb2ludCwgYW5nbGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY3RhbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0F4aXNDaGFuZ2VkQnlBbmdsZSA9IChhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdW5pdEFuZ2xlID0gTWF0aC5hYnMoYW5nbGUpICUgTWF0aC5QSTtcbiAgICByZXR1cm4gdW5pdEFuZ2xlID49ICgxIC8gNCkgKiBNYXRoLlBJICYmIHVuaXRBbmdsZSA8PSAoMyAvIDQpICogTWF0aC5QSTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWdyZWVzVG9SYWRpYW5zKGQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChkIC8gMTgwKSAqIE1hdGguUEk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYWRpYW5zVG9EZWdyZWVzKHI6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChyIC8gTWF0aC5QSSkgKiAxODA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCBhbmdsZTogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25DZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChzZWxlY3Rpb25SZWN0YW5nbGUpO1xuICAgIGVsZW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbkFuZ2xlID0gaXRlbS5hbmdsZTtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gcm90YXRlZERhdGFQb2ludHMoaXRlbS5wb2ludHMhLCBzZWxlY3Rpb25DZW50ZXJQb2ludCwgbm9ybWFsaXplQW5nbGUoYW5nbGUpKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGl0ZW0pO1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzLCBhbmdsZTogbm9ybWFsaXplQW5nbGUoKG9yaWdpbkFuZ2xlIHx8IDApICsgYW5nbGUpIH0sIHBhdGgpO1xuICAgIH0pO1xufVxuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplQW5nbGUgPSAoYW5nbGU6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgaWYgKGFuZ2xlIDwgMCkge1xuICAgICAgICByZXR1cm4gYW5nbGUgKyAyICogTWF0aC5QSTtcbiAgICB9XG4gICAgaWYgKGFuZ2xlID49IDIgKiBNYXRoLlBJKSB7XG4gICAgICAgIHJldHVybiBhbmdsZSAtIDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICByZXR1cm4gYW5nbGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QW5nbGVCZXR3ZWVuUG9pbnRzID0gKHN0YXJ0UG9pbnQ6IFBvaW50LCBlbmRQb2ludDogUG9pbnQsIGNlbnRlclBvaW50OiBQb2ludCk6IG51bWJlciA9PiB7XG4gICAgY29uc3Qgc3RhcnRBbmdsZSA9ICg1ICogTWF0aC5QSSkgLyAyICsgTWF0aC5hdGFuMihzdGFydFBvaW50WzFdIC0gY2VudGVyUG9pbnRbMV0sIHN0YXJ0UG9pbnRbMF0gLSBjZW50ZXJQb2ludFswXSk7XG4gICAgY29uc3QgZW5kQW5nbGUgPSAoNSAqIE1hdGguUEkpIC8gMiArIE1hdGguYXRhbjIoZW5kUG9pbnRbMV0gLSBjZW50ZXJQb2ludFsxXSwgZW5kUG9pbnRbMF0gLSBjZW50ZXJQb2ludFswXSk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZUFuZ2xlKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QW5nbGVCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICByZXR1cm4gZWxlbWVudD8uYW5nbGU7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QW5nbGVGb3JHID0gKGc6IFNWR0dFbGVtZW50LCBjZW50ZXJQb2ludDogUG9pbnQsIGFuZ2xlOiBudW1iZXIpID0+IHtcbiAgICBpZiAoYW5nbGUgPT09IDApIHtcbiAgICAgICAgZy5yZW1vdmVBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBjZW50ZXJYID0gY2VudGVyUG9pbnRbMF07XG4gICAgdmFyIGNlbnRlclkgPSBjZW50ZXJQb2ludFsxXTtcblxuICAgIGxldCBjb3NUaGV0YSA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICBsZXQgc2luVGhldGEgPSBNYXRoLnNpbihhbmdsZSk7XG5cbiAgICBsZXQgdHJhbnNmb3JtTWF0cml4ID0gW1xuICAgICAgICBjb3NUaGV0YSxcbiAgICAgICAgc2luVGhldGEsXG4gICAgICAgIC1zaW5UaGV0YSxcbiAgICAgICAgY29zVGhldGEsXG4gICAgICAgIGNlbnRlclggKiAoMSAtIGNvc1RoZXRhKSArIGNlbnRlclkgKiBzaW5UaGV0YSxcbiAgICAgICAgY2VudGVyWSAqICgxIC0gY29zVGhldGEpIC0gY2VudGVyWCAqIHNpblRoZXRhXG4gICAgXTtcblxuICAgIGxldCBtYXRyaXggPSAnbWF0cml4KCcgKyB0cmFuc2Zvcm1NYXRyaXguam9pbignLCcpICsgJyknO1xuICAgIGcuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCBgJHttYXRyaXh9YCk7XG59O1xuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5nbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9hbmdsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF1QixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFJLE1BQVMsRUFBRSxXQUFrQixFQUFFLEtBQWMsRUFBSyxFQUFFO0lBQ2hGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3pELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQU0sQ0FBQztJQUNwRixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQVEsTUFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMs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S0FBSyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQWMsRUFBRSxXQUFrQixFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQzlFLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQixPQUFPO0lBQ1gsQ0FBQztJQUNELElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRS9CLElBQUksZUFBZSxHQUFHO1FBQ2xCLFFBQVE7UUFDUixRQUFRO1FBQ1IsQ0FBQyxRQUFRO1FBQ1QsUUFBUTtRQUNSLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsUUFBUTtRQUM3QyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsT0FBTyxHQUFHLFFBQVE7S0FDaEQsQ0FBQztJQUVGLElBQUksTUFBTSxHQUFHLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN6RCxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGFwcHJveGltYXRlbHksIHJvdGF0ZSB9IGZyb20gJy4vbWF0aCc7XG5pbXBvcnQgeyB0b0FjdGl2ZVJlY3RhbmdsZUZyb21WaWV3Qm94UmVjdGFuZ2xlIH0gZnJvbSAnLi90by1wb2ludCc7XG5cbmV4cG9ydCBjb25zdCByb3RhdGVQb2ludHMgPSA8VD4ocG9pbnRzOiBULCBjZW50ZXJQb2ludDogUG9pbnQsIGFuZ2xlPzogbnVtYmVyKTogVCA9PiB7XG4gICAgaWYgKCFhbmdsZSkge1xuICAgICAgICBhbmdsZSA9IDA7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHBvaW50cykgJiYgdHlwZW9mIHBvaW50c1swXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHJvdGF0ZShwb2ludHNbMF0sIHBvaW50c1sxXSwgY2VudGVyUG9pbnRbMF0sIGNlbnRlclBvaW50WzFdLCBhbmdsZSkgYXMgVDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKHBvaW50cyBhcyBQb2ludFtdKS5tYXAoKHBvaW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlKHBvaW50WzBdLCBwb2ludFsxXSwgY2VudGVyUG9pbnRbMF0sIGNlbnRlclBvaW50WzFdLCBhbmdsZSB8fCAwKTtcbiAgICAgICAgfSkgYXMgVDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0aW9uQW5nbGUgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IGFuZ2xlID0gZWxlbWVudHNbMF0/LmFuZ2xlIHx8IDA7XG4gICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5hbmdsZSAhPT0gYW5nbGUgJiYgIWFwcHJveGltYXRlbHkoKChpdGVtLmFuZ2xlIHx8IDApICUgKE1hdGguUEkgLyAyKSkgLSAoYW5nbGUgJSAoTWF0aC5QSSAvIDIpKSwgMCkpIHtcbiAgICAgICAgICAgIGFuZ2xlID0gMDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNTYW1lQW5nbGUgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFuZ2xlID0gZWxlbWVudHNbMF0uYW5nbGU7XG4gICAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhZWxlbWVudHMuc29tZSgoaXRlbSkgPT4gaXRlbS5hbmdsZSAhPT0gYW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJvdGF0ZWRCb3VuZGluZ1JlY3RhbmdsZSA9IChyZWN0YW5nbGVzQ29ybmVyUG9pbnRzOiBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdW10sIGFuZ2xlOiBudW1iZXIpID0+IHtcbiAgICBsZXQgcmVjdGFuZ2xlc0Zyb21PcmlnaW46IFJlY3RhbmdsZUNsaWVudFtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWN0YW5nbGVzQ29ybmVyUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IHJlY3RhbmdsZXNDb3JuZXJQb2ludHNbaV07XG4gICAgICAgIGNvbnN0IGludmVydENvcm5lclBvaW50c0Zyb21PcmlnaW4gPSByb3RhdGVQb2ludHMoY29ybmVyUG9pbnRzLCBbMCwgMF0sIC1hbmdsZSk7XG4gICAgICAgIHJlY3RhbmdsZXNGcm9tT3JpZ2luLnB1c2goUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGludmVydENvcm5lclBvaW50c0Zyb21PcmlnaW4pKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3Rpb25SZWN0YW5nbGVGcm9tT3JpZ2luID0gUmVjdGFuZ2xlQ2xpZW50LmdldEJvdW5kaW5nUmVjdGFuZ2xlKHJlY3RhbmdsZXNGcm9tT3JpZ2luKTtcbiAgICBjb25zdCBzZWxlY3Rpb25Db3JuZXJQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHNlbGVjdGlvblJlY3RhbmdsZUZyb21PcmlnaW4pO1xuICAgIGNvbnN0IGNvcm5lclBvaW50c0Zyb21PcmlnaW4gPSByb3RhdGVQb2ludHMoc2VsZWN0aW9uQ29ybmVyUG9pbnRzLCBbMCwgMF0sIGFuZ2xlKTtcbiAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoY29ybmVyUG9pbnRzRnJvbU9yaWdpbikpO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocm90YXRlUG9pbnRzKGNvcm5lclBvaW50c0Zyb21PcmlnaW4sIGNlbnRlclBvaW50LCAtYW5nbGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPZmZzZXRBZnRlclJvdGF0ZSA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcm90YXRlQ2VudGVyUG9pbnQ6IFBvaW50LCBhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0Q2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICBjb25zdCBbcm90YXRlZENlbnRlclBvaW50XSA9IHJvdGF0ZVBvaW50cyhbdGFyZ2V0Q2VudGVyUG9pbnRdLCByb3RhdGVDZW50ZXJQb2ludCwgYW5nbGUpO1xuICAgIGNvbnN0IG9mZnNldFggPSByb3RhdGVkQ2VudGVyUG9pbnRbMF0gLSB0YXJnZXRDZW50ZXJQb2ludFswXTtcbiAgICBjb25zdCBvZmZzZXRZID0gcm90YXRlZENlbnRlclBvaW50WzFdIC0gdGFyZ2V0Q2VudGVyUG9pbnRbMV07XG4gICAgcmV0dXJuIHsgb2Zmc2V0WCwgb2Zmc2V0WSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZWREYXRhUG9pbnRzID0gKHBvaW50czogUG9pbnRbXSwgcm90YXRlQ2VudGVyUG9pbnQ6IFBvaW50LCBhbmdsZTogbnVtYmVyKTogUG9pbnRbXSA9PiB7XG4gICAgY29uc3QgeyBvZmZzZXRYLCBvZmZzZXRZIH0gPSBnZXRPZmZzZXRBZnRlclJvdGF0ZShSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKSwgcm90YXRlQ2VudGVyUG9pbnQsIGFuZ2xlKTtcbiAgICByZXR1cm4gcG9pbnRzLm1hcCgocCkgPT4gW3BbMF0gKyBvZmZzZXRYLCBwWzFdICsgb2Zmc2V0WV0pIGFzIFBvaW50W107XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVmFsaWRBbmdsZSA9IChub2RlOiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gaXNWYWxpZEFuZ2xlKG5vZGUuYW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRBbmdsZSA9IChhbmdsZTogdW5kZWZpbmVkIHwgbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGFuZ2xlICYmIGFuZ2xlICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50c0J5RWxlbWVudCA9IDxUPihwb2ludHM6IFQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCk6IFQgfCBudWxsID0+IHtcbiAgICBpZiAoaGFzVmFsaWRBbmdsZShlbGVtZW50KSkge1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiByb3RhdGVQb2ludHMocG9pbnRzLCBjZW50ZXJQb2ludCwgZWxlbWVudC5hbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZVBvaW50c0J5QW5nbGUgPSAocG9pbnRzOiBQb2ludFtdLCBhbmdsZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogUG9pbnRbXSB8IG51bGwgPT4ge1xuICAgIGlmIChpc1ZhbGlkQW5nbGUoYW5nbGUpKSB7XG4gICAgICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIHJvdGF0ZVBvaW50cyhwb2ludHMsIGNlbnRlclBvaW50LCBhbmdsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQgPSA8VD4oXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcG9pbnRzOiBULFxuICAgIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCxcbiAgICBpc1RvQWN0aXZlOiBib29sZWFuID0gZmFsc2Vcbik6IFQgfCBudWxsID0+IHtcbiAgICBpZiAoaGFzVmFsaWRBbmdsZShlbGVtZW50KSkge1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IGlzVG9BY3RpdmUgPyB0b0FjdGl2ZVJlY3RhbmdsZUZyb21WaWV3Qm94UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUpIDogcmVjdGFuZ2xlO1xuICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChhY3RpdmVSZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gcm90YXRlUG9pbnRzKHBvaW50cywgY2VudGVyUG9pbnQsIGVsZW1lbnQuYW5nbGUgPyAtZWxlbWVudC5hbmdsZSA6IDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWN0YW5nbGVCeUFuZ2xlID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyb3RhdGVQb2ludHMoY29ybmVyUG9pbnRzLCBjZW50ZXJQb2ludCwgYW5nbGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY3RhbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0F4aXNDaGFuZ2VkQnlBbmdsZSA9IChhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdW5pdEFuZ2xlID0gTWF0aC5hYnMoYW5nbGUpICUgTWF0aC5QSTtcbiAgICByZXR1cm4gdW5pdEFuZ2xlID49ICgxIC8gNCkgKiBNYXRoLlBJICYmIHVuaXRBbmdsZSA8PSAoMyAvIDQpICogTWF0aC5QSTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWdyZWVzVG9SYWRpYW5zKGQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChkIC8gMTgwKSAqIE1hdGguUEk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYWRpYW5zVG9EZWdyZWVzKHI6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChyIC8gTWF0aC5QSSkgKiAxODA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCBhbmdsZTogbnVtYmVyKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25DZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChzZWxlY3Rpb25SZWN0YW5nbGUpO1xuICAgIGVsZW1lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luQW5nbGUgPSBpdGVtLmFuZ2xlO1xuICAgICAgICBjb25zdCBwb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyhpdGVtLnBvaW50cyEsIHNlbGVjdGlvbkNlbnRlclBvaW50LCBub3JtYWxpemVBbmdsZShhbmdsZSkpO1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgaXRlbSk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHMsIGFuZ2xlOiBub3JtYWxpemVBbmdsZSgob3JpZ2luQW5nbGUgfHwgMCkgKyBhbmdsZSkgfSwgcGF0aCk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVBbmdsZSA9IChhbmdsZTogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAoYW5nbGUgPCAwKSB7XG4gICAgICAgIHJldHVybiBhbmdsZSArIDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICBpZiAoYW5nbGUgPj0gMiAqIE1hdGguUEkpIHtcbiAgICAgICAgcmV0dXJuIGFuZ2xlIC0gMiAqIE1hdGguUEk7XG4gICAgfVxuICAgIHJldHVybiBhbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbmdsZUJldHdlZW5Qb2ludHMgPSAoc3RhcnRQb2ludDogUG9pbnQsIGVuZFBvaW50OiBQb2ludCwgY2VudGVyUG9pbnQ6IFBvaW50KTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzdGFydEFuZ2xlID0gKDUgKiBNYXRoLlBJKSAvIDIgKyBNYXRoLmF0YW4yKHN0YXJ0UG9pbnRbMV0gLSBjZW50ZXJQb2ludFsxXSwgc3RhcnRQb2ludFswXSAtIGNlbnRlclBvaW50WzBdKTtcbiAgICBjb25zdCBlbmRBbmdsZSA9ICg1ICogTWF0aC5QSSkgLyAyICsgTWF0aC5hdGFuMihlbmRQb2ludFsxXSAtIGNlbnRlclBvaW50WzFdLCBlbmRQb2ludFswXSAtIGNlbnRlclBvaW50WzBdKTtcbiAgICByZXR1cm4gbm9ybWFsaXplQW5nbGUoZW5kQW5nbGUgLSBzdGFydEFuZ2xlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbmdsZUJ5RWxlbWVudCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICAgIHJldHVybiBlbGVtZW50Py5hbmdsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRBbmdsZUZvckcgPSAoZzogU1ZHR0VsZW1lbnQsIGNlbnRlclBvaW50OiBQb2ludCwgYW5nbGU6IG51bWJlcikgPT4ge1xuICAgIGlmIChhbmdsZSA9PT0gMCkge1xuICAgICAgICBnLnJlbW92ZUF0dHJpYnV0ZSgndHJhbnNmb3JtJyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGNlbnRlclggPSBjZW50ZXJQb2ludFswXTtcbiAgICB2YXIgY2VudGVyWSA9IGNlbnRlclBvaW50WzFdO1xuXG4gICAgbGV0IGNvc1RoZXRhID0gTWF0aC5jb3MoYW5nbGUpO1xuICAgIGxldCBzaW5UaGV0YSA9IE1hdGguc2luKGFuZ2xlKTtcblxuICAgIGxldCB0cmFuc2Zvcm1NYXRyaXggPSBbXG4gICAgICAgIGNvc1RoZXRhLFxuICAgICAgICBzaW5UaGV0YSxcbiAgICAgICAgLXNpblRoZXRhLFxuICAgICAgICBjb3NUaGV0YSxcbiAgICAgICAgY2VudGVyWCAqICgxIC0gY29zVGhldGEpICsgY2VudGVyWSAqIHNpblRoZXRhLFxuICAgICAgICBjZW50ZXJZICogKDEgLSBjb3NUaGV0YSkgLSBjZW50ZXJYICogc2luVGhldGFcbiAgICBdO1xuXG4gICAgbGV0IG1hdHJpeCA9ICdtYXRyaXgoJyArIHRyYW5zZm9ybU1hdHJpeC5qb2luKCcsJykgKyAnKSc7XG4gICAgZy5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsIGAke21hdHJpeH1gKTtcbn07XG4iXX0=
@@ -19,7 +19,7 @@ export class DebugGenerator {
19
19
  }
20
20
  const gArray = getTemporaryGArray(this.debugKey);
21
21
  setTemporaryGArray(this.debugKey, []);
22
- gArray.forEach(g => g.remove());
22
+ gArray.forEach((g) => g.remove());
23
23
  }
24
24
  drawPolygon(board, points, options) {
25
25
  if (!isDebug(this.debugKey)) {
@@ -27,7 +27,7 @@ export class DebugGenerator {
27
27
  }
28
28
  const polygonG = PlaitBoard.getRoughSVG(board).polygon(points, options || { stroke: 'red' });
29
29
  polygonG.classList.add(this.debugKey);
30
- PlaitBoard.getElementActiveHost(board).append(polygonG);
30
+ PlaitBoard.getElementTopHost(board).append(polygonG);
31
31
  const gArray = getTemporaryGArray(this.debugKey);
32
32
  gArray.push(polygonG);
33
33
  setTemporaryGArray(this.debugKey, gArray);
@@ -39,7 +39,7 @@ export class DebugGenerator {
39
39
  }
40
40
  const lineG = PlaitBoard.getRoughSVG(board).linearPath(points, options || { stroke: 'red' });
41
41
  lineG.classList.add(this.debugKey);
42
- PlaitBoard.getElementActiveHost(board).append(lineG);
42
+ PlaitBoard.getElementTopHost(board).append(lineG);
43
43
  const gArray = getTemporaryGArray(this.debugKey);
44
44
  gArray.push(lineG);
45
45
  setTemporaryGArray(this.debugKey, gArray);
@@ -58,7 +58,7 @@ export class DebugGenerator {
58
58
  }
59
59
  const rectangleG = PlaitBoard.getRoughSVG(board).rectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height, options || { stroke: 'red' });
60
60
  rectangleG.classList.add(this.debugKey);
61
- PlaitBoard.getElementActiveHost(board).append(rectangleG);
61
+ PlaitBoard.getElementTopHost(board).append(rectangleG);
62
62
  const gArray = getTemporaryGArray(this.debugKey);
63
63
  gArray.push(rectangleG);
64
64
  setTemporaryGArray(this.debugKey, gArray);
@@ -72,7 +72,7 @@ export class DebugGenerator {
72
72
  points.forEach((p, i) => {
73
73
  const circle = PlaitBoard.getRoughSVG(board).circle(p[0], p[1], isCumulativeDiameter ? diameter * (i + 1) : diameter, Object.assign({}, { stroke: 'red', fill: 'red', fillStyle: 'solid' }, options || {}));
74
74
  circle.classList.add(this.debugKey);
75
- PlaitBoard.getElementActiveHost(board).append(circle);
75
+ PlaitBoard.getElementTopHost(board).append(circle);
76
76
  const gArray = getTemporaryGArray(this.debugKey);
77
77
  gArray.push(circle);
78
78
  result.push(circle);
@@ -88,4 +88,4 @@ export const isDebug = (key) => {
88
88
  const defaultKey = 'debug:plait';
89
89
  return localStorage.getItem(key || defaultKey) === 'true';
90
90
  };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9kZWJ1Zy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFTLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRTlCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFnQixFQUFpQixFQUFFO0lBQzNELE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQ25FLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLFlBQW9CLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7SUFBRyxDQUFDO0lBQ3hDLE9BQU87UUFDSCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFpQixFQUFFLE1B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LENBQUM7WUFDcEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSjtBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQ3JELE9BQU8sSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssTUFBTSxDQUFDO0FBQzlELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuY29uc3QgVEVNUE9SQVJZX0cgPSBuZXcgTWFwKCk7XG5cbmNvbnN0IGdldFRlbXBvcmFyeUdBcnJheSA9IChkZWJ1Z0tleTogc3RyaW5nKTogU1ZHR0VsZW1lbnRbXSA9PiB7XG4gICAgcmV0dXJuIFRFTVBPUkFSWV9HLmdldChkZWJ1Z0tleSkgfHwgW107XG59O1xuXG5jb25zdCBzZXRUZW1wb3JhcnlHQXJyYXkgPSAoZGVidWdLZXk6IHN0cmluZywgZ0FycmF5OiBTVkdHRWxlbWVudFtdKSA9PiB7XG4gICAgVEVNUE9SQVJZX0cuc2V0KGRlYnVnS2V5LCBnQXJyYXkpO1xufTtcblxuZXhwb3J0IGNsYXNzIERlYnVnR2VuZXJhdG9yIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlYnVnS2V5OiBzdHJpbmcpIHt9XG4gICAgaXNEZWJ1ZygpIHtcbiAgICAgICAgcmV0dXJuIGlzRGVidWcodGhpcy5kZWJ1Z0tleSk7XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEZWJ1ZygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ0FycmF5ID0gZ2V0VGVtcG9yYXJ5R0FycmF5KHRoaXMuZGVidWdLZXkpO1xuICAgICAgICBzZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSwgW10pO1xuICAgICAgICBnQXJyYXkuZm9yRWFjaChnID0+IGcucmVtb3ZlKCkpO1xuICAgIH1cbiAgICBkcmF3UG9seWdvbihib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRzOiBQb2ludFtdLCBvcHRpb25zPzogT3B0aW9ucykge1xuICAgICAgICBpZiAoIWlzRGVidWcodGhpcy5kZWJ1Z0tleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2x5Z29uRyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLnBvbHlnb24ocG9pbnRzLCBvcHRpb25zIHx8IHsgc3Ryb2tlOiAncmVkJyB9KTtcbiAgICAgICAgcG9seWdvbkcuY2xhc3NMaXN0LmFkZCh0aGlzLmRlYnVnS2V5KTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHBvbHlnb25HKTtcbiAgICAgICAgY29uc3QgZ0FycmF5ID0gZ2V0VGVtcG9yYXJ5R0FycmF5KHRoaXMuZGVidWdLZXkpO1xuICAgICAgICBnQXJyYXkucHVzaChwb2x5Z29uRyk7XG4gICAgICAgIHNldFRlbXBvcmFyeUdBcnJheSh0aGlzLmRlYnVnS2V5LCBnQXJyYXkpO1xuICAgICAgICByZXR1cm4gcG9seWdvbkc7XG4gICAgfVxuICAgIGRyYXdMaW5lKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFBvaW50W10sIG9wdGlvbnM/OiBPcHRpb25zKSB7XG4gICAgICAgIGlmICghaXNEZWJ1Zyh0aGlzLmRlYnVnS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxpbmVHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCkubGluZWFyUGF0aChwb2ludHMsIG9wdGlvbnMgfHwgeyBzdHJva2U6ICdyZWQnIH0pO1xuICAgICAgICBsaW5lRy5jbGFzc0xpc3QuYWRkKHRoaXMuZGVidWdLZXkpO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQobGluZUcpO1xuICAgICAgICBjb25zdCBnQXJyYXkgPSBnZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSk7XG4gICAgICAgIGdBcnJheS5wdXNoKGxpbmVHKTtcbiAgICAgICAgc2V0VGVtcG9yYXJ5R0FycmF5KHRoaXMuZGVidWdLZXksIGdBcnJheSk7XG4gICAgICAgIHJldHVybiBsaW5lRztcbiAgICB9XG4gICAgZHJhd1JlY3RhbmdsZShib2FyZDogUGxhaXRCb2FyZCwgZGF0YTogUG9pbnRbXSB8IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9ucz86IE9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFpc0RlYnVnKHRoaXMuZGVidWdLZXkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50O1xuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWN0YW5nbGUgPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZUcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5yZWN0YW5nbGUoXG4gICAgICAgICAgICByZWN0YW5nbGUueCxcbiAgICAgICAgICAgIHJlY3RhbmdsZS55LFxuICAgICAgICAgICAgcmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgcmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgIG9wdGlvbnMgfHwgeyBzdHJva2U6ICdyZWQnIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmVjdGFuZ2xlRy5jbGFzc0xpc3QuYWRkKHRoaXMuZGVidWdLZXkpO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQocmVjdGFuZ2xlRyk7XG4gICAgICAgIGNvbnN0IGdBcnJheSA9IGdldFRlbXBvcmFyeUdBcnJheSh0aGlzLmRlYnVnS2V5KTtcbiAgICAgICAgZ0FycmF5LnB1c2gocmVjdGFuZ2xlRyk7XG4gICAgICAgIHNldFRlbXBvcmFyeUdBcnJheSh0aGlzLmRlYnVnS2V5LCBnQXJyYXkpO1xuICAgICAgICByZXR1cm4gcmVjdGFuZ2xlRztcbiAgICB9XG4gICAgZHJhd0NpcmNsZXMoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50czogUG9pbnRbXSwgZGlhbWV0ZXI6IG51bWJlciA9IDAsIGlzQ3VtdWxhdGl2ZURpYW1ldGVyOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiBPcHRpb25zKSB7XG4gICAgICAgIGlmICghaXNEZWJ1Zyh0aGlzLmRlYnVnS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdDogU1ZHR0VsZW1lbnRbXSA9IFtdO1xuICAgICAgICBwb2ludHMuZm9yRWFjaCgocCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2lyY2xlID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCkuY2lyY2xlKFxuICAgICAgICAgICAgICAgIHBbMF0sXG4gICAgICAgICAgICAgICAgcFsxXSxcbiAgICAgICAgICAgICAgICBpc0N1bXVsYXRpdmVEaWFtZXRlciA/IGRpYW1ldGVyICogKGkgKyAxKSA6IGRpYW1ldGVyLFxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHsgc3Ryb2tlOiAncmVkJywgZmlsbDogJ3JlZCcsIGZpbGxTdHlsZTogJ3NvbGlkJyB9LCBvcHRpb25zIHx8IHt9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNpcmNsZS5jbGFzc0xpc3QuYWRkKHRoaXMuZGVidWdLZXkpO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGNpcmNsZSk7XG4gICAgICAgICAgICBjb25zdCBnQXJyYXkgPSBnZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSk7XG4gICAgICAgICAgICBnQXJyYXkucHVzaChjaXJjbGUpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goY2lyY2xlKTtcbiAgICAgICAgICAgIHNldFRlbXBvcmFyeUdBcnJheSh0aGlzLmRlYnVnS2V5LCBnQXJyYXkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWJ1Z0dlbmVyYXRvciA9IChkZWJ1Z0tleTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEZWJ1Z0dlbmVyYXRvcihkZWJ1Z0tleSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEZWJ1ZyA9IChrZXk/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0S2V5ID0gJ2RlYnVnOnBsYWl0JztcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5IHx8IGRlZmF1bHRLZXkpID09PSAndHJ1ZSc7XG59O1xuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9kZWJ1Zy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFTLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRTlCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFnQixFQUFpQixFQUFFO0lBQzNELE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsTUFBcUIsRUFBRSxFQUFFO0lBQ25FLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLFlBQW9CLFFBQWdCO1FBQWhCLGFBQVEsR0FBUixRQUFRLENBQVE7SUFBRyxDQUFDO0lBQ3hDLE9BQU87UUFDSCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQWlCLEVB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LENBQUMsQ0FBQztZQUNwQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7SUFDckQsT0FBTyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFZLEVBQUUsRUFBRTtJQUNwQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDakMsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDOUQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5jb25zdCBURU1QT1JBUllfRyA9IG5ldyBNYXAoKTtcblxuY29uc3QgZ2V0VGVtcG9yYXJ5R0FycmF5ID0gKGRlYnVnS2V5OiBzdHJpbmcpOiBTVkdHRWxlbWVudFtdID0+IHtcbiAgICByZXR1cm4gVEVNUE9SQVJZX0cuZ2V0KGRlYnVnS2V5KSB8fCBbXTtcbn07XG5cbmNvbnN0IHNldFRlbXBvcmFyeUdBcnJheSA9IChkZWJ1Z0tleTogc3RyaW5nLCBnQXJyYXk6IFNWR0dFbGVtZW50W10pID0+IHtcbiAgICBURU1QT1JBUllfRy5zZXQoZGVidWdLZXksIGdBcnJheSk7XG59O1xuXG5leHBvcnQgY2xhc3MgRGVidWdHZW5lcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVidWdLZXk6IHN0cmluZykge31cbiAgICBpc0RlYnVnKCkge1xuICAgICAgICByZXR1cm4gaXNEZWJ1Zyh0aGlzLmRlYnVnS2V5KTtcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0RlYnVnKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBnQXJyYXkgPSBnZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSk7XG4gICAgICAgIHNldFRlbXBvcmFyeUdBcnJheSh0aGlzLmRlYnVnS2V5LCBbXSk7XG4gICAgICAgIGdBcnJheS5mb3JFYWNoKChnKSA9PiBnLnJlbW92ZSgpKTtcbiAgICB9XG4gICAgZHJhd1BvbHlnb24oYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50czogUG9pbnRbXSwgb3B0aW9ucz86IE9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFpc0RlYnVnKHRoaXMuZGVidWdLZXkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9seWdvbkcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5wb2x5Z29uKHBvaW50cywgb3B0aW9ucyB8fCB7IHN0cm9rZTogJ3JlZCcgfSk7XG4gICAgICAgIHBvbHlnb25HLmNsYXNzTGlzdC5hZGQodGhpcy5kZWJ1Z0tleSk7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudFRvcEhvc3QoYm9hcmQpLmFwcGVuZChwb2x5Z29uRyk7XG4gICAgICAgIGNvbnN0IGdBcnJheSA9IGdldFRlbXBvcmFyeUdBcnJheSh0aGlzLmRlYnVnS2V5KTtcbiAgICAgICAgZ0FycmF5LnB1c2gocG9seWdvbkcpO1xuICAgICAgICBzZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSwgZ0FycmF5KTtcbiAgICAgICAgcmV0dXJuIHBvbHlnb25HO1xuICAgIH1cbiAgICBkcmF3TGluZShib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRzOiBQb2ludFtdLCBvcHRpb25zPzogT3B0aW9ucykge1xuICAgICAgICBpZiAoIWlzRGVidWcodGhpcy5kZWJ1Z0tleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsaW5lRyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmxpbmVhclBhdGgocG9pbnRzLCBvcHRpb25zIHx8IHsgc3Ryb2tlOiAncmVkJyB9KTtcbiAgICAgICAgbGluZUcuY2xhc3NMaXN0LmFkZCh0aGlzLmRlYnVnS2V5KTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50VG9wSG9zdChib2FyZCkuYXBwZW5kKGxpbmVHKTtcbiAgICAgICAgY29uc3QgZ0FycmF5ID0gZ2V0VGVtcG9yYXJ5R0FycmF5KHRoaXMuZGVidWdLZXkpO1xuICAgICAgICBnQXJyYXkucHVzaChsaW5lRyk7XG4gICAgICAgIHNldFRlbXBvcmFyeUdBcnJheSh0aGlzLmRlYnVnS2V5LCBnQXJyYXkpO1xuICAgICAgICByZXR1cm4gbGluZUc7XG4gICAgfVxuICAgIGRyYXdSZWN0YW5nbGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIGRhdGE6IFBvaW50W10gfCBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM/OiBPcHRpb25zKSB7XG4gICAgICAgIGlmICghaXNEZWJ1Zyh0aGlzLmRlYnVnS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudDtcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjdGFuZ2xlID0gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWN0YW5nbGVHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCkucmVjdGFuZ2xlKFxuICAgICAgICAgICAgcmVjdGFuZ2xlLngsXG4gICAgICAgICAgICByZWN0YW5nbGUueSxcbiAgICAgICAgICAgIHJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgIHJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgICAgICBvcHRpb25zIHx8IHsgc3Ryb2tlOiAncmVkJyB9XG4gICAgICAgICk7XG4gICAgICAgIHJlY3RhbmdsZUcuY2xhc3NMaXN0LmFkZCh0aGlzLmRlYnVnS2V5KTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50VG9wSG9zdChib2FyZCkuYXBwZW5kKHJlY3RhbmdsZUcpO1xuICAgICAgICBjb25zdCBnQXJyYXkgPSBnZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSk7XG4gICAgICAgIGdBcnJheS5wdXNoKHJlY3RhbmdsZUcpO1xuICAgICAgICBzZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSwgZ0FycmF5KTtcbiAgICAgICAgcmV0dXJuIHJlY3RhbmdsZUc7XG4gICAgfVxuICAgIGRyYXdDaXJjbGVzKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFBvaW50W10sIGRpYW1ldGVyOiBudW1iZXIgPSAwLCBpc0N1bXVsYXRpdmVEaWFtZXRlcjogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzogT3B0aW9ucykge1xuICAgICAgICBpZiAoIWlzRGVidWcodGhpcy5kZWJ1Z0tleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQ6IFNWR0dFbGVtZW50W10gPSBbXTtcbiAgICAgICAgcG9pbnRzLmZvckVhY2goKHAsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNpcmNsZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmNpcmNsZShcbiAgICAgICAgICAgICAgICBwWzBdLFxuICAgICAgICAgICAgICAgIHBbMV0sXG4gICAgICAgICAgICAgICAgaXNDdW11bGF0aXZlRGlhbWV0ZXIgPyBkaWFtZXRlciAqIChpICsgMSkgOiBkaWFtZXRlcixcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LCB7IHN0cm9rZTogJ3JlZCcsIGZpbGw6ICdyZWQnLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSwgb3B0aW9ucyB8fCB7fSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjaXJjbGUuY2xhc3NMaXN0LmFkZCh0aGlzLmRlYnVnS2V5KTtcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudFRvcEhvc3QoYm9hcmQpLmFwcGVuZChjaXJjbGUpO1xuICAgICAgICAgICAgY29uc3QgZ0FycmF5ID0gZ2V0VGVtcG9yYXJ5R0FycmF5KHRoaXMuZGVidWdLZXkpO1xuICAgICAgICAgICAgZ0FycmF5LnB1c2goY2lyY2xlKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNpcmNsZSk7XG4gICAgICAgICAgICBzZXRUZW1wb3JhcnlHQXJyYXkodGhpcy5kZWJ1Z0tleSwgZ0FycmF5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVidWdHZW5lcmF0b3IgPSAoZGVidWdLZXk6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBuZXcgRGVidWdHZW5lcmF0b3IoZGVidWdLZXkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGVidWcgPSAoa2V5Pzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEtleSA9ICdkZWJ1ZzpwbGFpdCc7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSB8fCBkZWZhdWx0S2V5KSA9PT0gJ3RydWUnO1xufTtcbiJdfQ==
@@ -69,4 +69,7 @@ export const isSecondaryPointer = (event) => {
69
69
  export const isMainPointer = (event) => {
70
70
  return event.button === POINTER_BUTTON.MAIN;
71
71
  };
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvZG9tL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLDRCQUE0QixDQUFDO0FBRS9DLE1BQU0sVUFBVSxPQUFPO0lBQ25CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN0QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUEwQixFQUFFLE9BQWlCO0lBQ3BFLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSyxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0QixNQUFNLFNBQVMsR0FBRyxHQUFvQixDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBYyxFQUFFLEtBQXlCLEVBQUUsRUFBRTtJQUMxRSxDQUFDLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBYyxFQUFFLEtBQXlCLEVBQUUsRUFBRTtJQUM5RSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsVUFBVTtJQUN0QixPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUztJQUNyQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsSUFBWSxFQUFFLFdBQW1CO0lBQzlFLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBVSxFQUFvQixFQUFFO0lBQ3pELE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUEwQixFQUFFLEVBQUU7SUFDbkUsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN2QixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDL0MsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUE9JTlRFUl9CVVRUT04gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHKCkge1xuICAgIGNvbnN0IG5ld0cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdnJyk7XG4gICAgcmV0dXJuIG5ld0c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRoKCkge1xuICAgIGNvbnN0IG5ld0cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdwYXRoJyk7XG4gICAgcmV0dXJuIG5ld0c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWN0KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zPzogT3B0aW9ucykge1xuICAgIGNvbnN0IHJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdyZWN0Jyk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHtyZWN0YW5nbGUueH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZSgneScsIGAke3JlY3RhbmdsZS55fWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3JlY3RhbmdsZS53aWR0aH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7cmVjdGFuZ2xlLmhlaWdodH1gKTtcbiAgICBmb3IgKGxldCBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRpb25LZXkgPSBrZXkgYXMga2V5b2YgT3B0aW9ucztcbiAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoa2V5LCBgJHtvcHRpb25zW29wdGlvbktleV19YCk7XG4gICAgfVxuICAgIHJldHVybiByZWN0O1xufVxuXG5leHBvcnQgY29uc3Qgc2V0U3Ryb2tlTGluZWNhcCA9IChnOiBTVkdHRWxlbWVudCwgdmFsdWU6ICdyb3VuZCcgfCAnc3F1YXJlJykgPT4ge1xuICAgIGcuc2V0QXR0cmlidXRlKCdzdHJva2UtbGluZWNhcCcsIHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRQYXRoU3Ryb2tlTGluZWNhcCA9IChnOiBTVkdHRWxlbWVudCwgdmFsdWU6ICdyb3VuZCcgfCAnc3F1YXJlJykgPT4ge1xuICAgIGcucXVlcnlTZWxlY3RvckFsbCgncGF0aCcpLmZvckVhY2gocGF0aCA9PiB7XG4gICAgICAgIHBhdGguc2V0QXR0cmlidXRlKCdzdHJva2UtbGluZWNhcCcsIHZhbHVlKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYXNrKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdtYXNrJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTVkcoKSB7XG4gICAgY29uc3Qgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnJyk7XG4gICAgcmV0dXJuIHN2Zztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRleHQoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGw6IHN0cmluZywgdGV4dENvbnRlbnQ6IHN0cmluZykge1xuICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAndGV4dCcpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCd4JywgYCR7eH1gKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgneScsIGAke3l9YCk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBmaWxsKTtcbiAgICB0ZXh0LnRleHRDb250ZW50ID0gdGV4dENvbnRlbnQ7XG4gICAgcmV0dXJuIHRleHQ7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhbiBlbGVtZW50IG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTUVsZW1lbnQgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIEVsZW1lbnQgPT4ge1xuICAgIHJldHVybiBpc0RPTU5vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGEgRE9NIG5vZGUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTU5vZGUgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIE5vZGUgPT4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIHdpbmRvdy5Ob2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0lucHV0T3JUZXh0YXJlYVRhcmdldCA9ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkgPT4ge1xuICAgIGlmIChpc0RPTUVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHwgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlY29uZGFyeVBvaW50ZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSBQT0lOVEVSX0JVVFRPTi5TRUNPTkRBUlk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNNYWluUG9pbnRlciA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5idXR0b24gPT09IFBPSU5URVJfQlVUVE9OLk1BSU47XG59O1xuIl19
72
+ export const isWheelPointer = (event) => {
73
+ return event.button === POINTER_BUTTON.WHEEL;
74
+ };
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvZG9tL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLDRCQUE0QixDQUFDO0FBRS9DLE1BQU0sVUFBVSxPQUFPO0lBQ25CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN0QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUEwQixFQUFFLE9BQWlCO0lBQ3BFLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSyxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0QixN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QUFDaEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFDO0FBQ2pELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFBPSU5URVJfQlVUVE9OIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRygpIHtcbiAgICBjb25zdCBuZXdHID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnZycpO1xuICAgIHJldHVybiBuZXdHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0aCgpIHtcbiAgICBjb25zdCBuZXdHID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAncGF0aCcpO1xuICAgIHJldHVybiBuZXdHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVjdChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9ucz86IE9wdGlvbnMpIHtcbiAgICBjb25zdCByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAncmVjdCcpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKCd4JywgYCR7cmVjdGFuZ2xlLnh9YCk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3knLCBgJHtyZWN0YW5nbGUueX1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHtyZWN0YW5nbGUud2lkdGh9YCk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke3JlY3RhbmdsZS5oZWlnaHR9YCk7XG4gICAgZm9yIChsZXQga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uS2V5ID0ga2V5IGFzIGtleW9mIE9wdGlvbnM7XG4gICAgICAgIHJlY3Quc2V0QXR0cmlidXRlKGtleSwgYCR7b3B0aW9uc1tvcHRpb25LZXldfWApO1xuICAgIH1cbiAgICByZXR1cm4gcmVjdDtcbn1cblxuZXhwb3J0IGNvbnN0IHNldFN0cm9rZUxpbmVjYXAgPSAoZzogU1ZHR0VsZW1lbnQsIHZhbHVlOiAncm91bmQnIHwgJ3NxdWFyZScpID0+IHtcbiAgICBnLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWxpbmVjYXAnLCB2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UGF0aFN0cm9rZUxpbmVjYXAgPSAoZzogU1ZHR0VsZW1lbnQsIHZhbHVlOiAncm91bmQnIHwgJ3NxdWFyZScpID0+IHtcbiAgICBnLnF1ZXJ5U2VsZWN0b3JBbGwoJ3BhdGgnKS5mb3JFYWNoKHBhdGggPT4ge1xuICAgICAgICBwYXRoLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWxpbmVjYXAnLCB2YWx1ZSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFzaygpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnbWFzaycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU1ZHKCkge1xuICAgIGNvbnN0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2ZycpO1xuICAgIHJldHVybiBzdmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXh0KHg6IG51bWJlciwgeTogbnVtYmVyLCBmaWxsOiBzdHJpbmcsIHRleHRDb250ZW50OiBzdHJpbmcpIHtcbiAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3RleHQnKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgneCcsIGAke3h9YCk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3knLCBgJHt5fWApO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdmaWxsJywgZmlsbCk7XG4gICAgdGV4dC50ZXh0Q29udGVudCA9IHRleHRDb250ZW50O1xuICAgIHJldHVybiB0ZXh0O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01FbGVtZW50ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBFbGVtZW50ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01Ob2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBOb2RlID0+IHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNJbnB1dE9yVGV4dGFyZWFUYXJnZXQgPSAodGFyZ2V0OiBFdmVudFRhcmdldCB8IG51bGwpID0+IHtcbiAgICBpZiAoaXNET01FbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnIHx8IHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWNvbmRhcnlQb2ludGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gUE9JTlRFUl9CVVRUT04uU0VDT05EQVJZO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTWFpblBvaW50ZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSBQT0lOVEVSX0JVVFRPTi5NQUlOO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzV2hlZWxQb2ludGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gUE9JTlRFUl9CVVRUT04uV0hFRUw7XG59O1xuIl19
@@ -10,4 +10,5 @@ export const IS_EDGE_LEGACY = typeof navigator !== 'undefined' && /Edge?\/(?:[0-
10
10
  export const IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent);
11
11
  // Native beforeInput events don't work well with react on Chrome 75 and older, Chrome 76+ can use beforeInput
12
12
  export const IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /Chrome?\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent);
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQ2YsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxPQUFPLE1BQU0sS0FBSyxXQUFXO0lBQzdCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUUsTUFBYyxDQUFDLFFBQVEsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWpHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksa0NBQWtDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUzSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbEgscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksbUNBQW1DLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVoSSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWpHLDhHQUE4RztBQUM5RyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUkscUNBQXFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBJU19JT1MgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJlxuICAgICEod2luZG93IGFzIGFueSkuTVNTdHJlYW07XG5cbmV4cG9ydCBjb25zdCBJU19BUFBMRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9NYWMgT1MgWC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX0ZJUkVGT1ggPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvXig/IS4qU2VhbW9ua2V5KSg/PS4qRmlyZWZveCkuKi9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbmV4cG9ydCBjb25zdCBJU19TQUZBUkkgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvVmVyc2lvblxcL1tcXGRcXC5dKy4qU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4vLyBcIm1vZGVyblwiIEVkZ2Ugd2FzIHJlbGVhc2VkIGF0IDc5LnhcbmV4cG9ydCBjb25zdCBJU19FREdFX0xFR0FDWSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9FZGdlP1xcLyg/OlswLTZdWzAtOV18WzAtN11bMC04XSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5leHBvcnQgY29uc3QgSVNfQ0hST01FID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL0Nocm9tZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8vIE5hdGl2ZSBiZWZvcmVJbnB1dCBldmVudHMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggcmVhY3Qgb24gQ2hyb21lIDc1IGFuZCBvbGRlciwgQ2hyb21lIDc2KyBjYW4gdXNlIGJlZm9yZUlucHV0XG5leHBvcnQgY29uc3QgSVNfQ0hST01FX0xFR0FDWSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9DaHJvbWU/XFwvKD86WzAtN11bMC01XXxbMC02XVswLTldKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4iXX0=
13
+ export const IS_WINDOWS = typeof navigator !== 'undefined' && /Windows/.test(navigator.userAgent);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQ2YsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxPQUFPLE1BQU0sS0FBSyxXQUFXO0lBQzdCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUUsTUFBYyxDQUFDLFFBQVEsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWpHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksa0NBQWtDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUzSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbEgscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksbUNBQW1DLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVoSSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWpHLDhHQUE4RztBQUM5RyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUkscUNBQXFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVwSSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IElTX0lPUyA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmXG4gICAgISh3aW5kb3cgYXMgYW55KS5NU1N0cmVhbTtcblxuZXhwb3J0IGNvbnN0IElTX0FQUExFID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL01hYyBPUyBYLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5leHBvcnQgY29uc3QgSVNfRklSRUZPWCA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9eKD8hLipTZWFtb25rZXkpKD89LipGaXJlZm94KS4qL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX1NBRkFSSSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9WZXJzaW9uXFwvW1xcZFxcLl0rLipTYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8vIFwibW9kZXJuXCIgRWRnZSB3YXMgcmVsZWFzZWQgYXQgNzkueFxuZXhwb3J0IGNvbnN0IElTX0VER0VfTEVHQUNZID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL0VkZ2U/XFwvKD86WzAtNl1bMC05XXxbMC03XVswLThdKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbmV4cG9ydCBjb25zdCBJU19DSFJPTUUgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvQ2hyb21lL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gTmF0aXZlIGJlZm9yZUlucHV0IGV2ZW50cyBkb24ndCB3b3JrIHdlbGwgd2l0aCByZWFjdCBvbiBDaHJvbWUgNzUgYW5kIG9sZGVyLCBDaHJvbWUgNzYrIGNhbiB1c2UgYmVmb3JlSW5wdXRcbmV4cG9ydCBjb25zdCBJU19DSFJPTUVfTEVHQUNZID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL0Nocm9tZT9cXC8oPzpbMC03XVswLTVdfFswLTZdWzAtOV0pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX1dJTkRPV1MgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvV2luZG93cy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsiXX0=
@@ -1,7 +1,6 @@
1
1
  import { PlaitBoard, PlaitPointerType } from '../interfaces';
2
2
  import { isMobileDeviceEvent } from './pointer';
3
3
  export const isSmartHand = (board, event) => {
4
- return (PlaitBoard.isPointer(board, PlaitPointerType.hand) ||
5
- (PlaitBoard.isPointer(board, PlaitPointerType.selection) && isMobileDeviceEvent(event)));
4
+ return PlaitBoard.isPointer(board, PlaitPointerType.selection) && isMobileDeviceEvent(event);
6
5
  };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvbW9iaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsS0FBbUIsRUFBRSxFQUFFO0lBQ2xFLE9BQU8sQ0FDSCxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDbEQsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMxRixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaXNNb2JpbGVEZXZpY2VFdmVudCB9IGZyb20gJy4vcG9pbnRlcic7XG5cbmV4cG9ydCBjb25zdCBpc1NtYXJ0SGFuZCA9IChib2FyZDogUGxhaXRCb2FyZCwgZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpIHx8XG4gICAgICAgIChQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmIGlzTW9iaWxlRGV2aWNlRXZlbnQoZXZlbnQpKVxuICAgICk7XG59O1xuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvbW9iaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsS0FBbUIsRUFBRSxFQUFFO0lBQ2xFLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaXNNb2JpbGVEZXZpY2VFdmVudCB9IGZyb20gJy4vcG9pbnRlcic7XG5cbmV4cG9ydCBjb25zdCBpc1NtYXJ0SGFuZCA9IChib2FyZDogUGxhaXRCb2FyZCwgZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgIHJldHVybiBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmIGlzTW9iaWxlRGV2aWNlRXZlbnQoZXZlbnQpO1xufTtcbiJdfQ==