@plait/draw 0.74.0 → 0.75.0-next.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.
- package/engines/uml/provided-interface.d.ts +5 -0
- package/esm2022/engines/uml/provided-interface.mjs +30 -12
- package/esm2022/interfaces/vector-line.mjs +1 -1
- package/esm2022/plugins/with-draw-hotkey.mjs +5 -5
- package/esm2022/plugins/with-draw-resize.mjs +3 -3
- package/esm2022/plugins/with-draw.mjs +4 -4
- package/esm2022/plugins/with-table.mjs +5 -5
- package/esm2022/plugins/with-vector-line-create.mjs +29 -67
- package/esm2022/utils/common.mjs +16 -13
- package/esm2022/utils/geometry.mjs +3 -9
- package/esm2022/utils/hit.mjs +28 -14
- package/esm2022/utils/selected.mjs +3 -3
- package/esm2022/utils/style/stroke.mjs +3 -3
- package/fesm2022/plait-draw.mjs +112 -121
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/interfaces/vector-line.d.ts +1 -7
- package/package.json +1 -1
- package/utils/common.d.ts +2 -2
- package/utils/hit.d.ts +3 -1
- package/utils/selected.d.ts +1 -1
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
import { Point, RectangleClient } from '@plait/core';
|
|
1
2
|
import { ShapeEngine } from '../../interfaces';
|
|
3
|
+
export declare const getStartPoint: (rectangle: RectangleClient) => Point;
|
|
4
|
+
export declare const getEndPoint: (rectangle: RectangleClient) => Point;
|
|
5
|
+
export declare const arcPercentage: number;
|
|
6
|
+
export declare const getArcCenter: (rectangle: RectangleClient) => Point;
|
|
2
7
|
export declare const ProvidedInterfaceEngine: ShapeEngine;
|
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient, getEllipseTangentSlope, getNearestPointBetweenPointAndSegments, getVectorFromPointAndSlope, setStrokeLinecap } from '@plait/core';
|
|
2
|
-
import { RectangleEngine } from '../basic-shapes/rectangle';
|
|
1
|
+
import { PlaitBoard, RectangleClient, distanceBetweenPointAndPoint, getEllipseTangentSlope, getNearestPointBetweenPointAndEllipse, getNearestPointBetweenPointAndSegments, getVectorFromPointAndSlope, setStrokeLinecap } from '@plait/core';
|
|
3
2
|
import { getUnitVectorByPointAndPoint } from '@plait/common';
|
|
3
|
+
const percentage = 0.54;
|
|
4
|
+
export const getStartPoint = (rectangle) => {
|
|
5
|
+
return [rectangle.x, rectangle.y + rectangle.height / 2];
|
|
6
|
+
};
|
|
7
|
+
export const getEndPoint = (rectangle) => {
|
|
8
|
+
return [rectangle.x + rectangle.width * percentage, rectangle.y + rectangle.height / 2];
|
|
9
|
+
};
|
|
10
|
+
export const arcPercentage = percentage + (1 - percentage) / 2;
|
|
11
|
+
export const getArcCenter = (rectangle) => {
|
|
12
|
+
return [rectangle.x + arcPercentage * rectangle.width, rectangle.y + rectangle.height / 2];
|
|
13
|
+
};
|
|
4
14
|
export const ProvidedInterfaceEngine = {
|
|
5
15
|
draw(board, rectangle, options) {
|
|
6
16
|
const rs = PlaitBoard.getRoughSVG(board);
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
A${(rectangle.width *
|
|
12
|
-
|
|
13
|
-
`, {
|
|
17
|
+
const startPoint = getStartPoint(rectangle);
|
|
18
|
+
const endPoint = getEndPoint(rectangle);
|
|
19
|
+
const shape = rs.path(`M${startPoint[0]} ${startPoint[1]}
|
|
20
|
+
H${endPoint[0]}
|
|
21
|
+
A${(rectangle.width * (1 - percentage)) / 2} ${rectangle.height / 2}, 0, 1, 1 ${rectangle.x + rectangle.width} ${rectangle.y + rectangle.height / 2}
|
|
22
|
+
A${(rectangle.width * (1 - percentage)) / 2} ${rectangle.height / 2}, 0, 1, 1 ${rectangle.x + rectangle.width * percentage} ${rectangle.y + rectangle.height / 2}`, {
|
|
14
23
|
...options,
|
|
15
24
|
fillStyle: 'solid'
|
|
16
25
|
});
|
|
@@ -28,8 +37,17 @@ export const ProvidedInterfaceEngine = {
|
|
|
28
37
|
return RectangleClient.getEdgeCenterPoints(rectangle);
|
|
29
38
|
},
|
|
30
39
|
getNearestPoint(rectangle, point) {
|
|
31
|
-
const
|
|
32
|
-
|
|
40
|
+
const startPoint = getStartPoint(rectangle);
|
|
41
|
+
const endPoint = getEndPoint(rectangle);
|
|
42
|
+
const nearestPointForLine = getNearestPointBetweenPointAndSegments(point, [startPoint, endPoint]);
|
|
43
|
+
const distanceForLine = distanceBetweenPointAndPoint(...point, ...nearestPointForLine);
|
|
44
|
+
const arcCenter = getArcCenter(rectangle);
|
|
45
|
+
const nearestPointForEllipse = getNearestPointBetweenPointAndEllipse(point, arcCenter, (rectangle.width * (1 - percentage)) / 2, rectangle.height / 2);
|
|
46
|
+
const distanceForEllipse = distanceBetweenPointAndPoint(...point, ...nearestPointForEllipse);
|
|
47
|
+
if (distanceForLine < distanceForEllipse) {
|
|
48
|
+
return nearestPointForLine;
|
|
49
|
+
}
|
|
50
|
+
return nearestPointForEllipse;
|
|
33
51
|
},
|
|
34
52
|
getTangentVectorByConnectionPoint(rectangle, pointOfRectangle) {
|
|
35
53
|
const connectionPoint = RectangleClient.getConnectionPoint(rectangle, pointOfRectangle);
|
|
@@ -44,4 +62,4 @@ export const ProvidedInterfaceEngine = {
|
|
|
44
62
|
return getUnitVectorByPointAndPoint(connectionPoint, [rectangle.x, rectangle.y + rectangle.height / 2]);
|
|
45
63
|
}
|
|
46
64
|
};
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZWQtaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy91bWwvcHJvdmlkZWQtaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixzQ0FBc0MsRUFDdEMsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFnQjtJQUNoRCxJQUFJLENBQUMsS0FBaUIsRUFBRSxTQUEwQixFQUFFLE9BQWdCO1FBQ2hFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FDakIsS0FBSyxTQUFTLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1dBQ3ZELFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJO1dBQ3BDLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLGFBQWEsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3hHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztXQUN6QixDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxhQUFhLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUM7WUFDL0csU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDO1NBQzNCLEVBQ0c7WUFDSSxHQUFHLE9BQU87WUFDVixTQUFTLEVBQUUsT0FBTztTQUNyQixDQUNKLENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELGFBQWEsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDbEQsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQTBCO1FBQ3RDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsU0FBMEI7UUFDekMsT0FBTyxlQUFlLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsTUFBTSxZQUFZLEdBQUcsc0NBQXNDLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMvRyxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBQ0QsaUNBQWlDLENBQUMsU0FBMEIsRUFBRSxnQkFBa0M7UUFDNUYsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sV0FBVyxHQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDNUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RixNQUFNLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBUSxDQUFDO1lBQ3hFLE9BQU8sMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldEVsbGlwc2VUYW5nZW50U2xvcGUsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUsXG4gICAgc2V0U3Ryb2tlTGluZWNhcFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBTaGFwZUVuZ2luZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlRW5naW5lIH0gZnJvbSAnLi4vYmFzaWMtc2hhcGVzL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBQcm92aWRlZEludGVyZmFjZUVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBycy5wYXRoKFxuICAgICAgICAgICAgYCBNJHtyZWN0YW5nbGUueH0gJHtyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyfSBcbiAgICAgICAgSCR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiAwLjU0fVxuICAgICAgICBBJHsocmVjdGFuZ2xlLndpZHRoICogMC40NikgLyAyfSAke3JlY3RhbmdsZS5oZWlnaHQgLyAyfSwgMCwgMSwgMSAke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRofSAke3JlY3RhbmdsZS55ICtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUuaGVpZ2h0IC8gMn1cbiAgICAgICAgQSR7KHJlY3RhbmdsZS53aWR0aCAqIDAuNDYpIC8gMn0gJHtyZWN0YW5nbGUuaGVpZ2h0IC8gMn0sIDAsIDEsIDEgJHtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAqIDAuNTR9ICR7cmVjdGFuZ2xlLnkgK1xuICAgICAgICAgICAgICAgIHJlY3RhbmdsZS5oZWlnaHQgLyAyfVxuICAgICAgICBgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAoc2hhcGUsICdyb3VuZCcpO1xuXG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9LFxuICAgIGlzSW5zaWRlUG9pbnQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSk7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQocmVjdGFuZ2xlLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldENvbm5lY3RvclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldE5lYXJlc3RQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IG5lYXJlc3RQb2ludCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBSZWN0YW5nbGVFbmdpbmUuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSkpO1xuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICAgIH0sXG4gICAgZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Qb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQ6IFBvaW50ID0gW3JlY3RhbmdsZS54ICsgKHJlY3RhbmdsZS53aWR0aCAqIDMpIC8gNCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl07XG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMF0gPiByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAqIDAuNTQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gW2Nvbm5lY3Rpb25Qb2ludFswXSAtIGNlbnRlclBvaW50WzBdLCAtKGNvbm5lY3Rpb25Qb2ludFsxXSAtIGNlbnRlclBvaW50WzFdKV07XG4gICAgICAgICAgICBjb25zdCByeCA9IChyZWN0YW5nbGUud2lkdGggKiAwLjQ2KSAvIDI7XG4gICAgICAgICAgICBjb25zdCByeSA9IHJlY3RhbmdsZS5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3Qgc2xvcGUgPSBnZXRFbGxpcHNlVGFuZ2VudFNsb3BlKHBvaW50WzBdLCBwb2ludFsxXSwgcngsIHJ5KSBhcyBhbnk7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUocG9pbnRbMF0sIHBvaW50WzFdLCBzbG9wZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoY29ubmVjdGlvblBvaW50LCBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdKTtcbiAgICB9XG59O1xuIl19
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZWQtaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZW5naW5lcy91bWwvcHJvdmlkZWQtaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsZUFBZSxFQUNmLDRCQUE0QixFQUM1QixzQkFBc0IsRUFDdEIscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN0QywwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFFeEIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBMEIsRUFBUyxFQUFFO0lBQy9ELE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUEwQixFQUFTLEVBQUU7SUFDN0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRS9ELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQTBCLEVBQVMsRUFBRTtJQUM5RCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxhQUFhLEdBQUcsU0FBUyxDQUFD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QUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFBvaW50T2ZSZWN0YW5nbGUsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgZ2V0RWxsaXBzZVRhbmdlbnRTbG9wZSxcbiAgICBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlLFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIGdldFZlY3RvckZyb21Qb2ludEFuZFNsb3BlLFxuICAgIHNldFN0cm9rZUxpbmVjYXBcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcblxuY29uc3QgcGVyY2VudGFnZSA9IDAuNTQ7XG5cbmV4cG9ydCBjb25zdCBnZXRTdGFydFBvaW50ID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KTogUG9pbnQgPT4ge1xuICAgIHJldHVybiBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVuZFBvaW50ID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KTogUG9pbnQgPT4ge1xuICAgIHJldHVybiBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiBwZXJjZW50YWdlLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXTtcbn07XG5cbmV4cG9ydCBjb25zdCBhcmNQZXJjZW50YWdlID0gcGVyY2VudGFnZSArICgxIC0gcGVyY2VudGFnZSkgLyAyO1xuXG5leHBvcnQgY29uc3QgZ2V0QXJjQ2VudGVyID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KTogUG9pbnQgPT4ge1xuICAgIHJldHVybiBbcmVjdGFuZ2xlLnggKyBhcmNQZXJjZW50YWdlICogcmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXTtcbn07XG5cbmV4cG9ydCBjb25zdCBQcm92aWRlZEludGVyZmFjZUVuZ2luZTogU2hhcGVFbmdpbmUgPSB7XG4gICAgZHJhdyhib2FyZDogUGxhaXRCb2FyZCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcnMgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKTtcbiAgICAgICAgY29uc3Qgc3RhcnRQb2ludCA9IGdldFN0YXJ0UG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSBnZXRFbmRQb2ludChyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IHJzLnBhdGgoXG4gICAgICAgICAgICBgTSR7c3RhcnRQb2ludFswXX0gJHtzdGFydFBvaW50WzFdfSBcbiAgICAgICAgSCR7ZW5kUG9pbnRbMF19XG4gICAgICAgIEEkeyhyZWN0YW5nbGUud2lkdGggKiAoMSAtIHBlcmNlbnRhZ2UpKSAvIDJ9ICR7cmVjdGFuZ2xlLmhlaWdodCAvIDJ9LCAwLCAxLCAxICR7cmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGh9ICR7XG4gICAgICAgICAgICAgICAgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMlxuICAgICAgICAgICAgfVxuICAgICAgICBBJHsocmVjdGFuZ2xlLndpZHRoICogKDEgLSBwZXJjZW50YWdlKSkgLyAyfSAke3JlY3RhbmdsZS5oZWlnaHQgLyAyfSwgMCwgMSwgMSAke3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoICogcGVyY2VudGFnZX0gJHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICBzZXRTdHJva2VMaW5lY2FwKHNoYXBlLCAncm91bmQnKTtcbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgIH0sXG4gICAgaXNJbnNpZGVQb2ludChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRQb2ludCA9IGdldFN0YXJ0UG9pbnQocmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSBnZXRFbmRQb2ludChyZWN0YW5nbGUpO1xuICAgICAgICBjb25zdCBuZWFyZXN0UG9pbnRGb3JMaW5lID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQsIFtzdGFydFBvaW50LCBlbmRQb2ludF0pO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZvckxpbmUgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50LCAuLi5uZWFyZXN0UG9pbnRGb3JMaW5lKTtcbiAgICAgICAgY29uc3QgYXJjQ2VudGVyID0gZ2V0QXJjQ2VudGVyKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IG5lYXJlc3RQb2ludEZvckVsbGlwc2UgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlKFxuICAgICAgICAgICAgcG9pbnQsXG4gICAgICAgICAgICBhcmNDZW50ZXIsXG4gICAgICAgICAgICAocmVjdGFuZ2xlLndpZHRoICogKDEgLSBwZXJjZW50YWdlKSkgLyAyLFxuICAgICAgICAgICAgcmVjdGFuZ2xlLmhlaWdodCAvIDJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VGb3JFbGxpcHNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5wb2ludCwgLi4ubmVhcmVzdFBvaW50Rm9yRWxsaXBzZSk7XG4gICAgICAgIGlmIChkaXN0YW5jZUZvckxpbmUgPCBkaXN0YW5jZUZvckVsbGlwc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnRGb3JMaW5lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnRGb3JFbGxpcHNlO1xuICAgIH0sXG4gICAgZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludE9mUmVjdGFuZ2xlOiBQb2ludE9mUmVjdGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Qb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBwb2ludE9mUmVjdGFuZ2xlKTtcbiAgICAgICAgY29uc3QgY2VudGVyUG9pbnQ6IFBvaW50ID0gW3JlY3RhbmdsZS54ICsgKHJlY3RhbmdsZS53aWR0aCAqIDMpIC8gNCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl07XG4gICAgICAgIGlmIChjb25uZWN0aW9uUG9pbnRbMF0gPiByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAqIDAuNTQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gW2Nvbm5lY3Rpb25Qb2ludFswXSAtIGNlbnRlclBvaW50WzBdLCAtKGNvbm5lY3Rpb25Qb2ludFsxXSAtIGNlbnRlclBvaW50WzFdKV07XG4gICAgICAgICAgICBjb25zdCByeCA9IChyZWN0YW5nbGUud2lkdGggKiAwLjQ2KSAvIDI7XG4gICAgICAgICAgICBjb25zdCByeSA9IHJlY3RhbmdsZS5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3Qgc2xvcGUgPSBnZXRFbGxpcHNlVGFuZ2VudFNsb3BlKHBvaW50WzBdLCBwb2ludFsxXSwgcngsIHJ5KSBhcyBhbnk7XG4gICAgICAgICAgICByZXR1cm4gZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUocG9pbnRbMF0sIHBvaW50WzFdLCBzbG9wZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoY29ubmVjdGlvblBvaW50LCBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdKTtcbiAgICB9XG59O1xuIl19
|
|
@@ -7,4 +7,4 @@ export var VectorLineShape;
|
|
|
7
7
|
VectorLineShape["straight"] = "straight";
|
|
8
8
|
VectorLineShape["curve"] = "curve";
|
|
9
9
|
})(VectorLineShape || (VectorLineShape = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9pbnRlcmZhY2VzL3ZlY3Rvci1saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBTixJQUFZLHFCQUVYO0FBRkQsV0FBWSxxQkFBcUI7SUFDN0Isa0RBQXlCLENBQUE7QUFDN0IsQ0FBQyxFQUZXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFFaEM7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUdYO0FBSEQsV0FBWSxlQUFlO0lBQ3ZCLHdDQUFrQyxDQUFBO0lBQ2xDLGtDQUE0QixDQUFBO0FBQ2hDLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0RWxlbWVudCwgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBcnJvd0xpbmVTaGFwZSB9IGZyb20gJy4vYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBTdHJva2VTdHlsZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgZW51bSBWZWN0b3JMaW5lUG9pbnRlclR5cGUge1xuICAgIHZlY3RvckxpbmUgPSAndmVjdG9yTGluZSdcbn1cblxuZXhwb3J0IGVudW0gVmVjdG9yTGluZVNoYXBlIHtcbiAgICBzdHJhaWdodCA9IEFycm93TGluZVNoYXBlLnN0cmFpZ2h0LFxuICAgIGN1cnZlID0gQXJyb3dMaW5lU2hhcGUuY3VydmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdFZlY3RvckxpbmUgZXh0ZW5kcyBQbGFpdEVsZW1lbnQge1xuICAgIHR5cGU6ICd2ZWN0b3ItbGluZSc7XG4gICAgc2hhcGU6IFZlY3RvckxpbmVTaGFwZTtcbiAgICBwb2ludHM6IFBvaW50W107XG4gICAgc3Ryb2tlQ29sb3I/OiBzdHJpbmc7XG4gICAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gICAgc3Ryb2tlU3R5bGU/OiBTdHJva2VTdHlsZTtcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIG9wYWNpdHk6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { PlaitBoard, getHitElementByPoint, getSelectedElements, toHostPoint, toV
|
|
|
2
2
|
import { isVirtualKey, isSpaceHotkey, isDelete } from '@plait/common';
|
|
3
3
|
import { GeometryCommonTextKeys, PlaitDrawElement } from '../interfaces';
|
|
4
4
|
import { editText } from '../utils/geometry';
|
|
5
|
-
import { getHitMultipleGeometryText, isMultipleTextGeometry } from '../utils';
|
|
5
|
+
import { getHitMultipleGeometryText, isDrawElementIncludeText, isMultipleTextGeometry } from '../utils';
|
|
6
6
|
export const withDrawHotkey = (board) => {
|
|
7
7
|
const { keyDown, dblClick } = board;
|
|
8
8
|
board.keyDown = (event) => {
|
|
@@ -25,11 +25,11 @@ export const withDrawHotkey = (board) => {
|
|
|
25
25
|
event.preventDefault();
|
|
26
26
|
if (!PlaitBoard.isReadonly(board)) {
|
|
27
27
|
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
28
|
-
const hitElement = getHitElementByPoint(board, point);
|
|
29
|
-
if (hitElement && PlaitDrawElement.isGeometry(hitElement)) {
|
|
28
|
+
const hitElement = getHitElementByPoint(board, point, undefined, false);
|
|
29
|
+
if (hitElement && PlaitDrawElement.isGeometry(hitElement) && isDrawElementIncludeText(hitElement)) {
|
|
30
30
|
if (isMultipleTextGeometry(hitElement)) {
|
|
31
31
|
const hitText = getHitMultipleGeometryText(hitElement, point) ||
|
|
32
|
-
hitElement.texts.find(item => item.id.includes(GeometryCommonTextKeys.content)) ||
|
|
32
|
+
hitElement.texts.find((item) => item.id.includes(GeometryCommonTextKeys.content)) ||
|
|
33
33
|
hitElement.texts[0];
|
|
34
34
|
editText(board, hitElement, hitText);
|
|
35
35
|
}
|
|
@@ -42,4 +42,4 @@ export const withDrawHotkey = (board) => {
|
|
|
42
42
|
};
|
|
43
43
|
return board;
|
|
44
44
|
};
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LWhvdGtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1kcmF3LWhvdGtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakgsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVwQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQ0ksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM3QixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDcEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2hCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUNyQixpQkFBaUI7WUFDakIsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUM1QyxDQUFDO1lBQ0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDL0IsT0FBTztRQUNYLENBQUM7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNuQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RSxJQUFJLFVBQVUsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksd0JBQXdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDaEcsSUFBSSxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUNyQyxNQUFNLE9BQU8sR0FDVCwwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO3dCQUM3QyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2pGLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIGdldEhpdEVsZW1lbnRCeVBvaW50LCBnZXRTZWxlY3RlZEVsZW1lbnRzLCB0b0hvc3RQb2ludCwgdG9WaWV3Qm94UG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc1ZpcnR1YWxLZXksIGlzU3BhY2VIb3RrZXksIGlzRGVsZXRlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBHZW9tZXRyeUNvbW1vblRleHRLZXlzLCBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBlZGl0VGV4dCB9IGZyb20gJy4uL3V0aWxzL2dlb21ldHJ5JztcbmltcG9ydCB7IGdldEhpdE11bHRpcGxlR2VvbWV0cnlUZXh0LCBpc0RyYXdFbGVtZW50SW5jbHVkZVRleHQsIGlzTXVsdGlwbGVUZXh0R2VvbWV0cnkgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoRHJhd0hvdGtleSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsga2V5RG93biwgZGJsQ2xpY2sgfSA9IGJvYXJkO1xuXG4gICAgYm9hcmQua2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGlzU2luZ2xlU2VsZWN0aW9uID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDE7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBzZWxlY3RlZEVsZW1lbnRzWzBdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJlxuICAgICAgICAgICAgIWlzVmlydHVhbEtleShldmVudCkgJiZcbiAgICAgICAgICAgICFpc0RlbGV0ZShldmVudCkgJiZcbiAgICAgICAgICAgICFpc1NwYWNlSG90a2V5KGV2ZW50KSAmJlxuICAgICAgICAgICAgaXNTaW5nbGVTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgIFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeSh0YXJnZXRFbGVtZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlZGl0VGV4dChib2FyZCwgdGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBrZXlEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZGJsQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBwb2ludCwgdW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoaGl0RWxlbWVudCAmJiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoaGl0RWxlbWVudCkgJiYgaXNEcmF3RWxlbWVudEluY2x1ZGVUZXh0KGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGVUZXh0R2VvbWV0cnkoaGl0RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGl0VGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRIaXRNdWx0aXBsZUdlb21ldHJ5VGV4dChoaXRFbGVtZW50LCBwb2ludCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpdEVsZW1lbnQudGV4dHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZC5pbmNsdWRlcyhHZW9tZXRyeUNvbW1vblRleHRLZXlzLmNvbnRlbnQpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaGl0RWxlbWVudC50ZXh0c1swXTtcbiAgICAgICAgICAgICAgICAgICAgZWRpdFRleHQoYm9hcmQsIGhpdEVsZW1lbnQsIGhpdFRleHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRUZXh0KGJvYXJkLCBoaXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGJsQ2xpY2soZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { PlaitDrawElement } from '../interfaces';
|
|
|
4
4
|
import { DrawTransforms } from '../transforms';
|
|
5
5
|
import { getHitRectangleResizeHandleRef } from '../utils/position/geometry';
|
|
6
6
|
import { getSnapResizingRefOptions, getSnapResizingRef } from '../utils/snap-resizing';
|
|
7
|
-
import { isGeometryIncludeText,
|
|
7
|
+
import { isGeometryIncludeText, isSingleSelectLine, isSingleSelectSwimlane } from '../utils';
|
|
8
8
|
const debugKey = 'debug:plait:resize-for-rotation';
|
|
9
9
|
const debugGenerator = createDebugGenerator(debugKey);
|
|
10
10
|
export function withDrawResize(board) {
|
|
@@ -17,7 +17,7 @@ export function withDrawResize(board) {
|
|
|
17
17
|
const elements = getSelectedElements(board);
|
|
18
18
|
return (elements.length >= 1 &&
|
|
19
19
|
elements.every(el => (PlaitDrawElement.isDrawElement(el) || PlaitDrawElement.isCustomGeometryElement(board, el)) &&
|
|
20
|
-
!
|
|
20
|
+
!isSingleSelectLine(board) &&
|
|
21
21
|
!isSingleSelectSwimlane(board)));
|
|
22
22
|
};
|
|
23
23
|
const options = {
|
|
@@ -259,4 +259,4 @@ export const getResizePointsByOtherwiseAxis = (board, points, resizeOriginPoint,
|
|
|
259
259
|
const newRectangle = RectangleClient.getRectangleByPoints(resultPoints);
|
|
260
260
|
return rotatePoints(resultPoints, RectangleClient.getCenterPoint(newRectangle), -(1 / 2) * Math.PI);
|
|
261
261
|
};
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1kcmF3LXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsVUFBVSxFQUNWLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixPQUFPLEVBQ1Asc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFFekIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxHLE1BQU0sUUFBUSxHQUFHLGlDQUFpQyxDQUFDO0FBQ25ELE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBU3RELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBaUI7SUFDNUMsTUFBTSxFQUFF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LEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFJlc2l6ZVJlZixcbiAgICBSZXNpemVTdGF0ZSxcbiAgICBXaXRoUmVzaXplT3B0aW9ucyxcbiAgICBkcmF3SGFuZGxlLFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBnZXRJbmRleEJ5UmVzaXplSGFuZGxlLFxuICAgIGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleCxcbiAgICBnZXRTeW1tZXRyaWNIYW5kbGVJbmRleCxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICB3aXRoUmVzaXplLFxuICAgIHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemUsXG4gICAgbm9ybWFsaXplU2hhcGVQb2ludHNcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgY3JlYXRlRyxcbiAgICBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaXNTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgZ2V0U2VsZWN0aW9uQW5nbGUsXG4gICAgcm90YXRlUG9pbnRzLFxuICAgIHJvdGF0ZWREYXRhUG9pbnRzLFxuICAgIGNyZWF0ZURlYnVnR2VuZXJhdG9yLFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgaXNBeGlzQ2hhbmdlZEJ5QW5nbGUsXG4gICAgZHJhd1JlY3RhbmdsZSxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgUGF0aFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmIH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0U25hcFJlc2l6aW5nUmVmT3B0aW9ucywgZ2V0U25hcFJlc2l6aW5nUmVmIH0gZnJvbSAnLi4vdXRpbHMvc25hcC1yZXNpemluZyc7XG5pbXBvcnQgeyBpc0dlb21ldHJ5SW5jbHVkZVRleHQsIGlzU2luZ2xlU2VsZWN0QXJyb3dMaW5lLCBpc1NpbmdsZVNlbGVjdFN3aW1sYW5lIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1Z0tleSA9ICdkZWJ1ZzpwbGFpdDpyZXNpemUtZm9yLXJvdGF0aW9uJztcbmNvbnN0IGRlYnVnR2VuZXJhdG9yID0gY3JlYXRlRGVidWdHZW5lcmF0b3IoZGVidWdLZXkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtSb3RhdGlvblJlZiB7XG4gICAgYW5nbGU6IG51bWJlcjtcbiAgICBvZmZzZXRYOiBudW1iZXI7XG4gICAgb2Zmc2V0WTogbnVtYmVyO1xuICAgIG5ld0NlbnRlclBvaW50OiBQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEcmF3UmVzaXplKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBhZnRlckNoYW5nZSwgZHJhd1NlbGVjdGlvblJlY3RhbmdsZSB9ID0gYm9hcmQ7XG4gICAgbGV0IHNuYXBHOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbGV0IGhhbmRsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgbmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSA9IGZhbHNlO1xuICAgIGxldCByZXNpemVBY3RpdmVQb2ludHM6IFBvaW50W10gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGNhblJlc2l6ZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGVsZW1lbnRzLmxlbmd0aCA+PSAxICYmXG4gICAgICAgICAgICBlbGVtZW50cy5ldmVyeShcbiAgICAgICAgICAgICAgICBlbCA9PlxuICAgICAgICAgICAgICAgICAgICAoUGxhaXREcmF3RWxlbWVudC5pc0RyYXdFbGVtZW50KGVsKSB8fCBQbGFpdERyYXdFbGVtZW50LmlzQ3VzdG9tR2VvbWV0cnlFbGVtZW50KGJvYXJkLCBlbCkpICYmXG4gICAgICAgICAgICAgICAgICAgICFpc1NpbmdsZVNlbGVjdEFycm93TGluZShib2FyZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWlzU2luZ2xlU2VsZWN0U3dpbWxhbmUoYm9hcmQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0RHJhd0VsZW1lbnRbXT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctZWxlbWVudHMnLFxuICAgICAgICBjYW5SZXNpemUsXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkgYXMgUGxhaXREcmF3RWxlbWVudFtdO1xuICAgICAgICAgICAgY29uc3QgYm91bmRpbmdSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgYW5nbGUgPSBnZXRTZWxlY3Rpb25BbmdsZShlbGVtZW50cyk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVSZWYgPSBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIGJvdW5kaW5nUmVjdGFuZ2xlLCBwb2ludCwgYW5nbGUpO1xuICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IFsuLi5lbGVtZW50c10sXG4gICAgICAgICAgICAgICAgICAgIHJlY3RhbmdsZTogYm91bmRpbmdSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yQ2xhc3M6IGhhbmRsZVJlZi5jdXJzb3JDbGFzc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdERyYXdFbGVtZW50W10+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIHNuYXBHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5jbGVhcigpO1xuICAgICAgICAgICAgY29uc3QgaXNGcm9tQ29ybmVyID0gaXNDb3JuZXJIYW5kbGUoYm9hcmQsIHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgY29uc3QgaXNBc3BlY3RSYXRpbyA9IHJlc2l6ZVN0YXRlLmlzU2hpZnQgfHwgKHJlc2l6ZVJlZi5lbGVtZW50Lmxlbmd0aCA9PT0gMSAmJiBQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UocmVzaXplUmVmLmVsZW1lbnRbMF0pKTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlc2l6ZVJlZi5yZWN0YW5nbGUhKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUluZGV4ID0gZ2V0SW5kZXhCeVJlc2l6ZUhhbmRsZShyZXNpemVSZWYuaGFuZGxlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50IH0gPSBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50KGJvYXJkLCBoYW5kbGVJbmRleCwgcmVzaXplUmVmLnJlY3RhbmdsZSEpO1xuICAgICAgICAgICAgY29uc3QgYW5nbGUgPSBnZXRTZWxlY3Rpb25BbmdsZShyZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgYnVsa1JvdGF0aW9uUmVmOiBCdWxrUm90YXRpb25SZWYgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoYW5nbGUpIHtcbiAgICAgICAgICAgICAgICBidWxrUm90YXRpb25SZWYgPSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZ2xlOiBhbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogMCxcbiAgICAgICAgICAgICAgICAgICAgbmV3Q2VudGVyUG9pbnQ6IFswLCAwXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgW3JvdGF0ZWRTdGFydFBvaW50LCByb3RhdGVFbmRQb2ludF0gPSByb3RhdGVQb2ludHMoXG4gICAgICAgICAgICAgICAgICAgIFtyZXNpemVTdGF0ZS5zdGFydFBvaW50LCByZXNpemVTdGF0ZS5lbmRQb2ludF0sXG4gICAgICAgICAgICAgICAgICAgIGNlbnRlclBvaW50LFxuICAgICAgICAgICAgICAgICAgICAtYnVsa1JvdGF0aW9uUmVmLmFuZ2xlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZS5zdGFydFBvaW50ID0gcm90YXRlZFN0YXJ0UG9pbnQ7XG4gICAgICAgICAgICAgICAgcmVzaXplU3RhdGUuZW5kUG9pbnQgPSByb3RhdGVFbmRQb2ludDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlc2l6ZVNuYXBSZWZPcHRpb25zID0gZ2V0U25hcFJlc2l6aW5nUmVmT3B0aW9ucyhcbiAgICAgICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgICAgICByZXNpemVSZWYsXG4gICAgICAgICAgICAgICAgcmVzaXplU3RhdGUsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUG9pbnRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlzQXNwZWN0UmF0aW8sXG4gICAgICAgICAgICAgICAgaXNGcm9tQ29ybmVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplU25hcFJlZiA9IGdldFNuYXBSZXNpemluZ1JlZihib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIHJlc2l6ZVNuYXBSZWZPcHRpb25zKTtcbiAgICAgICAgICAgIHJlc2l6ZUFjdGl2ZVBvaW50cyA9IHJlc2l6ZVNuYXBSZWYuYWN0aXZlUG9pbnRzO1xuICAgICAgICAgICAgc25hcEcgPSByZXNpemVTbmFwUmVmLnNuYXBHO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHNuYXBHKTtcblxuICAgICAgICAgICAgaWYgKGJ1bGtSb3RhdGlvblJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kaW5nQm94Q29ybmVyUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhyZXNpemVSZWYucmVjdGFuZ2xlISk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplZEJvdW5kaW5nQm94Q29ybmVyUG9pbnRzID0gYm91bmRpbmdCb3hDb3JuZXJQb2ludHMubWFwKHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQocCwgb3JpZ2luUG9pbnQsIHJlc2l6ZVNuYXBSZWYueFpvb20sIHJlc2l6ZVNuYXBSZWYueVpvb20pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0JvdW5kaW5nQm94ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc2l6ZWRCb3VuZGluZ0JveENvcm5lclBvaW50cyk7XG5cbiAgICAgICAgICAgICAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuZHJhd1JlY3RhbmdsZShib2FyZCwgbmV3Qm91bmRpbmdCb3gsIHsgc3Ryb2tlOiAnYmx1ZScgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdCb3VuZGluZ0JveENlbnRlciA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChuZXdCb3VuZGluZ0JveCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqdXN0ZWROZXdCb3VuZGluZ0JveFBvaW50cyA9IHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemUoXG4gICAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhib3VuZGluZ0JveENvcm5lclBvaW50cyksXG4gICAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXNpemVkQm91bmRpbmdCb3hDb3JuZXJQb2ludHMpLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgbmV3Qm91bmRpbmdCb3hDZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgIGJ1bGtSb3RhdGlvblJlZi5hbmdsZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Q2VudGVyID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhhZGp1c3RlZE5ld0JvdW5kaW5nQm94UG9pbnRzKSk7XG4gICAgICAgICAgICAgICAgYnVsa1JvdGF0aW9uUmVmID0gT2JqZWN0LmFzc2lnbihidWxrUm90YXRpb25SZWYsIHtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogbmV3Q2VudGVyWzBdIC0gbmV3Qm91bmRpbmdCb3hDZW50ZXJbMF0sXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IG5ld0NlbnRlclsxXSAtIG5ld0JvdW5kaW5nQm94Q2VudGVyWzFdLFxuICAgICAgICAgICAgICAgICAgICBuZXdDZW50ZXJQb2ludDogbmV3Q2VudGVyXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuZHJhd1JlY3RhbmdsZShib2FyZCwgYWRqdXN0ZWROZXdCb3VuZGluZ0JveFBvaW50cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc2l6ZVJlZi5lbGVtZW50LmZvckVhY2godGFyZ2V0ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnRzO1xuICAgICAgICAgICAgICAgIGlmIChidWxrUm90YXRpb25SZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZWRQb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyh0YXJnZXQucG9pbnRzLCBjZW50ZXJQb2ludCwgLWJ1bGtSb3RhdGlvblJlZi5hbmdsZSk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHJldmVyc2VkUG9pbnRzLm1hcCgocDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgcmVzaXplU25hcFJlZi54Wm9vbSwgcmVzaXplU25hcFJlZi55Wm9vbSk7XG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGp1c3RUYXJnZXRQb2ludHMgPSBwb2ludHMubWFwKHAgPT4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgcFswXSArIGJ1bGtSb3RhdGlvblJlZiEub2Zmc2V0WCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBbMV0gKyBidWxrUm90YXRpb25SZWYhLm9mZnNldFlcbiAgICAgICAgICAgICAgICAgICAgXSkgYXMgUG9pbnRbXTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gcm90YXRlZERhdGFQb2ludHMoYWRqdXN0VGFyZ2V0UG9pbnRzLCBidWxrUm90YXRpb25SZWYubmV3Q2VudGVyUG9pbnQsIGJ1bGtSb3RhdGlvblJlZi5hbmdsZSkgYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbGlkQW5nbGUodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbGlkQW5nbGUodGFyZ2V0KSAmJiBpc0F4aXNDaGFuZ2VkQnlBbmdsZSh0YXJnZXQuYW5nbGUhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gZ2V0UmVzaXplUG9pbnRzQnlPdGhlcndpc2VBeGlzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5wb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplU25hcFJlZi54Wm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTbmFwUmVmLnlab29tXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gdGFyZ2V0LnBvaW50cy5tYXAocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCByZXNpemVTbmFwUmVmLnhab29tLCByZXNpemVTbmFwUmVmLnlab29tKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodGFyZ2V0KSAmJiBpc0dlb21ldHJ5SW5jbHVkZVRleHQodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBoZWlnaHQ6IHRleHRIZWlnaHQgfSA9IGdldEZpcnN0VGV4dE1hbmFnZSh0YXJnZXQpLmdldFNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUdlb21ldHJ5KGJvYXJkLCBwb2ludHMgYXMgW1BvaW50LCBQb2ludF0sIHRleHRIZWlnaHQsIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gbm9ybWFsaXplU2hhcGVQb2ludHMocG9pbnRzIGFzIFtQb2ludCwgUG9pbnRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHMgfSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICBQbGFpdERyYXdFbGVtZW50LmlzTGluZSh0YXJnZXQpIHx8XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0RHJhd0VsZW1lbnQuaXNDdXN0b21HZW9tZXRyeUVsZW1lbnQoYm9hcmQsIHRhcmdldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgUGxhaXREcmF3RWxlbWVudC5pc1ZlY3RvckxpbmUodGFyZ2V0KVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHMgfSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgaW1hZ2UgZWxlbWVudCBkb2VzIG5vdCBmb2xsb3cgdGhlIHJlc2l6ZSwgYnV0IG1vdmVzIGJhc2VkIG9uIHRoZSBjZW50ZXIgcG9pbnQuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHModGFyZ2V0LnBvaW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludCh0YXJnZXRSZWN0YW5nbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q2VudGVyUG9pbnQgPSBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXJQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTbmFwUmVmLnhab29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVNuYXBSZWYueVpvb21cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdUYXJnZXRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDZW50ZXJQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlLmhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHM6IFJlY3RhbmdsZUNsaWVudC5nZXRQb2ludHMobmV3VGFyZ2V0UmVjdGFuZ2xlKSB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0RHJhd0VsZW1lbnRbXT4pID0+IHtcbiAgICAgICAgICAgIHNuYXBHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHNuYXBHID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChuZWVkQ3VzdG9tQWN0aXZlUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgbmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJlc2l6ZUFjdGl2ZVBvaW50cyA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuYWRkU2VsZWN0aW9uV2l0aFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0RHJhd0VsZW1lbnRbXT4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgYm9hcmQuYWZ0ZXJDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGFmdGVyQ2hhbmdlKCk7XG4gICAgICAgIGlmIChoYW5kbGVHKSB7XG4gICAgICAgICAgICBoYW5kbGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgaGFuZGxlRyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhblJlc2l6ZSgpICYmICFpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkpIHtcbiAgICAgICAgICAgIGhhbmRsZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpIGFzIFBsYWl0RHJhd0VsZW1lbnRbXTtcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kaW5nUmVjdGFuZ2xlID0gbmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZVxuICAgICAgICAgICAgICAgID8gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc2l6ZUFjdGl2ZVBvaW50cyEpXG4gICAgICAgICAgICAgICAgOiBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgICAgICAgICAgbGV0IGNvcm5lcnMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKGJvdW5kaW5nUmVjdGFuZ2xlKTtcbiAgICAgICAgICAgIGNvbnN0IGFuZ2xlID0gZ2V0U2VsZWN0aW9uQW5nbGUoZWxlbWVudHMpO1xuICAgICAgICAgICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoYm91bmRpbmdSZWN0YW5nbGUpO1xuICAgICAgICAgICAgICAgIGNvcm5lcnMgPSByb3RhdGVQb2ludHMoY29ybmVycywgY2VudGVyUG9pbnQsIGFuZ2xlKSBhcyBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29ybmVycy5mb3JFYWNoKGNvcm5lciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZyA9IGRyYXdIYW5kbGUoYm9hcmQsIGNvcm5lcik7XG4gICAgICAgICAgICAgICAgaGFuZGxlRyAmJiBoYW5kbGVHLmFwcGVuZChnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGhhbmRsZUcpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGJvYXJkLmRyYXdTZWxlY3Rpb25SZWN0YW5nbGUgPSAoKSA9PiB7XG4gICAgICAgIGlmIChuZWVkQ3VzdG9tQWN0aXZlUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzaXplQWN0aXZlUG9pbnRzISk7XG4gICAgICAgICAgICByZXR1cm4gZHJhd1JlY3RhbmdsZShib2FyZCwgUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBQ1RJVkVfU1RST0tFX1dJRFRIKSwge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogQUNUSVZFX1NUUk9LRV9XSURUSFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRyYXdTZWxlY3Rpb25SZWN0YW5nbGUoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludCA9IChib2FyZDogUGxhaXRCb2FyZCwgaGFuZGxlSW5kZXg6IG51bWJlciwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICBjb25zdCBzeW1tZXRyaWNIYW5kbGVJbmRleCA9IGdldFN5bW1ldHJpY0hhbmRsZUluZGV4KGJvYXJkLCBoYW5kbGVJbmRleCk7XG4gICAgY29uc3Qgb3JpZ2luUG9pbnQgPSBnZXRSZXNpemVIYW5kbGVQb2ludEJ5SW5kZXgocmVjdGFuZ2xlIGFzIFJlY3RhbmdsZUNsaWVudCwgc3ltbWV0cmljSGFuZGxlSW5kZXgpO1xuICAgIGNvbnN0IGhhbmRsZVBvaW50ID0gZ2V0UmVzaXplSGFuZGxlUG9pbnRCeUluZGV4KHJlY3RhbmdsZSBhcyBSZWN0YW5nbGVDbGllbnQsIGhhbmRsZUluZGV4KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgaGFuZGxlUG9pbnRcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZVpvb20gPSAoXG4gICAgcmVzaXplU3RhcnRBbmRFbmQ6IFtQb2ludCwgUG9pbnRdLFxuICAgIHJlc2l6ZU9yaWdpblBvaW50OiBQb2ludCxcbiAgICByZXNpemVIYW5kbGVQb2ludDogUG9pbnQsXG4gICAgaXNGcm9tQ29ybmVyOiBib29sZWFuLFxuICAgIGlzQXNwZWN0UmF0aW86IGJvb2xlYW5cbikgPT4ge1xuICAgIGNvbnN0IFtzdGFydFBvaW50LCBlbmRQb2ludF0gPSByZXNpemVTdGFydEFuZEVuZDtcbiAgICBsZXQgeFpvb20gPSAwO1xuICAgIGxldCB5Wm9vbSA9IDA7XG4gICAgaWYgKGlzRnJvbUNvcm5lcikge1xuICAgICAgICBpZiAoaXNBc3BlY3RSYXRpbykge1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXRYID0gUG9pbnQuZ2V0T2Zmc2V0WChzdGFydFBvaW50LCBlbmRQb2ludCk7XG4gICAgICAgICAgICB4Wm9vbSA9IG5vcm1hbGl6ZWRPZmZzZXRYIC8gKHJlc2l6ZUhhbmRsZVBvaW50WzBdIC0gcmVzaXplT3JpZ2luUG9pbnRbMF0pO1xuICAgICAgICAgICAgeVpvb20gPSB4Wm9vbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkT2Zmc2V0WCA9IFBvaW50LmdldE9mZnNldFgoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXRZID0gUG9pbnQuZ2V0T2Zmc2V0WShzdGFydFBvaW50LCBlbmRQb2ludCk7XG4gICAgICAgICAgICB4Wm9vbSA9IG5vcm1hbGl6ZWRPZmZzZXRYIC8gKHJlc2l6ZUhhbmRsZVBvaW50WzBdIC0gcmVzaXplT3JpZ2luUG9pbnRbMF0pO1xuICAgICAgICAgICAgeVpvb20gPSBub3JtYWxpemVkT2Zmc2V0WSAvIChyZXNpemVIYW5kbGVQb2ludFsxXSAtIHJlc2l6ZU9yaWdpblBvaW50WzFdKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IFBvaW50LmlzSG9yaXpvbnRhbChyZXNpemVPcmlnaW5Qb2ludCwgcmVzaXplSGFuZGxlUG9pbnQsIDAuMSkgfHwgZmFsc2U7XG4gICAgICAgIGxldCBub3JtYWxpemVkT2Zmc2V0ID0gaXNIb3Jpem9udGFsID8gUG9pbnQuZ2V0T2Zmc2V0WChzdGFydFBvaW50LCBlbmRQb2ludCkgOiBQb2ludC5nZXRPZmZzZXRZKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgbGV0IGJlbmNobWFya09mZnNldCA9IGlzSG9yaXpvbnRhbCA/IHJlc2l6ZUhhbmRsZVBvaW50WzBdIC0gcmVzaXplT3JpZ2luUG9pbnRbMF0gOiByZXNpemVIYW5kbGVQb2ludFsxXSAtIHJlc2l6ZU9yaWdpblBvaW50WzFdO1xuICAgICAgICBjb25zdCB6b29tID0gbm9ybWFsaXplZE9mZnNldCAvIGJlbmNobWFya09mZnNldDtcbiAgICAgICAgaWYgKGlzQXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICAgIHhab29tID0gem9vbTtcbiAgICAgICAgICAgIHlab29tID0gem9vbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICB4Wm9vbSA9IHpvb207XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHlab29tID0gem9vbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB4Wm9vbSwgeVpvb20gfTtcbn07XG5cbmV4cG9ydCBjb25zdCBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludCA9IChwOiBQb2ludCwgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50LCB4Wm9vbTogbnVtYmVyLCB5Wm9vbTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qgb2Zmc2V0WCA9IChwWzBdIC0gcmVzaXplT3JpZ2luUG9pbnRbMF0pICogeFpvb207XG4gICAgY29uc3Qgb2Zmc2V0WSA9IChwWzFdIC0gcmVzaXplT3JpZ2luUG9pbnRbMV0pICogeVpvb207XG4gICAgcmV0dXJuIFtwWzBdICsgb2Zmc2V0WCwgcFsxXSArIG9mZnNldFldIGFzIFBvaW50O1xufTtcblxuLyoqXG4gKiAxLiBSb3RhdGUgOTDCsFxuICogMi4gU2NhbGUgYmFzZWQgb24gdGhlIHJvdGF0ZWQgcG9pbnRzXG4gKiAzLiBSZXZlcnNlIHJvdGF0ZSB0aGUgc2NhbGVkIHBvaW50cyBieSA5MMKwXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVQb2ludHNCeU90aGVyd2lzZUF4aXMgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcG9pbnRzOiBQb2ludFtdLFxuICAgIHJlc2l6ZU9yaWdpblBvaW50OiBQb2ludCxcbiAgICB4Wm9vbTogbnVtYmVyLFxuICAgIHlab29tOiBudW1iZXJcbikgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuZHJhd1JlY3RhbmdsZShib2FyZCwgY3VycmVudFJlY3RhbmdsZSwgeyBzdHJva2U6ICdibGFjaycgfSk7XG4gICAgbGV0IHJlc3VsdFBvaW50cyA9IHBvaW50cztcbiAgICByZXN1bHRQb2ludHMgPSByb3RhdGVQb2ludHMocmVzdWx0UG9pbnRzLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoY3VycmVudFJlY3RhbmdsZSksICgxIC8gMikgKiBNYXRoLlBJKTtcbiAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuZHJhd1JlY3RhbmdsZShib2FyZCwgcmVzdWx0UG9pbnRzLCB7IHN0cm9rZTogJ2JsdWUnIH0pO1xuICAgIHJlc3VsdFBvaW50cyA9IHJlc3VsdFBvaW50cy5tYXAocCA9PiB7XG4gICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCByZXNpemVPcmlnaW5Qb2ludCwgeFpvb20sIHlab29tKTtcbiAgICB9KTtcbiAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuZHJhd1JlY3RhbmdsZShib2FyZCwgcmVzdWx0UG9pbnRzKTtcbiAgICBjb25zdCBuZXdSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzdWx0UG9pbnRzKTtcbiAgICByZXR1cm4gcm90YXRlUG9pbnRzKHJlc3VsdFBvaW50cywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KG5ld1JlY3RhbmdsZSksIC0oMSAvIDIpICogTWF0aC5QSSk7XG59O1xuIl19
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1kcmF3LXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsVUFBVSxFQUNWLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixPQUFPLEVBQ1Asc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFFekIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdGLE1BQU0sUUFBUSxHQUFHLGlDQUFpQyxDQUFDO0FBQ25ELE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBU3RELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBaUI7SUFDNUMsTUFBTSxFQUFF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LEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFJlc2l6ZVJlZixcbiAgICBSZXNpemVTdGF0ZSxcbiAgICBXaXRoUmVzaXplT3B0aW9ucyxcbiAgICBkcmF3SGFuZGxlLFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBnZXRJbmRleEJ5UmVzaXplSGFuZGxlLFxuICAgIGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleCxcbiAgICBnZXRTeW1tZXRyaWNIYW5kbGVJbmRleCxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICB3aXRoUmVzaXplLFxuICAgIHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemUsXG4gICAgbm9ybWFsaXplU2hhcGVQb2ludHNcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgY3JlYXRlRyxcbiAgICBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaXNTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgZ2V0U2VsZWN0aW9uQW5nbGUsXG4gICAgcm90YXRlUG9pbnRzLFxuICAgIHJvdGF0ZWREYXRhUG9pbnRzLFxuICAgIGNyZWF0ZURlYnVnR2VuZXJhdG9yLFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgaXNBeGlzQ2hhbmdlZEJ5QW5nbGUsXG4gICAgZHJhd1JlY3RhbmdsZSxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgUGF0aFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmIH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0U25hcFJlc2l6aW5nUmVmT3B0aW9ucywgZ2V0U25hcFJlc2l6aW5nUmVmIH0gZnJvbSAnLi4vdXRpbHMvc25hcC1yZXNpemluZyc7XG5pbXBvcnQgeyBpc0dlb21ldHJ5SW5jbHVkZVRleHQsIGlzU2luZ2xlU2VsZWN0TGluZSwgaXNTaW5nbGVTZWxlY3RTd2ltbGFuZSB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZGVidWdLZXkgPSAnZGVidWc6cGxhaXQ6cmVzaXplLWZvci1yb3RhdGlvbic7XG5jb25zdCBkZWJ1Z0dlbmVyYXRvciA9IGNyZWF0ZURlYnVnR2VuZXJhdG9yKGRlYnVnS2V5KTtcblxuZXhwb3J0IGludGVyZmFjZSBCdWxrUm90YXRpb25SZWYge1xuICAgIGFuZ2xlOiBudW1iZXI7XG4gICAgb2Zmc2V0WDogbnVtYmVyO1xuICAgIG9mZnNldFk6IG51bWJlcjtcbiAgICBuZXdDZW50ZXJQb2ludDogUG9pbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRHJhd1Jlc2l6ZShib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgYWZ0ZXJDaGFuZ2UsIGRyYXdTZWxlY3Rpb25SZWN0YW5nbGUgfSA9IGJvYXJkO1xuICAgIGxldCBzbmFwRzogU1ZHR0VsZW1lbnQgfCBudWxsO1xuICAgIGxldCBoYW5kbGVHOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbGV0IG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGUgPSBmYWxzZTtcbiAgICBsZXQgcmVzaXplQWN0aXZlUG9pbnRzOiBQb2ludFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBjYW5SZXNpemUgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBlbGVtZW50cy5sZW5ndGggPj0gMSAmJlxuICAgICAgICAgICAgZWxlbWVudHMuZXZlcnkoXG4gICAgICAgICAgICAgICAgZWwgPT5cbiAgICAgICAgICAgICAgICAgICAgKFBsYWl0RHJhd0VsZW1lbnQuaXNEcmF3RWxlbWVudChlbCkgfHwgUGxhaXREcmF3RWxlbWVudC5pc0N1c3RvbUdlb21ldHJ5RWxlbWVudChib2FyZCwgZWwpKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTaW5nbGVTZWxlY3RMaW5lKGJvYXJkKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTaW5nbGVTZWxlY3RTd2ltbGFuZShib2FyZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXREcmF3RWxlbWVudFtdPiA9IHtcbiAgICAgICAga2V5OiAnZHJhdy1lbGVtZW50cycsXG4gICAgICAgIGNhblJlc2l6ZSxcbiAgICAgICAgaGl0VGVzdDogKHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBQbGFpdERyYXdFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBib3VuZGluZ1JlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgYm91bmRpbmdSZWN0YW5nbGUsIHBvaW50LCBhbmdsZSk7XG4gICAgICAgICAgICBpZiAoaGFuZGxlUmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogWy4uLmVsZW1lbnRzXSxcbiAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlOiBib3VuZGluZ1JlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlOiBoYW5kbGVSZWYuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICBjdXJzb3JDbGFzczogaGFuZGxlUmVmLmN1cnNvckNsYXNzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBvblJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0RHJhd0VsZW1lbnRbXT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgc25hcEc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmNsZWFyKCk7XG4gICAgICAgICAgICBjb25zdCBpc0Zyb21Db3JuZXIgPSBpc0Nvcm5lckhhbmRsZShib2FyZCwgcmVzaXplUmVmLmhhbmRsZSk7XG4gICAgICAgICAgICBjb25zdCBpc0FzcGVjdFJhdGlvID0gcmVzaXplU3RhdGUuaXNTaGlmdCB8fCAocmVzaXplUmVmLmVsZW1lbnQubGVuZ3RoID09PSAxICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShyZXNpemVSZWYuZWxlbWVudFswXSkpO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVzaXplUmVmLnJlY3RhbmdsZSEpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSBnZXRJbmRleEJ5UmVzaXplSGFuZGxlKHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IGdldFJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQoYm9hcmQsIGhhbmRsZUluZGV4LCByZXNpemVSZWYucmVjdGFuZ2xlISk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBidWxrUm90YXRpb25SZWY6IEJ1bGtSb3RhdGlvblJlZiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIGJ1bGtSb3RhdGlvblJlZiA9IHtcbiAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGFuZ2xlLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLFxuICAgICAgICAgICAgICAgICAgICBuZXdDZW50ZXJQb2ludDogWzAsIDBdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBbcm90YXRlZFN0YXJ0UG9pbnQsIHJvdGF0ZUVuZFBvaW50XSA9IHJvdGF0ZVBvaW50cyhcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50XSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIC1idWxrUm90YXRpb25SZWYuYW5nbGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQgPSByb3RhdGVkU3RhcnRQb2ludDtcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZS5lbmRQb2ludCA9IHJvdGF0ZUVuZFBvaW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzaXplU25hcFJlZk9wdGlvbnMgPSBnZXRTbmFwUmVzaXppbmdSZWZPcHRpb25zKFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZixcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQb2ludFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNBc3BlY3RSYXRpbyxcbiAgICAgICAgICAgICAgICBpc0Zyb21Db3JuZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCByZXNpemVTbmFwUmVmID0gZ2V0U25hcFJlc2l6aW5nUmVmKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgcmVzaXplU25hcFJlZk9wdGlvbnMpO1xuICAgICAgICAgICAgcmVzaXplQWN0aXZlUG9pbnRzID0gcmVzaXplU25hcFJlZi5hY3RpdmVQb2ludHM7XG4gICAgICAgICAgICBzbmFwRyA9IHJlc2l6ZVNuYXBSZWYuc25hcEc7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc25hcEcpO1xuXG4gICAgICAgICAgICBpZiAoYnVsa1JvdGF0aW9uUmVmKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm91bmRpbmdCb3hDb3JuZXJQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKHJlc2l6ZVJlZi5yZWN0YW5nbGUhKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkQm91bmRpbmdCb3hDb3JuZXJQb2ludHMgPSBib3VuZGluZ0JveENvcm5lclBvaW50cy5tYXAocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgcmVzaXplU25hcFJlZi54Wm9vbSwgcmVzaXplU25hcFJlZi55Wm9vbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Qm91bmRpbmdCb3ggPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzaXplZEJvdW5kaW5nQm94Q29ybmVyUG9pbnRzKTtcblxuICAgICAgICAgICAgICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCBuZXdCb3VuZGluZ0JveCwgeyBzdHJva2U6ICdibHVlJyB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0JvdW5kaW5nQm94Q2VudGVyID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KG5ld0JvdW5kaW5nQm94KTtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGp1c3RlZE5ld0JvdW5kaW5nQm94UG9pbnRzID0gcmVzZXRQb2ludHNBZnRlclJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGJvdW5kaW5nQm94Q29ybmVyUG9pbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc2l6ZWRCb3VuZGluZ0JveENvcm5lclBvaW50cyksXG4gICAgICAgICAgICAgICAgICAgIGNlbnRlclBvaW50LFxuICAgICAgICAgICAgICAgICAgICBuZXdCb3VuZGluZ0JveENlbnRlcixcbiAgICAgICAgICAgICAgICAgICAgYnVsa1JvdGF0aW9uUmVmLmFuZ2xlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDZW50ZXIgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGFkanVzdGVkTmV3Qm91bmRpbmdCb3hQb2ludHMpKTtcbiAgICAgICAgICAgICAgICBidWxrUm90YXRpb25SZWYgPSBPYmplY3QuYXNzaWduKGJ1bGtSb3RhdGlvblJlZiwge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiBuZXdDZW50ZXJbMF0gLSBuZXdCb3VuZGluZ0JveENlbnRlclswXSxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogbmV3Q2VudGVyWzFdIC0gbmV3Qm91bmRpbmdCb3hDZW50ZXJbMV0sXG4gICAgICAgICAgICAgICAgICAgIG5ld0NlbnRlclBvaW50OiBuZXdDZW50ZXJcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCBhZGp1c3RlZE5ld0JvdW5kaW5nQm94UG9pbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzaXplUmVmLmVsZW1lbnQuZm9yRWFjaCh0YXJnZXQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGxldCBwb2ludHM7XG4gICAgICAgICAgICAgICAgaWYgKGJ1bGtSb3RhdGlvblJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlZFBvaW50cyA9IHJvdGF0ZWREYXRhUG9pbnRzKHRhcmdldC5wb2ludHMsIGNlbnRlclBvaW50LCAtYnVsa1JvdGF0aW9uUmVmLmFuZ2xlKTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gcmV2ZXJzZWRQb2ludHMubWFwKChwOiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCByZXNpemVTbmFwUmVmLnhab29tLCByZXNpemVTbmFwUmVmLnlab29tKTtcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkanVzdFRhcmdldFBvaW50cyA9IHBvaW50cy5tYXAocCA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBwWzBdICsgYnVsa1JvdGF0aW9uUmVmIS5vZmZzZXRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgcFsxXSArIGJ1bGtSb3RhdGlvblJlZiEub2Zmc2V0WVxuICAgICAgICAgICAgICAgICAgICBdKSBhcyBQb2ludFtdO1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyhhZGp1c3RUYXJnZXRQb2ludHMsIGJ1bGtSb3RhdGlvblJlZi5uZXdDZW50ZXJQb2ludCwgYnVsa1JvdGF0aW9uUmVmLmFuZ2xlKSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkQ3VzdG9tQWN0aXZlUmVjdGFuZ2xlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZSh0YXJnZXQpICYmIGlzQXhpc0NoYW5nZWRCeUFuZ2xlKHRhcmdldC5hbmdsZSEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBnZXRSZXNpemVQb2ludHNCeU90aGVyd2lzZUF4aXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTbmFwUmVmLnhab29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVNuYXBSZWYueVpvb21cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSB0YXJnZXQucG9pbnRzLm1hcChwID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQocCwgb3JpZ2luUG9pbnQsIHJlc2l6ZVNuYXBSZWYueFpvb20sIHJlc2l6ZVNuYXBSZWYueVpvb20pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeSh0YXJnZXQpICYmIGlzR2VvbWV0cnlJbmNsdWRlVGV4dCh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGhlaWdodDogdGV4dEhlaWdodCB9ID0gZ2V0Rmlyc3RUZXh0TWFuYWdlKHRhcmdldCkuZ2V0U2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplR2VvbWV0cnkoYm9hcmQsIHBvaW50cyBhcyBbUG9pbnQsIFBvaW50XSwgdGV4dEhlaWdodCwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBub3JtYWxpemVTaGFwZVBvaW50cyhwb2ludHMgYXMgW1BvaW50LCBQb2ludF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgIFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKHRhcmdldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgUGxhaXREcmF3RWxlbWVudC5pc0N1c3RvbUdlb21ldHJ5RWxlbWVudChib2FyZCwgdGFyZ2V0KSB8fFxuICAgICAgICAgICAgICAgICAgICBQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZSh0YXJnZXQpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBwb2ludHMgfSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBc3BlY3RSYXRpbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBlbGVtZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgcmVzaXplLCBidXQgbW92ZXMgYmFzZWQgb24gdGhlIGNlbnRlciBwb2ludC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyh0YXJnZXQucG9pbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHRhcmdldFJlY3RhbmdsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdDZW50ZXJQb2ludCA9IG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlclBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVNuYXBSZWYueFpvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplU25hcFJlZi55Wm9vbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1RhcmdldFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeUNlbnRlclBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NlbnRlclBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRSZWN0YW5nbGUuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50czogUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhuZXdUYXJnZXRSZWN0YW5nbGUpIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXREcmF3RWxlbWVudFtdPikgPT4ge1xuICAgICAgICAgICAgc25hcEc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgc25hcEcgPSBudWxsO1xuICAgICAgICAgICAgaWYgKG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgICAgICBuZWVkQ3VzdG9tQWN0aXZlUmVjdGFuZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmVzaXplQWN0aXZlUG9pbnRzID0gbnVsbDtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5hZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHdpdGhSZXNpemU8UGxhaXREcmF3RWxlbWVudFtdPihib2FyZCwgb3B0aW9ucyk7XG5cbiAgICBib2FyZC5hZnRlckNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgYWZ0ZXJDaGFuZ2UoKTtcbiAgICAgICAgaWYgKGhhbmRsZUcpIHtcbiAgICAgICAgICAgIGhhbmRsZUcucmVtb3ZlKCk7XG4gICAgICAgICAgICBoYW5kbGVHID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuUmVzaXplKCkgJiYgIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgaGFuZGxlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkgYXMgUGxhaXREcmF3RWxlbWVudFtdO1xuICAgICAgICAgICAgY29uc3QgYm91bmRpbmdSZWN0YW5nbGUgPSBuZWVkQ3VzdG9tQWN0aXZlUmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgPyBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzaXplQWN0aXZlUG9pbnRzISlcbiAgICAgICAgICAgICAgICA6IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgY29ybmVycyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMoYm91bmRpbmdSZWN0YW5nbGUpO1xuICAgICAgICAgICAgY29uc3QgYW5nbGUgPSBnZXRTZWxlY3Rpb25BbmdsZShlbGVtZW50cyk7XG4gICAgICAgICAgICBpZiAoYW5nbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXJQb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChib3VuZGluZ1JlY3RhbmdsZSk7XG4gICAgICAgICAgICAgICAgY29ybmVycyA9IHJvdGF0ZVBvaW50cyhjb3JuZXJzLCBjZW50ZXJQb2ludCwgYW5nbGUpIGFzIFtQb2ludCwgUG9pbnQsIFBvaW50LCBQb2ludF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3JuZXJzLmZvckVhY2goY29ybmVyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnID0gZHJhd0hhbmRsZShib2FyZCwgY29ybmVyKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVHICYmIGhhbmRsZUcuYXBwZW5kKGcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoaGFuZGxlRyk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgYm9hcmQuZHJhd1NlbGVjdGlvblJlY3RhbmdsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXNpemVBY3RpdmVQb2ludHMhKTtcbiAgICAgICAgICAgIHJldHVybiBkcmF3UmVjdGFuZ2xlKGJvYXJkLCBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpLCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBBQ1RJVkVfU1RST0tFX1dJRFRIXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd1NlbGVjdGlvblJlY3RhbmdsZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBoYW5kbGVJbmRleDogbnVtYmVyLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHN5bW1ldHJpY0hhbmRsZUluZGV4ID0gZ2V0U3ltbWV0cmljSGFuZGxlSW5kZXgoYm9hcmQsIGhhbmRsZUluZGV4KTtcbiAgICBjb25zdCBvcmlnaW5Qb2ludCA9IGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleChyZWN0YW5nbGUgYXMgUmVjdGFuZ2xlQ2xpZW50LCBzeW1tZXRyaWNIYW5kbGVJbmRleCk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnQgPSBnZXRSZXNpemVIYW5kbGVQb2ludEJ5SW5kZXgocmVjdGFuZ2xlIGFzIFJlY3RhbmdsZUNsaWVudCwgaGFuZGxlSW5kZXgpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICBoYW5kbGVQb2ludFxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVzaXplWm9vbSA9IChcbiAgICByZXNpemVTdGFydEFuZEVuZDogW1BvaW50LCBQb2ludF0sXG4gICAgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50LFxuICAgIHJlc2l6ZUhhbmRsZVBvaW50OiBQb2ludCxcbiAgICBpc0Zyb21Db3JuZXI6IGJvb2xlYW4sXG4gICAgaXNBc3BlY3RSYXRpbzogYm9vbGVhblxuKSA9PiB7XG4gICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IHJlc2l6ZVN0YXJ0QW5kRW5kO1xuICAgIGxldCB4Wm9vbSA9IDA7XG4gICAgbGV0IHlab29tID0gMDtcbiAgICBpZiAoaXNGcm9tQ29ybmVyKSB7XG4gICAgICAgIGlmIChpc0FzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZE9mZnNldFggPSBQb2ludC5nZXRPZmZzZXRYKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIHhab29tID0gbm9ybWFsaXplZE9mZnNldFggLyAocmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSk7XG4gICAgICAgICAgICB5Wm9vbSA9IHhab29tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXRYID0gUG9pbnQuZ2V0T2Zmc2V0WChzdGFydFBvaW50LCBlbmRQb2ludCk7XG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZE9mZnNldFkgPSBQb2ludC5nZXRPZmZzZXRZKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIHhab29tID0gbm9ybWFsaXplZE9mZnNldFggLyAocmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSk7XG4gICAgICAgICAgICB5Wm9vbSA9IG5vcm1hbGl6ZWRPZmZzZXRZIC8gKHJlc2l6ZUhhbmRsZVBvaW50WzFdIC0gcmVzaXplT3JpZ2luUG9pbnRbMV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gUG9pbnQuaXNIb3Jpem9udGFsKHJlc2l6ZU9yaWdpblBvaW50LCByZXNpemVIYW5kbGVQb2ludCwgMC4xKSB8fCBmYWxzZTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXQgPSBpc0hvcml6b250YWwgPyBQb2ludC5nZXRPZmZzZXRYKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA6IFBvaW50LmdldE9mZnNldFkoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgICAgICBsZXQgYmVuY2htYXJrT2Zmc2V0ID0gaXNIb3Jpem9udGFsID8gcmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSA6IHJlc2l6ZUhhbmRsZVBvaW50WzFdIC0gcmVzaXplT3JpZ2luUG9pbnRbMV07XG4gICAgICAgIGNvbnN0IHpvb20gPSBub3JtYWxpemVkT2Zmc2V0IC8gYmVuY2htYXJrT2Zmc2V0O1xuICAgICAgICBpZiAoaXNBc3BlY3RSYXRpbykge1xuICAgICAgICAgICAgeFpvb20gPSB6b29tO1xuICAgICAgICAgICAgeVpvb20gPSB6b29tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHhab29tID0gem9vbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgeVpvb20gPSB6b29tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHhab29tLCB5Wm9vbSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50ID0gKHA6IFBvaW50LCByZXNpemVPcmlnaW5Qb2ludDogUG9pbnQsIHhab29tOiBudW1iZXIsIHlab29tOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBvZmZzZXRYID0gKHBbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSkgKiB4Wm9vbTtcbiAgICBjb25zdCBvZmZzZXRZID0gKHBbMV0gLSByZXNpemVPcmlnaW5Qb2ludFsxXSkgKiB5Wm9vbTtcbiAgICByZXR1cm4gW3BbMF0gKyBvZmZzZXRYLCBwWzFdICsgb2Zmc2V0WV0gYXMgUG9pbnQ7XG59O1xuXG4vKipcbiAqIDEuIFJvdGF0ZSA5MMKwXG4gKiAyLiBTY2FsZSBiYXNlZCBvbiB0aGUgcm90YXRlZCBwb2ludHNcbiAqIDMuIFJldmVyc2Ugcm90YXRlIHRoZSBzY2FsZWQgcG9pbnRzIGJ5IDkwwrBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZVBvaW50c0J5T3RoZXJ3aXNlQXhpcyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwb2ludHM6IFBvaW50W10sXG4gICAgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50LFxuICAgIHhab29tOiBudW1iZXIsXG4gICAgeVpvb206IG51bWJlclxuKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCBjdXJyZW50UmVjdGFuZ2xlLCB7IHN0cm9rZTogJ2JsYWNrJyB9KTtcbiAgICBsZXQgcmVzdWx0UG9pbnRzID0gcG9pbnRzO1xuICAgIHJlc3VsdFBvaW50cyA9IHJvdGF0ZVBvaW50cyhyZXN1bHRQb2ludHMsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChjdXJyZW50UmVjdGFuZ2xlKSwgKDEgLyAyKSAqIE1hdGguUEkpO1xuICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCByZXN1bHRQb2ludHMsIHsgc3Ryb2tlOiAnYmx1ZScgfSk7XG4gICAgcmVzdWx0UG9pbnRzID0gcmVzdWx0UG9pbnRzLm1hcChwID0+IHtcbiAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIHJlc2l6ZU9yaWdpblBvaW50LCB4Wm9vbSwgeVpvb20pO1xuICAgIH0pO1xuICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCByZXN1bHRQb2ludHMpO1xuICAgIGNvbnN0IG5ld1JlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXN1bHRQb2ludHMpO1xuICAgIHJldHVybiByb3RhdGVQb2ludHMocmVzdWx0UG9pbnRzLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQobmV3UmVjdGFuZ2xlKSwgLSgxIC8gMikgKiBNYXRoLlBJKTtcbn07XG4iXX0=
|
|
@@ -73,12 +73,12 @@ export const withDraw = (board) => {
|
|
|
73
73
|
}
|
|
74
74
|
return isRectangleHit(element, selection);
|
|
75
75
|
};
|
|
76
|
-
board.isHit = (element, point) => {
|
|
77
|
-
const result = isHitDrawElement(board, element, point);
|
|
76
|
+
board.isHit = (element, point, isStrict) => {
|
|
77
|
+
const result = isHitDrawElement(board, element, point, isStrict);
|
|
78
78
|
if (result !== null) {
|
|
79
79
|
return result;
|
|
80
80
|
}
|
|
81
|
-
return isHit(element, point);
|
|
81
|
+
return isHit(element, point, isStrict);
|
|
82
82
|
};
|
|
83
83
|
board.getOneHitElement = elements => {
|
|
84
84
|
const isAllDrawElements = elements.every(item => PlaitDrawElement.isDrawElement(item));
|
|
@@ -141,4 +141,4 @@ export const withDraw = (board) => {
|
|
|
141
141
|
};
|
|
142
142
|
return withSwimlane(withTable(withDrawResize(withVectorLineCreateByDraw(withArrowLineAutoCompleteReaction(withArrowLineBoundReaction(withVectorLineResize(withArrowLineResize(withArrowLineTextMove(withArrowLineText(withDrawRotate(withArrowLineCreateByDraw(withArrowLineAutoComplete(withGeometryCreateByDrag(withGeometryCreateByDrawing(withDrawFragment(withDrawHotkey(board)))))))))))))))));
|
|
143
143
|
};
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4RCxlQUFlLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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LENBQ3RCLG9CQUFvQixDQUNoQixtQkFBbUIsQ0FDZixxQkFBcUIsQ0FDakIsaUJBQWlCLENBQ2IsY0FBYyxDQUNWLHlCQUF5QixDQUNyQix5QkFBeUIsQ0FDckIsd0JBQXdCLENBQ3BCLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3ZFLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgU2VsZWN0aW9uLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlDb21wb25lbnQgfSBmcm9tICcuLi9nZW9tZXRyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXJyb3dMaW5lQ29tcG9uZW50IH0gZnJvbSAnLi4vYXJyb3ctbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmVjdG9yTGluZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZlY3Rvci1saW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyB3aXRoRHJhd0hvdGtleSB9IGZyb20gJy4vd2l0aC1kcmF3LWhvdGtleSc7XG5pbXBvcnQgeyB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYXdpbmcsIHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhZyB9IGZyb20gJy4vd2l0aC1nZW9tZXRyeS1jcmVhdGUnO1xuaW1wb3J0IHsgd2l0aERyYXdGcmFnbWVudCB9IGZyb20gJy4vd2l0aC1kcmF3LWZyYWdtZW50JztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVDcmVhdGVCeURyYXcgfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1jcmVhdGUnO1xuaW1wb3J0IHsgd2l0aEFycm93TGluZVJlc2l6ZSB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQm91bmRSZWFjdGlvbiB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLWJvdW5kLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVUZXh0IH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtdGV4dCc7XG5pbXBvcnQgeyBJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVBdXRvQ29tcGxldGUgfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVUZXh0TW92ZSB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLXRleHQtbW92ZSc7XG5pbXBvcnQgeyB3aXRoRHJhd1Jlc2l6ZSB9IGZyb20gJy4vd2l0aC1kcmF3LXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRIaXREcmF3RWxlbWVudCwgaXNIaXREcmF3RWxlbWVudCwgaXNIaXRFbGVtZW50SW5zaWRlLCBpc1JlY3RhbmdsZUhpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvaGl0JztcbmltcG9ydCB7IGdldEFycm93TGluZVBvaW50cywgZ2V0QXJyb3dMaW5lVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL2Fycm93LWxpbmUvYXJyb3ctbGluZS1iYXNpYyc7XG5pbXBvcnQgeyB3aXRoRHJhd1JvdGF0ZSB9IGZyb20gJy4vd2l0aC1kcmF3LXJvdGF0ZSc7XG5pbXBvcnQgeyB3aXRoVGFibGUgfSBmcm9tICcuL3dpdGgtdGFibGUnO1xuaW1wb3J0IHsgd2l0aFN3aW1sYW5lIH0gZnJvbSAnLi93aXRoLXN3aW1sYW5lJztcbmltcG9ydCB7IHdpdGhWZWN0b3JMaW5lQ3JlYXRlQnlEcmF3IH0gZnJvbSAnLi93aXRoLXZlY3Rvci1saW5lLWNyZWF0ZSc7XG5pbXBvcnQgeyBnZXRWZWN0b3JMaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvdmVjdG9yLWxpbmUnO1xuaW1wb3J0IHsgd2l0aFZlY3RvckxpbmVSZXNpemUgfSBmcm9tICcuL3dpdGgtdmVjdG9yLWxpbmUtcmVzaXplJztcblxuZXhwb3J0IGNvbnN0IHdpdGhEcmF3ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBkcmF3RWxlbWVudCxcbiAgICAgICAgZ2V0UmVjdGFuZ2xlLFxuICAgICAgICBpc1JlY3RhbmdsZUhpdCxcbiAgICAgICAgaXNIaXQsXG4gICAgICAgIGlzSW5zaWRlUG9pbnQsXG4gICAgICAgIGlzTW92YWJsZSxcbiAgICAgICAgaXNBbGlnbixcbiAgICAgICAgZ2V0UmVsYXRlZEZyYWdtZW50LFxuICAgICAgICBnZXRPbmVIaXRFbGVtZW50XG4gICAgfSA9IGJvYXJkO1xuXG4gICAgYm9hcmQuZHJhd0VsZW1lbnQgPSAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVU1MKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gR2VvbWV0cnlDb21wb25lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gR2VvbWV0cnlDb21wb25lbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyb3dMaW5lQ29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNWZWN0b3JMaW5lKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBWZWN0b3JMaW5lQ29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRyYXdFbGVtZW50KGNvbnRleHQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nZXRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRBcnJvd0xpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbGluZVRleHRSZWN0YW5nbGVzID0gZWxlbWVudC50ZXh0cy5tYXAoKHRleHQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0QXJyb3dMaW5lVGV4dFJlY3RhbmdsZShib2FyZCwgZWxlbWVudCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWN0YW5nbGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVQb2ludHNSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoW2xpbmVQb2ludHNSZWN0YW5nbGUsIC4uLmxpbmVUZXh0UmVjdGFuZ2xlc10pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0VmVjdG9yTGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBsaW5lUG9pbnRzUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyEpO1xuICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRCb3VuZGluZ1JlY3RhbmdsZShbbGluZVBvaW50c1JlY3RhbmdsZV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzUmVjdGFuZ2xlSGl0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXQoZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNIaXQgPSAoZWxlbWVudCwgcG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdChlbGVtZW50LCBwb2ludCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdldE9uZUhpdEVsZW1lbnQgPSBlbGVtZW50cyA9PiB7XG4gICAgICAgIGNvbnN0IGlzQWxsRHJhd0VsZW1lbnRzID0gZWxlbWVudHMuZXZlcnkoaXRlbSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoaXRlbSkpO1xuICAgICAgICBpZiAoaXNBbGxEcmF3RWxlbWVudHMpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudHMgYXMgUGxhaXREcmF3RWxlbWVudFtdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0T25lSGl0RWxlbWVudChlbGVtZW50cyk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzSW5zaWRlUG9pbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNIaXRFbGVtZW50SW5zaWRlKGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSW5zaWRlUG9pbnQoZWxlbWVudCwgcG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc01vdmFibGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSAoYm91bmRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhc2VsZWN0ZWRFbGVtZW50cy5maW5kKHZhbHVlID0+IHZhbHVlLmlkID09PSBib3VuZElkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQuc291cmNlLmJvdW5kSWQgJiYgIWVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnNvdXJjZS5ib3VuZElkICYmIGlzU2VsZWN0ZWQoZWxlbWVudC5zb3VyY2UuYm91bmRJZCkgJiYgc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQgJiYgaXNTZWxlY3RlZChlbGVtZW50LnRhcmdldC5ib3VuZElkKSAmJiBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTW92YWJsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNBbGlnbiA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSB8fCBQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FsaWduKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nZXRSZWxhdGVkRnJhZ21lbnQgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCBvcmlnaW5EYXRhPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IG9yaWdpbkRhdGE/Lmxlbmd0aCA/IG9yaWdpbkRhdGEgOiBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgbGluZUVsZW1lbnRzID0gYm9hcmQuY2hpbGRyZW4uZmlsdGVyKGVsZW1lbnQgPT4gUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUxpbmVzID0gbGluZUVsZW1lbnRzLmZpbHRlcihsaW5lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHNlbGVjdGVkRWxlbWVudHMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGxpbmUuc291cmNlLmJvdW5kSWQpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2VsZWN0ZWRFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gbGluZS50YXJnZXQuYm91bmRJZCk7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhsaW5lKTtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UgJiYgdGFyZ2V0ICYmICFpc1NlbGVjdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdldFJlbGF0ZWRGcmFnbWVudChbLi4uZWxlbWVudHMsIC4uLmFjdGl2ZUxpbmVzXSwgb3JpZ2luRGF0YSk7XG4gICAgfTtcblxuICAgIHJldHVybiB3aXRoU3dpbWxhbmUoXG4gICAgICAgIHdpdGhUYWJsZShcbiAgICAgICAgICAgIHdpdGhEcmF3UmVzaXplKFxuICAgICAgICAgICAgICAgIHdpdGhWZWN0b3JMaW5lQ3JlYXRlQnlEcmF3KFxuICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lQm91bmRSZWFjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoVmVjdG9yTGluZVJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZVJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVUZXh0TW92ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lVGV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERyYXdSb3RhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lQ3JlYXRlQnlEcmF3KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVBdXRvQ29tcGxldGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhd2luZyh3aXRoRHJhd0ZyYWdtZW50KHdpdGhEcmF3SG90a2V5KGJvYXJkKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xufTtcbiJdfQ==
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4RCxlQUFlLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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QkFBMEIsQ0FDdEIsaUNBQWlDLENBQzdCLDBCQUEwQixDQUN0QixvQkFBb0IsQ0FDaEIsbUJBQW1CLENBQ2YscUJBQXFCLENBQ2pCLGlCQUFpQixDQUNiLGNBQWMsQ0FDVix5QkFBeUIsQ0FDckIseUJBQXlCLENBQ3JCLHdCQUF3QixDQUNwQiwyQkFBMkIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUN2RSxDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIFNlbGVjdGlvbiwgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvbWV0cnkuY29tcG9uZW50JztcbmltcG9ydCB7IEFycm93TGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2Fycm93LWxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFZlY3RvckxpbmVDb21wb25lbnQgfSBmcm9tICcuLi92ZWN0b3ItbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgd2l0aERyYXdIb3RrZXkgfSBmcm9tICcuL3dpdGgtZHJhdy1ob3RrZXknO1xuaW1wb3J0IHsgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmF3aW5nLCB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYWcgfSBmcm9tICcuL3dpdGgtZ2VvbWV0cnktY3JlYXRlJztcbmltcG9ydCB7IHdpdGhEcmF3RnJhZ21lbnQgfSBmcm9tICcuL3dpdGgtZHJhdy1mcmFnbWVudCc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQ3JlYXRlQnlEcmF3IH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtY3JlYXRlJztcbmltcG9ydCB7IHdpdGhBcnJvd0xpbmVSZXNpemUgfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1yZXNpemUnO1xuaW1wb3J0IHsgd2l0aEFycm93TGluZUJvdW5kUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS1ib3VuZC1yZWFjdGlvbic7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lVGV4dCB9IGZyb20gJy4vd2l0aC1hcnJvdy1saW5lLXRleHQnO1xuaW1wb3J0IHsgSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgd2l0aEFycm93TGluZUF1dG9Db21wbGV0ZVJlYWN0aW9uIH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtYXV0by1jb21wbGV0ZS1yZWFjdGlvbic7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lQXV0b0NvbXBsZXRlIH0gZnJvbSAnLi93aXRoLWFycm93LWxpbmUtYXV0by1jb21wbGV0ZSc7XG5pbXBvcnQgeyB3aXRoQXJyb3dMaW5lVGV4dE1vdmUgfSBmcm9tICcuL3dpdGgtYXJyb3ctbGluZS10ZXh0LW1vdmUnO1xuaW1wb3J0IHsgd2l0aERyYXdSZXNpemUgfSBmcm9tICcuL3dpdGgtZHJhdy1yZXNpemUnO1xuaW1wb3J0IHsgZ2V0SGl0RHJhd0VsZW1lbnQsIGlzSGl0RHJhd0VsZW1lbnQsIGlzSGl0RWxlbWVudEluc2lkZSwgaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2hpdCc7XG5pbXBvcnQgeyBnZXRBcnJvd0xpbmVQb2ludHMsIGdldEFycm93TGluZVRleHRSZWN0YW5nbGUgfSBmcm9tICcuLi91dGlscy9hcnJvdy1saW5lL2Fycm93LWxpbmUtYmFzaWMnO1xuaW1wb3J0IHsgd2l0aERyYXdSb3RhdGUgfSBmcm9tICcuL3dpdGgtZHJhdy1yb3RhdGUnO1xuaW1wb3J0IHsgd2l0aFRhYmxlIH0gZnJvbSAnLi93aXRoLXRhYmxlJztcbmltcG9ydCB7IHdpdGhTd2ltbGFuZSB9IGZyb20gJy4vd2l0aC1zd2ltbGFuZSc7XG5pbXBvcnQgeyB3aXRoVmVjdG9yTGluZUNyZWF0ZUJ5RHJhdyB9IGZyb20gJy4vd2l0aC12ZWN0b3ItbGluZS1jcmVhdGUnO1xuaW1wb3J0IHsgZ2V0VmVjdG9yTGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL3ZlY3Rvci1saW5lJztcbmltcG9ydCB7IHdpdGhWZWN0b3JMaW5lUmVzaXplIH0gZnJvbSAnLi93aXRoLXZlY3Rvci1saW5lLXJlc2l6ZSc7XG5cbmV4cG9ydCBjb25zdCB3aXRoRHJhdyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgZHJhd0VsZW1lbnQsXG4gICAgICAgIGdldFJlY3RhbmdsZSxcbiAgICAgICAgaXNSZWN0YW5nbGVIaXQsXG4gICAgICAgIGlzSGl0LFxuICAgICAgICBpc0luc2lkZVBvaW50LFxuICAgICAgICBpc01vdmFibGUsXG4gICAgICAgIGlzQWxpZ24sXG4gICAgICAgIGdldFJlbGF0ZWRGcmFnbWVudCxcbiAgICAgICAgZ2V0T25lSGl0RWxlbWVudFxuICAgIH0gPSBib2FyZDtcblxuICAgIGJvYXJkLmRyYXdFbGVtZW50ID0gKGNvbnRleHQ6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1VNTChjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEFycm93TGluZUNvbXBvbmVudDtcbiAgICAgICAgfSBlbHNlIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVjdG9yTGluZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVmVjdG9yTGluZUNvbXBvbmVudDtcbiAgICAgICAgfSBlbHNlIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEltYWdlQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkcmF3RWxlbWVudChjb250ZXh0KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVjdGFuZ2xlID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXJyb3dMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVUZXh0UmVjdGFuZ2xlcyA9IGVsZW1lbnQudGV4dHMubWFwKCh0ZXh0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldEFycm93TGluZVRleHRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBsaW5lUG9pbnRzUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEJvdW5kaW5nUmVjdGFuZ2xlKFtsaW5lUG9pbnRzUmVjdGFuZ2xlLCAuLi5saW5lVGV4dFJlY3RhbmdsZXNdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1ZlY3RvckxpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldFZlY3RvckxpbmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbGluZVBvaW50c1JlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMhKTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoW2xpbmVQb2ludHNSZWN0YW5nbGVdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc1JlY3RhbmdsZUhpdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHNlbGVjdGlvbjogU2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUmVjdGFuZ2xlSGl0RHJhd0VsZW1lbnQoYm9hcmQsIGVsZW1lbnQsIHNlbGVjdGlvbik7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzUmVjdGFuZ2xlSGl0KGVsZW1lbnQsIHNlbGVjdGlvbik7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzSGl0ID0gKGVsZW1lbnQsIHBvaW50LCBpc1N0cmljdD86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0KTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQoZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0T25lSGl0RWxlbWVudCA9IGVsZW1lbnRzID0+IHtcbiAgICAgICAgY29uc3QgaXNBbGxEcmF3RWxlbWVudHMgPSBlbGVtZW50cy5ldmVyeShpdGVtID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNEcmF3RWxlbWVudChpdGVtKSk7XG4gICAgICAgIGlmIChpc0FsbERyYXdFbGVtZW50cykge1xuICAgICAgICAgICAgcmV0dXJuIGdldEhpdERyYXdFbGVtZW50KGJvYXJkLCBlbGVtZW50cyBhcyBQbGFpdERyYXdFbGVtZW50W10pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRPbmVIaXRFbGVtZW50KGVsZW1lbnRzKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNJbnNpZGVQb2ludCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpc0hpdEVsZW1lbnRJbnNpZGUoYm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNJbnNpZGVQb2ludChlbGVtZW50LCBwb2ludCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzTW92YWJsZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNWZWN0b3JMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IChib3VuZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFzZWxlY3RlZEVsZW1lbnRzLmZpbmQodmFsdWUgPT4gdmFsdWUuaWQgPT09IGJvdW5kSWQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICghZWxlbWVudC5zb3VyY2UuYm91bmRJZCAmJiAhZWxlbWVudC50YXJnZXQuYm91bmRJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuc291cmNlLmJvdW5kSWQgJiYgaXNTZWxlY3RlZChlbGVtZW50LnNvdXJjZS5ib3VuZElkKSAmJiBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC50YXJnZXQuYm91bmRJZCAmJiBpc1NlbGVjdGVkKGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNNb3ZhYmxlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc0FsaWduID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpIHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQWxpZ24oZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdldFJlbGF0ZWRGcmFnbWVudCA9IChlbGVtZW50czogUGxhaXRFbGVtZW50W10sIG9yaWdpbkRhdGE/OiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gb3JpZ2luRGF0YT8ubGVuZ3RoID8gb3JpZ2luRGF0YSA6IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBsaW5lRWxlbWVudHMgPSBib2FyZC5jaGlsZHJlbi5maWx0ZXIoZWxlbWVudCA9PiBQbGFpdERyYXdFbGVtZW50LmlzQXJyb3dMaW5lKGVsZW1lbnQpKTtcbiAgICAgICAgY29uc3QgYWN0aXZlTGluZXMgPSBsaW5lRWxlbWVudHMuZmlsdGVyKGxpbmUgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gc2VsZWN0ZWRFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gbGluZS5zb3VyY2UuYm91bmRJZCk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzZWxlY3RlZEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmlkID09PSBsaW5lLnRhcmdldC5ib3VuZElkKTtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpO1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZSAmJiB0YXJnZXQgJiYgIWlzU2VsZWN0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZ2V0UmVsYXRlZEZyYWdtZW50KFsuLi5lbGVtZW50cywgLi4uYWN0aXZlTGluZXNdLCBvcmlnaW5EYXRhKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHdpdGhTd2ltbGFuZShcbiAgICAgICAgd2l0aFRhYmxlKFxuICAgICAgICAgICAgd2l0aERyYXdSZXNpemUoXG4gICAgICAgICAgICAgICAgd2l0aFZlY3RvckxpbmVDcmVhdGVCeURyYXcoXG4gICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVBdXRvQ29tcGxldGVSZWFjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVCb3VuZFJlYWN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhWZWN0b3JMaW5lUmVzaXplKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQXJyb3dMaW5lUmVzaXplKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZVRleHRNb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVUZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRHJhd1JvdGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhBcnJvd0xpbmVDcmVhdGVCeURyYXcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEFycm93TGluZUF1dG9Db21wbGV0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmFnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmF3aW5nKHdpdGhEcmF3RnJhZ21lbnQod2l0aERyYXdIb3RrZXkoYm9hcmQpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG59O1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TableComponent } from '../table.component';
|
|
2
|
-
import { PlaitBoard, RectangleClient,
|
|
2
|
+
import { PlaitBoard, RectangleClient, isLineHitRectangle, toViewBoxPoint, toHostPoint, getHitElementByPoint, getSelectedElements, PlaitPointerType, isDragging, isMainPointer } from '@plait/core';
|
|
3
3
|
import { editCell, getHitCell } from '../utils/table';
|
|
4
4
|
import { withTableResize } from './with-table-resize';
|
|
5
5
|
import { isVirtualKey, isDelete, isSpaceHotkey } from '@plait/common';
|
|
@@ -14,12 +14,12 @@ export const withTable = (board) => {
|
|
|
14
14
|
}
|
|
15
15
|
return drawElement(context);
|
|
16
16
|
};
|
|
17
|
-
tableBoard.isHit = (element, point) => {
|
|
17
|
+
tableBoard.isHit = (element, point, isStrict) => {
|
|
18
18
|
if (PlaitDrawElement.isElementByTable(element)) {
|
|
19
19
|
const client = RectangleClient.getRectangleByPoints(element.points);
|
|
20
20
|
return RectangleClient.isPointInRectangle(client, point);
|
|
21
21
|
}
|
|
22
|
-
return isHit(element, point);
|
|
22
|
+
return isHit(element, point, isStrict);
|
|
23
23
|
};
|
|
24
24
|
tableBoard.getRectangle = (element) => {
|
|
25
25
|
if (PlaitDrawElement.isElementByTable(element)) {
|
|
@@ -36,7 +36,7 @@ export const withTable = (board) => {
|
|
|
36
36
|
tableBoard.isRectangleHit = (element, selection) => {
|
|
37
37
|
if (PlaitDrawElement.isElementByTable(element)) {
|
|
38
38
|
const rangeRectangle = RectangleClient.getRectangleByPoints([selection.anchor, selection.focus]);
|
|
39
|
-
return
|
|
39
|
+
return isLineHitRectangle(element.points, rangeRectangle);
|
|
40
40
|
}
|
|
41
41
|
return isRectangleHit(element, selection);
|
|
42
42
|
};
|
|
@@ -102,4 +102,4 @@ export const withTable = (board) => {
|
|
|
102
102
|
};
|
|
103
103
|
return withTableResize(tableBoard);
|
|
104
104
|
};
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBRWYsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGFBQWEsRUFDaEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFN0csTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHLEtBQXdCLENBQUM7SUFFNUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFakgsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtRQUM1RCxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sY0FBYyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2xDLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQztJQUVGLFVBQVUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7UUFDaEQsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDO0lBRUYsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtRQUM3QyxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztJQUVGLFVBQVUsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxPQUFxQixFQUFFLFNBQW9CLEVBQUUsRUFBRTtRQUN4RSxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRyxPQUFPLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQ0ksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM3QixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7WUFDMUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ3BCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNoQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDckIsaUJBQWlCLEVBQ25CLENBQUM7WUFDQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxJQUFJLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzVELENBQUM7Z0JBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDUCxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN0QixPQUFPO2dCQUNYLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO1FBQ3hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxJQUFJLFVBQVUsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hELFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3pCLE9BQU87Z0JBQ1gsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUVGLFVBQVUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDM0MsTUFBTSxxQkFBcUIsR0FDdkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUgsTUFBTSxNQUFNLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDekYsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksbUJBQW1CLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRixNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEQsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0wsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsT0FBdUIsRUFBRSxFQUFFO1FBQ2hELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUVGLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWl0QmFzZVRhYmxlLCBQbGFpdFRhYmxlQm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU2VsZWN0aW9uLFxuICAgIGlzUG9seWxpbmVIaXRSZWN0YW5nbGUsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIGlzRHJhZ2dpbmcsXG4gICAgaXNNYWluUG9pbnRlclxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBlZGl0Q2VsbCwgZ2V0SGl0Q2VsbCB9IGZyb20gJy4uL3V0aWxzL3RhYmxlJztcbmltcG9ydCB7IHdpdGhUYWJsZVJlc2l6ZSB9IGZyb20gJy4vd2l0aC10YWJsZS1yZXNpemUnO1xuaW1wb3J0IHsgaXNWaXJ0dWFsS2V5LCBpc0RlbGV0ZSwgaXNTcGFjZUhvdGtleSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRDZWxscywgZ2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnRzLCBpc1NpbmdsZVNlbGVjdFRhYmxlLCBzZXRTZWxlY3RlZENlbGxzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aFRhYmxlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgdGFibGVCb2FyZCA9IGJvYXJkIGFzIFBsYWl0VGFibGVCb2FyZDtcblxuICAgIGNvbnN0IHsgZHJhd0VsZW1lbnQsIGdldFJlY3RhbmdsZSwgaXNSZWN0YW5nbGVIaXQsIGlzSGl0LCBpc01vdmFibGUsIGRibENsaWNrLCBrZXlEb3duLCBwb2ludGVyVXAgfSA9IHRhYmxlQm9hcmQ7XG5cbiAgICB0YWJsZUJvYXJkLmRyYXdFbGVtZW50ID0gKGNvbnRleHQ6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gVGFibGVDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRyYXdFbGVtZW50KGNvbnRleHQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmlzSGl0ID0gKGVsZW1lbnQsIHBvaW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShjbGllbnQsIHBvaW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQoZWxlbWVudCwgcG9pbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmdldFJlY3RhbmdsZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5pc01vdmFibGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzTW92YWJsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5pc1JlY3RhbmdsZUhpdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHNlbGVjdGlvbjogU2VsZWN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uZm9jdXNdKTtcbiAgICAgICAgICAgIHJldHVybiBpc1BvbHlsaW5lSGl0UmVjdGFuZ2xlKGVsZW1lbnQucG9pbnRzLCByYW5nZVJlY3RhbmdsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzUmVjdGFuZ2xlSGl0KGVsZW1lbnQsIHNlbGVjdGlvbik7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQua2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGlzU2luZ2xlU2VsZWN0aW9uID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDE7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBzZWxlY3RlZEVsZW1lbnRzWzBdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJlxuICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRhYmxlQm9hcmQpICYmXG4gICAgICAgICAgICAhaXNWaXJ0dWFsS2V5KGV2ZW50KSAmJlxuICAgICAgICAgICAgIWlzRGVsZXRlKGV2ZW50KSAmJlxuICAgICAgICAgICAgIWlzU3BhY2VIb3RrZXkoZXZlbnQpICYmXG4gICAgICAgICAgICBpc1NpbmdsZVNlbGVjdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRTZWxlY3RlZENlbGxzKHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGxldCBjZWxsID0gdGFyZ2V0RWxlbWVudC5jZWxscy5maW5kKGl0ZW0gPT4gaXRlbS50ZXh0ICYmIGl0ZW0udGV4dEhlaWdodCk7XG4gICAgICAgICAgICAgICAgaWYgKGNlbGxzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2VsbCA9IGNlbGxzLmZpbmQoaXRlbSA9PiBpdGVtLnRleHQgJiYgaXRlbS50ZXh0SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdENlbGwoYm9hcmQsIGNlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmRibENsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGl0Q2VsbCA9IGdldEhpdENlbGwodGFibGVCb2FyZCwgaGl0RWxlbWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmIChoaXRDZWxsICYmIGhpdENlbGwudGV4dCAmJiBoaXRDZWxsLnRleHRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdENlbGwoYm9hcmQsIGhpdENlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRibENsaWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc1NldFNlbGVjdGlvblBvaW50ZXIgPVxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIodGFibGVCb2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKHRhYmxlQm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuaGFuZCk7XG4gICAgICAgIGNvbnN0IGlzU2tpcCA9ICFpc01haW5Qb2ludGVyKGV2ZW50KSB8fCBpc0RyYWdnaW5nKHRhYmxlQm9hcmQpIHx8ICFpc1NldFNlbGVjdGlvblBvaW50ZXI7XG4gICAgICAgIGlmIChpc1NraXApIHtcbiAgICAgICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2luZ2xlU2VsZWN0VGFibGUodGFibGVCb2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQodGFibGVCb2FyZCwgdG9Ib3N0UG9pbnQodGFibGVCb2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGdldFNlbGVjdGVkVGFibGVFbGVtZW50cyh0YWJsZUJvYXJkKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGhpdENlbGwgPSBnZXRIaXRDZWxsKHRhYmxlQm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChoaXRDZWxsICYmIGhpdENlbGwudGV4dCAmJiBoaXRDZWxsLnRleHRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENlbGxzKGVsZW1lbnQsIFtoaXRDZWxsXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5idWlsZFRhYmxlID0gKGVsZW1lbnQ6IFBsYWl0QmFzZVRhYmxlKSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH07XG5cbiAgICByZXR1cm4gd2l0aFRhYmxlUmVzaXplKHRhYmxlQm9hcmQpO1xufTtcbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGFBQWEsRUFDaEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFN0csTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHLEtBQXdCLENBQUM7SUFFNUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFakgsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtRQUM1RCxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENB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QUMsVUFBVSxHQUFHLENBQUMsT0FBdUIsRUFBRSxFQUFFO1FBQ2hELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUVGLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWl0QmFzZVRhYmxlLCBQbGFpdFRhYmxlQm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU2VsZWN0aW9uLFxuICAgIGlzTGluZUhpdFJlY3RhbmdsZSxcbiAgICB0b1ZpZXdCb3hQb2ludCxcbiAgICB0b0hvc3RQb2ludCxcbiAgICBnZXRIaXRFbGVtZW50QnlQb2ludCxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgaXNEcmFnZ2luZyxcbiAgICBpc01haW5Qb2ludGVyXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGVkaXRDZWxsLCBnZXRIaXRDZWxsIH0gZnJvbSAnLi4vdXRpbHMvdGFibGUnO1xuaW1wb3J0IHsgd2l0aFRhYmxlUmVzaXplIH0gZnJvbSAnLi93aXRoLXRhYmxlLXJlc2l6ZSc7XG5pbXBvcnQgeyBpc1ZpcnR1YWxLZXksIGlzRGVsZXRlLCBpc1NwYWNlSG90a2V5IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZENlbGxzLCBnZXRTZWxlY3RlZFRhYmxlRWxlbWVudHMsIGlzU2luZ2xlU2VsZWN0VGFibGUsIHNldFNlbGVjdGVkQ2VsbHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoVGFibGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB0YWJsZUJvYXJkID0gYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkO1xuXG4gICAgY29uc3QgeyBkcmF3RWxlbWVudCwgZ2V0UmVjdGFuZ2xlLCBpc1JlY3RhbmdsZUhpdCwgaXNIaXQsIGlzTW92YWJsZSwgZGJsQ2xpY2ssIGtleURvd24sIHBvaW50ZXJVcCB9ID0gdGFibGVCb2FyZDtcblxuICAgIHRhYmxlQm9hcmQuZHJhd0VsZW1lbnQgPSAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUYWJsZUNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd0VsZW1lbnQoY29udGV4dCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNIaXQgPSAoZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0PzogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUoY2xpZW50LCBwb2ludCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSGl0KGVsZW1lbnQsIHBvaW50LCBpc1N0cmljdCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuZ2V0UmVjdGFuZ2xlID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmlzTW92YWJsZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNNb3ZhYmxlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmlzUmVjdGFuZ2xlSGl0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3NlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5mb2N1c10pO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGluZUhpdFJlY3RhbmdsZShlbGVtZW50LnBvaW50cywgcmFuZ2VSZWN0YW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1JlY3RhbmdsZUhpdChlbGVtZW50LCBzZWxlY3Rpb24pO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBpc1NpbmdsZVNlbGVjdGlvbiA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgJiZcbiAgICAgICAgICAgICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0YWJsZUJvYXJkKSAmJlxuICAgICAgICAgICAgIWlzVmlydHVhbEtleShldmVudCkgJiZcbiAgICAgICAgICAgICFpc0RlbGV0ZShldmVudCkgJiZcbiAgICAgICAgICAgICFpc1NwYWNlSG90a2V5KGV2ZW50KSAmJlxuICAgICAgICAgICAgaXNTaW5nbGVTZWxlY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZSh0YXJnZXRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgY2VsbCA9IHRhcmdldEVsZW1lbnQuY2VsbHMuZmluZChpdGVtID0+IGl0ZW0udGV4dCAmJiBpdGVtLnRleHRIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGlmIChjZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNlbGwgPSBjZWxscy5maW5kKGl0ZW0gPT4gaXRlbS50ZXh0ICYmIGl0ZW0udGV4dEhlaWdodCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRDZWxsKGJvYXJkLCBjZWxsKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBrZXlEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5kYmxDbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0RWxlbWVudEJ5UG9pbnQoYm9hcmQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChoaXRFbGVtZW50ICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNFbGVtZW50QnlUYWJsZShoaXRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpdENlbGwgPSBnZXRIaXRDZWxsKHRhYmxlQm9hcmQsIGhpdEVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgICAgICBpZiAoaGl0Q2VsbCAmJiBoaXRDZWxsLnRleHQgJiYgaGl0Q2VsbC50ZXh0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRDZWxsKGJvYXJkLCBoaXRDZWxsKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkYmxDbGljayhldmVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNTZXRTZWxlY3Rpb25Qb2ludGVyID1cbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaXNQb2ludGVyKHRhYmxlQm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSB8fCBQbGFpdEJvYXJkLmlzUG9pbnRlcih0YWJsZUJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpO1xuICAgICAgICBjb25zdCBpc1NraXAgPSAhaXNNYWluUG9pbnRlcihldmVudCkgfHwgaXNEcmFnZ2luZyh0YWJsZUJvYXJkKSB8fCAhaXNTZXRTZWxlY3Rpb25Qb2ludGVyO1xuICAgICAgICBpZiAoaXNTa2lwKSB7XG4gICAgICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NpbmdsZVNlbGVjdFRhYmxlKHRhYmxlQm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KHRhYmxlQm9hcmQsIHRvSG9zdFBvaW50KHRhYmxlQm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRTZWxlY3RlZFRhYmxlRWxlbWVudHModGFibGVCb2FyZClbMF07XG4gICAgICAgICAgICBjb25zdCBoaXRDZWxsID0gZ2V0SGl0Q2VsbCh0YWJsZUJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgICAgICAgICBpZiAoaGl0Q2VsbCAmJiBoaXRDZWxsLnRleHQgJiYgaGl0Q2VsbC50ZXh0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDZWxscyhlbGVtZW50LCBbaGl0Q2VsbF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuYnVpbGRUYWJsZSA9IChlbGVtZW50OiBQbGFpdEJhc2VUYWJsZSkgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHdpdGhUYWJsZVJlc2l6ZSh0YWJsZUJvYXJkKTtcbn07XG4iXX0=
|