@ifc-lite/clash 1.6.1 → 1.6.3
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 +1 -1
- package/dist/math/aabb.d.ts.map +1 -1
- package/dist/math/aabb.js +8 -53
- package/dist/math/aabb.js.map +1 -1
- package/dist/math/generated/plato.g.d.ts +181 -0
- package/dist/math/generated/plato.g.d.ts.map +1 -0
- package/dist/math/generated/plato.g.js +484 -0
- package/dist/math/generated/plato.g.js.map +1 -0
- package/dist/math/triangle-intersect.d.ts +3 -0
- package/dist/math/triangle-intersect.d.ts.map +1 -1
- package/dist/math/triangle-intersect.js +5 -39
- package/dist/math/triangle-intersect.js.map +1 -1
- package/dist/math/vec3.d.ts.map +1 -1
- package/dist/math/vec3.js +10 -16
- package/dist/math/vec3.js.map +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ and the SDK `clash` namespace.
|
|
|
43
43
|
|
|
44
44
|
## Docs
|
|
45
45
|
|
|
46
|
-
See the [ifc-lite docs](https://
|
|
46
|
+
See the [ifc-lite docs](https://ifclite.dev/docs/) and the design
|
|
47
47
|
rationale in
|
|
48
48
|
[clash-detection-plan.md](https://github.com/LTplus-AG/ifc-lite/blob/main/docs/architecture/clash-detection-plan.md).
|
|
49
49
|
|
package/dist/math/aabb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aabb.d.ts","sourceRoot":"","sources":["../../src/math/aabb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aabb.d.ts","sourceRoot":"","sources":["../../src/math/aabb.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAY9C,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAyB7E;AAED,0CAA0C;AAC1C,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEpC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAElD;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAEpD;AAED,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAE9D"}
|
package/dist/math/aabb.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import * as G from './generated/plato.g.js';
|
|
4
5
|
/** Transform a point by a column-major 4×4 matrix. */
|
|
5
6
|
function applyMat4(m, x, y, z) {
|
|
6
7
|
return [
|
|
@@ -44,22 +45,13 @@ export function fromPositions(positions, transform) {
|
|
|
44
45
|
}
|
|
45
46
|
/** Expand bounds by `m` on every side. */
|
|
46
47
|
export function inflate(b, m) {
|
|
47
|
-
return
|
|
48
|
-
min: [b.min[0] - m, b.min[1] - m, b.min[2] - m],
|
|
49
|
-
max: [b.max[0] + m, b.max[1] + m, b.max[2] + m],
|
|
50
|
-
};
|
|
48
|
+
return G.inflate(b, m);
|
|
51
49
|
}
|
|
52
50
|
export function center(b) {
|
|
53
|
-
return
|
|
54
|
-
(b.min[0] + b.max[0]) / 2,
|
|
55
|
-
(b.min[1] + b.max[1]) / 2,
|
|
56
|
-
(b.min[2] + b.max[2]) / 2,
|
|
57
|
-
];
|
|
51
|
+
return G.center(b);
|
|
58
52
|
}
|
|
59
53
|
export function intersects(a, b) {
|
|
60
|
-
return (a
|
|
61
|
-
a.min[1] <= b.max[1] && a.max[1] >= b.min[1] &&
|
|
62
|
-
a.min[2] <= b.max[2] && a.max[2] >= b.min[2]);
|
|
54
|
+
return G.intersects(a, b);
|
|
63
55
|
}
|
|
64
56
|
/**
|
|
65
57
|
* Signed gap between two boxes: `>0` is the Euclidean separation, `<0` is the
|
|
@@ -68,50 +60,15 @@ export function intersects(a, b) {
|
|
|
68
60
|
* exact penetration depth lands with the Rust core.
|
|
69
61
|
*/
|
|
70
62
|
export function signedGap(a, b) {
|
|
71
|
-
|
|
72
|
-
let minOverlap = Infinity;
|
|
73
|
-
let penetrating = true;
|
|
74
|
-
for (let i = 0; i < 3; i += 1) {
|
|
75
|
-
const gap = Math.max(b.min[i] - a.max[i], a.min[i] - b.max[i]);
|
|
76
|
-
if (gap > 0) {
|
|
77
|
-
squaredDistance += gap * gap;
|
|
78
|
-
penetrating = false;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
const overlap = Math.min(a.max[i], b.max[i]) - Math.max(a.min[i], b.min[i]);
|
|
82
|
-
if (overlap < minOverlap)
|
|
83
|
-
minOverlap = overlap;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return penetrating ? -minOverlap : Math.sqrt(squaredDistance);
|
|
63
|
+
return G.signedGap(a, b);
|
|
87
64
|
}
|
|
88
65
|
/** The intersection box of two overlapping bounds (clamped to be non-inverted). */
|
|
89
66
|
export function overlapBounds(a, b) {
|
|
90
|
-
|
|
91
|
-
Math.max(a.min[0], b.min[0]),
|
|
92
|
-
Math.max(a.min[1], b.min[1]),
|
|
93
|
-
Math.max(a.min[2], b.min[2]),
|
|
94
|
-
];
|
|
95
|
-
const max = [
|
|
96
|
-
Math.min(a.max[0], b.max[0]),
|
|
97
|
-
Math.min(a.max[1], b.max[1]),
|
|
98
|
-
Math.min(a.max[2], b.max[2]),
|
|
99
|
-
];
|
|
100
|
-
for (let i = 0; i < 3; i += 1) {
|
|
101
|
-
if (max[i] < min[i]) {
|
|
102
|
-
const mid = (min[i] + max[i]) / 2;
|
|
103
|
-
min[i] = mid;
|
|
104
|
-
max[i] = mid;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return { min, max };
|
|
67
|
+
return G.overlapBounds(a, b);
|
|
108
68
|
}
|
|
109
69
|
/** Bounds enclosing two points. */
|
|
110
70
|
export function boundsOfPoints(a, b) {
|
|
111
|
-
return
|
|
112
|
-
min: [Math.min(a[0], b[0]), Math.min(a[1], b[1]), Math.min(a[2], b[2])],
|
|
113
|
-
max: [Math.max(a[0], b[0]), Math.max(a[1], b[1]), Math.max(a[2], b[2])],
|
|
114
|
-
};
|
|
71
|
+
return G.boundsOfPoints(a, b);
|
|
115
72
|
}
|
|
116
73
|
/**
|
|
117
74
|
* True when `outer` fully contains `inner` (face-sharing counts as contained).
|
|
@@ -120,8 +77,6 @@ export function boundsOfPoints(a, b) {
|
|
|
120
77
|
* `aabb_contains` in the Rust kernel exactly (same `<=`/`>=`, axis order 0,1,2).
|
|
121
78
|
*/
|
|
122
79
|
export function aabbContains(outer, inner) {
|
|
123
|
-
return (outer
|
|
124
|
-
outer.min[1] <= inner.min[1] && outer.max[1] >= inner.max[1] &&
|
|
125
|
-
outer.min[2] <= inner.min[2] && outer.max[2] >= inner.max[2]);
|
|
80
|
+
return G.aabbContains(outer, inner);
|
|
126
81
|
}
|
|
127
82
|
//# sourceMappingURL=aabb.js.map
|
package/dist/math/aabb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aabb.js","sourceRoot":"","sources":["../../src/math/aabb.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"aabb.js","sourceRoot":"","sources":["../../src/math/aabb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
export declare namespace Intrinsics {
|
|
2
|
+
function MakeArray<T>(...xs: T[]): IArray<T>;
|
|
3
|
+
function Range(n: number): IArray<number>;
|
|
4
|
+
function Eq(a: unknown, b: unknown): boolean;
|
|
5
|
+
function ThrowOutOfRange<T>(): T;
|
|
6
|
+
function ThrowNotImplemented<T>(name: string): T;
|
|
7
|
+
}
|
|
8
|
+
export interface IArray2D<T> {
|
|
9
|
+
At(column: number, row: number): T;
|
|
10
|
+
RowCount(): number;
|
|
11
|
+
ColumnCount(): number;
|
|
12
|
+
}
|
|
13
|
+
export interface IArray3D<T> {
|
|
14
|
+
At(column: number, row: number, layer: number): T;
|
|
15
|
+
RowCount(): number;
|
|
16
|
+
ColumnCount(): number;
|
|
17
|
+
LayerCount(): number;
|
|
18
|
+
}
|
|
19
|
+
export interface Equatable<Self> {
|
|
20
|
+
Equals(b: Self): boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface Comparable<Self> {
|
|
23
|
+
Compare(b: Self): number;
|
|
24
|
+
}
|
|
25
|
+
export interface Numerical<Self> {
|
|
26
|
+
Add(b: Self): Self;
|
|
27
|
+
Subtract(b: Self): Self;
|
|
28
|
+
Negative(): Self;
|
|
29
|
+
}
|
|
30
|
+
export interface IArray<T> {
|
|
31
|
+
At(n: number): T;
|
|
32
|
+
Count(): number;
|
|
33
|
+
Map<TR>(f: (x: T) => TR): IArray<TR>;
|
|
34
|
+
Reduce<TAcc>(init: TAcc, f: (acc: TAcc, x: T) => TAcc): TAcc;
|
|
35
|
+
}
|
|
36
|
+
export declare class Arr<T> {
|
|
37
|
+
readonly _count: number;
|
|
38
|
+
readonly _func: (i: number) => T;
|
|
39
|
+
constructor(_count: number, _func: (i: number) => T);
|
|
40
|
+
At(n: number): T;
|
|
41
|
+
Count(): number;
|
|
42
|
+
Map<TR>(f: (x: T) => TR): IArray<TR>;
|
|
43
|
+
Reduce<TAcc>(init: TAcc, f: (acc: TAcc, x: T) => TAcc): TAcc;
|
|
44
|
+
}
|
|
45
|
+
export declare class Constants {
|
|
46
|
+
}
|
|
47
|
+
export declare class Vec3 {
|
|
48
|
+
readonly X: number;
|
|
49
|
+
readonly Y: number;
|
|
50
|
+
readonly Z: number;
|
|
51
|
+
constructor(X: number, Y: number, Z: number);
|
|
52
|
+
WithX(x: number): Vec3;
|
|
53
|
+
WithY(y: number): Vec3;
|
|
54
|
+
WithZ(z: number): Vec3;
|
|
55
|
+
static Create(x: number, y: number, z: number): Vec3;
|
|
56
|
+
static get Default(): Vec3;
|
|
57
|
+
Equals(other: Vec3): boolean;
|
|
58
|
+
NotEquals(other: Vec3): boolean;
|
|
59
|
+
toString(): string;
|
|
60
|
+
Sub(b: Vec3): Vec3;
|
|
61
|
+
Plus(b: Vec3): Vec3;
|
|
62
|
+
Scale(s: number): Vec3;
|
|
63
|
+
Cross(b: Vec3): Vec3;
|
|
64
|
+
Dot(b: Vec3): number;
|
|
65
|
+
LenSq(): number;
|
|
66
|
+
DistSq(b: Vec3): number;
|
|
67
|
+
Mid(b: Vec3): Vec3;
|
|
68
|
+
Centroid(b: Vec3, c: Vec3): Vec3;
|
|
69
|
+
BoundsOfPoints(b: Vec3): Box3;
|
|
70
|
+
MinDot(v0: Vec3, v1: Vec3, v2: Vec3): number;
|
|
71
|
+
MaxDot(v0: Vec3, v1: Vec3, v2: Vec3): number;
|
|
72
|
+
SeparatedOn(a0: Vec3, a1: Vec3, a2: Vec3, b0: Vec3, b1: Vec3, b2: Vec3): boolean;
|
|
73
|
+
EdgeAxisSeparates(eb: Vec3, a0: Vec3, a1: Vec3, a2: Vec3, b0: Vec3, b1: Vec3, b2: Vec3, eps: number): boolean;
|
|
74
|
+
TriTriIntersectEps(a1: Vec3, a2: Vec3, b0: Vec3, b1: Vec3, b2: Vec3, eps: number): boolean;
|
|
75
|
+
TriTriIntersect(a1: Vec3, a2: Vec3, b0: Vec3, b1: Vec3, b2: Vec3): boolean;
|
|
76
|
+
}
|
|
77
|
+
export declare class Box3 {
|
|
78
|
+
readonly Min: Vec3;
|
|
79
|
+
readonly Max: Vec3;
|
|
80
|
+
constructor(Min: Vec3, Max: Vec3);
|
|
81
|
+
WithMin(min: Vec3): Box3;
|
|
82
|
+
WithMax(max: Vec3): Box3;
|
|
83
|
+
static Create(min: Vec3, max: Vec3): Box3;
|
|
84
|
+
static get Default(): Box3;
|
|
85
|
+
Equals(other: Box3): boolean;
|
|
86
|
+
NotEquals(other: Box3): boolean;
|
|
87
|
+
toString(): string;
|
|
88
|
+
Inflate(m: number): Box3;
|
|
89
|
+
Center(): Vec3;
|
|
90
|
+
Intersects(b: Box3): boolean;
|
|
91
|
+
Contains(inner: Box3): boolean;
|
|
92
|
+
GapX(b: Box3): number;
|
|
93
|
+
GapY(b: Box3): number;
|
|
94
|
+
GapZ(b: Box3): number;
|
|
95
|
+
OverlapX(b: Box3): number;
|
|
96
|
+
OverlapY(b: Box3): number;
|
|
97
|
+
OverlapZ(b: Box3): number;
|
|
98
|
+
Penetrating(b: Box3): boolean;
|
|
99
|
+
SquaredGap(b: Box3): number;
|
|
100
|
+
MinOverlap(b: Box3): number;
|
|
101
|
+
SignedGap(b: Box3): number;
|
|
102
|
+
OverlapBounds(b: Box3): Box3;
|
|
103
|
+
}
|
|
104
|
+
export declare class Error {
|
|
105
|
+
static Create(): Error;
|
|
106
|
+
static get Default(): Error;
|
|
107
|
+
Equals(other: Error): boolean;
|
|
108
|
+
NotEquals(other: Error): boolean;
|
|
109
|
+
toString(): string;
|
|
110
|
+
}
|
|
111
|
+
export declare class Tuple2<T0, T1> {
|
|
112
|
+
readonly X0: T0;
|
|
113
|
+
readonly X1: T1;
|
|
114
|
+
constructor(X0: T0, X1: T1);
|
|
115
|
+
WithX0(x0: T0): Tuple2<T0, T1>;
|
|
116
|
+
WithX1(x1: T1): Tuple2<T0, T1>;
|
|
117
|
+
static Create<T0, T1>(x0: T0, x1: T1): Tuple2<T0, T1>;
|
|
118
|
+
Equals(other: Tuple2<T0, T1>): boolean;
|
|
119
|
+
NotEquals(other: Tuple2<T0, T1>): boolean;
|
|
120
|
+
toString(): string;
|
|
121
|
+
}
|
|
122
|
+
export declare class Tuple3<T0, T1, T2> {
|
|
123
|
+
readonly X0: T0;
|
|
124
|
+
readonly X1: T1;
|
|
125
|
+
readonly X2: T2;
|
|
126
|
+
constructor(X0: T0, X1: T1, X2: T2);
|
|
127
|
+
WithX0(x0: T0): Tuple3<T0, T1, T2>;
|
|
128
|
+
WithX1(x1: T1): Tuple3<T0, T1, T2>;
|
|
129
|
+
WithX2(x2: T2): Tuple3<T0, T1, T2>;
|
|
130
|
+
static Create<T0, T1, T2>(x0: T0, x1: T1, x2: T2): Tuple3<T0, T1, T2>;
|
|
131
|
+
Equals(other: Tuple3<T0, T1, T2>): boolean;
|
|
132
|
+
NotEquals(other: Tuple3<T0, T1, T2>): boolean;
|
|
133
|
+
toString(): string;
|
|
134
|
+
}
|
|
135
|
+
export declare class Tuple4<T0, T1, T2, T3> {
|
|
136
|
+
readonly X0: T0;
|
|
137
|
+
readonly X1: T1;
|
|
138
|
+
readonly X2: T2;
|
|
139
|
+
readonly X3: T3;
|
|
140
|
+
constructor(X0: T0, X1: T1, X2: T2, X3: T3);
|
|
141
|
+
WithX0(x0: T0): Tuple4<T0, T1, T2, T3>;
|
|
142
|
+
WithX1(x1: T1): Tuple4<T0, T1, T2, T3>;
|
|
143
|
+
WithX2(x2: T2): Tuple4<T0, T1, T2, T3>;
|
|
144
|
+
WithX3(x3: T3): Tuple4<T0, T1, T2, T3>;
|
|
145
|
+
static Create<T0, T1, T2, T3>(x0: T0, x1: T1, x2: T2, x3: T3): Tuple4<T0, T1, T2, T3>;
|
|
146
|
+
Equals(other: Tuple4<T0, T1, T2, T3>): boolean;
|
|
147
|
+
NotEquals(other: Tuple4<T0, T1, T2, T3>): boolean;
|
|
148
|
+
toString(): string;
|
|
149
|
+
}
|
|
150
|
+
export type FlatVec3 = readonly [number, number, number];
|
|
151
|
+
export interface FlatBox3 {
|
|
152
|
+
readonly min: FlatVec3;
|
|
153
|
+
readonly max: FlatVec3;
|
|
154
|
+
}
|
|
155
|
+
export declare function sub(a: FlatVec3, b: FlatVec3): [number, number, number];
|
|
156
|
+
export declare function add(a: FlatVec3, b: FlatVec3): [number, number, number];
|
|
157
|
+
export declare function scale(a: FlatVec3, s: number): [number, number, number];
|
|
158
|
+
export declare function cross(a: FlatVec3, b: FlatVec3): [number, number, number];
|
|
159
|
+
export declare function dot(a: FlatVec3, b: FlatVec3): number;
|
|
160
|
+
export declare function lenSq(a: FlatVec3): number;
|
|
161
|
+
export declare function distSq(a: FlatVec3, b: FlatVec3): number;
|
|
162
|
+
export declare function mid(a: FlatVec3, b: FlatVec3): [number, number, number];
|
|
163
|
+
export declare function centroid(a: FlatVec3, b: FlatVec3, c: FlatVec3): [number, number, number];
|
|
164
|
+
export declare function inflate(b: FlatBox3, m: number): {
|
|
165
|
+
min: [number, number, number];
|
|
166
|
+
max: [number, number, number];
|
|
167
|
+
};
|
|
168
|
+
export declare function center(b: FlatBox3): [number, number, number];
|
|
169
|
+
export declare function intersects(a: FlatBox3, b: FlatBox3): boolean;
|
|
170
|
+
export declare function signedGap(a: FlatBox3, b: FlatBox3): number;
|
|
171
|
+
export declare function overlapBounds(a: FlatBox3, b: FlatBox3): {
|
|
172
|
+
min: [number, number, number];
|
|
173
|
+
max: [number, number, number];
|
|
174
|
+
};
|
|
175
|
+
export declare function aabbContains(outer: FlatBox3, inner: FlatBox3): boolean;
|
|
176
|
+
export declare function boundsOfPoints(a: FlatVec3, b: FlatVec3): {
|
|
177
|
+
min: [number, number, number];
|
|
178
|
+
max: [number, number, number];
|
|
179
|
+
};
|
|
180
|
+
export declare function triTriIntersect(a0: FlatVec3, a1: FlatVec3, a2: FlatVec3, b0: FlatVec3, b1: FlatVec3, b2: FlatVec3, eps?: number): boolean;
|
|
181
|
+
//# sourceMappingURL=plato.g.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plato.g.d.ts","sourceRoot":"","sources":["../../../src/math/generated/plato.g.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
+
// Autogenerated from tools/plato/clash_math.plato - DO NOT EDIT (see tools/plato/README.md)
|
|
5
|
+
/* eslint-disable */
|
|
6
|
+
// noinspection JSUnusedGlobalSymbols
|
|
7
|
+
export var Intrinsics;
|
|
8
|
+
(function (Intrinsics) {
|
|
9
|
+
function MakeArray(...xs) {
|
|
10
|
+
return new Arr(xs.length, i => xs[i]);
|
|
11
|
+
}
|
|
12
|
+
Intrinsics.MakeArray = MakeArray;
|
|
13
|
+
function Range(n) {
|
|
14
|
+
return new Arr(n, i => i);
|
|
15
|
+
}
|
|
16
|
+
Intrinsics.Range = Range;
|
|
17
|
+
function Eq(a, b) {
|
|
18
|
+
if (a === b)
|
|
19
|
+
return true;
|
|
20
|
+
const x = a;
|
|
21
|
+
if (x && typeof x.Equals === 'function')
|
|
22
|
+
return x.Equals(b);
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
Intrinsics.Eq = Eq;
|
|
26
|
+
function ThrowOutOfRange() {
|
|
27
|
+
throw new globalThis.Error('Index out of range');
|
|
28
|
+
}
|
|
29
|
+
Intrinsics.ThrowOutOfRange = ThrowOutOfRange;
|
|
30
|
+
function ThrowNotImplemented(name) {
|
|
31
|
+
throw new globalThis.Error(`Not implemented: ${name}`);
|
|
32
|
+
}
|
|
33
|
+
Intrinsics.ThrowNotImplemented = ThrowNotImplemented;
|
|
34
|
+
})(Intrinsics || (Intrinsics = {}));
|
|
35
|
+
var Scalars;
|
|
36
|
+
(function (Scalars) {
|
|
37
|
+
function FoldMin(self, p) { return ((p < self)) ? p : self; }
|
|
38
|
+
Scalars.FoldMin = FoldMin;
|
|
39
|
+
function FoldMax(self, p) { return ((p > self)) ? p : self; }
|
|
40
|
+
Scalars.FoldMax = FoldMax;
|
|
41
|
+
function Min2(self, b) { return ((self < b)) ? self : b; }
|
|
42
|
+
Scalars.Min2 = Min2;
|
|
43
|
+
function Max2(self, b) { return ((self > b)) ? self : b; }
|
|
44
|
+
Scalars.Max2 = Max2;
|
|
45
|
+
function OverlapStep(self, gap, overlap) { return ((gap > 0)) ? self : Scalars.FoldMin(self, overlap); }
|
|
46
|
+
Scalars.OverlapStep = OverlapStep;
|
|
47
|
+
function ClampedLo(self, hi) { return ((hi < self)) ? ((self + hi) / 2) : self; }
|
|
48
|
+
Scalars.ClampedLo = ClampedLo;
|
|
49
|
+
function ClampedHi(self, hi) { return ((hi < self)) ? ((self + hi) / 2) : hi; }
|
|
50
|
+
Scalars.ClampedHi = ClampedHi;
|
|
51
|
+
})(Scalars || (Scalars = {}));
|
|
52
|
+
export class Arr {
|
|
53
|
+
_count;
|
|
54
|
+
_func;
|
|
55
|
+
constructor(_count, _func) {
|
|
56
|
+
this._count = _count;
|
|
57
|
+
this._func = _func;
|
|
58
|
+
}
|
|
59
|
+
At(n) { return this._func(n); }
|
|
60
|
+
Count() { return this._count; }
|
|
61
|
+
Map(f) { return new Arr(this._count, i => f(this.At(i))); }
|
|
62
|
+
Reduce(init, f) {
|
|
63
|
+
let acc = init;
|
|
64
|
+
for (let i = 0; i < this._count; i++)
|
|
65
|
+
acc = f(acc, this.At(i));
|
|
66
|
+
return acc;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export class Constants {
|
|
70
|
+
}
|
|
71
|
+
export class Vec3 {
|
|
72
|
+
X;
|
|
73
|
+
Y;
|
|
74
|
+
Z;
|
|
75
|
+
constructor(X, Y, Z) {
|
|
76
|
+
this.X = X;
|
|
77
|
+
this.Y = Y;
|
|
78
|
+
this.Z = Z;
|
|
79
|
+
}
|
|
80
|
+
WithX(x) { return new Vec3(x, this.Y, this.Z); }
|
|
81
|
+
WithY(y) { return new Vec3(this.X, y, this.Z); }
|
|
82
|
+
WithZ(z) { return new Vec3(this.X, this.Y, z); }
|
|
83
|
+
static Create(x, y, z) { return new Vec3(x, y, z); }
|
|
84
|
+
static get Default() { return new Vec3(0, 0, 0); }
|
|
85
|
+
Equals(other) { return Intrinsics.Eq(this.X, other.X) && Intrinsics.Eq(this.Y, other.Y) && Intrinsics.Eq(this.Z, other.Z); }
|
|
86
|
+
NotEquals(other) { return !this.Equals(other); }
|
|
87
|
+
toString() { return `{ X = ${this.X}, Y = ${this.Y}, Z = ${this.Z} }`; }
|
|
88
|
+
Sub(b) { return new Vec3((this.X - b.X), (this.Y - b.Y), (this.Z - b.Z)); }
|
|
89
|
+
Plus(b) { return new Vec3((this.X + b.X), (this.Y + b.Y), (this.Z + b.Z)); }
|
|
90
|
+
Scale(s) { return new Vec3((this.X * s), (this.Y * s), (this.Z * s)); }
|
|
91
|
+
Cross(b) { return new Vec3(((this.Y * b.Z) - (this.Z * b.Y)), ((this.Z * b.X) - (this.X * b.Z)), ((this.X * b.Y) - (this.Y * b.X))); }
|
|
92
|
+
Dot(b) { return (((this.X * b.X) + (this.Y * b.Y)) + (this.Z * b.Z)); }
|
|
93
|
+
LenSq() { return this.Dot(this); }
|
|
94
|
+
DistSq(b) { return ((((this.X - b.X) * (this.X - b.X)) + ((this.Y - b.Y) * (this.Y - b.Y))) + ((this.Z - b.Z) * (this.Z - b.Z))); }
|
|
95
|
+
Mid(b) { return new Vec3(((this.X + b.X) / 2), ((this.Y + b.Y) / 2), ((this.Z + b.Z) / 2)); }
|
|
96
|
+
Centroid(b, c) { return new Vec3((((this.X + b.X) + c.X) / 3), (((this.Y + b.Y) + c.Y) / 3), (((this.Z + b.Z) + c.Z) / 3)); }
|
|
97
|
+
BoundsOfPoints(b) { return new Box3(new Vec3(Scalars.Min2(this.X, b.X), Scalars.Min2(this.Y, b.Y), Scalars.Min2(this.Z, b.Z)), new Vec3(Scalars.Max2(this.X, b.X), Scalars.Max2(this.Y, b.Y), Scalars.Max2(this.Z, b.Z))); }
|
|
98
|
+
MinDot(v0, v1, v2) { return Scalars.FoldMin(Scalars.FoldMin(Scalars.FoldMin(((1) / 0), v0.Dot(this)), v1.Dot(this)), v2.Dot(this)); }
|
|
99
|
+
MaxDot(v0, v1, v2) { return Scalars.FoldMax(Scalars.FoldMax(Scalars.FoldMax((-((1) / 0)), v0.Dot(this)), v1.Dot(this)), v2.Dot(this)); }
|
|
100
|
+
SeparatedOn(a0, a1, a2, b0, b1, b2) { return ((this.MaxDot(a0, a1, a2) <= this.MinDot(b0, b1, b2)) || (this.MaxDot(b0, b1, b2) <= this.MinDot(a0, a1, a2))); }
|
|
101
|
+
EdgeAxisSeparates(eb, a0, a1, a2, b0, b1, b2, eps) { return ((this.Cross(eb).Dot(this.Cross(eb)) > eps)) ? this.Cross(eb).SeparatedOn(a0, a1, a2, b0, b1, b2) : false; }
|
|
102
|
+
TriTriIntersectEps(a1, a2, b0, b1, b2, eps) { return ((a1.Sub(this).Cross(a2.Sub(a1)).SeparatedOn(this, a1, a2, b0, b1, b2) || (b1.Sub(b0).Cross(b2.Sub(b1)).SeparatedOn(this, a1, a2, b0, b1, b2) || (a1.Sub(this).EdgeAxisSeparates(b1.Sub(b0), this, a1, a2, b0, b1, b2, eps) || (a1.Sub(this).EdgeAxisSeparates(b2.Sub(b1), this, a1, a2, b0, b1, b2, eps) || (a1.Sub(this).EdgeAxisSeparates(b0.Sub(b2), this, a1, a2, b0, b1, b2, eps) || (a2.Sub(a1).EdgeAxisSeparates(b1.Sub(b0), this, a1, a2, b0, b1, b2, eps) || (a2.Sub(a1).EdgeAxisSeparates(b2.Sub(b1), this, a1, a2, b0, b1, b2, eps) || (a2.Sub(a1).EdgeAxisSeparates(b0.Sub(b2), this, a1, a2, b0, b1, b2, eps) || (this.Sub(a2).EdgeAxisSeparates(b1.Sub(b0), this, a1, a2, b0, b1, b2, eps) || (this.Sub(a2).EdgeAxisSeparates(b2.Sub(b1), this, a1, a2, b0, b1, b2, eps) || this.Sub(a2).EdgeAxisSeparates(b0.Sub(b2), this, a1, a2, b0, b1, b2, eps)))))))))))) ? false : true; }
|
|
103
|
+
TriTriIntersect(a1, a2, b0, b1, b2) { return this.TriTriIntersectEps(a1, a2, b0, b1, b2, 1E-12); }
|
|
104
|
+
}
|
|
105
|
+
export class Box3 {
|
|
106
|
+
Min;
|
|
107
|
+
Max;
|
|
108
|
+
constructor(Min, Max) {
|
|
109
|
+
this.Min = Min;
|
|
110
|
+
this.Max = Max;
|
|
111
|
+
}
|
|
112
|
+
WithMin(min) { return new Box3(min, this.Max); }
|
|
113
|
+
WithMax(max) { return new Box3(this.Min, max); }
|
|
114
|
+
static Create(min, max) { return new Box3(min, max); }
|
|
115
|
+
static get Default() { return new Box3(Vec3.Default, Vec3.Default); }
|
|
116
|
+
Equals(other) { return Intrinsics.Eq(this.Min, other.Min) && Intrinsics.Eq(this.Max, other.Max); }
|
|
117
|
+
NotEquals(other) { return !this.Equals(other); }
|
|
118
|
+
toString() { return `{ Min = ${this.Min}, Max = ${this.Max} }`; }
|
|
119
|
+
Inflate(m) { return new Box3(new Vec3((this.Min.X - m), (this.Min.Y - m), (this.Min.Z - m)), new Vec3((this.Max.X + m), (this.Max.Y + m), (this.Max.Z + m))); }
|
|
120
|
+
Center() { return new Vec3(((this.Min.X + this.Max.X) / 2), ((this.Min.Y + this.Max.Y) / 2), ((this.Min.Z + this.Max.Z) / 2)); }
|
|
121
|
+
Intersects(b) { return ((this.Min.X <= b.Max.X) && ((this.Max.X >= b.Min.X) && ((this.Min.Y <= b.Max.Y) && ((this.Max.Y >= b.Min.Y) && ((this.Min.Z <= b.Max.Z) && (this.Max.Z >= b.Min.Z)))))); }
|
|
122
|
+
Contains(inner) { return ((this.Min.X <= inner.Min.X) && ((this.Max.X >= inner.Max.X) && ((this.Min.Y <= inner.Min.Y) && ((this.Max.Y >= inner.Max.Y) && ((this.Min.Z <= inner.Min.Z) && (this.Max.Z >= inner.Max.Z)))))); }
|
|
123
|
+
GapX(b) { return Scalars.Max2((b.Min.X - this.Max.X), (this.Min.X - b.Max.X)); }
|
|
124
|
+
GapY(b) { return Scalars.Max2((b.Min.Y - this.Max.Y), (this.Min.Y - b.Max.Y)); }
|
|
125
|
+
GapZ(b) { return Scalars.Max2((b.Min.Z - this.Max.Z), (this.Min.Z - b.Max.Z)); }
|
|
126
|
+
OverlapX(b) { return (Scalars.Min2(this.Max.X, b.Max.X) - Scalars.Max2(this.Min.X, b.Min.X)); }
|
|
127
|
+
OverlapY(b) { return (Scalars.Min2(this.Max.Y, b.Max.Y) - Scalars.Max2(this.Min.Y, b.Min.Y)); }
|
|
128
|
+
OverlapZ(b) { return (Scalars.Min2(this.Max.Z, b.Max.Z) - Scalars.Max2(this.Min.Z, b.Min.Z)); }
|
|
129
|
+
Penetrating(b) { return ((((this.GapX(b) > 0)) ? false : true) && ((((this.GapY(b) > 0)) ? false : true) && (((this.GapZ(b) > 0)) ? false : true))); }
|
|
130
|
+
SquaredGap(b) { return (((((this.GapX(b) > 0)) ? (this.GapX(b) * this.GapX(b)) : 0) + (((this.GapY(b) > 0)) ? (this.GapY(b) * this.GapY(b)) : 0)) + (((this.GapZ(b) > 0)) ? (this.GapZ(b) * this.GapZ(b)) : 0)); }
|
|
131
|
+
MinOverlap(b) { return Scalars.OverlapStep(Scalars.OverlapStep(Scalars.OverlapStep(((1) / 0), this.GapX(b), this.OverlapX(b)), this.GapY(b), this.OverlapY(b)), this.GapZ(b), this.OverlapZ(b)); }
|
|
132
|
+
SignedGap(b) { return (this.Penetrating(b)) ? (-this.MinOverlap(b)) : Math.sqrt(this.SquaredGap(b)); }
|
|
133
|
+
OverlapBounds(b) { return new Box3(new Vec3(Scalars.ClampedLo(Scalars.Max2(this.Min.X, b.Min.X), Scalars.Min2(this.Max.X, b.Max.X)), Scalars.ClampedLo(Scalars.Max2(this.Min.Y, b.Min.Y), Scalars.Min2(this.Max.Y, b.Max.Y)), Scalars.ClampedLo(Scalars.Max2(this.Min.Z, b.Min.Z), Scalars.Min2(this.Max.Z, b.Max.Z))), new Vec3(Scalars.ClampedHi(Scalars.Max2(this.Min.X, b.Min.X), Scalars.Min2(this.Max.X, b.Max.X)), Scalars.ClampedHi(Scalars.Max2(this.Min.Y, b.Min.Y), Scalars.Min2(this.Max.Y, b.Max.Y)), Scalars.ClampedHi(Scalars.Max2(this.Min.Z, b.Min.Z), Scalars.Min2(this.Max.Z, b.Max.Z)))); }
|
|
134
|
+
}
|
|
135
|
+
export class Error {
|
|
136
|
+
static Create() { return new Error(); }
|
|
137
|
+
static get Default() { return new Error(); }
|
|
138
|
+
Equals(other) { return true; }
|
|
139
|
+
NotEquals(other) { return !this.Equals(other); }
|
|
140
|
+
toString() { return `{ }`; }
|
|
141
|
+
}
|
|
142
|
+
export class Tuple2 {
|
|
143
|
+
X0;
|
|
144
|
+
X1;
|
|
145
|
+
constructor(X0, X1) {
|
|
146
|
+
this.X0 = X0;
|
|
147
|
+
this.X1 = X1;
|
|
148
|
+
}
|
|
149
|
+
WithX0(x0) { return new Tuple2(x0, this.X1); }
|
|
150
|
+
WithX1(x1) { return new Tuple2(this.X0, x1); }
|
|
151
|
+
static Create(x0, x1) { return new Tuple2(x0, x1); }
|
|
152
|
+
Equals(other) { return Intrinsics.Eq(this.X0, other.X0) && Intrinsics.Eq(this.X1, other.X1); }
|
|
153
|
+
NotEquals(other) { return !this.Equals(other); }
|
|
154
|
+
toString() { return `{ X0 = ${this.X0}, X1 = ${this.X1} }`; }
|
|
155
|
+
}
|
|
156
|
+
export class Tuple3 {
|
|
157
|
+
X0;
|
|
158
|
+
X1;
|
|
159
|
+
X2;
|
|
160
|
+
constructor(X0, X1, X2) {
|
|
161
|
+
this.X0 = X0;
|
|
162
|
+
this.X1 = X1;
|
|
163
|
+
this.X2 = X2;
|
|
164
|
+
}
|
|
165
|
+
WithX0(x0) { return new Tuple3(x0, this.X1, this.X2); }
|
|
166
|
+
WithX1(x1) { return new Tuple3(this.X0, x1, this.X2); }
|
|
167
|
+
WithX2(x2) { return new Tuple3(this.X0, this.X1, x2); }
|
|
168
|
+
static Create(x0, x1, x2) { return new Tuple3(x0, x1, x2); }
|
|
169
|
+
Equals(other) { return Intrinsics.Eq(this.X0, other.X0) && Intrinsics.Eq(this.X1, other.X1) && Intrinsics.Eq(this.X2, other.X2); }
|
|
170
|
+
NotEquals(other) { return !this.Equals(other); }
|
|
171
|
+
toString() { return `{ X0 = ${this.X0}, X1 = ${this.X1}, X2 = ${this.X2} }`; }
|
|
172
|
+
}
|
|
173
|
+
export class Tuple4 {
|
|
174
|
+
X0;
|
|
175
|
+
X1;
|
|
176
|
+
X2;
|
|
177
|
+
X3;
|
|
178
|
+
constructor(X0, X1, X2, X3) {
|
|
179
|
+
this.X0 = X0;
|
|
180
|
+
this.X1 = X1;
|
|
181
|
+
this.X2 = X2;
|
|
182
|
+
this.X3 = X3;
|
|
183
|
+
}
|
|
184
|
+
WithX0(x0) { return new Tuple4(x0, this.X1, this.X2, this.X3); }
|
|
185
|
+
WithX1(x1) { return new Tuple4(this.X0, x1, this.X2, this.X3); }
|
|
186
|
+
WithX2(x2) { return new Tuple4(this.X0, this.X1, x2, this.X3); }
|
|
187
|
+
WithX3(x3) { return new Tuple4(this.X0, this.X1, this.X2, x3); }
|
|
188
|
+
static Create(x0, x1, x2, x3) { return new Tuple4(x0, x1, x2, x3); }
|
|
189
|
+
Equals(other) { return Intrinsics.Eq(this.X0, other.X0) && Intrinsics.Eq(this.X1, other.X1) && Intrinsics.Eq(this.X2, other.X2) && Intrinsics.Eq(this.X3, other.X3); }
|
|
190
|
+
NotEquals(other) { return !this.Equals(other); }
|
|
191
|
+
toString() { return `{ X0 = ${this.X0}, X1 = ${this.X1}, X2 = ${this.X2}, X3 = ${this.X3} }`; }
|
|
192
|
+
}
|
|
193
|
+
export function sub(a, b) {
|
|
194
|
+
return [(a[0] - b[0]), (a[1] - b[1]), (a[2] - b[2])];
|
|
195
|
+
}
|
|
196
|
+
export function add(a, b) {
|
|
197
|
+
return [(a[0] + b[0]), (a[1] + b[1]), (a[2] + b[2])];
|
|
198
|
+
}
|
|
199
|
+
export function scale(a, s) {
|
|
200
|
+
return [(a[0] * s), (a[1] * s), (a[2] * s)];
|
|
201
|
+
}
|
|
202
|
+
export function cross(a, b) {
|
|
203
|
+
return [((a[1] * b[2]) - (a[2] * b[1])), ((a[2] * b[0]) - (a[0] * b[2])), ((a[0] * b[1]) - (a[1] * b[0]))];
|
|
204
|
+
}
|
|
205
|
+
export function dot(a, b) {
|
|
206
|
+
return (((a[0] * b[0]) + (a[1] * b[1])) + (a[2] * b[2]));
|
|
207
|
+
}
|
|
208
|
+
export function lenSq(a) {
|
|
209
|
+
return (((a[0] * a[0]) + (a[1] * a[1])) + (a[2] * a[2]));
|
|
210
|
+
}
|
|
211
|
+
export function distSq(a, b) {
|
|
212
|
+
const t0 = (a[0] - b[0]);
|
|
213
|
+
const t1 = (a[1] - b[1]);
|
|
214
|
+
const t2 = (a[2] - b[2]);
|
|
215
|
+
return (((t0 * t0) + (t1 * t1)) + (t2 * t2));
|
|
216
|
+
}
|
|
217
|
+
export function mid(a, b) {
|
|
218
|
+
return [((a[0] + b[0]) / 2), ((a[1] + b[1]) / 2), ((a[2] + b[2]) / 2)];
|
|
219
|
+
}
|
|
220
|
+
export function centroid(a, b, c) {
|
|
221
|
+
return [(((a[0] + b[0]) + c[0]) / 3), (((a[1] + b[1]) + c[1]) / 3), (((a[2] + b[2]) + c[2]) / 3)];
|
|
222
|
+
}
|
|
223
|
+
export function inflate(b, m) {
|
|
224
|
+
return { min: [(b.min[0] - m), (b.min[1] - m), (b.min[2] - m)], max: [(b.max[0] + m), (b.max[1] + m), (b.max[2] + m)] };
|
|
225
|
+
}
|
|
226
|
+
export function center(b) {
|
|
227
|
+
return [((b.min[0] + b.max[0]) / 2), ((b.min[1] + b.max[1]) / 2), ((b.min[2] + b.max[2]) / 2)];
|
|
228
|
+
}
|
|
229
|
+
export function intersects(a, b) {
|
|
230
|
+
return ((a.min[0] <= b.max[0]) && ((a.max[0] >= b.min[0]) && ((a.min[1] <= b.max[1]) && ((a.max[1] >= b.min[1]) && ((a.min[2] <= b.max[2]) && (a.max[2] >= b.min[2]))))));
|
|
231
|
+
}
|
|
232
|
+
export function signedGap(a, b) {
|
|
233
|
+
const t0 = (b.min[0] - a.max[0]);
|
|
234
|
+
const t1 = (a.min[0] - b.max[0]);
|
|
235
|
+
const t2 = ((t0 > t1) ? t0 : t1);
|
|
236
|
+
const t3 = (t2 > 0);
|
|
237
|
+
const t4 = (b.min[1] - a.max[1]);
|
|
238
|
+
const t5 = (a.min[1] - b.max[1]);
|
|
239
|
+
const t6 = ((t4 > t5) ? t4 : t5);
|
|
240
|
+
const t7 = (t6 > 0);
|
|
241
|
+
const t8 = (b.min[2] - a.max[2]);
|
|
242
|
+
const t9 = (a.min[2] - b.max[2]);
|
|
243
|
+
const t10 = ((t8 > t9) ? t8 : t9);
|
|
244
|
+
const t11 = (t10 > 0);
|
|
245
|
+
const t12 = (1 / 0);
|
|
246
|
+
const t13 = (((a.max[0] < b.max[0]) ? a.max[0] : b.max[0]) - ((a.min[0] > b.min[0]) ? a.min[0] : b.min[0]));
|
|
247
|
+
const t14 = (t3 ? t12 : ((t13 < t12) ? t13 : t12));
|
|
248
|
+
const t15 = (((a.max[1] < b.max[1]) ? a.max[1] : b.max[1]) - ((a.min[1] > b.min[1]) ? a.min[1] : b.min[1]));
|
|
249
|
+
const t16 = (t7 ? t14 : ((t15 < t14) ? t15 : t14));
|
|
250
|
+
const t17 = (((a.max[2] < b.max[2]) ? a.max[2] : b.max[2]) - ((a.min[2] > b.min[2]) ? a.min[2] : b.min[2]));
|
|
251
|
+
return (((t3 ? false : true) && ((t7 ? false : true) && (t11 ? false : true))) ? (-(t11 ? t16 : ((t17 < t16) ? t17 : t16))) : Math.sqrt((((t3 ? (t2 * t2) : 0) + (t7 ? (t6 * t6) : 0)) + (t11 ? (t10 * t10) : 0))));
|
|
252
|
+
}
|
|
253
|
+
export function overlapBounds(a, b) {
|
|
254
|
+
const t0 = ((a.max[0] < b.max[0]) ? a.max[0] : b.max[0]);
|
|
255
|
+
const t1 = ((a.min[0] > b.min[0]) ? a.min[0] : b.min[0]);
|
|
256
|
+
const t2 = (t0 < t1);
|
|
257
|
+
const t3 = ((t1 + t0) / 2);
|
|
258
|
+
const t4 = ((a.max[1] < b.max[1]) ? a.max[1] : b.max[1]);
|
|
259
|
+
const t5 = ((a.min[1] > b.min[1]) ? a.min[1] : b.min[1]);
|
|
260
|
+
const t6 = (t4 < t5);
|
|
261
|
+
const t7 = ((t5 + t4) / 2);
|
|
262
|
+
const t8 = ((a.max[2] < b.max[2]) ? a.max[2] : b.max[2]);
|
|
263
|
+
const t9 = ((a.min[2] > b.min[2]) ? a.min[2] : b.min[2]);
|
|
264
|
+
const t10 = (t8 < t9);
|
|
265
|
+
const t11 = ((t9 + t8) / 2);
|
|
266
|
+
return { min: [(t2 ? t3 : t1), (t6 ? t7 : t5), (t10 ? t11 : t9)], max: [(t2 ? t3 : t0), (t6 ? t7 : t4), (t10 ? t11 : t8)] };
|
|
267
|
+
}
|
|
268
|
+
export function aabbContains(outer, inner) {
|
|
269
|
+
return ((outer.min[0] <= inner.min[0]) && ((outer.max[0] >= inner.max[0]) && ((outer.min[1] <= inner.min[1]) && ((outer.max[1] >= inner.max[1]) && ((outer.min[2] <= inner.min[2]) && (outer.max[2] >= inner.max[2]))))));
|
|
270
|
+
}
|
|
271
|
+
export function boundsOfPoints(a, b) {
|
|
272
|
+
return { min: [((a[0] < b[0]) ? a[0] : b[0]), ((a[1] < b[1]) ? a[1] : b[1]), ((a[2] < b[2]) ? a[2] : b[2])], max: [((a[0] > b[0]) ? a[0] : b[0]), ((a[1] > b[1]) ? a[1] : b[1]), ((a[2] > b[2]) ? a[2] : b[2])] };
|
|
273
|
+
}
|
|
274
|
+
export function triTriIntersect(a0, a1, a2, b0, b1, b2, eps = 1e-12) {
|
|
275
|
+
const t0 = (a1[1] - a0[1]);
|
|
276
|
+
const t1 = (a2[2] - a1[2]);
|
|
277
|
+
const t2 = (a1[2] - a0[2]);
|
|
278
|
+
const t3 = (a2[1] - a1[1]);
|
|
279
|
+
const t4 = ((t0 * t1) - (t2 * t3));
|
|
280
|
+
const t5 = (a2[0] - a1[0]);
|
|
281
|
+
const t6 = (a1[0] - a0[0]);
|
|
282
|
+
const t7 = ((t2 * t5) - (t6 * t1));
|
|
283
|
+
const t8 = ((t6 * t3) - (t0 * t5));
|
|
284
|
+
const t9 = (((a2[0] * t4) + (a2[1] * t7)) + (a2[2] * t8));
|
|
285
|
+
const t10 = (((a1[0] * t4) + (a1[1] * t7)) + (a1[2] * t8));
|
|
286
|
+
const t11 = (((a0[0] * t4) + (a0[1] * t7)) + (a0[2] * t8));
|
|
287
|
+
const t12 = (1 / 0);
|
|
288
|
+
const t13 = (-t12);
|
|
289
|
+
const t14 = ((t11 > t13) ? t11 : t13);
|
|
290
|
+
const t15 = ((t10 > t14) ? t10 : t14);
|
|
291
|
+
const t16 = (((b2[0] * t4) + (b2[1] * t7)) + (b2[2] * t8));
|
|
292
|
+
const t17 = (((b1[0] * t4) + (b1[1] * t7)) + (b1[2] * t8));
|
|
293
|
+
const t18 = (((b0[0] * t4) + (b0[1] * t7)) + (b0[2] * t8));
|
|
294
|
+
const t19 = ((t18 < t12) ? t18 : t12);
|
|
295
|
+
const t20 = ((t17 < t19) ? t17 : t19);
|
|
296
|
+
const t21 = ((t18 > t13) ? t18 : t13);
|
|
297
|
+
const t22 = ((t17 > t21) ? t17 : t21);
|
|
298
|
+
const t23 = ((t11 < t12) ? t11 : t12);
|
|
299
|
+
const t24 = ((t10 < t23) ? t10 : t23);
|
|
300
|
+
const t25 = (b1[1] - b0[1]);
|
|
301
|
+
const t26 = (b2[2] - b1[2]);
|
|
302
|
+
const t27 = (b1[2] - b0[2]);
|
|
303
|
+
const t28 = (b2[1] - b1[1]);
|
|
304
|
+
const t29 = ((t25 * t26) - (t27 * t28));
|
|
305
|
+
const t30 = (b2[0] - b1[0]);
|
|
306
|
+
const t31 = (b1[0] - b0[0]);
|
|
307
|
+
const t32 = ((t27 * t30) - (t31 * t26));
|
|
308
|
+
const t33 = ((t31 * t28) - (t25 * t30));
|
|
309
|
+
const t34 = (((a2[0] * t29) + (a2[1] * t32)) + (a2[2] * t33));
|
|
310
|
+
const t35 = (((a1[0] * t29) + (a1[1] * t32)) + (a1[2] * t33));
|
|
311
|
+
const t36 = (((a0[0] * t29) + (a0[1] * t32)) + (a0[2] * t33));
|
|
312
|
+
const t37 = ((t36 > t13) ? t36 : t13);
|
|
313
|
+
const t38 = ((t35 > t37) ? t35 : t37);
|
|
314
|
+
const t39 = (((b2[0] * t29) + (b2[1] * t32)) + (b2[2] * t33));
|
|
315
|
+
const t40 = (((b1[0] * t29) + (b1[1] * t32)) + (b1[2] * t33));
|
|
316
|
+
const t41 = (((b0[0] * t29) + (b0[1] * t32)) + (b0[2] * t33));
|
|
317
|
+
const t42 = ((t41 < t12) ? t41 : t12);
|
|
318
|
+
const t43 = ((t40 < t42) ? t40 : t42);
|
|
319
|
+
const t44 = ((t41 > t13) ? t41 : t13);
|
|
320
|
+
const t45 = ((t40 > t44) ? t40 : t44);
|
|
321
|
+
const t46 = ((t36 < t12) ? t36 : t12);
|
|
322
|
+
const t47 = ((t35 < t46) ? t35 : t46);
|
|
323
|
+
const t48 = ((t0 * t27) - (t2 * t25));
|
|
324
|
+
const t49 = ((t2 * t31) - (t6 * t27));
|
|
325
|
+
const t50 = ((t6 * t25) - (t0 * t31));
|
|
326
|
+
const t51 = (((a2[0] * t48) + (a2[1] * t49)) + (a2[2] * t50));
|
|
327
|
+
const t52 = (((a1[0] * t48) + (a1[1] * t49)) + (a1[2] * t50));
|
|
328
|
+
const t53 = (((a0[0] * t48) + (a0[1] * t49)) + (a0[2] * t50));
|
|
329
|
+
const t54 = ((t53 > t13) ? t53 : t13);
|
|
330
|
+
const t55 = ((t52 > t54) ? t52 : t54);
|
|
331
|
+
const t56 = (((b2[0] * t48) + (b2[1] * t49)) + (b2[2] * t50));
|
|
332
|
+
const t57 = (((b1[0] * t48) + (b1[1] * t49)) + (b1[2] * t50));
|
|
333
|
+
const t58 = (((b0[0] * t48) + (b0[1] * t49)) + (b0[2] * t50));
|
|
334
|
+
const t59 = ((t58 < t12) ? t58 : t12);
|
|
335
|
+
const t60 = ((t57 < t59) ? t57 : t59);
|
|
336
|
+
const t61 = ((t58 > t13) ? t58 : t13);
|
|
337
|
+
const t62 = ((t57 > t61) ? t57 : t61);
|
|
338
|
+
const t63 = ((t53 < t12) ? t53 : t12);
|
|
339
|
+
const t64 = ((t52 < t63) ? t52 : t63);
|
|
340
|
+
const t65 = ((t0 * t26) - (t2 * t28));
|
|
341
|
+
const t66 = ((t2 * t30) - (t6 * t26));
|
|
342
|
+
const t67 = ((t6 * t28) - (t0 * t30));
|
|
343
|
+
const t68 = (((a2[0] * t65) + (a2[1] * t66)) + (a2[2] * t67));
|
|
344
|
+
const t69 = (((a1[0] * t65) + (a1[1] * t66)) + (a1[2] * t67));
|
|
345
|
+
const t70 = (((a0[0] * t65) + (a0[1] * t66)) + (a0[2] * t67));
|
|
346
|
+
const t71 = ((t70 > t13) ? t70 : t13);
|
|
347
|
+
const t72 = ((t69 > t71) ? t69 : t71);
|
|
348
|
+
const t73 = (((b2[0] * t65) + (b2[1] * t66)) + (b2[2] * t67));
|
|
349
|
+
const t74 = (((b1[0] * t65) + (b1[1] * t66)) + (b1[2] * t67));
|
|
350
|
+
const t75 = (((b0[0] * t65) + (b0[1] * t66)) + (b0[2] * t67));
|
|
351
|
+
const t76 = ((t75 < t12) ? t75 : t12);
|
|
352
|
+
const t77 = ((t74 < t76) ? t74 : t76);
|
|
353
|
+
const t78 = ((t75 > t13) ? t75 : t13);
|
|
354
|
+
const t79 = ((t74 > t78) ? t74 : t78);
|
|
355
|
+
const t80 = ((t70 < t12) ? t70 : t12);
|
|
356
|
+
const t81 = ((t69 < t80) ? t69 : t80);
|
|
357
|
+
const t82 = (b0[2] - b2[2]);
|
|
358
|
+
const t83 = (b0[1] - b2[1]);
|
|
359
|
+
const t84 = ((t0 * t82) - (t2 * t83));
|
|
360
|
+
const t85 = (b0[0] - b2[0]);
|
|
361
|
+
const t86 = ((t2 * t85) - (t6 * t82));
|
|
362
|
+
const t87 = ((t6 * t83) - (t0 * t85));
|
|
363
|
+
const t88 = (((a2[0] * t84) + (a2[1] * t86)) + (a2[2] * t87));
|
|
364
|
+
const t89 = (((a1[0] * t84) + (a1[1] * t86)) + (a1[2] * t87));
|
|
365
|
+
const t90 = (((a0[0] * t84) + (a0[1] * t86)) + (a0[2] * t87));
|
|
366
|
+
const t91 = ((t90 > t13) ? t90 : t13);
|
|
367
|
+
const t92 = ((t89 > t91) ? t89 : t91);
|
|
368
|
+
const t93 = (((b2[0] * t84) + (b2[1] * t86)) + (b2[2] * t87));
|
|
369
|
+
const t94 = (((b1[0] * t84) + (b1[1] * t86)) + (b1[2] * t87));
|
|
370
|
+
const t95 = (((b0[0] * t84) + (b0[1] * t86)) + (b0[2] * t87));
|
|
371
|
+
const t96 = ((t95 < t12) ? t95 : t12);
|
|
372
|
+
const t97 = ((t94 < t96) ? t94 : t96);
|
|
373
|
+
const t98 = ((t95 > t13) ? t95 : t13);
|
|
374
|
+
const t99 = ((t94 > t98) ? t94 : t98);
|
|
375
|
+
const t100 = ((t90 < t12) ? t90 : t12);
|
|
376
|
+
const t101 = ((t89 < t100) ? t89 : t100);
|
|
377
|
+
const t102 = ((t3 * t27) - (t1 * t25));
|
|
378
|
+
const t103 = ((t1 * t31) - (t5 * t27));
|
|
379
|
+
const t104 = ((t5 * t25) - (t3 * t31));
|
|
380
|
+
const t105 = (((a2[0] * t102) + (a2[1] * t103)) + (a2[2] * t104));
|
|
381
|
+
const t106 = (((a1[0] * t102) + (a1[1] * t103)) + (a1[2] * t104));
|
|
382
|
+
const t107 = (((a0[0] * t102) + (a0[1] * t103)) + (a0[2] * t104));
|
|
383
|
+
const t108 = ((t107 > t13) ? t107 : t13);
|
|
384
|
+
const t109 = ((t106 > t108) ? t106 : t108);
|
|
385
|
+
const t110 = (((b2[0] * t102) + (b2[1] * t103)) + (b2[2] * t104));
|
|
386
|
+
const t111 = (((b1[0] * t102) + (b1[1] * t103)) + (b1[2] * t104));
|
|
387
|
+
const t112 = (((b0[0] * t102) + (b0[1] * t103)) + (b0[2] * t104));
|
|
388
|
+
const t113 = ((t112 < t12) ? t112 : t12);
|
|
389
|
+
const t114 = ((t111 < t113) ? t111 : t113);
|
|
390
|
+
const t115 = ((t112 > t13) ? t112 : t13);
|
|
391
|
+
const t116 = ((t111 > t115) ? t111 : t115);
|
|
392
|
+
const t117 = ((t107 < t12) ? t107 : t12);
|
|
393
|
+
const t118 = ((t106 < t117) ? t106 : t117);
|
|
394
|
+
const t119 = ((t3 * t26) - (t1 * t28));
|
|
395
|
+
const t120 = ((t1 * t30) - (t5 * t26));
|
|
396
|
+
const t121 = ((t5 * t28) - (t3 * t30));
|
|
397
|
+
const t122 = (((a2[0] * t119) + (a2[1] * t120)) + (a2[2] * t121));
|
|
398
|
+
const t123 = (((a1[0] * t119) + (a1[1] * t120)) + (a1[2] * t121));
|
|
399
|
+
const t124 = (((a0[0] * t119) + (a0[1] * t120)) + (a0[2] * t121));
|
|
400
|
+
const t125 = ((t124 > t13) ? t124 : t13);
|
|
401
|
+
const t126 = ((t123 > t125) ? t123 : t125);
|
|
402
|
+
const t127 = (((b2[0] * t119) + (b2[1] * t120)) + (b2[2] * t121));
|
|
403
|
+
const t128 = (((b1[0] * t119) + (b1[1] * t120)) + (b1[2] * t121));
|
|
404
|
+
const t129 = (((b0[0] * t119) + (b0[1] * t120)) + (b0[2] * t121));
|
|
405
|
+
const t130 = ((t129 < t12) ? t129 : t12);
|
|
406
|
+
const t131 = ((t128 < t130) ? t128 : t130);
|
|
407
|
+
const t132 = ((t129 > t13) ? t129 : t13);
|
|
408
|
+
const t133 = ((t128 > t132) ? t128 : t132);
|
|
409
|
+
const t134 = ((t124 < t12) ? t124 : t12);
|
|
410
|
+
const t135 = ((t123 < t134) ? t123 : t134);
|
|
411
|
+
const t136 = ((t3 * t82) - (t1 * t83));
|
|
412
|
+
const t137 = ((t1 * t85) - (t5 * t82));
|
|
413
|
+
const t138 = ((t5 * t83) - (t3 * t85));
|
|
414
|
+
const t139 = (((a2[0] * t136) + (a2[1] * t137)) + (a2[2] * t138));
|
|
415
|
+
const t140 = (((a1[0] * t136) + (a1[1] * t137)) + (a1[2] * t138));
|
|
416
|
+
const t141 = (((a0[0] * t136) + (a0[1] * t137)) + (a0[2] * t138));
|
|
417
|
+
const t142 = ((t141 > t13) ? t141 : t13);
|
|
418
|
+
const t143 = ((t140 > t142) ? t140 : t142);
|
|
419
|
+
const t144 = (((b2[0] * t136) + (b2[1] * t137)) + (b2[2] * t138));
|
|
420
|
+
const t145 = (((b1[0] * t136) + (b1[1] * t137)) + (b1[2] * t138));
|
|
421
|
+
const t146 = (((b0[0] * t136) + (b0[1] * t137)) + (b0[2] * t138));
|
|
422
|
+
const t147 = ((t146 < t12) ? t146 : t12);
|
|
423
|
+
const t148 = ((t145 < t147) ? t145 : t147);
|
|
424
|
+
const t149 = ((t146 > t13) ? t146 : t13);
|
|
425
|
+
const t150 = ((t145 > t149) ? t145 : t149);
|
|
426
|
+
const t151 = ((t141 < t12) ? t141 : t12);
|
|
427
|
+
const t152 = ((t140 < t151) ? t140 : t151);
|
|
428
|
+
const t153 = (a0[1] - a2[1]);
|
|
429
|
+
const t154 = (a0[2] - a2[2]);
|
|
430
|
+
const t155 = ((t153 * t27) - (t154 * t25));
|
|
431
|
+
const t156 = (a0[0] - a2[0]);
|
|
432
|
+
const t157 = ((t154 * t31) - (t156 * t27));
|
|
433
|
+
const t158 = ((t156 * t25) - (t153 * t31));
|
|
434
|
+
const t159 = (((a2[0] * t155) + (a2[1] * t157)) + (a2[2] * t158));
|
|
435
|
+
const t160 = (((a1[0] * t155) + (a1[1] * t157)) + (a1[2] * t158));
|
|
436
|
+
const t161 = (((a0[0] * t155) + (a0[1] * t157)) + (a0[2] * t158));
|
|
437
|
+
const t162 = ((t161 > t13) ? t161 : t13);
|
|
438
|
+
const t163 = ((t160 > t162) ? t160 : t162);
|
|
439
|
+
const t164 = (((b2[0] * t155) + (b2[1] * t157)) + (b2[2] * t158));
|
|
440
|
+
const t165 = (((b1[0] * t155) + (b1[1] * t157)) + (b1[2] * t158));
|
|
441
|
+
const t166 = (((b0[0] * t155) + (b0[1] * t157)) + (b0[2] * t158));
|
|
442
|
+
const t167 = ((t166 < t12) ? t166 : t12);
|
|
443
|
+
const t168 = ((t165 < t167) ? t165 : t167);
|
|
444
|
+
const t169 = ((t166 > t13) ? t166 : t13);
|
|
445
|
+
const t170 = ((t165 > t169) ? t165 : t169);
|
|
446
|
+
const t171 = ((t161 < t12) ? t161 : t12);
|
|
447
|
+
const t172 = ((t160 < t171) ? t160 : t171);
|
|
448
|
+
const t173 = ((t153 * t26) - (t154 * t28));
|
|
449
|
+
const t174 = ((t154 * t30) - (t156 * t26));
|
|
450
|
+
const t175 = ((t156 * t28) - (t153 * t30));
|
|
451
|
+
const t176 = (((a2[0] * t173) + (a2[1] * t174)) + (a2[2] * t175));
|
|
452
|
+
const t177 = (((a1[0] * t173) + (a1[1] * t174)) + (a1[2] * t175));
|
|
453
|
+
const t178 = (((a0[0] * t173) + (a0[1] * t174)) + (a0[2] * t175));
|
|
454
|
+
const t179 = ((t178 > t13) ? t178 : t13);
|
|
455
|
+
const t180 = ((t177 > t179) ? t177 : t179);
|
|
456
|
+
const t181 = (((b2[0] * t173) + (b2[1] * t174)) + (b2[2] * t175));
|
|
457
|
+
const t182 = (((b1[0] * t173) + (b1[1] * t174)) + (b1[2] * t175));
|
|
458
|
+
const t183 = (((b0[0] * t173) + (b0[1] * t174)) + (b0[2] * t175));
|
|
459
|
+
const t184 = ((t183 < t12) ? t183 : t12);
|
|
460
|
+
const t185 = ((t182 < t184) ? t182 : t184);
|
|
461
|
+
const t186 = ((t183 > t13) ? t183 : t13);
|
|
462
|
+
const t187 = ((t182 > t186) ? t182 : t186);
|
|
463
|
+
const t188 = ((t178 < t12) ? t178 : t12);
|
|
464
|
+
const t189 = ((t177 < t188) ? t177 : t188);
|
|
465
|
+
const t190 = ((t153 * t82) - (t154 * t83));
|
|
466
|
+
const t191 = ((t154 * t85) - (t156 * t82));
|
|
467
|
+
const t192 = ((t156 * t83) - (t153 * t85));
|
|
468
|
+
const t193 = (((a2[0] * t190) + (a2[1] * t191)) + (a2[2] * t192));
|
|
469
|
+
const t194 = (((a1[0] * t190) + (a1[1] * t191)) + (a1[2] * t192));
|
|
470
|
+
const t195 = (((a0[0] * t190) + (a0[1] * t191)) + (a0[2] * t192));
|
|
471
|
+
const t196 = ((t195 > t13) ? t195 : t13);
|
|
472
|
+
const t197 = ((t194 > t196) ? t194 : t196);
|
|
473
|
+
const t198 = (((b2[0] * t190) + (b2[1] * t191)) + (b2[2] * t192));
|
|
474
|
+
const t199 = (((b1[0] * t190) + (b1[1] * t191)) + (b1[2] * t192));
|
|
475
|
+
const t200 = (((b0[0] * t190) + (b0[1] * t191)) + (b0[2] * t192));
|
|
476
|
+
const t201 = ((t200 < t12) ? t200 : t12);
|
|
477
|
+
const t202 = ((t199 < t201) ? t199 : t201);
|
|
478
|
+
const t203 = ((t200 > t13) ? t200 : t13);
|
|
479
|
+
const t204 = ((t199 > t203) ? t199 : t203);
|
|
480
|
+
const t205 = ((t195 < t12) ? t195 : t12);
|
|
481
|
+
const t206 = ((t194 < t205) ? t194 : t205);
|
|
482
|
+
return ((((((t9 > t15) ? t9 : t15) <= ((t16 < t20) ? t16 : t20)) || (((t16 > t22) ? t16 : t22) <= ((t9 < t24) ? t9 : t24))) || (((((t34 > t38) ? t34 : t38) <= ((t39 < t43) ? t39 : t43)) || (((t39 > t45) ? t39 : t45) <= ((t34 < t47) ? t34 : t47))) || ((((((t48 * t48) + (t49 * t49)) + (t50 * t50)) > eps) ? ((((t51 > t55) ? t51 : t55) <= ((t56 < t60) ? t56 : t60)) || (((t56 > t62) ? t56 : t62) <= ((t51 < t64) ? t51 : t64))) : false) || ((((((t65 * t65) + (t66 * t66)) + (t67 * t67)) > eps) ? ((((t68 > t72) ? t68 : t72) <= ((t73 < t77) ? t73 : t77)) || (((t73 > t79) ? t73 : t79) <= ((t68 < t81) ? t68 : t81))) : false) || ((((((t84 * t84) + (t86 * t86)) + (t87 * t87)) > eps) ? ((((t88 > t92) ? t88 : t92) <= ((t93 < t97) ? t93 : t97)) || (((t93 > t99) ? t93 : t99) <= ((t88 < t101) ? t88 : t101))) : false) || ((((((t102 * t102) + (t103 * t103)) + (t104 * t104)) > eps) ? ((((t105 > t109) ? t105 : t109) <= ((t110 < t114) ? t110 : t114)) || (((t110 > t116) ? t110 : t116) <= ((t105 < t118) ? t105 : t118))) : false) || ((((((t119 * t119) + (t120 * t120)) + (t121 * t121)) > eps) ? ((((t122 > t126) ? t122 : t126) <= ((t127 < t131) ? t127 : t131)) || (((t127 > t133) ? t127 : t133) <= ((t122 < t135) ? t122 : t135))) : false) || ((((((t136 * t136) + (t137 * t137)) + (t138 * t138)) > eps) ? ((((t139 > t143) ? t139 : t143) <= ((t144 < t148) ? t144 : t148)) || (((t144 > t150) ? t144 : t150) <= ((t139 < t152) ? t139 : t152))) : false) || ((((((t155 * t155) + (t157 * t157)) + (t158 * t158)) > eps) ? ((((t159 > t163) ? t159 : t163) <= ((t164 < t168) ? t164 : t168)) || (((t164 > t170) ? t164 : t170) <= ((t159 < t172) ? t159 : t172))) : false) || ((((((t173 * t173) + (t174 * t174)) + (t175 * t175)) > eps) ? ((((t176 > t180) ? t176 : t180) <= ((t181 < t185) ? t181 : t185)) || (((t181 > t187) ? t181 : t187) <= ((t176 < t189) ? t176 : t189))) : false) || (((((t190 * t190) + (t191 * t191)) + (t192 * t192)) > eps) ? ((((t193 > t197) ? t193 : t197) <= ((t198 < t202) ? t198 : t202)) || (((t198 > t204) ? t198 : t204) <= ((t193 < t206) ? t193 : t206))) : false))))))))))) ? false : true);
|
|
483
|
+
}
|
|
484
|
+
//# sourceMappingURL=plato.g.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plato.g.js","sourceRoot":"","sources":["../../../src/math/generated/plato.g.ts"],"names":[],"mappings":"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AAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,CA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AAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CA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EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7iE,CAAC"}
|
|
@@ -8,6 +8,9 @@ import type { Vec3 } from '../types.js';
|
|
|
8
8
|
* a `touch`. Coplanar overlap is intentionally treated as touching, not a hard
|
|
9
9
|
* clash — genuine interpenetration always produces non-coplanar crossing
|
|
10
10
|
* triangles, which the edge-cross axes separate correctly.
|
|
11
|
+
*
|
|
12
|
+
* The SAT itself lives once, in the single-source generated kernel; this
|
|
13
|
+
* wrapper binds the flattened tuple-native form (zero per-call allocation).
|
|
11
14
|
*/
|
|
12
15
|
export declare function triTriIntersect(a0: Vec3, a1: Vec3, a2: Vec3, b0: Vec3, b1: Vec3, b2: Vec3, eps?: number): boolean;
|
|
13
16
|
//# sourceMappingURL=triangle-intersect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangle-intersect.d.ts","sourceRoot":"","sources":["../../src/math/triangle-intersect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC
|
|
1
|
+
{"version":3,"file":"triangle-intersect.d.ts","sourceRoot":"","sources":["../../src/math/triangle-intersect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,IAAI,EACR,EAAE,EAAE,IAAI,EACR,EAAE,EAAE,IAAI,EACR,EAAE,EAAE,IAAI,EACR,EAAE,EAAE,IAAI,EACR,EAAE,EAAE,IAAI,EACR,GAAG,SAAQ,GACV,OAAO,CAET"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
import
|
|
4
|
+
import * as G from './generated/plato.g.js';
|
|
5
5
|
/**
|
|
6
6
|
* Exact triangle–triangle intersection via the Separating Axis Theorem.
|
|
7
7
|
*
|
|
@@ -11,45 +11,11 @@ import { cross, dot, sub } from './vec3.js';
|
|
|
11
11
|
* a `touch`. Coplanar overlap is intentionally treated as touching, not a hard
|
|
12
12
|
* clash — genuine interpenetration always produces non-coplanar crossing
|
|
13
13
|
* triangles, which the edge-cross axes separate correctly.
|
|
14
|
+
*
|
|
15
|
+
* The SAT itself lives once, in the single-source generated kernel; this
|
|
16
|
+
* wrapper binds the flattened tuple-native form (zero per-call allocation).
|
|
14
17
|
*/
|
|
15
18
|
export function triTriIntersect(a0, a1, a2, b0, b1, b2, eps = 1e-12) {
|
|
16
|
-
|
|
17
|
-
const edgesB = [sub(b1, b0), sub(b2, b1), sub(b0, b2)];
|
|
18
|
-
const axes = [cross(edgesA[0], edgesA[1]), cross(edgesB[0], edgesB[1])];
|
|
19
|
-
for (const ea of edgesA) {
|
|
20
|
-
for (const eb of edgesB) {
|
|
21
|
-
const axis = cross(ea, eb);
|
|
22
|
-
if (dot(axis, axis) > eps) {
|
|
23
|
-
axes.push(axis);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const va = [a0, a1, a2];
|
|
28
|
-
const vb = [b0, b1, b2];
|
|
29
|
-
for (const axis of axes) {
|
|
30
|
-
let minA = Infinity;
|
|
31
|
-
let maxA = -Infinity;
|
|
32
|
-
let minB = Infinity;
|
|
33
|
-
let maxB = -Infinity;
|
|
34
|
-
for (const v of va) {
|
|
35
|
-
const p = dot(v, axis);
|
|
36
|
-
if (p < minA)
|
|
37
|
-
minA = p;
|
|
38
|
-
if (p > maxA)
|
|
39
|
-
maxA = p;
|
|
40
|
-
}
|
|
41
|
-
for (const v of vb) {
|
|
42
|
-
const p = dot(v, axis);
|
|
43
|
-
if (p < minB)
|
|
44
|
-
minB = p;
|
|
45
|
-
if (p > maxB)
|
|
46
|
-
maxB = p;
|
|
47
|
-
}
|
|
48
|
-
// `<=` so exact contact counts as separation (touch), not interpenetration.
|
|
49
|
-
if (maxA <= minB || maxB <= minA) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return true;
|
|
19
|
+
return G.triTriIntersect(a0, a1, a2, b0, b1, b2, eps);
|
|
54
20
|
}
|
|
55
21
|
//# sourceMappingURL=triangle-intersect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangle-intersect.js","sourceRoot":"","sources":["../../src/math/triangle-intersect.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,
|
|
1
|
+
{"version":3,"file":"triangle-intersect.js","sourceRoot":"","sources":["../../src/math/triangle-intersect.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAQ,EACR,EAAQ,EACR,EAAQ,EACR,EAAQ,EACR,EAAQ,EACR,EAAQ,EACR,GAAG,GAAG,KAAK;IAEX,OAAO,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC"}
|
package/dist/math/vec3.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vec3.d.ts","sourceRoot":"","sources":["../../src/math/vec3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vec3.d.ts","sourceRoot":"","sources":["../../src/math/vec3.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE1C;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE1C;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE5C;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAErC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAE/C;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE1C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAExD"}
|
package/dist/math/vec3.js
CHANGED
|
@@ -1,38 +1,32 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import * as G from './generated/plato.g.js';
|
|
4
5
|
export function sub(a, b) {
|
|
5
|
-
return
|
|
6
|
+
return G.sub(a, b);
|
|
6
7
|
}
|
|
7
8
|
export function add(a, b) {
|
|
8
|
-
return
|
|
9
|
+
return G.add(a, b);
|
|
9
10
|
}
|
|
10
11
|
export function scale(a, s) {
|
|
11
|
-
return
|
|
12
|
+
return G.scale(a, s);
|
|
12
13
|
}
|
|
13
14
|
export function cross(a, b) {
|
|
14
|
-
return
|
|
15
|
-
a[1] * b[2] - a[2] * b[1],
|
|
16
|
-
a[2] * b[0] - a[0] * b[2],
|
|
17
|
-
a[0] * b[1] - a[1] * b[0],
|
|
18
|
-
];
|
|
15
|
+
return G.cross(a, b);
|
|
19
16
|
}
|
|
20
17
|
export function dot(a, b) {
|
|
21
|
-
return a
|
|
18
|
+
return G.dot(a, b);
|
|
22
19
|
}
|
|
23
20
|
export function lenSq(a) {
|
|
24
|
-
return
|
|
21
|
+
return G.lenSq(a);
|
|
25
22
|
}
|
|
26
23
|
export function distSq(a, b) {
|
|
27
|
-
|
|
28
|
-
const dy = a[1] - b[1];
|
|
29
|
-
const dz = a[2] - b[2];
|
|
30
|
-
return dx * dx + dy * dy + dz * dz;
|
|
24
|
+
return G.distSq(a, b);
|
|
31
25
|
}
|
|
32
26
|
export function mid(a, b) {
|
|
33
|
-
return
|
|
27
|
+
return G.mid(a, b);
|
|
34
28
|
}
|
|
35
29
|
export function centroid(a, b, c) {
|
|
36
|
-
return
|
|
30
|
+
return G.centroid(a, b, c);
|
|
37
31
|
}
|
|
38
32
|
//# sourceMappingURL=vec3.js.map
|
package/dist/math/vec3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vec3.js","sourceRoot":"","sources":["../../src/math/vec3.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"vec3.js","sourceRoot":"","sources":["../../src/math/vec3.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAU/D,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAC;AAE5C,MAAM,UAAU,GAAG,CAAC,CAAO,EAAE,CAAO;IAClC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAO,EAAE,CAAO;IAClC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAO,EAAE,CAAS;IACtC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAO,EAAE,CAAO;IACpC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAO,EAAE,CAAO;IAClC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,CAAO;IAC3B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAO,EAAE,CAAO;IACrC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAO,EAAE,CAAO;IAClC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAO,EAAE,CAAO,EAAE,CAAO;IAChD,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/clash",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.3",
|
|
4
4
|
"description": "Clash detection for IFC-Lite — representation-agnostic core engine + source adapters",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@ifc-lite/spatial": "^1.14.
|
|
37
|
-
"@ifc-lite/geometry": "^3.
|
|
38
|
-
"@ifc-lite/parser": "^3.8.
|
|
39
|
-
"@ifc-lite/query": "^1.14.
|
|
40
|
-
"@ifc-lite/bcf": "^1.16.
|
|
41
|
-
"@ifc-lite/ifcx": "^2.
|
|
42
|
-
"@ifc-lite/wasm": "^
|
|
36
|
+
"@ifc-lite/spatial": "^1.14.12",
|
|
37
|
+
"@ifc-lite/geometry": "^3.2.0",
|
|
38
|
+
"@ifc-lite/parser": "^3.8.5",
|
|
39
|
+
"@ifc-lite/query": "^1.14.13",
|
|
40
|
+
"@ifc-lite/bcf": "^1.16.2",
|
|
41
|
+
"@ifc-lite/ifcx": "^2.3.0",
|
|
42
|
+
"@ifc-lite/wasm": "^4.0.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"typescript": "^6.0.3",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"url": "https://github.com/LTplus-AG/ifc-lite.git",
|
|
53
53
|
"directory": "packages/clash"
|
|
54
54
|
},
|
|
55
|
-
"homepage": "https://
|
|
55
|
+
"homepage": "https://ifclite.dev/docs/",
|
|
56
56
|
"bugs": "https://github.com/LTplus-AG/ifc-lite/issues",
|
|
57
57
|
"keywords": [
|
|
58
58
|
"ifc",
|