@developmentseed/raster-reproject 0.1.0-beta.3 → 0.1.0-beta.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@developmentseed/raster-reproject",
3
- "version": "0.1.0-beta.3",
3
+ "version": "0.1.0-beta.6",
4
4
  "description": "Mesh generation for client-side raster reprojection.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,18 +0,0 @@
1
- export type GeoTransform = [number, number, number, number, number, number];
2
- /**
3
- * Find the inverse of this GeoTransform.
4
- *
5
- * Ported from rasterio/affine:
6
- * https://github.com/rasterio/affine/blob/a7a916fc7012f8afeb6489246ada61a76ccb8bc7/src/affine.py#L671-L692
7
- * under the BSD-3-Clause License.
8
- *
9
- * @param {GeoTransform} gt Geotransform.
10
- *
11
- * @return {GeoTransform} Inverse of the geotransform.
12
- */
13
- export declare function invertGeoTransform(gt: GeoTransform): GeoTransform;
14
- /**
15
- * Apply a GeoTransform to a coordinate.
16
- */
17
- export declare function applyAffine(x: number, y: number, gt: [number, number, number, number, number, number]): [number, number];
18
- //# sourceMappingURL=affine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"affine.d.ts","sourceRoot":"","sources":["../../src/affine.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE5E;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,GAAG,YAAY,CAgBjE;AAWD;;GAEG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACnD,CAAC,MAAM,EAAE,MAAM,CAAC,CAGlB"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Find the inverse of this GeoTransform.
3
- *
4
- * Ported from rasterio/affine:
5
- * https://github.com/rasterio/affine/blob/a7a916fc7012f8afeb6489246ada61a76ccb8bc7/src/affine.py#L671-L692
6
- * under the BSD-3-Clause License.
7
- *
8
- * @param {GeoTransform} gt Geotransform.
9
- *
10
- * @return {GeoTransform} Inverse of the geotransform.
11
- */
12
- export function invertGeoTransform(gt) {
13
- if (isDegenerate(gt)) {
14
- throw new Error("Cannot invert degenerate transform");
15
- }
16
- const idet = 1.0 / determinant(gt);
17
- const [sa, sb, sc, sd, se, sf] = gt;
18
- const ra = se * idet;
19
- const rb = -sb * idet;
20
- const rd = -sd * idet;
21
- const re = sa * idet;
22
- // prettier-ignore
23
- return [
24
- ra, rb, -sc * ra - sf * rb,
25
- rd, re, -sc * rd - sf * re,
26
- ];
27
- }
28
- function isDegenerate(gt) {
29
- return determinant(gt) === 0;
30
- }
31
- function determinant(gt) {
32
- const [a, b, _c, d, e, _f] = gt;
33
- return a * e - b * d;
34
- }
35
- /**
36
- * Apply a GeoTransform to a coordinate.
37
- */
38
- export function applyAffine(x, y, gt) {
39
- const [a, b, c, d, e, f] = gt;
40
- return [a * x + b * y + c, d * x + e * y + f];
41
- }
42
- //# sourceMappingURL=affine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"affine.js","sourceRoot":"","sources":["../../src/affine.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAgB;IACjD,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACrB,kBAAkB;IAClB,OAAO;QACH,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAC1B,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAgB;IACpC,OAAO,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CAAC,EAAgB;IACnC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,CAAS,EACT,CAAS,EACT,EAAoD;IAEpD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -1,96 +0,0 @@
1
- /**
2
- * Define [**uv coordinates**](https://en.wikipedia.org/wiki/UV_mapping) as a float-valued image-local coordinate space where the top left is `(0, 0)` and the bottom right is `(1, 1)`.
3
- *
4
- * Define [**Barycentric coordinates**](https://en.wikipedia.org/wiki/Barycentric_coordinate_system) as float-valued triangle-local coordinates, represented as a 3-tuple of floats, where the tuple must add up to 1. The coordinate represents "how close to each vertex" a point in the interior of a triangle is. I.e. `(0, 0, 1)`, `(0, 1, 0)`, and `(1, 0, 0)` are all valid barycentric coordinates that define one of the three vertices. `(1/3, 1/3, 1/3)` represents the centroid of a triangle. `(1/2, 1/2, 0)` represents a point that is halfway between vertices `a` and `b` and has "none" of vertex `c`.
5
- *
6
- *
7
- * ## Changes
8
- *
9
- * - Delatin coordinates are in terms of pixel space whereas here we use uv space.
10
- *
11
- * Originally copied from https://github.com/mapbox/delatin under the ISC
12
- * license, then subject to further modifications.
13
- */
14
- export interface ReprojectionFns {
15
- /**
16
- * Convert from UV coordinates to input CRS coordinates.
17
- *
18
- * This is the affine geotransform from the input image.
19
- */
20
- pixelToInputCRS(x: number, y: number): [number, number];
21
- /**
22
- * Convert from input CRS coordinates back to UV coordinates.
23
- *
24
- * Inverse of the affine geotransform from the input image.
25
- */
26
- inputCRSToPixel(x: number, y: number): [number, number];
27
- /**
28
- * Apply the forward projection from input CRS to output CRS.
29
- */
30
- forwardReproject(x: number, y: number): [number, number];
31
- /**
32
- * Apply the inverse projection from output CRS back to input CRS.
33
- */
34
- inverseReproject(x: number, y: number): [number, number];
35
- }
36
- export declare class RasterReprojector {
37
- reprojectors: ReprojectionFns;
38
- width: number;
39
- height: number;
40
- /**
41
- * UV vertex coordinates (x, y), i.e.
42
- * [x0, y0, x1, y1, ...]
43
- *
44
- * These coordinates are floats that range from [0, 1] in both X and Y.
45
- */
46
- uvs: number[];
47
- /**
48
- * XY Positions in output CRS, computed via exact forward reprojection.
49
- */
50
- exactOutputPositions: number[];
51
- /**
52
- * triangle vertex indices
53
- */
54
- triangles: number[];
55
- private _halfedges;
56
- /**
57
- * The UV texture coordinates of candidates found from
58
- * `findReprojectionCandidate`.
59
- *
60
- * Maybe in the future we'll want to store the barycentric coordinates instead
61
- * of just the uv coordinates?
62
- */
63
- private _candidatesUV;
64
- private _queueIndices;
65
- private _queue;
66
- private _errors;
67
- private _pending;
68
- private _pendingLen;
69
- constructor(reprojectors: ReprojectionFns, width: number, height?: number);
70
- run(maxError?: number): void;
71
- refine(): void;
72
- getMaxError(): number;
73
- private _flush;
74
- /**
75
- * Conversion of upstream's `_findCandidate` for reprojection error handling.
76
- *
77
- * @param {number} t The index (into `this.triangles`) of the pending triangle to process.
78
- *
79
- * @return {void} Doesn't return; instead modifies internal state.
80
- */
81
- private _findReprojectionCandidate;
82
- private _step;
83
- private _addPoint;
84
- _addTriangle(a: number, b: number, c: number, ab: number, bc: number, ca: number, e?: number): number;
85
- private _legalize;
86
- private _handleCollinear;
87
- private _queuePush;
88
- private _queuePop;
89
- private _queuePopBack;
90
- private _queueRemove;
91
- private _queueLess;
92
- private _queueSwap;
93
- private _queueUp;
94
- private _queueDown;
95
- }
96
- //# sourceMappingURL=delatin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delatin.d.ts","sourceRoot":"","sources":["../../src/delatin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiBH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExD;;;;OAIG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExD;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEzD;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1D;AAED,qBAAa,iBAAiB;IAC5B,YAAY,EAAE,eAAe,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,GAAG,EAAE,MAAM,EAAE,CAAC;IAEd;;OAEG;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAE/B;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,OAAO,CAAC,UAAU,CAAW;IAE7B;;;;;;OAMG;IACH,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,aAAa,CAAW;IAEhC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAS;gBAG1B,YAAY,EAAE,eAAe,EAC7B,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAc;IAoCxB,GAAG,CAAC,QAAQ,GAAE,MAAU,GAAG,IAAI;IAO/B,MAAM,IAAI,IAAI;IAMd,WAAW,IAAI,MAAM;IAKrB,OAAO,CAAC,MAAM;IA4Gd;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IA6HlC,OAAO,CAAC,KAAK;IA6Cb,OAAO,CAAC,SAAS;IAqBjB,YAAY,CACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,GAAE,MAA8B;IAqCnC,OAAO,CAAC,SAAS;IAiEjB,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,UAAU;CAoBnB"}
@@ -1,558 +0,0 @@
1
- /**
2
- * Define [**uv coordinates**](https://en.wikipedia.org/wiki/UV_mapping) as a float-valued image-local coordinate space where the top left is `(0, 0)` and the bottom right is `(1, 1)`.
3
- *
4
- * Define [**Barycentric coordinates**](https://en.wikipedia.org/wiki/Barycentric_coordinate_system) as float-valued triangle-local coordinates, represented as a 3-tuple of floats, where the tuple must add up to 1. The coordinate represents "how close to each vertex" a point in the interior of a triangle is. I.e. `(0, 0, 1)`, `(0, 1, 0)`, and `(1, 0, 0)` are all valid barycentric coordinates that define one of the three vertices. `(1/3, 1/3, 1/3)` represents the centroid of a triangle. `(1/2, 1/2, 0)` represents a point that is halfway between vertices `a` and `b` and has "none" of vertex `c`.
5
- *
6
- *
7
- * ## Changes
8
- *
9
- * - Delatin coordinates are in terms of pixel space whereas here we use uv space.
10
- *
11
- * Originally copied from https://github.com/mapbox/delatin under the ISC
12
- * license, then subject to further modifications.
13
- */
14
- /**
15
- * Barycentric sample points in uv space for where to sample reprojection
16
- * errors.
17
- */
18
- // TODO: Increase sampling density if uv area is large
19
- // Note: these sample points should never be an existing vertex (that is, no
20
- // vertex of a sample point should ever be `1`, such as `(0,0,1)`, because that
21
- // would try to sample exactly at an existing triangle vertex).
22
- const SAMPLE_POINTS = [
23
- [1 / 3, 1 / 3, 1 / 3], // centroid
24
- [0.5, 0.5, 0], // edge 0–1
25
- [0.5, 0, 0.5], // edge 0–2
26
- [0, 0.5, 0.5], // edge 1–2
27
- ];
28
- export class RasterReprojector {
29
- reprojectors;
30
- width;
31
- height;
32
- /**
33
- * UV vertex coordinates (x, y), i.e.
34
- * [x0, y0, x1, y1, ...]
35
- *
36
- * These coordinates are floats that range from [0, 1] in both X and Y.
37
- */
38
- uvs;
39
- /**
40
- * XY Positions in output CRS, computed via exact forward reprojection.
41
- */
42
- exactOutputPositions;
43
- /**
44
- * triangle vertex indices
45
- */
46
- triangles;
47
- _halfedges;
48
- /**
49
- * The UV texture coordinates of candidates found from
50
- * `findReprojectionCandidate`.
51
- *
52
- * Maybe in the future we'll want to store the barycentric coordinates instead
53
- * of just the uv coordinates?
54
- */
55
- _candidatesUV;
56
- _queueIndices;
57
- _queue;
58
- _errors;
59
- _pending;
60
- _pendingLen;
61
- constructor(reprojectors, width, height = width) {
62
- this.reprojectors = reprojectors;
63
- this.width = width;
64
- this.height = height;
65
- this.uvs = []; // vertex coordinates (x, y)
66
- this.exactOutputPositions = [];
67
- this.triangles = []; // mesh triangle indices
68
- // additional triangle data
69
- this._halfedges = [];
70
- this._candidatesUV = [];
71
- this._queueIndices = [];
72
- this._queue = []; // queue of added triangles
73
- this._errors = [];
74
- this._pending = []; // triangles pending addition to queue
75
- this._pendingLen = 0;
76
- // The two initial triangles cover the entire input texture in UV space, so
77
- // they range from [0, 0] to [1, 1] in u and v.
78
- const u1 = 1;
79
- const v1 = 1;
80
- const p0 = this._addPoint(0, 0);
81
- const p1 = this._addPoint(u1, 0);
82
- const p2 = this._addPoint(0, v1);
83
- const p3 = this._addPoint(u1, v1);
84
- // add initial two triangles
85
- const t0 = this._addTriangle(p3, p0, p2, -1, -1, -1);
86
- this._addTriangle(p0, p3, p1, t0, -1, -1);
87
- this._flush();
88
- }
89
- // refine the mesh until its maximum error gets below the given one
90
- run(maxError = 1) {
91
- while (this.getMaxError() > maxError) {
92
- this.refine();
93
- }
94
- }
95
- // refine the mesh with a single point
96
- refine() {
97
- this._step();
98
- this._flush();
99
- }
100
- // max error of the current mesh
101
- getMaxError() {
102
- return this._errors[0];
103
- }
104
- // rasterize and queue all triangles that got added or updated in _step
105
- _flush() {
106
- for (let i = 0; i < this._pendingLen; i++) {
107
- const t = this._pending[i];
108
- this._findReprojectionCandidate(t);
109
- }
110
- this._pendingLen = 0;
111
- }
112
- // Original, upstream implementation of FindCandidate:
113
- // // rasterize a triangle, find its max error, and queue it for processing
114
- // private _findCandidate(
115
- // p0x: number,
116
- // p0y: number,
117
- // p1x: number,
118
- // p1y: number,
119
- // p2x: number,
120
- // p2y: number,
121
- // t: number,
122
- // ) {
123
- // // triangle bounding box
124
- // const minX = Math.min(p0x, p1x, p2x);
125
- // const minY = Math.min(p0y, p1y, p2y);
126
- // const maxX = Math.max(p0x, p1x, p2x);
127
- // const maxY = Math.max(p0y, p1y, p2y);
128
- // // forward differencing variables
129
- // let w00 = orient(p1x, p1y, p2x, p2y, minX, minY);
130
- // let w01 = orient(p2x, p2y, p0x, p0y, minX, minY);
131
- // let w02 = orient(p0x, p0y, p1x, p1y, minX, minY);
132
- // const a01 = p1y - p0y;
133
- // const b01 = p0x - p1x;
134
- // const a12 = p2y - p1y;
135
- // const b12 = p1x - p2x;
136
- // const a20 = p0y - p2y;
137
- // const b20 = p2x - p0x;
138
- // // pre-multiplied z values at vertices
139
- // const a = orient(p0x, p0y, p1x, p1y, p2x, p2y);
140
- // const z0 = this.heightAt(p0x, p0y) / a;
141
- // const z1 = this.heightAt(p1x, p1y) / a;
142
- // const z2 = this.heightAt(p2x, p2y) / a;
143
- // // iterate over pixels in bounding box
144
- // let maxError = 0;
145
- // let mx = 0;
146
- // let my = 0;
147
- // for (let y = minY; y <= maxY; y++) {
148
- // // compute starting offset
149
- // let dx = 0;
150
- // if (w00 < 0 && a12 !== 0) {
151
- // dx = Math.max(dx, Math.floor(-w00 / a12));
152
- // }
153
- // if (w01 < 0 && a20 !== 0) {
154
- // dx = Math.max(dx, Math.floor(-w01 / a20));
155
- // }
156
- // if (w02 < 0 && a01 !== 0) {
157
- // dx = Math.max(dx, Math.floor(-w02 / a01));
158
- // }
159
- // let w0 = w00 + a12 * dx;
160
- // let w1 = w01 + a20 * dx;
161
- // let w2 = w02 + a01 * dx;
162
- // let wasInside = false;
163
- // for (let x = minX + dx; x <= maxX; x++) {
164
- // // check if inside triangle
165
- // if (w0 >= 0 && w1 >= 0 && w2 >= 0) {
166
- // wasInside = true;
167
- // // compute z using barycentric coordinates
168
- // const z = z0 * w0 + z1 * w1 + z2 * w2;
169
- // const dz = Math.abs(z - this.heightAt(x, y));
170
- // if (dz > maxError) {
171
- // maxError = dz;
172
- // mx = x;
173
- // my = y;
174
- // }
175
- // } else if (wasInside) {
176
- // break;
177
- // }
178
- // w0 += a12;
179
- // w1 += a20;
180
- // w2 += a01;
181
- // }
182
- // w00 += b12;
183
- // w01 += b20;
184
- // w02 += b01;
185
- // }
186
- // if (
187
- // (mx === p0x && my === p0y) ||
188
- // (mx === p1x && my === p1y) ||
189
- // (mx === p2x && my === p2y)
190
- // ) {
191
- // maxError = 0;
192
- // }
193
- // // update triangle metadata
194
- // this._candidatesUV[2 * t] = mx;
195
- // this._candidatesUV[2 * t + 1] = my;
196
- // // add triangle to priority queue
197
- // this._queuePush(t, maxError);
198
- // }
199
- /**
200
- * Conversion of upstream's `_findCandidate` for reprojection error handling.
201
- *
202
- * @param {number} t The index (into `this.triangles`) of the pending triangle to process.
203
- *
204
- * @return {void} Doesn't return; instead modifies internal state.
205
- */
206
- _findReprojectionCandidate(t) {
207
- // Find the three vertices of this triangle
208
- const a = 2 * this.triangles[t * 3 + 0];
209
- const b = 2 * this.triangles[t * 3 + 1];
210
- const c = 2 * this.triangles[t * 3 + 2];
211
- // Get the UV coordinates of each vertex
212
- const p0u = this.uvs[a];
213
- const p0v = this.uvs[a + 1];
214
- const p1u = this.uvs[b];
215
- const p1v = this.uvs[b + 1];
216
- const p2u = this.uvs[c];
217
- const p2v = this.uvs[c + 1];
218
- // Get the **known** output CRS positions of each vertex
219
- const out0x = this.exactOutputPositions[a];
220
- const out0y = this.exactOutputPositions[a + 1];
221
- const out1x = this.exactOutputPositions[b];
222
- const out1y = this.exactOutputPositions[b + 1];
223
- const out2x = this.exactOutputPositions[c];
224
- const out2y = this.exactOutputPositions[c + 1];
225
- // A running tally of the maximum pixel error of each of our candidate
226
- // points
227
- let maxError = 0;
228
- // The point in uv coordinates that produced the max error
229
- // Note that upstream also initializes the point of max error to [0, 0]
230
- let maxErrorU = 0;
231
- let maxErrorV = 0;
232
- // Recall that the sample point is in barycentric coordinates
233
- for (const samplePoint of SAMPLE_POINTS) {
234
- // Get the UV coordinates of the sample point
235
- const uvSampleU = barycentricMix(p0u, p1u, p2u, samplePoint[0], samplePoint[1], samplePoint[2]);
236
- const uvSampleV = barycentricMix(p0v, p1v, p2v, samplePoint[0], samplePoint[1], samplePoint[2]);
237
- // Get the output CRS coordinates of the sample point by bilinear
238
- // interpolation
239
- const outSampleX = barycentricMix(out0x, out1x, out2x, samplePoint[0], samplePoint[1], samplePoint[2]);
240
- const outSampleY = barycentricMix(out0y, out1y, out2y, samplePoint[0], samplePoint[1], samplePoint[2]);
241
- // Convert uv to pixel space
242
- const pixelExactX = uvSampleU * (this.width - 1);
243
- const pixelExactY = uvSampleV * (this.height - 1);
244
- // Reproject these linearly-interpolated coordinates **from target CRS
245
- // to input CRS**. This gives us the **exact position in input space**
246
- // of the linearly interpolated sample point in output space.
247
- const inputCRSSampled = this.reprojectors.inverseReproject(outSampleX, outSampleY);
248
- // Find the pixel coordinates of the sampled point by using the inverse
249
- // geotransform.
250
- const pixelSampled = this.reprojectors.inputCRSToPixel(inputCRSSampled[0], inputCRSSampled[1]);
251
- // 4. error in pixel space
252
- const dx = pixelExactX - pixelSampled[0];
253
- const dy = pixelExactY - pixelSampled[1];
254
- const err = Math.hypot(dx, dy);
255
- if (err > maxError) {
256
- maxError = err;
257
- maxErrorU = uvSampleU;
258
- maxErrorV = uvSampleV;
259
- }
260
- }
261
- //////
262
- // Now we can resume with code from upstream's `_findCandidate` that
263
- // modifies the internal state of what triangles to subdivide.
264
- // Check that the max error point is not one of the existing triangle
265
- // vertices
266
- // TODO: perhaps we should use float precision epsilon here?
267
- if ((maxErrorU === p0u && maxErrorV === p0v) ||
268
- (maxErrorU === p1u && maxErrorV === p1v) ||
269
- (maxErrorU === p2u && maxErrorV === p2v)) {
270
- maxError = 0;
271
- }
272
- // update triangle metadata
273
- this._candidatesUV[2 * t] = maxErrorU;
274
- this._candidatesUV[2 * t + 1] = maxErrorV;
275
- // add triangle to priority queue
276
- this._queuePush(t, maxError);
277
- }
278
- // process the next triangle in the queue, splitting it with a new point
279
- _step() {
280
- // pop triangle with highest error from priority queue
281
- const t = this._queuePop();
282
- const e0 = t * 3 + 0;
283
- const e1 = t * 3 + 1;
284
- const e2 = t * 3 + 2;
285
- const p0 = this.triangles[e0];
286
- const p1 = this.triangles[e1];
287
- const p2 = this.triangles[e2];
288
- const au = this.uvs[2 * p0];
289
- const av = this.uvs[2 * p0 + 1];
290
- const bu = this.uvs[2 * p1];
291
- const bv = this.uvs[2 * p1 + 1];
292
- const cu = this.uvs[2 * p2];
293
- const cv = this.uvs[2 * p2 + 1];
294
- const pu = this._candidatesUV[2 * t];
295
- const pv = this._candidatesUV[2 * t + 1];
296
- const pn = this._addPoint(pu, pv);
297
- if (orient(au, av, bu, bv, pu, pv) === 0) {
298
- this._handleCollinear(pn, e0);
299
- }
300
- else if (orient(bu, bv, cu, cv, pu, pv) === 0) {
301
- this._handleCollinear(pn, e1);
302
- }
303
- else if (orient(cu, cv, au, av, pu, pv) === 0) {
304
- this._handleCollinear(pn, e2);
305
- }
306
- else {
307
- const h0 = this._halfedges[e0];
308
- const h1 = this._halfedges[e1];
309
- const h2 = this._halfedges[e2];
310
- const t0 = this._addTriangle(p0, p1, pn, h0, -1, -1, e0);
311
- const t1 = this._addTriangle(p1, p2, pn, h1, -1, t0 + 1);
312
- const t2 = this._addTriangle(p2, p0, pn, h2, t0 + 2, t1 + 1);
313
- this._legalize(t0);
314
- this._legalize(t1);
315
- this._legalize(t2);
316
- }
317
- }
318
- // add coordinates for a new vertex
319
- _addPoint(u, v) {
320
- const i = this.uvs.length >> 1;
321
- this.uvs.push(u, v);
322
- // compute and store exact output position via reprojection
323
- const pixelX = u * (this.width - 1);
324
- const pixelY = v * (this.height - 1);
325
- const inputPosition = this.reprojectors.pixelToInputCRS(pixelX, pixelY);
326
- const exactOutputPosition = this.reprojectors.forwardReproject(inputPosition[0], inputPosition[1]);
327
- this.exactOutputPositions.push(exactOutputPosition[0], exactOutputPosition[1]);
328
- return i;
329
- }
330
- // add or update a triangle in the mesh
331
- _addTriangle(a, b, c, ab, bc, ca, e = this.triangles.length) {
332
- const t = e / 3; // new triangle index
333
- // add triangle vertices
334
- this.triangles[e + 0] = a;
335
- this.triangles[e + 1] = b;
336
- this.triangles[e + 2] = c;
337
- // add triangle halfedges
338
- this._halfedges[e + 0] = ab;
339
- this._halfedges[e + 1] = bc;
340
- this._halfedges[e + 2] = ca;
341
- // link neighboring halfedges
342
- if (ab >= 0) {
343
- this._halfedges[ab] = e + 0;
344
- }
345
- if (bc >= 0) {
346
- this._halfedges[bc] = e + 1;
347
- }
348
- if (ca >= 0) {
349
- this._halfedges[ca] = e + 2;
350
- }
351
- // init triangle metadata
352
- this._candidatesUV[2 * t + 0] = 0;
353
- this._candidatesUV[2 * t + 1] = 0;
354
- this._queueIndices[t] = -1;
355
- // add triangle to pending queue for later rasterization
356
- this._pending[this._pendingLen++] = t;
357
- // return first halfedge index
358
- return e;
359
- }
360
- _legalize(a) {
361
- // if the pair of triangles doesn't satisfy the Delaunay condition
362
- // (p1 is inside the circumcircle of [p0, pl, pr]), flip them,
363
- // then do the same check/flip recursively for the new pair of triangles
364
- //
365
- // pl pl
366
- // /||\ / \
367
- // al/ || \bl al/ \a
368
- // / || \ / \
369
- // / a||b \ flip /___ar___\
370
- // p0\ || /p1 => p0\---bl---/p1
371
- // \ || / \ /
372
- // ar\ || /br b\ /br
373
- // \||/ \ /
374
- // pr pr
375
- const b = this._halfedges[a];
376
- if (b < 0) {
377
- return;
378
- }
379
- const a0 = a - (a % 3);
380
- const b0 = b - (b % 3);
381
- const al = a0 + ((a + 1) % 3);
382
- const ar = a0 + ((a + 2) % 3);
383
- const bl = b0 + ((b + 2) % 3);
384
- const br = b0 + ((b + 1) % 3);
385
- const p0 = this.triangles[ar];
386
- const pr = this.triangles[a];
387
- const pl = this.triangles[al];
388
- const p1 = this.triangles[bl];
389
- const uvs = this.uvs;
390
- if (!inCircle(uvs[2 * p0], uvs[2 * p0 + 1], uvs[2 * pr], uvs[2 * pr + 1], uvs[2 * pl], uvs[2 * pl + 1], uvs[2 * p1], uvs[2 * p1 + 1])) {
391
- return;
392
- }
393
- const hal = this._halfedges[al];
394
- const har = this._halfedges[ar];
395
- const hbl = this._halfedges[bl];
396
- const hbr = this._halfedges[br];
397
- this._queueRemove(a0 / 3);
398
- this._queueRemove(b0 / 3);
399
- const t0 = this._addTriangle(p0, p1, pl, -1, hbl, hal, a0);
400
- const t1 = this._addTriangle(p1, p0, pr, t0, har, hbr, b0);
401
- this._legalize(t0 + 1);
402
- this._legalize(t1 + 2);
403
- }
404
- // handle a case where new vertex is on the edge of a triangle
405
- _handleCollinear(pn, a) {
406
- const a0 = a - (a % 3);
407
- const al = a0 + ((a + 1) % 3);
408
- const ar = a0 + ((a + 2) % 3);
409
- const p0 = this.triangles[ar];
410
- const pr = this.triangles[a];
411
- const pl = this.triangles[al];
412
- const hal = this._halfedges[al];
413
- const har = this._halfedges[ar];
414
- const b = this._halfedges[a];
415
- if (b < 0) {
416
- const t0 = this._addTriangle(pn, p0, pr, -1, har, -1, a0);
417
- const t1 = this._addTriangle(p0, pn, pl, t0, -1, hal);
418
- this._legalize(t0 + 1);
419
- this._legalize(t1 + 2);
420
- return;
421
- }
422
- const b0 = b - (b % 3);
423
- const bl = b0 + ((b + 2) % 3);
424
- const br = b0 + ((b + 1) % 3);
425
- const p1 = this.triangles[bl];
426
- const hbl = this._halfedges[bl];
427
- const hbr = this._halfedges[br];
428
- this._queueRemove(b0 / 3);
429
- const t0 = this._addTriangle(p0, pr, pn, har, -1, -1, a0);
430
- const t1 = this._addTriangle(pr, p1, pn, hbr, -1, t0 + 1, b0);
431
- const t2 = this._addTriangle(p1, pl, pn, hbl, -1, t1 + 1);
432
- const t3 = this._addTriangle(pl, p0, pn, hal, t0 + 2, t2 + 1);
433
- this._legalize(t0);
434
- this._legalize(t1);
435
- this._legalize(t2);
436
- this._legalize(t3);
437
- }
438
- // priority queue methods
439
- _queuePush(t, error) {
440
- const i = this._queue.length;
441
- this._queueIndices[t] = i;
442
- this._queue.push(t);
443
- this._errors.push(error);
444
- this._queueUp(i);
445
- }
446
- _queuePop() {
447
- const n = this._queue.length - 1;
448
- this._queueSwap(0, n);
449
- this._queueDown(0, n);
450
- return this._queuePopBack();
451
- }
452
- _queuePopBack() {
453
- const t = this._queue.pop();
454
- this._errors.pop();
455
- this._queueIndices[t] = -1;
456
- return t;
457
- }
458
- _queueRemove(t) {
459
- const i = this._queueIndices[t];
460
- if (i < 0) {
461
- const it = this._pending.indexOf(t);
462
- if (it !== -1) {
463
- this._pending[it] = this._pending[--this._pendingLen];
464
- }
465
- else {
466
- throw new Error("Broken triangulation (something went wrong).");
467
- }
468
- return;
469
- }
470
- const n = this._queue.length - 1;
471
- if (n !== i) {
472
- this._queueSwap(i, n);
473
- if (!this._queueDown(i, n)) {
474
- this._queueUp(i);
475
- }
476
- }
477
- this._queuePopBack();
478
- }
479
- _queueLess(i, j) {
480
- return this._errors[i] > this._errors[j];
481
- }
482
- _queueSwap(i, j) {
483
- const pi = this._queue[i];
484
- const pj = this._queue[j];
485
- this._queue[i] = pj;
486
- this._queue[j] = pi;
487
- this._queueIndices[pi] = j;
488
- this._queueIndices[pj] = i;
489
- const e = this._errors[i];
490
- this._errors[i] = this._errors[j];
491
- this._errors[j] = e;
492
- }
493
- _queueUp(j0) {
494
- let j = j0;
495
- while (true) {
496
- const i = (j - 1) >> 1;
497
- if (i === j || !this._queueLess(j, i)) {
498
- break;
499
- }
500
- this._queueSwap(i, j);
501
- j = i;
502
- }
503
- }
504
- _queueDown(i0, n) {
505
- let i = i0;
506
- while (true) {
507
- const j1 = 2 * i + 1;
508
- if (j1 >= n || j1 < 0) {
509
- break;
510
- }
511
- const j2 = j1 + 1;
512
- let j = j1;
513
- if (j2 < n && this._queueLess(j2, j1)) {
514
- j = j2;
515
- }
516
- if (!this._queueLess(j, i)) {
517
- break;
518
- }
519
- this._queueSwap(i, j);
520
- i = j;
521
- }
522
- return i > i0;
523
- }
524
- }
525
- function orient(ax, ay, bx, by, cx, cy) {
526
- return (bx - cx) * (ay - cy) - (by - cy) * (ax - cx);
527
- }
528
- function inCircle(ax, ay, bx, by, cx, cy, px, py) {
529
- const dx = ax - px;
530
- const dy = ay - py;
531
- const ex = bx - px;
532
- const ey = by - py;
533
- const fx = cx - px;
534
- const fy = cy - py;
535
- const ap = dx * dx + dy * dy;
536
- const bp = ex * ex + ey * ey;
537
- const cp = fx * fx + fy * fy;
538
- return (dx * (ey * cp - bp * fy) -
539
- dy * (ex * cp - bp * fx) +
540
- ap * (ex * fy - ey * fx) <
541
- 0);
542
- }
543
- /**
544
- * Interpolate the value at a given barycentric coordinate within a triangle.
545
- *
546
- * I've seen the name "mix" used before in graphics programming to refer to
547
- * barycentric linear interpolation.
548
- *
549
- * Note: the caller must call this method twice: once for u and once again for
550
- * v. We do this because we want to avoid allocating an array for the return
551
- * value.
552
- */
553
- function barycentricMix(a, b, c,
554
- // Barycentric coordinates
555
- t0, t1, t2) {
556
- return t0 * a + t1 * b + t2 * c;
557
- }
558
- //# sourceMappingURL=delatin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delatin.js","sourceRoot":"","sources":["../../src/delatin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { applyAffine, invertGeoTransform } from "./affine.js";
2
- export type { GeoTransform } from "./affine.js";
3
- export { RasterReprojector } from "./delatin.js";
4
- export type { ReprojectionFns } from "./delatin.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
package/dist/src/index.js DELETED
@@ -1,3 +0,0 @@
1
- export { applyAffine, invertGeoTransform } from "./affine.js";
2
- export { RasterReprojector } from "./delatin.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=example.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.test.d.ts","sourceRoot":"","sources":["../../tests/example.test.ts"],"names":[],"mappings":""}
@@ -1,110 +0,0 @@
1
- import { describe, it } from "vitest";
2
- import { join, dirname, resolve } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { RasterReprojector, applyAffine, invertGeoTransform, } from "@developmentseed/raster-reproject";
5
- import { readFileSync, writeFileSync } from "fs";
6
- import proj4 from "proj4";
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = dirname(__filename);
9
- const FIXTURES_DIR = resolve(join(__dirname, "..", "..", "..", "fixtures"));
10
- function fromGeoTransform(geotransform) {
11
- const inverseGeotransform = invertGeoTransform(geotransform);
12
- return {
13
- pixelToInputCRS: (x, y) => applyAffine(x, y, geotransform),
14
- inputCRSToPixel: (x, y) => applyAffine(x, y, inverseGeotransform),
15
- };
16
- }
17
- function parseFixture(fixturePath) {
18
- const { width, height, geotransform, reorderTransform, projjson, wkt2, } = JSON.parse(readFileSync(fixturePath, "utf-8"));
19
- let affineGeotransform = [
20
- 0, 0, 0, 0, 0, 0,
21
- ];
22
- if (reorderTransform === undefined || reorderTransform === true) {
23
- // Convert GDAL geotransform to affine package geotransform
24
- affineGeotransform = [
25
- geotransform[1], // a: pixel width
26
- geotransform[2], // b: row rotation
27
- geotransform[0], // c: x origin
28
- geotransform[4], // d: column rotation
29
- geotransform[5], // e: pixel height (usually negative)
30
- geotransform[3], // f: y origin
31
- ];
32
- }
33
- else {
34
- affineGeotransform = geotransform;
35
- }
36
- const { inputCRSToPixel, pixelToInputCRS } = fromGeoTransform(affineGeotransform);
37
- const converter = proj4(projjson || wkt2, "EPSG:4326");
38
- const reprojectionFns = {
39
- pixelToInputCRS,
40
- inputCRSToPixel,
41
- forwardReproject: (x, y) => converter.forward([x, y], false),
42
- inverseReproject: (x, y) => converter.inverse([x, y], false),
43
- };
44
- return new RasterReprojector(reprojectionFns, width, height);
45
- }
46
- function serializeMesh(reprojector) {
47
- const mesh = {
48
- indices: reprojector.triangles,
49
- positions: reprojector.exactOutputPositions,
50
- texCoords: reprojector.uvs,
51
- };
52
- return JSON.stringify(mesh);
53
- }
54
- describe("NAIP", () => {
55
- it("should generate reprojection mesh", () => {
56
- const baseFname = "m_4007307_sw_18_060_20220803";
57
- const fixturePath = join(FIXTURES_DIR, `${baseFname}.json`);
58
- const reprojector = parseFixture(fixturePath);
59
- reprojector.run(0.125);
60
- const meshJSON = serializeMesh(reprojector);
61
- const outputPath = join(FIXTURES_DIR, `${baseFname}.mesh.json`);
62
- writeFileSync(outputPath, meshJSON);
63
- });
64
- });
65
- describe("nz-imagery", () => {
66
- it("should generate reprojection mesh", () => {
67
- const baseFname = "linz_250-25_GeoTifv1-05";
68
- const fixturePath = join(FIXTURES_DIR, `${baseFname}.json`);
69
- console.time(`Create reprojector for ${baseFname}`);
70
- const reprojector = parseFixture(fixturePath);
71
- console.timeEnd(`Create reprojector for ${baseFname}`);
72
- console.time(`Run reprojector for ${baseFname}`);
73
- reprojector.run(0.125);
74
- console.timeEnd(`Run reprojector for ${baseFname}`);
75
- const meshJSON = serializeMesh(reprojector);
76
- const outputPath = join(FIXTURES_DIR, `${baseFname}.mesh.json`);
77
- writeFileSync(outputPath, meshJSON);
78
- });
79
- });
80
- describe("nlcd", () => {
81
- it("should generate reprojection mesh", () => {
82
- const baseFname = "Annual_NLCD_LndCov_2023_CU_C1V0";
83
- const fixturePath = join(FIXTURES_DIR, `${baseFname}.json`);
84
- console.time(`Create reprojector for ${baseFname}`);
85
- const reprojector = parseFixture(fixturePath);
86
- console.timeEnd(`Create reprojector for ${baseFname}`);
87
- console.time(`Run reprojector for ${baseFname}`);
88
- reprojector.run(2);
89
- console.timeEnd(`Run reprojector for ${baseFname}`);
90
- const meshJSON = serializeMesh(reprojector);
91
- const outputPath = join(FIXTURES_DIR, `${baseFname}.mesh.json`);
92
- writeFileSync(outputPath, meshJSON);
93
- });
94
- });
95
- describe("modis", () => {
96
- it("should generate reprojection mesh", () => {
97
- const baseFname = "MYD09A1.A2025169.h10v05.061.2025178160305";
98
- const fixturePath = join(FIXTURES_DIR, `${baseFname}.json`);
99
- console.time(`Create reprojector for ${baseFname}`);
100
- const reprojector = parseFixture(fixturePath);
101
- console.timeEnd(`Create reprojector for ${baseFname}`);
102
- console.time(`Run reprojector for ${baseFname}`);
103
- reprojector.run(0.125);
104
- console.timeEnd(`Run reprojector for ${baseFname}`);
105
- const meshJSON = serializeMesh(reprojector);
106
- const outputPath = join(FIXTURES_DIR, `${baseFname}.mesh.json`);
107
- writeFileSync(outputPath, meshJSON);
108
- });
109
- });
110
- //# sourceMappingURL=example.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.test.js","sourceRoot":"","sources":["../../tests/example.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/affine.ts","../src/delatin.ts","../src/index.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.0.15/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.15/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.15/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.15/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.15/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.15/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.15/node_modules/@vitest/runner/dist/tasks.d-xu8vapgy.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.15/node_modules/@vitest/utils/dist/types.d-bcelap-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.15/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.15/node_modules/@vitest/runner/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.15/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vite@7.2.7_@types+node@22.19.2/node_modules/vite/types/hmrpayload.d.ts","../../../node_modules/.pnpm/vite@7.2.7_@types+node@22.19.2/node_modules/vite/dist/node/chunks/modulerunnertransport.d.ts","../../../node_modules/.pnpm/vite@7.2.7_@types+node@22.19.2/node_modules/vite/types/customevent.d.ts","../../../node_modules/.pnpm/vite@7.2.7_@types+node@22.19.2/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@7.2.7_@types+node@22.19.2/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.0.15/node_modules/@vitest/snapshot/dist/environment.d-dhdq1csl.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.0.15/node_modules/@vitest/snapshot/dist/rawsnapshot.d-lfsmjfud.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.0.15/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/config.d.czijkicf.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/environment.d.crsxczp1.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/traces.d.402v_yfi.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/rpc.d.rh3apgef.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/worker.d.b4a26qg6.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/browser.d.dbzuq_na.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.0.15/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.0.3/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.0.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.0.15/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.15/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/benchmark.d.daahlpsq.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/global.d.b15mdlcr.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/suite.d.bjwk38hb.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/chunks/evaluatedmodules.d.bxj5omdx.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.0.15_@types+node@22.19.2_jsdom@27.3.0_postcss@8.5.6_/node_modules/vitest/dist/index.d.ts","./affine.d.ts","./delatin.d.ts","./index.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/projections.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/defs.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/proj.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/core.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/point.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/common/topoint.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/nadgrid.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/transform.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/lib/index.d.ts","../../../node_modules/.pnpm/proj4@2.20.2/node_modules/proj4/dist/index.d.ts","../tests/example.test.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.19.2/node_modules/@types/node/index.d.ts"],"fileIdsList":[[125,173,190,191],[90,91,125,173,190,191],[125,170,171,173,190,191],[125,172,173,190,191],[173,190,191],[125,173,178,190,191,208],[125,173,174,179,184,190,191,193,205,216],[125,173,174,175,184,190,191,193],[120,121,122,125,173,190,191],[125,173,176,190,191,217],[125,173,177,178,185,190,191,194],[125,173,178,190,191,205,213],[125,173,179,181,184,190,191,193],[125,172,173,180,190,191],[125,173,181,182,190,191],[125,173,183,184,190,191],[125,172,173,184,190,191],[125,173,184,185,186,190,191,205,216],[125,173,184,185,186,190,191,200,205,208],[125,166,173,181,184,187,190,191,193,205,216],[125,173,184,185,187,188,190,191,193,205,213,216],[125,173,187,189,190,191,205,213,216],[123,124,125,126,127,128,129,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222],[125,173,184,190,191],[125,173,190,191,192,216],[125,173,181,184,190,191,193,205],[125,173,190,191,194],[125,173,190,191,195],[125,172,173,190,191,196],[125,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222],[125,173,190,191,198],[125,173,190,191,199],[125,173,184,190,191,200,201],[125,173,190,191,200,202,217,219],[125,173,185,190,191],[125,173,184,190,191,205,206,208],[125,173,190,191,207,208],[125,173,190,191,205,206],[125,173,190,191,208],[125,173,190,191,209],[125,170,173,190,191,205,210],[125,173,184,190,191,211,212],[125,173,190,191,211,212],[125,173,178,190,191,193,205,213],[125,173,190,191,214],[125,173,190,191,193,215],[125,173,187,190,191,199,216],[125,173,178,190,191,217],[125,173,190,191,205,218],[125,173,190,191,192,219],[125,173,190,191,220],[125,166,173,190,191],[125,166,173,184,186,190,191,196,205,208,216,218,219,221],[125,173,190,191,205,222],[63,67,70,72,87,88,89,92,97,125,173,190,191],[67,68,70,71,125,173,190,191],[67,125,173,190,191],[67,68,70,125,173,190,191],[67,68,125,173,190,191],[62,78,79,125,173,190,191],[62,78,125,173,190,191],[62,69,125,173,190,191],[62,125,173,190,191],[64,125,173,190,191],[62,63,64,65,66,125,173,190,191],[100,101,125,173,190,191],[100,101,102,103,125,173,190,191],[100,102,125,173,190,191],[100,125,173,190,191],[117,125,173,190,191],[112,125,173,190,191],[111,125,173,190,191],[111,112,125,173,190,191],[110,111,112,113,114,115,116,125,173,190,191],[109,110,112,125,173,190,191],[110,112,125,173,190,191],[125,138,142,173,190,191,216],[125,138,173,190,191,205,216],[125,133,173,190,191],[125,135,138,173,190,191,213,216],[125,173,190,191,193,213],[125,173,190,191,223],[125,133,173,190,191,223],[125,135,138,173,190,191,193,216],[125,130,131,134,137,173,184,190,191,205,216],[125,138,145,173,190,191],[125,130,136,173,190,191],[125,138,159,160,173,190,191],[125,134,138,173,190,191,208,216,223],[125,159,173,190,191,223],[125,132,133,173,190,191,223],[125,138,173,190,191],[125,132,133,134,135,136,137,138,139,140,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,163,164,165,173,190,191],[125,138,153,173,190,191],[125,138,145,146,173,190,191],[125,136,138,146,147,173,190,191],[125,137,173,190,191],[125,130,133,138,173,190,191],[125,138,142,146,147,173,190,191],[125,142,173,190,191],[125,136,138,141,173,190,191,216],[125,130,135,138,145,173,190,191],[125,173,190,191,205],[125,133,138,159,173,190,191,221,223],[73,125,173,190,191],[73,74,75,76,125,173,190,191],[75,125,173,190,191],[72,94,95,97,125,173,190,191],[72,85,97,125,173,190,191],[62,70,72,80,97,125,173,190,191],[77,125,173,190,191],[62,72,80,84,93,96,97,125,173,190,191],[72,77,80,83,97,125,173,190,191],[72,94,95,96,97,125,173,190,191],[72,77,81,82,84,97,125,173,190,191],[62,67,70,72,77,80,81,82,83,84,85,86,87,93,94,95,96,97,98,99,104,125,173,190,191],[106,107,125,173,190,191],[59,60,125,173,190,191],[105,108,112,118,125,173,185,190,191,195,216]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"cfa00c6f7dc11711f42f5734c965ce430d44f23a655d1a83165cacc9a31e04a4","signature":"e1c9829d83778ce01234b5363f7c583827389eb08dd1a9bf0a4720aacc4c3b01"},{"version":"43b76e481debae79f21fb1382dc5c45dd149303242efd8255382409d1848184a","signature":"a67dcaf88516d9bbb8eadc9b770a06fd05736e36b7746254041e871af80f1b8f"},"60cc800536d1e28c5ff2a4930fdfdcfb661543ff2b64125525ee5dc9fa15abab",{"version":"acfb723d81eda39156251aed414c553294870bf53062429ebfcfba8a68cb4753","impliedFormat":99},{"version":"09124307d0bc873aba353b80027899599e794c2cf44dfe6315d73111d40e29f4","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"57e9e1b0911874c62d743af24b5d56032759846533641d550b12a45ff404bf07","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"d024767b27121cd5a2cb2f7cb93718803e4ed1c86ebd1ee3bd8de008f0ecbf96","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"3b0a56d056d81a011e484b9c05d5e430711aaecd561a788bad1d0498aad782c7","impliedFormat":99},{"version":"d6300bb90d031832e5a62d7cad4cf00add5cce9f5d4f0ac514722f41b1af6f92","impliedFormat":99},{"version":"244c16ce21d66faeaca8296e9f4cf5dd79f2c64d9248d7ff06b7c5377684c7ac","impliedFormat":99},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"10073cdcf56982064c5337787cc59b79586131e1b28c106ede5bff362f912b70","impliedFormat":99},{"version":"72950913f4900b680f44d8cab6dd1ea0311698fc1eefb014eb9cdfc37ac4a734","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"ff0a83c9a0489a627e264ffcb63f2264b935b20a502afa3a018848139e3d8575","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"c35b8117804c639c53c87f2c23e0c786df61d552e513bd5179f5b88e29964838","impliedFormat":99},{"version":"2c2aee81ffcfc4043d5cbe3f4e9cfc355702696daa0c1e048f28ebe238439888","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"ac3d263474022e9a14c43f588f485d549641d839b159ecc971978b90f34bdf6b","impliedFormat":99},{"version":"67acaedb46832d66c15f1b09fb7b6a0b7f41bdbf8eaa586ec70459b3e8896eb9","impliedFormat":99},{"version":"36cddcef8f1a4a573c9993c9d3cf3e0f86f948276c287c235b04cfac661c2f9f","impliedFormat":99},{"version":"4d9a1d2160e70b68e5a8038b1cbb8070417e8f8117a7f486ca533330a1bf58a2","impliedFormat":99},{"version":"31fd7c12f6e27154efb52a916b872509a771880f3b20f2dfd045785c13aa813f","impliedFormat":99},{"version":"b481de4ab5379bd481ca12fc0b255cdc47341629a22c240a89cdb4e209522be2","impliedFormat":99},{"version":"76af14c3cce62da183aaf30375e3a4613109d16c7f16d30702f16d625a95e62c","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"4e258d11c899cb9ff36b4b5c53df59cf4a5ccae9a9931529686e77431e0a3518","affectsGlobalScope":true,"impliedFormat":99},{"version":"21dff8020ae0329f8620a144429971a0fd21f4b307e453955181381441904ac8","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"a534e61c2f06a147d97aebad720db97dffd8066b7142212e46bcbcdcb640b81a","impliedFormat":99},{"version":"ddf569d04470a4d629090d43a16735185001f3fcf0ae036ead99f2ceab62be48","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"37159bf2f7c374599d2bae28d629929003869720bcd6df3ae850bbbca72f23a4","impliedFormat":99},"e1c9829d83778ce01234b5363f7c583827389eb08dd1a9bf0a4720aacc4c3b01","a67dcaf88516d9bbb8eadc9b770a06fd05736e36b7746254041e871af80f1b8f","60cc800536d1e28c5ff2a4930fdfdcfb661543ff2b64125525ee5dc9fa15abab",{"version":"1f0d9a0d781761ad4b44c152b798cb4298dd30c46230d64c1236fb99bf09ed17","impliedFormat":1},{"version":"7630db1395a4a84af7ccd2daddfb9f8a08e3465a68fb349c9e263724ed1dcdc5","impliedFormat":1},{"version":"7dca3135b21d584c49eb10926a90b64376fe4258cc55359826710c1194c0e133","impliedFormat":1},{"version":"7ff2749e187cf60121a21404d078b899a0c0c3642e41df3ad81bde7fd5acd9c2","impliedFormat":1},{"version":"5b9fc41636b167b6939f4359992ed14c237b8bdaee5fafa9a8de5b054f4f3907","impliedFormat":1},{"version":"28ed66404de9d88e755300d0299656c8f2bb6d4442f152877e1d2a3739353a99","impliedFormat":1},{"version":"4f59b76dba3619636ab9cf9756cbf424a5fbd23100fbd82648627c4fc046ce9b","impliedFormat":1},{"version":"5a88f1430b70aa69af418c27a31c4ee17fc23cc4e486742247040d74f260ce47","impliedFormat":1},{"version":"3beb7f15fa32b201fc81bc067b223cdf6e221f4820dc0acfde4333e902cabf8f","impliedFormat":1},{"version":"a5384c277edeeb51b0368f73e95b4232962a6722d4cdb94c8e9c560f77b35e2a","impliedFormat":1},"0f0e00dc7453bd72e3e0d9df1120599e3931f28717b75461b14047f21781faeb",{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"bb45cd435da536500f1d9692a9b49d0c570b763ccbf00473248b777f5c1f353b","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"21145ce1c54e05ef9e52092b98a4ebfb326b92f52e76e47211c50cfcd2a2b4ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c959a391a75be9789b43c8468f71e3fa06488b4d691d5729dde1416dcd38225b","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"5ebe6f4cc3b803cbfc962bae0d954f9c80e5078ca41eb3f1de41d92e7193ef37","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f663c2f91127ef7024e8ca4b3b4383ff2770e5f826696005de382282794b127","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1}],"root":[[59,61],119],"options":{"allowJs":false,"allowSyntheticDefaultImports":true,"checkJs":false,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[89,1],[92,2],[90,1],[170,3],[171,3],[172,4],[125,5],[173,6],[174,7],[175,8],[120,1],[123,9],[121,1],[122,1],[176,10],[177,11],[178,12],[179,13],[180,14],[181,15],[182,15],[183,16],[184,17],[185,18],[186,19],[126,1],[124,1],[187,20],[188,21],[189,22],[223,23],[190,24],[191,1],[192,25],[193,26],[194,27],[195,28],[196,29],[197,30],[198,31],[199,32],[200,33],[201,33],[202,34],[203,1],[204,35],[205,36],[207,37],[206,38],[208,39],[209,40],[210,41],[211,42],[212,43],[213,44],[214,45],[215,46],[216,47],[217,48],[218,49],[219,50],[220,51],[127,1],[128,1],[129,1],[167,52],[168,1],[169,1],[221,53],[222,54],[93,55],[62,1],[72,56],[68,57],[71,58],[94,59],[78,1],[80,60],[79,61],[87,1],[70,62],[63,63],[65,64],[67,65],[66,1],[69,63],[64,1],[91,1],[102,66],[104,67],[103,68],[101,69],[100,1],[118,70],[114,71],[112,72],[110,73],[117,74],[115,1],[113,71],[111,75],[109,72],[116,76],[95,1],[88,1],[57,1],[58,1],[10,1],[12,1],[11,1],[2,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[3,1],[21,1],[22,1],[4,1],[23,1],[27,1],[24,1],[25,1],[26,1],[28,1],[29,1],[30,1],[5,1],[31,1],[32,1],[33,1],[34,1],[6,1],[38,1],[35,1],[36,1],[37,1],[39,1],[7,1],[40,1],[45,1],[46,1],[41,1],[42,1],[43,1],[44,1],[8,1],[50,1],[47,1],[48,1],[49,1],[51,1],[9,1],[52,1],[53,1],[54,1],[56,1],[55,1],[1,1],[145,77],[155,78],[144,77],[165,79],[136,80],[135,81],[164,82],[158,83],[163,84],[138,85],[152,86],[137,87],[161,88],[133,89],[132,82],[162,90],[134,91],[139,92],[140,1],[143,92],[130,1],[166,93],[156,94],[147,95],[148,96],[150,97],[146,98],[149,99],[159,82],[141,100],[142,101],[151,102],[131,103],[154,94],[153,92],[157,1],[160,104],[74,105],[77,106],[75,105],[73,1],[76,107],[96,108],[86,109],[81,110],[82,57],[99,111],[97,112],[84,113],[98,114],[83,1],[85,115],[105,116],[106,1],[107,1],[108,117],[59,1],[60,1],[61,118],[119,119]],"affectedFilesPendingEmit":[[119,48]],"emitSignatures":[[119,"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"]],"latestChangedDtsFile":"./tests/example.test.d.ts","version":"5.9.3"}