clipper2-ts 2.0.1-7 → 2.0.1-9
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/README.md +12 -10
- package/dist/Core.d.ts +126 -98
- package/dist/Core.d.ts.map +1 -1
- package/dist/Core.js +610 -655
- package/dist/Core.js.map +1 -1
- package/dist/Engine.d.ts +12 -17
- package/dist/Engine.d.ts.map +1 -1
- package/dist/Engine.js +70 -80
- package/dist/Engine.js.map +1 -1
- package/dist/Minkowski.d.ts +6 -6
- package/dist/Minkowski.d.ts.map +1 -1
- package/dist/Minkowski.js +92 -99
- package/dist/Minkowski.js.map +1 -1
- package/dist/Offset.d.ts.map +1 -1
- package/dist/Offset.js +6 -3
- package/dist/Offset.js.map +1 -1
- package/dist/RectClip.d.ts +1 -0
- package/dist/RectClip.d.ts.map +1 -1
- package/dist/RectClip.js +130 -93
- package/dist/RectClip.js.map +1 -1
- package/dist/Triangulation.d.ts.map +1 -1
- package/dist/Triangulation.js +21 -23
- package/dist/Triangulation.js.map +1 -1
- package/dist/clipper2.min.mjs +7 -0
- package/dist/clipper2.min.mjs.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +10 -2
- package/src/Core.ts +617 -583
- package/src/Engine.ts +70 -73
- package/src/Minkowski.ts +102 -105
- package/src/Offset.ts +6 -3
- package/src/RectClip.ts +63 -114
- package/src/Triangulation.ts +20 -22
- package/src/index.ts +14 -12
- package/dist/OutPtPool.d.ts +0 -12
- package/dist/OutPtPool.d.ts.map +0 -1
- package/dist/OutPtPool.js +0 -40
- package/dist/OutPtPool.js.map +0 -1
- package/dist/VertexPool.d.ts +0 -12
- package/dist/VertexPool.d.ts.map +0 -1
- package/dist/VertexPool.js +0 -31
- package/dist/VertexPool.js.map +0 -1
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ npm install clipper2-ts
|
|
|
14
14
|
## Usage
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
17
|
-
import {
|
|
17
|
+
import { intersect, union, difference, xor, inflatePaths, FillRule, JoinType, EndType } from 'clipper2-ts';
|
|
18
18
|
|
|
19
19
|
// Define polygons as arrays of points
|
|
20
20
|
const subject = [[
|
|
@@ -32,13 +32,13 @@ const clip = [[
|
|
|
32
32
|
]];
|
|
33
33
|
|
|
34
34
|
// Boolean operations
|
|
35
|
-
const intersection =
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
35
|
+
const intersection = intersect(subject, clip, FillRule.NonZero);
|
|
36
|
+
const unionResult = union(subject, clip, FillRule.NonZero);
|
|
37
|
+
const diff = difference(subject, clip, FillRule.NonZero);
|
|
38
|
+
const xorResult = xor(subject, clip, FillRule.NonZero);
|
|
39
39
|
|
|
40
40
|
// Polygon offsetting (inflate/deflate)
|
|
41
|
-
const offset =
|
|
41
|
+
const offset = inflatePaths(subject, 10, JoinType.Round, EndType.Polygon);
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
### Triangulation
|
|
@@ -46,7 +46,7 @@ const offset = Clipper.inflatePaths(subject, 10, JoinType.Round, EndType.Polygon
|
|
|
46
46
|
Convert polygons into triangles using constrained Delaunay triangulation:
|
|
47
47
|
|
|
48
48
|
```typescript
|
|
49
|
-
import {
|
|
49
|
+
import { triangulate, triangulateD, TriangulateResult } from 'clipper2-ts';
|
|
50
50
|
|
|
51
51
|
const polygon = [[
|
|
52
52
|
{ x: 0, y: 0 },
|
|
@@ -55,14 +55,14 @@ const polygon = [[
|
|
|
55
55
|
{ x: 0, y: 100 }
|
|
56
56
|
]];
|
|
57
57
|
|
|
58
|
-
const { result, solution } =
|
|
58
|
+
const { result, solution } = triangulate(polygon);
|
|
59
59
|
if (result === TriangulateResult.success) {
|
|
60
60
|
// solution contains triangles (each with 3 vertices)
|
|
61
61
|
console.log(`Created ${solution.length} triangles`);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// For floating-point coordinates:
|
|
65
|
-
const { result: resultD, solution: solutionD } =
|
|
65
|
+
const { result: resultD, solution: solutionD } = triangulateD(polygon, 2);
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
### Z-coordinate support
|
|
@@ -114,4 +114,6 @@ Boost Software License 1.0 (same as Clipper2)
|
|
|
114
114
|
|
|
115
115
|
## Credits
|
|
116
116
|
|
|
117
|
-
Original library by Angus Johnson. TypeScript port maintained by Jeremy Tribby
|
|
117
|
+
Original Clipper2 library by Angus Johnson. TypeScript port maintained by Jeremy Tribby
|
|
118
|
+
|
|
119
|
+
Benchmark polygon data from [Poly2Tri](https://github.com/jhasse/poly2tri) (BSD 3-clause). See `LICENSE_THIRD_PARTY` for details
|
package/dist/Core.d.ts
CHANGED
|
@@ -56,106 +56,134 @@ export declare enum PointInPolygonResult {
|
|
|
56
56
|
}
|
|
57
57
|
export type ZCallback64 = (bot1: Point64, top1: Point64, bot2: Point64, top2: Point64, intersectPt: Point64) => void;
|
|
58
58
|
export type ZCallbackD = (bot1: PointD, top1: PointD, bot2: PointD, top2: PointD, intersectPt: PointD) => void;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
function checkSafeScaleValue(value: number, maxAbs: number, context: string): void;
|
|
71
|
-
function ensureSafeInteger(value: number, context: string): void;
|
|
72
|
-
function crossProduct(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
73
|
-
function crossProductSign(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
74
|
-
function checkPrecision(precision: number): void;
|
|
75
|
-
function isAlmostZero(value: number): boolean;
|
|
76
|
-
function triSign(x: number): number;
|
|
77
|
-
interface UInt128Struct {
|
|
78
|
-
lo64: bigint;
|
|
79
|
-
hi64: bigint;
|
|
80
|
-
}
|
|
81
|
-
function multiplyUInt64(a: number, b: number): UInt128Struct;
|
|
82
|
-
function productsAreEqual(a: number, b: number, c: number, d: number): boolean;
|
|
83
|
-
function isCollinear(pt1: Point64, sharedPt: Point64, pt2: Point64): boolean;
|
|
84
|
-
function dotProduct(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
85
|
-
function dotProductSign(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
86
|
-
function area(path: Path64): number;
|
|
87
|
-
function crossProductD(vec1: PointD, vec2: PointD): number;
|
|
88
|
-
function dotProductD(vec1: PointD, vec2: PointD): number;
|
|
89
|
-
function roundToEven(value: number): number;
|
|
90
|
-
function checkCastInt64(val: number): number;
|
|
91
|
-
function getLineIntersectPt(ln1a: Point64, ln1b: Point64, ln2a: Point64, ln2b: Point64): {
|
|
92
|
-
intersects: boolean;
|
|
93
|
-
point: Point64;
|
|
94
|
-
};
|
|
95
|
-
function getLineIntersectPtD(ln1a: PointD, ln1b: PointD, ln2a: PointD, ln2b: PointD): {
|
|
96
|
-
success: boolean;
|
|
97
|
-
ip: PointD;
|
|
98
|
-
};
|
|
99
|
-
function segsIntersect(seg1a: Point64, seg1b: Point64, seg2a: Point64, seg2b: Point64, inclusive?: boolean): boolean;
|
|
100
|
-
function getBounds(path: Path64): Rect64;
|
|
101
|
-
function getClosestPtOnSegment(offPt: Point64, seg1: Point64, seg2: Point64): Point64;
|
|
102
|
-
function pointInPolygon(pt: Point64, polygon: Path64): PointInPolygonResult;
|
|
103
|
-
function path2ContainsPath1(path1: Path64, path2: Path64): boolean;
|
|
104
|
-
}
|
|
105
|
-
export declare namespace Point64Utils {
|
|
106
|
-
function create(x?: number, y?: number, z?: number): Point64;
|
|
107
|
-
function fromPointD(pt: PointD): Point64;
|
|
108
|
-
function scale(pt: Point64, scale: number): Point64;
|
|
109
|
-
function equals(a: Point64, b: Point64): boolean;
|
|
110
|
-
function add(a: Point64, b: Point64): Point64;
|
|
111
|
-
function subtract(a: Point64, b: Point64): Point64;
|
|
112
|
-
function toString(pt: Point64): string;
|
|
113
|
-
}
|
|
114
|
-
export declare namespace PointDUtils {
|
|
115
|
-
function create(x?: number, y?: number, z?: number): PointD;
|
|
116
|
-
function fromPoint64(pt: Point64): PointD;
|
|
117
|
-
function scale(pt: PointD, scale: number): PointD;
|
|
118
|
-
function equals(a: PointD, b: PointD): boolean;
|
|
119
|
-
function negate(pt: PointD): void;
|
|
120
|
-
function toString(pt: PointD, precision?: number): string;
|
|
121
|
-
}
|
|
122
|
-
export declare namespace Rect64Utils {
|
|
123
|
-
function create(l?: number, t?: number, r?: number, b?: number): Rect64;
|
|
124
|
-
function createInvalid(): Rect64;
|
|
125
|
-
function width(rect: Rect64): number;
|
|
126
|
-
function height(rect: Rect64): number;
|
|
127
|
-
function isEmpty(rect: Rect64): boolean;
|
|
128
|
-
function isValid(rect: Rect64): boolean;
|
|
129
|
-
function midPoint(rect: Rect64): Point64;
|
|
130
|
-
function contains(rect: Rect64, pt: Point64): boolean;
|
|
131
|
-
function containsRect(rect: Rect64, rec: Rect64): boolean;
|
|
132
|
-
function intersects(rect: Rect64, rec: Rect64): boolean;
|
|
133
|
-
function asPath(rect: Rect64): Path64;
|
|
59
|
+
declare function maxSafeCoordinateForScale(scale: number): number;
|
|
60
|
+
declare function checkSafeScaleValue(value: number, maxAbs: number, context: string): void;
|
|
61
|
+
declare function ensureSafeInteger(value: number, context: string): void;
|
|
62
|
+
declare function crossProduct(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
63
|
+
declare function crossProductSign(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
64
|
+
declare function checkPrecision(precision: number): void;
|
|
65
|
+
declare function isAlmostZero(value: number): boolean;
|
|
66
|
+
declare function triSign(x: number): number;
|
|
67
|
+
export interface UInt128Struct {
|
|
68
|
+
lo64: bigint;
|
|
69
|
+
hi64: bigint;
|
|
134
70
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
71
|
+
declare function multiplyUInt64(a: number, b: number): UInt128Struct;
|
|
72
|
+
declare function productsAreEqual(a: number, b: number, c: number, d: number): boolean;
|
|
73
|
+
declare function isCollinear(pt1: Point64, sharedPt: Point64, pt2: Point64): boolean;
|
|
74
|
+
declare function dotProduct(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
75
|
+
declare function dotProductSign(pt1: Point64, pt2: Point64, pt3: Point64): number;
|
|
76
|
+
declare function icArea(path: Path64): number;
|
|
77
|
+
declare function crossProductD(vec1: PointD, vec2: PointD): number;
|
|
78
|
+
declare function dotProductD(vec1: PointD, vec2: PointD): number;
|
|
79
|
+
declare function roundToEven(value: number): number;
|
|
80
|
+
declare function checkCastInt64(val: number): number;
|
|
81
|
+
declare function getLineIntersectPt(ln1a: Point64, ln1b: Point64, ln2a: Point64, ln2b: Point64): Point64 | null;
|
|
82
|
+
declare function getLineIntersectPtD(ln1a: PointD, ln1b: PointD, ln2a: PointD, ln2b: PointD): {
|
|
83
|
+
success: boolean;
|
|
84
|
+
ip: PointD;
|
|
85
|
+
};
|
|
86
|
+
declare function segsIntersect(seg1a: Point64, seg1b: Point64, seg2a: Point64, seg2b: Point64, inclusive?: boolean): boolean;
|
|
87
|
+
declare function icGetBounds(path: Path64): Rect64;
|
|
88
|
+
declare function getClosestPtOnSegment(offPt: Point64, seg1: Point64, seg2: Point64): Point64;
|
|
89
|
+
declare function icPointInPolygon(pt: Point64, polygon: Path64): PointInPolygonResult;
|
|
90
|
+
declare function path2ContainsPath1(path1: Path64, path2: Path64): boolean;
|
|
91
|
+
export declare const InternalClipper: {
|
|
92
|
+
MaxInt64: bigint;
|
|
93
|
+
MaxCoord: number;
|
|
94
|
+
max_coord: number;
|
|
95
|
+
min_coord: number;
|
|
96
|
+
Invalid64: number;
|
|
97
|
+
floatingPointTolerance: number;
|
|
98
|
+
defaultMinimumEdgeLength: number;
|
|
99
|
+
maxCoordForSafeAreaProduct: number;
|
|
100
|
+
maxCoordForSafeCrossSq: number;
|
|
101
|
+
maxSafeCoordinateForScale: typeof maxSafeCoordinateForScale;
|
|
102
|
+
checkSafeScaleValue: typeof checkSafeScaleValue;
|
|
103
|
+
ensureSafeInteger: typeof ensureSafeInteger;
|
|
104
|
+
crossProduct: typeof crossProduct;
|
|
105
|
+
crossProductSign: typeof crossProductSign;
|
|
106
|
+
checkPrecision: typeof checkPrecision;
|
|
107
|
+
isAlmostZero: typeof isAlmostZero;
|
|
108
|
+
triSign: typeof triSign;
|
|
109
|
+
multiplyUInt64: typeof multiplyUInt64;
|
|
110
|
+
productsAreEqual: typeof productsAreEqual;
|
|
111
|
+
isCollinear: typeof isCollinear;
|
|
112
|
+
dotProduct: typeof dotProduct;
|
|
113
|
+
dotProductSign: typeof dotProductSign;
|
|
114
|
+
area: typeof icArea;
|
|
115
|
+
crossProductD: typeof crossProductD;
|
|
116
|
+
dotProductD: typeof dotProductD;
|
|
117
|
+
roundToEven: typeof roundToEven;
|
|
118
|
+
checkCastInt64: typeof checkCastInt64;
|
|
119
|
+
getLineIntersectPt: typeof getLineIntersectPt;
|
|
120
|
+
getLineIntersectPtD: typeof getLineIntersectPtD;
|
|
121
|
+
segsIntersect: typeof segsIntersect;
|
|
122
|
+
getBounds: typeof icGetBounds;
|
|
123
|
+
getClosestPtOnSegment: typeof getClosestPtOnSegment;
|
|
124
|
+
pointInPolygon: typeof icPointInPolygon;
|
|
125
|
+
path2ContainsPath1: typeof path2ContainsPath1;
|
|
126
|
+
};
|
|
127
|
+
/** @deprecated Import UInt128Struct directly instead of using InternalClipper.UInt128Struct */
|
|
128
|
+
export declare namespace InternalClipper {
|
|
129
|
+
/** @deprecated Import UInt128Struct directly */
|
|
130
|
+
type UInt128Struct = import('./Core.js').UInt128Struct;
|
|
158
131
|
}
|
|
132
|
+
export declare const Point64Utils: {
|
|
133
|
+
create(x?: number, y?: number, z?: number): Point64;
|
|
134
|
+
fromPointD(pt: PointD): Point64;
|
|
135
|
+
scale(pt: Point64, scale: number): Point64;
|
|
136
|
+
equals(a: Point64, b: Point64): boolean;
|
|
137
|
+
add(a: Point64, b: Point64): Point64;
|
|
138
|
+
subtract(a: Point64, b: Point64): Point64;
|
|
139
|
+
toString(pt: Point64): string;
|
|
140
|
+
};
|
|
141
|
+
export declare const PointDUtils: {
|
|
142
|
+
create(x?: number, y?: number, z?: number): PointD;
|
|
143
|
+
fromPoint64(pt: Point64): PointD;
|
|
144
|
+
scale(pt: PointD, scale: number): PointD;
|
|
145
|
+
equals(a: PointD, b: PointD): boolean;
|
|
146
|
+
negate(pt: PointD): void;
|
|
147
|
+
toString(pt: PointD, precision?: number): string;
|
|
148
|
+
};
|
|
149
|
+
export declare const Rect64Utils: {
|
|
150
|
+
create(l?: number, t?: number, r?: number, b?: number): Rect64;
|
|
151
|
+
createInvalid(): Rect64;
|
|
152
|
+
width(rect: Rect64): number;
|
|
153
|
+
height(rect: Rect64): number;
|
|
154
|
+
isEmpty(rect: Rect64): boolean;
|
|
155
|
+
isValid(rect: Rect64): boolean;
|
|
156
|
+
midPoint(rect: Rect64): Point64;
|
|
157
|
+
contains(rect: Rect64, pt: Point64): boolean;
|
|
158
|
+
containsRect(rect: Rect64, rec: Rect64): boolean;
|
|
159
|
+
intersects(rect: Rect64, rec: Rect64): boolean;
|
|
160
|
+
asPath(rect: Rect64): Path64;
|
|
161
|
+
};
|
|
162
|
+
export declare const RectDUtils: {
|
|
163
|
+
create(l?: number, t?: number, r?: number, b?: number): RectD;
|
|
164
|
+
createInvalid(): RectD;
|
|
165
|
+
width(rect: RectD): number;
|
|
166
|
+
height(rect: RectD): number;
|
|
167
|
+
isEmpty(rect: RectD): boolean;
|
|
168
|
+
midPoint(rect: RectD): PointD;
|
|
169
|
+
contains(rect: RectD, pt: PointD): boolean;
|
|
170
|
+
containsRect(rect: RectD, rec: RectD): boolean;
|
|
171
|
+
intersects(rect: RectD, rec: RectD): boolean;
|
|
172
|
+
asPath(rect: RectD): PathD;
|
|
173
|
+
};
|
|
174
|
+
export declare const PathUtils: {
|
|
175
|
+
toString64(path: Path64): string;
|
|
176
|
+
toStringD(path: PathD, precision?: number): string;
|
|
177
|
+
reverse64(path: Path64): Path64;
|
|
178
|
+
reverseD(path: PathD): PathD;
|
|
179
|
+
};
|
|
180
|
+
export declare const PathsUtils: {
|
|
181
|
+
toString64(paths: Paths64): string;
|
|
182
|
+
toStringD(paths: PathsD, precision?: number): string;
|
|
183
|
+
reverse64(paths: Paths64): Paths64;
|
|
184
|
+
reverseD(paths: PathsD): PathsD;
|
|
185
|
+
};
|
|
159
186
|
export declare const InvalidRect64: Rect64;
|
|
160
187
|
export declare const InvalidRectD: RectD;
|
|
188
|
+
export {};
|
|
161
189
|
//# sourceMappingURL=Core.d.ts.map
|
package/dist/Core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Core.d.ts","sourceRoot":"","sources":["../src/Core.ts"],"names":[],"mappings":"AAAA;;;;;;;gFAOgF;AAEhF,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;AAC/B,MAAM,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;AAC7B,MAAM,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;AAC/B,MAAM,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;AAE7B,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,oBAAY,QAAQ;IAClB,MAAM,IAAI;IACV,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,UAAU,IAAI;IACd,GAAG,IAAI;CACR;AAED,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,IAAI,IAAI;CACT;AAKD,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,QAAQ,IAAI;CACb;AAGD,oBAAY,oBAAoB;IAC9B,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,SAAS,IAAI;CACd;AAID,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,OAAO,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Core.d.ts","sourceRoot":"","sources":["../src/Core.ts"],"names":[],"mappings":"AAAA;;;;;;;gFAOgF;AAEhF,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;AAC/B,MAAM,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;AAC7B,MAAM,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;AAC/B,MAAM,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;AAE7B,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,oBAAY,QAAQ;IAClB,MAAM,IAAI;IACV,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,UAAU,IAAI;IACd,GAAG,IAAI;CACR;AAED,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,IAAI,IAAI;CACT;AAKD,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,QAAQ,IAAI;CACb;AAGD,oBAAY,oBAAoB;IAC9B,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,SAAS,IAAI;CACd;AAID,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,OAAO,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;AAoEV,iBAAS,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIjF;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/D;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAatE;AAED,iBAAS,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CA2B1E;AAED,iBAAS,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,iBAAS,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAElC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iBAAS,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,CAU3D;AAGD,iBAAS,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CA4B7E;AAED,iBAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ3E;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAapE;AAED,iBAAS,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAqBxE;AAED,iBAAS,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+CpC;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED,iBAAS,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3C;AAMD,iBAAS,kBAAkB,CACzB,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAC5B,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAC3B,OAAO,GAAG,IAAI,CA+BhB;AAED,iBAAS,mBAAmB,CAC1B,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAC1B,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GACzB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CA2BlC;AAED,iBAAS,aAAa,CACpB,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC9B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC9B,SAAS,GAAE,OAAe,GACzB,OAAO,CAqBT;AAED,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBzC;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAepF;AAED,iBAAS,gBAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAmE5E;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA+BjE;AAID,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC3B,CAAA;AAGD,+FAA+F;AAC/F,yBAAiB,eAAe,CAAC;IAC/B,gDAAgD;IAChD,KAAY,aAAa,GAAG,OAAO,WAAW,EAAE,aAAa,CAAC;CAC/D;AAGD,eAAO,MAAM,YAAY;eACb,MAAM,MAAS,MAAM,MAAS,MAAM,GAAO,OAAO;mBAI7C,MAAM,GAAG,OAAO;cAMrB,OAAO,SAAS,MAAM,GAAG,OAAO;cAQhC,OAAO,KAAK,OAAO,GAAG,OAAO;WAIhC,OAAO,KAAK,OAAO,GAAG,OAAO;gBAiBxB,OAAO,KAAK,OAAO,GAAG,OAAO;iBAI5B,OAAO,GAAG,MAAM;CAM9B,CAAC;AAGF,eAAO,MAAM,WAAW;eACZ,MAAM,MAAS,MAAM,MAAS,MAAM,GAAO,MAAM;oBAI3C,OAAO,GAAG,MAAM;cAItB,MAAM,SAAS,MAAM,GAAG,MAAM;cAI9B,MAAM,KAAK,MAAM,GAAG,OAAO;eAK1B,MAAM,GAAG,IAAI;iBAKX,MAAM,cAAa,MAAM,GAAO,MAAM;CAMpD,CAAC;AAGF,eAAO,MAAM,WAAW;eACZ,MAAM,MAAS,MAAM,MAAS,MAAM,MAAS,MAAM,GAAO,MAAM;qBAIzD,MAAM;gBASX,MAAM,GAAG,MAAM;iBAId,MAAM,GAAG,MAAM;kBAId,MAAM,GAAG,OAAO;kBAIhB,MAAM,GAAG,OAAO;mBAIf,MAAM,GAAG,OAAO;mBAahB,MAAM,MAAM,OAAO,GAAG,OAAO;uBAKzB,MAAM,OAAO,MAAM,GAAG,OAAO;qBAK/B,MAAM,OAAO,MAAM,GAAG,OAAO;iBAKjC,MAAM,GAAG,MAAM;CAQ7B,CAAC;AAGF,eAAO,MAAM,UAAU;eACX,MAAM,MAAS,MAAM,MAAS,MAAM,MAAS,MAAM,GAAO,KAAK;qBAIxD,KAAK;gBASV,KAAK,GAAG,MAAM;iBAIb,KAAK,GAAG,MAAM;kBAIb,KAAK,GAAG,OAAO;mBAId,KAAK,GAAG,MAAM;mBAOd,KAAK,MAAM,MAAM,GAAG,OAAO;uBAKvB,KAAK,OAAO,KAAK,GAAG,OAAO;qBAK7B,KAAK,OAAO,KAAK,GAAG,OAAO;iBAK/B,KAAK,GAAG,KAAK;CAQ3B,CAAC;AAGF,eAAO,MAAM,SAAS;qBACH,MAAM,GAAG,MAAM;oBAQhB,KAAK,cAAa,MAAM,GAAO,MAAM;oBASrC,MAAM,GAAG,MAAM;mBAIhB,KAAK,GAAG,KAAK;CAG7B,CAAC;AAEF,eAAO,MAAM,UAAU;sBACH,OAAO,GAAG,MAAM;qBAQjB,MAAM,cAAa,MAAM,GAAO,MAAM;qBAQtC,OAAO,GAAG,OAAO;oBAIlB,MAAM,GAAG,MAAM;CAGhC,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,MAAmD,CAAC;AAChF,eAAO,MAAM,YAAY,EAAE,KAAiD,CAAC"}
|