@plait/core 0.55.1 β 0.56.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/core/element/element-ref.d.ts +5 -0
- package/core/element/plugin-element.d.ts +9 -6
- package/esm2022/board/board.component.mjs +10 -7
- package/esm2022/core/element/element-ref.mjs +2 -0
- package/esm2022/core/element/plugin-element.mjs +16 -7
- package/esm2022/interfaces/board.mjs +1 -1
- package/esm2022/interfaces/element.mjs +5 -2
- package/esm2022/plugins/create-board.mjs +3 -3
- package/esm2022/plugins/with-hotkey.mjs +2 -2
- package/esm2022/plugins/with-moving.mjs +88 -10
- package/esm2022/plugins/with-related-fragment.mjs +20 -13
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/utils/angle.mjs +24 -1
- package/esm2022/utils/clipboard/types.mjs +8 -1
- package/esm2022/utils/dom/common.mjs +1 -21
- package/esm2022/utils/fragment.mjs +9 -8
- package/esm2022/utils/group.mjs +19 -19
- package/esm2022/utils/math.mjs +36 -1
- package/esm2022/utils/selected-element.mjs +3 -2
- package/esm2022/utils/selection.mjs +2 -3
- package/esm2022/utils/weak-maps.mjs +2 -1
- package/fesm2022/plait-core.mjs +221 -76
- package/fesm2022/plait-core.mjs.map +1 -1
- package/interfaces/board.d.ts +3 -3
- package/interfaces/element.d.ts +6 -4
- package/package.json +1 -1
- package/plugins/with-moving.d.ts +3 -1
- package/public-api.d.ts +1 -0
- package/utils/angle.d.ts +2 -0
- package/utils/clipboard/types.d.ts +7 -0
- package/utils/dom/common.d.ts +1 -2
- package/utils/fragment.d.ts +4 -3
- package/utils/group.d.ts +5 -5
- package/utils/math.d.ts +1 -0
- package/utils/weak-maps.d.ts +2 -0
package/esm2022/utils/math.mjs
CHANGED
|
@@ -87,6 +87,41 @@ export function getNearestPointBetweenPointAndSegments(point, points, isClose =
|
|
|
87
87
|
}
|
|
88
88
|
return result;
|
|
89
89
|
}
|
|
90
|
+
export function getNearestPointBetweenPointAndEllipse(point, center, rx, ry, rotation = 0) {
|
|
91
|
+
const rectangleClient = {
|
|
92
|
+
x: center[0] - rx,
|
|
93
|
+
y: center[1] - ry,
|
|
94
|
+
height: ry * 2,
|
|
95
|
+
width: rx * 2
|
|
96
|
+
};
|
|
97
|
+
// https://stackoverflow.com/a/46007540/232122
|
|
98
|
+
const px = Math.abs(point[0] - rectangleClient.x - rectangleClient.width / 2);
|
|
99
|
+
const py = Math.abs(point[1] - rectangleClient.y - rectangleClient.height / 2);
|
|
100
|
+
let tx = 0.707;
|
|
101
|
+
let ty = 0.707;
|
|
102
|
+
const a = Math.abs(rectangleClient.width) / 2;
|
|
103
|
+
const b = Math.abs(rectangleClient.height) / 2;
|
|
104
|
+
[0, 1, 2, 3].forEach(x => {
|
|
105
|
+
const xx = a * tx;
|
|
106
|
+
const yy = b * ty;
|
|
107
|
+
const ex = ((a * a - b * b) * tx ** 3) / a;
|
|
108
|
+
const ey = ((b * b - a * a) * ty ** 3) / b;
|
|
109
|
+
const rx = xx - ex;
|
|
110
|
+
const ry = yy - ey;
|
|
111
|
+
const qx = px - ex;
|
|
112
|
+
const qy = py - ey;
|
|
113
|
+
const r = Math.hypot(ry, rx);
|
|
114
|
+
const q = Math.hypot(qy, qx);
|
|
115
|
+
tx = Math.min(1, Math.max(0, ((qx * r) / q + ex) / a));
|
|
116
|
+
ty = Math.min(1, Math.max(0, ((qy * r) / q + ey) / b));
|
|
117
|
+
const t = Math.hypot(ty, tx);
|
|
118
|
+
tx /= t;
|
|
119
|
+
ty /= t;
|
|
120
|
+
});
|
|
121
|
+
const signX = point[0] > center[0] ? 1 : -1;
|
|
122
|
+
const signY = point[1] > center[1] ? 1 : -1;
|
|
123
|
+
return [center[0] + a * tx * signX, center[1] + b * ty * signY];
|
|
124
|
+
}
|
|
90
125
|
export function rotate(x1, y1, x2, y2, angle) {
|
|
91
126
|
// πβ²π₯=(ππ₯βππ₯)cosπβ(ππ¦βππ¦)sinπ+ππ₯
|
|
92
127
|
// πβ²π¦=(ππ₯βππ₯)sinπ+(ππ¦βππ¦)cosπ+ππ¦.
|
|
@@ -313,4 +348,4 @@ export function getCrossingPointsBetweenEllipseAndSegment(startPoint, endPoint,
|
|
|
313
348
|
// Solve for points.
|
|
314
349
|
.map(t => [startPoint[0] + (endPoint[0] - startPoint[0]) * t + cx, startPoint[1] + (endPoint[1] - startPoint[1]) * t + cy]));
|
|
315
350
|
}
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsOEJBQThCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQy9HLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xCLDJCQUEyQjtRQUMzQixLQUFLLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ1gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDWixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENBQUM7U0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENB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QUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxDQUFRLEVBQUUsQ0FBUSxFQUFXLEVBQUU7SUFDN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFTLEVBQUUsRUFBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0UsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0MsT0FBTyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFlLEVBQUUsU0FBMEIsRUFBRSxVQUFtQixJQUFJLEVBQUUsRUFBRTtJQUMzRyxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN4QyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUNQLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDMUYsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsTUFBZSxFQUFFLEVBQUU7SUFDOUQsaUNBQWlDO0lBQ2pDLDREQUE0RDtJQUU1RCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ2QsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDakIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEIsSUFBSSxTQUFTLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hGLElBQUksU0FBUztZQUFFLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsTUFBYSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQy9GLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQ2pGLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFFakYsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsU0FBMEIsRUFBRSxNQUFjLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQzNHLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUN4RCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDeEgsTUFBTSxhQUFhLEdBQ2YsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbEYsTUFBTSxnQkFBZ0IsR0FDbEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDM0YsTUFBTSxjQUFjLEdBQ2hCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU07UUFDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFGLE1BQU0saUJBQWlCLEdBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU07UUFDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU07UUFDbkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ25HLE1BQU0sVUFBVSxHQUFHLGFBQWEsSUFBSSxnQkFBZ0IsSUFBSSxjQUFjLElBQUksaUJBQWlCLENBQUM7SUFFNUYsT0FBTyxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFVBQVMsTUFBZTtJQUNyRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDbEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25CLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXpDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxD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LElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0YsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkIsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFdkIsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVsQixzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLEdBQ0QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO1FBQ3pFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0SSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRWxHLHFGQUFxRjtJQUNyRixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFM0IsOEJBQThCO0lBQzlCLElBQUksWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckIscUJBQXFCO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7U0FBTSxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELE9BQU8sQ0FDSCxPQUFPO1FBQ0gsaURBQWlEO1NBQ2hELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakQsb0JBQW9CO1NBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUNsSSxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjg1MzkyNi8yMzIxMjJcbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQoeDogbnVtYmVyLCB5OiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpIHtcbiAgICBjb25zdCBBID0geCAtIHgxO1xuICAgIGNvbnN0IEIgPSB5IC0geTE7XG4gICAgY29uc3QgQyA9IHgyIC0geDE7XG4gICAgY29uc3QgRCA9IHkyIC0geTE7XG5cbiAgICBjb25zdCBkb3QgPSBBICogQyArIEIgKiBEO1xuICAgIGNvbnN0IGxlblNxdWFyZSA9IEMgKiBDICsgRCAqIEQ7XG4gICAgbGV0IHBhcmFtID0gLTE7XG4gICAgaWYgKGxlblNxdWFyZSAhPT0gMCkge1xuICAgICAgICAvLyBpbiBjYXNlIG9mIDAgbGVuZ3RoIGxpbmVcbiAgICAgICAgcGFyYW0gPSBkb3QgLyBsZW5TcXVhcmU7XG4gICAgfVxuXG4gICAgbGV0IHh4LCB5eTtcbiAgICBpZiAocGFyYW0gPCAwKSB7XG4gICAgICAgIHh4ID0geDE7XG4gICAgICAgIHl5ID0geTE7XG4gICAgfSBlbHNlIGlmIChwYXJhbSA+IDEpIHtcbiAgICAgICAgeHggPSB4MjtcbiAgICAgICAgeXkgPSB5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB4eCA9IHgxICsgcGFyYW0gKiBDO1xuICAgICAgICB5eSA9IHkxICsgcGFyYW0gKiBEO1xuICAgIH1cblxuICAgIGNvbnN0IGR4ID0geCAtIHh4O1xuICAgIGNvbnN0IGR5ID0geSAtIHl5O1xuICAgIHJldHVybiBNYXRoLmh5cG90KGR4LCBkeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50OiBQb2ludCwgbGluZVBvaW50czogW1BvaW50LCBQb2ludF0pIHtcbiAgICBjb25zdCB4ID0gcG9pbnRbMF0sXG4gICAgICAgIHkgPSBwb2ludFsxXSxcbiAgICAgICAgeDEgPSBsaW5lUG9pbnRzWzBdWzBdLFxuICAgICAgICB5MSA9IGxpbmVQb2ludHNbMF1bMV0sXG4gICAgICAgIHgyID0gbGluZVBvaW50c1sxXVswXSxcbiAgICAgICAgeTIgPSBsaW5lUG9pbnRzWzFdWzFdO1xuICAgIGNvbnN0IEEgPSB4IC0geDE7XG4gICAgY29uc3QgQiA9IHkgLSB5MTtcbiAgICBjb25zdCBDID0geDIgLSB4MTtcbiAgICBjb25zdCBEID0geTIgLSB5MTtcblxuICAgIGNvbnN0IGRvdCA9IEEgKiBDICsgQiAqIEQ7XG4gICAgY29uc3QgbGVuU3F1YXJlID0gQyAqIEMgKyBEICogRDtcbiAgICBsZXQgcGFyYW0gPSAtMTtcbiAgICBpZiAobGVuU3F1YXJlICE9PSAwKSB7XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgMCBsZW5ndGggbGluZVxuICAgICAgICBwYXJhbSA9IGRvdCAvIGxlblNxdWFyZTtcbiAgICB9XG5cbiAgICBsZXQgeHgsIHl5O1xuICAgIGlmIChwYXJhbSA8IDApIHtcbiAgICAgICAgeHggPSB4MTtcbiAgICAgICAgeXkgPSB5MTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtID4gMSkge1xuICAgICAgICB4eCA9IHgyO1xuICAgICAgICB5eSA9IHkyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHh4ID0geDEgKyBwYXJhbSAqIEM7XG4gICAgICAgIHl5ID0geTEgKyBwYXJhbSAqIEQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIFt4eCwgeXldIGFzIFBvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludHM6IFBvaW50W10sIHBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgbGV0IGRpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW4gLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgcCA9IHBvaW50c1tpXTtcbiAgICAgICAgY29uc3QgcDIgPSBwb2ludHNbaSArIDFdO1xuICAgICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnRbMF0sIHBvaW50WzFdLCBwWzBdLCBwWzFdLCBwMlswXSwgcDJbMV0pO1xuICAgICAgICBpZiAoY3VycmVudERpc3RhbmNlIDwgZGlzdGFuY2UpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gY3VycmVudERpc3RhbmNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaXN0YW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50OiBQb2ludCwgcG9pbnRzOiBQb2ludFtdLCBpc0Nsb3NlOiBCb29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgbGV0IGRpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgbGV0IHJlc3VsdDogUG9pbnQgPSBwb2ludDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgcCA9IHBvaW50c1tpXTtcbiAgICAgICAgaWYgKGkgPT09IGxlbiAtIDEgJiYgIWlzQ2xvc2UpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBwMiA9IGkgPT09IGxlbiAtIDEgPyBwb2ludHNbMF0gOiBwb2ludHNbaSArIDFdO1xuICAgICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnRbMF0sIHBvaW50WzFdLCBwWzBdLCBwWzFdLCBwMlswXSwgcDJbMV0pO1xuICAgICAgICBpZiAoY3VycmVudERpc3RhbmNlIDwgZGlzdGFuY2UpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gY3VycmVudERpc3RhbmNlO1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludCwgW3AsIHAyXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZSh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBhbmdsZTogbnVtYmVyKSB7XG4gICAgLy8g8J2RjuKAsvCdkaU9KPCdkY7wnZGl4oiS8J2RkPCdkaUpY29z8J2cg+KIkijwnZGO8J2RpuKIkvCdkZDwnZGmKXNpbvCdnIMr8J2RkPCdkaVcbiAgICAvLyDwnZGO4oCy8J2Rpj0o8J2RjvCdkaXiiJLwnZGQ8J2RpSlzaW7wnZyDKyjwnZGO8J2RpuKIkvCdkZDwnZGmKWNvc/CdnIMr8J2RkPCdkaYuXG4gICAgLy8gaHR0cHM6Ly9tYXRoLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8yMjA0NTIwL2hvdy1kby1pLXJvdGF0ZS1hLWxpbmUtc2VnbWVudC1pbi1hLXNwZWNpZmljLXBvaW50LW9uLXRoZS1saW5lXG4gICAgcmV0dXJuIFsoeDEgLSB4MikgKiBNYXRoLmNvcyhhbmdsZSkgLSAoeTEgLSB5MikgKiBNYXRoLnNpbihhbmdsZSkgKyB4MiwgKHgxIC0geDIpICogTWF0aC5zaW4oYW5nbGUpICsgKHkxIC0geTIpICogTWF0aC5jb3MoYW5nbGUpICsgeTJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgY29uc3QgZHggPSB4MSAtIHgyO1xuICAgIGNvbnN0IGR5ID0geTEgLSB5MjtcbiAgICByZXR1cm4gTWF0aC5oeXBvdChkeCwgZHkpO1xufVxuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MjU0ODM4L2NhbGN1bGF0aW5nLWRpc3RhbmNlLWJldHdlZW4tYS1wb2ludC1hbmQtYS1yZWN0YW5ndWxhci1ib3gtbmVhcmVzdC1wb2ludFxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKHg6IG51bWJlciwgeTogbnVtYmVyLCByZWN0OiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICB2YXIgZHggPSBNYXRoLm1heChyZWN0LnggLSB4LCAwLCB4IC0gKHJlY3QueCArIHJlY3Qud2lkdGgpKTtcbiAgICB2YXIgZHkgPSBNYXRoLm1heChyZWN0LnkgLSB5LCAwLCB5IC0gKHJlY3QueSArIHJlY3QuaGVpZ2h0KSk7XG4gICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG59XG5cbmV4cG9ydCBjb25zdCBpc0xpbmVIaXRMaW5lID0gKGE6IFBvaW50LCBiOiBQb2ludCwgYzogUG9pbnQsIGQ6IFBvaW50KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgY3Jvc3NQcm9kdWN0ID0gKHYxOiBQb2ludCwgdjI6IFBvaW50KSA9PiB2MVswXSAqIHYyWzFdIC0gdjFbMV0gKiB2MlswXTtcblxuICAgIGNvbnN0IGFiOiBQb2ludCA9IFtiWzBdIC0gYVswXSwgYlsxXSAtIGFbMV1dO1xuICAgIGNvbnN0IGFjOiBQb2ludCA9IFtjWzBdIC0gYVswXSwgY1sxXSAtIGFbMV1dO1xuICAgIGNvbnN0IGFkOiBQb2ludCA9IFtkWzBdIC0gYVswXSwgZFsxXSAtIGFbMV1dO1xuXG4gICAgY29uc3QgY2E6IFBvaW50ID0gW2FbMF0gLSBjWzBdLCBhWzFdIC0gY1sxXV07XG4gICAgY29uc3QgY2I6IFBvaW50ID0gW2JbMF0gLSBjWzBdLCBiWzFdIC0gY1sxXV07XG4gICAgY29uc3QgY2Q6IFBvaW50ID0gW2RbMF0gLSBjWzBdLCBkWzFdIC0gY1sxXV07XG5cbiAgICByZXR1cm4gY3Jvc3NQcm9kdWN0KGFiLCBhYykgKiBjcm9zc1Byb2R1Y3QoYWIsIGFkKSA8PSAwICYmIGNyb3NzUHJvZHVjdChjZCwgY2EpICogY3Jvc3NQcm9kdWN0KGNkLCBjYikgPD0gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BvbHlsaW5lSGl0UmVjdGFuZ2xlID0gKHBvaW50czogUG9pbnRbXSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGlzQ2xvc2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBpZiAoaSA9PT0gbGVuIC0gMSAmJiAhaXNDbG9zZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IHAxID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBwMiA9IHBvaW50c1soaSArIDEpICUgbGVuXTtcbiAgICAgICAgY29uc3QgaXNIaXQgPVxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1swXSwgcmVjdGFuZ2xlUG9pbnRzWzFdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1sxXSwgcmVjdGFuZ2xlUG9pbnRzWzJdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1syXSwgcmVjdGFuZ2xlUG9pbnRzWzNdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1szXSwgcmVjdGFuZ2xlUG9pbnRzWzBdKTtcbiAgICAgICAgaWYgKGlzSGl0IHx8IGlzUG9pbnRJblBvbHlnb24ocDEsIHJlY3RhbmdsZVBvaW50cykgfHwgaXNQb2ludEluUG9seWdvbihwMiwgcmVjdGFuZ2xlUG9pbnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vL2h0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyNTIxOTgyL2NoZWNrLWlmLXBvaW50LWlzLWluc2lkZS1hLXBvbHlnb25cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5Qb2x5Z29uID0gKHBvaW50OiBQb2ludCwgcG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgLy8gcmF5LWNhc3RpbmcgYWxnb3JpdGhtIGJhc2VkIG9uXG4gICAgLy8gaHR0cHM6Ly93cmYuZWNzZS5ycGkuZWR1L1Jlc2VhcmNoL1Nob3J0X05vdGVzL3BucG9seS5odG1sXG5cbiAgICBjb25zdCB4ID0gcG9pbnRbMF0sXG4gICAgICAgIHkgPSBwb2ludFsxXTtcblxuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IHBvaW50cy5sZW5ndGggLSAxOyBpIDwgcG9pbnRzLmxlbmd0aDsgaiA9IGkrKykge1xuICAgICAgICBsZXQgeGkgPSBwb2ludHNbaV1bMF0sXG4gICAgICAgICAgICB5aSA9IHBvaW50c1tpXVsxXTtcbiAgICAgICAgbGV0IHhqID0gcG9pbnRzW2pdWzBdLFxuICAgICAgICAgICAgeWogPSBwb2ludHNbal1bMV07XG5cbiAgICAgICAgbGV0IGludGVyc2VjdCA9IHlpID4geSAhPSB5aiA+IHkgJiYgeCA8ICgoeGogLSB4aSkgKiAoeSAtIHlpKSkgLyAoeWogLSB5aSkgKyB4aTtcbiAgICAgICAgaWYgKGludGVyc2VjdCkgaW5zaWRlID0gIWluc2lkZTtcbiAgICB9XG4gICAgcmV0dXJuIGluc2lkZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5FbGxpcHNlID0gKHBvaW50OiBQb2ludCwgY2VudGVyOiBQb2ludCwgcng6IG51bWJlciwgcnk6IG51bWJlciwgYW5nbGUgPSAwKSA9PiB7XG4gICAgY29uc3QgY29zQW5nbGUgPSBNYXRoLmNvcyhhbmdsZSk7XG4gICAgY29uc3Qgc2luQW5nbGUgPSBNYXRoLnNpbihhbmdsZSk7XG4gICAgY29uc3QgeDEgPSAocG9pbnRbMF0gLSBjZW50ZXJbMF0pICogY29zQW5nbGUgKyAocG9pbnRbMV0gLSBjZW50ZXJbMV0pICogc2luQW5nbGU7XG4gICAgY29uc3QgeTEgPSAocG9pbnRbMV0gLSBjZW50ZXJbMV0pICogY29zQW5nbGUgLSAocG9pbnRbMF0gLSBjZW50ZXJbMF0pICogc2luQW5nbGU7XG5cbiAgICByZXR1cm4gKHgxICogeDEpIC8gKHJ4ICogcngpICsgKHkxICogeTEpIC8gKHJ5ICogcnkpIDw9IDE7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQb2ludEluUm91bmRSZWN0YW5nbGUgPSAocG9pbnQ6IFBvaW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmFkaXVzOiBudW1iZXIsIGFuZ2xlID0gMCkgPT4ge1xuICAgIGNvbnN0IHsgeDogcmVjdFgsIHk6IHJlY3RZLCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0YW5nbGU7XG4gICAgY29uc3QgaXNJblJlY3RhbmdsZSA9IHBvaW50WzBdID49IHJlY3RYICYmIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiYgcG9pbnRbMV0gPj0gcmVjdFkgJiYgcG9pbnRbMV0gPD0gcmVjdFkgKyBoZWlnaHQ7XG4gICAgY29uc3QgaGFuZGxlTGVmdFRvcCA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgcmFkaXVzICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGhhbmRsZUxlZnRCb3R0b20gPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyBoZWlnaHQgLSByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBoYW5kbGVSaWdodFRvcCA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICsgd2lkdGggLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgd2lkdGggLSByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGhhbmRsZVJpZ2h0Qm90dG9tID1cbiAgICAgICAgcG9pbnRbMF0gPj0gcmVjdFggKyB3aWR0aCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHdpZHRoICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0ICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyB3aWR0aCAtIHJhZGl1cyksIHBvaW50WzFdIC0gKHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzKSkgPiByYWRpdXM7XG4gICAgY29uc3QgaXNJbkNvcm5lciA9IGhhbmRsZUxlZnRUb3AgfHwgaGFuZGxlTGVmdEJvdHRvbSB8fCBoYW5kbGVSaWdodFRvcCB8fCBoYW5kbGVSaWdodEJvdHRvbTtcblxuICAgIHJldHVybiBpc0luUmVjdGFuZ2xlICYmICFpc0luQ29ybmVyO1xufTtcblxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbmljaG9sYXN3bWluL2MyNjYxZWIxMWNhZDU2NzFkODE2XG5leHBvcnQgY29uc3QgY2F0bXVsbFJvbUZpdHRpbmcgPSBmdW5jdGlvbihwb2ludHM6IFBvaW50W10pIHtcbiAgICBjb25zdCBhbHBoYSA9IDAuNTtcbiAgICBsZXQgcDAsIHAxLCBwMiwgcDMsIGJwMSwgYnAyLCBkMSwgZDIsIGQzLCBBLCBCLCBOLCBNO1xuICAgIHZhciBkM3Bvd0EsIGQycG93QSwgZDNwb3cyQSwgZDJwb3cyQSwgZDFwb3cyQSwgZDFwb3dBO1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIHJlc3VsdC5wdXNoKFtNYXRoLnJvdW5kKHBvaW50c1swXVswXSksIE1hdGgucm91bmQocG9pbnRzWzBdWzFdKV0pO1xuICAgIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIHAwID0gaSA9PSAwID8gcG9pbnRzWzBdIDogcG9pbnRzW2kgLSAxXTtcbiAgICAgICAgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHAyID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgcDMgPSBpICsgMiA8IGxlbmd0aCA/IHBvaW50c1tpICsgMl0gOiBwMjtcblxuICAgICAgICBkMSA9IE1hdGguc3FydChNYXRoLnBvdyhwMFswXSAtIHAxWzBdLCAyKSArIE1hdGgucG93KHAwWzFdIC0gcDFbMV0sIDIpKTtcbiAgICAgICAgZDIgPSBNYXRoLnNxcnQoTWF0aC5wb3cocDFbMF0gLSBwMlswXSwgMikgKyBNYXRoLnBvdyhwMVsxXSAtIHAyWzFdLCAyKSk7XG4gICAgICAgIGQzID0gTWF0aC5zcXJ0KE1hdGgucG93KHAyWzBdIC0gcDNbMF0sIDIpICsgTWF0aC5wb3cocDJbMV0gLSBwM1sxXSwgMikpO1xuXG4gICAgICAgIC8vIENhdG11bGwtUm9tIHRvIEN1YmljIEJlemllciBjb252ZXJzaW9uIG1hdHJpeFxuICAgICAgICAvLyBBID0gMmQxXjJhICsgM2QxXmEgKiBkMl5hICsgZDNeMmFcbiAgICAgICAgLy8gQiA9IDJkM14yYSArIDNkM15hICogZDJeYSArIGQyXjJhXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDEgICAgICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgXVxuICAgICAgICAvLyBbICAgLWQyXjJhIC9OICAgICBBL04gICAgICAgICAgZDFeMmEgL04gICAwICAgICAgICAgIF1cbiAgICAgICAgLy8gWyAgIDAgICAgICAgICAgICAgZDNeMmEgL00gICAgIEIvTSAgICAgICAgLWQyXjJhIC9NICBdXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDAgICAgICAgICAgICAxICAgICAgICAgIDAgICAgICAgICAgXVxuXG4gICAgICAgIGQzcG93QSA9IE1hdGgucG93KGQzLCBhbHBoYSk7XG4gICAgICAgIGQzcG93MkEgPSBNYXRoLnBvdyhkMywgMiAqIGFscGhhKTtcbiAgICAgICAgZDJwb3dBID0gTWF0aC5wb3coZDIsIGFscGhhKTtcbiAgICAgICAgZDJwb3cyQSA9IE1hdGgucG93KGQyLCAyICogYWxwaGEpO1xuICAgICAgICBkMXBvd0EgPSBNYXRoLnBvdyhkMSwgYWxwaGEpO1xuICAgICAgICBkMXBvdzJBID0gTWF0aC5wb3coZDEsIDIgKiBhbHBoYSk7XG5cbiAgICAgICAgQSA9IDIgKiBkMXBvdzJBICsgMyAqIGQxcG93QSAqIGQycG93QSArIGQycG93MkE7XG4gICAgICAgIEIgPSAyICogZDNwb3cyQSArIDMgKiBkM3Bvd0EgKiBkMnBvd0EgKyBkMnBvdzJBO1xuICAgICAgICBOID0gMyAqIGQxcG93QSAqIChkMXBvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTiA+IDApIHtcbiAgICAgICAgICAgIE4gPSAxIC8gTjtcbiAgICAgICAgfVxuICAgICAgICBNID0gMyAqIGQzcG93QSAqIChkM3Bvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTSA+IDApIHtcbiAgICAgICAgICAgIE0gPSAxIC8gTTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJwMSA9IFsoLWQycG93MkEgKiBwMFswXSArIEEgKiBwMVswXSArIGQxcG93MkEgKiBwMlswXSkgKiBOLCAoLWQycG93MkEgKiBwMFsxXSArIEEgKiBwMVsxXSArIGQxcG93MkEgKiBwMlsxXSkgKiBOXTtcbiAgICAgICAgYnAyID0gWyhkM3BvdzJBICogcDFbMF0gKyBCICogcDJbMF0gLSBkMnBvdzJBICogcDNbMF0pICogTSwgKGQzcG93MkEgKiBwMVsxXSArIEIgKiBwMlsxXSAtIGQycG93MkEgKiBwM1sxXSkgKiBNXTtcblxuICAgICAgICBpZiAoYnAxWzBdID09IDAgJiYgYnAxWzFdID09IDApIHtcbiAgICAgICAgICAgIGJwMSA9IHAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChicDJbMF0gPT0gMCAmJiBicDJbMV0gPT0gMCkge1xuICAgICAgICAgICAgYnAyID0gcDI7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQucHVzaChicDEgYXMgUG9pbnQsIGJwMiBhcyBQb2ludCwgcDIgYXMgUG9pbnQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIHRoZSByZXN1bHQgb2Ygc2xvcGUgaXMgYmFzZWQgb24gQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtXG4gKiB4LCB5IGFyZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24gaW4gdGhlIENhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxsaXBzZVRhbmdlbnRTbG9wZSh4OiBudW1iZXIsIHk6IG51bWJlciwgYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICBpZiAoTWF0aC5hYnMoeSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHggPiAwID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gICAgfVxuICAgIGNvbnN0IGsgPSAoLWIgKiBiICogeCkgLyAoYSAqIGEgKiB5KTtcbiAgICByZXR1cm4gaztcbn1cblxuLyoqXG4gKiB4LCB5IGFyZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24gaW4gdGhlIENhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUoeDogbnVtYmVyLCB5OiBudW1iZXIsIHNsb3BlOiBudW1iZXIpIHtcbiAgICBpZiAoc2xvcGUgPT09IEluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiBbMCwgLTFdIGFzIFBvaW50O1xuICAgIH0gZWxzZSBpZiAoc2xvcGUgPT09IC1JbmZpbml0eSkge1xuICAgICAgICByZXR1cm4gWzAsIDFdIGFzIFBvaW50O1xuICAgIH1cbiAgICBsZXQgdmVjdG9yID0gWzEsIC1zbG9wZV0gYXMgUG9pbnQ7XG4gICAgaWYgKHkgPCAwKSB7XG4gICAgICAgIHZlY3RvciA9IFstdmVjdG9yWzBdLCAtdmVjdG9yWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvciBhcyBQb2ludDtcbn1cblxuLyoqXG4gKiBUaGUgRE9NIGxpa2VzIHZhbHVlcyB0byBiZSBmaXhlZCB0byAzIGRlY2ltYWwgcGxhY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RvbVByZWNpc2lvbih2OiBudW1iZXIpIHtcbiAgICByZXR1cm4gK3YudG9GaXhlZCg0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRml4ZWQodjogbnVtYmVyKSB7XG4gICAgcmV0dXJuICt2LnRvRml4ZWQoMik7XG59XG5cbi8qKlxuICogV2hldGhlciB0d28gbnVtYmVycyBudW1iZXJzIGEgYW5kIGIgYXJlIGFwcHJveGltYXRlbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0gYiAtIFRoZSBzZWNvbmQgcG9pbnQuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHByb3hpbWF0ZWx5KGE6IG51bWJlciwgYjogbnVtYmVyLCBwcmVjaXNpb24gPSAwLjAwMDAwMSkge1xuICAgIHJldHVybiBNYXRoLmFicyhhIC0gYikgPD0gcHJlY2lzaW9uO1xufVxuXG4vLyBodHRwczovL21lZGl1bS5jb20vQHN0ZXZlcnVpei9maW5kLXRoZS1wb2ludHMtd2hlcmUtYS1saW5lLXNlZ21lbnQtaW50ZXJjZXB0cy1hbi1hbmdsZWQtZWxsaXBzZS1pbi1qYXZhc2NyaXB0LXR5cGVzY3JpcHQtZTQ1MTUyNGJlZWNlXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3Jvc3NpbmdQb2ludHNCZXR3ZWVuRWxsaXBzZUFuZFNlZ21lbnQoXG4gICAgc3RhcnRQb2ludDogUG9pbnQsXG4gICAgZW5kUG9pbnQ6IFBvaW50LFxuICAgIGN4OiBudW1iZXIsXG4gICAgY3k6IG51bWJlcixcbiAgICByeDogbnVtYmVyLFxuICAgIHJ5OiBudW1iZXIsXG4gICAgc2VnbWVudF9vbmx5ID0gdHJ1ZVxuKSB7XG4gICAgLy8gSWYgdGhlIGVsbGlwc2Ugb3IgbGluZSBzZWdtZW50IGFyZSBlbXB0eSwgcmV0dXJuIG5vIHRWYWx1ZXMuXG4gICAgaWYgKHJ4ID09PSAwIHx8IHJ5ID09PSAwIHx8IChzdGFydFBvaW50WzBdID09PSBlbmRQb2ludFswXSAmJiBzdGFydFBvaW50WzFdID09PSBlbmRQb2ludFsxXSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJ4ID0gcnggPCAwID8gcnggOiAtcng7XG4gICAgcnkgPSByeSA8IDAgPyByeSA6IC1yeTtcblxuICAgIHN0YXJ0UG9pbnRbMF0gLT0gY3g7XG4gICAgc3RhcnRQb2ludFsxXSAtPSBjeTtcbiAgICBlbmRQb2ludFswXSAtPSBjeDtcbiAgICBlbmRQb2ludFsxXSAtPSBjeTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgcXVhZHJhdGljIHBhcmFtZXRlcnMuXG4gICAgdmFyIEEgPVxuICAgICAgICAoKGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXSkgKiAoZW5kUG9pbnRbMF0gLSBzdGFydFBvaW50WzBdKSkgLyByeCAvIHJ4ICtcbiAgICAgICAgKChlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV0pICogKGVuZFBvaW50WzFdIC0gc3RhcnRQb2ludFsxXSkpIC8gcnkgLyByeTtcbiAgICB2YXIgQiA9ICgyICogc3RhcnRQb2ludFswXSAqIChlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0pKSAvIHJ4IC8gcnggKyAoMiAqIHN0YXJ0UG9pbnRbMV0gKiAoZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdKSkgLyByeSAvIHJ5O1xuICAgIHZhciBDID0gKHN0YXJ0UG9pbnRbMF0gKiBzdGFydFBvaW50WzBdKSAvIHJ4IC8gcnggKyAoc3RhcnRQb2ludFsxXSAqIHN0YXJ0UG9pbnRbMV0pIC8gcnkgLyByeSAtIDE7XG5cbiAgICAvLyBNYWtlIGEgbGlzdCBvZiB0IHZhbHVlcyAobm9ybWFsaXplZCBwb2ludHMgb24gdGhlIGxpbmUgd2hlcmUgaW50ZXJzZWN0aW9ucyBvY2N1cikuXG4gICAgdmFyIHRWYWx1ZXM6IG51bWJlcltdID0gW107XG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRpc2NyaW1pbmFudC5cbiAgICB2YXIgZGlzY3JpbWluYW50ID0gQiAqIEIgLSA0ICogQSAqIEM7XG5cbiAgICBpZiAoZGlzY3JpbWluYW50ID09PSAwKSB7XG4gICAgICAgIC8vIE9uZSByZWFsIHNvbHV0aW9uLlxuICAgICAgICB0VmFsdWVzLnB1c2goLUIgLyAyIC8gQSk7XG4gICAgfSBlbHNlIGlmIChkaXNjcmltaW5hbnQgPiAwKSB7XG4gICAgICAgIC8vIFR3byByZWFsIHNvbHV0aW9ucy5cbiAgICAgICAgdFZhbHVlcy5wdXNoKCgtQiArIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvIDIgLyBBKTtcbiAgICAgICAgdFZhbHVlcy5wdXNoKCgtQiAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvIDIgLyBBKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICAgdFZhbHVlc1xuICAgICAgICAgICAgLy8gRmlsdGVyIHRvIG9ubHkgcG9pbnRzIHRoYXQgYXJlIG9uIHRoZSBzZWdtZW50LlxuICAgICAgICAgICAgLmZpbHRlcih0ID0+ICFzZWdtZW50X29ubHkgfHwgKHQgPj0gMCAmJiB0IDw9IDEpKVxuICAgICAgICAgICAgLy8gU29sdmUgZm9yIHBvaW50cy5cbiAgICAgICAgICAgIC5tYXAodCA9PiBbc3RhcnRQb2ludFswXSArIChlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0pICogdCArIGN4LCBzdGFydFBvaW50WzFdICsgKGVuZFBvaW50WzFdIC0gc3RhcnRQb2ludFsxXSkgKiB0ICsgY3ldKVxuICAgICk7XG59XG4iXX0=
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsOEJBQThCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQy9HLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xCLDJCQUEyQjtRQUMzQixLQUFLLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ1gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDWixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENBQUM7U0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENB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RUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVsQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFbkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRW5CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFB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Q0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0UsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0MsT0FBTyxZQUFZLENBQUMsRUFB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Q0FBQyxFQUFFLENBQUM7UUFDckIscUJBQXFCO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7U0FBTSxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELE9BQU8sQ0FDSCxPQUFPO1FBQ0gsaURBQWlEO1NBQ2hELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakQsb0JBQW9CO1NBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUNsSSxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjg1MzkyNi8yMzIxMjJcbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQoeDogbnVtYmVyLCB5OiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpIHtcbiAgICBjb25zdCBBID0geCAtIHgxO1xuICAgIGNvbnN0IEIgPSB5IC0geTE7XG4gICAgY29uc3QgQyA9IHgyIC0geDE7XG4gICAgY29uc3QgRCA9IHkyIC0geTE7XG5cbiAgICBjb25zdCBkb3QgPSBBICogQyArIEIgKiBEO1xuICAgIGNvbnN0IGxlblNxdWFyZSA9IEMgKiBDICsgRCAqIEQ7XG4gICAgbGV0IHBhcmFtID0gLTE7XG4gICAgaWYgKGxlblNxdWFyZSAhPT0gMCkge1xuICAgICAgICAvLyBpbiBjYXNlIG9mIDAgbGVuZ3RoIGxpbmVcbiAgICAgICAgcGFyYW0gPSBkb3QgLyBsZW5TcXVhcmU7XG4gICAgfVxuXG4gICAgbGV0IHh4LCB5eTtcbiAgICBpZiAocGFyYW0gPCAwKSB7XG4gICAgICAgIHh4ID0geDE7XG4gICAgICAgIHl5ID0geTE7XG4gICAgfSBlbHNlIGlmIChwYXJhbSA+IDEpIHtcbiAgICAgICAgeHggPSB4MjtcbiAgICAgICAgeXkgPSB5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB4eCA9IHgxICsgcGFyYW0gKiBDO1xuICAgICAgICB5eSA9IHkxICsgcGFyYW0gKiBEO1xuICAgIH1cblxuICAgIGNvbnN0IGR4ID0geCAtIHh4O1xuICAgIGNvbnN0IGR5ID0geSAtIHl5O1xuICAgIHJldHVybiBNYXRoLmh5cG90KGR4LCBkeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50OiBQb2ludCwgbGluZVBvaW50czogW1BvaW50LCBQb2ludF0pIHtcbiAgICBjb25zdCB4ID0gcG9pbnRbMF0sXG4gICAgICAgIHkgPSBwb2ludFsxXSxcbiAgICAgICAgeDEgPSBsaW5lUG9pbnRzWzBdWzBdLFxuICAgICAgICB5MSA9IGxpbmVQb2ludHNbMF1bMV0sXG4gICAgICAgIHgyID0gbGluZVBvaW50c1sxXVswXSxcbiAgICAgICAgeTIgPSBsaW5lUG9pbnRzWzFdWzFdO1xuICAgIGNvbnN0IEEgPSB4IC0geDE7XG4gICAgY29uc3QgQiA9IHkgLSB5MTtcbiAgICBjb25zdCBDID0geDIgLSB4MTtcbiAgICBjb25zdCBEID0geTIgLSB5MTtcblxuICAgIGNvbnN0IGRvdCA9IEEgKiBDICsgQiAqIEQ7XG4gICAgY29uc3QgbGVuU3F1YXJlID0gQyAqIEMgKyBEICogRDtcbiAgICBsZXQgcGFyYW0gPSAtMTtcbiAgICBpZiAobGVuU3F1YXJlICE9PSAwKSB7XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgMCBsZW5ndGggbGluZVxuICAgICAgICBwYXJhbSA9IGRvdCAvIGxlblNxdWFyZTtcbiAgICB9XG5cbiAgICBsZXQgeHgsIHl5O1xuICAgIGlmIChwYXJhbSA8IDApIHtcbiAgICAgICAgeHggPSB4MTtcbiAgICAgICAgeXkgPSB5MTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtID4gMSkge1xuICAgICAgICB4eCA9IHgyO1xuICAgICAgICB5eSA9IHkyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHh4ID0geDEgKyBwYXJhbSAqIEM7XG4gICAgICAgIHl5ID0geTEgKyBwYXJhbSAqIEQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIFt4eCwgeXldIGFzIFBvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludHM6IFBvaW50W10sIHBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgbGV0IGRpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW4gLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgcCA9IHBvaW50c1tpXTtcbiAgICAgICAgY29uc3QgcDIgPSBwb2ludHNbaSArIDFdO1xuICAgICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnRbMF0sIHBvaW50WzFdLCBwWzBdLCBwWzFdLCBwMlswXSwgcDJbMV0pO1xuICAgICAgICBpZiAoY3VycmVudERpc3RhbmNlIDwgZGlzdGFuY2UpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gY3VycmVudERpc3RhbmNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaXN0YW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50OiBQb2ludCwgcG9pbnRzOiBQb2ludFtdLCBpc0Nsb3NlOiBCb29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgbGV0IGRpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgbGV0IHJlc3VsdDogUG9pbnQgPSBwb2ludDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgcCA9IHBvaW50c1tpXTtcbiAgICAgICAgaWYgKGkgPT09IGxlbiAtIDEgJiYgIWlzQ2xvc2UpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBwMiA9IGkgPT09IGxlbiAtIDEgPyBwb2ludHNbMF0gOiBwb2ludHNbaSArIDFdO1xuICAgICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnRbMF0sIHBvaW50WzFdLCBwWzBdLCBwWzFdLCBwMlswXSwgcDJbMV0pO1xuICAgICAgICBpZiAoY3VycmVudERpc3RhbmNlIDwgZGlzdGFuY2UpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gY3VycmVudERpc3RhbmNlO1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludCwgW3AsIHAyXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZEVsbGlwc2UocG9pbnQ6IFBvaW50LCBjZW50ZXI6IFBvaW50LCByeDogbnVtYmVyLCByeTogbnVtYmVyLCByb3RhdGlvbjogbnVtYmVyID0gMCk6IFBvaW50IHtcbiAgICBjb25zdCByZWN0YW5nbGVDbGllbnQgPSB7XG4gICAgICAgIHg6IGNlbnRlclswXSAtIHJ4LFxuICAgICAgICB5OiBjZW50ZXJbMV0gLSByeSxcbiAgICAgICAgaGVpZ2h0OiByeSAqIDIsXG4gICAgICAgIHdpZHRoOiByeCAqIDJcbiAgICB9O1xuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80NjAwNzU0MC8yMzIxMjJcbiAgICBjb25zdCBweCA9IE1hdGguYWJzKHBvaW50WzBdIC0gcmVjdGFuZ2xlQ2xpZW50LnggLSByZWN0YW5nbGVDbGllbnQud2lkdGggLyAyKTtcbiAgICBjb25zdCBweSA9IE1hdGguYWJzKHBvaW50WzFdIC0gcmVjdGFuZ2xlQ2xpZW50LnkgLSByZWN0YW5nbGVDbGllbnQuaGVpZ2h0IC8gMik7XG5cbiAgICBsZXQgdHggPSAwLjcwNztcbiAgICBsZXQgdHkgPSAwLjcwNztcblxuICAgIGNvbnN0IGEgPSBNYXRoLmFicyhyZWN0YW5nbGVDbGllbnQud2lkdGgpIC8gMjtcbiAgICBjb25zdCBiID0gTWF0aC5hYnMocmVjdGFuZ2xlQ2xpZW50LmhlaWdodCkgLyAyO1xuXG4gICAgWzAsIDEsIDIsIDNdLmZvckVhY2goeCA9PiB7XG4gICAgICAgIGNvbnN0IHh4ID0gYSAqIHR4O1xuICAgICAgICBjb25zdCB5eSA9IGIgKiB0eTtcblxuICAgICAgICBjb25zdCBleCA9ICgoYSAqIGEgLSBiICogYikgKiB0eCAqKiAzKSAvIGE7XG4gICAgICAgIGNvbnN0IGV5ID0gKChiICogYiAtIGEgKiBhKSAqIHR5ICoqIDMpIC8gYjtcblxuICAgICAgICBjb25zdCByeCA9IHh4IC0gZXg7XG4gICAgICAgIGNvbnN0IHJ5ID0geXkgLSBleTtcblxuICAgICAgICBjb25zdCBxeCA9IHB4IC0gZXg7XG4gICAgICAgIGNvbnN0IHF5ID0gcHkgLSBleTtcblxuICAgICAgICBjb25zdCByID0gTWF0aC5oeXBvdChyeSwgcngpO1xuICAgICAgICBjb25zdCBxID0gTWF0aC5oeXBvdChxeSwgcXgpO1xuXG4gICAgICAgIHR4ID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgKChxeCAqIHIpIC8gcSArIGV4KSAvIGEpKTtcbiAgICAgICAgdHkgPSBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCAoKHF5ICogcikgLyBxICsgZXkpIC8gYikpO1xuICAgICAgICBjb25zdCB0ID0gTWF0aC5oeXBvdCh0eSwgdHgpO1xuICAgICAgICB0eCAvPSB0O1xuICAgICAgICB0eSAvPSB0O1xuICAgIH0pO1xuICAgIGNvbnN0IHNpZ25YID0gcG9pbnRbMF0gPiBjZW50ZXJbMF0gPyAxIDogLTE7XG4gICAgY29uc3Qgc2lnblkgPSBwb2ludFsxXSA+IGNlbnRlclsxXSA/IDEgOiAtMTtcblxuICAgIHJldHVybiBbY2VudGVyWzBdICsgYSAqIHR4ICogc2lnblgsIGNlbnRlclsxXSArIGIgKiB0eSAqIHNpZ25ZXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZSh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBhbmdsZTogbnVtYmVyKSB7XG4gICAgLy8g8J2RjuKAsvCdkaU9KPCdkY7wnZGl4oiS8J2RkPCdkaUpY29z8J2cg+KIkijwnZGO8J2RpuKIkvCdkZDwnZGmKXNpbvCdnIMr8J2RkPCdkaVcbiAgICAvLyDwnZGO4oCy8J2Rpj0o8J2RjvCdkaXiiJLwnZGQ8J2RpSlzaW7wnZyDKyjwnZGO8J2RpuKIkvCdkZDwnZGmKWNvc/CdnIMr8J2RkPCdkaYuXG4gICAgLy8gaHR0cHM6Ly9tYXRoLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8yMjA0NTIwL2hvdy1kby1pLXJvdGF0ZS1hLWxpbmUtc2VnbWVudC1pbi1hLXNwZWNpZmljLXBvaW50LW9uLXRoZS1saW5lXG4gICAgcmV0dXJuIFsoeDEgLSB4MikgKiBNYXRoLmNvcyhhbmdsZSkgLSAoeTEgLSB5MikgKiBNYXRoLnNpbihhbmdsZSkgKyB4MiwgKHgxIC0geDIpICogTWF0aC5zaW4oYW5nbGUpICsgKHkxIC0geTIpICogTWF0aC5jb3MoYW5nbGUpICsgeTJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgY29uc3QgZHggPSB4MSAtIHgyO1xuICAgIGNvbnN0IGR5ID0geTEgLSB5MjtcbiAgICByZXR1cm4gTWF0aC5oeXBvdChkeCwgZHkpO1xufVxuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MjU0ODM4L2NhbGN1bGF0aW5nLWRpc3RhbmNlLWJldHdlZW4tYS1wb2ludC1hbmQtYS1yZWN0YW5ndWxhci1ib3gtbmVhcmVzdC1wb2ludFxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKHg6IG51bWJlciwgeTogbnVtYmVyLCByZWN0OiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICB2YXIgZHggPSBNYXRoLm1heChyZWN0LnggLSB4LCAwLCB4IC0gKHJlY3QueCArIHJlY3Qud2lkdGgpKTtcbiAgICB2YXIgZHkgPSBNYXRoLm1heChyZWN0LnkgLSB5LCAwLCB5IC0gKHJlY3QueSArIHJlY3QuaGVpZ2h0KSk7XG4gICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG59XG5cbmV4cG9ydCBjb25zdCBpc0xpbmVIaXRMaW5lID0gKGE6IFBvaW50LCBiOiBQb2ludCwgYzogUG9pbnQsIGQ6IFBvaW50KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgY3Jvc3NQcm9kdWN0ID0gKHYxOiBQb2ludCwgdjI6IFBvaW50KSA9PiB2MVswXSAqIHYyWzFdIC0gdjFbMV0gKiB2MlswXTtcblxuICAgIGNvbnN0IGFiOiBQb2ludCA9IFtiWzBdIC0gYVswXSwgYlsxXSAtIGFbMV1dO1xuICAgIGNvbnN0IGFjOiBQb2ludCA9IFtjWzBdIC0gYVswXSwgY1sxXSAtIGFbMV1dO1xuICAgIGNvbnN0IGFkOiBQb2ludCA9IFtkWzBdIC0gYVswXSwgZFsxXSAtIGFbMV1dO1xuXG4gICAgY29uc3QgY2E6IFBvaW50ID0gW2FbMF0gLSBjWzBdLCBhWzFdIC0gY1sxXV07XG4gICAgY29uc3QgY2I6IFBvaW50ID0gW2JbMF0gLSBjWzBdLCBiWzFdIC0gY1sxXV07XG4gICAgY29uc3QgY2Q6IFBvaW50ID0gW2RbMF0gLSBjWzBdLCBkWzFdIC0gY1sxXV07XG5cbiAgICByZXR1cm4gY3Jvc3NQcm9kdWN0KGFiLCBhYykgKiBjcm9zc1Byb2R1Y3QoYWIsIGFkKSA8PSAwICYmIGNyb3NzUHJvZHVjdChjZCwgY2EpICogY3Jvc3NQcm9kdWN0KGNkLCBjYikgPD0gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BvbHlsaW5lSGl0UmVjdGFuZ2xlID0gKHBvaW50czogUG9pbnRbXSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGlzQ2xvc2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBpZiAoaSA9PT0gbGVuIC0gMSAmJiAhaXNDbG9zZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IHAxID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBwMiA9IHBvaW50c1soaSArIDEpICUgbGVuXTtcbiAgICAgICAgY29uc3QgaXNIaXQgPVxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1swXSwgcmVjdGFuZ2xlUG9pbnRzWzFdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1sxXSwgcmVjdGFuZ2xlUG9pbnRzWzJdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1syXSwgcmVjdGFuZ2xlUG9pbnRzWzNdKSB8fFxuICAgICAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1szXSwgcmVjdGFuZ2xlUG9pbnRzWzBdKTtcbiAgICAgICAgaWYgKGlzSGl0IHx8IGlzUG9pbnRJblBvbHlnb24ocDEsIHJlY3RhbmdsZVBvaW50cykgfHwgaXNQb2ludEluUG9seWdvbihwMiwgcmVjdGFuZ2xlUG9pbnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vL2h0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyNTIxOTgyL2NoZWNrLWlmLXBvaW50LWlzLWluc2lkZS1hLXBvbHlnb25cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5Qb2x5Z29uID0gKHBvaW50OiBQb2ludCwgcG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgLy8gcmF5LWNhc3RpbmcgYWxnb3JpdGhtIGJhc2VkIG9uXG4gICAgLy8gaHR0cHM6Ly93cmYuZWNzZS5ycGkuZWR1L1Jlc2VhcmNoL1Nob3J0X05vdGVzL3BucG9seS5odG1sXG5cbiAgICBjb25zdCB4ID0gcG9pbnRbMF0sXG4gICAgICAgIHkgPSBwb2ludFsxXTtcblxuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IHBvaW50cy5sZW5ndGggLSAxOyBpIDwgcG9pbnRzLmxlbmd0aDsgaiA9IGkrKykge1xuICAgICAgICBsZXQgeGkgPSBwb2ludHNbaV1bMF0sXG4gICAgICAgICAgICB5aSA9IHBvaW50c1tpXVsxXTtcbiAgICAgICAgbGV0IHhqID0gcG9pbnRzW2pdWzBdLFxuICAgICAgICAgICAgeWogPSBwb2ludHNbal1bMV07XG5cbiAgICAgICAgbGV0IGludGVyc2VjdCA9IHlpID4geSAhPSB5aiA+IHkgJiYgeCA8ICgoeGogLSB4aSkgKiAoeSAtIHlpKSkgLyAoeWogLSB5aSkgKyB4aTtcbiAgICAgICAgaWYgKGludGVyc2VjdCkgaW5zaWRlID0gIWluc2lkZTtcbiAgICB9XG4gICAgcmV0dXJuIGluc2lkZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5FbGxpcHNlID0gKHBvaW50OiBQb2ludCwgY2VudGVyOiBQb2ludCwgcng6IG51bWJlciwgcnk6IG51bWJlciwgYW5nbGUgPSAwKSA9PiB7XG4gICAgY29uc3QgY29zQW5nbGUgPSBNYXRoLmNvcyhhbmdsZSk7XG4gICAgY29uc3Qgc2luQW5nbGUgPSBNYXRoLnNpbihhbmdsZSk7XG4gICAgY29uc3QgeDEgPSAocG9pbnRbMF0gLSBjZW50ZXJbMF0pICogY29zQW5nbGUgKyAocG9pbnRbMV0gLSBjZW50ZXJbMV0pICogc2luQW5nbGU7XG4gICAgY29uc3QgeTEgPSAocG9pbnRbMV0gLSBjZW50ZXJbMV0pICogY29zQW5nbGUgLSAocG9pbnRbMF0gLSBjZW50ZXJbMF0pICogc2luQW5nbGU7XG5cbiAgICByZXR1cm4gKHgxICogeDEpIC8gKHJ4ICogcngpICsgKHkxICogeTEpIC8gKHJ5ICogcnkpIDw9IDE7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQb2ludEluUm91bmRSZWN0YW5nbGUgPSAocG9pbnQ6IFBvaW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmFkaXVzOiBudW1iZXIsIGFuZ2xlID0gMCkgPT4ge1xuICAgIGNvbnN0IHsgeDogcmVjdFgsIHk6IHJlY3RZLCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0YW5nbGU7XG4gICAgY29uc3QgaXNJblJlY3RhbmdsZSA9IHBvaW50WzBdID49IHJlY3RYICYmIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiYgcG9pbnRbMV0gPj0gcmVjdFkgJiYgcG9pbnRbMV0gPD0gcmVjdFkgKyBoZWlnaHQ7XG4gICAgY29uc3QgaGFuZGxlTGVmdFRvcCA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgcmFkaXVzICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGhhbmRsZUxlZnRCb3R0b20gPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyBoZWlnaHQgLSByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBoYW5kbGVSaWdodFRvcCA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICsgd2lkdGggLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgd2lkdGggLSByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGhhbmRsZVJpZ2h0Qm90dG9tID1cbiAgICAgICAgcG9pbnRbMF0gPj0gcmVjdFggKyB3aWR0aCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHdpZHRoICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0ICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyB3aWR0aCAtIHJhZGl1cyksIHBvaW50WzFdIC0gKHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzKSkgPiByYWRpdXM7XG4gICAgY29uc3QgaXNJbkNvcm5lciA9IGhhbmRsZUxlZnRUb3AgfHwgaGFuZGxlTGVmdEJvdHRvbSB8fCBoYW5kbGVSaWdodFRvcCB8fCBoYW5kbGVSaWdodEJvdHRvbTtcblxuICAgIHJldHVybiBpc0luUmVjdGFuZ2xlICYmICFpc0luQ29ybmVyO1xufTtcblxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbmljaG9sYXN3bWluL2MyNjYxZWIxMWNhZDU2NzFkODE2XG5leHBvcnQgY29uc3QgY2F0bXVsbFJvbUZpdHRpbmcgPSBmdW5jdGlvbihwb2ludHM6IFBvaW50W10pIHtcbiAgICBjb25zdCBhbHBoYSA9IDAuNTtcbiAgICBsZXQgcDAsIHAxLCBwMiwgcDMsIGJwMSwgYnAyLCBkMSwgZDIsIGQzLCBBLCBCLCBOLCBNO1xuICAgIHZhciBkM3Bvd0EsIGQycG93QSwgZDNwb3cyQSwgZDJwb3cyQSwgZDFwb3cyQSwgZDFwb3dBO1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIHJlc3VsdC5wdXNoKFtNYXRoLnJvdW5kKHBvaW50c1swXVswXSksIE1hdGgucm91bmQocG9pbnRzWzBdWzFdKV0pO1xuICAgIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIHAwID0gaSA9PSAwID8gcG9pbnRzWzBdIDogcG9pbnRzW2kgLSAxXTtcbiAgICAgICAgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHAyID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgcDMgPSBpICsgMiA8IGxlbmd0aCA/IHBvaW50c1tpICsgMl0gOiBwMjtcblxuICAgICAgICBkMSA9IE1hdGguc3FydChNYXRoLnBvdyhwMFswXSAtIHAxWzBdLCAyKSArIE1hdGgucG93KHAwWzFdIC0gcDFbMV0sIDIpKTtcbiAgICAgICAgZDIgPSBNYXRoLnNxcnQoTWF0aC5wb3cocDFbMF0gLSBwMlswXSwgMikgKyBNYXRoLnBvdyhwMVsxXSAtIHAyWzFdLCAyKSk7XG4gICAgICAgIGQzID0gTWF0aC5zcXJ0KE1hdGgucG93KHAyWzBdIC0gcDNbMF0sIDIpICsgTWF0aC5wb3cocDJbMV0gLSBwM1sxXSwgMikpO1xuXG4gICAgICAgIC8vIENhdG11bGwtUm9tIHRvIEN1YmljIEJlemllciBjb252ZXJzaW9uIG1hdHJpeFxuICAgICAgICAvLyBBID0gMmQxXjJhICsgM2QxXmEgKiBkMl5hICsgZDNeMmFcbiAgICAgICAgLy8gQiA9IDJkM14yYSArIDNkM15hICogZDJeYSArIGQyXjJhXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDEgICAgICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgXVxuICAgICAgICAvLyBbICAgLWQyXjJhIC9OICAgICBBL04gICAgICAgICAgZDFeMmEgL04gICAwICAgICAgICAgIF1cbiAgICAgICAgLy8gWyAgIDAgICAgICAgICAgICAgZDNeMmEgL00gICAgIEIvTSAgICAgICAgLWQyXjJhIC9NICBdXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDAgICAgICAgICAgICAxICAgICAgICAgIDAgICAgICAgICAgXVxuXG4gICAgICAgIGQzcG93QSA9IE1hdGgucG93KGQzLCBhbHBoYSk7XG4gICAgICAgIGQzcG93MkEgPSBNYXRoLnBvdyhkMywgMiAqIGFscGhhKTtcbiAgICAgICAgZDJwb3dBID0gTWF0aC5wb3coZDIsIGFscGhhKTtcbiAgICAgICAgZDJwb3cyQSA9IE1hdGgucG93KGQyLCAyICogYWxwaGEpO1xuICAgICAgICBkMXBvd0EgPSBNYXRoLnBvdyhkMSwgYWxwaGEpO1xuICAgICAgICBkMXBvdzJBID0gTWF0aC5wb3coZDEsIDIgKiBhbHBoYSk7XG5cbiAgICAgICAgQSA9IDIgKiBkMXBvdzJBICsgMyAqIGQxcG93QSAqIGQycG93QSArIGQycG93MkE7XG4gICAgICAgIEIgPSAyICogZDNwb3cyQSArIDMgKiBkM3Bvd0EgKiBkMnBvd0EgKyBkMnBvdzJBO1xuICAgICAgICBOID0gMyAqIGQxcG93QSAqIChkMXBvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTiA+IDApIHtcbiAgICAgICAgICAgIE4gPSAxIC8gTjtcbiAgICAgICAgfVxuICAgICAgICBNID0gMyAqIGQzcG93QSAqIChkM3Bvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTSA+IDApIHtcbiAgICAgICAgICAgIE0gPSAxIC8gTTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJwMSA9IFsoLWQycG93MkEgKiBwMFswXSArIEEgKiBwMVswXSArIGQxcG93MkEgKiBwMlswXSkgKiBOLCAoLWQycG93MkEgKiBwMFsxXSArIEEgKiBwMVsxXSArIGQxcG93MkEgKiBwMlsxXSkgKiBOXTtcbiAgICAgICAgYnAyID0gWyhkM3BvdzJBICogcDFbMF0gKyBCICogcDJbMF0gLSBkMnBvdzJBICogcDNbMF0pICogTSwgKGQzcG93MkEgKiBwMVsxXSArIEIgKiBwMlsxXSAtIGQycG93MkEgKiBwM1sxXSkgKiBNXTtcblxuICAgICAgICBpZiAoYnAxWzBdID09IDAgJiYgYnAxWzFdID09IDApIHtcbiAgICAgICAgICAgIGJwMSA9IHAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChicDJbMF0gPT0gMCAmJiBicDJbMV0gPT0gMCkge1xuICAgICAgICAgICAgYnAyID0gcDI7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQucHVzaChicDEgYXMgUG9pbnQsIGJwMiBhcyBQb2ludCwgcDIgYXMgUG9pbnQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIHRoZSByZXN1bHQgb2Ygc2xvcGUgaXMgYmFzZWQgb24gQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtXG4gKiB4LCB5IGFyZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24gaW4gdGhlIENhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxsaXBzZVRhbmdlbnRTbG9wZSh4OiBudW1iZXIsIHk6IG51bWJlciwgYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICBpZiAoTWF0aC5hYnMoeSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHggPiAwID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gICAgfVxuICAgIGNvbnN0IGsgPSAoLWIgKiBiICogeCkgLyAoYSAqIGEgKiB5KTtcbiAgICByZXR1cm4gaztcbn1cblxuLyoqXG4gKiB4LCB5IGFyZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24gaW4gdGhlIENhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUoeDogbnVtYmVyLCB5OiBudW1iZXIsIHNsb3BlOiBudW1iZXIpIHtcbiAgICBpZiAoc2xvcGUgPT09IEluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiBbMCwgLTFdIGFzIFBvaW50O1xuICAgIH0gZWxzZSBpZiAoc2xvcGUgPT09IC1JbmZpbml0eSkge1xuICAgICAgICByZXR1cm4gWzAsIDFdIGFzIFBvaW50O1xuICAgIH1cbiAgICBsZXQgdmVjdG9yID0gWzEsIC1zbG9wZV0gYXMgUG9pbnQ7XG4gICAgaWYgKHkgPCAwKSB7XG4gICAgICAgIHZlY3RvciA9IFstdmVjdG9yWzBdLCAtdmVjdG9yWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvciBhcyBQb2ludDtcbn1cblxuLyoqXG4gKiBUaGUgRE9NIGxpa2VzIHZhbHVlcyB0byBiZSBmaXhlZCB0byAzIGRlY2ltYWwgcGxhY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RvbVByZWNpc2lvbih2OiBudW1iZXIpIHtcbiAgICByZXR1cm4gK3YudG9GaXhlZCg0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRml4ZWQodjogbnVtYmVyKSB7XG4gICAgcmV0dXJuICt2LnRvRml4ZWQoMik7XG59XG5cbi8qKlxuICogV2hldGhlciB0d28gbnVtYmVycyBudW1iZXJzIGEgYW5kIGIgYXJlIGFwcHJveGltYXRlbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0gYiAtIFRoZSBzZWNvbmQgcG9pbnQuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHByb3hpbWF0ZWx5KGE6IG51bWJlciwgYjogbnVtYmVyLCBwcmVjaXNpb24gPSAwLjAwMDAwMSkge1xuICAgIHJldHVybiBNYXRoLmFicyhhIC0gYikgPD0gcHJlY2lzaW9uO1xufVxuXG4vLyBodHRwczovL21lZGl1bS5jb20vQHN0ZXZlcnVpei9maW5kLXRoZS1wb2ludHMtd2hlcmUtYS1saW5lLXNlZ21lbnQtaW50ZXJjZXB0cy1hbi1hbmdsZWQtZWxsaXBzZS1pbi1qYXZhc2NyaXB0LXR5cGVzY3JpcHQtZTQ1MTUyNGJlZWNlXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3Jvc3NpbmdQb2ludHNCZXR3ZWVuRWxsaXBzZUFuZFNlZ21lbnQoXG4gICAgc3RhcnRQb2ludDogUG9pbnQsXG4gICAgZW5kUG9pbnQ6IFBvaW50LFxuICAgIGN4OiBudW1iZXIsXG4gICAgY3k6IG51bWJlcixcbiAgICByeDogbnVtYmVyLFxuICAgIHJ5OiBudW1iZXIsXG4gICAgc2VnbWVudF9vbmx5ID0gdHJ1ZVxuKSB7XG4gICAgLy8gSWYgdGhlIGVsbGlwc2Ugb3IgbGluZSBzZWdtZW50IGFyZSBlbXB0eSwgcmV0dXJuIG5vIHRWYWx1ZXMuXG4gICAgaWYgKHJ4ID09PSAwIHx8IHJ5ID09PSAwIHx8IChzdGFydFBvaW50WzBdID09PSBlbmRQb2ludFswXSAmJiBzdGFydFBvaW50WzFdID09PSBlbmRQb2ludFsxXSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJ4ID0gcnggPCAwID8gcnggOiAtcng7XG4gICAgcnkgPSByeSA8IDAgPyByeSA6IC1yeTtcblxuICAgIHN0YXJ0UG9pbnRbMF0gLT0gY3g7XG4gICAgc3RhcnRQb2ludFsxXSAtPSBjeTtcbiAgICBlbmRQb2ludFswXSAtPSBjeDtcbiAgICBlbmRQb2ludFsxXSAtPSBjeTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgcXVhZHJhdGljIHBhcmFtZXRlcnMuXG4gICAgdmFyIEEgPVxuICAgICAgICAoKGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXSkgKiAoZW5kUG9pbnRbMF0gLSBzdGFydFBvaW50WzBdKSkgLyByeCAvIHJ4ICtcbiAgICAgICAgKChlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV0pICogKGVuZFBvaW50WzFdIC0gc3RhcnRQb2ludFsxXSkpIC8gcnkgLyByeTtcbiAgICB2YXIgQiA9ICgyICogc3RhcnRQb2ludFswXSAqIChlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0pKSAvIHJ4IC8gcnggKyAoMiAqIHN0YXJ0UG9pbnRbMV0gKiAoZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdKSkgLyByeSAvIHJ5O1xuICAgIHZhciBDID0gKHN0YXJ0UG9pbnRbMF0gKiBzdGFydFBvaW50WzBdKSAvIHJ4IC8gcnggKyAoc3RhcnRQb2ludFsxXSAqIHN0YXJ0UG9pbnRbMV0pIC8gcnkgLyByeSAtIDE7XG5cbiAgICAvLyBNYWtlIGEgbGlzdCBvZiB0IHZhbHVlcyAobm9ybWFsaXplZCBwb2ludHMgb24gdGhlIGxpbmUgd2hlcmUgaW50ZXJzZWN0aW9ucyBvY2N1cikuXG4gICAgdmFyIHRWYWx1ZXM6IG51bWJlcltdID0gW107XG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRpc2NyaW1pbmFudC5cbiAgICB2YXIgZGlzY3JpbWluYW50ID0gQiAqIEIgLSA0ICogQSAqIEM7XG5cbiAgICBpZiAoZGlzY3JpbWluYW50ID09PSAwKSB7XG4gICAgICAgIC8vIE9uZSByZWFsIHNvbHV0aW9uLlxuICAgICAgICB0VmFsdWVzLnB1c2goLUIgLyAyIC8gQSk7XG4gICAgfSBlbHNlIGlmIChkaXNjcmltaW5hbnQgPiAwKSB7XG4gICAgICAgIC8vIFR3byByZWFsIHNvbHV0aW9ucy5cbiAgICAgICAgdFZhbHVlcy5wdXNoKCgtQiArIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvIDIgLyBBKTtcbiAgICAgICAgdFZhbHVlcy5wdXNoKCgtQiAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvIDIgLyBBKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICAgdFZhbHVlc1xuICAgICAgICAgICAgLy8gRmlsdGVyIHRvIG9ubHkgcG9pbnRzIHRoYXQgYXJlIG9uIHRoZSBzZWdtZW50LlxuICAgICAgICAgICAgLmZpbHRlcih0ID0+ICFzZWdtZW50X29ubHkgfHwgKHQgPj0gMCAmJiB0IDw9IDEpKVxuICAgICAgICAgICAgLy8gU29sdmUgZm9yIHBvaW50cy5cbiAgICAgICAgICAgIC5tYXAodCA9PiBbc3RhcnRQb2ludFswXSArIChlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0pICogdCArIGN4LCBzdGFydFBvaW50WzFdICsgKGVuZFBvaW50WzFdIC0gc3RhcnRQb2ludFsxXSkgKiB0ICsgY3ldKVxuICAgICk7XG59XG4iXX0=
|
|
@@ -2,6 +2,7 @@ import { PlaitBoard } from '../interfaces/board';
|
|
|
2
2
|
import { depthFirstRecursion, getIsRecursionFunc } from './tree';
|
|
3
3
|
import { BOARD_TO_SELECTED_ELEMENT } from './weak-maps';
|
|
4
4
|
import { Selection } from '../interfaces/selection';
|
|
5
|
+
import { PlaitElement } from '../interfaces/element';
|
|
5
6
|
import { sortElements } from './position';
|
|
6
7
|
import { RectangleClient } from '../interfaces/rectangle-client';
|
|
7
8
|
import { getRectangleByElements } from './element';
|
|
@@ -36,7 +37,7 @@ export const getHitElementByPoint = (board, point, match = () => true) => {
|
|
|
36
37
|
if (hitElement) {
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
39
|
-
if (PlaitBoard.isBoard(node) || !match(node)) {
|
|
40
|
+
if (PlaitBoard.isBoard(node) || !match(node) || !PlaitElement.hasMounted(node)) {
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
42
43
|
if (board.isHit(node, point)) {
|
|
@@ -117,4 +118,4 @@ export const temporaryDisableSelection = (board) => {
|
|
|
117
118
|
board.setPluginOptions(PlaitPluginKey.withSelection, { ...currentOptions });
|
|
118
119
|
}, 0);
|
|
119
120
|
};
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHMUQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDckMsS0FBaUIsRUFDakIsU0FBcUIsRUFDckIsUUFBNEMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUN4RCxFQUFFO0lBQ0EsTUFBTSxZQUFZLEdBQUcsU0FBUyxJQUFLLEtBQUssQ0FBQyxTQUF1QixDQUFDO0lBQ2pFLE1BQU0sb0JBQW9CLEdBQW1CLEVBQUUsQ0FBQztJQUNoRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2QsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxD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RSxDQUFDLENBQUM7SUFDbkcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgQW5jZXN0b3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiwgZ2V0SXNSZWN1cnNpb25GdW5jIH0gZnJvbSAnLi90cmVlJztcbmltcG9ydCB7IEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQgfSBmcm9tICcuL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IHNvcnRFbGVtZW50cyB9IGZyb20gJy4vcG9zaXRpb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbktleSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGx1Z2luLWtleSc7XG5pbXBvcnQgeyBXaXRoUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1zZWxlY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbiA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBzZWxlY3Rpb24/OiBTZWxlY3Rpb24sXG4gICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlXG4pID0+IHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBzZWxlY3Rpb24gfHwgKGJvYXJkLnNlbGVjdGlvbiBhcyBTZWxlY3Rpb24pO1xuICAgIGNvbnN0IHJlY3RhbmdsZUhpdEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGlmICghbmV3U2VsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgaXNDb2xsYXBzZWQgPSBTZWxlY3Rpb24uaXNDb2xsYXBzZWQobmV3U2VsZWN0aW9uKTtcbiAgICBpZiAoaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBuZXdTZWxlY3Rpb24uYW5jaG9yLCBtYXRjaCk7XG4gICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW2hpdEVsZW1lbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSAmJiBtYXRjaChub2RlKSAmJiBib2FyZC5pc1JlY3RhbmdsZUhpdChub2RlLCBuZXdTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgcmVjdGFuZ2xlSGl0RWxlbWVudHMucHVzaChub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SXNSZWN1cnNpb25GdW5jKGJvYXJkKSxcbiAgICAgICAgdHJ1ZVxuICAgICk7XG4gICAgcmV0dXJuIHJlY3RhbmdsZUhpdEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdEVsZW1lbnRCeVBvaW50ID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHBvaW50OiBQb2ludCxcbiAgICBtYXRjaDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbik6IHVuZGVmaW5lZCB8IFBsYWl0RWxlbWVudCA9PiB7XG4gICAgbGV0IGhpdEVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgaGl0SW5zaWRlRWxlbWVudDogUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgfHwgIW1hdGNoKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJvYXJkLmlzSGl0KG5vZGUsIHBvaW50KSkge1xuICAgICAgICAgICAgICAgIGhpdEVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiDpnIDopoHlop7liqDlnLrmma/mtYvor5VcbiAgICAgICAgICAgICAqIGhpdEluc2lkZUVsZW1lbnQg5a2Y55qE5piv56ys5LiA5Liq56ym5ZCIIGlzSW5zaWRlUG9pbnQg55qE5YWD57SgXG4gICAgICAgICAgICAgKiDlvZPmnInlhYPntKDnrKblkIggaXNIaXQg5pe257uT5p2f6YGN5Y6G77yM5bm26L+U5ZueIGhpdEVsZW1lbnRcbiAgICAgICAgICAgICAqIOW9k+aJgOacieWFg+e0oOmDveS4jeespuWQiCBpc0hpdCDvvIzliJnov5Tlm57nrKzkuIDkuKrnrKblkIggaXNJbnNpZGVQb2ludCDnmoTlhYPntKBcbiAgICAgICAgICAgICAqIOi/meagt+S/neivgeacgOS4iumdoueahOWFg+e0oOS8mOWFiOiiq+aOoua1i+WIsO+8m1xuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGlmICghaGl0SW5zaWRlRWxlbWVudCAmJiBib2FyZC5pc0luc2lkZVBvaW50KG5vZGUsIHBvaW50KSkge1xuICAgICAgICAgICAgICAgIGhpdEluc2lkZUVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMoYm9hcmQpLFxuICAgICAgICB0cnVlXG4gICAgKTtcbiAgICByZXR1cm4gaGl0RWxlbWVudCB8fCBoaXRJbnNpZGVFbGVtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdFNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IGlzSW5UYXJnZXRSZWN0YW5nbGUgPSB0YXJnZXRSZWN0YW5nbGUgJiYgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRSZWN0YW5nbGUsIHBvaW50KTtcbiAgICBpZiAoaXNJblRhcmdldFJlY3RhbmdsZSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNhY2hlU2VsZWN0ZWRFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzb3J0ZWRFbGVtZW50cyA9IHNvcnRFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVC5zZXQoYm9hcmQsIHNvcnRlZEVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQuZ2V0KGJvYXJkKSB8fCBbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IGVsZW1lbnRzID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudCkpIHtcbiAgICAgICAgZWxlbWVudHMucHVzaCguLi5lbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4uc2VsZWN0ZWRFbGVtZW50cywgLi4uZWxlbWVudHNdKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgaXNSZW1vdmVDaGlsZHJlbiA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICBpZiAoYm9hcmQuaXNSZWN1cnNpb24oZWxlbWVudCkgJiYgaXNSZW1vdmVDaGlsZHJlbikge1xuICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbihcbiAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbm9kZSA9PiBib2FyZC5pc1JlY3Vyc2lvbihub2RlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+ICF0YXJnZXRFbGVtZW50cy5pbmNsdWRlcyh2YWx1ZSkpO1xuICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhclNlbGVjdGVkRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgW10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuICEhc2VsZWN0ZWRFbGVtZW50cy5maW5kKHZhbHVlID0+IHZhbHVlID09PSBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCB0ZW1wb3JhcnlEaXNhYmxlU2VsZWN0aW9uID0gKGJvYXJkOiBQbGFpdE9wdGlvbnNCb2FyZCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gYm9hcmQuZ2V0UGx1Z2luT3B0aW9ucyhQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICBib2FyZC5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IHRydWVcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYm9hcmQuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwgeyAuLi5jdXJyZW50T3B0aW9ucyB9KTtcbiAgICB9LCAwKTtcbn07XG4iXX0=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzFELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3JDLEtBQWlCLEVBQ2pCLFNBQXFCLEVBQ3JCLFFBQTRDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFDeEQsRUFBRTtJQUNBLE1BQU0sWUFBWSxHQUFHLFNBQVMsSUFBSyxLQUFLLENBQUMsU0FBdUIsQ0FBQztJQUNqRSxNQUFNLG9CQUFvQixHQUFtQixFQUFFLENBQUM7SUFDaEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNkLE1BQU0sVUFBVSxHQUFHLG9CQUFv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VSxDQUFDLEdBQUcsRUFBRTtRQUNaLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBb0IsY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBBbmNlc3RvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uLCBnZXRJc1JlY3Vyc2lvbkZ1bmMgfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0IHsgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVCB9IGZyb20gJy4vd2Vhay1tYXBzJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgc29ydEVsZW1lbnRzIH0gZnJvbSAnLi9wb3NpdGlvbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdE9wdGlvbnNCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0UGx1Z2luS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4ta2V5JztcbmltcG9ydCB7IFdpdGhQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXNlbGVjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRFbGVtZW50c0J5U2VsZWN0aW9uID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHNlbGVjdGlvbj86IFNlbGVjdGlvbixcbiAgICBtYXRjaDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbikgPT4ge1xuICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHNlbGVjdGlvbiB8fCAoYm9hcmQuc2VsZWN0aW9uIGFzIFNlbGVjdGlvbik7XG4gICAgY29uc3QgcmVjdGFuZ2xlSGl0RWxlbWVudHM6IFBsYWl0RWxlbWVudFtdID0gW107XG4gICAgaWYgKCFuZXdTZWxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBpc0NvbGxhcHNlZCA9IFNlbGVjdGlvbi5pc0NvbGxhcHNlZChuZXdTZWxlY3Rpb24pO1xuICAgIGlmIChpc0NvbGxhcHNlZCkge1xuICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0RWxlbWVudEJ5UG9pbnQoYm9hcmQsIG5ld1NlbGVjdGlvbi5hbmNob3IsIG1hdGNoKTtcbiAgICAgICAgaWYgKGhpdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbaGl0RWxlbWVudF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxBbmNlc3Rvcj4oXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgIGlmICghUGxhaXRCb2FyZC5pc0JvYXJkKG5vZGUpICYmIG1hdGNoKG5vZGUpICYmIGJvYXJkLmlzUmVjdGFuZ2xlSGl0KG5vZGUsIG5ld1NlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGVIaXRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMoYm9hcmQpLFxuICAgICAgICB0cnVlXG4gICAgKTtcbiAgICByZXR1cm4gcmVjdGFuZ2xlSGl0RWxlbWVudHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0RWxlbWVudEJ5UG9pbnQgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcG9pbnQ6IFBvaW50LFxuICAgIG1hdGNoOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZVxuKTogdW5kZWZpbmVkIHwgUGxhaXRFbGVtZW50ID0+IHtcbiAgICBsZXQgaGl0RWxlbWVudDogUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGxldCBoaXRJbnNpZGVFbGVtZW50OiBQbGFpdEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxBbmNlc3Rvcj4oXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSB8fCAhbWF0Y2gobm9kZSkgfHwgIVBsYWl0RWxlbWVudC5oYXNNb3VudGVkKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJvYXJkLmlzSGl0KG5vZGUsIHBvaW50KSkge1xuICAgICAgICAgICAgICAgIGhpdEVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiDpnIDopoHlop7liqDlnLrmma/mtYvor5VcbiAgICAgICAgICAgICAqIGhpdEluc2lkZUVsZW1lbnQg5a2Y55qE5piv56ys5LiA5Liq56ym5ZCIIGlzSW5zaWRlUG9pbnQg55qE5YWD57SgXG4gICAgICAgICAgICAgKiDlvZPmnInlhYPntKDnrKblkIggaXNIaXQg5pe257uT5p2f6YGN5Y6G77yM5bm26L+U5ZueIGhpdEVsZW1lbnRcbiAgICAgICAgICAgICAqIOW9k+aJgOacieWFg+e0oOmDveS4jeespuWQiCBpc0hpdCDvvIzliJnov5Tlm57nrKzkuIDkuKrnrKblkIggaXNJbnNpZGVQb2ludCDnmoTlhYPntKBcbiAgICAgICAgICAgICAqIOi/meagt+S/neivgeacgOS4iumdoueahOWFg+e0oOS8mOWFiOiiq+aOoua1i+WIsO+8m1xuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGlmICghaGl0SW5zaWRlRWxlbWVudCAmJiBib2FyZC5pc0luc2lkZVBvaW50KG5vZGUsIHBvaW50KSkge1xuICAgICAgICAgICAgICAgIGhpdEluc2lkZUVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMoYm9hcmQpLFxuICAgICAgICB0cnVlXG4gICAgKTtcbiAgICByZXR1cm4gaGl0RWxlbWVudCB8fCBoaXRJbnNpZGVFbGVtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdFNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjb25zdCB0YXJnZXRSZWN0YW5nbGUgPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IGlzSW5UYXJnZXRSZWN0YW5nbGUgPSB0YXJnZXRSZWN0YW5nbGUgJiYgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRSZWN0YW5nbGUsIHBvaW50KTtcbiAgICBpZiAoaXNJblRhcmdldFJlY3RhbmdsZSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNhY2hlU2VsZWN0ZWRFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzb3J0ZWRFbGVtZW50cyA9IHNvcnRFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVC5zZXQoYm9hcmQsIHNvcnRlZEVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQuZ2V0KGJvYXJkKSB8fCBbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IGVsZW1lbnRzID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudCkpIHtcbiAgICAgICAgZWxlbWVudHMucHVzaCguLi5lbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4uc2VsZWN0ZWRFbGVtZW50cywgLi4uZWxlbWVudHNdKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgaXNSZW1vdmVDaGlsZHJlbiA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICBpZiAoYm9hcmQuaXNSZWN1cnNpb24oZWxlbWVudCkgJiYgaXNSZW1vdmVDaGlsZHJlbikge1xuICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbihcbiAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbm9kZSA9PiBib2FyZC5pc1JlY3Vyc2lvbihub2RlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+ICF0YXJnZXRFbGVtZW50cy5pbmNsdWRlcyh2YWx1ZSkpO1xuICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhclNlbGVjdGVkRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgW10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuICEhc2VsZWN0ZWRFbGVtZW50cy5maW5kKHZhbHVlID0+IHZhbHVlID09PSBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCB0ZW1wb3JhcnlEaXNhYmxlU2VsZWN0aW9uID0gKGJvYXJkOiBQbGFpdE9wdGlvbnNCb2FyZCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gYm9hcmQuZ2V0UGx1Z2luT3B0aW9ucyhQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICBib2FyZC5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IHRydWVcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgYm9hcmQuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwgeyAuLi5jdXJyZW50T3B0aW9ucyB9KTtcbiAgICB9LCAwKTtcbn07XG4iXX0=
|
|
@@ -5,8 +5,7 @@ import { getRectangleByElements } from './element';
|
|
|
5
5
|
import { BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_TEMPORARY_ELEMENTS } from './weak-maps';
|
|
6
6
|
import { drawRectangle } from './drawing/rectangle';
|
|
7
7
|
import { cacheSelectedElements, getSelectedElements } from './selected-element';
|
|
8
|
-
import { getSelectionAngle } from './angle';
|
|
9
|
-
import { setAngleForG } from './dom';
|
|
8
|
+
import { getSelectionAngle, setAngleForG } from './angle';
|
|
10
9
|
import { filterSelectedGroups, getAllElementsInGroup, getElementsInGroup, getElementsInGroupByElement, getGroupByElement } from './group';
|
|
11
10
|
import { uniqueById } from './helper';
|
|
12
11
|
import { Selection } from '../interfaces/selection';
|
|
@@ -140,4 +139,4 @@ export function cacheSelectedElementsWithGroup(board, elements, isSelectGroupEle
|
|
|
140
139
|
}
|
|
141
140
|
cacheSelectedElements(board, uniqueById(newElements));
|
|
142
141
|
}
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUE0QixjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXBELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFpQjtJQUMvQyxPQUFPLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFpQjtJQUNoRCxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RFLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWlCO0lBQ2xELFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekUsNEJBQTRCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFpQjtJQUMvQyxNQUFNLE9BQU8sR0FBSSxLQUEyQixDQUFDLGdCQUFnQixDQUFvQixjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0csT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakgsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxLQUFpQjtJQUNyRCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFpQjtJQUNsRCxNQUFNLEdBQUcsR0FBRywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNOLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFpQjtJQUM3QyxPQUFPLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWlCO0lBQ3JELDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEtBQWlCO0lBQ3hELE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsSUFBSSxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RHLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxTQUFTLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUM7UUFDSCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEUsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxPQUFPLG1CQUFtQixDQUFDO0lBQy9CLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEtBQWlCLEVBQUUsUUFBd0IsRUFBRSxPQUFnQjtJQUN0RyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLE9BQU87SUFDWCxDQUFDO0lBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLFdBQVcsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsT0FBTztJQUNYLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQWlCLENBQUM7UUFDcEYsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixNQUFNLHNCQUFzQixHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BILE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoSSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLHFDQUFxQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUN6RyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osOEJBQThCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzVGLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUscUNBQXFDLENBQ2pELEtBQWlCLEVBQ2pCLFFBQXdCLEVBQ3hCLG9CQUE2QixFQUM3QixzQkFBc0M7SUFFdEMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLFdBQVcsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUN4QyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxlQUFlLEdBQW1CLEVBQUUsQ0FBQztJQUN6QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN4QixlQUFlLEdBQUcsc0JBQXNCLENBQUM7SUFDN0MsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sdUJBQXVCLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ3ZCLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO2FBQU0sQ0FBQztZQUNKLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDTCxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3JDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELHFCQUFxQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUMxQyxLQUFpQixFQUNqQixRQUF3QixFQUN4QixvQkFBNkIsRUFDN0IsZ0JBQThCO0lBRTlCLElBQUksV0FBVyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUNoQyxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUIsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEcsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ0osTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN4QixXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQ1RJVkVfU1RST0tFX1dJRFRILCBTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQbGFpdEdyb3VwLCBQbGFpdFBsdWdpbktleSwgUGxhaXRQb2ludGVyVHlwZSwgUmVjdGFuZ2xlQ2xpZW50LCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBzZXREcmFnZ2luZyB9IGZyb20gJy4vZG5kJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORywgQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTIH0gZnJvbSAnLi93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgZHJhd1JlY3RhbmdsZSB9IGZyb20gJy4vZHJhd2luZy9yZWN0YW5nbGUnO1xuaW1wb3J0IHsgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnLi9zZWxlY3RlZC1lbGVtZW50JztcbmltcG9ydCB7IGdldFNlbGVjdGlvbkFuZ2xlIH0gZnJvbSAnLi9hbmdsZSc7XG5pbXBvcnQgeyBzZXRBbmdsZUZvckcgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBmaWx0ZXJTZWxlY3RlZEdyb3VwcywgZ2V0QWxsRWxlbWVudHNJbkdyb3VwLCBnZXRFbGVtZW50c0luR3JvdXAsIGdldEVsZW1lbnRzSW5Hcm91cEJ5RWxlbWVudCwgZ2V0R3JvdXBCeUVsZW1lbnQgfSBmcm9tICcuL2dyb3VwJztcbmltcG9ydCB7IHVuaXF1ZUJ5SWQgfSBmcm9tICcuL2hlbHBlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBQbGFpdE9wdGlvbnNCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFdpdGhQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXNlbGVjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGlvbk1vdmluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiAhIUJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcuZ2V0KGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlbGVjdGlvbk1vdmluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGlvbi1tb3ZpbmcnKTtcbiAgICBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLnNldChib2FyZCwgdHJ1ZSk7XG4gICAgc2V0RHJhZ2dpbmcoYm9hcmQsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3Rpb24tbW92aW5nJyk7XG4gICAgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORy5kZWxldGUoYm9hcmQpO1xuICAgIHNldERyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hhbmRsZVNlbGVjdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgIHJldHVybiBib2FyZC5wb2ludGVyICE9PSBQbGFpdFBvaW50ZXJUeXBlLmhhbmQgJiYgIW9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCAmJiAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2V0U2VsZWN0aW9uT3BlcmF0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgcmV0dXJuICEhYm9hcmQub3BlcmF0aW9ucy5maW5kKHZhbHVlID0+IHZhbHVlLnR5cGUgPT09ICdzZXRfc2VsZWN0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHJlZiA9IEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUy5nZXQoYm9hcmQpO1xuICAgIGlmIChyZWYpIHtcbiAgICAgICAgcmV0dXJuIHJlZi5lbGVtZW50cztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVJlZihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMuZ2V0KGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLmRlbGV0ZShib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3RW50aXJlQWN0aXZlUmVjdGFuZ2xlRyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBpZiAocmVjdGFuZ2xlLndpZHRoID4gMCAmJiByZWN0YW5nbGUuaGVpZ2h0ID4gMCAmJiBlbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZUcgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpLCB7XG4gICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRy5jbGFzc0xpc3QuYWRkKFNFTEVDVElPTl9SRUNUQU5HTEVfQ0xBU1NfTkFNRSk7XG4gICAgICAgIGNvbnN0IGFuZ2xlID0gZ2V0U2VsZWN0aW9uQW5nbGUoZWxlbWVudHMpO1xuICAgICAgICBpZiAoYW5nbGUpIHtcbiAgICAgICAgICAgIHNldEFuZ2xlRm9yRyhzZWxlY3Rpb25SZWN0YW5nbGVHLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKSwgYW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb25SZWN0YW5nbGVHO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlbGVjdGVkRWxlbWVudHNXaXRoR3JvdXAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSwgaXNTaGlmdDogYm9vbGVhbikge1xuICAgIGlmICghYm9hcmQuc2VsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGlmICghU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgbGV0IG5ld0VsZW1lbnRzID0gWy4uLnNlbGVjdGVkRWxlbWVudHNdO1xuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKCFpdGVtLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKC4uLmdldEVsZW1lbnRzSW5Hcm91cEJ5RWxlbWVudChib2FyZCwgaXRlbSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCB1bmlxdWVCeUlkKG5ld0VsZW1lbnRzKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFNlbGVjdGlvbi5pc0NvbGxhcHNlZChib2FyZC5zZWxlY3Rpb24pKSB7XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBlbGVtZW50c1swXTtcbiAgICAgICAgY29uc3QgaGl0RWxlbWVudEdyb3VwcyA9IGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBoaXRFbGVtZW50LCB0cnVlKSBhcyBQbGFpdEdyb3VwW107XG4gICAgICAgIGlmIChoaXRFbGVtZW50R3JvdXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNJbkhpZ2hlc3RHcm91cCA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgaGl0RWxlbWVudEdyb3Vwc1toaXRFbGVtZW50R3JvdXBzLmxlbmd0aCAtIDFdLCB0cnVlKSB8fCBbXTtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0R3JvdXBFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudHNJbkhpZ2hlc3RHcm91cC5tYXAoaXRlbSA9PiBpdGVtLmlkKS5pbmNsdWRlcyhlbGVtZW50LmlkKSk7XG4gICAgICAgICAgICBpZiAoaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cE9uU2hpZnQoYm9hcmQsIGVsZW1lbnRzLCBpc1NlbGVjdEdyb3VwRWxlbWVudCwgZWxlbWVudHNJbkhpZ2hlc3RHcm91cCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cChib2FyZCwgZWxlbWVudHMsIGlzU2VsZWN0R3JvdXBFbGVtZW50LCBoaXRFbGVtZW50R3JvdXBzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlU2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cE9uU2hpZnQoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLFxuICAgIGlzU2VsZWN0R3JvdXBFbGVtZW50OiBib29sZWFuLFxuICAgIGVsZW1lbnRzSW5IaWdoZXN0R3JvdXA6IFBsYWl0RWxlbWVudFtdXG4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgbGV0IG5ld0VsZW1lbnRzID0gWy4uLnNlbGVjdGVkRWxlbWVudHNdO1xuICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBlbGVtZW50c1swXTtcbiAgICBsZXQgcGVuZGluZ0VsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGlmICghaXNTZWxlY3RHcm91cEVsZW1lbnQpIHtcbiAgICAgICAgcGVuZGluZ0VsZW1lbnRzID0gZWxlbWVudHNJbkhpZ2hlc3RHcm91cDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpc0hpdFNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMuc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IGhpdEVsZW1lbnQuaWQpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzSW5Hcm91cCA9IGVsZW1lbnRzSW5IaWdoZXN0R3JvdXAuZmlsdGVyKGl0ZW0gPT4gc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhpdGVtKSk7XG4gICAgICAgIGlmIChpc0hpdFNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgICAgICAgcGVuZGluZ0VsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50c0luR3JvdXAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pZCAhPT0gaGl0RWxlbWVudC5pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZW5kaW5nRWxlbWVudHMucHVzaCguLi5zZWxlY3RlZEVsZW1lbnRzSW5Hcm91cCwgLi4uZWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsZW1lbnRzSW5IaWdoZXN0R3JvdXAuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBuZXdFbGVtZW50cy5zcGxpY2UobmV3RWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocGVuZGluZ0VsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBuZXdFbGVtZW50cy5wdXNoKC4uLnBlbmRpbmdFbGVtZW50cyk7XG4gICAgfVxuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgdW5pcXVlQnlJZChuZXdFbGVtZW50cykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVTZWxlY3RlZEVsZW1lbnRzV2l0aEdyb3VwKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSxcbiAgICBpc1NlbGVjdEdyb3VwRWxlbWVudDogYm9vbGVhbixcbiAgICBoaXRFbGVtZW50R3JvdXBzOiBQbGFpdEdyb3VwW11cbikge1xuICAgIGxldCBuZXdFbGVtZW50cyA9IFsuLi5lbGVtZW50c107XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBmaWx0ZXJTZWxlY3RlZEdyb3Vwcyhib2FyZCwgaGl0RWxlbWVudEdyb3Vwcyk7XG4gICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIG5ld0VsZW1lbnRzID0gZ2V0QWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBzZWxlY3RlZEdyb3Vwc1tzZWxlY3RlZEdyb3Vwcy5sZW5ndGggLSAyXSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbGVtZW50c0luR3JvdXAgPSBnZXRBbGxFbGVtZW50c0luR3JvdXAoYm9hcmQsIGhpdEVsZW1lbnRHcm91cHNbaGl0RWxlbWVudEdyb3Vwcy5sZW5ndGggLSAxXSwgdHJ1ZSk7XG4gICAgICAgIGlmICghaXNTZWxlY3RHcm91cEVsZW1lbnQpIHtcbiAgICAgICAgICAgIG5ld0VsZW1lbnRzID0gZWxlbWVudHNJbkdyb3VwO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgdW5pcXVlQnlJZChuZXdFbGVtZW50cykpO1xufVxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUE0QixjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJcEQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWlCO0lBQy9DLE9BQU8sQ0FBQyxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWlCO0lBQ2hELFVBQVUsQ0FBQyxpQkFB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QyxDQUFDO0lBQ3JFLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QixJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsV0FBVyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRyxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3hCLFdBQVcsR0FBRyxlQUFlLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFDVElWRV9TVFJPS0VfV0lEVEgsIFNFTEVDVElPTl9SRUNUQU5HTEVfQ0xBU1NfTkFNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0R3JvdXAsIFBsYWl0UGx1Z2luS2V5LCBQbGFpdFBvaW50ZXJUeXBlLCBSZWN0YW5nbGVDbGllbnQsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHNldERyYWdnaW5nIH0gZnJvbSAnLi9kbmQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLCBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgfSBmcm9tICcuL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBkcmF3UmVjdGFuZ2xlIH0gZnJvbSAnLi9kcmF3aW5nL3JlY3RhbmdsZSc7XG5pbXBvcnQgeyBjYWNoZVNlbGVjdGVkRWxlbWVudHMsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICcuL3NlbGVjdGVkLWVsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0aW9uQW5nbGUsIHNldEFuZ2xlRm9yRyB9IGZyb20gJy4vYW5nbGUnO1xuaW1wb3J0IHsgZmlsdGVyU2VsZWN0ZWRHcm91cHMsIGdldEFsbEVsZW1lbnRzSW5Hcm91cCwgZ2V0RWxlbWVudHNJbkdyb3VwLCBnZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnQsIGdldEdyb3VwQnlFbGVtZW50IH0gZnJvbSAnLi9ncm91cCc7XG5pbXBvcnQgeyB1bmlxdWVCeUlkIH0gZnJvbSAnLi9oZWxwZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBXaXRoUGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1zZWxlY3Rpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gISFCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKCdzZWxlY3Rpb24tbW92aW5nJyk7XG4gICAgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORy5zZXQoYm9hcmQsIHRydWUpO1xuICAgIHNldERyYWdnaW5nKGJvYXJkLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0aW9uLW1vdmluZycpO1xuICAgIEJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcuZGVsZXRlKGJvYXJkKTtcbiAgICBzZXREcmFnZ2luZyhib2FyZCwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICByZXR1cm4gYm9hcmQucG9pbnRlciAhPT0gUGxhaXRQb2ludGVyVHlwZS5oYW5kICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QgJiYgIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiAhIWJvYXJkLm9wZXJhdGlvbnMuZmluZCh2YWx1ZSA9PiB2YWx1ZS50eXBlID09PSAnc2V0X3NlbGVjdGlvbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCByZWYgPSBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMuZ2V0KGJvYXJkKTtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJldHVybiByZWYuZWxlbWVudHM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wb3JhcnlSZWYoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUy5kZWxldGUoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0VudGlyZUFjdGl2ZVJlY3RhbmdsZUcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgaWYgKHJlY3RhbmdsZS53aWR0aCA+IDAgJiYgcmVjdGFuZ2xlLmhlaWdodCA+IDAgJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25SZWN0YW5nbGVHID0gZHJhd1JlY3RhbmdsZShib2FyZCwgUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBQ1RJVkVfU1RST0tFX1dJRFRIKSwge1xuICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcuY2xhc3NMaXN0LmFkZChTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUpO1xuICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKGVsZW1lbnRzKTtcbiAgICAgICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgICAgICBzZXRBbmdsZUZvckcoc2VsZWN0aW9uUmVjdGFuZ2xlRywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3RhbmdsZSksIGFuZ2xlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0aW9uUmVjdGFuZ2xlRztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3RlZEVsZW1lbnRzV2l0aEdyb3VwKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIGlzU2hpZnQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoIWJvYXJkLnNlbGVjdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBpZiAoIVNlbGVjdGlvbi5pc0NvbGxhcHNlZChib2FyZC5zZWxlY3Rpb24pKSB7XG4gICAgICAgIGxldCBuZXdFbGVtZW50cyA9IFsuLi5zZWxlY3RlZEVsZW1lbnRzXTtcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghaXRlbS5ncm91cElkKSB7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaCguLi5nZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnQoYm9hcmQsIGl0ZW0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgdW5pcXVlQnlJZChuZXdFbGVtZW50cykpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChTZWxlY3Rpb24uaXNDb2xsYXBzZWQoYm9hcmQuc2VsZWN0aW9uKSkge1xuICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZWxlbWVudHNbMF07XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnRHcm91cHMgPSBnZXRHcm91cEJ5RWxlbWVudChib2FyZCwgaGl0RWxlbWVudCwgdHJ1ZSkgYXMgUGxhaXRHcm91cFtdO1xuICAgICAgICBpZiAoaGl0RWxlbWVudEdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzSW5IaWdoZXN0R3JvdXAgPSBnZXRFbGVtZW50c0luR3JvdXAoYm9hcmQsIGhpdEVsZW1lbnRHcm91cHNbaGl0RWxlbWVudEdyb3Vwcy5sZW5ndGggLSAxXSwgdHJ1ZSkgfHwgW107XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdEdyb3VwRWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMuc29tZShlbGVtZW50ID0+IGVsZW1lbnRzSW5IaWdoZXN0R3JvdXAubWFwKGl0ZW0gPT4gaXRlbS5pZCkuaW5jbHVkZXMoZWxlbWVudC5pZCkpO1xuICAgICAgICAgICAgaWYgKGlzU2hpZnQpIHtcbiAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHNXaXRoR3JvdXBPblNoaWZ0KGJvYXJkLCBlbGVtZW50cywgaXNTZWxlY3RHcm91cEVsZW1lbnQsIGVsZW1lbnRzSW5IaWdoZXN0R3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHNXaXRoR3JvdXAoYm9hcmQsIGVsZW1lbnRzLCBpc1NlbGVjdEdyb3VwRWxlbWVudCwgaGl0RWxlbWVudEdyb3Vwcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZVNlbGVjdGVkRWxlbWVudHNXaXRoR3JvdXBPblNoaWZ0KFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSxcbiAgICBpc1NlbGVjdEdyb3VwRWxlbWVudDogYm9vbGVhbixcbiAgICBlbGVtZW50c0luSGlnaGVzdEdyb3VwOiBQbGFpdEVsZW1lbnRbXVxuKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGxldCBuZXdFbGVtZW50cyA9IFsuLi5zZWxlY3RlZEVsZW1lbnRzXTtcbiAgICBjb25zdCBoaXRFbGVtZW50ID0gZWxlbWVudHNbMF07XG4gICAgbGV0IHBlbmRpbmdFbGVtZW50czogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICBpZiAoIWlzU2VsZWN0R3JvdXBFbGVtZW50KSB7XG4gICAgICAgIHBlbmRpbmdFbGVtZW50cyA9IGVsZW1lbnRzSW5IaWdoZXN0R3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNIaXRTZWxlY3RlZEVsZW1lbnQgPSBzZWxlY3RlZEVsZW1lbnRzLnNvbWUoaXRlbSA9PiBpdGVtLmlkID09PSBoaXRFbGVtZW50LmlkKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c0luR3JvdXAgPSBlbGVtZW50c0luSGlnaGVzdEdyb3VwLmZpbHRlcihpdGVtID0+IHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoaXRlbSkpO1xuICAgICAgICBpZiAoaXNIaXRTZWxlY3RlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBlbmRpbmdFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHNJbkdyb3VwLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgIT09IGhpdEVsZW1lbnQuaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVuZGluZ0VsZW1lbnRzLnB1c2goLi4uc2VsZWN0ZWRFbGVtZW50c0luR3JvdXAsIC4uLmVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbGVtZW50c0luSGlnaGVzdEdyb3VwLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgbmV3RWxlbWVudHMuc3BsaWNlKG5ld0VsZW1lbnRzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHBlbmRpbmdFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgbmV3RWxlbWVudHMucHVzaCguLi5wZW5kaW5nRWxlbWVudHMpO1xuICAgIH1cbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIHVuaXF1ZUJ5SWQobmV3RWxlbWVudHMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlU2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50czogUGxhaXRFbGVtZW50W10sXG4gICAgaXNTZWxlY3RHcm91cEVsZW1lbnQ6IGJvb2xlYW4sXG4gICAgaGl0RWxlbWVudEdyb3VwczogUGxhaXRHcm91cFtdXG4pIHtcbiAgICBsZXQgbmV3RWxlbWVudHMgPSBbLi4uZWxlbWVudHNdO1xuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZmlsdGVyU2VsZWN0ZWRHcm91cHMoYm9hcmQsIGhpdEVsZW1lbnRHcm91cHMpO1xuICAgIGlmIChzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBuZXdFbGVtZW50cyA9IGdldEFsbEVsZW1lbnRzSW5Hcm91cChib2FyZCwgc2VsZWN0ZWRHcm91cHNbc2VsZWN0ZWRHcm91cHMubGVuZ3RoIC0gMl0sIHRydWUpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gZ2V0QWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBoaXRFbGVtZW50R3JvdXBzW2hpdEVsZW1lbnRHcm91cHMubGVuZ3RoIC0gMV0sIHRydWUpO1xuICAgICAgICBpZiAoIWlzU2VsZWN0R3JvdXBFbGVtZW50KSB7XG4gICAgICAgICAgICBuZXdFbGVtZW50cyA9IGVsZW1lbnRzSW5Hcm91cDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIHVuaXF1ZUJ5SWQobmV3RWxlbWVudHMpKTtcbn1cbiJdfQ==
|
|
@@ -22,4 +22,5 @@ export const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
|
|
|
22
22
|
export const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
|
|
23
23
|
export const BOARD_TO_MOVING_ELEMENT = new WeakMap();
|
|
24
24
|
export const PATH_REFS = new WeakMap();
|
|
25
|
-
|
|
25
|
+
export const ELEMENT_TO_REF = new WeakMap();
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvd2Vhay1tYXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRS9ELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBUzdDLENBQUM7QUFFSixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUUvRSxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQTRELENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7QUFFakYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFzQyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBMkMsSUFBSSxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IEJvYXJkQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi4vYm9hcmQvYm9hcmQuY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IEFuY2VzdG9yLCBQbGFpdE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgUGF0aFJlZiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGF0aC1yZWYnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50UmVmIH0gZnJvbSAnLi4vY29yZS9lbGVtZW50L2VsZW1lbnQtcmVmJztcblxuLy8gcmVjb3JkIHJpY2h0ZXh0IHR5cGUgc3RhdHVzXG5leHBvcnQgY29uc3QgSVNfQk9BUkRfQ0FDSEUgPSBuZXcgV2Vha01hcDxPYmplY3QsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBGTFVTSElORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX0lOREVYID0gbmV3IFdlYWtNYXA8UGxhaXROb2RlLCBudW1iZXI+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX1BBUkVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Tm9kZSwgQW5jZXN0b3I+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX0cgPSBuZXcgV2Vha01hcDxQbGFpdE5vZGUsIFNWR0dFbGVtZW50PigpO1xuXG5leHBvcnQgY29uc3QgTk9ERV9UT19DT05UQUlORVJfRyA9IG5ldyBXZWFrTWFwPFBsYWl0Tm9kZSwgU1ZHR0VsZW1lbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBJU19URVhUX0VESVRBQkxFID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX09OX0NIQU5HRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsICgpID0+IHZvaWQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19BRlRFUl9DSEFOR0UgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCAoKSA9PiB2b2lkPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fQ09NUE9ORU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgQm9hcmRDb21wb25lbnRJbnRlcmZhY2U+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19ST1VHSF9TVkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBSb3VnaFNWRz4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX0hPU1QgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBTVkdTVkdFbGVtZW50PigpO1xuXG5leHBvcnQgY29uc3QgSVNfQk9BUkRfQUxJVkUgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fRUxFTUVOVF9IT1NUID0gbmV3IFdlYWtNYXA8XG4gICAgUGxhaXRCb2FyZCxcbiAgICB7XG4gICAgICAgIGhvc3Q6IFNWR0dFbGVtZW50O1xuICAgICAgICB1cHBlckhvc3Q6IFNWR0dFbGVtZW50O1xuICAgICAgICBhY3RpdmVIb3N0OiBTVkdHRWxlbWVudDtcbiAgICAgICAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgICAgICAgdmlld3BvcnRDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICAgIH1cbj4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnRbXT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBvaW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fTU9WSU5HX1BPSU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUG9pbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19WSUVXUE9SVF9PUklHSU5BVElPTiA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBvaW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbi8vIHNhdmUgbm8gc3RhbmRhcmQgc2VsZWN0ZWQgZWxlbWVudHNcbmV4cG9ydCBjb25zdCBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCB7IGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTsgdGltZW91dElkOiBhbnkgfT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX01PVklOR19FTEVNRU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50W10+KCk7XG5cbmV4cG9ydCBjb25zdCBQQVRIX1JFRlM6IFdlYWtNYXA8UGxhaXRCb2FyZCwgU2V0PFBhdGhSZWY+PiA9IG5ldyBXZWFrTWFwKCk7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1RPX1JFRjogV2Vha01hcDxQbGFpdEVsZW1lbnQsIFBsYWl0RWxlbWVudFJlZj4gPSBuZXcgV2Vha01hcCgpO1xuIl19
|