@plait/draw 0.49.0 → 0.50.1
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.
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WritableClipboardType, addClipboardContext, createClipboardContext, getSelectedElements } from '@plait/core';
|
|
2
2
|
import { getSelectedDrawElements } from '../utils/selected';
|
|
3
3
|
import { PlaitDrawElement, PlaitLine } from '../interfaces';
|
|
4
|
-
import { getTextFromClipboard } from '@plait/text';
|
|
5
4
|
import { buildClipboardData, insertClipboardData } from '../utils/clipboard';
|
|
6
5
|
import { DrawTransforms } from '../transforms';
|
|
7
6
|
import { getBoardLines } from '../utils/line';
|
|
8
|
-
import { acceptImageTypes, buildImage, getElementOfFocusedImage } from '@plait/common';
|
|
7
|
+
import { acceptImageTypes, buildImage, getElementOfFocusedImage, getElementsText } from '@plait/common';
|
|
9
8
|
import { DEFAULT_IMAGE_WIDTH } from '../constants';
|
|
10
9
|
export const withDrawFragment = (baseBoard) => {
|
|
11
10
|
const board = baseBoard;
|
|
@@ -29,7 +28,7 @@ export const withDrawFragment = (baseBoard) => {
|
|
|
29
28
|
}
|
|
30
29
|
return getDeletedFragment(data);
|
|
31
30
|
};
|
|
32
|
-
board.setFragment = (data, rectangle, type) => {
|
|
31
|
+
board.setFragment = (data, clipboardContext, rectangle, type) => {
|
|
33
32
|
const targetDrawElements = getSelectedDrawElements(board);
|
|
34
33
|
let boundLineElements = [];
|
|
35
34
|
if (targetDrawElements.length) {
|
|
@@ -38,40 +37,53 @@ export const withDrawFragment = (baseBoard) => {
|
|
|
38
37
|
const lineElements = targetDrawElements.filter(value => PlaitDrawElement.isLine(value));
|
|
39
38
|
boundLineElements = getBoundedLineElements(board, geometryElements).filter(line => !lineElements.includes(line));
|
|
40
39
|
}
|
|
41
|
-
const
|
|
42
|
-
|
|
40
|
+
const selectedElements = [...targetDrawElements, ...boundLineElements];
|
|
41
|
+
const elements = buildClipboardData(board, selectedElements, rectangle ? [rectangle.x, rectangle.y] : [0, 0]);
|
|
42
|
+
const text = getElementsText(selectedElements);
|
|
43
|
+
if (!clipboardContext) {
|
|
44
|
+
clipboardContext = createClipboardContext(WritableClipboardType.elements, elements, text);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
clipboardContext = addClipboardContext(clipboardContext, {
|
|
48
|
+
text,
|
|
49
|
+
type: WritableClipboardType.elements,
|
|
50
|
+
data: elements
|
|
51
|
+
});
|
|
52
|
+
}
|
|
43
53
|
}
|
|
44
|
-
setFragment(data, rectangle, type);
|
|
54
|
+
setFragment(data, clipboardContext, rectangle, type);
|
|
45
55
|
};
|
|
46
|
-
board.insertFragment = (data, targetPoint) => {
|
|
47
|
-
const elements = getDataFromClipboard(data);
|
|
56
|
+
board.insertFragment = (data, clipboardData, targetPoint) => {
|
|
48
57
|
const selectedElements = getSelectedElements(board);
|
|
49
|
-
|
|
50
|
-
if (elements.length > 0 && drawElements.length > 0) {
|
|
51
|
-
insertClipboardData(board, drawElements, targetPoint);
|
|
52
|
-
}
|
|
53
|
-
else if (elements.length === 0) {
|
|
54
|
-
const text = getTextFromClipboard(data);
|
|
55
|
-
// (* ̄︶ ̄)
|
|
56
|
-
const insertAsChildren = selectedElements.length === 1 && selectedElements[0].children;
|
|
57
|
-
const insertAsFreeText = !insertAsChildren;
|
|
58
|
-
if (text && insertAsFreeText) {
|
|
59
|
-
DrawTransforms.insertText(board, targetPoint, text);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (data?.files.length) {
|
|
58
|
+
if (clipboardData?.files?.length) {
|
|
64
59
|
const acceptImageArray = acceptImageTypes.map(type => 'image/' + type);
|
|
65
60
|
const canInsertionImage = !getElementOfFocusedImage(board) && !(selectedElements.length === 1 && board.isImageBindingAllowed(selectedElements[0]));
|
|
66
|
-
if (acceptImageArray.includes(
|
|
67
|
-
const imageFile =
|
|
61
|
+
if (acceptImageArray.includes(clipboardData.files[0].type) && canInsertionImage) {
|
|
62
|
+
const imageFile = clipboardData.files[0];
|
|
68
63
|
buildImage(board, imageFile, DEFAULT_IMAGE_WIDTH, imageItem => {
|
|
69
64
|
DrawTransforms.insertImage(board, imageItem, targetPoint);
|
|
70
65
|
});
|
|
71
66
|
return;
|
|
72
67
|
}
|
|
73
68
|
}
|
|
74
|
-
|
|
69
|
+
if (clipboardData?.elements?.length) {
|
|
70
|
+
const drawElements = clipboardData.elements?.filter(value => PlaitDrawElement.isDrawElement(value));
|
|
71
|
+
if (clipboardData.elements && clipboardData.elements.length > 0 && drawElements.length > 0) {
|
|
72
|
+
insertClipboardData(board, drawElements, targetPoint);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (clipboardData?.text) {
|
|
76
|
+
if (!clipboardData.elements || clipboardData.elements.length === 0) {
|
|
77
|
+
// (* ̄︶ ̄)
|
|
78
|
+
const insertAsChildren = selectedElements.length === 1 && selectedElements[0].children;
|
|
79
|
+
const insertAsFreeText = !insertAsChildren;
|
|
80
|
+
if (insertAsFreeText) {
|
|
81
|
+
DrawTransforms.insertText(board, targetPoint, clipboardData.text);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
insertFragment(data, clipboardData, targetPoint);
|
|
75
87
|
};
|
|
76
88
|
return board;
|
|
77
89
|
};
|
|
@@ -79,4 +91,4 @@ export const getBoundedLineElements = (board, plaitShapes) => {
|
|
|
79
91
|
const lines = getBoardLines(board);
|
|
80
92
|
return lines.filter(line => plaitShapes.find(shape => PlaitLine.isBoundElementOfSource(line, shape) || PlaitLine.isBoundElementOfTarget(line, shape)));
|
|
81
93
|
};
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LWZyYWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXctZnJhZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvRCxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBcUIsRUFBRSxFQUFFO0lBQ3RELE1BQU0sS0FBSyxHQUFHLFNBQXVCLENBQUM7SUFDdEMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFbEUsS0FBSyxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBb0IsRUFBRSxFQUFFO1FBQ2hELE1BQU0sWUFBWSxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNyQixNQUFN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QUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLEVBQUU7Z0JBQ3JFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxFQUFFO29CQUMxRCxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQzlELENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU87YUFDVjtTQUNKO1FBRUQsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsV0FBeUIsRUFBRSxFQUFFO0lBQ25GLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDdkIsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUM1SCxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBnZXREYXRhRnJvbUNsaXBib2FyZCwgZ2V0U2VsZWN0ZWRFbGVtZW50cywgc2V0Q2xpcGJvYXJkRGF0YSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRHZW9tZXRyeSwgUGxhaXRMaW5lLCBQbGFpdFNoYXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRUZXh0RnJvbUNsaXBib2FyZCB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IGJ1aWxkQ2xpcGJvYXJkRGF0YSwgaW5zZXJ0Q2xpcGJvYXJkRGF0YSB9IGZyb20gJy4uL3V0aWxzL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0Qm9hcmRMaW5lcyB9IGZyb20gJy4uL3V0aWxzL2xpbmUnO1xuaW1wb3J0IHsgUGxhaXRJbWFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW1hZ2UnO1xuaW1wb3J0IHsgYWNjZXB0SW1hZ2VUeXBlcywgYnVpbGRJbWFnZSwgZ2V0RWxlbWVudE9mRm9jdXNlZEltYWdlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBERUZBVUxUX0lNQUdFX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhEcmF3RnJhZ21lbnQgPSAoYmFzZUJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgYm9hcmQgPSBiYXNlQm9hcmQgYXMgUGxhaXRCb2FyZDtcbiAgICBjb25zdCB7IGdldERlbGV0ZWRGcmFnbWVudCwgc2V0RnJhZ21lbnQsIGluc2VydEZyYWdtZW50IH0gPSBib2FyZDtcblxuICAgIGJvYXJkLmdldERlbGV0ZWRGcmFnbWVudCA9IChkYXRhOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICBjb25zdCBkcmF3RWxlbWVudHMgPSBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGlmIChkcmF3RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBnZW9tZXRyeUVsZW1lbnRzID0gZHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodmFsdWUpKSBhcyBQbGFpdEdlb21ldHJ5W107XG4gICAgICAgICAgICBjb25zdCBsaW5lRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKHZhbHVlKSkgYXMgUGxhaXRMaW5lW107XG4gICAgICAgICAgICBjb25zdCBpbWFnZUVsZW1lbnRzID0gZHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UodmFsdWUpKSBhcyBQbGFpdEltYWdlW107XG5cbiAgICAgICAgICAgIGNvbnN0IGJvdW5kTGluZUVsZW1lbnRzID0gW1xuICAgICAgICAgICAgICAgIC4uLmdldEJvdW5kZWRMaW5lRWxlbWVudHMoYm9hcmQsIGdlb21ldHJ5RWxlbWVudHMpLFxuICAgICAgICAgICAgICAgIC4uLmdldEJvdW5kZWRMaW5lRWxlbWVudHMoYm9hcmQsIGltYWdlRWxlbWVudHMpXG4gICAgICAgICAgICBdLmZpbHRlcihsaW5lID0+ICFsaW5lRWxlbWVudHMuaW5jbHVkZXMobGluZSkpO1xuICAgICAgICAgICAgZGF0YS5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLltcbiAgICAgICAgICAgICAgICAgICAgLi4uZ2VvbWV0cnlFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4ubGluZUVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAuLi5pbWFnZUVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAuLi5ib3VuZExpbmVFbGVtZW50cy5maWx0ZXIobGluZSA9PiAhbGluZUVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldERlbGV0ZWRGcmFnbWVudChkYXRhKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuc2V0RnJhZ21lbnQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgfCBudWxsLCB0eXBlOiAnY29weScgfCAnY3V0JykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREcmF3RWxlbWVudHMgPSBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGxldCBib3VuZExpbmVFbGVtZW50czogUGxhaXRMaW5lW10gPSBbXTtcbiAgICAgICAgaWYgKHRhcmdldERyYXdFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnY3V0Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5RWxlbWVudHMgPSB0YXJnZXREcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeSh2YWx1ZSkpIGFzIFBsYWl0R2VvbWV0cnlbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lRWxlbWVudHMgPSB0YXJnZXREcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKHZhbHVlKSkgYXMgUGxhaXRMaW5lW107XG4gICAgICAgICAgICAgICAgYm91bmRMaW5lRWxlbWVudHMgPSBnZXRCb3VuZGVkTGluZUVsZW1lbnRzKGJvYXJkLCBnZW9tZXRyeUVsZW1lbnRzKS5maWx0ZXIobGluZSA9PiAhbGluZUVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gYnVpbGRDbGlwYm9hcmREYXRhKFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIFsuLi50YXJnZXREcmF3RWxlbWVudHMsIC4uLmJvdW5kTGluZUVsZW1lbnRzXSxcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUgPyBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55XSA6IFswLCAwXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNldENsaXBib2FyZERhdGEoZGF0YSwgZWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHNldEZyYWdtZW50KGRhdGEsIHJlY3RhbmdsZSwgdHlwZSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmluc2VydEZyYWdtZW50ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIHRhcmdldFBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IGdldERhdGFGcm9tQ2xpcGJvYXJkKGRhdGEpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGRyYXdFbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQodmFsdWUpKSBhcyBQbGFpdERyYXdFbGVtZW50W107XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPiAwICYmIGRyYXdFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpbnNlcnRDbGlwYm9hcmREYXRhKGJvYXJkLCBkcmF3RWxlbWVudHMsIHRhcmdldFBvaW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBnZXRUZXh0RnJvbUNsaXBib2FyZChkYXRhKTtcbiAgICAgICAgICAgIC8vICgq77+j77i277+jKVxuICAgICAgICAgICAgY29uc3QgaW5zZXJ0QXNDaGlsZHJlbiA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIHNlbGVjdGVkRWxlbWVudHNbMF0uY2hpbGRyZW47XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRBc0ZyZWVUZXh0ID0gIWluc2VydEFzQ2hpbGRyZW47XG4gICAgICAgICAgICBpZiAodGV4dCAmJiBpbnNlcnRBc0ZyZWVUZXh0KSB7XG4gICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuaW5zZXJ0VGV4dChib2FyZCwgdGFyZ2V0UG9pbnQsIHRleHQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhPy5maWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjY2VwdEltYWdlQXJyYXkgPSBhY2NlcHRJbWFnZVR5cGVzLm1hcCh0eXBlID0+ICdpbWFnZS8nICsgdHlwZSk7XG4gICAgICAgICAgICBjb25zdCBjYW5JbnNlcnRpb25JbWFnZSA9XG4gICAgICAgICAgICAgICAgIWdldEVsZW1lbnRPZkZvY3VzZWRJbWFnZShib2FyZCkgJiYgIShzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBib2FyZC5pc0ltYWdlQmluZGluZ0FsbG93ZWQoc2VsZWN0ZWRFbGVtZW50c1swXSkpO1xuICAgICAgICAgICAgaWYgKGFjY2VwdEltYWdlQXJyYXkuaW5jbHVkZXMoZGF0YT8uZmlsZXNbMF0udHlwZSkgJiYgY2FuSW5zZXJ0aW9uSW1hZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZUZpbGUgPSBkYXRhLmZpbGVzWzBdO1xuICAgICAgICAgICAgICAgIGJ1aWxkSW1hZ2UoYm9hcmQsIGltYWdlRmlsZSwgREVGQVVMVF9JTUFHRV9XSURUSCwgaW1hZ2VJdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuaW5zZXJ0SW1hZ2UoYm9hcmQsIGltYWdlSXRlbSwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGluc2VydEZyYWdtZW50KGRhdGEsIHRhcmdldFBvaW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJvdW5kZWRMaW5lRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBsYWl0U2hhcGVzOiBQbGFpdFNoYXBlW10pID0+IHtcbiAgICBjb25zdCBsaW5lcyA9IGdldEJvYXJkTGluZXMoYm9hcmQpO1xuICAgIHJldHVybiBsaW5lcy5maWx0ZXIobGluZSA9PlxuICAgICAgICBwbGFpdFNoYXBlcy5maW5kKHNoYXBlID0+IFBsYWl0TGluZS5pc0JvdW5kRWxlbWVudE9mU291cmNlKGxpbmUsIHNoYXBlKSB8fCBQbGFpdExpbmUuaXNCb3VuZEVsZW1lbnRPZlRhcmdldChsaW5lLCBzaGFwZSkpXG4gICAgKTtcbn07XG4iXX0=
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LWZyYWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXctZnJhZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQU9ILHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUN0QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFNBQXFCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLEtBQUssR0FBRyxTQUF1QixDQUFDO0lBQ3RDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWxFLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQW9CLEVBQUUsRUFBRTtRQUNoRCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFvQixDQUFDO1lBQzdHLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQWdCLENBQUM7WUFDakcsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBaUIsQ0FBQztZQUVwRyxNQUFNLGlCQUFpQixHQUFHO2dCQUN0QixHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztnQkFDbEQsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO2FBQ2xELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FDTCxHQUFHO2dCQUNDLEdBQUcsZ0JBQWdCO2dCQUNuQixHQUFHLFlBQVk7Z0JBQ2YsR0FBRyxhQUFhO2dCQUNoQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwRSxDQUNKLENBQUM7U0FDTDtRQUNELE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUNoQixJQUF5QixFQUN6QixnQkFBaUQsRUFDakQsU0FBaUMsRUFDakMsSUFBb0IsRUFDdEIsRUFBRTtRQUNBLE1BQU0sa0JBQWtCLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxpQkFBaUIsR0FBZ0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFO1lBQzNCLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQW9CLENBQUM7Z0JBQ25ILE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBZ0IsQ0FBQztnQkFDdkcsaUJBQWlCLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDcEg7WUFDRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLGlCQUFpQixDQUFDLENBQUM7WUFDdkUsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RyxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ25CLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDN0Y7aUJBQU07Z0JBQ0gsZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUU7b0JBQ3JELElBQUk7b0JBQ0osSUFBSSxFQUFFLHFCQUFxQixDQUFDLFFBQVE7b0JBQ3BDLElBQUksRUFBRSxRQUFRO2lCQUNqQixDQUFDLENBQUM7YUFDTjtTQUNKO1FBQ0QsV0FBVyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQXlCLEVBQUUsYUFBbUMsRUFBRSxXQUFrQixFQUFFLEVBQUU7UUFDMUcsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRCxJQUFJLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0saUJBQWlCLEdBQ25CLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3SCxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixFQUFFO2dCQUM3RSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxVQUFVLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsRUFBRTtvQkFDMUQsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPO2FBQ1Y7U0FDSjtRQUVELElBQUksYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7WUFDakMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQXVCLENBQUM7WUFDMUgsSUFBSSxhQUFhLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDeEYsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQzthQUN6RDtTQUNKO1FBRUQsSUFBSSxhQUFhLEVBQUUsSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDaEUsU0FBUztnQkFDVCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUN2RixNQUFNLGdCQUFnQixHQUFHLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNDLElBQUksZ0JBQWdCLEVBQUU7b0JBQ2xCLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xFLE9BQU87aUJBQ1Y7YUFDSjtTQUNKO1FBRUQsY0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQXlCLEVBQUUsRUFBRTtJQUNuRixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3ZCLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDNUgsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2xpcGJvYXJkRGF0YSxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0LFxuICAgIFdyaXRhYmxlQ2xpcGJvYXJkVHlwZSxcbiAgICBhZGRDbGlwYm9hcmRDb250ZXh0LFxuICAgIGNyZWF0ZUNsaXBib2FyZENvbnRleHQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50c1xufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSwgUGxhaXRTaGFwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVpbGRDbGlwYm9hcmREYXRhLCBpbnNlcnRDbGlwYm9hcmREYXRhIH0gZnJvbSAnLi4vdXRpbHMvY2xpcGJvYXJkJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRCb2FyZExpbmVzIH0gZnJvbSAnLi4vdXRpbHMvbGluZSc7XG5pbXBvcnQgeyBQbGFpdEltYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbWFnZSc7XG5pbXBvcnQgeyBhY2NlcHRJbWFnZVR5cGVzLCBidWlsZEltYWdlLCBnZXRFbGVtZW50T2ZGb2N1c2VkSW1hZ2UsIGdldEVsZW1lbnRzVGV4dCwgZ2V0Rmlyc3RUZXh0RWRpdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBERUZBVUxUX0lNQUdFX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhEcmF3RnJhZ21lbnQgPSAoYmFzZUJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgYm9hcmQgPSBiYXNlQm9hcmQgYXMgUGxhaXRCb2FyZDtcbiAgICBjb25zdCB7IGdldERlbGV0ZWRGcmFnbWVudCwgc2V0RnJhZ21lbnQsIGluc2VydEZyYWdtZW50IH0gPSBib2FyZDtcblxuICAgIGJvYXJkLmdldERlbGV0ZWRGcmFnbWVudCA9IChkYXRhOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICBjb25zdCBkcmF3RWxlbWVudHMgPSBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGlmIChkcmF3RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBnZW9tZXRyeUVsZW1lbnRzID0gZHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodmFsdWUpKSBhcyBQbGFpdEdlb21ldHJ5W107XG4gICAgICAgICAgICBjb25zdCBsaW5lRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKHZhbHVlKSkgYXMgUGxhaXRMaW5lW107XG4gICAgICAgICAgICBjb25zdCBpbWFnZUVsZW1lbnRzID0gZHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UodmFsdWUpKSBhcyBQbGFpdEltYWdlW107XG5cbiAgICAgICAgICAgIGNvbnN0IGJvdW5kTGluZUVsZW1lbnRzID0gW1xuICAgICAgICAgICAgICAgIC4uLmdldEJvdW5kZWRMaW5lRWxlbWVudHMoYm9hcmQsIGdlb21ldHJ5RWxlbWVudHMpLFxuICAgICAgICAgICAgICAgIC4uLmdldEJvdW5kZWRMaW5lRWxlbWVudHMoYm9hcmQsIGltYWdlRWxlbWVudHMpXG4gICAgICAgICAgICBdLmZpbHRlcihsaW5lID0+ICFsaW5lRWxlbWVudHMuaW5jbHVkZXMobGluZSkpO1xuICAgICAgICAgICAgZGF0YS5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLltcbiAgICAgICAgICAgICAgICAgICAgLi4uZ2VvbWV0cnlFbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgLi4ubGluZUVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAuLi5pbWFnZUVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAuLi5ib3VuZExpbmVFbGVtZW50cy5maWx0ZXIobGluZSA9PiAhbGluZUVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldERlbGV0ZWRGcmFnbWVudChkYXRhKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuc2V0RnJhZ21lbnQgPSAoXG4gICAgICAgIGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsXG4gICAgICAgIGNsaXBib2FyZENvbnRleHQ6IFdyaXRhYmxlQ2xpcGJvYXJkQ29udGV4dCB8IG51bGwsXG4gICAgICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50IHwgbnVsbCxcbiAgICAgICAgdHlwZTogJ2NvcHknIHwgJ2N1dCdcbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RHJhd0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBsZXQgYm91bmRMaW5lRWxlbWVudHM6IFBsYWl0TGluZVtdID0gW107XG4gICAgICAgIGlmICh0YXJnZXREcmF3RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2N1dCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeUVsZW1lbnRzID0gdGFyZ2V0RHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodmFsdWUpKSBhcyBQbGFpdEdlb21ldHJ5W107XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZUVsZW1lbnRzID0gdGFyZ2V0RHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzTGluZSh2YWx1ZSkpIGFzIFBsYWl0TGluZVtdO1xuICAgICAgICAgICAgICAgIGJvdW5kTGluZUVsZW1lbnRzID0gZ2V0Qm91bmRlZExpbmVFbGVtZW50cyhib2FyZCwgZ2VvbWV0cnlFbGVtZW50cykuZmlsdGVyKGxpbmUgPT4gIWxpbmVFbGVtZW50cy5pbmNsdWRlcyhsaW5lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gWy4uLnRhcmdldERyYXdFbGVtZW50cywgLi4uYm91bmRMaW5lRWxlbWVudHNdO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBidWlsZENsaXBib2FyZERhdGEoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMsIHJlY3RhbmdsZSA/IFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnldIDogWzAsIDBdKTtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBnZXRFbGVtZW50c1RleHQoc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICBpZiAoIWNsaXBib2FyZENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBjbGlwYm9hcmRDb250ZXh0ID0gY3JlYXRlQ2xpcGJvYXJkQ29udGV4dChXcml0YWJsZUNsaXBib2FyZFR5cGUuZWxlbWVudHMsIGVsZW1lbnRzLCB0ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xpcGJvYXJkQ29udGV4dCA9IGFkZENsaXBib2FyZENvbnRleHQoY2xpcGJvYXJkQ29udGV4dCwge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBXcml0YWJsZUNsaXBib2FyZFR5cGUuZWxlbWVudHMsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0RnJhZ21lbnQoZGF0YSwgY2xpcGJvYXJkQ29udGV4dCwgcmVjdGFuZ2xlLCB0eXBlKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaW5zZXJ0RnJhZ21lbnQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCwgY2xpcGJvYXJkRGF0YTogQ2xpcGJvYXJkRGF0YSB8IG51bGwsIHRhcmdldFBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG5cbiAgICAgICAgaWYgKGNsaXBib2FyZERhdGE/LmZpbGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjY2VwdEltYWdlQXJyYXkgPSBhY2NlcHRJbWFnZVR5cGVzLm1hcCh0eXBlID0+ICdpbWFnZS8nICsgdHlwZSk7XG4gICAgICAgICAgICBjb25zdCBjYW5JbnNlcnRpb25JbWFnZSA9XG4gICAgICAgICAgICAgICAgIWdldEVsZW1lbnRPZkZvY3VzZWRJbWFnZShib2FyZCkgJiYgIShzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBib2FyZC5pc0ltYWdlQmluZGluZ0FsbG93ZWQoc2VsZWN0ZWRFbGVtZW50c1swXSkpO1xuICAgICAgICAgICAgaWYgKGFjY2VwdEltYWdlQXJyYXkuaW5jbHVkZXMoY2xpcGJvYXJkRGF0YS5maWxlc1swXS50eXBlKSAmJiBjYW5JbnNlcnRpb25JbWFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlRmlsZSA9IGNsaXBib2FyZERhdGEuZmlsZXNbMF07XG4gICAgICAgICAgICAgICAgYnVpbGRJbWFnZShib2FyZCwgaW1hZ2VGaWxlLCBERUZBVUxUX0lNQUdFX1dJRFRILCBpbWFnZUl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5pbnNlcnRJbWFnZShib2FyZCwgaW1hZ2VJdGVtLCB0YXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsaXBib2FyZERhdGE/LmVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRyYXdFbGVtZW50cyA9IGNsaXBib2FyZERhdGEuZWxlbWVudHM/LmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQodmFsdWUpKSBhcyBQbGFpdERyYXdFbGVtZW50W107XG4gICAgICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YS5lbGVtZW50cyAmJiBjbGlwYm9hcmREYXRhLmVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgZHJhd0VsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpbnNlcnRDbGlwYm9hcmREYXRhKGJvYXJkLCBkcmF3RWxlbWVudHMsIHRhcmdldFBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbGlwYm9hcmREYXRhPy50ZXh0KSB7XG4gICAgICAgICAgICBpZiAoIWNsaXBib2FyZERhdGEuZWxlbWVudHMgfHwgY2xpcGJvYXJkRGF0YS5lbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyAoKu+/o++4tu+/oylcbiAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRBc0NoaWxkcmVuID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgc2VsZWN0ZWRFbGVtZW50c1swXS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRBc0ZyZWVUZXh0ID0gIWluc2VydEFzQ2hpbGRyZW47XG4gICAgICAgICAgICAgICAgaWYgKGluc2VydEFzRnJlZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuaW5zZXJ0VGV4dChib2FyZCwgdGFyZ2V0UG9pbnQsIGNsaXBib2FyZERhdGEudGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpbnNlcnRGcmFnbWVudChkYXRhLCBjbGlwYm9hcmREYXRhLCB0YXJnZXRQb2ludCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCb3VuZGVkTGluZUVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwbGFpdFNoYXBlczogUGxhaXRTaGFwZVtdKSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBnZXRCb2FyZExpbmVzKGJvYXJkKTtcbiAgICByZXR1cm4gbGluZXMuZmlsdGVyKGxpbmUgPT5cbiAgICAgICAgcGxhaXRTaGFwZXMuZmluZChzaGFwZSA9PiBQbGFpdExpbmUuaXNCb3VuZEVsZW1lbnRPZlNvdXJjZShsaW5lLCBzaGFwZSkgfHwgUGxhaXRMaW5lLmlzQm91bmRFbGVtZW50T2ZUYXJnZXQobGluZSwgc2hhcGUpKVxuICAgICk7XG59O1xuIl19
|
package/esm2022/utils/line.mjs
CHANGED
|
@@ -389,4 +389,4 @@ export const handleLineCreating = (board, lineShape, startPoint, movingPoint, so
|
|
|
389
389
|
PlaitBoard.getElementActiveHost(board).append(lineShapeG);
|
|
390
390
|
return temporaryLineElement;
|
|
391
391
|
};
|
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1QsK0JBQStCLEVBQy9CLFVBQVUsRUFDVixPQUFPLEVBQ1AsY0FBYyxFQUNkLGVBQWUsRUFDZixZQUFZLEVBRVosY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsbUJBQW1CLEVBRW5CLFNBQVMsRUFFVCw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ3BCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osY0FBYyxFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUVYLGFBQWEsRUFFYixjQUFjLEVBQ2QsU0FBUyxFQUVULGdCQUFnQixFQUVoQixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEs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LENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUG9pbnQsXG4gICAgaWRDcmVhdG9yLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBjcmVhdGVHLFxuICAgIGdldEVsZW1lbnRCeUlkLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBmaW5kRWxlbWVudHMsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIGRyYXdMaW5lYXJQYXRoLFxuICAgIGNyZWF0ZU1hc2ssXG4gICAgY3JlYXRlUmVjdCxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgRGlyZWN0aW9uLFxuICAgIFZlY3RvcixcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIGNhdG11bGxSb21GaXR0aW5nXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgZ2V0UG9pbnRzLFxuICAgIGdldFJlY3RhbmdsZUJ5UG9pbnRzLFxuICAgIGdldFBvaW50T25Qb2x5bGluZSxcbiAgICBnZXREaXJlY3Rpb25GYWN0b3IsXG4gICAgcm90YXRlVmVjdG9yQW50aTkwLFxuICAgIGdldERpcmVjdGlvbkJ5VmVjdG9yLFxuICAgIGdldE9wcG9zaXRlRGlyZWN0aW9uLFxuICAgIGdldERpcmVjdGlvbkJ5UG9pbnRPZlJlY3RhbmdsZSxcbiAgICBnZXRQb2ludEJ5VmVjdG9yLFxuICAgIHJlbW92ZUR1cGxpY2F0ZVBvaW50cyxcbiAgICByZWR1Y2VSb3V0ZU1hcmdpbixcbiAgICBnZW5lcmF0ZUVsYm93TGluZVJvdXRlLFxuICAgIGdldE5leHRQb2ludCxcbiAgICBnZXRFeHRlbmRQb2ludFxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQmFzaWNTaGFwZXMsXG4gICAgTGluZUhhbmRsZSxcbiAgICBMaW5lSGFuZGxlS2V5LFxuICAgIExpbmVIYW5kbGVSZWYsXG4gICAgTGluZU1hcmtlclR5cGUsXG4gICAgTGluZVNoYXBlLFxuICAgIExpbmVUZXh0LFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdExpbmUsXG4gICAgUGxhaXRTaGFwZVxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFBvaW50c0J5Q2VudGVyUG9pbnQsIGdldE5lYXJlc3RQb2ludCwgY3JlYXRlR2VvbWV0cnlFbGVtZW50IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRMaW5lRGFzaEJ5RWxlbWVudCwgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQsIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBkcmF3TGluZUFycm93IH0gZnJvbSAnLi9saW5lLWFycm93JztcbmltcG9ydCB7IHBvaW50c09uQmV6aWVyQ3VydmVzIH0gZnJvbSAncG9pbnRzLW9uLWN1cnZlJztcbmltcG9ydCB7IE9wIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBnZXRTaGFwZSB9IGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IHsgRGVmYXVsdExpbmVTdHlsZSwgTElORV9URVhUX1NQQUNFIH0gZnJvbSAnLi4vY29uc3RhbnRzL2xpbmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlR2VuZXJhdG9yIH0gZnJvbSAnLi4vZ2VuZXJhdG9ycy9saW5lLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBSRUFDVElPTl9NQVJHSU4gfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0SGl0T3V0bGluZUdlb21ldHJ5IH0gZnJvbSAnLi9wb3NpdGlvbi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRMaW5lTWVtb3JpemVkTGF0ZXN0IH0gZnJvbSAnLi9tZW1vcml6ZSc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMaW5lRWxlbWVudCA9IChcbiAgICBzaGFwZTogTGluZVNoYXBlLFxuICAgIHBvaW50czogW1BvaW50LCBQb2ludF0sXG4gICAgc291cmNlOiBMaW5lSGFuZGxlLFxuICAgIHRhcmdldDogTGluZUhhbmRsZSxcbiAgICB0ZXh0cz86IExpbmVUZXh0W10sXG4gICAgb3B0aW9ucz86IFBpY2s8UGxhaXRMaW5lLCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJz5cbik6IFBsYWl0TGluZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRleHRzOiB0ZXh0cyA/IHRleHRzIDogW10sXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBzd2l0Y2ggKGVsZW1lbnQuc2hhcGUpIHtcbiAgICAgICAgY2FzZSBMaW5lU2hhcGUuZWxib3c6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBMaW5lU2hhcGUuY3VydmU6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDdXJ2ZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVSZWZQYWlyID0gZ2V0TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgcG9pbnRzWzBdID0gaGFuZGxlUmVmUGFpci5zb3VyY2UucG9pbnQ7XG4gICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdID0gaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQ7XG4gICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVIYW5kbGVSZWZQYWlyID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHNvdXJjZUJvdW5kRWxlbWVudCA9IGVsZW1lbnQuc291cmNlLmJvdW5kSWQgPyBnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGFyZ2V0Qm91bmRFbGVtZW50ID0gZWxlbWVudC50YXJnZXQuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnRhcmdldC5ib3VuZElkKSA6IHVuZGVmaW5lZDtcbiAgICBsZXQgc291cmNlUG9pbnQgPSBzb3VyY2VCb3VuZEVsZW1lbnQgPyBnZXRDb25uZWN0aW9uUG9pbnQoc291cmNlQm91bmRFbGVtZW50LCBlbGVtZW50LnNvdXJjZS5jb25uZWN0aW9uISkgOiBlbGVtZW50LnBvaW50c1swXTtcbiAgICBsZXQgdGFyZ2V0UG9pbnQgPSB0YXJnZXRCb3VuZEVsZW1lbnRcbiAgICAgICAgPyBnZXRDb25uZWN0aW9uUG9pbnQodGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISlcbiAgICAgICAgOiBlbGVtZW50LnBvaW50c1tlbGVtZW50LnBvaW50cy5sZW5ndGggLSAxXTtcbiAgICBsZXQgc291cmNlRGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlWZWN0b3IoW3RhcmdldFBvaW50WzBdIC0gc291cmNlUG9pbnRbMF0sIHRhcmdldFBvaW50WzFdIC0gc291cmNlUG9pbnRbMV1dKSB8fCBEaXJlY3Rpb24ucmlnaHQ7XG4gICAgbGV0IHRhcmdldERpcmVjdGlvbiA9IGdldE9wcG9zaXRlRGlyZWN0aW9uKHNvdXJjZURpcmVjdGlvbik7XG4gICAgY29uc3Qgc291cmNlRmFjdG9yID0gZ2V0RGlyZWN0aW9uRmFjdG9yKHNvdXJjZURpcmVjdGlvbik7XG4gICAgY29uc3QgdGFyZ2V0RmFjdG9yID0gZ2V0RGlyZWN0aW9uRmFjdG9yKHRhcmdldERpcmVjdGlvbik7XG4gICAgY29uc3Qgc291cmNlSGFuZGxlUmVmOiBMaW5lSGFuZGxlUmVmID0ge1xuICAgICAgICBrZXk6IExpbmVIYW5kbGVLZXkuc291cmNlLFxuICAgICAgICBwb2ludDogc291cmNlUG9pbnQsXG4gICAgICAgIGRpcmVjdGlvbjogc291cmNlRGlyZWN0aW9uLFxuICAgICAgICB2ZWN0b3I6IFtzb3VyY2VGYWN0b3IueCwgc291cmNlRmFjdG9yLnldXG4gICAgfTtcbiAgICBjb25zdCB0YXJnZXRIYW5kbGVSZWY6IExpbmVIYW5kbGVSZWYgPSB7XG4gICAgICAgIGtleTogTGluZUhhbmRsZUtleS50YXJnZXQsXG4gICAgICAgIHBvaW50OiB0YXJnZXRQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uOiB0YXJnZXREaXJlY3Rpb24sXG4gICAgICAgIHZlY3RvcjogW3RhcmdldEZhY3Rvci54LCB0YXJnZXRGYWN0b3IueV1cbiAgICB9O1xuICAgIGlmIChzb3VyY2VCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbk9mZnNldCA9IFBsYWl0TGluZS5pc1NvdXJjZU1hcmtPclRhcmdldE1hcmsoZWxlbWVudCwgTGluZU1hcmtlclR5cGUubm9uZSwgTGluZUhhbmRsZUtleS5zb3VyY2UpID8gMCA6IHN0cm9rZVdpZHRoO1xuICAgICAgICBjb25zdCBzb3VyY2VWZWN0b3IgPSBnZXRWZWN0b3JCeUNvbm5lY3Rpb24oc291cmNlQm91bmRFbGVtZW50LCBlbGVtZW50LnNvdXJjZS5jb25uZWN0aW9uISk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHNvdXJjZVZlY3Rvcik7XG4gICAgICAgIHNvdXJjZURpcmVjdGlvbiA9IGRpcmVjdGlvbiA/IGRpcmVjdGlvbiA6IHNvdXJjZURpcmVjdGlvbjtcbiAgICAgICAgc291cmNlUG9pbnQgPSBnZXRDb25uZWN0aW9uUG9pbnQoc291cmNlQm91bmRFbGVtZW50LCBlbGVtZW50LnNvdXJjZS5jb25uZWN0aW9uISwgc291cmNlRGlyZWN0aW9uLCBjb25uZWN0aW9uT2Zmc2V0KTtcbiAgICAgICAgc291cmNlSGFuZGxlUmVmLmJvdW5kRWxlbWVudCA9IHNvdXJjZUJvdW5kRWxlbWVudDtcbiAgICAgICAgc291cmNlSGFuZGxlUmVmLmRpcmVjdGlvbiA9IHNvdXJjZURpcmVjdGlvbjtcbiAgICAgICAgc291cmNlSGFuZGxlUmVmLnBvaW50ID0gc291cmNlUG9pbnQ7XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi52ZWN0b3IgPSBzb3VyY2VWZWN0b3I7XG4gICAgfVxuICAgIGlmICh0YXJnZXRCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbk9mZnNldCA9IFBsYWl0TGluZS5pc1NvdXJjZU1hcmtPclRhcmdldE1hcmsoZWxlbWVudCwgTGluZU1hcmtlclR5cGUubm9uZSwgTGluZUhhbmRsZUtleS50YXJnZXQpID8gMCA6IHN0cm9rZVdpZHRoO1xuICAgICAgICBjb25zdCB0YXJnZXRWZWN0b3IgPSBnZXRWZWN0b3JCeUNvbm5lY3Rpb24odGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHRhcmdldFZlY3Rvcik7XG4gICAgICAgIHRhcmdldERpcmVjdGlvbiA9IGRpcmVjdGlvbiA/IGRpcmVjdGlvbiA6IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgdGFyZ2V0UG9pbnQgPSBnZXRDb25uZWN0aW9uUG9pbnQodGFyZ2V0Qm91bmRFbGVtZW50LCBlbGVtZW50LnRhcmdldC5jb25uZWN0aW9uISwgdGFyZ2V0RGlyZWN0aW9uLCBjb25uZWN0aW9uT2Zmc2V0KTtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLmJvdW5kRWxlbWVudCA9IHRhcmdldEJvdW5kRWxlbWVudDtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLmRpcmVjdGlvbiA9IHRhcmdldERpcmVjdGlvbjtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLnBvaW50ID0gdGFyZ2V0UG9pbnQ7XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi52ZWN0b3IgPSB0YXJnZXRWZWN0b3I7XG4gICAgfVxuICAgIHJldHVybiB7IHNvdXJjZTogc291cmNlSGFuZGxlUmVmLCB0YXJnZXQ6IHRhcmdldEhhbmRsZVJlZiB9O1xufTtcblxuY29uc3QgY3JlYXRlRmFrZUVsZW1lbnQgPSAoc3RhcnRQb2ludDogUG9pbnQsIHZlY3RvcjogVmVjdG9yKSA9PiB7XG4gICAgY29uc3QgcG9pbnQgPSBnZXRQb2ludEJ5VmVjdG9yKHN0YXJ0UG9pbnQsIHZlY3RvciwgLTI1KTtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRQb2ludHNCeUNlbnRlclBvaW50KHBvaW50LCA1MCwgNTApO1xuICAgIHJldHVybiBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoQmFzaWNTaGFwZXMucmVjdGFuZ2xlLCBwb2ludHMsICcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGJvd1BvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBoYW5kbGVSZWZQYWlyID0gZ2V0TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBsZXQgc291cmNlRWxlbWVudCA9IGVsZW1lbnQuc291cmNlLmJvdW5kSWQgPyBnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB0YXJnZXRFbGVtZW50ID0gZWxlbWVudC50YXJnZXQuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnRhcmdldC5ib3VuZElkKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHBvaW50czogUG9pbnRbXSA9IFtdO1xuICAgICAgICBpZiAoIXNvdXJjZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGhhbmRsZVJlZlBhaXIuc291cmNlO1xuICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IGNyZWF0ZUZha2VFbGVtZW50KHNvdXJjZS5wb2ludCwgc291cmNlLnZlY3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBoYW5kbGVSZWZQYWlyLnRhcmdldDtcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnQgPSBjcmVhdGVGYWtlRWxlbWVudCh0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKFxuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlQnlQb2ludHModGFyZ2V0RWxlbWVudC5wb2ludHMpLFxuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQodGFyZ2V0RWxlbWVudCkgKiAyXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHNvdXJjZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKFxuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlQnlQb2ludHMoc291cmNlRWxlbWVudC5wb2ludHMpLFxuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoc291cmNlRWxlbWVudCkgKiAyXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gaGFuZGxlUmVmUGFpci5zb3VyY2UucG9pbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQ7XG4gICAgICAgIGNvbnN0IHsgc291cmNlT2Zmc2V0LCB0YXJnZXRPZmZzZXQgfSA9IHJlZHVjZVJvdXRlTWFyZ2luKHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3Qgc291cmNlT3V0ZXJSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZXhwYW5kKFxuICAgICAgICAgICAgc291cmNlUmVjdGFuZ2xlLFxuICAgICAgICAgICAgc291cmNlT2Zmc2V0WzNdLFxuICAgICAgICAgICAgc291cmNlT2Zmc2V0WzBdLFxuICAgICAgICAgICAgc291cmNlT2Zmc2V0WzFdLFxuICAgICAgICAgICAgc291cmNlT2Zmc2V0WzJdXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRhcmdldE91dGVyUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmV4cGFuZChcbiAgICAgICAgICAgIHRhcmdldFJlY3RhbmdsZSxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldFszXSxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldFswXSxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldFsxXSxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldFsyXVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXh0U291cmNlUG9pbnQgPSBnZXROZXh0UG9pbnQoc291cmNlUG9pbnQsIHNvdXJjZU91dGVyUmVjdGFuZ2xlLCBoYW5kbGVSZWZQYWlyLnNvdXJjZS5kaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBuZXh0VGFyZ2V0UG9pbnQgPSBnZXROZXh0UG9pbnQodGFyZ2V0UG9pbnQsIHRhcmdldE91dGVyUmVjdGFuZ2xlLCBoYW5kbGVSZWZQYWlyLnRhcmdldC5kaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBpc0ludGVyc2VjdCA9XG4gICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHRhcmdldFJlY3RhbmdsZSwgc291cmNlUG9pbnQpIHx8XG4gICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHRhcmdldE91dGVyUmVjdGFuZ2xlLCBuZXh0U291cmNlUG9pbnQpIHx8XG4gICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHNvdXJjZU91dGVyUmVjdGFuZ2xlLCBuZXh0VGFyZ2V0UG9pbnQpIHx8XG4gICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICBpZiAoIWlzSW50ZXJzZWN0KSB7XG4gICAgICAgICAgICBwb2ludHMgPSBnZW5lcmF0ZUVsYm93TGluZVJvdXRlKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VQb2ludCxcbiAgICAgICAgICAgICAgICBuZXh0U291cmNlUG9pbnQsXG4gICAgICAgICAgICAgICAgc291cmNlUmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHNvdXJjZU91dGVyUmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHRhcmdldFBvaW50LFxuICAgICAgICAgICAgICAgIG5leHRUYXJnZXRQb2ludCxcbiAgICAgICAgICAgICAgICB0YXJnZXRSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgdGFyZ2V0T3V0ZXJSZWN0YW5nbGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9pbnRzID0gZ2V0UG9pbnRzKFxuICAgICAgICAgICAgICAgIGhhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50LFxuICAgICAgICAgICAgICAgIGhhbmRsZVJlZlBhaXIuc291cmNlLmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICBoYW5kbGVSZWZQYWlyLnRhcmdldC5wb2ludCxcbiAgICAgICAgICAgICAgICBoYW5kbGVSZWZQYWlyLnRhcmdldC5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMocG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIHBvaW50cztcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQucG9pbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnZlUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBpZiAoZWxlbWVudC5wb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZVJlZlBhaXIgPSBnZXRMaW5lSGFuZGxlUmVmUGFpcihib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHsgc291cmNlLCB0YXJnZXQgfSA9IGhhbmRsZVJlZlBhaXI7XG4gICAgICAgIGNvbnN0IHNvdXJjZUJvdW5kRWxlbWVudCA9IGhhbmRsZVJlZlBhaXIuc291cmNlLmJvdW5kRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0Qm91bmRFbGVtZW50ID0gaGFuZGxlUmVmUGFpci50YXJnZXQuYm91bmRFbGVtZW50O1xuICAgICAgICBsZXQgY3VydmVQb2ludHM6IFBvaW50W10gPSBbc291cmNlLnBvaW50XTtcbiAgICAgICAgY29uc3Qgc3VtRGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnNvdXJjZS5wb2ludCwgLi4udGFyZ2V0LnBvaW50KTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMTIgKyBzdW1EaXN0YW5jZSAvIDM7XG4gICAgICAgIGlmIChzb3VyY2VCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3Rvcihzb3VyY2UucG9pbnQsIHNvdXJjZS52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXRCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3Rvcih0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzU2luZ2xlQm91bmQgPSAoc291cmNlQm91bmRFbGVtZW50ICYmICF0YXJnZXRCb3VuZEVsZW1lbnQpIHx8ICghc291cmNlQm91bmRFbGVtZW50ICYmIHRhcmdldEJvdW5kRWxlbWVudCk7XG4gICAgICAgIGlmIChpc1NpbmdsZUJvdW5kKSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKHRhcmdldC5wb2ludCk7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBRMkMoY3VydmVQb2ludHMpO1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50c09uQmV6aWVyQ3VydmVzKHBvaW50cykgYXMgUG9pbnRbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNvdXJjZUJvdW5kRWxlbWVudCAmJiAhdGFyZ2V0Qm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3Ioc291cmNlLnBvaW50LCBzb3VyY2UudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3Rvcih0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGN1cnZlUG9pbnRzLnB1c2godGFyZ2V0LnBvaW50KTtcbiAgICAgICAgcmV0dXJuIHBvaW50c09uQmV6aWVyQ3VydmVzKGN1cnZlUG9pbnRzKSBhcyBQb2ludFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBhbGxQb2ludHMgPSBQbGFpdExpbmUuZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgYWxsUG9pbnRzID0gcmVtb3ZlRHVwbGljYXRlUG9pbnRzKGFsbFBvaW50cyk7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGNhdG11bGxSb21GaXR0aW5nKGFsbFBvaW50cyk7XG4gICAgICAgIHJldHVybiBwb2ludHNPbkJlemllckN1cnZlcyhwb2ludHMpIGFzIFBvaW50W107XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybU9wc1RvUG9pbnRzID0gKG9wczogT3BbXSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IGl0ZW0gb2Ygb3BzKSB7XG4gICAgICAgIGlmIChpdGVtLm9wID09PSAnbW92ZScpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtpdGVtLmRhdGFbMF0sIGl0ZW0uZGF0YVsxXV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goW2l0ZW0uZGF0YVswXSwgaXRlbS5kYXRhWzFdXSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChbaXRlbS5kYXRhWzJdLCBpdGVtLmRhdGFbM11dKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtpdGVtLmRhdGFbNF0sIGl0ZW0uZGF0YVs1XV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIaXRQb2x5TGluZSA9IChwYXRoUG9pbnRzOiBQb2ludFtdLCBwb2ludDogUG9pbnQsIHN0cm9rZVdpZHRoOiBudW1iZXIsIGV4cGFuZDogbnVtYmVyID0gMCkgPT4ge1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwYXRoUG9pbnRzLCBwb2ludCk7XG4gICAgcmV0dXJuIGRpc3RhbmNlIDw9IHN0cm9rZVdpZHRoICsgZXhwYW5kO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdExpbmVUZXh0SW5kZXggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgdGV4dHMgPSBlbGVtZW50LnRleHRzO1xuICAgIGlmICghdGV4dHMubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICByZXR1cm4gdGV4dHMuZmluZEluZGV4KHRleHQgPT4ge1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBnZXRQb2ludE9uUG9seWxpbmUocG9pbnRzLCB0ZXh0LnBvc2l0aW9uKTtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0ge1xuICAgICAgICAgICAgeDogY2VudGVyWzBdIC0gdGV4dC53aWR0aCEgLyAyLFxuICAgICAgICAgICAgeTogY2VudGVyWzFdIC0gdGV4dC5oZWlnaHQhIC8gMixcbiAgICAgICAgICAgIHdpZHRoOiB0ZXh0LndpZHRoISxcbiAgICAgICAgICAgIGhlaWdodDogdGV4dC5oZWlnaHQhXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3BvaW50LCBwb2ludF0pKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0hpdExpbmVUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIHJldHVybiBnZXRIaXRMaW5lVGV4dEluZGV4KGJvYXJkLCBlbGVtZW50LCBwb2ludCkgIT09IC0xO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdMaW5lID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZUNvbG9yID0gZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZUxpbmVEYXNoID0gZ2V0TGluZURhc2hCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgc3Ryb2tlOiBzdHJva2VDb2xvciwgc3Ryb2tlV2lkdGgsIHN0cm9rZUxpbmVEYXNoIH07XG4gICAgY29uc3QgbGluZUcgPSBjcmVhdGVHKCk7XG4gICAgbGV0IHBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGxldCBsaW5lO1xuICAgIGlmIChlbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuY3VydmUpIHtcbiAgICAgICAgbGluZSA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmN1cnZlKHBvaW50cywgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGluZSA9IGRyYXdMaW5lYXJQYXRoKHBvaW50cywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gaWRDcmVhdG9yKCk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ21hc2snLCBgdXJsKCMke2lkfSlgKTtcbiAgICBsaW5lRy5hcHBlbmRDaGlsZChsaW5lKTtcbiAgICBjb25zdCB7IG1hc2ssIG1hc2tUYXJnZXRGaWxsUmVjdCB9ID0gZHJhd01hc2soYm9hcmQsIGVsZW1lbnQsIGlkKTtcbiAgICBsaW5lRy5hcHBlbmRDaGlsZChtYXNrKTtcbiAgICBsaW5lLmFwcGVuZENoaWxkKG1hc2tUYXJnZXRGaWxsUmVjdCk7XG4gICAgY29uc3QgYXJyb3cgPSBkcmF3TGluZUFycm93KGVsZW1lbnQsIHBvaW50cywgeyBzdHJva2U6IHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCB9KTtcbiAgICBhcnJvdyAmJiBsaW5lRy5hcHBlbmRDaGlsZChhcnJvdyk7XG4gICAgcmV0dXJuIGxpbmVHO1xufTtcblxuZnVuY3Rpb24gZHJhd01hc2soYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG1hc2sgPSBjcmVhdGVNYXNrKCk7XG4gICAgbWFzay5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgIGNvbnN0IHBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGxldCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRPdXRsaW5lUmVjdGFuZ2xlKHJlY3RhbmdsZSwgLTMwKTtcbiAgICBjb25zdCBtYXNrRmlsbFJlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSwge1xuICAgICAgICBmaWxsOiAnd2hpdGUnXG4gICAgfSk7XG4gICAgbWFzay5hcHBlbmRDaGlsZChtYXNrRmlsbFJlY3QpO1xuXG4gICAgY29uc3QgdGV4dHMgPSBlbGVtZW50LnRleHRzO1xuICAgIHRleHRzLmZvckVhY2goKHRleHQsIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCB0ZXh0UmVjdGFuZ2xlID0gZ2V0TGluZVRleHRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGluZGV4KTtcbiAgICAgICAgdGV4dFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHRleHRSZWN0YW5nbGUsIExJTkVfVEVYVF9TUEFDRSAqIDIpO1xuICAgICAgICBjb25zdCByZWN0ID0gY3JlYXRlUmVjdCh0ZXh0UmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICBmaWxsOiAnYmxhY2snXG4gICAgICAgIH0pO1xuICAgICAgICBtYXNrLmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH0pO1xuICAgIC8vIG9wZW4gbGluZVxuICAgIGNvbnN0IG1hc2tUYXJnZXRGaWxsUmVjdCA9IGNyZWF0ZVJlY3QocmVjdGFuZ2xlKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgJzAnKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICByZXR1cm4geyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb25Qb2ludCA9IChnZW9tZXRyeTogUGxhaXRHZW9tZXRyeSwgY29ubmVjdGlvbjogUG9pbnQsIGRpcmVjdGlvbj86IERpcmVjdGlvbiwgZGVsdGE/OiBudW1iZXIpOiBQb2ludCA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZ2VvbWV0cnkucG9pbnRzKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihkaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpcmVjdGlvbkZhY3Rvci54ICogZGVsdGEsIHBvaW50WzFdICsgZGlyZWN0aW9uRmFjdG9yLnkgKiBkZWx0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24gPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcG9pbnQ6IFBvaW50LFxuICAgIGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGVcbik6IFBvaW50ID0+IHtcbiAgICBsZXQgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoaGl0RWxlbWVudC5wb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgbGV0IG5lYXJlc3RQb2ludCA9IGdldE5lYXJlc3RQb2ludChoaXRFbGVtZW50LCBwb2ludCwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgY29uc3QgaGl0Q29ubmVjdG9yID0gZ2V0SGl0Q29ubmVjdG9yUG9pbnQobmVhcmVzdFBvaW50LCBoaXRFbGVtZW50LCByZWN0YW5nbGUpO1xuICAgIG5lYXJlc3RQb2ludCA9IGhpdENvbm5lY3RvciA/IGhpdENvbm5lY3RvciA6IG5lYXJlc3RQb2ludDtcbiAgICByZXR1cm4gWyhuZWFyZXN0UG9pbnRbMF0gLSByZWN0YW5nbGUueCkgLyByZWN0YW5nbGUud2lkdGgsIChuZWFyZXN0UG9pbnRbMV0gLSByZWN0YW5nbGUueSkgLyByZWN0YW5nbGUuaGVpZ2h0XTtcbn07XG5cbi8vIGV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uQnlQb2ludE9uUmVjdGFuZ2xlRWRnZSA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IFBvaW50LCBoaXRFbGVtZW50OiBQbGFpdFNoYXBlKTogUG9pbnQgPT4ge1xuLy8gICAgIGxldCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhoaXRFbGVtZW50LnBvaW50cyk7XG4vLyAgICAgY29uc3QgaGl0Q29ubmVjdG9yID0gZ2V0SGl0Q29ubmVjdG9yUG9pbnQocG9pbnQsIGhpdEVsZW1lbnQsIHJlY3RhbmdsZSk7XG4vLyAgICAgY29uc3QgbmV3UG9pbnQgPSBoaXRDb25uZWN0b3IgPz8gcG9pbnQ7XG4vLyAgICAgcmV0dXJuIFsobmV3UG9pbnRbMF0gLSByZWN0YW5nbGUueCkgLyByZWN0YW5nbGUud2lkdGgsIChuZXdQb2ludFsxXSAtIHJlY3RhbmdsZS55KSAvIHJlY3RhbmdsZS5oZWlnaHRdO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdENvbm5lY3RvclBvaW50ID0gKG1vdmluZ1BvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlKGhpdEVsZW1lbnQpO1xuICAgIGNvbnN0IGNvbm5lY3RvciA9IGdldEVuZ2luZShzaGFwZSkuZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgY29uc3QgcG9pbnRzID0gZ2V0UG9pbnRzQnlDZW50ZXJQb2ludChtb3ZpbmdQb2ludCwgMTAsIDEwKTtcbiAgICBjb25zdCBwb2ludFJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG4gICAgcmV0dXJuIGNvbm5lY3Rvci5maW5kKHBvaW50ID0+IHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChwb2ludFJlY3RhbmdsZSwgUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludCwgcG9pbnRdKSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZVRleHRSZWN0YW5nbGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgaW5kZXg6IG51bWJlcik6IFJlY3RhbmdsZUNsaWVudCA9PiB7XG4gICAgY29uc3QgdGV4dCA9IGVsZW1lbnQudGV4dHNbaW5kZXhdO1xuICAgIGNvbnN0IGVsYm93UG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgcG9pbnQgPSBnZXRQb2ludE9uUG9seWxpbmUoZWxib3dQb2ludHMsIHRleHQucG9zaXRpb24pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHBvaW50WzBdIC0gdGV4dC53aWR0aCEgLyAyLFxuICAgICAgICB5OiBwb2ludFsxXSAtIHRleHQuaGVpZ2h0ISAvIDIsXG4gICAgICAgIHdpZHRoOiB0ZXh0LndpZHRoISxcbiAgICAgICAgaGVpZ2h0OiB0ZXh0LmhlaWdodCFcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJvYXJkTGluZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gZmluZEVsZW1lbnRzKGJvYXJkLCB7XG4gICAgICAgIG1hdGNoOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSxcbiAgICAgICAgcmVjdXJzaW9uOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoZWxlbWVudClcbiAgICB9KSBhcyBQbGFpdExpbmVbXTtcbn07XG5cbi8vIHF1YWRyYXRpYyBCZXppZXIgdG8gY3ViaWMgQmV6aWVyXG5leHBvcnQgY29uc3QgUTJDID0gKHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGNvbnN0IG51bVNlZ21lbnRzID0gcG9pbnRzLmxlbmd0aCAvIDM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1TZWdtZW50czsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBxQ29udHJvbCA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGVuZCA9IHBvaW50c1tpICsgMl07XG4gICAgICAgIGNvbnN0IHN0YXJ0RGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnN0YXJ0LCAuLi5xQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IGVuZERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5lbmQsIC4uLnFDb250cm9sKTtcbiAgICAgICAgY29uc3QgY0NvbnRyb2wxID0gZ2V0RXh0ZW5kUG9pbnQoc3RhcnQsIHFDb250cm9sLCAoc3RhcnREaXN0YW5jZSAqIDIpIC8gMyk7XG4gICAgICAgIGNvbnN0IGNDb250cm9sMiA9IGdldEV4dGVuZFBvaW50KGVuZCwgcUNvbnRyb2wsIChlbmREaXN0YW5jZSAqIDIpIC8gMyk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHN0YXJ0LCBjQ29udHJvbDEsIGNDb250cm9sMiwgZW5kKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWZWN0b3JCeUNvbm5lY3Rpb24gPSAoYm91bmRFbGVtZW50OiBQbGFpdEdlb21ldHJ5LCBjb25uZWN0aW9uOiBQb2ludE9mUmVjdGFuZ2xlKTogVmVjdG9yID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhib3VuZEVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlKGJvdW5kRWxlbWVudCk7XG4gICAgY29uc3QgZW5naW5lID0gZ2V0RW5naW5lKHNoYXBlKTtcbiAgICBsZXQgdmVjdG9yOiBWZWN0b3IgPSBbMCwgMF07XG4gICAgY29uc3QgZGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlQb2ludE9mUmVjdGFuZ2xlKGNvbm5lY3Rpb24pO1xuICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgZmFjdG9yID0gZ2V0RGlyZWN0aW9uRmFjdG9yKGRpcmVjdGlvbik7XG4gICAgICAgIHJldHVybiBbZmFjdG9yLngsIGZhY3Rvci55XTtcbiAgICB9XG4gICAgaWYgKGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQpIHtcbiAgICAgICAgY29uc3QgZWRnZSA9IGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVWZWN0b3IgPSBbZWRnZVsxXVswXSAtIGVkZ2VbMF1bMF0sIGVkZ2VbMV1bMV0gLSBlZGdlWzBdWzFdXSBhcyBWZWN0b3I7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yQW50aTkwKGxpbmVWZWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbmdpbmUuZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KSB7XG4gICAgICAgIGNvbnN0IGxpbmVWZWN0b3IgPSBlbmdpbmUuZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgY29ubmVjdGlvbik7XG4gICAgICAgIGlmIChsaW5lVmVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yQW50aTkwKGxpbmVWZWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgYWxpZ25Qb2ludHMgPSAoYmFzZVBvaW50OiBQb2ludCwgbW92aW5nUG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gMztcbiAgICBjb25zdCBuZXdQb2ludDogUG9pbnQgPSBbLi4ubW92aW5nUG9pbnRdO1xuICAgIGlmIChQb2ludC5pc1ZlcnRpY2FsQWxpZ24obmV3UG9pbnQsIGJhc2VQb2ludCwgb2Zmc2V0KSkge1xuICAgICAgICBuZXdQb2ludFswXSA9IGJhc2VQb2ludFswXTtcbiAgICB9XG4gICAgaWYgKFBvaW50LmlzSG9yaXpvbnRhbEFsaWduKG5ld1BvaW50LCBiYXNlUG9pbnQsIG9mZnNldCkpIHtcbiAgICAgICAgbmV3UG9pbnRbMV0gPSBiYXNlUG9pbnRbMV07XG4gICAgfVxuICAgIHJldHVybiBuZXdQb2ludDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVMaW5lQ3JlYXRpbmcgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgbGluZVNoYXBlOiBMaW5lU2hhcGUsXG4gICAgc3RhcnRQb2ludDogUG9pbnQsXG4gICAgbW92aW5nUG9pbnQ6IFBvaW50LFxuICAgIHNvdXJjZUVsZW1lbnQ6IFBsYWl0U2hhcGUgfCBudWxsLFxuICAgIGxpbmVTaGFwZUc6IFNWR0dFbGVtZW50XG4pID0+IHtcbiAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0T3V0bGluZUdlb21ldHJ5KGJvYXJkLCBtb3ZpbmdQb2ludCwgUkVBQ1RJT05fTUFSR0lOKTtcbiAgICBjb25zdCB0YXJnZXRDb25uZWN0aW9uID0gaGl0RWxlbWVudCA/IHRyYW5zZm9ybVBvaW50VG9Db25uZWN0aW9uKGJvYXJkLCBtb3ZpbmdQb2ludCwgaGl0RWxlbWVudCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHNvdXJjZUVsZW1lbnQgPyB0cmFuc2Zvcm1Qb2ludFRvQ29ubmVjdGlvbihib2FyZCwgc3RhcnRQb2ludCwgc291cmNlRWxlbWVudCkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGFyZ2V0Qm91bmRJZCA9IGhpdEVsZW1lbnQgPyBoaXRFbGVtZW50LmlkIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxpbmVHZW5lcmF0b3IgPSBuZXcgTGluZVNoYXBlR2VuZXJhdG9yKGJvYXJkKTtcbiAgICBjb25zdCBtZW1vcml6ZWRMYXRlc3QgPSBnZXRMaW5lTWVtb3JpemVkTGF0ZXN0KCk7XG4gICAgbGV0IHNvdXJjZU1hcmtlciwgdGFyZ2V0TWFya2VyO1xuICAgIHNvdXJjZU1hcmtlciA9IG1lbW9yaXplZExhdGVzdC5zb3VyY2U7XG4gICAgdGFyZ2V0TWFya2VyID0gbWVtb3JpemVkTGF0ZXN0LnRhcmdldDtcbiAgICBzb3VyY2VNYXJrZXIgJiYgZGVsZXRlIG1lbW9yaXplZExhdGVzdC5zb3VyY2U7XG4gICAgdGFyZ2V0TWFya2VyICYmIGRlbGV0ZSBtZW1vcml6ZWRMYXRlc3QudGFyZ2V0O1xuICAgIGNvbnN0IHRlbXBvcmFyeUxpbmVFbGVtZW50ID0gY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgIGxpbmVTaGFwZSxcbiAgICAgICAgW3N0YXJ0UG9pbnQsIG1vdmluZ1BvaW50XSxcbiAgICAgICAgeyBtYXJrZXI6IHNvdXJjZU1hcmtlciB8fCBMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBjb25uZWN0aW9uLCBib3VuZElkOiBzb3VyY2VFbGVtZW50Py5pZCB9LFxuICAgICAgICB7IG1hcmtlcjogdGFyZ2V0TWFya2VyIHx8IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiB0YXJnZXRDb25uZWN0aW9uLCBib3VuZElkOiB0YXJnZXRCb3VuZElkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdExpbmVTdHlsZS5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgIC4uLm1lbW9yaXplZExhdGVzdFxuICAgICAgICB9XG4gICAgKTtcbiAgICBjb25zdCBsaW5lUG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgdGVtcG9yYXJ5TGluZUVsZW1lbnQpO1xuICAgIGNvbnN0IG90aGVyUG9pbnQgPSBsaW5lUG9pbnRzWzBdO1xuICAgIHRlbXBvcmFyeUxpbmVFbGVtZW50LnBvaW50c1sxXSA9IGFsaWduUG9pbnRzKG90aGVyUG9pbnQsIG1vdmluZ1BvaW50KTtcbiAgICBsaW5lR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRlbXBvcmFyeUxpbmVFbGVtZW50LCBsaW5lU2hhcGVHKTtcbiAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQobGluZVNoYXBlRyk7XG4gICAgcmV0dXJuIHRlbXBvcmFyeUxpbmVFbGVtZW50O1xufTtcbiJdfQ==
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1QsK0JBQStCLEVBQy9CLFVBQVUsRUFDVixPQUFPLEVBQ1AsY0FBYyxFQUNkLGVBQWUsRUFDZixZQUFZLEVBRVosY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsbUJBQW1CLEVBRW5CLFNBQVMsRUFFVCw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ3BCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osY0FBYyxFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUVYLGFBQWEsRUFFYixjQUFjLEVBQ2QsU0FBUyxFQUVULGdCQUFnQixFQUVoQixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFFBQVEs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QUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBvaW50LFxuICAgIGlkQ3JlYXRvcixcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgY3JlYXRlRyxcbiAgICBnZXRFbGVtZW50QnlJZCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgZmluZEVsZW1lbnRzLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBkcmF3TGluZWFyUGF0aCxcbiAgICBjcmVhdGVNYXNrLFxuICAgIGNyZWF0ZVJlY3QsXG4gICAgQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICBQb2ludE9mUmVjdGFuZ2xlLFxuICAgIERpcmVjdGlvbixcbiAgICBWZWN0b3IsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICBjYXRtdWxsUm9tRml0dGluZ1xufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQge1xuICAgIGdldFBvaW50cyxcbiAgICBnZXRSZWN0YW5nbGVCeVBvaW50cyxcbiAgICBnZXRQb2ludE9uUG9seWxpbmUsXG4gICAgZ2V0RGlyZWN0aW9uRmFjdG9yLFxuICAgIHJvdGF0ZVZlY3RvckFudGk5MCxcbiAgICBnZXREaXJlY3Rpb25CeVZlY3RvcixcbiAgICBnZXRPcHBvc2l0ZURpcmVjdGlvbixcbiAgICBnZXREaXJlY3Rpb25CeVBvaW50T2ZSZWN0YW5nbGUsXG4gICAgZ2V0UG9pbnRCeVZlY3RvcixcbiAgICByZW1vdmVEdXBsaWNhdGVQb2ludHMsXG4gICAgcmVkdWNlUm91dGVNYXJnaW4sXG4gICAgZ2VuZXJhdGVFbGJvd0xpbmVSb3V0ZSxcbiAgICBnZXROZXh0UG9pbnQsXG4gICAgZ2V0RXh0ZW5kUG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEJhc2ljU2hhcGVzLFxuICAgIExpbmVIYW5kbGUsXG4gICAgTGluZUhhbmRsZUtleSxcbiAgICBMaW5lSGFuZGxlUmVmLFxuICAgIExpbmVNYXJrZXJUeXBlLFxuICAgIExpbmVTaGFwZSxcbiAgICBMaW5lVGV4dCxcbiAgICBQbGFpdERyYXdFbGVtZW50LFxuICAgIFBsYWl0R2VvbWV0cnksXG4gICAgUGxhaXRMaW5lLFxuICAgIFBsYWl0U2hhcGVcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRQb2ludHNCeUNlbnRlclBvaW50LCBnZXROZWFyZXN0UG9pbnQsIGNyZWF0ZUdlb21ldHJ5RWxlbWVudCB9IGZyb20gJy4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZURhc2hCeUVsZW1lbnQsIGdldFN0cm9rZUNvbG9yQnlFbGVtZW50LCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4vc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZHJhd0xpbmVBcnJvdyB9IGZyb20gJy4vbGluZS1hcnJvdyc7XG5pbXBvcnQgeyBwb2ludHNPbkJlemllckN1cnZlcyB9IGZyb20gJ3BvaW50cy1vbi1jdXJ2ZSc7XG5pbXBvcnQgeyBPcCB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0U2hhcGUgfSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IERlZmF1bHRMaW5lU3R5bGUsIExJTkVfVEVYVF9TUEFDRSB9IGZyb20gJy4uL2NvbnN0YW50cy9saW5lJztcbmltcG9ydCB7IExpbmVTaGFwZUdlbmVyYXRvciB9IGZyb20gJy4uL2dlbmVyYXRvcnMvbGluZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgUkVBQ1RJT05fTUFSR0lOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEhpdE91dGxpbmVHZW9tZXRyeSB9IGZyb20gJy4vcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZU1lbW9yaXplZExhdGVzdCB9IGZyb20gJy4vbWVtb3JpemUnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTGluZUVsZW1lbnQgPSAoXG4gICAgc2hhcGU6IExpbmVTaGFwZSxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHNvdXJjZTogTGluZUhhbmRsZSxcbiAgICB0YXJnZXQ6IExpbmVIYW5kbGUsXG4gICAgdGV4dHM/OiBMaW5lVGV4dFtdLFxuICAgIG9wdGlvbnM/OiBQaWNrPFBsYWl0TGluZSwgJ3N0cm9rZUNvbG9yJyB8ICdzdHJva2VXaWR0aCc+XG4pOiBQbGFpdExpbmUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICB0ZXh0czogdGV4dHMgPyB0ZXh0cyA6IFtdLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZVBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgc3dpdGNoIChlbGVtZW50LnNoYXBlKSB7XG4gICAgICAgIGNhc2UgTGluZVNoYXBlLmVsYm93OiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0RWxib3dQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgTGluZVNoYXBlLmN1cnZlOiB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VydmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IFBsYWl0TGluZS5nZXRQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldExpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIHBvaW50c1swXSA9IGhhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50O1xuICAgICAgICAgICAgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSA9IGhhbmRsZVJlZlBhaXIudGFyZ2V0LnBvaW50O1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50cztcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lSGFuZGxlUmVmUGFpciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBzb3VyY2VCb3VuZEVsZW1lbnQgPSBlbGVtZW50LnNvdXJjZS5ib3VuZElkID8gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQuc291cmNlLmJvdW5kSWQpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRhcmdldEJvdW5kRWxlbWVudCA9IGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQgPyBnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC50YXJnZXQuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IHNvdXJjZVBvaW50ID0gc291cmNlQm91bmRFbGVtZW50ID8gZ2V0Q29ubmVjdGlvblBvaW50KHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEpIDogZWxlbWVudC5wb2ludHNbMF07XG4gICAgbGV0IHRhcmdldFBvaW50ID0gdGFyZ2V0Qm91bmRFbGVtZW50XG4gICAgICAgID8gZ2V0Q29ubmVjdGlvblBvaW50KHRhcmdldEJvdW5kRWxlbWVudCwgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiEpXG4gICAgICAgIDogZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV07XG4gICAgbGV0IHNvdXJjZURpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKFt0YXJnZXRQb2ludFswXSAtIHNvdXJjZVBvaW50WzBdLCB0YXJnZXRQb2ludFsxXSAtIHNvdXJjZVBvaW50WzFdXSkgfHwgRGlyZWN0aW9uLnJpZ2h0O1xuICAgIGxldCB0YXJnZXREaXJlY3Rpb24gPSBnZXRPcHBvc2l0ZURpcmVjdGlvbihzb3VyY2VEaXJlY3Rpb24pO1xuICAgIGNvbnN0IHNvdXJjZUZhY3RvciA9IGdldERpcmVjdGlvbkZhY3Rvcihzb3VyY2VEaXJlY3Rpb24pO1xuICAgIGNvbnN0IHRhcmdldEZhY3RvciA9IGdldERpcmVjdGlvbkZhY3Rvcih0YXJnZXREaXJlY3Rpb24pO1xuICAgIGNvbnN0IHNvdXJjZUhhbmRsZVJlZjogTGluZUhhbmRsZVJlZiA9IHtcbiAgICAgICAga2V5OiBMaW5lSGFuZGxlS2V5LnNvdXJjZSxcbiAgICAgICAgcG9pbnQ6IHNvdXJjZVBvaW50LFxuICAgICAgICBkaXJlY3Rpb246IHNvdXJjZURpcmVjdGlvbixcbiAgICAgICAgdmVjdG9yOiBbc291cmNlRmFjdG9yLngsIHNvdXJjZUZhY3Rvci55XVxuICAgIH07XG4gICAgY29uc3QgdGFyZ2V0SGFuZGxlUmVmOiBMaW5lSGFuZGxlUmVmID0ge1xuICAgICAgICBrZXk6IExpbmVIYW5kbGVLZXkudGFyZ2V0LFxuICAgICAgICBwb2ludDogdGFyZ2V0UG9pbnQsXG4gICAgICAgIGRpcmVjdGlvbjogdGFyZ2V0RGlyZWN0aW9uLFxuICAgICAgICB2ZWN0b3I6IFt0YXJnZXRGYWN0b3IueCwgdGFyZ2V0RmFjdG9yLnldXG4gICAgfTtcbiAgICBpZiAoc291cmNlQm91bmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25PZmZzZXQgPSBQbGFpdExpbmUuaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKGVsZW1lbnQsIExpbmVNYXJrZXJUeXBlLm5vbmUsIExpbmVIYW5kbGVLZXkuc291cmNlKSA/IDAgOiBzdHJva2VXaWR0aDtcbiAgICAgICAgY29uc3Qgc291cmNlVmVjdG9yID0gZ2V0VmVjdG9yQnlDb25uZWN0aW9uKHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEpO1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcihzb3VyY2VWZWN0b3IpO1xuICAgICAgICBzb3VyY2VEaXJlY3Rpb24gPSBkaXJlY3Rpb24gPyBkaXJlY3Rpb24gOiBzb3VyY2VEaXJlY3Rpb247XG4gICAgICAgIHNvdXJjZVBvaW50ID0gZ2V0Q29ubmVjdGlvblBvaW50KHNvdXJjZUJvdW5kRWxlbWVudCwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEsIHNvdXJjZURpcmVjdGlvbiwgY29ubmVjdGlvbk9mZnNldCk7XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi5ib3VuZEVsZW1lbnQgPSBzb3VyY2VCb3VuZEVsZW1lbnQ7XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi5kaXJlY3Rpb24gPSBzb3VyY2VEaXJlY3Rpb247XG4gICAgICAgIHNvdXJjZUhhbmRsZVJlZi5wb2ludCA9IHNvdXJjZVBvaW50O1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYudmVjdG9yID0gc291cmNlVmVjdG9yO1xuICAgIH1cbiAgICBpZiAodGFyZ2V0Qm91bmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25PZmZzZXQgPSBQbGFpdExpbmUuaXNTb3VyY2VNYXJrT3JUYXJnZXRNYXJrKGVsZW1lbnQsIExpbmVNYXJrZXJUeXBlLm5vbmUsIExpbmVIYW5kbGVLZXkudGFyZ2V0KSA/IDAgOiBzdHJva2VXaWR0aDtcbiAgICAgICAgY29uc3QgdGFyZ2V0VmVjdG9yID0gZ2V0VmVjdG9yQnlDb25uZWN0aW9uKHRhcmdldEJvdW5kRWxlbWVudCwgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiEpO1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3Rvcih0YXJnZXRWZWN0b3IpO1xuICAgICAgICB0YXJnZXREaXJlY3Rpb24gPSBkaXJlY3Rpb24gPyBkaXJlY3Rpb24gOiB0YXJnZXREaXJlY3Rpb247XG4gICAgICAgIHRhcmdldFBvaW50ID0gZ2V0Q29ubmVjdGlvblBvaW50KHRhcmdldEJvdW5kRWxlbWVudCwgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiEsIHRhcmdldERpcmVjdGlvbiwgY29ubmVjdGlvbk9mZnNldCk7XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi5ib3VuZEVsZW1lbnQgPSB0YXJnZXRCb3VuZEVsZW1lbnQ7XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi5kaXJlY3Rpb24gPSB0YXJnZXREaXJlY3Rpb247XG4gICAgICAgIHRhcmdldEhhbmRsZVJlZi5wb2ludCA9IHRhcmdldFBvaW50O1xuICAgICAgICB0YXJnZXRIYW5kbGVSZWYudmVjdG9yID0gdGFyZ2V0VmVjdG9yO1xuICAgIH1cbiAgICByZXR1cm4geyBzb3VyY2U6IHNvdXJjZUhhbmRsZVJlZiwgdGFyZ2V0OiB0YXJnZXRIYW5kbGVSZWYgfTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZha2VFbGVtZW50ID0gKHN0YXJ0UG9pbnQ6IFBvaW50LCB2ZWN0b3I6IFZlY3RvcikgPT4ge1xuICAgIGNvbnN0IHBvaW50ID0gZ2V0UG9pbnRCeVZlY3RvcihzdGFydFBvaW50LCB2ZWN0b3IsIC0yNSk7XG4gICAgY29uc3QgcG9pbnRzID0gZ2V0UG9pbnRzQnlDZW50ZXJQb2ludChwb2ludCwgNTAsIDUwKTtcbiAgICByZXR1cm4gY3JlYXRlR2VvbWV0cnlFbGVtZW50KEJhc2ljU2hhcGVzLnJlY3RhbmdsZSwgcG9pbnRzLCAnJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWxib3dQb2ludHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgIGlmIChlbGVtZW50LnBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldExpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgbGV0IHNvdXJjZUVsZW1lbnQgPSBlbGVtZW50LnNvdXJjZS5ib3VuZElkID8gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQuc291cmNlLmJvdW5kSWQpIDogdW5kZWZpbmVkO1xuICAgICAgICBsZXQgdGFyZ2V0RWxlbWVudCA9IGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQgPyBnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC50YXJnZXQuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBwb2ludHM6IFBvaW50W10gPSBbXTtcbiAgICAgICAgaWYgKCFzb3VyY2VFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBoYW5kbGVSZWZQYWlyLnNvdXJjZTtcbiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBjcmVhdGVGYWtlRWxlbWVudChzb3VyY2UucG9pbnQsIHNvdXJjZS52ZWN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gaGFuZGxlUmVmUGFpci50YXJnZXQ7XG4gICAgICAgICAgICB0YXJnZXRFbGVtZW50ID0gY3JlYXRlRmFrZUVsZW1lbnQodGFyZ2V0LnBvaW50LCB0YXJnZXQudmVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZUJ5UG9pbnRzKHRhcmdldEVsZW1lbnQucG9pbnRzKSxcbiAgICAgICAgICAgIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KHRhcmdldEVsZW1lbnQpICogMlxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzb3VyY2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZUJ5UG9pbnRzKHNvdXJjZUVsZW1lbnQucG9pbnRzKSxcbiAgICAgICAgICAgIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KHNvdXJjZUVsZW1lbnQpICogMlxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzb3VyY2VQb2ludCA9IGhhbmRsZVJlZlBhaXIuc291cmNlLnBvaW50O1xuICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IGhhbmRsZVJlZlBhaXIudGFyZ2V0LnBvaW50O1xuICAgICAgICBjb25zdCB7IHNvdXJjZU9mZnNldCwgdGFyZ2V0T2Zmc2V0IH0gPSByZWR1Y2VSb3V0ZU1hcmdpbihzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHNvdXJjZU91dGVyUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmV4cGFuZChcbiAgICAgICAgICAgIHNvdXJjZVJlY3RhbmdsZSxcbiAgICAgICAgICAgIHNvdXJjZU9mZnNldFszXSxcbiAgICAgICAgICAgIHNvdXJjZU9mZnNldFswXSxcbiAgICAgICAgICAgIHNvdXJjZU9mZnNldFsxXSxcbiAgICAgICAgICAgIHNvdXJjZU9mZnNldFsyXVxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0YXJnZXRPdXRlclJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5leHBhbmQoXG4gICAgICAgICAgICB0YXJnZXRSZWN0YW5nbGUsXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXRbM10sXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXRbMF0sXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXRbMV0sXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXRbMl1cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV4dFNvdXJjZVBvaW50ID0gZ2V0TmV4dFBvaW50KHNvdXJjZVBvaW50LCBzb3VyY2VPdXRlclJlY3RhbmdsZSwgaGFuZGxlUmVmUGFpci5zb3VyY2UuZGlyZWN0aW9uKTtcbiAgICAgICAgY29uc3QgbmV4dFRhcmdldFBvaW50ID0gZ2V0TmV4dFBvaW50KHRhcmdldFBvaW50LCB0YXJnZXRPdXRlclJlY3RhbmdsZSwgaGFuZGxlUmVmUGFpci50YXJnZXQuZGlyZWN0aW9uKTtcbiAgICAgICAgY29uc3QgaXNJbnRlcnNlY3QgPVxuICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRSZWN0YW5nbGUsIHNvdXJjZVBvaW50KSB8fFxuICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRPdXRlclJlY3RhbmdsZSwgbmV4dFNvdXJjZVBvaW50KSB8fFxuICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VPdXRlclJlY3RhbmdsZSwgbmV4dFRhcmdldFBvaW50KSB8fFxuICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFBvaW50KTtcbiAgICAgICAgaWYgKCFpc0ludGVyc2VjdCkge1xuICAgICAgICAgICAgcG9pbnRzID0gZ2VuZXJhdGVFbGJvd0xpbmVSb3V0ZSh7XG4gICAgICAgICAgICAgICAgc291cmNlUG9pbnQsXG4gICAgICAgICAgICAgICAgbmV4dFNvdXJjZVBvaW50LFxuICAgICAgICAgICAgICAgIHNvdXJjZVJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRQb2ludCxcbiAgICAgICAgICAgICAgICBuZXh0VGFyZ2V0UG9pbnQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHRhcmdldE91dGVyUmVjdGFuZ2xlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50cyA9IGdldFBvaW50cyhcbiAgICAgICAgICAgICAgICBoYW5kbGVSZWZQYWlyLnNvdXJjZS5wb2ludCxcbiAgICAgICAgICAgICAgICBoYW5kbGVSZWZQYWlyLnNvdXJjZS5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQsXG4gICAgICAgICAgICAgICAgaGFuZGxlUmVmUGFpci50YXJnZXQuZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRzID0gcmVtb3ZlRHVwbGljYXRlUG9pbnRzKHBvaW50cyk7XG4gICAgICAgIHJldHVybiBwb2ludHM7XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50LnBvaW50cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDdXJ2ZVBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBjb25zdCBoYW5kbGVSZWZQYWlyID0gZ2V0TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCB7IHNvdXJjZSwgdGFyZ2V0IH0gPSBoYW5kbGVSZWZQYWlyO1xuICAgICAgICBjb25zdCBzb3VyY2VCb3VuZEVsZW1lbnQgPSBoYW5kbGVSZWZQYWlyLnNvdXJjZS5ib3VuZEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldEJvdW5kRWxlbWVudCA9IGhhbmRsZVJlZlBhaXIudGFyZ2V0LmJvdW5kRWxlbWVudDtcbiAgICAgICAgbGV0IGN1cnZlUG9pbnRzOiBQb2ludFtdID0gW3NvdXJjZS5wb2ludF07XG4gICAgICAgIGNvbnN0IHN1bURpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5zb3VyY2UucG9pbnQsIC4uLnRhcmdldC5wb2ludCk7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDEyICsgc3VtRGlzdGFuY2UgLyAzO1xuICAgICAgICBpZiAoc291cmNlQm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3Ioc291cmNlLnBvaW50LCBzb3VyY2UudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0Qm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3IodGFyZ2V0LnBvaW50LCB0YXJnZXQudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1NpbmdsZUJvdW5kID0gKHNvdXJjZUJvdW5kRWxlbWVudCAmJiAhdGFyZ2V0Qm91bmRFbGVtZW50KSB8fCAoIXNvdXJjZUJvdW5kRWxlbWVudCAmJiB0YXJnZXRCb3VuZEVsZW1lbnQpO1xuICAgICAgICBpZiAoaXNTaW5nbGVCb3VuZCkge1xuICAgICAgICAgICAgY3VydmVQb2ludHMucHVzaCh0YXJnZXQucG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUTJDKGN1cnZlUG9pbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBwb2ludHNPbkJlemllckN1cnZlcyhwb2ludHMpIGFzIFBvaW50W107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzb3VyY2VCb3VuZEVsZW1lbnQgJiYgIXRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgY3VydmVQb2ludHMucHVzaChnZXRQb2ludEJ5VmVjdG9yKHNvdXJjZS5wb2ludCwgc291cmNlLnZlY3Rvciwgb2Zmc2V0KSk7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3IodGFyZ2V0LnBvaW50LCB0YXJnZXQudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKHRhcmdldC5wb2ludCk7XG4gICAgICAgIHJldHVybiBwb2ludHNPbkJlemllckN1cnZlcyhjdXJ2ZVBvaW50cykgYXMgUG9pbnRbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgYWxsUG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGFsbFBvaW50cyA9IHJlbW92ZUR1cGxpY2F0ZVBvaW50cyhhbGxQb2ludHMpO1xuICAgICAgICBjb25zdCBwb2ludHMgPSBjYXRtdWxsUm9tRml0dGluZyhhbGxQb2ludHMpO1xuICAgICAgICByZXR1cm4gcG9pbnRzT25CZXppZXJDdXJ2ZXMocG9pbnRzKSBhcyBQb2ludFtdO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1PcHNUb1BvaW50cyA9IChvcHM6IE9wW10pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCBpdGVtIG9mIG9wcykge1xuICAgICAgICBpZiAoaXRlbS5vcCA9PT0gJ21vdmUnKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChbaXRlbS5kYXRhWzBdLCBpdGVtLmRhdGFbMV1dKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtpdGVtLmRhdGFbMF0sIGl0ZW0uZGF0YVsxXV0pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goW2l0ZW0uZGF0YVsyXSwgaXRlbS5kYXRhWzNdXSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChbaXRlbS5kYXRhWzRdLCBpdGVtLmRhdGFbNV1dKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSGl0UG9seUxpbmUgPSAocGF0aFBvaW50czogUG9pbnRbXSwgcG9pbnQ6IFBvaW50LCBzdHJva2VXaWR0aDogbnVtYmVyLCBleHBhbmQ6IG51bWJlciA9IDApID0+IHtcbiAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocGF0aFBvaW50cywgcG9pbnQpO1xuICAgIHJldHVybiBkaXN0YW5jZSA8PSBzdHJva2VXaWR0aCArIGV4cGFuZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRMaW5lVGV4dEluZGV4ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICBpZiAoIXRleHRzLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIHRleHRzLmZpbmRJbmRleCh0ZXh0ID0+IHtcbiAgICAgICAgY29uc3QgY2VudGVyID0gZ2V0UG9pbnRPblBvbHlsaW5lKHBvaW50cywgdGV4dC5wb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IHtcbiAgICAgICAgICAgIHg6IGNlbnRlclswXSAtIHRleHQud2lkdGghIC8gMixcbiAgICAgICAgICAgIHk6IGNlbnRlclsxXSAtIHRleHQuaGVpZ2h0ISAvIDIsXG4gICAgICAgICAgICB3aWR0aDogdGV4dC53aWR0aCEsXG4gICAgICAgICAgICBoZWlnaHQ6IHRleHQuaGVpZ2h0IVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludCwgcG9pbnRdKSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNIaXRMaW5lVGV4dCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICByZXR1cm4gZ2V0SGl0TGluZVRleHRJbmRleChib2FyZCwgZWxlbWVudCwgcG9pbnQpICE9PSAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VDb2xvciA9IGdldFN0cm9rZUNvbG9yQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VMaW5lRGFzaCA9IGdldExpbmVEYXNoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBzdHJva2VMaW5lRGFzaCB9O1xuICAgIGNvbnN0IGxpbmVHID0gY3JlYXRlRygpO1xuICAgIGxldCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBsZXQgbGluZTtcbiAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmN1cnZlKSB7XG4gICAgICAgIGxpbmUgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5jdXJ2ZShwb2ludHMsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmUgPSBkcmF3TGluZWFyUGF0aChwb2ludHMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IGlkQ3JlYXRvcigpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCdtYXNrJywgYHVybCgjJHtpZH0pYCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobGluZSk7XG4gICAgY29uc3QgeyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfSA9IGRyYXdNYXNrKGJvYXJkLCBlbGVtZW50LCBpZCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobWFzayk7XG4gICAgbGluZS5hcHBlbmRDaGlsZChtYXNrVGFyZ2V0RmlsbFJlY3QpO1xuICAgIGNvbnN0IGFycm93ID0gZHJhd0xpbmVBcnJvdyhlbGVtZW50LCBwb2ludHMsIHsgc3Ryb2tlOiBzdHJva2VDb2xvciwgc3Ryb2tlV2lkdGggfSk7XG4gICAgYXJyb3cgJiYgbGluZUcuYXBwZW5kQ2hpbGQoYXJyb3cpO1xuICAgIHJldHVybiBsaW5lRztcbn07XG5cbmZ1bmN0aW9uIGRyYXdNYXNrKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXNrID0gY3JlYXRlTWFzaygpO1xuICAgIG1hc2suc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBsZXQgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShyZWN0YW5nbGUsIC0zMCk7XG4gICAgY29uc3QgbWFza0ZpbGxSZWN0ID0gY3JlYXRlUmVjdChyZWN0YW5nbGUsIHtcbiAgICAgICAgZmlsbDogJ3doaXRlJ1xuICAgIH0pO1xuICAgIG1hc2suYXBwZW5kQ2hpbGQobWFza0ZpbGxSZWN0KTtcblxuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICB0ZXh0cy5mb3JFYWNoKCh0ZXh0LCBpbmRleCkgPT4ge1xuICAgICAgICBsZXQgdGV4dFJlY3RhbmdsZSA9IGdldExpbmVUZXh0UmVjdGFuZ2xlKGJvYXJkLCBlbGVtZW50LCBpbmRleCk7XG4gICAgICAgIHRleHRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZSh0ZXh0UmVjdGFuZ2xlLCBMSU5FX1RFWFRfU1BBQ0UgKiAyKTtcbiAgICAgICAgY29uc3QgcmVjdCA9IGNyZWF0ZVJlY3QodGV4dFJlY3RhbmdsZSwge1xuICAgICAgICAgICAgZmlsbDogJ2JsYWNrJ1xuICAgICAgICB9KTtcbiAgICAgICAgbWFzay5hcHBlbmRDaGlsZChyZWN0KTtcbiAgICB9KTtcbiAgICAvLyBvcGVuIGxpbmVcbiAgICBjb25zdCBtYXNrVGFyZ2V0RmlsbFJlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSk7XG4gICAgbWFza1RhcmdldEZpbGxSZWN0LnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsICcwJyk7XG4gICAgbWFza1RhcmdldEZpbGxSZWN0LnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG4gICAgcmV0dXJuIHsgbWFzaywgbWFza1RhcmdldEZpbGxSZWN0IH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uUG9pbnQgPSAoZ2VvbWV0cnk6IFBsYWl0R2VvbWV0cnksIGNvbm5lY3Rpb246IFBvaW50LCBkaXJlY3Rpb24/OiBEaXJlY3Rpb24sIGRlbHRhPzogbnVtYmVyKTogUG9pbnQgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGdlb21ldHJ5LnBvaW50cyk7XG4gICAgaWYgKGRpcmVjdGlvbiAmJiBkZWx0YSkge1xuICAgICAgICBjb25zdCBkaXJlY3Rpb25GYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3IoZGlyZWN0aW9uKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgY29ubmVjdGlvbik7XG4gICAgICAgIHJldHVybiBbcG9pbnRbMF0gKyBkaXJlY3Rpb25GYWN0b3IueCAqIGRlbHRhLCBwb2ludFsxXSArIGRpcmVjdGlvbkZhY3Rvci55ICogZGVsdGFdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgY29ubmVjdGlvbik7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVBvaW50VG9Db25uZWN0aW9uID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQsIGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGUpOiBQb2ludCA9PiB7XG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGhpdEVsZW1lbnQucG9pbnRzKTtcbiAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpO1xuICAgIGxldCBuZWFyZXN0UG9pbnQgPSBnZXROZWFyZXN0UG9pbnQoaGl0RWxlbWVudCwgcG9pbnQsIEFDVElWRV9TVFJPS0VfV0lEVEgpO1xuICAgIGNvbnN0IGhpdENvbm5lY3RvciA9IGdldEhpdENvbm5lY3RvclBvaW50KG5lYXJlc3RQb2ludCwgaGl0RWxlbWVudCwgcmVjdGFuZ2xlKTtcbiAgICBuZWFyZXN0UG9pbnQgPSBoaXRDb25uZWN0b3IgPyBoaXRDb25uZWN0b3IgOiBuZWFyZXN0UG9pbnQ7XG4gICAgcmV0dXJuIFsobmVhcmVzdFBvaW50WzBdIC0gcmVjdGFuZ2xlLngpIC8gcmVjdGFuZ2xlLndpZHRoLCAobmVhcmVzdFBvaW50WzFdIC0gcmVjdGFuZ2xlLnkpIC8gcmVjdGFuZ2xlLmhlaWdodF07XG59O1xuXG4vLyBleHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5UG9pbnRPblJlY3RhbmdsZUVkZ2UgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZSk6IFBvaW50ID0+IHtcbi8vICAgICBsZXQgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoaGl0RWxlbWVudC5wb2ludHMpO1xuLy8gICAgIGNvbnN0IGhpdENvbm5lY3RvciA9IGdldEhpdENvbm5lY3RvclBvaW50KHBvaW50LCBoaXRFbGVtZW50LCByZWN0YW5nbGUpO1xuLy8gICAgIGNvbnN0IG5ld1BvaW50ID0gaGl0Q29ubmVjdG9yID8/IHBvaW50O1xuLy8gICAgIHJldHVybiBbKG5ld1BvaW50WzBdIC0gcmVjdGFuZ2xlLngpIC8gcmVjdGFuZ2xlLndpZHRoLCAobmV3UG9pbnRbMV0gLSByZWN0YW5nbGUueSkgLyByZWN0YW5nbGUuaGVpZ2h0XTtcbi8vIH07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRDb25uZWN0b3JQb2ludCA9IChtb3ZpbmdQb2ludDogUG9pbnQsIGhpdEVsZW1lbnQ6IFBsYWl0U2hhcGUsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShoaXRFbGVtZW50KTtcbiAgICBjb25zdCBjb25uZWN0b3IgPSBnZXRFbmdpbmUoc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIGNvbnN0IHBvaW50cyA9IGdldFBvaW50c0J5Q2VudGVyUG9pbnQobW92aW5nUG9pbnQsIDEwLCAxMCk7XG4gICAgY29uc3QgcG9pbnRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIHJldHVybiBjb25uZWN0b3IuZmluZChwb2ludCA9PiB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocG9pbnRSZWN0YW5nbGUsIFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcG9pbnQsIHBvaW50XSkpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVUZXh0UmVjdGFuZ2xlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIGluZGV4OiBudW1iZXIpOiBSZWN0YW5nbGVDbGllbnQgPT4ge1xuICAgIGNvbnN0IHRleHQgPSBlbGVtZW50LnRleHRzW2luZGV4XTtcbiAgICBjb25zdCBlbGJvd1BvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHBvaW50ID0gZ2V0UG9pbnRPblBvbHlsaW5lKGVsYm93UG9pbnRzLCB0ZXh0LnBvc2l0aW9uKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBwb2ludFswXSAtIHRleHQud2lkdGghIC8gMixcbiAgICAgICAgeTogcG9pbnRbMV0gLSB0ZXh0LmhlaWdodCEgLyAyLFxuICAgICAgICB3aWR0aDogdGV4dC53aWR0aCEsXG4gICAgICAgIGhlaWdodDogdGV4dC5oZWlnaHQhXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCb2FyZExpbmVzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIGZpbmRFbGVtZW50cyhib2FyZCwge1xuICAgICAgICBtYXRjaDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCksXG4gICAgICAgIHJlY3Vyc2lvbjogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gUGxhaXREcmF3RWxlbWVudC5pc0RyYXdFbGVtZW50KGVsZW1lbnQpXG4gICAgfSkgYXMgUGxhaXRMaW5lW107XG59O1xuXG4vLyBxdWFkcmF0aWMgQmV6aWVyIHRvIGN1YmljIEJlemllclxuZXhwb3J0IGNvbnN0IFEyQyA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBjb25zdCBudW1TZWdtZW50cyA9IHBvaW50cy5sZW5ndGggLyAzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtU2VnbWVudHM7IGkrKykge1xuICAgICAgICBjb25zdCBzdGFydCA9IHBvaW50c1tpXTtcbiAgICAgICAgY29uc3QgcUNvbnRyb2wgPSBwb2ludHNbaSArIDFdO1xuICAgICAgICBjb25zdCBlbmQgPSBwb2ludHNbaSArIDJdO1xuICAgICAgICBjb25zdCBzdGFydERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5zdGFydCwgLi4ucUNvbnRyb2wpO1xuICAgICAgICBjb25zdCBlbmREaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uZW5kLCAuLi5xQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IGNDb250cm9sMSA9IGdldEV4dGVuZFBvaW50KHN0YXJ0LCBxQ29udHJvbCwgKHN0YXJ0RGlzdGFuY2UgKiAyKSAvIDMpO1xuICAgICAgICBjb25zdCBjQ29udHJvbDIgPSBnZXRFeHRlbmRQb2ludChlbmQsIHFDb250cm9sLCAoZW5kRGlzdGFuY2UgKiAyKSAvIDMpO1xuICAgICAgICByZXN1bHQucHVzaChzdGFydCwgY0NvbnRyb2wxLCBjQ29udHJvbDIsIGVuZCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmVjdG9yQnlDb25uZWN0aW9uID0gKGJvdW5kRWxlbWVudDogUGxhaXRHZW9tZXRyeSwgY29ubmVjdGlvbjogUG9pbnRPZlJlY3RhbmdsZSk6IFZlY3RvciA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoYm91bmRFbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShib3VuZEVsZW1lbnQpO1xuICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZShzaGFwZSk7XG4gICAgbGV0IHZlY3RvcjogVmVjdG9yID0gWzAsIDBdO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5UG9pbnRPZlJlY3RhbmdsZShjb25uZWN0aW9uKTtcbiAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihkaXJlY3Rpb24pO1xuICAgICAgICByZXR1cm4gW2ZhY3Rvci54LCBmYWN0b3IueV07XG4gICAgfVxuICAgIGlmIChlbmdpbmUuZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KSB7XG4gICAgICAgIGNvbnN0IGVkZ2UgPSBlbmdpbmUuZ2V0RWRnZUJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgY29ubmVjdGlvbik7XG4gICAgICAgIGlmIChlZGdlKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lVmVjdG9yID0gW2VkZ2VbMV1bMF0gLSBlZGdlWzBdWzBdLCBlZGdlWzFdWzFdIC0gZWRnZVswXVsxXV0gYXMgVmVjdG9yO1xuICAgICAgICAgICAgcmV0dXJuIHJvdGF0ZVZlY3RvckFudGk5MChsaW5lVmVjdG9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5naW5lLmdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludCkge1xuICAgICAgICBjb25zdCBsaW5lVmVjdG9yID0gZW5naW5lLmdldFRhbmdlbnRWZWN0b3JCeUNvbm5lY3Rpb25Qb2ludChyZWN0YW5nbGUsIGNvbm5lY3Rpb24pO1xuICAgICAgICBpZiAobGluZVZlY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIHJvdGF0ZVZlY3RvckFudGk5MChsaW5lVmVjdG9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVjdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGFsaWduUG9pbnRzID0gKGJhc2VQb2ludDogUG9pbnQsIG1vdmluZ1BvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IG9mZnNldCA9IDM7XG4gICAgY29uc3QgbmV3UG9pbnQ6IFBvaW50ID0gWy4uLm1vdmluZ1BvaW50XTtcbiAgICBpZiAoUG9pbnQuaXNWZXJ0aWNhbEFsaWduKG5ld1BvaW50LCBiYXNlUG9pbnQsIG9mZnNldCkpIHtcbiAgICAgICAgbmV3UG9pbnRbMF0gPSBiYXNlUG9pbnRbMF07XG4gICAgfVxuICAgIGlmIChQb2ludC5pc0hvcml6b250YWxBbGlnbihuZXdQb2ludCwgYmFzZVBvaW50LCBvZmZzZXQpKSB7XG4gICAgICAgIG5ld1BvaW50WzFdID0gYmFzZVBvaW50WzFdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3UG9pbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlTGluZUNyZWF0aW5nID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGxpbmVTaGFwZTogTGluZVNoYXBlLFxuICAgIHN0YXJ0UG9pbnQ6IFBvaW50LFxuICAgIG1vdmluZ1BvaW50OiBQb2ludCxcbiAgICBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlIHwgbnVsbCxcbiAgICBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudFxuKSA9PiB7XG4gICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdE91dGxpbmVHZW9tZXRyeShib2FyZCwgbW92aW5nUG9pbnQsIFJFQUNUSU9OX01BUkdJTik7XG4gICAgY29uc3QgdGFyZ2V0Q29ubmVjdGlvbiA9IGhpdEVsZW1lbnQgPyB0cmFuc2Zvcm1Qb2ludFRvQ29ubmVjdGlvbihib2FyZCwgbW92aW5nUG9pbnQsIGhpdEVsZW1lbnQpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBzb3VyY2VFbGVtZW50ID8gdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24oYm9hcmQsIHN0YXJ0UG9pbnQsIHNvdXJjZUVsZW1lbnQpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRhcmdldEJvdW5kSWQgPSBoaXRFbGVtZW50ID8gaGl0RWxlbWVudC5pZCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsaW5lR2VuZXJhdG9yID0gbmV3IExpbmVTaGFwZUdlbmVyYXRvcihib2FyZCk7XG4gICAgY29uc3QgbWVtb3JpemVkTGF0ZXN0ID0gZ2V0TGluZU1lbW9yaXplZExhdGVzdCgpO1xuICAgIGxldCBzb3VyY2VNYXJrZXIsIHRhcmdldE1hcmtlcjtcbiAgICBzb3VyY2VNYXJrZXIgPSBtZW1vcml6ZWRMYXRlc3Quc291cmNlO1xuICAgIHRhcmdldE1hcmtlciA9IG1lbW9yaXplZExhdGVzdC50YXJnZXQ7XG4gICAgc291cmNlTWFya2VyICYmIGRlbGV0ZSBtZW1vcml6ZWRMYXRlc3Quc291cmNlO1xuICAgIHRhcmdldE1hcmtlciAmJiBkZWxldGUgbWVtb3JpemVkTGF0ZXN0LnRhcmdldDtcbiAgICBjb25zdCB0ZW1wb3JhcnlMaW5lRWxlbWVudCA9IGNyZWF0ZUxpbmVFbGVtZW50KFxuICAgICAgICBsaW5lU2hhcGUsXG4gICAgICAgIFtzdGFydFBvaW50LCBtb3ZpbmdQb2ludF0sXG4gICAgICAgIHsgbWFya2VyOiBzb3VyY2VNYXJrZXIgfHwgTGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogY29ubmVjdGlvbiwgYm91bmRJZDogc291cmNlRWxlbWVudD8uaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IHRhcmdldE1hcmtlciB8fCBMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogdGFyZ2V0Q29ubmVjdGlvbiwgYm91bmRJZDogdGFyZ2V0Qm91bmRJZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRMaW5lU3R5bGUuc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgICAuLi5tZW1vcml6ZWRMYXRlc3RcbiAgICAgICAgfVxuICAgICk7XG4gICAgY29uc3QgbGluZVBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIHRlbXBvcmFyeUxpbmVFbGVtZW50KTtcbiAgICBjb25zdCBvdGhlclBvaW50ID0gbGluZVBvaW50c1swXTtcbiAgICB0ZW1wb3JhcnlMaW5lRWxlbWVudC5wb2ludHNbMV0gPSBhbGlnblBvaW50cyhvdGhlclBvaW50LCBtb3ZpbmdQb2ludCk7XG4gICAgbGluZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0ZW1wb3JhcnlMaW5lRWxlbWVudCwgbGluZVNoYXBlRyk7XG4gICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGxpbmVTaGFwZUcpO1xuICAgIHJldHVybiB0ZW1wb3JhcnlMaW5lRWxlbWVudDtcbn07XG4iXX0=
|
package/fesm2022/plait-draw.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ACTIVE_STROKE_WIDTH, ThemeColorMode, PlaitBoard, setStrokeLinecap, isPointInPolygon, getNearestPointBetweenPointAndSegments, RectangleClient, isPointInEllipse, drawRectangle, drawRoundRectangle, isPointInRoundRectangle, idCreator, createG, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, distanceBetweenPointAndSegment, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, arrowPoints, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate, depthFirstRecursion, getIsRecursionFunc, getElementById, Direction, catmullRomFitting, distanceBetweenPointAndSegments, createMask, createRect, findElements, Point, getSelectedElements, isPolylineHitRectangle, Path, PlaitNode, toViewBoxPoint, toHostPoint, isSelectionMoving, RgbaToHEX, PlaitElement, preventTouchMove,
|
|
2
|
-
import { getRectangleByPoints, getMemorizedLatest, memorizeLatest, RESIZE_HANDLE_DIAMETER, getExtendPoint, getFactorByPoints, Generator, getRectangleResizeHandleRefs, getDirectionByVector, getOppositeDirection, getDirectionFactor, getPointByVector, reduceRouteMargin, getNextPoint, generateElbowLineRoute, getPoints, removeDuplicatePoints, getPointOnPolyline, getDirectionByPointOfRectangle, rotateVectorAnti90, TRANSPARENT, normalizeShapePoints, getFirstTextEditor, PRIMARY_COLOR, CommonPluginElement, ActiveGenerator, WithTextPluginKey, isVirtualKey, isDelete, isSpaceHotkey, isDndMode, isDrawingMode, acceptImageTypes, getElementOfFocusedImage, buildImage, ResizeHandle, getFirstTextManage, withResize, isResizingByCondition, getRatioByPoint, ImageGenerator } from '@plait/common';
|
|
3
|
-
import { Alignment, buildText, DEFAULT_FONT_SIZE, getTextSize, AlignEditor, TextManage
|
|
1
|
+
import { ACTIVE_STROKE_WIDTH, ThemeColorMode, PlaitBoard, setStrokeLinecap, isPointInPolygon, getNearestPointBetweenPointAndSegments, RectangleClient, isPointInEllipse, drawRectangle, drawRoundRectangle, isPointInRoundRectangle, idCreator, createG, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, drawCircle, distanceBetweenPointAndSegment, Transforms, clearSelectedElement, addSelectedElement, BoardTransforms, PlaitPointerType, arrowPoints, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate, depthFirstRecursion, getIsRecursionFunc, getElementById, Direction, catmullRomFitting, distanceBetweenPointAndSegments, createMask, createRect, findElements, Point, getSelectedElements, isPolylineHitRectangle, Path, PlaitNode, toViewBoxPoint, toHostPoint, isSelectionMoving, RgbaToHEX, PlaitElement, preventTouchMove, createClipboardContext, WritableClipboardType, addClipboardContext, getHitElementByPoint, CursorClass, temporaryDisableSelection, PRESS_AND_MOVE_BUFFER } from '@plait/core';
|
|
2
|
+
import { getRectangleByPoints, getMemorizedLatest, memorizeLatest, RESIZE_HANDLE_DIAMETER, getExtendPoint, getFactorByPoints, Generator, getRectangleResizeHandleRefs, getDirectionByVector, getOppositeDirection, getDirectionFactor, getPointByVector, reduceRouteMargin, getNextPoint, generateElbowLineRoute, getPoints, removeDuplicatePoints, getPointOnPolyline, getDirectionByPointOfRectangle, rotateVectorAnti90, TRANSPARENT, normalizeShapePoints, getFirstTextEditor, PRIMARY_COLOR, CommonPluginElement, ActiveGenerator, WithTextPluginKey, isVirtualKey, isDelete, isSpaceHotkey, isDndMode, isDrawingMode, getElementsText, acceptImageTypes, getElementOfFocusedImage, buildImage, ResizeHandle, getFirstTextManage, withResize, isResizingByCondition, getRatioByPoint, ImageGenerator } from '@plait/common';
|
|
3
|
+
import { Alignment, buildText, DEFAULT_FONT_SIZE, getTextSize, AlignEditor, TextManage } from '@plait/text';
|
|
4
4
|
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
6
|
import { Component, ChangeDetectionStrategy, NgZone } from '@angular/core';
|
|
@@ -3144,7 +3144,7 @@ const withDrawFragment = (baseBoard) => {
|
|
|
3144
3144
|
}
|
|
3145
3145
|
return getDeletedFragment(data);
|
|
3146
3146
|
};
|
|
3147
|
-
board.setFragment = (data, rectangle, type) => {
|
|
3147
|
+
board.setFragment = (data, clipboardContext, rectangle, type) => {
|
|
3148
3148
|
const targetDrawElements = getSelectedDrawElements(board);
|
|
3149
3149
|
let boundLineElements = [];
|
|
3150
3150
|
if (targetDrawElements.length) {
|
|
@@ -3153,40 +3153,53 @@ const withDrawFragment = (baseBoard) => {
|
|
|
3153
3153
|
const lineElements = targetDrawElements.filter(value => PlaitDrawElement.isLine(value));
|
|
3154
3154
|
boundLineElements = getBoundedLineElements(board, geometryElements).filter(line => !lineElements.includes(line));
|
|
3155
3155
|
}
|
|
3156
|
-
const
|
|
3157
|
-
|
|
3156
|
+
const selectedElements = [...targetDrawElements, ...boundLineElements];
|
|
3157
|
+
const elements = buildClipboardData(board, selectedElements, rectangle ? [rectangle.x, rectangle.y] : [0, 0]);
|
|
3158
|
+
const text = getElementsText(selectedElements);
|
|
3159
|
+
if (!clipboardContext) {
|
|
3160
|
+
clipboardContext = createClipboardContext(WritableClipboardType.elements, elements, text);
|
|
3161
|
+
}
|
|
3162
|
+
else {
|
|
3163
|
+
clipboardContext = addClipboardContext(clipboardContext, {
|
|
3164
|
+
text,
|
|
3165
|
+
type: WritableClipboardType.elements,
|
|
3166
|
+
data: elements
|
|
3167
|
+
});
|
|
3168
|
+
}
|
|
3158
3169
|
}
|
|
3159
|
-
setFragment(data, rectangle, type);
|
|
3170
|
+
setFragment(data, clipboardContext, rectangle, type);
|
|
3160
3171
|
};
|
|
3161
|
-
board.insertFragment = (data, targetPoint) => {
|
|
3162
|
-
const elements = getDataFromClipboard(data);
|
|
3172
|
+
board.insertFragment = (data, clipboardData, targetPoint) => {
|
|
3163
3173
|
const selectedElements = getSelectedElements(board);
|
|
3164
|
-
|
|
3165
|
-
if (elements.length > 0 && drawElements.length > 0) {
|
|
3166
|
-
insertClipboardData(board, drawElements, targetPoint);
|
|
3167
|
-
}
|
|
3168
|
-
else if (elements.length === 0) {
|
|
3169
|
-
const text = getTextFromClipboard(data);
|
|
3170
|
-
// (* ̄︶ ̄)
|
|
3171
|
-
const insertAsChildren = selectedElements.length === 1 && selectedElements[0].children;
|
|
3172
|
-
const insertAsFreeText = !insertAsChildren;
|
|
3173
|
-
if (text && insertAsFreeText) {
|
|
3174
|
-
DrawTransforms.insertText(board, targetPoint, text);
|
|
3175
|
-
return;
|
|
3176
|
-
}
|
|
3177
|
-
}
|
|
3178
|
-
if (data?.files.length) {
|
|
3174
|
+
if (clipboardData?.files?.length) {
|
|
3179
3175
|
const acceptImageArray = acceptImageTypes.map(type => 'image/' + type);
|
|
3180
3176
|
const canInsertionImage = !getElementOfFocusedImage(board) && !(selectedElements.length === 1 && board.isImageBindingAllowed(selectedElements[0]));
|
|
3181
|
-
if (acceptImageArray.includes(
|
|
3182
|
-
const imageFile =
|
|
3177
|
+
if (acceptImageArray.includes(clipboardData.files[0].type) && canInsertionImage) {
|
|
3178
|
+
const imageFile = clipboardData.files[0];
|
|
3183
3179
|
buildImage(board, imageFile, DEFAULT_IMAGE_WIDTH, imageItem => {
|
|
3184
3180
|
DrawTransforms.insertImage(board, imageItem, targetPoint);
|
|
3185
3181
|
});
|
|
3186
3182
|
return;
|
|
3187
3183
|
}
|
|
3188
3184
|
}
|
|
3189
|
-
|
|
3185
|
+
if (clipboardData?.elements?.length) {
|
|
3186
|
+
const drawElements = clipboardData.elements?.filter(value => PlaitDrawElement.isDrawElement(value));
|
|
3187
|
+
if (clipboardData.elements && clipboardData.elements.length > 0 && drawElements.length > 0) {
|
|
3188
|
+
insertClipboardData(board, drawElements, targetPoint);
|
|
3189
|
+
}
|
|
3190
|
+
}
|
|
3191
|
+
if (clipboardData?.text) {
|
|
3192
|
+
if (!clipboardData.elements || clipboardData.elements.length === 0) {
|
|
3193
|
+
// (* ̄︶ ̄)
|
|
3194
|
+
const insertAsChildren = selectedElements.length === 1 && selectedElements[0].children;
|
|
3195
|
+
const insertAsFreeText = !insertAsChildren;
|
|
3196
|
+
if (insertAsFreeText) {
|
|
3197
|
+
DrawTransforms.insertText(board, targetPoint, clipboardData.text);
|
|
3198
|
+
return;
|
|
3199
|
+
}
|
|
3200
|
+
}
|
|
3201
|
+
}
|
|
3202
|
+
insertFragment(data, clipboardData, targetPoint);
|
|
3190
3203
|
};
|
|
3191
3204
|
return board;
|
|
3192
3205
|
};
|