@geoql/v-maplibre 1.5.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/controls/_shared/index.d.ts +1 -0
- package/dist/controls/_shared/useMapControl.d.ts +10 -0
- package/dist/controls/index.d.ts +6 -0
- package/dist/controls/layer/VControlLayer.vue.d.ts +38 -0
- package/dist/controls/layer/VControlLayerGroup.vue.d.ts +53 -0
- package/dist/controls/layer/events.d.ts +1 -0
- package/dist/controls/layer/index.d.ts +5 -0
- package/dist/controls/layer/types.d.ts +16 -0
- package/dist/controls/legend/VControlLegend.vue.d.ts +54 -0
- package/dist/controls/legend/events.d.ts +2 -0
- package/dist/controls/legend/index.d.ts +3 -0
- package/dist/controls/legend/types.d.ts +63 -0
- package/dist/decoder-CLokFc0V.js +9 -0
- package/dist/decoder-CLokFc0V.js.map +1 -0
- package/dist/deflate-yeu3ogBn.js +11 -0
- package/dist/deflate-yeu3ogBn.js.map +1 -0
- package/dist/geotiff-BUZniE5g.js +3106 -0
- package/dist/geotiff-BUZniE5g.js.map +1 -0
- package/dist/index-Bt_rREAc.js +168 -0
- package/dist/index-Bt_rREAc.js.map +1 -0
- package/dist/index-CA8I5Z2-.js +4667 -0
- package/dist/index-CA8I5Z2-.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2736 -1638
- package/dist/index.js.map +1 -1
- package/dist/jpeg-B7yImnpY.js +534 -0
- package/dist/jpeg-B7yImnpY.js.map +1 -0
- package/dist/layers/deckgl/_shared/useDeckOverlay.d.ts +2 -0
- package/dist/layers/deckgl/index.d.ts +2 -0
- package/dist/layers/deckgl/mosaic/VLayerDeckglMosaic.vue.d.ts +163 -0
- package/dist/layers/deckgl/mosaic/index.d.ts +2 -0
- package/dist/layers/deckgl/text/VLayerDeckglText.vue.d.ts +1 -1
- package/dist/layers/deckgl/wind-particle/VLayerDeckglWindParticle.vue.d.ts +1 -1
- package/dist/layers/index.d.ts +3 -2
- package/dist/layers/maplibre/canvas/VLayerMaplibreCanvas.vue.d.ts +1 -1
- package/dist/layers/maplibre/custom/isochrone/VLayerMaplibreIsochrone.vue.d.ts +71 -0
- package/dist/layers/maplibre/custom/isochrone/index.d.ts +1 -0
- package/dist/layers/maplibre/geojson/VLayerMaplibreGeojson.vue.d.ts +1 -1
- package/dist/layers/maplibre/image/VLayerMaplibreImage.vue.d.ts +1 -1
- package/dist/layers/maplibre/pmtile/VLayerMaplibrePmtile.vue.d.ts +1 -1
- package/dist/layers/maplibre/video/VLayerMaplibreVideo.vue.d.ts +1 -1
- package/dist/lerc-CqgA9njy.js +1032 -0
- package/dist/lerc-CqgA9njy.js.map +1 -0
- package/dist/lzw-DL9RcHOz.js +85 -0
- package/dist/lzw-DL9RcHOz.js.map +1 -0
- package/dist/markers/VMarker.vue.d.ts +1 -2
- package/dist/packbits-YEJGULcy.js +25 -0
- package/dist/packbits-YEJGULcy.js.map +1 -0
- package/dist/pako.esm-Bx5X36Wo.js +1075 -0
- package/dist/pako.esm-Bx5X36Wo.js.map +1 -0
- package/dist/popups/VPopup.vue.d.ts +1 -1
- package/dist/raw-CoQHiEnn.js +10 -0
- package/dist/raw-CoQHiEnn.js.map +1 -0
- package/dist/v-maplibre.css +1 -1
- package/dist/webimage-BXLN-zu8.js +20 -0
- package/dist/webimage-BXLN-zu8.js.map +1 -0
- package/package.json +100 -84
- package/dist/layers/maplibre/{cluster → custom/cluster}/VLayerMaplibreCluster.vue.d.ts +1 -1
- package/dist/layers/maplibre/{cluster → custom/cluster}/index.d.ts +0 -0
- package/dist/layers/maplibre/{route → custom/route}/VLayerMaplibreRoute.vue.d.ts +2 -2
- /package/dist/layers/maplibre/{route → custom/route}/index.d.ts +0 -0
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
import { B as re } from "./geotiff-BUZniE5g.js";
|
|
2
|
+
const O = new Int32Array([
|
|
3
|
+
0,
|
|
4
|
+
1,
|
|
5
|
+
8,
|
|
6
|
+
16,
|
|
7
|
+
9,
|
|
8
|
+
2,
|
|
9
|
+
3,
|
|
10
|
+
10,
|
|
11
|
+
17,
|
|
12
|
+
24,
|
|
13
|
+
32,
|
|
14
|
+
25,
|
|
15
|
+
18,
|
|
16
|
+
11,
|
|
17
|
+
4,
|
|
18
|
+
5,
|
|
19
|
+
12,
|
|
20
|
+
19,
|
|
21
|
+
26,
|
|
22
|
+
33,
|
|
23
|
+
40,
|
|
24
|
+
48,
|
|
25
|
+
41,
|
|
26
|
+
34,
|
|
27
|
+
27,
|
|
28
|
+
20,
|
|
29
|
+
13,
|
|
30
|
+
6,
|
|
31
|
+
7,
|
|
32
|
+
14,
|
|
33
|
+
21,
|
|
34
|
+
28,
|
|
35
|
+
35,
|
|
36
|
+
42,
|
|
37
|
+
49,
|
|
38
|
+
56,
|
|
39
|
+
57,
|
|
40
|
+
50,
|
|
41
|
+
43,
|
|
42
|
+
36,
|
|
43
|
+
29,
|
|
44
|
+
22,
|
|
45
|
+
15,
|
|
46
|
+
23,
|
|
47
|
+
30,
|
|
48
|
+
37,
|
|
49
|
+
44,
|
|
50
|
+
51,
|
|
51
|
+
58,
|
|
52
|
+
59,
|
|
53
|
+
52,
|
|
54
|
+
45,
|
|
55
|
+
38,
|
|
56
|
+
31,
|
|
57
|
+
39,
|
|
58
|
+
46,
|
|
59
|
+
53,
|
|
60
|
+
60,
|
|
61
|
+
61,
|
|
62
|
+
54,
|
|
63
|
+
47,
|
|
64
|
+
55,
|
|
65
|
+
62,
|
|
66
|
+
63
|
|
67
|
+
]), Y = 4017, Z = 799, $ = 3406, N = 2276, Q = 1567, W = 3784, R = 5793, K = 2896;
|
|
68
|
+
function ne(q, l) {
|
|
69
|
+
let o = 0;
|
|
70
|
+
const u = [];
|
|
71
|
+
let T = 16;
|
|
72
|
+
for (; T > 0 && !q[T - 1]; )
|
|
73
|
+
--T;
|
|
74
|
+
u.push({ children: [], index: 0 });
|
|
75
|
+
let w = u[0], C;
|
|
76
|
+
for (let t = 0; t < T; t++) {
|
|
77
|
+
for (let h = 0; h < q[t]; h++) {
|
|
78
|
+
for (w = u.pop(), w.children[w.index] = l[o]; w.index > 0; )
|
|
79
|
+
w = u.pop();
|
|
80
|
+
for (w.index++, u.push(w); u.length <= t; )
|
|
81
|
+
u.push(C = { children: [], index: 0 }), w.children[w.index] = C.children, w = C;
|
|
82
|
+
o++;
|
|
83
|
+
}
|
|
84
|
+
t + 1 < T && (u.push(C = { children: [], index: 0 }), w.children[w.index] = C.children, w = C);
|
|
85
|
+
}
|
|
86
|
+
return u[0].children;
|
|
87
|
+
}
|
|
88
|
+
function ce(q, l, o, u, T, w, C, t, h) {
|
|
89
|
+
const { mcusPerLine: F, progressive: c } = o, r = l;
|
|
90
|
+
let b = l, i = 0, d = 0;
|
|
91
|
+
function m() {
|
|
92
|
+
if (d > 0)
|
|
93
|
+
return d--, i >> d & 1;
|
|
94
|
+
if (i = q[b++], i === 255) {
|
|
95
|
+
const a = q[b++];
|
|
96
|
+
if (a)
|
|
97
|
+
throw new Error(`unexpected marker: ${(i << 8 | a).toString(16)}`);
|
|
98
|
+
}
|
|
99
|
+
return d = 7, i >>> 7;
|
|
100
|
+
}
|
|
101
|
+
function x(a) {
|
|
102
|
+
let f = a, p;
|
|
103
|
+
for (; (p = m()) !== null; ) {
|
|
104
|
+
if (f = f[p], typeof f == "number")
|
|
105
|
+
return f;
|
|
106
|
+
if (typeof f != "object")
|
|
107
|
+
throw new Error("invalid huffman sequence");
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
function E(a) {
|
|
112
|
+
let f = a, p = 0;
|
|
113
|
+
for (; f > 0; ) {
|
|
114
|
+
const L = m();
|
|
115
|
+
if (L === null)
|
|
116
|
+
return;
|
|
117
|
+
p = p << 1 | L, --f;
|
|
118
|
+
}
|
|
119
|
+
return p;
|
|
120
|
+
}
|
|
121
|
+
function k(a) {
|
|
122
|
+
const f = E(a);
|
|
123
|
+
return f >= 1 << a - 1 ? f : f + (-1 << a) + 1;
|
|
124
|
+
}
|
|
125
|
+
function A(a, f) {
|
|
126
|
+
const p = x(a.huffmanTableDC), L = p === 0 ? 0 : k(p);
|
|
127
|
+
a.pred += L, f[0] = a.pred;
|
|
128
|
+
let D = 1;
|
|
129
|
+
for (; D < 64; ) {
|
|
130
|
+
const P = x(a.huffmanTableAC), y = P & 15, S = P >> 4;
|
|
131
|
+
if (y === 0) {
|
|
132
|
+
if (S < 15)
|
|
133
|
+
break;
|
|
134
|
+
D += 16;
|
|
135
|
+
} else {
|
|
136
|
+
D += S;
|
|
137
|
+
const I = O[D];
|
|
138
|
+
f[I] = k(y), D++;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function v(a, f) {
|
|
143
|
+
const p = x(a.huffmanTableDC), L = p === 0 ? 0 : k(p) << h;
|
|
144
|
+
a.pred += L, f[0] = a.pred;
|
|
145
|
+
}
|
|
146
|
+
function s(a, f) {
|
|
147
|
+
f[0] |= m() << h;
|
|
148
|
+
}
|
|
149
|
+
let n = 0;
|
|
150
|
+
function g(a, f) {
|
|
151
|
+
if (n > 0) {
|
|
152
|
+
n--;
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
let p = w;
|
|
156
|
+
const L = C;
|
|
157
|
+
for (; p <= L; ) {
|
|
158
|
+
const D = x(a.huffmanTableAC), P = D & 15, y = D >> 4;
|
|
159
|
+
if (P === 0) {
|
|
160
|
+
if (y < 15) {
|
|
161
|
+
n = E(y) + (1 << y) - 1;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
p += 16;
|
|
165
|
+
} else {
|
|
166
|
+
p += y;
|
|
167
|
+
const S = O[p];
|
|
168
|
+
f[S] = k(P) * (1 << h), p++;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
let e = 0, _;
|
|
173
|
+
function te(a, f) {
|
|
174
|
+
let p = w;
|
|
175
|
+
const L = C;
|
|
176
|
+
let D = 0;
|
|
177
|
+
for (; p <= L; ) {
|
|
178
|
+
const P = O[p], y = f[P] < 0 ? -1 : 1;
|
|
179
|
+
switch (e) {
|
|
180
|
+
case 0: {
|
|
181
|
+
const S = x(a.huffmanTableAC), I = S & 15;
|
|
182
|
+
if (D = S >> 4, I === 0)
|
|
183
|
+
D < 15 ? (n = E(D) + (1 << D), e = 4) : (D = 16, e = 1);
|
|
184
|
+
else {
|
|
185
|
+
if (I !== 1)
|
|
186
|
+
throw new Error("invalid ACn encoding");
|
|
187
|
+
_ = k(I), e = D ? 2 : 3;
|
|
188
|
+
}
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
case 1:
|
|
192
|
+
// skipping r zero items
|
|
193
|
+
case 2:
|
|
194
|
+
f[P] ? f[P] += (m() << h) * y : (D--, D === 0 && (e = e === 2 ? 3 : 0));
|
|
195
|
+
break;
|
|
196
|
+
case 3:
|
|
197
|
+
f[P] ? f[P] += (m() << h) * y : (f[P] = _ << h, e = 0);
|
|
198
|
+
break;
|
|
199
|
+
case 4:
|
|
200
|
+
f[P] && (f[P] += (m() << h) * y);
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
p++;
|
|
204
|
+
}
|
|
205
|
+
e === 4 && (n--, n === 0 && (e = 0));
|
|
206
|
+
}
|
|
207
|
+
function se(a, f, p, L, D) {
|
|
208
|
+
const P = p / F | 0, y = p % F, S = P * a.v + L, I = y * a.h + D;
|
|
209
|
+
f(a, a.blocks[S][I]);
|
|
210
|
+
}
|
|
211
|
+
function oe(a, f, p) {
|
|
212
|
+
const L = p / a.blocksPerLine | 0, D = p % a.blocksPerLine;
|
|
213
|
+
f(a, a.blocks[L][D]);
|
|
214
|
+
}
|
|
215
|
+
const V = u.length;
|
|
216
|
+
let U, j, G, X, B, H;
|
|
217
|
+
c ? w === 0 ? H = t === 0 ? v : s : H = t === 0 ? g : te : H = A;
|
|
218
|
+
let M = 0, z, J;
|
|
219
|
+
V === 1 ? J = u[0].blocksPerLine * u[0].blocksPerColumn : J = F * o.mcusPerColumn;
|
|
220
|
+
const ee = T || J;
|
|
221
|
+
for (; M < J; ) {
|
|
222
|
+
for (j = 0; j < V; j++)
|
|
223
|
+
u[j].pred = 0;
|
|
224
|
+
if (n = 0, V === 1)
|
|
225
|
+
for (U = u[0], B = 0; B < ee; B++)
|
|
226
|
+
oe(U, H, M), M++;
|
|
227
|
+
else
|
|
228
|
+
for (B = 0; B < ee; B++) {
|
|
229
|
+
for (j = 0; j < V; j++) {
|
|
230
|
+
U = u[j];
|
|
231
|
+
const { h: a, v: f } = U;
|
|
232
|
+
for (G = 0; G < f; G++)
|
|
233
|
+
for (X = 0; X < a; X++)
|
|
234
|
+
se(U, H, M, G, X);
|
|
235
|
+
}
|
|
236
|
+
if (M++, M === J)
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
if (d = 0, z = q[b] << 8 | q[b + 1], z < 65280)
|
|
240
|
+
throw new Error("marker was not found");
|
|
241
|
+
if (z >= 65488 && z <= 65495)
|
|
242
|
+
b += 2;
|
|
243
|
+
else
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
return b - r;
|
|
247
|
+
}
|
|
248
|
+
function ie(q, l) {
|
|
249
|
+
const o = [], { blocksPerLine: u, blocksPerColumn: T } = l, w = u << 3, C = new Int32Array(64), t = new Uint8Array(64);
|
|
250
|
+
function h(F, c, r) {
|
|
251
|
+
const b = l.quantizationTable;
|
|
252
|
+
let i, d, m, x, E, k, A, v, s;
|
|
253
|
+
const n = r;
|
|
254
|
+
let g;
|
|
255
|
+
for (g = 0; g < 64; g++)
|
|
256
|
+
n[g] = F[g] * b[g];
|
|
257
|
+
for (g = 0; g < 8; ++g) {
|
|
258
|
+
const e = 8 * g;
|
|
259
|
+
if (n[1 + e] === 0 && n[2 + e] === 0 && n[3 + e] === 0 && n[4 + e] === 0 && n[5 + e] === 0 && n[6 + e] === 0 && n[7 + e] === 0) {
|
|
260
|
+
s = R * n[0 + e] + 512 >> 10, n[0 + e] = s, n[1 + e] = s, n[2 + e] = s, n[3 + e] = s, n[4 + e] = s, n[5 + e] = s, n[6 + e] = s, n[7 + e] = s;
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
i = R * n[0 + e] + 128 >> 8, d = R * n[4 + e] + 128 >> 8, m = n[2 + e], x = n[6 + e], E = K * (n[1 + e] - n[7 + e]) + 128 >> 8, v = K * (n[1 + e] + n[7 + e]) + 128 >> 8, k = n[3 + e] << 4, A = n[5 + e] << 4, s = i - d + 1 >> 1, i = i + d + 1 >> 1, d = s, s = m * W + x * Q + 128 >> 8, m = m * Q - x * W + 128 >> 8, x = s, s = E - A + 1 >> 1, E = E + A + 1 >> 1, A = s, s = v + k + 1 >> 1, k = v - k + 1 >> 1, v = s, s = i - x + 1 >> 1, i = i + x + 1 >> 1, x = s, s = d - m + 1 >> 1, d = d + m + 1 >> 1, m = s, s = E * N + v * $ + 2048 >> 12, E = E * $ - v * N + 2048 >> 12, v = s, s = k * Z + A * Y + 2048 >> 12, k = k * Y - A * Z + 2048 >> 12, A = s, n[0 + e] = i + v, n[7 + e] = i - v, n[1 + e] = d + A, n[6 + e] = d - A, n[2 + e] = m + k, n[5 + e] = m - k, n[3 + e] = x + E, n[4 + e] = x - E;
|
|
264
|
+
}
|
|
265
|
+
for (g = 0; g < 8; ++g) {
|
|
266
|
+
const e = g;
|
|
267
|
+
if (n[8 + e] === 0 && n[16 + e] === 0 && n[24 + e] === 0 && n[32 + e] === 0 && n[40 + e] === 0 && n[48 + e] === 0 && n[56 + e] === 0) {
|
|
268
|
+
s = R * r[g + 0] + 8192 >> 14, n[0 + e] = s, n[8 + e] = s, n[16 + e] = s, n[24 + e] = s, n[32 + e] = s, n[40 + e] = s, n[48 + e] = s, n[56 + e] = s;
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
i = R * n[0 + e] + 2048 >> 12, d = R * n[32 + e] + 2048 >> 12, m = n[16 + e], x = n[48 + e], E = K * (n[8 + e] - n[56 + e]) + 2048 >> 12, v = K * (n[8 + e] + n[56 + e]) + 2048 >> 12, k = n[24 + e], A = n[40 + e], s = i - d + 1 >> 1, i = i + d + 1 >> 1, d = s, s = m * W + x * Q + 2048 >> 12, m = m * Q - x * W + 2048 >> 12, x = s, s = E - A + 1 >> 1, E = E + A + 1 >> 1, A = s, s = v + k + 1 >> 1, k = v - k + 1 >> 1, v = s, s = i - x + 1 >> 1, i = i + x + 1 >> 1, x = s, s = d - m + 1 >> 1, d = d + m + 1 >> 1, m = s, s = E * N + v * $ + 2048 >> 12, E = E * $ - v * N + 2048 >> 12, v = s, s = k * Z + A * Y + 2048 >> 12, k = k * Y - A * Z + 2048 >> 12, A = s, n[0 + e] = i + v, n[56 + e] = i - v, n[8 + e] = d + A, n[48 + e] = d - A, n[16 + e] = m + k, n[40 + e] = m - k, n[24 + e] = x + E, n[32 + e] = x - E;
|
|
272
|
+
}
|
|
273
|
+
for (g = 0; g < 64; ++g) {
|
|
274
|
+
const e = 128 + (n[g] + 8 >> 4);
|
|
275
|
+
e < 0 ? c[g] = 0 : e > 255 ? c[g] = 255 : c[g] = e;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
for (let F = 0; F < T; F++) {
|
|
279
|
+
const c = F << 3;
|
|
280
|
+
for (let r = 0; r < 8; r++)
|
|
281
|
+
o.push(new Uint8Array(w));
|
|
282
|
+
for (let r = 0; r < u; r++) {
|
|
283
|
+
h(l.blocks[F][r], t, C);
|
|
284
|
+
let b = 0;
|
|
285
|
+
const i = r << 3;
|
|
286
|
+
for (let d = 0; d < 8; d++) {
|
|
287
|
+
const m = o[c + d];
|
|
288
|
+
for (let x = 0; x < 8; x++)
|
|
289
|
+
m[i + x] = t[b++];
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return o;
|
|
294
|
+
}
|
|
295
|
+
class le {
|
|
296
|
+
constructor() {
|
|
297
|
+
this.jfif = null, this.adobe = null, this.quantizationTables = [], this.huffmanTablesAC = [], this.huffmanTablesDC = [], this.resetFrames();
|
|
298
|
+
}
|
|
299
|
+
resetFrames() {
|
|
300
|
+
this.frames = [];
|
|
301
|
+
}
|
|
302
|
+
parse(l) {
|
|
303
|
+
let o = 0;
|
|
304
|
+
function u() {
|
|
305
|
+
const t = l[o] << 8 | l[o + 1];
|
|
306
|
+
return o += 2, t;
|
|
307
|
+
}
|
|
308
|
+
function T() {
|
|
309
|
+
const t = u(), h = l.subarray(o, o + t - 2);
|
|
310
|
+
return o += h.length, h;
|
|
311
|
+
}
|
|
312
|
+
function w(t) {
|
|
313
|
+
let h = 0, F = 0, c, r;
|
|
314
|
+
for (r in t.components)
|
|
315
|
+
t.components.hasOwnProperty(r) && (c = t.components[r], h < c.h && (h = c.h), F < c.v && (F = c.v));
|
|
316
|
+
const b = Math.ceil(t.samplesPerLine / 8 / h), i = Math.ceil(t.scanLines / 8 / F);
|
|
317
|
+
for (r in t.components)
|
|
318
|
+
if (t.components.hasOwnProperty(r)) {
|
|
319
|
+
c = t.components[r];
|
|
320
|
+
const d = Math.ceil(Math.ceil(t.samplesPerLine / 8) * c.h / h), m = Math.ceil(Math.ceil(t.scanLines / 8) * c.v / F), x = b * c.h, E = i * c.v, k = [];
|
|
321
|
+
for (let A = 0; A < E; A++) {
|
|
322
|
+
const v = [];
|
|
323
|
+
for (let s = 0; s < x; s++)
|
|
324
|
+
v.push(new Int32Array(64));
|
|
325
|
+
k.push(v);
|
|
326
|
+
}
|
|
327
|
+
c.blocksPerLine = d, c.blocksPerColumn = m, c.blocks = k;
|
|
328
|
+
}
|
|
329
|
+
t.maxH = h, t.maxV = F, t.mcusPerLine = b, t.mcusPerColumn = i;
|
|
330
|
+
}
|
|
331
|
+
let C = u();
|
|
332
|
+
if (C !== 65496)
|
|
333
|
+
throw new Error("SOI not found");
|
|
334
|
+
for (C = u(); C !== 65497; ) {
|
|
335
|
+
switch (C) {
|
|
336
|
+
case 65280:
|
|
337
|
+
break;
|
|
338
|
+
case 65504:
|
|
339
|
+
// APP0 (Application Specific)
|
|
340
|
+
case 65505:
|
|
341
|
+
// APP1
|
|
342
|
+
case 65506:
|
|
343
|
+
// APP2
|
|
344
|
+
case 65507:
|
|
345
|
+
// APP3
|
|
346
|
+
case 65508:
|
|
347
|
+
// APP4
|
|
348
|
+
case 65509:
|
|
349
|
+
// APP5
|
|
350
|
+
case 65510:
|
|
351
|
+
// APP6
|
|
352
|
+
case 65511:
|
|
353
|
+
// APP7
|
|
354
|
+
case 65512:
|
|
355
|
+
// APP8
|
|
356
|
+
case 65513:
|
|
357
|
+
// APP9
|
|
358
|
+
case 65514:
|
|
359
|
+
// APP10
|
|
360
|
+
case 65515:
|
|
361
|
+
// APP11
|
|
362
|
+
case 65516:
|
|
363
|
+
// APP12
|
|
364
|
+
case 65517:
|
|
365
|
+
// APP13
|
|
366
|
+
case 65518:
|
|
367
|
+
// APP14
|
|
368
|
+
case 65519:
|
|
369
|
+
// APP15
|
|
370
|
+
case 65534: {
|
|
371
|
+
const t = T();
|
|
372
|
+
C === 65504 && t[0] === 74 && t[1] === 70 && t[2] === 73 && t[3] === 70 && t[4] === 0 && (this.jfif = {
|
|
373
|
+
version: { major: t[5], minor: t[6] },
|
|
374
|
+
densityUnits: t[7],
|
|
375
|
+
xDensity: t[8] << 8 | t[9],
|
|
376
|
+
yDensity: t[10] << 8 | t[11],
|
|
377
|
+
thumbWidth: t[12],
|
|
378
|
+
thumbHeight: t[13],
|
|
379
|
+
thumbData: t.subarray(14, 14 + 3 * t[12] * t[13])
|
|
380
|
+
}), C === 65518 && t[0] === 65 && t[1] === 100 && t[2] === 111 && t[3] === 98 && t[4] === 101 && t[5] === 0 && (this.adobe = {
|
|
381
|
+
version: t[6],
|
|
382
|
+
flags0: t[7] << 8 | t[8],
|
|
383
|
+
flags1: t[9] << 8 | t[10],
|
|
384
|
+
transformCode: t[11]
|
|
385
|
+
});
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
case 65499: {
|
|
389
|
+
const h = u() + o - 2;
|
|
390
|
+
for (; o < h; ) {
|
|
391
|
+
const F = l[o++], c = new Int32Array(64);
|
|
392
|
+
if (F >> 4 === 0)
|
|
393
|
+
for (let r = 0; r < 64; r++) {
|
|
394
|
+
const b = O[r];
|
|
395
|
+
c[b] = l[o++];
|
|
396
|
+
}
|
|
397
|
+
else if (F >> 4 === 1)
|
|
398
|
+
for (let r = 0; r < 64; r++) {
|
|
399
|
+
const b = O[r];
|
|
400
|
+
c[b] = u();
|
|
401
|
+
}
|
|
402
|
+
else
|
|
403
|
+
throw new Error("DQT: invalid table spec");
|
|
404
|
+
this.quantizationTables[F & 15] = c;
|
|
405
|
+
}
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
case 65472:
|
|
409
|
+
// SOF0 (Start of Frame, Baseline DCT)
|
|
410
|
+
case 65473:
|
|
411
|
+
// SOF1 (Start of Frame, Extended DCT)
|
|
412
|
+
case 65474: {
|
|
413
|
+
u();
|
|
414
|
+
const t = {
|
|
415
|
+
extended: C === 65473,
|
|
416
|
+
progressive: C === 65474,
|
|
417
|
+
precision: l[o++],
|
|
418
|
+
scanLines: u(),
|
|
419
|
+
samplesPerLine: u(),
|
|
420
|
+
components: {},
|
|
421
|
+
componentsOrder: []
|
|
422
|
+
}, h = l[o++];
|
|
423
|
+
let F;
|
|
424
|
+
for (let c = 0; c < h; c++) {
|
|
425
|
+
F = l[o];
|
|
426
|
+
const r = l[o + 1] >> 4, b = l[o + 1] & 15, i = l[o + 2];
|
|
427
|
+
t.componentsOrder.push(F), t.components[F] = {
|
|
428
|
+
h: r,
|
|
429
|
+
v: b,
|
|
430
|
+
quantizationIdx: i
|
|
431
|
+
}, o += 3;
|
|
432
|
+
}
|
|
433
|
+
w(t), this.frames.push(t);
|
|
434
|
+
break;
|
|
435
|
+
}
|
|
436
|
+
case 65476: {
|
|
437
|
+
const t = u();
|
|
438
|
+
for (let h = 2; h < t; ) {
|
|
439
|
+
const F = l[o++], c = new Uint8Array(16);
|
|
440
|
+
let r = 0;
|
|
441
|
+
for (let i = 0; i < 16; i++, o++)
|
|
442
|
+
c[i] = l[o], r += c[i];
|
|
443
|
+
const b = new Uint8Array(r);
|
|
444
|
+
for (let i = 0; i < r; i++, o++)
|
|
445
|
+
b[i] = l[o];
|
|
446
|
+
h += 17 + r, F >> 4 === 0 ? this.huffmanTablesDC[F & 15] = ne(
|
|
447
|
+
c,
|
|
448
|
+
b
|
|
449
|
+
) : this.huffmanTablesAC[F & 15] = ne(
|
|
450
|
+
c,
|
|
451
|
+
b
|
|
452
|
+
);
|
|
453
|
+
}
|
|
454
|
+
break;
|
|
455
|
+
}
|
|
456
|
+
case 65501:
|
|
457
|
+
u(), this.resetInterval = u();
|
|
458
|
+
break;
|
|
459
|
+
case 65498: {
|
|
460
|
+
u();
|
|
461
|
+
const t = l[o++], h = [], F = this.frames[0];
|
|
462
|
+
for (let d = 0; d < t; d++) {
|
|
463
|
+
const m = F.components[l[o++]], x = l[o++];
|
|
464
|
+
m.huffmanTableDC = this.huffmanTablesDC[x >> 4], m.huffmanTableAC = this.huffmanTablesAC[x & 15], h.push(m);
|
|
465
|
+
}
|
|
466
|
+
const c = l[o++], r = l[o++], b = l[o++], i = ce(
|
|
467
|
+
l,
|
|
468
|
+
o,
|
|
469
|
+
F,
|
|
470
|
+
h,
|
|
471
|
+
this.resetInterval,
|
|
472
|
+
c,
|
|
473
|
+
r,
|
|
474
|
+
b >> 4,
|
|
475
|
+
b & 15
|
|
476
|
+
);
|
|
477
|
+
o += i;
|
|
478
|
+
break;
|
|
479
|
+
}
|
|
480
|
+
case 65535:
|
|
481
|
+
l[o] !== 255 && o--;
|
|
482
|
+
break;
|
|
483
|
+
default:
|
|
484
|
+
if (l[o - 3] === 255 && l[o - 2] >= 192 && l[o - 2] <= 254) {
|
|
485
|
+
o -= 3;
|
|
486
|
+
break;
|
|
487
|
+
}
|
|
488
|
+
throw new Error(`unknown JPEG marker ${C.toString(16)}`);
|
|
489
|
+
}
|
|
490
|
+
C = u();
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
getResult() {
|
|
494
|
+
const { frames: l } = this;
|
|
495
|
+
if (this.frames.length === 0)
|
|
496
|
+
throw new Error("no frames were decoded");
|
|
497
|
+
this.frames.length > 1 && console.warn("more than one frame is not supported");
|
|
498
|
+
for (let c = 0; c < this.frames.length; c++) {
|
|
499
|
+
const r = this.frames[c].components;
|
|
500
|
+
for (const b of Object.keys(r))
|
|
501
|
+
r[b].quantizationTable = this.quantizationTables[r[b].quantizationIdx], delete r[b].quantizationIdx;
|
|
502
|
+
}
|
|
503
|
+
const o = l[0], { components: u, componentsOrder: T } = o, w = [], C = o.samplesPerLine, t = o.scanLines;
|
|
504
|
+
for (let c = 0; c < T.length; c++) {
|
|
505
|
+
const r = u[T[c]];
|
|
506
|
+
w.push({
|
|
507
|
+
lines: ie(o, r),
|
|
508
|
+
scaleX: r.h / o.maxH,
|
|
509
|
+
scaleY: r.v / o.maxV
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
const h = new Uint8Array(C * t * w.length);
|
|
513
|
+
let F = 0;
|
|
514
|
+
for (let c = 0; c < t; ++c)
|
|
515
|
+
for (let r = 0; r < C; ++r)
|
|
516
|
+
for (let b = 0; b < w.length; ++b) {
|
|
517
|
+
const i = w[b];
|
|
518
|
+
h[F] = i.lines[0 | c * i.scaleY][0 | r * i.scaleX], ++F;
|
|
519
|
+
}
|
|
520
|
+
return h;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
class fe extends re {
|
|
524
|
+
constructor(l) {
|
|
525
|
+
super(), this.reader = new le(), l.JPEGTables && this.reader.parse(l.JPEGTables);
|
|
526
|
+
}
|
|
527
|
+
decodeBlock(l) {
|
|
528
|
+
return this.reader.resetFrames(), this.reader.parse(new Uint8Array(l)), this.reader.getResult().buffer;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
export {
|
|
532
|
+
fe as default
|
|
533
|
+
};
|
|
534
|
+
//# sourceMappingURL=jpeg-B7yImnpY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpeg-B7yImnpY.js","sources":["../../../node_modules/.bun/geotiff@2.1.3/node_modules/geotiff/dist-module/compression/jpeg.js"],"sourcesContent":["import BaseDecoder from './basedecoder.js';\n\n/* -*- tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n/*\n Copyright 2011 notmasteryet\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\n// - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n// (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n// - The JFIF specification can be found in the JPEG File Interchange Format\n// (www.w3.org/Graphics/JPEG/jfif3.pdf)\n// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters\n// in PostScript Level 2, Technical Note #5116\n// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n\nconst dctZigZag = new Int32Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63,\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896;// sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0;\n const code = [];\n let length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n --length;\n }\n code.push({ children: [], index: 0 });\n\n let p = code[0];\n let q;\n for (let i = 0; i < length; i++) {\n for (let j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push(q = { children: [], index: 0 });\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push(q = { children: [], index: 0 });\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction decodeScan(data, initialOffset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successivePrev, successive) {\n const { mcusPerLine, progressive } = frame;\n\n const startOffset = initialOffset;\n let offset = initialOffset;\n let bitsData = 0;\n let bitsCount = 0;\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xFF) {\n const nextByte = data[offset++];\n if (nextByte) {\n throw new Error(`unexpected marker: ${((bitsData << 8) | nextByte).toString(16)}`);\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n function decodeHuffman(tree) {\n let node = tree;\n let bit;\n while ((bit = readBit()) !== null) { // eslint-disable-line no-cond-assign\n node = node[bit];\n if (typeof node === 'number') {\n return node;\n }\n if (typeof node !== 'object') {\n throw new Error('invalid huffman sequence');\n }\n }\n return null;\n }\n function receive(initialLength) {\n let length = initialLength;\n let n = 0;\n while (length > 0) {\n const bit = readBit();\n if (bit === null) {\n return undefined;\n }\n n = (n << 1) | bit;\n --length;\n }\n return n;\n }\n function receiveAndExtend(length) {\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n function decodeBaseline(component, zz) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.pred += diff;\n zz[0] = component.pred;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15;\n const r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n } else {\n k += r;\n const z = dctZigZag[k];\n zz[z] = receiveAndExtend(s);\n k++;\n }\n }\n }\n function decodeDCFirst(component, zz) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);\n component.pred += diff;\n zz[0] = component.pred;\n }\n function decodeDCSuccessive(component, zz) {\n zz[0] |= readBit() << successive;\n }\n let eobrun = 0;\n function decodeACFirst(component, zz) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15;\n const r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n } else {\n k += r;\n const z = dctZigZag[k];\n zz[z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n }\n let successiveACState = 0;\n let successiveACNextValue;\n function decodeACSuccessive(component, zz) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n while (k <= e) {\n const z = dctZigZag[k];\n const direction = zz[z] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: { // initial state\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new Error('invalid ACn encoding');\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue; // eslint-disable-line no-continue\n }\n case 1: // skipping r zero items\n case 2:\n if (zz[z]) {\n zz[z] += (readBit() << successive) * direction;\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (zz[z]) {\n zz[z] += (readBit() << successive) * direction;\n } else {\n zz[z] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (zz[z]) {\n zz[z] += (readBit() << successive) * direction;\n }\n break;\n default:\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n function decodeMcu(component, decodeFunction, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n const blockRow = (mcuRow * component.v) + row;\n const blockCol = (mcuCol * component.h) + col;\n decodeFunction(component, component.blocks[blockRow][blockCol]);\n }\n function decodeBlock(component, decodeFunction, mcu) {\n const blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n decodeFunction(component, component.blocks[blockRow][blockCol]);\n }\n\n const componentsLength = components.length;\n let component;\n let i;\n let j;\n let k;\n let n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0;\n let marker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n const usedResetInterval = resetInterval || mcuExpected;\n\n while (mcu < mcuExpected) {\n // reset interval stuff\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < usedResetInterval; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < usedResetInterval; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n const { h, v } = component;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n\n // If we've reached our expected MCU's, stop decoding\n if (mcu === mcuExpected) {\n break;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n marker = (data[offset] << 8) | data[offset + 1];\n if (marker < 0xFF00) {\n throw new Error('marker was not found');\n }\n\n if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\nfunction buildComponentData(frame, component) {\n const lines = [];\n const { blocksPerLine, blocksPerColumn } = component;\n const samplesPerLine = blocksPerLine << 3;\n const R = new Int32Array(64);\n const r = new Uint8Array(64);\n\n // A port of poppler's IDCT method which in turn is taken from:\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n // \"Practical Fast 1-D DCT Algorithms with 11 Multiplications\",\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n // 988-991.\n function quantizeAndInverse(zz, dataOut, dataIn) {\n const qt = component.quantizationTable;\n let v0;\n let v1;\n let v2;\n let v3;\n let v4;\n let v5;\n let v6;\n let v7;\n let t;\n const p = dataIn;\n let i;\n\n // dequant\n for (i = 0; i < 64; i++) {\n p[i] = zz[i] * qt[i];\n }\n\n // inverse DCT on rows\n for (i = 0; i < 8; ++i) {\n const row = 8 * i;\n\n // check for all-zero AC coefficients\n if (p[1 + row] === 0 && p[2 + row] === 0 && p[3 + row] === 0\n && p[4 + row] === 0 && p[5 + row] === 0 && p[6 + row] === 0\n && p[7 + row] === 0) {\n t = ((dctSqrt2 * p[0 + row]) + 512) >> 10;\n p[0 + row] = t;\n p[1 + row] = t;\n p[2 + row] = t;\n p[3 + row] = t;\n p[4 + row] = t;\n p[5 + row] = t;\n p[6 + row] = t;\n p[7 + row] = t;\n continue; // eslint-disable-line no-continue\n }\n\n // stage 4\n v0 = ((dctSqrt2 * p[0 + row]) + 128) >> 8;\n v1 = ((dctSqrt2 * p[4 + row]) + 128) >> 8;\n v2 = p[2 + row];\n v3 = p[6 + row];\n v4 = ((dctSqrt1d2 * (p[1 + row] - p[7 + row])) + 128) >> 8;\n v7 = ((dctSqrt1d2 * (p[1 + row] + p[7 + row])) + 128) >> 8;\n v5 = p[3 + row] << 4;\n v6 = p[5 + row] << 4;\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = ((v2 * dctSin6) + (v3 * dctCos6) + 128) >> 8;\n v2 = ((v2 * dctCos6) - (v3 * dctSin6) + 128) >> 8;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = ((v4 * dctSin3) + (v7 * dctCos3) + 2048) >> 12;\n v4 = ((v4 * dctCos3) - (v7 * dctSin3) + 2048) >> 12;\n v7 = t;\n t = ((v5 * dctSin1) + (v6 * dctCos1) + 2048) >> 12;\n v5 = ((v5 * dctCos1) - (v6 * dctSin1) + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 + row] = v0 + v7;\n p[7 + row] = v0 - v7;\n p[1 + row] = v1 + v6;\n p[6 + row] = v1 - v6;\n p[2 + row] = v2 + v5;\n p[5 + row] = v2 - v5;\n p[3 + row] = v3 + v4;\n p[4 + row] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (i = 0; i < 8; ++i) {\n const col = i;\n\n // check for all-zero AC coefficients\n if (p[(1 * 8) + col] === 0 && p[(2 * 8) + col] === 0 && p[(3 * 8) + col] === 0\n && p[(4 * 8) + col] === 0 && p[(5 * 8) + col] === 0 && p[(6 * 8) + col] === 0\n && p[(7 * 8) + col] === 0) {\n t = ((dctSqrt2 * dataIn[i + 0]) + 8192) >> 14;\n p[(0 * 8) + col] = t;\n p[(1 * 8) + col] = t;\n p[(2 * 8) + col] = t;\n p[(3 * 8) + col] = t;\n p[(4 * 8) + col] = t;\n p[(5 * 8) + col] = t;\n p[(6 * 8) + col] = t;\n p[(7 * 8) + col] = t;\n continue; // eslint-disable-line no-continue\n }\n\n // stage 4\n v0 = ((dctSqrt2 * p[(0 * 8) + col]) + 2048) >> 12;\n v1 = ((dctSqrt2 * p[(4 * 8) + col]) + 2048) >> 12;\n v2 = p[(2 * 8) + col];\n v3 = p[(6 * 8) + col];\n v4 = ((dctSqrt1d2 * (p[(1 * 8) + col] - p[(7 * 8) + col])) + 2048) >> 12;\n v7 = ((dctSqrt1d2 * (p[(1 * 8) + col] + p[(7 * 8) + col])) + 2048) >> 12;\n v5 = p[(3 * 8) + col];\n v6 = p[(5 * 8) + col];\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = ((v2 * dctSin6) + (v3 * dctCos6) + 2048) >> 12;\n v2 = ((v2 * dctCos6) - (v3 * dctSin6) + 2048) >> 12;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = ((v4 * dctSin3) + (v7 * dctCos3) + 2048) >> 12;\n v4 = ((v4 * dctCos3) - (v7 * dctSin3) + 2048) >> 12;\n v7 = t;\n t = ((v5 * dctSin1) + (v6 * dctCos1) + 2048) >> 12;\n v5 = ((v5 * dctCos1) - (v6 * dctSin1) + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[(0 * 8) + col] = v0 + v7;\n p[(7 * 8) + col] = v0 - v7;\n p[(1 * 8) + col] = v1 + v6;\n p[(6 * 8) + col] = v1 - v6;\n p[(2 * 8) + col] = v2 + v5;\n p[(5 * 8) + col] = v2 - v5;\n p[(3 * 8) + col] = v3 + v4;\n p[(4 * 8) + col] = v3 - v4;\n }\n\n // convert to 8-bit integers\n for (i = 0; i < 64; ++i) {\n const sample = 128 + ((p[i] + 8) >> 4);\n if (sample < 0) {\n dataOut[i] = 0;\n } else if (sample > 0XFF) {\n dataOut[i] = 0xFF;\n } else {\n dataOut[i] = sample;\n }\n }\n }\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n const scanLine = blockRow << 3;\n for (let i = 0; i < 8; i++) {\n lines.push(new Uint8Array(samplesPerLine));\n }\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n quantizeAndInverse(component.blocks[blockRow][blockCol], r, R);\n\n let offset = 0;\n const sample = blockCol << 3;\n for (let j = 0; j < 8; j++) {\n const line = lines[scanLine + j];\n for (let i = 0; i < 8; i++) {\n line[sample + i] = r[offset++];\n }\n }\n }\n }\n return lines;\n}\n\nclass JpegStreamReader {\n constructor() {\n this.jfif = null;\n this.adobe = null;\n\n this.quantizationTables = [];\n this.huffmanTablesAC = [];\n this.huffmanTablesDC = [];\n this.resetFrames();\n }\n\n resetFrames() {\n this.frames = [];\n }\n\n parse(data) {\n let offset = 0;\n // const { length } = data;\n function readUint16() {\n const value = (data[offset] << 8) | data[offset + 1];\n offset += 2;\n return value;\n }\n function readDataBlock() {\n const length = readUint16();\n const array = data.subarray(offset, offset + length - 2);\n offset += array.length;\n return array;\n }\n function prepareComponents(frame) {\n let maxH = 0;\n let maxV = 0;\n let component;\n let componentId;\n for (componentId in frame.components) {\n if (frame.components.hasOwnProperty(componentId)) {\n component = frame.components[componentId];\n if (maxH < component.h) {\n maxH = component.h;\n }\n if (maxV < component.v) {\n maxV = component.v;\n }\n }\n }\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / maxV);\n for (componentId in frame.components) {\n if (frame.components.hasOwnProperty(componentId)) {\n component = frame.components[componentId];\n const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / maxH);\n const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / maxV);\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n const blocks = [];\n for (let i = 0; i < blocksPerColumnForMcu; i++) {\n const row = [];\n for (let j = 0; j < blocksPerLineForMcu; j++) {\n row.push(new Int32Array(64));\n }\n blocks.push(row);\n }\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n component.blocks = blocks;\n }\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n let fileMarker = readUint16();\n if (fileMarker !== 0xFFD8) { // SOI (Start of Image)\n throw new Error('SOI not found');\n }\n\n fileMarker = readUint16();\n while (fileMarker !== 0xFFD9) { // EOI (End of image)\n switch (fileMarker) {\n case 0xFF00: break;\n case 0xFFE0: // APP0 (Application Specific)\n case 0xFFE1: // APP1\n case 0xFFE2: // APP2\n case 0xFFE3: // APP3\n case 0xFFE4: // APP4\n case 0xFFE5: // APP5\n case 0xFFE6: // APP6\n case 0xFFE7: // APP7\n case 0xFFE8: // APP8\n case 0xFFE9: // APP9\n case 0xFFEA: // APP10\n case 0xFFEB: // APP11\n case 0xFFEC: // APP12\n case 0xFFED: // APP13\n case 0xFFEE: // APP14\n case 0xFFEF: // APP15\n case 0xFFFE: { // COM (Comment)\n const appData = readDataBlock();\n\n if (fileMarker === 0xFFE0) {\n if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49\n && appData[3] === 0x46 && appData[4] === 0) { // 'JFIF\\x00'\n this.jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 + (3 * appData[12] * appData[13])),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xFFEE) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F\n && appData[3] === 0x62 && appData[4] === 0x65 && appData[5] === 0) { // 'Adobe\\x00'\n this.adobe = {\n version: appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n }\n\n case 0xFFDB: { // DQT (Define Quantization Tables)\n const quantizationTablesLength = readUint16();\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Int32Array(64);\n if ((quantizationTableSpec >> 4) === 0) { // 8 bit values\n for (let j = 0; j < 64; j++) {\n const z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if ((quantizationTableSpec >> 4) === 1) { // 16 bit\n for (let j = 0; j < 64; j++) {\n const z = dctZigZag[j];\n tableData[z] = readUint16();\n }\n } else {\n throw new Error('DQT: invalid table spec');\n }\n this.quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n }\n\n case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xFFC1: // SOF1 (Start of Frame, Extended DCT)\n case 0xFFC2: { // SOF2 (Start of Frame, Progressive DCT)\n readUint16(); // skip data length\n const frame = {\n extended: (fileMarker === 0xFFC1),\n progressive: (fileMarker === 0xFFC2),\n precision: data[offset++],\n scanLines: readUint16(),\n samplesPerLine: readUint16(),\n components: {},\n componentsOrder: [],\n };\n\n const componentsCount = data[offset++];\n let componentId;\n // let maxH = 0;\n // let maxV = 0;\n for (let i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n const qId = data[offset + 2];\n frame.componentsOrder.push(componentId);\n frame.components[componentId] = {\n h,\n v,\n quantizationIdx: qId,\n };\n offset += 3;\n }\n prepareComponents(frame);\n this.frames.push(frame);\n break;\n }\n\n case 0xFFC4: { // DHT (Define Huffman Tables)\n const huffmanLength = readUint16();\n for (let i = 2; i < huffmanLength;) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (let j = 0; j < 16; j++, offset++) {\n codeLengths[j] = data[offset];\n codeLengthSum += codeLengths[j];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (let j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n if ((huffmanTableSpec >> 4) === 0) {\n this.huffmanTablesDC[huffmanTableSpec & 15] = buildHuffmanTable(\n codeLengths, huffmanValues,\n );\n } else {\n this.huffmanTablesAC[huffmanTableSpec & 15] = buildHuffmanTable(\n codeLengths, huffmanValues,\n );\n }\n }\n break;\n }\n\n case 0xFFDD: // DRI (Define Restart Interval)\n readUint16(); // skip data length\n this.resetInterval = readUint16();\n break;\n\n case 0xFFDA: { // SOS (Start of Scan)\n readUint16(); // skip length\n const selectorsCount = data[offset++];\n const components = [];\n const frame = this.frames[0];\n for (let i = 0; i < selectorsCount; i++) {\n const component = frame.components[data[offset++]];\n const tableSpec = data[offset++];\n component.huffmanTableDC = this.huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = this.huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++];\n const spectralEnd = data[offset++];\n const successiveApproximation = data[offset++];\n const processed = decodeScan(data, offset,\n frame, components, this.resetInterval,\n spectralStart, spectralEnd,\n successiveApproximation >> 4, successiveApproximation & 15);\n offset += processed;\n break;\n }\n\n case 0xFFFF: // Fill bytes\n if (data[offset] !== 0xFF) { // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n if (data[offset - 3] === 0xFF\n && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {\n // could be incorrect encoding -- last 0xFF byte of the previous\n // block was eaten by the encoder\n offset -= 3;\n break;\n }\n throw new Error(`unknown JPEG marker ${fileMarker.toString(16)}`);\n }\n fileMarker = readUint16();\n }\n }\n\n getResult() {\n const { frames } = this;\n if (this.frames.length === 0) {\n throw new Error('no frames were decoded');\n } else if (this.frames.length > 1) {\n console.warn('more than one frame is not supported');\n }\n\n // set each frame's components quantization table\n for (let i = 0; i < this.frames.length; i++) {\n const cp = this.frames[i].components;\n for (const j of Object.keys(cp)) {\n cp[j].quantizationTable = this.quantizationTables[cp[j].quantizationIdx];\n delete cp[j].quantizationIdx;\n }\n }\n\n const frame = frames[0];\n const { components, componentsOrder } = frame;\n const outComponents = [];\n const width = frame.samplesPerLine;\n const height = frame.scanLines;\n\n for (let i = 0; i < componentsOrder.length; i++) {\n const component = components[componentsOrder[i]];\n outComponents.push({\n lines: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n });\n }\n\n const out = new Uint8Array(width * height * outComponents.length);\n let oi = 0;\n for (let y = 0; y < height; ++y) {\n for (let x = 0; x < width; ++x) {\n for (let i = 0; i < outComponents.length; ++i) {\n const component = outComponents[i];\n out[oi] = component.lines[0 | y * component.scaleY][0 | x * component.scaleX];\n ++oi;\n }\n }\n }\n return out;\n }\n}\n\nexport default class JpegDecoder extends BaseDecoder {\n constructor(fileDirectory) {\n super();\n this.reader = new JpegStreamReader();\n if (fileDirectory.JPEGTables) {\n this.reader.parse(fileDirectory.JPEGTables);\n }\n }\n\n decodeBlock(buffer) {\n this.reader.resetFrames();\n this.reader.parse(new Uint8Array(buffer));\n return this.reader.getResult().buffer;\n }\n}\n"],"names":["dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","codeLengths","values","k","code","length","p","q","i","j","decodeScan","data","initialOffset","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","mcusPerLine","progressive","startOffset","offset","bitsData","bitsCount","readBit","nextByte","decodeHuffman","tree","node","bit","receive","initialLength","n","receiveAndExtend","decodeBaseline","component","zz","t","diff","rs","s","r","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","e","successiveACState","successiveACNextValue","decodeACSuccessive","direction","decodeMcu","decodeFunction","mcu","row","col","mcuRow","mcuCol","blockRow","blockCol","decodeBlock","componentsLength","decodeFn","marker","mcuExpected","usedResetInterval","h","v","buildComponentData","lines","blocksPerLine","blocksPerColumn","samplesPerLine","R","quantizeAndInverse","dataOut","dataIn","qt","v0","v1","v2","v3","v4","v5","v6","v7","sample","scanLine","line","JpegStreamReader","readUint16","value","readDataBlock","array","prepareComponents","maxH","maxV","componentId","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocks","fileMarker","appData","quantizationTablesEnd","quantizationTableSpec","tableData","componentsCount","qId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","tableSpec","successiveApproximation","processed","frames","cp","componentsOrder","outComponents","width","height","out","oi","y","x","JpegDecoder","BaseDecoder","fileDirectory","buffer"],"mappings":";AAyBA,MAAMA,IAAY,IAAI,WAAW;AAAA,EAC/B;AAAA,EACA;AAAA,EAAG;AAAA,EACH;AAAA,EAAI;AAAA,EAAG;AAAA,EACP;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EACX;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAChB;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACnB;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACxB;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAC3B;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACxB;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpB;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAChB;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACZ;AAAA,EAAI;AAAA,EAAI;AAAA,EACR;AAAA,EAAI;AAAA,EACJ;AACF,CAAC,GAEKC,IAAU,MACVC,IAAU,KACVC,IAAU,MACVC,IAAU,MACVC,IAAU,MACVC,IAAU,MACVC,IAAW,MACXC,IAAa;AAEnB,SAASC,GAAkBC,GAAaC,GAAQ;AAC9C,MAAIC,IAAI;AACR,QAAMC,IAAO,CAAA;AACb,MAAIC,IAAS;AACb,SAAOA,IAAS,KAAK,CAACJ,EAAYI,IAAS,CAAC;AAC1C,MAAEA;AAEJ,EAAAD,EAAK,KAAK,EAAE,UAAU,CAAA,GAAI,OAAO,GAAG;AAEpC,MAAIE,IAAIF,EAAK,CAAC,GACVG;AACJ,WAASC,IAAI,GAAGA,IAAIH,GAAQG,KAAK;AAC/B,aAASC,IAAI,GAAGA,IAAIR,EAAYO,CAAC,GAAGC,KAAK;AAGvC,WAFAH,IAAIF,EAAK,IAAG,GACZE,EAAE,SAASA,EAAE,KAAK,IAAIJ,EAAOC,CAAC,GACvBG,EAAE,QAAQ;AACf,QAAAA,IAAIF,EAAK,IAAG;AAId,WAFAE,EAAE,SACFF,EAAK,KAAKE,CAAC,GACJF,EAAK,UAAUI;AACpB,QAAAJ,EAAK,KAAKG,IAAI,EAAE,UAAU,IAAI,OAAO,GAAG,GACxCD,EAAE,SAASA,EAAE,KAAK,IAAIC,EAAE,UACxBD,IAAIC;AAEN,MAAAJ;AAAA,IACF;AACA,IAAIK,IAAI,IAAIH,MAEVD,EAAK,KAAKG,IAAI,EAAE,UAAU,IAAI,OAAO,GAAG,GACxCD,EAAE,SAASA,EAAE,KAAK,IAAIC,EAAE,UACxBD,IAAIC;AAAA,EAER;AACA,SAAOH,EAAK,CAAC,EAAE;AACjB;AAEA,SAASM,GAAWC,GAAMC,GACxBC,GAAOC,GAAYC,GACnBC,GAAeC,GACfC,GAAgBC,GAAY;AAC5B,QAAM,EAAE,aAAAC,GAAa,aAAAC,EAAW,IAAKR,GAE/BS,IAAcV;AACpB,MAAIW,IAASX,GACTY,IAAW,GACXC,IAAY;AAChB,WAASC,IAAU;AACjB,QAAID,IAAY;AACd,aAAAA,KACQD,KAAYC,IAAa;AAGnC,QADAD,IAAWb,EAAKY,GAAQ,GACpBC,MAAa,KAAM;AACrB,YAAMG,IAAWhB,EAAKY,GAAQ;AAC9B,UAAII;AACF,cAAM,IAAI,MAAM,uBAAwBH,KAAY,IAAKG,GAAU,SAAS,EAAE,CAAC,EAAE;AAAA,IAGrF;AACA,WAAAF,IAAY,GACLD,MAAa;AAAA,EACtB;AACA,WAASI,EAAcC,GAAM;AAC3B,QAAIC,IAAOD,GACPE;AACJ,YAAQA,IAAML,EAAO,OAAQ,QAAM;AAEjC,UADAI,IAAOA,EAAKC,CAAG,GACX,OAAOD,KAAS;AAClB,eAAOA;AAET,UAAI,OAAOA,KAAS;AAClB,cAAM,IAAI,MAAM,0BAA0B;AAAA,IAE9C;AACA,WAAO;AAAA,EACT;AACA,WAASE,EAAQC,GAAe;AAC9B,QAAI5B,IAAS4B,GACTC,IAAI;AACR,WAAO7B,IAAS,KAAG;AACjB,YAAM0B,IAAML,EAAO;AACnB,UAAIK,MAAQ;AACV;AAEF,MAAAG,IAAKA,KAAK,IAAKH,GACf,EAAE1B;AAAA,IACJ;AACA,WAAO6B;AAAA,EACT;AACA,WAASC,EAAiB9B,GAAQ;AAChC,UAAM6B,IAAIF,EAAQ3B,CAAM;AACxB,WAAI6B,KAAK,KAAM7B,IAAS,IACf6B,IAEFA,KAAK,MAAM7B,KAAU;AAAA,EAC9B;AACA,WAAS+B,EAAeC,GAAWC,GAAI;AACrC,UAAMC,IAAIX,EAAcS,EAAU,cAAc,GAC1CG,IAAOD,MAAM,IAAI,IAAIJ,EAAiBI,CAAC;AAC7C,IAAAF,EAAU,QAAQG,GAClBF,EAAG,CAAC,IAAID,EAAU;AAClB,QAAIlC,IAAI;AACR,WAAOA,IAAI,MAAI;AACb,YAAMsC,IAAKb,EAAcS,EAAU,cAAc,GAC3CK,IAAID,IAAK,IACTE,IAAIF,KAAM;AAChB,UAAIC,MAAM,GAAG;AACX,YAAIC,IAAI;AACN;AAEF,QAAAxC,KAAK;AAAA,MACP,OAAO;AACL,QAAAA,KAAKwC;AACL,cAAMC,IAAIrD,EAAUY,CAAC;AACrB,QAAAmC,EAAGM,CAAC,IAAIT,EAAiBO,CAAC,GAC1BvC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS0C,EAAcR,GAAWC,GAAI;AACpC,UAAMC,IAAIX,EAAcS,EAAU,cAAc,GAC1CG,IAAOD,MAAM,IAAI,IAAKJ,EAAiBI,CAAC,KAAKpB;AACnD,IAAAkB,EAAU,QAAQG,GAClBF,EAAG,CAAC,IAAID,EAAU;AAAA,EACpB;AACA,WAASS,EAAmBT,GAAWC,GAAI;AACzC,IAAAA,EAAG,CAAC,KAAKZ,EAAO,KAAMP;AAAA,EACxB;AACA,MAAI4B,IAAS;AACb,WAASC,EAAcX,GAAWC,GAAI;AACpC,QAAIS,IAAS,GAAG;AACd,MAAAA;AACA;AAAA,IACF;AACA,QAAI5C,IAAIa;AACR,UAAMiC,IAAIhC;AACV,WAAOd,KAAK8C,KAAG;AACb,YAAMR,IAAKb,EAAcS,EAAU,cAAc,GAC3CK,IAAID,IAAK,IACTE,IAAIF,KAAM;AAChB,UAAIC,MAAM,GAAG;AACX,YAAIC,IAAI,IAAI;AACV,UAAAI,IAASf,EAAQW,CAAC,KAAK,KAAKA,KAAK;AACjC;AAAA,QACF;AACA,QAAAxC,KAAK;AAAA,MACP,OAAO;AACL,QAAAA,KAAKwC;AACL,cAAMC,IAAIrD,EAAUY,CAAC;AACrB,QAAAmC,EAAGM,CAAC,IAAIT,EAAiBO,CAAC,KAAK,KAAKvB,IACpChB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI+C,IAAoB,GACpBC;AACJ,WAASC,GAAmBf,GAAWC,GAAI;AACzC,QAAInC,IAAIa;AACR,UAAMiC,IAAIhC;AACV,QAAI0B,IAAI;AACR,WAAOxC,KAAK8C,KAAG;AACb,YAAML,IAAIrD,EAAUY,CAAC,GACfkD,IAAYf,EAAGM,CAAC,IAAI,IAAI,KAAK;AACnC,cAAQM,GAAiB;AAAA,QACvB,KAAK,GAAG;AACN,gBAAMT,IAAKb,EAAcS,EAAU,cAAc,GAC3CK,IAAID,IAAK;AAEf,cADAE,IAAIF,KAAM,GACNC,MAAM;AACR,YAAIC,IAAI,MACNI,IAASf,EAAQW,CAAC,KAAK,KAAKA,IAC5BO,IAAoB,MAEpBP,IAAI,IACJO,IAAoB;AAAA,eAEjB;AACL,gBAAIR,MAAM;AACR,oBAAM,IAAI,MAAM,sBAAsB;AAExC,YAAAS,IAAwBhB,EAAiBO,CAAC,GAC1CQ,IAAoBP,IAAI,IAAI;AAAA,UAC9B;AACA;AAAA,QACF;AAAA,QACA,KAAK;AAAA;AAAA,QACL,KAAK;AACH,UAAIL,EAAGM,CAAC,IACNN,EAAGM,CAAC,MAAMlB,EAAO,KAAMP,KAAckC,KAErCV,KACIA,MAAM,MACRO,IAAoBA,MAAsB,IAAI,IAAI;AAGtD;AAAA,QACF,KAAK;AACH,UAAIZ,EAAGM,CAAC,IACNN,EAAGM,CAAC,MAAMlB,EAAO,KAAMP,KAAckC,KAErCf,EAAGM,CAAC,IAAIO,KAAyBhC,GACjC+B,IAAoB;AAEtB;AAAA,QACF,KAAK;AACH,UAAIZ,EAAGM,CAAC,MACNN,EAAGM,CAAC,MAAMlB,EAAO,KAAMP,KAAckC;AAEvC;AAAA,MAGV;AACM,MAAAlD;AAAA,IACF;AACA,IAAI+C,MAAsB,MACxBH,KACIA,MAAW,MACbG,IAAoB;AAAA,EAG1B;AACA,WAASI,GAAUjB,GAAWkB,GAAgBC,GAAKC,GAAKC,GAAK;AAC3D,UAAMC,IAAUH,IAAMpC,IAAe,GAC/BwC,IAASJ,IAAMpC,GACfyC,IAAYF,IAAStB,EAAU,IAAKoB,GACpCK,IAAYF,IAASvB,EAAU,IAAKqB;AAC1C,IAAAH,EAAelB,GAAWA,EAAU,OAAOwB,CAAQ,EAAEC,CAAQ,CAAC;AAAA,EAChE;AACA,WAASC,GAAY1B,GAAWkB,GAAgBC,GAAK;AACnD,UAAMK,IAAYL,IAAMnB,EAAU,gBAAiB,GAC7CyB,IAAWN,IAAMnB,EAAU;AACjC,IAAAkB,EAAelB,GAAWA,EAAU,OAAOwB,CAAQ,EAAEC,CAAQ,CAAC;AAAA,EAChE;AAEA,QAAME,IAAmBlD,EAAW;AACpC,MAAIuB,GACA7B,GACAC,GACAN,GACA+B,GACA+B;AACJ,EAAI5C,IACEL,MAAkB,IACpBiD,IAAW/C,MAAmB,IAAI2B,IAAgBC,IAElDmB,IAAW/C,MAAmB,IAAI8B,IAAgBI,KAGpDa,IAAW7B;AAGb,MAAIoB,IAAM,GACNU,GACAC;AACJ,EAAIH,MAAqB,IACvBG,IAAcrD,EAAW,CAAC,EAAE,gBAAgBA,EAAW,CAAC,EAAE,kBAE1DqD,IAAc/C,IAAcP,EAAM;AAGpC,QAAMuD,KAAoBrD,KAAiBoD;AAE3C,SAAOX,IAAMW,KAAa;AAExB,SAAK3D,IAAI,GAAGA,IAAIwD,GAAkBxD;AAChC,MAAAM,EAAWN,CAAC,EAAE,OAAO;AAIvB,QAFAuC,IAAS,GAELiB,MAAqB;AAEvB,WADA3B,IAAYvB,EAAW,CAAC,GACnBoB,IAAI,GAAGA,IAAIkC,IAAmBlC;AACjC,QAAA6B,GAAY1B,GAAW4B,GAAUT,CAAG,GACpCA;AAAA;AAGF,WAAKtB,IAAI,GAAGA,IAAIkC,IAAmBlC,KAAK;AACtC,aAAK1B,IAAI,GAAGA,IAAIwD,GAAkBxD,KAAK;AACrC,UAAA6B,IAAYvB,EAAWN,CAAC;AACxB,gBAAM,EAAE,GAAA6D,GAAG,GAAAC,EAAC,IAAKjC;AACjB,eAAK5B,IAAI,GAAGA,IAAI6D,GAAG7D;AACjB,iBAAKN,IAAI,GAAGA,IAAIkE,GAAGlE;AACjB,cAAAmD,GAAUjB,GAAW4B,GAAUT,GAAK/C,GAAGN,CAAC;AAAA,QAG9C;AAIA,YAHAqD,KAGIA,MAAQW;AACV;AAAA,MAEJ;AAMF,QAFA1C,IAAY,GACZyC,IAAUvD,EAAKY,CAAM,KAAK,IAAKZ,EAAKY,IAAS,CAAC,GAC1C2C,IAAS;AACX,YAAM,IAAI,MAAM,sBAAsB;AAGxC,QAAIA,KAAU,SAAUA,KAAU;AAChC,MAAA3C,KAAU;AAAA;AAEV;AAAA,EAEJ;AAEA,SAAOA,IAASD;AAClB;AAEA,SAASiD,GAAmB1D,GAAOwB,GAAW;AAC5C,QAAMmC,IAAQ,CAAA,GACR,EAAE,eAAAC,GAAe,iBAAAC,EAAe,IAAKrC,GACrCsC,IAAiBF,KAAiB,GAClCG,IAAI,IAAI,WAAW,EAAE,GACrBjC,IAAI,IAAI,WAAW,EAAE;AAO3B,WAASkC,EAAmBvC,GAAIwC,GAASC,GAAQ;AAC/C,UAAMC,IAAK3C,EAAU;AACrB,QAAI4C,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAjD;AACJ,UAAMjC,IAAIyE;AACV,QAAIvE;AAGJ,SAAKA,IAAI,GAAGA,IAAI,IAAIA;AAClB,MAAAF,EAAEE,CAAC,IAAI8B,EAAG9B,CAAC,IAAIwE,EAAGxE,CAAC;AAIrB,SAAKA,IAAI,GAAGA,IAAI,GAAG,EAAEA,GAAG;AACtB,YAAMiD,IAAM,IAAIjD;AAGhB,UAAIF,EAAE,IAAImD,CAAG,MAAM,KAAKnD,EAAE,IAAImD,CAAG,MAAM,KAAKnD,EAAE,IAAImD,CAAG,MAAM,KACtDnD,EAAE,IAAImD,CAAG,MAAM,KAAKnD,EAAE,IAAImD,CAAG,MAAM,KAAKnD,EAAE,IAAImD,CAAG,MAAM,KACvDnD,EAAE,IAAImD,CAAG,MAAM,GAAG;AACrB,QAAAlB,IAAMzC,IAAWQ,EAAE,IAAImD,CAAG,IAAK,OAAQ,IACvCnD,EAAE,IAAImD,CAAG,IAAIlB,GACbjC,EAAE,IAAImD,CAAG,IAAIlB,GACbjC,EAAE,IAAImD,CAAG,IAAIlB,GACbjC,EAAE,IAAImD,CAAG,IAAIlB,GACbjC,EAAE,IAAImD,CAAG,IAAIlB,GACbjC,EAAE,IAAImD,CAAG,IAAIlB,GACbjC,EAAE,IAAImD,CAAG,IAAIlB,GACbjC,EAAE,IAAImD,CAAG,IAAIlB;AACb;AAAA,MACF;AAGA,MAAA0C,IAAOnF,IAAWQ,EAAE,IAAImD,CAAG,IAAK,OAAQ,GACxCyB,IAAOpF,IAAWQ,EAAE,IAAImD,CAAG,IAAK,OAAQ,GACxC0B,IAAK7E,EAAE,IAAImD,CAAG,GACd2B,IAAK9E,EAAE,IAAImD,CAAG,GACd4B,IAAOtF,KAAcO,EAAE,IAAImD,CAAG,IAAInD,EAAE,IAAImD,CAAG,KAAM,OAAQ,GACzD+B,IAAOzF,KAAcO,EAAE,IAAImD,CAAG,IAAInD,EAAE,IAAImD,CAAG,KAAM,OAAQ,GACzD6B,IAAKhF,EAAE,IAAImD,CAAG,KAAK,GACnB8B,IAAKjF,EAAE,IAAImD,CAAG,KAAK,GAGnBlB,IAAK0C,IAAKC,IAAK,KAAM,GACrBD,IAAMA,IAAKC,IAAK,KAAM,GACtBA,IAAK3C,GACLA,IAAM4C,IAAKtF,IAAYuF,IAAKxF,IAAW,OAAQ,GAC/CuF,IAAOA,IAAKvF,IAAYwF,IAAKvF,IAAW,OAAQ,GAChDuF,IAAK7C,GACLA,IAAK8C,IAAKE,IAAK,KAAM,GACrBF,IAAMA,IAAKE,IAAK,KAAM,GACtBA,IAAKhD,GACLA,IAAKiD,IAAKF,IAAK,KAAM,GACrBA,IAAME,IAAKF,IAAK,KAAM,GACtBE,IAAKjD,GAGLA,IAAK0C,IAAKG,IAAK,KAAM,GACrBH,IAAMA,IAAKG,IAAK,KAAM,GACtBA,IAAK7C,GACLA,IAAK2C,IAAKC,IAAK,KAAM,GACrBD,IAAMA,IAAKC,IAAK,KAAM,GACtBA,IAAK5C,GACLA,IAAM8C,IAAK1F,IAAY6F,IAAK9F,IAAW,QAAS,IAChD2F,IAAOA,IAAK3F,IAAY8F,IAAK7F,IAAW,QAAS,IACjD6F,IAAKjD,GACLA,IAAM+C,IAAK7F,IAAY8F,IAAK/F,IAAW,QAAS,IAChD8F,IAAOA,IAAK9F,IAAY+F,IAAK9F,IAAW,QAAS,IACjD8F,IAAKhD,GAGLjC,EAAE,IAAImD,CAAG,IAAIwB,IAAKO,GAClBlF,EAAE,IAAImD,CAAG,IAAIwB,IAAKO,GAClBlF,EAAE,IAAImD,CAAG,IAAIyB,IAAKK,GAClBjF,EAAE,IAAImD,CAAG,IAAIyB,IAAKK,GAClBjF,EAAE,IAAImD,CAAG,IAAI0B,IAAKG,GAClBhF,EAAE,IAAImD,CAAG,IAAI0B,IAAKG,GAClBhF,EAAE,IAAImD,CAAG,IAAI2B,IAAKC,GAClB/E,EAAE,IAAImD,CAAG,IAAI2B,IAAKC;AAAA,IACpB;AAGA,SAAK7E,IAAI,GAAGA,IAAI,GAAG,EAAEA,GAAG;AACtB,YAAMkD,IAAMlD;AAGZ,UAAIF,EAAG,IAASoD,CAAG,MAAM,KAAKpD,EAAG,KAASoD,CAAG,MAAM,KAAKpD,EAAG,KAASoD,CAAG,MAAM,KACxEpD,EAAG,KAASoD,CAAG,MAAM,KAAKpD,EAAG,KAASoD,CAAG,MAAM,KAAKpD,EAAG,KAASoD,CAAG,MAAM,KACzEpD,EAAG,KAASoD,CAAG,MAAM,GAAG;AAC3B,QAAAnB,IAAMzC,IAAWiF,EAAOvE,IAAI,CAAC,IAAK,QAAS,IAC3CF,EAAG,IAASoD,CAAG,IAAInB,GACnBjC,EAAG,IAASoD,CAAG,IAAInB,GACnBjC,EAAG,KAASoD,CAAG,IAAInB,GACnBjC,EAAG,KAASoD,CAAG,IAAInB,GACnBjC,EAAG,KAASoD,CAAG,IAAInB,GACnBjC,EAAG,KAASoD,CAAG,IAAInB,GACnBjC,EAAG,KAASoD,CAAG,IAAInB,GACnBjC,EAAG,KAASoD,CAAG,IAAInB;AACnB;AAAA,MACF;AAGA,MAAA0C,IAAOnF,IAAWQ,EAAG,IAASoD,CAAG,IAAK,QAAS,IAC/CwB,IAAOpF,IAAWQ,EAAG,KAASoD,CAAG,IAAK,QAAS,IAC/CyB,IAAK7E,EAAG,KAASoD,CAAG,GACpB0B,IAAK9E,EAAG,KAASoD,CAAG,GACpB2B,IAAOtF,KAAcO,EAAG,IAASoD,CAAG,IAAIpD,EAAG,KAASoD,CAAG,KAAM,QAAS,IACtE8B,IAAOzF,KAAcO,EAAG,IAASoD,CAAG,IAAIpD,EAAG,KAASoD,CAAG,KAAM,QAAS,IACtE4B,IAAKhF,EAAG,KAASoD,CAAG,GACpB6B,IAAKjF,EAAG,KAASoD,CAAG,GAGpBnB,IAAK0C,IAAKC,IAAK,KAAM,GACrBD,IAAMA,IAAKC,IAAK,KAAM,GACtBA,IAAK3C,GACLA,IAAM4C,IAAKtF,IAAYuF,IAAKxF,IAAW,QAAS,IAChDuF,IAAOA,IAAKvF,IAAYwF,IAAKvF,IAAW,QAAS,IACjDuF,IAAK7C,GACLA,IAAK8C,IAAKE,IAAK,KAAM,GACrBF,IAAMA,IAAKE,IAAK,KAAM,GACtBA,IAAKhD,GACLA,IAAKiD,IAAKF,IAAK,KAAM,GACrBA,IAAME,IAAKF,IAAK,KAAM,GACtBE,IAAKjD,GAGLA,IAAK0C,IAAKG,IAAK,KAAM,GACrBH,IAAMA,IAAKG,IAAK,KAAM,GACtBA,IAAK7C,GACLA,IAAK2C,IAAKC,IAAK,KAAM,GACrBD,IAAMA,IAAKC,IAAK,KAAM,GACtBA,IAAK5C,GACLA,IAAM8C,IAAK1F,IAAY6F,IAAK9F,IAAW,QAAS,IAChD2F,IAAOA,IAAK3F,IAAY8F,IAAK7F,IAAW,QAAS,IACjD6F,IAAKjD,GACLA,IAAM+C,IAAK7F,IAAY8F,IAAK/F,IAAW,QAAS,IAChD8F,IAAOA,IAAK9F,IAAY+F,IAAK9F,IAAW,QAAS,IACjD8F,IAAKhD,GAGLjC,EAAG,IAASoD,CAAG,IAAIuB,IAAKO,GACxBlF,EAAG,KAASoD,CAAG,IAAIuB,IAAKO,GACxBlF,EAAG,IAASoD,CAAG,IAAIwB,IAAKK,GACxBjF,EAAG,KAASoD,CAAG,IAAIwB,IAAKK,GACxBjF,EAAG,KAASoD,CAAG,IAAIyB,IAAKG,GACxBhF,EAAG,KAASoD,CAAG,IAAIyB,IAAKG,GACxBhF,EAAG,KAASoD,CAAG,IAAI0B,IAAKC,GACxB/E,EAAG,KAASoD,CAAG,IAAI0B,IAAKC;AAAA,IAC1B;AAGA,SAAK7E,IAAI,GAAGA,IAAI,IAAI,EAAEA,GAAG;AACvB,YAAMiF,IAAS,OAAQnF,EAAEE,CAAC,IAAI,KAAM;AACpC,MAAIiF,IAAS,IACXX,EAAQtE,CAAC,IAAI,IACJiF,IAAS,MAClBX,EAAQtE,CAAC,IAAI,MAEbsE,EAAQtE,CAAC,IAAIiF;AAAA,IAEjB;AAAA,EACF;AAEA,WAAS5B,IAAW,GAAGA,IAAWa,GAAiBb,KAAY;AAC7D,UAAM6B,IAAW7B,KAAY;AAC7B,aAASrD,IAAI,GAAGA,IAAI,GAAGA;AACrB,MAAAgE,EAAM,KAAK,IAAI,WAAWG,CAAc,CAAC;AAE3C,aAASb,IAAW,GAAGA,IAAWW,GAAeX,KAAY;AAC3D,MAAAe,EAAmBxC,EAAU,OAAOwB,CAAQ,EAAEC,CAAQ,GAAGnB,GAAGiC,CAAC;AAE7D,UAAIrD,IAAS;AACb,YAAMkE,IAAS3B,KAAY;AAC3B,eAASrD,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,cAAMkF,IAAOnB,EAAMkB,IAAWjF,CAAC;AAC/B,iBAASD,IAAI,GAAGA,IAAI,GAAGA;AACrB,UAAAmF,EAAKF,IAASjF,CAAC,IAAImC,EAAEpB,GAAQ;AAAA,MAEjC;AAAA,IACF;AAAA,EACF;AACA,SAAOiD;AACT;AAEA,MAAMoB,GAAiB;AAAA,EACrB,cAAc;AACZ,SAAK,OAAO,MACZ,KAAK,QAAQ,MAEb,KAAK,qBAAqB,CAAA,GAC1B,KAAK,kBAAkB,CAAA,GACvB,KAAK,kBAAkB,CAAA,GACvB,KAAK,YAAW;AAAA,EAClB;AAAA,EAEA,cAAc;AACZ,SAAK,SAAS,CAAA;AAAA,EAChB;AAAA,EAEA,MAAMjF,GAAM;AACV,QAAIY,IAAS;AAEb,aAASsE,IAAa;AACpB,YAAMC,IAASnF,EAAKY,CAAM,KAAK,IAAKZ,EAAKY,IAAS,CAAC;AACnD,aAAAA,KAAU,GACHuE;AAAA,IACT;AACA,aAASC,IAAgB;AACvB,YAAM1F,IAASwF,EAAU,GACnBG,IAAQrF,EAAK,SAASY,GAAQA,IAASlB,IAAS,CAAC;AACvD,aAAAkB,KAAUyE,EAAM,QACTA;AAAA,IACT;AACA,aAASC,EAAkBpF,GAAO;AAChC,UAAIqF,IAAO,GACPC,IAAO,GACP9D,GACA+D;AACJ,WAAKA,KAAevF,EAAM;AACxB,QAAIA,EAAM,WAAW,eAAeuF,CAAW,MAC7C/D,IAAYxB,EAAM,WAAWuF,CAAW,GACpCF,IAAO7D,EAAU,MACnB6D,IAAO7D,EAAU,IAEf8D,IAAO9D,EAAU,MACnB8D,IAAO9D,EAAU;AAIvB,YAAMjB,IAAc,KAAK,KAAKP,EAAM,iBAAiB,IAAIqF,CAAI,GACvDG,IAAgB,KAAK,KAAKxF,EAAM,YAAY,IAAIsF,CAAI;AAC1D,WAAKC,KAAevF,EAAM;AACxB,YAAIA,EAAM,WAAW,eAAeuF,CAAW,GAAG;AAChD,UAAA/D,IAAYxB,EAAM,WAAWuF,CAAW;AACxC,gBAAM3B,IAAgB,KAAK,KAAK,KAAK,KAAK5D,EAAM,iBAAiB,CAAC,IAAIwB,EAAU,IAAI6D,CAAI,GAClFxB,IAAkB,KAAK,KAAK,KAAK,KAAK7D,EAAM,YAAY,CAAC,IAAIwB,EAAU,IAAI8D,CAAI,GAC/EG,IAAsBlF,IAAciB,EAAU,GAC9CkE,IAAwBF,IAAgBhE,EAAU,GAClDmE,IAAS,CAAA;AACf,mBAAShG,IAAI,GAAGA,IAAI+F,GAAuB/F,KAAK;AAC9C,kBAAMiD,IAAM,CAAA;AACZ,qBAAShD,IAAI,GAAGA,IAAI6F,GAAqB7F;AACvC,cAAAgD,EAAI,KAAK,IAAI,WAAW,EAAE,CAAC;AAE7B,YAAA+C,EAAO,KAAK/C,CAAG;AAAA,UACjB;AACA,UAAApB,EAAU,gBAAgBoC,GAC1BpC,EAAU,kBAAkBqC,GAC5BrC,EAAU,SAASmE;AAAA,QACrB;AAEF,MAAA3F,EAAM,OAAOqF,GACbrF,EAAM,OAAOsF,GACbtF,EAAM,cAAcO,GACpBP,EAAM,gBAAgBwF;AAAA,IACxB;AAEA,QAAII,IAAaZ,EAAU;AAC3B,QAAIY,MAAe;AACjB,YAAM,IAAI,MAAM,eAAe;AAIjC,SADAA,IAAaZ,EAAU,GAChBY,MAAe,SAAQ;AAC5B,cAAQA,GAAU;AAAA,QAChB,KAAK;AAAQ;AAAA,QACb,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK,OAAQ;AACX,gBAAMC,IAAUX,EAAa;AAE7B,UAAIU,MAAe,SACbC,EAAQ,CAAC,MAAM,MAAQA,EAAQ,CAAC,MAAM,MAAQA,EAAQ,CAAC,MAAM,MAC5DA,EAAQ,CAAC,MAAM,MAAQA,EAAQ,CAAC,MAAM,MACzC,KAAK,OAAO;AAAA,YACV,SAAS,EAAE,OAAOA,EAAQ,CAAC,GAAG,OAAOA,EAAQ,CAAC,EAAC;AAAA,YAC/C,cAAcA,EAAQ,CAAC;AAAA,YACvB,UAAWA,EAAQ,CAAC,KAAK,IAAKA,EAAQ,CAAC;AAAA,YACvC,UAAWA,EAAQ,EAAE,KAAK,IAAKA,EAAQ,EAAE;AAAA,YACzC,YAAYA,EAAQ,EAAE;AAAA,YACtB,aAAaA,EAAQ,EAAE;AAAA,YACvB,WAAWA,EAAQ,SAAS,IAAI,KAAM,IAAIA,EAAQ,EAAE,IAAIA,EAAQ,EAAE,CAAE;AAAA,UACpF,IAIcD,MAAe,SACbC,EAAQ,CAAC,MAAM,MAAQA,EAAQ,CAAC,MAAM,OAAQA,EAAQ,CAAC,MAAM,OAC5DA,EAAQ,CAAC,MAAM,MAAQA,EAAQ,CAAC,MAAM,OAAQA,EAAQ,CAAC,MAAM,MAChE,KAAK,QAAQ;AAAA,YACX,SAASA,EAAQ,CAAC;AAAA,YAClB,QAASA,EAAQ,CAAC,KAAK,IAAKA,EAAQ,CAAC;AAAA,YACrC,QAASA,EAAQ,CAAC,KAAK,IAAKA,EAAQ,EAAE;AAAA,YACtC,eAAeA,EAAQ,EAAE;AAAA,UACzC;AAGU;AAAA,QACF;AAAA,QAEA,KAAK,OAAQ;AAEX,gBAAMC,IAD2Bd,EAAU,IACctE,IAAS;AAClE,iBAAOA,IAASoF,KAAuB;AACrC,kBAAMC,IAAwBjG,EAAKY,GAAQ,GACrCsF,IAAY,IAAI,WAAW,EAAE;AACnC,gBAAKD,KAAyB,MAAO;AACnC,uBAASnG,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAC3B,sBAAMmC,IAAIrD,EAAUkB,CAAC;AACrB,gBAAAoG,EAAUjE,CAAC,IAAIjC,EAAKY,GAAQ;AAAA,cAC9B;AAAA,qBACUqF,KAAyB,MAAO;AAC1C,uBAASnG,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAC3B,sBAAMmC,IAAIrD,EAAUkB,CAAC;AACrB,gBAAAoG,EAAUjE,CAAC,IAAIiD,EAAU;AAAA,cAC3B;AAAA;AAEA,oBAAM,IAAI,MAAM,yBAAyB;AAE3C,iBAAK,mBAAmBe,IAAwB,EAAE,IAAIC;AAAA,UACxD;AACA;AAAA,QACF;AAAA,QAEA,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,QACL,KAAK,OAAQ;AACX,UAAAhB;AACA,gBAAMhF,IAAQ;AAAA,YACZ,UAAW4F,MAAe;AAAA,YAC1B,aAAcA,MAAe;AAAA,YAC7B,WAAW9F,EAAKY,GAAQ;AAAA,YACxB,WAAWsE,EAAU;AAAA,YACrB,gBAAgBA,EAAU;AAAA,YAC1B,YAAY,CAAA;AAAA,YACZ,iBAAiB,CAAA;AAAA,UAC7B,GAEgBiB,IAAkBnG,EAAKY,GAAQ;AACrC,cAAI6E;AAGJ,mBAAS5F,IAAI,GAAGA,IAAIsG,GAAiBtG,KAAK;AACxC,YAAA4F,IAAczF,EAAKY,CAAM;AACzB,kBAAM8C,IAAI1D,EAAKY,IAAS,CAAC,KAAK,GACxB+C,IAAI3D,EAAKY,IAAS,CAAC,IAAI,IACvBwF,IAAMpG,EAAKY,IAAS,CAAC;AAC3B,YAAAV,EAAM,gBAAgB,KAAKuF,CAAW,GACtCvF,EAAM,WAAWuF,CAAW,IAAI;AAAA,cAC9B,GAAA/B;AAAA,cACA,GAAAC;AAAA,cACA,iBAAiByC;AAAA,YAC/B,GACYxF,KAAU;AAAA,UACZ;AACA,UAAA0E,EAAkBpF,CAAK,GACvB,KAAK,OAAO,KAAKA,CAAK;AACtB;AAAA,QACF;AAAA,QAEA,KAAK,OAAQ;AACX,gBAAMmG,IAAgBnB,EAAU;AAChC,mBAASrF,IAAI,GAAGA,IAAIwG,KAAgB;AAClC,kBAAMC,IAAmBtG,EAAKY,GAAQ,GAChCtB,IAAc,IAAI,WAAW,EAAE;AACrC,gBAAIiH,IAAgB;AACpB,qBAASzG,IAAI,GAAGA,IAAI,IAAIA,KAAKc;AAC3B,cAAAtB,EAAYQ,CAAC,IAAIE,EAAKY,CAAM,GAC5B2F,KAAiBjH,EAAYQ,CAAC;AAEhC,kBAAM0G,IAAgB,IAAI,WAAWD,CAAa;AAClD,qBAASzG,IAAI,GAAGA,IAAIyG,GAAezG,KAAKc;AACtC,cAAA4F,EAAc1G,CAAC,IAAIE,EAAKY,CAAM;AAEhC,YAAAf,KAAK,KAAK0G,GAELD,KAAoB,MAAO,IAC9B,KAAK,gBAAgBA,IAAmB,EAAE,IAAIjH;AAAA,cAC5CC;AAAA,cAAakH;AAAA,YAC7B,IAEc,KAAK,gBAAgBF,IAAmB,EAAE,IAAIjH;AAAA,cAC5CC;AAAA,cAAakH;AAAA,YAC7B;AAAA,UAEU;AACA;AAAA,QACF;AAAA,QAEA,KAAK;AACH,UAAAtB,KACA,KAAK,gBAAgBA,EAAU;AAC/B;AAAA,QAEF,KAAK,OAAQ;AACX,UAAAA;AACA,gBAAMuB,IAAiBzG,EAAKY,GAAQ,GAC9BT,IAAa,CAAA,GACbD,IAAQ,KAAK,OAAO,CAAC;AAC3B,mBAASL,IAAI,GAAGA,IAAI4G,GAAgB5G,KAAK;AACvC,kBAAM6B,IAAYxB,EAAM,WAAWF,EAAKY,GAAQ,CAAC,GAC3C8F,IAAY1G,EAAKY,GAAQ;AAC/B,YAAAc,EAAU,iBAAiB,KAAK,gBAAgBgF,KAAa,CAAC,GAC9DhF,EAAU,iBAAiB,KAAK,gBAAgBgF,IAAY,EAAE,GAC9DvG,EAAW,KAAKuB,CAAS;AAAA,UAC3B;AACA,gBAAMrB,IAAgBL,EAAKY,GAAQ,GAC7BN,IAAcN,EAAKY,GAAQ,GAC3B+F,IAA0B3G,EAAKY,GAAQ,GACvCgG,IAAY7G;AAAA,YAAWC;AAAA,YAAMY;AAAA,YACjCV;AAAA,YAAOC;AAAA,YAAY,KAAK;AAAA,YACxBE;AAAA,YAAeC;AAAA,YACfqG,KAA2B;AAAA,YAAGA,IAA0B;AAAA,UAAE;AAC5D,UAAA/F,KAAUgG;AACV;AAAA,QACF;AAAA,QAEA,KAAK;AACH,UAAI5G,EAAKY,CAAM,MAAM,OACnBA;AAEF;AAAA,QAEF;AACE,cAAIZ,EAAKY,IAAS,CAAC,MAAM,OACpBZ,EAAKY,IAAS,CAAC,KAAK,OAAQZ,EAAKY,IAAS,CAAC,KAAK,KAAM;AAGzD,YAAAA,KAAU;AACV;AAAA,UACF;AACA,gBAAM,IAAI,MAAM,uBAAuBkF,EAAW,SAAS,EAAE,CAAC,EAAE;AAAA,MAC1E;AACM,MAAAA,IAAaZ,EAAU;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,YAAY;AACV,UAAM,EAAE,QAAA2B,EAAM,IAAK;AACnB,QAAI,KAAK,OAAO,WAAW;AACzB,YAAM,IAAI,MAAM,wBAAwB;AACnC,IAAI,KAAK,OAAO,SAAS,KAC9B,QAAQ,KAAK,sCAAsC;AAIrD,aAAShH,IAAI,GAAGA,IAAI,KAAK,OAAO,QAAQA,KAAK;AAC3C,YAAMiH,IAAK,KAAK,OAAOjH,CAAC,EAAE;AAC1B,iBAAWC,KAAK,OAAO,KAAKgH,CAAE;AAC5B,QAAAA,EAAGhH,CAAC,EAAE,oBAAoB,KAAK,mBAAmBgH,EAAGhH,CAAC,EAAE,eAAe,GACvE,OAAOgH,EAAGhH,CAAC,EAAE;AAAA,IAEjB;AAEA,UAAMI,IAAQ2G,EAAO,CAAC,GAChB,EAAE,YAAA1G,GAAY,iBAAA4G,EAAe,IAAK7G,GAClC8G,IAAgB,CAAA,GAChBC,IAAQ/G,EAAM,gBACdgH,IAAShH,EAAM;AAErB,aAASL,IAAI,GAAGA,IAAIkH,EAAgB,QAAQlH,KAAK;AAC/C,YAAM6B,IAAYvB,EAAW4G,EAAgBlH,CAAC,CAAC;AAC/C,MAAAmH,EAAc,KAAK;AAAA,QACjB,OAAOpD,GAAmB1D,GAAOwB,CAAS;AAAA,QAC1C,QAAQA,EAAU,IAAIxB,EAAM;AAAA,QAC5B,QAAQwB,EAAU,IAAIxB,EAAM;AAAA,MACpC,CAAO;AAAA,IACH;AAEA,UAAMiH,IAAM,IAAI,WAAWF,IAAQC,IAASF,EAAc,MAAM;AAChE,QAAII,IAAK;AACT,aAASC,IAAI,GAAGA,IAAIH,GAAQ,EAAEG;AAC5B,eAASC,IAAI,GAAGA,IAAIL,GAAO,EAAEK;AAC3B,iBAASzH,IAAI,GAAGA,IAAImH,EAAc,QAAQ,EAAEnH,GAAG;AAC7C,gBAAM6B,IAAYsF,EAAcnH,CAAC;AACjC,UAAAsH,EAAIC,CAAE,IAAI1F,EAAU,MAAM,IAAI2F,IAAI3F,EAAU,MAAM,EAAE,IAAI4F,IAAI5F,EAAU,MAAM,GAC5E,EAAE0F;AAAA,QACJ;AAGJ,WAAOD;AAAA,EACT;AACF;AAEe,MAAMI,WAAoBC,GAAY;AAAA,EACnD,YAAYC,GAAe;AACzB,UAAK,GACL,KAAK,SAAS,IAAIxC,GAAgB,GAC9BwC,EAAc,cAChB,KAAK,OAAO,MAAMA,EAAc,UAAU;AAAA,EAE9C;AAAA,EAEA,YAAYC,GAAQ;AAClB,gBAAK,OAAO,YAAW,GACvB,KAAK,OAAO,MAAM,IAAI,WAAWA,CAAM,CAAC,GACjC,KAAK,OAAO,UAAS,EAAG;AAAA,EACjC;AACF;","x_google_ignoreList":[0]}
|
|
@@ -6,6 +6,7 @@ export declare const DeckLayersKey: InjectionKey<{
|
|
|
6
6
|
addLayer: (layer: unknown) => void;
|
|
7
7
|
removeLayer: (layerId: string) => void;
|
|
8
8
|
updateLayer: (layerId: string, layer: unknown) => void;
|
|
9
|
+
getLayers: () => unknown[];
|
|
9
10
|
}>;
|
|
10
11
|
interface UseDeckOverlayOptions {
|
|
11
12
|
interleaved?: boolean;
|
|
@@ -26,5 +27,6 @@ export declare function useDeckLayers(): {
|
|
|
26
27
|
addLayer: (layer: unknown) => void;
|
|
27
28
|
removeLayer: (layerId: string) => void;
|
|
28
29
|
updateLayer: (layerId: string, layer: unknown) => void;
|
|
30
|
+
getLayers: () => unknown[];
|
|
29
31
|
};
|
|
30
32
|
export {};
|
|
@@ -31,6 +31,8 @@ export { VLayerDeckglWMS } from './wms';
|
|
|
31
31
|
export { VLayerDeckglSimpleMesh } from './simple-mesh';
|
|
32
32
|
export { VLayerDeckglScenegraph } from './scenegraph';
|
|
33
33
|
export { VLayerDeckglCOG } from './cog';
|
|
34
|
+
export { VLayerDeckglMosaic } from './mosaic';
|
|
35
|
+
export type { MosaicSource, MosaicRenderMode, RenderModule } from './mosaic';
|
|
34
36
|
export { VLayerDeckglWindParticle, WindParticleLayer, generateWindTexture, createWindDataFromOpenWeatherMap, } from './wind-particle';
|
|
35
37
|
export type { WindDataPoint, WindTextureResult, GenerateWindTextureOptions, ColorStop, } from './wind-particle';
|
|
36
38
|
export { VLayerDeckgl } from './generic';
|