maplibre-gl-layers 0.12.0 → 0.14.0
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 +3 -3
- package/dist/SpriteLayer.d.ts +3 -5
- package/dist/atlas.d.ts +64 -0
- package/dist/calculationHost.d.ts +2 -2
- package/dist/config.d.ts +10 -2
- package/dist/const.d.ts +2 -2
- package/dist/default.d.ts +2 -2
- package/dist/degreeInterpolation.d.ts +2 -2
- package/dist/distanceInterpolation.d.ts +2 -2
- package/dist/easing.d.ts +2 -2
- package/dist/image.d.ts +2 -2
- package/dist/index.cjs +2346 -1346
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.mjs +2346 -1346
- package/dist/index.mjs.map +1 -1
- package/dist/internalTypes.d.ts +7 -2
- package/dist/interpolation.d.ts +2 -2
- package/dist/interpolationChannels.d.ts +2 -2
- package/dist/looseQuadTree.d.ts +2 -2
- package/dist/mapLibreProjectionHost.d.ts +2 -2
- package/dist/math.d.ts +2 -2
- package/dist/projectionHost.d.ts +2 -2
- package/dist/rotationInterpolation.d.ts +2 -2
- package/dist/runtime.d.ts +37 -0
- package/dist/shader.d.ts +21 -3
- package/dist/types.d.ts +21 -6
- package/dist/utils.d.ts +2 -2
- package/dist/wasm/config.json.d.ts +16 -0
- package/dist/wasm/offloads-nosimd.wasm +0 -0
- package/dist/wasm/offloads-simd-mt.js +2 -0
- package/dist/wasm/offloads-simd-mt.wasm +0 -0
- package/dist/wasm/offloads-simd.wasm +0 -0
- package/dist/wasmCalculationHost.d.ts +2 -2
- package/dist/wasmHost.d.ts +11 -5
- package/dist/wasmProjectionHost.d.ts +2 -2
- package/package.json +7 -7
package/dist/index.mjs
CHANGED
|
@@ -3,12 +3,12 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
|
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
/*!
|
|
5
5
|
* name: maplibre-gl-layers
|
|
6
|
-
* version: 0.
|
|
6
|
+
* version: 0.14.0
|
|
7
7
|
* description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
|
|
8
8
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
9
9
|
* license: MIT
|
|
10
10
|
* repository.url: https://github.com/kekyo/maplibre-gl-layers.git
|
|
11
|
-
* git.commit.hash:
|
|
11
|
+
* git.commit.hash: a531802b05777e1f54a8828a247254293df1415d
|
|
12
12
|
*/
|
|
13
13
|
const UNLIMITED_SPRITE_SCALING_OPTIONS = {
|
|
14
14
|
metersPerPixel: 1,
|
|
@@ -304,6 +304,774 @@ const loadImageBitmap = async (url, options) => {
|
|
|
304
304
|
const shouldTreatAsSvg = ((_a = options == null ? void 0 : options.svg) == null ? void 0 : _a.assumeSvg) === true || isSvgMimeType(mimeType);
|
|
305
305
|
return await internalReadImageBitmap(blob, shouldTreatAsSvg, options);
|
|
306
306
|
};
|
|
307
|
+
/*!
|
|
308
|
+
* name: async-primitives
|
|
309
|
+
* version: 1.5.0
|
|
310
|
+
* description: A collection of primitive functions for asynchronous operations
|
|
311
|
+
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
312
|
+
* license: MIT
|
|
313
|
+
* repository.url: https://github.com/kekyo/async-primitives.git
|
|
314
|
+
* git.commit.hash: cd35465b7e9b9945049186e7eaeecc0bfba65766
|
|
315
|
+
*/
|
|
316
|
+
const __NOOP_HANDLER = () => {
|
|
317
|
+
};
|
|
318
|
+
const __NOOP_RELEASABLE = {
|
|
319
|
+
release: __NOOP_HANDLER,
|
|
320
|
+
[Symbol.dispose]: __NOOP_HANDLER
|
|
321
|
+
};
|
|
322
|
+
const toAbortError = (reason) => {
|
|
323
|
+
if (reason instanceof Error) {
|
|
324
|
+
return reason;
|
|
325
|
+
}
|
|
326
|
+
if (typeof reason === "string") {
|
|
327
|
+
return new Error(reason);
|
|
328
|
+
}
|
|
329
|
+
return new Error("Operation aborted");
|
|
330
|
+
};
|
|
331
|
+
const onAbort = (signal, callback) => {
|
|
332
|
+
if (!signal) {
|
|
333
|
+
return __NOOP_RELEASABLE;
|
|
334
|
+
}
|
|
335
|
+
if (signal.aborted) {
|
|
336
|
+
try {
|
|
337
|
+
callback(toAbortError(signal.reason));
|
|
338
|
+
} catch (error) {
|
|
339
|
+
console.warn("AbortHook callback error: ", error);
|
|
340
|
+
}
|
|
341
|
+
return __NOOP_RELEASABLE;
|
|
342
|
+
}
|
|
343
|
+
let abortHandler;
|
|
344
|
+
abortHandler = () => {
|
|
345
|
+
if (abortHandler) {
|
|
346
|
+
const reason = signal.reason;
|
|
347
|
+
signal.removeEventListener("abort", abortHandler);
|
|
348
|
+
abortHandler = void 0;
|
|
349
|
+
try {
|
|
350
|
+
callback(toAbortError(reason));
|
|
351
|
+
} catch (error) {
|
|
352
|
+
console.warn("AbortHook callback error: ", error);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
const release = () => {
|
|
357
|
+
if (abortHandler) {
|
|
358
|
+
signal.removeEventListener("abort", abortHandler);
|
|
359
|
+
abortHandler = void 0;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
signal.addEventListener("abort", abortHandler, { once: true });
|
|
363
|
+
const handle = {
|
|
364
|
+
release,
|
|
365
|
+
[Symbol.dispose]: release
|
|
366
|
+
};
|
|
367
|
+
return handle;
|
|
368
|
+
};
|
|
369
|
+
const defer = (fn) => {
|
|
370
|
+
if (typeof setImmediate === "function") {
|
|
371
|
+
setImmediate(fn);
|
|
372
|
+
} else {
|
|
373
|
+
setTimeout(fn, 0);
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
const ABORTED_ERROR$2 = () => new Error("Lock acquisition was aborted");
|
|
377
|
+
const createLockHandle = (releaseCallback) => {
|
|
378
|
+
let isActive = true;
|
|
379
|
+
const release = () => {
|
|
380
|
+
if (!isActive) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
isActive = false;
|
|
384
|
+
releaseCallback();
|
|
385
|
+
};
|
|
386
|
+
return {
|
|
387
|
+
get isActive() {
|
|
388
|
+
return isActive;
|
|
389
|
+
},
|
|
390
|
+
release,
|
|
391
|
+
[Symbol.dispose]: release
|
|
392
|
+
};
|
|
393
|
+
};
|
|
394
|
+
const createMutex = (maxConsecutiveCalls = 20) => {
|
|
395
|
+
let isLocked = false;
|
|
396
|
+
const queue = [];
|
|
397
|
+
let count = 0;
|
|
398
|
+
const processQueue = () => {
|
|
399
|
+
var _a;
|
|
400
|
+
if (isLocked || queue.length === 0) {
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
const item = queue.shift();
|
|
404
|
+
if ((_a = item.signal) == null ? void 0 : _a.aborted) {
|
|
405
|
+
item.reject(ABORTED_ERROR$2());
|
|
406
|
+
scheduleNextProcess();
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
isLocked = true;
|
|
410
|
+
const lockHandle = createLockHandle(releaseLock);
|
|
411
|
+
item.resolve(lockHandle);
|
|
412
|
+
};
|
|
413
|
+
const scheduleNextProcess = () => {
|
|
414
|
+
count++;
|
|
415
|
+
if (count >= maxConsecutiveCalls) {
|
|
416
|
+
count = 0;
|
|
417
|
+
defer(processQueue);
|
|
418
|
+
} else {
|
|
419
|
+
processQueue();
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
const releaseLock = () => {
|
|
423
|
+
if (!isLocked) {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
isLocked = false;
|
|
427
|
+
scheduleNextProcess();
|
|
428
|
+
};
|
|
429
|
+
const removeFromQueue = (item) => {
|
|
430
|
+
const index = queue.indexOf(item);
|
|
431
|
+
if (index !== -1) {
|
|
432
|
+
queue.splice(index, 1);
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
const lock = async (signal) => {
|
|
436
|
+
if (signal) {
|
|
437
|
+
if (signal.aborted) {
|
|
438
|
+
throw ABORTED_ERROR$2();
|
|
439
|
+
}
|
|
440
|
+
return new Promise((resolve, reject) => {
|
|
441
|
+
const queueItem = {
|
|
442
|
+
resolve: void 0,
|
|
443
|
+
reject: void 0,
|
|
444
|
+
signal
|
|
445
|
+
};
|
|
446
|
+
const abortHandle = onAbort(signal, () => {
|
|
447
|
+
removeFromQueue(queueItem);
|
|
448
|
+
reject(ABORTED_ERROR$2());
|
|
449
|
+
});
|
|
450
|
+
queueItem.resolve = (handle) => {
|
|
451
|
+
abortHandle.release();
|
|
452
|
+
resolve(handle);
|
|
453
|
+
};
|
|
454
|
+
queueItem.reject = (error) => {
|
|
455
|
+
abortHandle.release();
|
|
456
|
+
reject(error);
|
|
457
|
+
};
|
|
458
|
+
queue.push(queueItem);
|
|
459
|
+
processQueue();
|
|
460
|
+
});
|
|
461
|
+
} else {
|
|
462
|
+
return new Promise((resolve, reject) => {
|
|
463
|
+
queue.push({
|
|
464
|
+
resolve,
|
|
465
|
+
reject
|
|
466
|
+
});
|
|
467
|
+
processQueue();
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
const result = {
|
|
472
|
+
lock,
|
|
473
|
+
waiter: {
|
|
474
|
+
wait: lock
|
|
475
|
+
},
|
|
476
|
+
get isLocked() {
|
|
477
|
+
return isLocked;
|
|
478
|
+
},
|
|
479
|
+
get pendingCount() {
|
|
480
|
+
return queue.length;
|
|
481
|
+
}
|
|
482
|
+
};
|
|
483
|
+
return result;
|
|
484
|
+
};
|
|
485
|
+
const createDeferred = (signal) => {
|
|
486
|
+
let resolve;
|
|
487
|
+
let reject;
|
|
488
|
+
const promise = new Promise((res, rej) => {
|
|
489
|
+
resolve = res;
|
|
490
|
+
reject = rej;
|
|
491
|
+
});
|
|
492
|
+
const disposer = onAbort(signal, () => {
|
|
493
|
+
const _reject = reject;
|
|
494
|
+
if (_reject) {
|
|
495
|
+
resolve = void 0;
|
|
496
|
+
reject = void 0;
|
|
497
|
+
_reject(new Error("Deferred aborted"));
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
return {
|
|
501
|
+
// The promise that resolves to the result
|
|
502
|
+
promise,
|
|
503
|
+
// Resolve the promise with a result
|
|
504
|
+
resolve: (value) => {
|
|
505
|
+
const _resolve = resolve;
|
|
506
|
+
if (_resolve) {
|
|
507
|
+
resolve = void 0;
|
|
508
|
+
reject = void 0;
|
|
509
|
+
disposer.release();
|
|
510
|
+
_resolve(value);
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
// Reject the promise with an error
|
|
514
|
+
reject: (error) => {
|
|
515
|
+
const _reject = reject;
|
|
516
|
+
if (_reject) {
|
|
517
|
+
resolve = void 0;
|
|
518
|
+
reject = void 0;
|
|
519
|
+
disposer.release();
|
|
520
|
+
_reject(error);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
};
|
|
524
|
+
};
|
|
525
|
+
const __vite_glob_0_0 = "data:application/json;base64,ewogICJwdGhyZWFkUG9vbFNpemUiOiA0Cn0K";
|
|
526
|
+
const __vite_glob_0_1 = "data:application/wasm;base64,AGFzbQEAAAABtAEZYAF/AX9gAX8AYAR/f39/AGABfAF8YAJ/fwF/YAV/f39/fwBgBn9/f39/fwBgAABgBXx8fH9/AX9gA39/fwF/YAZ8fHx/f38Bf2AMfHx8f39/f39/fHx/AX9gA39/fwBgA3x8fwF8YAR8fHx/AX9gBnx8fHx/fwF/YAd8fHx/fH9/AX9gAXwAYAl/f39/f398f38AYAJ/fwBgAnx8AXxgAnx/AX9gAXwBf2ACfH8BfGAAAX8CqwEFFndhc2lfc25hcHNob3RfcHJldmlldzEOYXJnc19zaXplc19nZXQABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGFyZ3NfZ2V0AAQDZW52EF9fbWFpbl9hcmdjX2FyZ3YABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCXByb2NfZXhpdAABA2Vudh9lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoAAEDQD8HDg8IEBEICAoKCAsLBAkHEgITCQIFDAQHAxQVDQMDAxYXAw0DAAEAAAAAAQEJCQwCAgIFBQYGAAAAAAEAARgEBQFwARkZBQcBAYICgIACBggBfwFBwNsECwe6AhAGbWVtb3J5AgAKZnJvbUxuZ0xhdAAGB3Byb2plY3QABwl1bnByb2plY3QACBljYWxjdWxhdGVQZXJzcGVjdGl2ZVJhdGlvAAkZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAEXNldFRocmVhZFBvb2xTaXplAAoYcHJvamVjdExuZ0xhdFRvQ2xpcFNwYWNlAAsaY2FsY3VsYXRlQmlsbGJvYXJkRGVwdGhLZXkADRhjYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXkAEBdwcmVwYXJlRHJhd1Nwcml0ZUltYWdlcwASBl9zdGFydAAdBm1hbGxvYwAqBGZyZWUAKxlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAEIcZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudABDCR4BAEEBCxgvPwUvMTAwMzs5NTE6ODYxPTE+MTxAQUAMAQgKhNQDPwIAC9sCAQF+IAMEQCADIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBs5AwAgA0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIEQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgBEKAgICAgICA+P8AVBsiAEQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAaMgAUQAAAAAAAAAAGEbOQMQIAMgAEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDCAsgA0EARwvfBAMBfgJ8AX8CQCAERSAFRXINACADvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEKwMAIQcgAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiBkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gBkKAgICAgICA+P8AVBsQKRAkIQggBCsDYCAEKwNAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIgGiIAcgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyADoiIAoiADIAhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgIgBCsDIKKgoKAiA71C////////////AINC//////////f/AFYNACAEKwNoIAQrA0ggAaIgBCsDCCAAoiACIAQrAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQAgBCsDeCAEKwNYIAGiIAQrAxggAKIgAiAEKwM4oqCgoCIAvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAFIAcgAKM5AwggBSADIACjOQMAQQEhCQsgCQuuCAMMfAF+AX8CQCADRSAERXINACACvSIRQgF9Qv7///////8HViARQgBTIBFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxAjEB5E+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRILIBILowQCAX4BfwJAIAVFIAZFcg0AAnwgAwRAIAMrAxAhAiADKwMIIQEgAysDAAwBC0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIHQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgB0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEbIQIgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyEBIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBsLIQAgBSsDeCAFKwNYIAKiIAUrAxggAKIgASAFKwM4oqCgoCIAvSIHQgF9Qv7///////8HViAHQgBTIAdC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEIACjIgC9IgdCAX1C/v///////wdWIAdCAFMgB0L///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAYgADkDAEEBIQgLIAgLAgALHQEBfyADRSAERXIEf0EABSAAIAEgAiADIAQQDAsL/AQDBXwBfgF/IAFEJLiRskVDVUCkRCS4kbJFQ1VAIAG9Qv///////////wCDIgpCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAKQoCAgICAgID4/wBUGyIBRDmdUqJG35E/ohAiIQUgAysDWCEHIAMrAxghCCABRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkIQYCQCADKwNgIAMrA0BEAAAAAAAAAAAgAkQAAAAAAAAAACACvUL///////////8Ag0KAgICAgICA+P8AVBsgBUSTEHxF+BuDQaIiAaMgAUQAAAAAAAAAAGEbIgGiIAMrAwAgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyIAoiAGRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIgIgAysDIKKgoKAiBb1C////////////AINC//////////f/AFYNACADKwNoIAMrA0ggAaIgAysDCCAAoiACIAMrAyiioKCgIga9Qv///////////wCDQoCAgICAgID4/wBaDQAgAysDcCADKwNQIAGiIAMrAxAgAKIgAiADKwMwoqCgoCIJvUL///////////8Ag0KAgICAgICA+P8AWg0AIAMrA3ggByABoiAIIACiIAIgAysDOKKgoKAiAL1C////////////AINC//////////f/AFYgAESN7bWg98awPmVyDQAgBCAAOQMYIAQgCTkDECAEIAY5AwggBCAFOQMAQQEhCwsgCwsjAQF/IAVFIANFIARFcnIEf0EABSAAIAEgAiADIAQgBRAOCwvpBQMCfwF+A3wjAEEQayIGJAACQCACvSIIQgF9Qv7///////8HViAIQgBTIAhC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAGQgA3AwggBkIANwMAIAAgASACIAMgBhAPRQ0AIAYrAwgiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AIMiCEKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAhCgICAgICAgPj/AFQbIgBEOZ1SokbfkT+iECIhAiAEKwNYIQogBisDACEBIAQrAxghCyAARCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkIQkgBCsDYCAEKwNARAAAAAAAAAAARAAAAAAAAAAAIAJEkxB8Rfgbg0GiIgCjIABEAAAAAAAAAABhGyIAoiAEKwMAIAFEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyABvUL///////////8Ag0KAgICAgICA+P8AVBsiAaIgBCsDICAJRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIgKioKCgvUL///////////8Ag0L/////////9/8AVg0AIAQrA2ggBCsDSCAAoiAEKwMIIAGiIAQrAyggAqKgoKC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCsDcCAEKwNQIACiIAQrAxAgAaIgBCsDMCACoqCgoCIJvUL///////////8Ag0KAgICAgICA+P8AWg0AIAQrA3ggCiAAoiALIAGiIAIgBCsDOKKgoKAiAL1C////////////AINCgICAgICAgPj/AFoNACAJIABEAAAAAAAA8D8gAEQAAAAAAAAAAGIboyIAvUL///////////8Ag0L/////////9/8AVg0AIAUgAJo5AwBBASEHCyAGQRBqJAAgBwvkBwIMfAF/AkAgAysDeCIHIAMrA1giCEQAAAAAAAAAAKIgAysDGCAARAAAAAAAAAAAIAC9Qv///////////wCDQoCAgICAgID4/wBUGyIFoiABRAAAAAAAAAAAIAG9Qv///////////wCDQoCAgICAgID4/wBUGyIGIAMrAziioCIBoKAiAL1C////////////AINC//////////f/AFYNACAHIAggAaCgIgG9Qv///////////wCDQv/////////3/wBWIABEAAAAAAAAAABhciABRAAAAAAAAAAAYXINACADKwNgIgkgAysDQCIKRAAAAAAAAAAAoiADKwMAIAWiIAYgAysDIKKgIgugoCAAoyIHvUL///////////8Ag0L/////////9/8AVg0AIAMrA2giDCADKwNIIg1EAAAAAAAAAACiIAMrAwggBaIgBiADKwMooqAiDqCgIACjIgi9Qv///////////wCDQoCAgICAgID4/wBaDQAgAysDcCIPIAMrA1AiEEQAAAAAAAAAAKIgAysDECAFoiAGIAMrAzCioCIGoKAgAKMiBb1C////////////AINCgICAgICAgPj/AFoNACAJIAogC6CgIAGjIgm9Qv///////////wCDQoCAgICAgID4/wBaDQAgDCANIA6goCABoyIKvUL///////////8Ag0KAgICAgICA+P8AWg0AIA8gECAGoKAgAaMiAb1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAAAAACEAIAEgBaEiAUQAAAAAAAAAAGIEQEQAAAAAAAAAACAFoSABoyEACyAJIAehIACiIAegIgG9Qv///////////wCDQv/////////3/wBWDQAgCiAIoSAAoiAIoCIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAEgAqMiAb1C////////////AINC//////////f/AFYNACAAIAKjIgC9Qv///////////wCDQoCAgICAgID4/wBaDQBEAAAAAACAZkAgAEQAAAAAAIB2QKKhRBgtRFT7IQlAokQAAAAAAIBmQKMQIxAeRPjBYxrcpVxAokQAAAAAAIBWwKAiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AINCgICAgICAgPj/AFgbIAFEAAAAAACAdkCiRAAAAAAAgGbAoCIBvUL///////////8Ag0L/////////9/8AVg0ARCS4kbJFQ1XApSIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAQgADkDCCAEIAE5AwBBASERCyARCzYBAX8gA0UgBUVyIAdFIAtFcnIEf0EABSAAIAEgAiADIAQgBSAGIAcgCEEARyAJIAogCxARCwucBwMIfAJ/AX4CQCAEQQBMIAZBAExyDQAgAkQAAAAAAAAAACACvUL///////////8Ag0KAgICAgICA+P8AVBshECABRDmdUqJG35E/ohAiIgJEje21oPfGsD6lRI3ttaD3xrA+IAK9Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaIhEUQAAAAAAADw/yECA0AgBCAFIBVBAnRqKAIAIhRLBEAgASADIBRBBHRqIhQrAwhEAAAAQKZUWEGjRPjBYxrcpUxAoqAiDEQkuJGyRUNVQKREJLiRskVDVUAgDL1C////////////AIMiFkKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIBZCgICAgICAgPj/AFQbIgxEOZ1SokbfkT+iECIhDSAHKwNYIRIgFCsDACEOIAcrAxghEyAMRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkIQ9BACEUIAcrA2AgBysDQEQAAAAAAAAAACAQIA1EkxB8Rfgbg0GiIgyjIAxEAAAAAAAAAABhGyIMoiAHKwMAIAAgDiARo0T4wWMa3KVMQKKgIg1EAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyANvUL///////////8Ag0KAgICAgICA+P8AVBsiDaIgBysDICAPRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIg6ioKCgvUL///////////8Ag0L/////////9/8AVg0CIAcrA2ggBysDSCAMoiAHKwMIIA2iIAcrAyggDqKgoKC9Qv///////////wCDQoCAgICAgID4/wBaDQIgBysDcCAHKwNQIAyiIAcrAxAgDaIgBysDMCAOoqCgoCIPvUL///////////8Ag0KAgICAgICA+P8AWg0CIAcrA3ggEiAMoiATIA2iIAcrAzggDqKgoKAiDL1C////////////AINC//////////f/AFYgDESN7bWg98awPmVyDQIgCAR8IAogDKEiDSAJIAyiIA+gIg4gDSAOZBsFIA8LIAyjIgy9Qv///////////wCDQv/////////3/wBWDQIgDJoiDCACIAIgDGMbIQILIBVBAWoiFSAGRw0AC0EAIRQgAr1C////////////AINC//////////f/AFYNACALIAI5AwBBASEUCyAUC4isAQMbf1R8A34jAEGgBGsiAyQAAkAgAEUgAUVyDQAgAUIANwMgIAFCgICAgICAgIjAADcDGCABQoCAgICAgIChwAA3AxAgAUKAgICAgICYsMAANwMIIAFCADcDACABQgA3AyggAUIANwMwIAArAwAiHb0ickL///////////8AgyJxQgF9Qv////////8HVCByQgBTIgJxIHFCgICAgICAgPj/AFFyIHFCgICAgICAgPj/AFZyIHFCgICAgICAgAh9QoCAgICAgIDw/wBUIAJxcg0AIB1EAAAAAAAA4D+gnCIdRAAAAAAAAPB/ZCAdRAAAAAAAAPB/Y3JFDQAgHfwDIgJBD0kgHSACuGJyDQAgACsDCCIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiB3EgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgB3FyDQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNACAd/AMiB0EYRyAdIAe4YnINACAAKwMQIh29InJC////////////AIMicUIBfUL/////////B1QgckIAUyIHcSBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciBxQoCAgICAgIAIfUKAgICAgICA8P8AVCAHcXINACAdRAAAAAAAAOA/oJwiHUQAAAAAAADwf2QgHUQAAAAAAADwf2NyRQ0AIB0gHfwDIge4YiACIAdJciACIAdrQTBJcg0AIAArAxgiHb0ickL///////////8AgyJxQgF9Qv////////8HVCByQgBTIgZxIHFCgICAgICAgPj/AFFyIHFCgICAgICAgPj/AFZyIHFCgICAgICAgAh9QoCAgICAgIDw/wBUIAZxcg0AIB1EAAAAAAAA4D+gnCIdRAAAAAAAAPB/ZCAdRAAAAAAAAPB/Y3JFDQAgHSAd/AMiCLhiDQAgACsDICIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiBnEgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgBnFyDQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNACAdIB38AyINuGIgAiANSXIgAiANayAIQQlsSXINACAAKwMoIh29InJC////////////AIMicUIBfUL/////////B1QgckIAUyIGcSBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciBxQoCAgICAgIAIfUKAgICAgICA8P8AVCAGcXINACAdRAAAAAAAAOA/oJwiHUQAAAAAAADwf2QgHUQAAAAAAADwf2NyRQ0AIB0gHfwDIgq4Yg0AIAArAzAiHb0ickL///////////8AgyJxQgF9Qv////////8HVCByQgBTIgZxIHFCgICAgICAgPj/AFFyIHFCgICAgICAgPj/AFZyIHFCgICAgICAgAh9QoCAgICAgIDw/wBUIAZxcg0AIB1EAAAAAAAA4D+gnCIdRAAAAAAAAPB/ZCAdRAAAAAAAAPB/Y3JFDQAgHSAd/AMiBrhiIAIgBklyIAIgBmsgCkEGbElyDQAgACsDOCIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiBnEgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgBnFyDQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNACAdIB38AyITuGINACAAKwNAIh29InJC////////////AIMicUIBfUL/////////B1QgckIAUyIGcSBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciBxQoCAgICAgIAIfUKAgICAgICA8P8AVCAGcXINACAdRAAAAAAAAOA/oJwiHUQAAAAAAADwf2QgHUQAAAAAAADwf2NyRQ0AIB0gHfwDIgq4YiACIApJciACIAprIBNBG2xJcg0AIANCADcD6AIgA0KAgICAgICA+D83A+ACIANCADcD2AIgA0IANwPwAiADQgA3A/gCIANCADcDiAMgA0KAgICAgICA+D83A4ADIANCADcDkAMgA0IANwOYAyADQgA3A6ADIANCADcDyAMgA0KAgICAgICA+D83A8ADIANCgICAgICAgPg/NwO4AyADQoCAgICAgID4PzcDsAMgA0KAgICAgICA+D83A6gDIANCADcD0AMgA0KAgICAgICA+D83A9gDIANCgICAgICAgPg/NwPgAyADQgA3A/ADIANCADcD6AMgA0EAOgCYBCADQgA3A5AEIANCgICAgICAgPg/NwOIBCADQoCAgICAgID4PzcDgAQgA0LI3vLVqf61vT43A/gDIAMgACsDeCIdOQPYAiADAnwgHb0icUI0iKdB/w9xIgJByQdrQT9PBEAgHUQAAAAAAADwP6AiISACQckHSQ0BGgJAIAJBiQhJDQBEAAAAAAAAAAAgcUKAgICAgICAeFENAhogISACQf8PTw0CGiBxQgBZBEAjAEEQayICRAAAAAAAAABwOQMIIAIrAwhEAAAAAAAAAHCiDAMLIHFCgICAgICAs8hAVA0AIwBBEGsiAkQAAAAAAAAAEDkDCCACKwMIRAAAAAAAAAAQogwCCyACQQAgcUIBhkKAgICAgICAjYF/WBshAgsgHSAdQYAiKwMAIh2gIh4gHaGhIh0gHaIiISAhoiAdQagiKwMAokGgIisDAKCiICEgHUGYIisDAKJBkCIrAwCgoiAdQYgiKwMAoiAevSJyp0EEdEHwD3EiBCsDsCKgoKAhHSAEKQO4IiByQi2GfCFxIAJFBEACfCByQoCAgIAIg1AEQCBxQoCAgICAgIAIfb8iISAdoiAhoCIdIB2gDAELIHFCgICAgICAgPA/fL8iISAdoiIeICGgIh1EAAAAAAAA8D9jBHwjAEEQayICQoCAgICAgIAINwMIIAIgAisDCEQAAAAAAAAQAKI5AwhEAAAAAAAAAAAgHUQAAAAAAADwP6AiIiAeICEgHaGgIB1EAAAAAAAA8D8gIqGgoKBEAAAAAAAA8L+gIh0gHUQAAAAAAAAAAGEbBSAdC0QAAAAAAAAQAKILDAELIHG/IiEgHaIgIaALOQPgAiADIAArA4ABOQPoAiADIAArA4gBOQPwAiADIAArA5ABOQP4AiADIAArA5gBOQOAAyADIAArA6ABOQOIAyADIAArA6gBOQOQAyADIAArA7ABOQOYAyADIAArA7gBOQOgAyADIAArA8ABOQOoAyADIAArA8gBOQOwAyADIAArA9ABOQO4AyADIAArA9gBOQPAAyADIAArA+ABOQPIAyADIAArA+gBOQPQAyADIAArA/ABOQPYAyADIAArA/gBOQPgAyADIAArA4ACOQPoAyADIAArA4gCOQPwAyADIAArA5ACOQP4AyADIAArA5gCOQOABCADIAArA6ACOQOIBCADIAArA6gCOQOQBCADIAArA7ACRAAAAAAAAAAAYjoAmAQgAyADKwPoAiIhOQO4AiADIAMrA/gCOQPAAiADIAAgB0EDdGoiAjYCyAIgAyACQYACajYC0AIgAyACQYABaiIHNgLMAgJAIAMrA5gDRAAAAAAAAAAAZEUNACADKwOgA0QAAAAAAAAAAGRFDQAgAysDqAMiHUQAAAAAAAAAAGENACAdvUL///////////8Ag0KAgICAgICA+P8AVCEFCyADIAU6ALcCIAMgACsDSPwCIgtBAXE6ALYCIAMgC0EBdkEBcToAtQIgAy0AmAQCfyADQagCaiIGQQA2AgggBkIANwIAAkAgCARAIAhB5PG4HE8NASAGIAhByABsIgQQLSICNgIAIAYgAiAEaiIQNgIIIARByABrIglByABuIgRBA3FBA0cEQCAEQQFqQQNxIQ5BACEEA0AgAkIANwMYIAJCADcDECACQgA3AwggAkIANwMAIAJCADcDKCACQoCAgICAgID4v383AyAgAkIANwMwIAJCgICAgICAgPg/NwNAIAJCgICAgICAgPg/NwM4IAJByABqIQIgBEEBaiIEIA5HDQALCyAJQdgBTwRAA0AgAkIANwMYIAJCADcDECACQgA3AwggAkIANwMAIAJCADcDKCACQoCAgICAgID4v383AyAgAkIANwMwIAJCADcDSCACQoCAgICAgID4PzcDQCACQoCAgICAgID4PzcDOCACQgA3A1AgAkIANwNYIAJCADcDYCACQgA3A3AgAkKAgICAgICA+L9/NwNoIAJCADcDeCACQoCAgICAgID4PzcDgAEgAkKAgICAgICA+D83A4gBIAJCADcDqAEgAkIANwOgASACQgA3A5gBIAJCADcDkAEgAkKAgICAgICA+L9/NwOwASACQgA3A7gBIAJCADcDwAEgAkKAgICAgICA+D83A9ABIAJCgICAgICAgPg/NwPIASACQgA3A9gBIAJCADcD4AEgAkIANwPoASACQgA3A/ABIAJCgICAgICAgPi/fzcD+AEgAkIANwOAAiACQgA3A4gCIAJCgICAgICAgPg/NwOQAiACQoCAgICAgID4PzcDmAIgAkGgAmoiAiAQRw0ACwsgBiAQNgIECyAGDAELEBQACyEQIAgEQCAAIA1BA3RqIQ0gECgCACEJQQAhBgNAIA0gBkHIAGwiAmoiBCsDKCEdIAQrAzAhHiAEKwM4ISIgBCsDQCEfIAQrAxghICAEKwMIISQgBCsDECEjIAIgCWoiAiAEKwMgOQMgIAIgIzkDECACICQ5AwggAiAGNgIAIAIgIEQAAAAAAAAAAGI6ABggAiAfRAAAAAAAAPA/IB+9Qv///////////wCDQoCAgICAgID4/wBUGzkDQCACICJEAAAAAAAA8D8gIr1C////////////AINCgICAgICAgPj/AFQbOQM4IAIgHkQAAAAAAAAAACAevUL///////////8Ag0KAgICAgICA+P8AVBs5AzAgAiAdRAAAAAAAAAAAIB29Qv///////////wCDQoCAgICAgID4/wBUGzkDKCAGQQFqIgYgCEcNAAsLAn8gA0GcAmoiBkEANgIIIAZCADcCAAJAIBMEQCATQbKn7AlPDQEgBiATQdABbCIEEC0iAjYCACAGIAIgBGoiCDYCCCAEQdABayINQdABbiIEQQNxQQNHBEAgBEEBakEDcSEJQQAhBANAIAJBAEHQAfwLACACQgA3A4gBIAJCgICAgICAgPg/NwNwIAJCADcDkAEgAkIANwOgASACQoCAgICAgID4PzcDmAEgAkIANwOoASACQQA6ALABIAJCADcDuAEgAkIANwPAASACQQA6AMgBIAJB0AFqIQIgBEEBaiIEIAlHDQALCyANQfAETwRAA0AgAkEAQdAB/AsAIAJCADcDiAEgAkKAgICAgICA+D83A3AgAkIANwOQASACQgA3A6ABIAJCgICAgICAgPg/NwOYASACQgA3A6gBIAJBADoAsAEgAkIANwO4ASACQgA3A8ABIAJBADoAyAEgAkHQAWpBAEHQAfwLACACQgA3A9gCIAJCgICAgICAgPg/NwPAAiACQgA3A+ACIAJCADcD8AIgAkKAgICAgICA+D83A+gCIAJCADcD+AIgAkEAOgCAAyACQgA3A4gDIAJCADcDkAMgAkEAOgCYAyACQaADakEAQdAB/AsAIAJCADcDqAQgAkKAgICAgICA+D83A5AEIAJCADcDsAQgAkIANwPABCACQoCAgICAgID4PzcDuAQgAkIANwPIBCACQQA6ANAEIAJCADcD2AQgAkIANwPgBCACQQA6AOgEIAJB8ARqQQBB0AH8CwAgAkIANwP4BSACQoCAgICAgID4PzcD4AUgAkIANwOABiACQgA3A5AGIAJCgICAgICAgPg/NwOIBiACQgA3A5gGIAJBADoAoAYgAkIANwOoBiACQgA3A7AGIAJBADoAuAYgAkHABmoiAiAIRw0ACwsgBiAINgIECyAGDAELEBQACyENIBMEQCAAIApBA3RqIQggECgCBCAQKAIAIgprQcgAbSEJIA0oAgAhDkEAIQQDQCADQQA6AIgBIANCADcDgAEgA0IANwN4IANCADcDcCADQQA6AKABIANCADcDmAEgA0IANwOQASADQgA3A7ABIANCADcDqAEgA0EAOgDIASADQgA3A8ABIANCgICAgICAgPg/NwO4ASADQgA3A9gBIANCADcD0AEgA0KAgICAgICA+D83A+ABIANBADoA+AEgA0IANwPwASADQgA3A+gBIANBADoAkAIgA0IANwOIAiADQgA3A4ACIAMgBDYCTCADIAggBEHYAWxqIgA2AkggAwJ/QQAgACsDCCIdvSJyQv///////////wCDInFCAX1C/////////wdUIHJCAFMiAnEgcUKAgICAgICA+P8AUXIgcUKAgICAgICA+P8AVnIgcUKAgICAgICACH1CgICAgICAgPD/AFQgAnFyDQAaQQAgHUQAAAAAAADgP6CcIh1EAAAAAAAA8H9kIB1EAAAAAAAA8H9jckUNABpBACAdIB38AyICuGINABogCiACQcgAbGpBACACIAlJGws2AlAgACsDoAEhHSAAKwOoASEeIAMgACsDsAE5A2ggAyAeOQNgIAMgHTkDWEEAIQYCQCAHRSAhRAAAAAAAAAAAZXINACADKwNYIR0gBysDACEiIAMrA2AiHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AIMicUKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gcUKAgICAgICA+P8AVBsQKRAkIR8gBysDYCAHKwNAIAMrA2giHkQAAAAAAAAAACAevUL///////////8Ag0KAgICAgICA+P8AVBsiHqIgIiAhIB1EAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAdvUL///////////8Ag0KAgICAgICA+P8AVBuiIh2iIAcrAyAgISAfRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjoiIioqCgoCIfvUL///////////8Ag0L/////////9/8AVg0AIAcrA2ggBysDSCAeoiAHKwMIIB2iICIgBysDKKKgoKAiIL1C////////////AINC//////////f/AFYNACAHKwN4IAcrA1ggHqIgBysDGCAdoiAiIAcrAziioKCgIh29InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAMgICAdozkDmAEgAyAfIB2jOQOQAUEBIQYLIAMgBjoAoAEgAysDaCEdIAMrA2AhHiADIAMrA1giIkQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICK9Qv///////////wCDQoCAgICAgID4/wBUGzkDcCADRAAAAAAAAAAAIB1EAAAAAAAAAAAgHb1C////////////AINCgICAgICAgPj/AFQbIB5EJLiRskVDVUCkRCS4kbJFQ1VAIB69Qv///////////wCDInFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBxQoCAgICAgID4/wBUGyIdRDmdUqJG35E/ohAiRJMQfEX4G4NBoiIeoyAeRAAAAAAAAAAAYRs5A4ABIAMgHUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDeCADQQE6AIgBAkAgAygCSCIAKwMAIh29Qv///////////wCDQv/////////3/wBYBEAgHZ0iHSAd/AYicblhDQELQgAhcQsgAyBxNwOoAQJAIAArA1giIr1C////////////AINCgICAgICAgPj/AFQNAEQAAAAAAAAAACEiIAArA2AgACsDaKAiHb1C////////////AINC//////////f/AFYNAEQAAAAAAAAAAAJ8IB29InNCNIinQf8PcSIAQf8PRgRAIB1EAAAAAACAdkCiIh0gHaMMAQsgc0IBhiJxQoCAgICAgMD2gH9YBEAgHUQAAAAAAAAAAKIgHSBxQoCAgICAgMD2gH9RGwwBCwJ+IABFBEBBACEAIHNCDIYicUIAWQRAA0AgAEEBayEAIHFCAYYicUIAWQ0ACwsgc0EBIABrrYYMAQsgc0L/////////B4NCgICAgICAgAiECyFxIABBhwhKBEADQAJAIHFCgICAgICAoAt9InJCAFMNACByInFCAFINACAdRAAAAAAAAAAAogwDCyBxQgGGIXEgAEEBayIAQYcISg0AC0GHCCEACwJAIHFCgICAgICAoAt9InJCAFMNACByInFCAFINACAdRAAAAAAAAAAAogwBCyBxQv////////8HWARAA0AgAEEBayEAIHFCgICAgICAgARUIHFCAYYhcQ0ACwsgc0KAgICAgICAgIB/gyBxQoCAgICAgIAIfSAArUI0hoQgcUEBIABrrYggAEEAShuEvwsiHUQAAAAAAIB2QKAgHSAdRAAAAAAAAAAAYxsiHSAdRAAAAAAAAAAAYRshIgsgAyAiOQPQASADICJEOZ1Sokbfkb+iIh0QIjkD4AEgAyAdECc5A9gBIA4gBEHQAWxqIANByABqQckB/AoAACAEQQFqIgQgE0cNAAsLIANBuAJqIQogA0HYAmohBiMAQSBrIgIkACANKAIAIgAgDSgCBCIHRwRAA0ACQCAAKAIARQ0AIAAoAggiCEUNACAALQBYQQFHDQAgBisDCCEeIAooAhAhBCAKKwMIISECQCAALQCAAUEBRgRAIAArA3giHb0icUIBfUL/////////B1QgcUL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQgcUIAWXFyDQELIAArAxgiHUQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIgHkQAAAAAAACAQKKjIh69InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BRAAAAAAAAPA/ISICQCAERSAhRAAAAAAAAAAAZXINAAJ8IAAtAEBBAUYEQCAAKwM4IR0gACsDKCEfIAArAzAMAQsgHUQkuJGyRUNVQKREJLiRskVDVUAgHb1C////////////AIMicUKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIHFCgICAgICAgPj/AFQbIiBEOZ1SokbfkT+iECIhHUQAAAAAAAAAACAAKwMgIh9EAAAAAAAAAAAgH71C////////////AINCgICAgICAgPj/AFQbIB1EkxB8Rfgbg0GiIh2jIB1EAAAAAAAAAABhGyEdIAArAxAiH0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IB+9Qv///////////wCDQoCAgICAgID4/wBUGyEfICBEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMLISAgBCsDeCAEKwNYIB2iIAQrAxggH6IgICAEKwM4oqCgoCIdvSJxQgF9Qv7///////8HViBxQgBTIHFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAhIB2jIh1EAAAAAAAA8D8gHSAdvSJxQgBTG0QAAAAAAADwPyBxQv///////////wCDQoCAgICAgIAIfUKAgICAgICA8P8AVBsgcUIBfUL/////////B1QbISILRAAAAAAAAPA/IB6jICKiIh29InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIABBAToAgAEgACAdOQN4IAAgIjkDcCAAIB45A2gLIAJBEGogAEEBIAogBiAIIB0gDSAFEBUgACACKQMYNwOoASAAIAIpAxA3A6ABIABBAToAsAEgAiAAQQAgCiAGIAAoAgggHSANIAUQFSAAIAIpAwg3A8ABIAAgAikDADcDuAEgAEEBOgDIAQsgAEHQAWoiACAHRw0ACwsgAkEgaiQAIAtBBHFBAnZxIRFBACEFQQAhAEEAIQ4jAEHQAGsiByQAIANBPGoiFyIMQQA2AgggDEIANwIAIA0oAgQiAiANKAIAIgRrQdABbSESAkACQAJAIAIgBEcEQCASQYCAgBBPDQEgEkEHdCIAEC0iBSAAaiEOIAUhAANAAkAgDSgCACAUQdABbGoiBCgCACIIRQ0AIAQoAggiAkUNACACLQAYQQFHDQAgBC0AWEEBRw0AIAYrAwghHiAKKAIQIQsgCisDCCEhAkAgBC0AgAFBAUYEQCAEKwN4Ih29InFCAX1C/////////wdUIHFC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUIHFCAFlxcg0BCyAEKwMYIh1EOZ1SokbfkT+iECJEkxB8Rfgbg0GiIB5EAAAAAAAAgECioyIevSJxQgF9Qv7///////8HViBxQgBTIHFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEiAkAgC0UgIUQAAAAAAAAAAGVyDQACfCAELQBAQQFGBEAgBCsDOCEdIAQrAyghIyAEKwMwDAELIB1EJLiRskVDVUCkRCS4kbJFQ1VAIB29Qv///////////wCDInFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBxQoCAgICAgID4/wBUGyIfRDmdUqJG35E/ohAiIR1EAAAAAAAAAAAgBCsDICIgRAAAAAAAAAAAICC9Qv///////////wCDQoCAgICAgID4/wBUGyAdRJMQfEX4G4NBoiIdoyAdRAAAAAAAAAAAYRshHSAEKwMQIiBEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAgvUL///////////8Ag0KAgICAgICA+P8AVBshIyAfRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEfIAsrA3ggCysDWCAdoiALKwMYICOiIB8gCysDOKKgoKAiHb0icUIBfUL+////////B1YgcUIAUyBxQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgISAdoyIdRAAAAAAAAPA/IB0gHb0icUIAUxtEAAAAAAAA8D8gcUL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbIHFCAX1C/////////wdUGyEiC0QAAAAAAADwPyAeoyAioiIdvSJxQgF9Qv7///////8HViBxQgBTIHFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAEQQE6AIABIAQgHTkDeCAEICI5A3AgBCAeOQNoCyAEQaABQcgAIAQtALABIgkbaisDACEhIARBqAFB0AAgCRtqKwMAIR4gB0IANwNIAn8CQAJAIAgrAyAQJUUEQCALRQ0ERAAAAAAAAAAAISFEAAAAAAAA8D8hJCAIKwMoIh5EAAAAAAAA8D8gHkQAAAAAAAAAAGIbISIgCCsDSCElIAhBQGshCSAGKwNYISMgAisDCCIeRAAAAAAAAAAAZQ0BIAIrAxAiH0QAAAAAAAAAAGUNASAGKwMoIiBEAAAAAAAAAABlDQEgHyAiICCiICOiIiCiIh9EAAAAAAAAAAAgH71C////////////AINCgICAgICAgPj/AFQbIR8gHiAgoiIeRAAAAAAAAAAAIB69Qv///////////wCDQoCAgICAgID4/wBUGyEgIB29InFCAX1C/v///////wdWIHFCAFMgcUL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0CIAYrAzAiHkQAAAAAAAAAAGQiAiAGKwM4IiZEAAAAAAAAAABkIg9yRQ0CIB8gICAfICBkGyIpRAAAAAAAAAAAZEUNAiAdICmiIh29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ASAjIB4gHSAMIABBsAFqEA9FDQAgAEIANwO4CCAAIAArA7gBOQOwCCAAIAArA7ABOQOoCAsgACAAKQO4CDcDmAcgACAAKQOwCDcDkAcgACAAKQOoCDcDiAcgACACKwMIOQOgByAAIAIrAxA5A6gHIAAgBCsDKDkDsAcgACAkOQO4ByAAIAQrA1g5A8AHIAAgJjkDyAcgACAFKwOQATkD0AcgACAFKwOYATkD2AcgACAfOQPoByAAIABBsAtqNgLgByAAIABBoAtqNgLkByAAIAQrAzA5A/AHIAAgBCsDODkD+AcgACARNgKACCAAQQE7AYQIIAAgBCsDQCIsOQOICCAAIAQrA0giLzkDkAggACAEKwNQIiY5A5gIIABBAToAoAggAEHgBWogAEGIB2oQFyAALQDwBUEBRw0CIAotABBBAXFFDQJEAAAAAAAAAAAhIiAWQQFxBEAgBCsDsAFEAAAAAAAA8L+gIR0gBysDeCAEKwOoAaIgBysDcCIevUL///////////8Ag0KAgICAgICA+P8AWAR8IB4gHSAepCAdvUL///////////8Ag0KAgICAgICA+P8AVhsFIB0LoCAEKwO4AZqiISILIApBQGshESAAKwOwBiEuIAArA6gGITEgACsDoAYgCisDGCElIAorAyAhKSAKKwMoISogBSsDkAEhHiAFKwOYASEdIABBsAFqIgJBwAFqQQBBgAH8CwAgAkHYCikDADcD2AIgAkHQCikDADcD0AIgAkHICikDADcDyAIgAkHACikDADcDwAIgAkHgAmpBAEHEAfwLACAAKwOwBiEjIAArA6gGIR8gACsDoAYhICACICg5A0AgAiAhOQM4IAIgKUQAAAAAAADgP6IiJDkDMCACICVEAAAAAAAA4D+iIic5AyggAiAgRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gIL1C////////////AINCgICAgICAgPj/AFQbIjQ5AwAgAkQAAAAAAAAAACAjRAAAAAAAAAAAICO9Qv///////////wCDQoCAgICAgID4/wBUGyAfRCS4kbJFQ1VApEQkuJGyRUNVQCAfvUL///////////8AgyJxQoCAgICAgID4/wBYG0QkuJGyRUNVwKUiI0QAAAAAAAAAACBxQoCAgICAgID4/wBUIgwbIjVEOZ1SokbfkT+iECJEkxB8Rfgbg0GiIjajIDZEAAAAAAAAAABhGzkDECACICBEAAAAAAAA8D8gH0Q5nVKiRt+RP6IQIiIgRI3ttaD3xrA+pUSN7bWg98awPiAgvUL///////////8Ag0KAgICAgICA+P8AWBtEAAAAQKZUWEGio0T4wWMa3KVMQKKgIiBEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAgvUL///////////8Ag0KAgICAgICA+P8AVBsgNKE5AxggAiA1RCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjOQMIICNEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oEQYLURU+yHpPyAMGxApECQhICACIB9EHnAYIMvW4j6gIh9EJLiRskVDVUCkRCS4kbJFQ1VAIB+9Qv///////////wCDQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oEQYLURU+yHpPyAfvUL///////////8Ag0KAgICAgICA+P8AVBsQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjICBE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOhOQMgIAIgCikDMDcDSCACIAopAzg3A1AgAiAdOQNgIAIgHjkDWCAFKwOIASEfIAIgIjkDcCACIB85A2ggAiAAKQOYBjcDgAEgAiAAKQOQBjcDeCACIABBqAhqIgUpAwA3A4gBIAIgBSkDCDcDkAEgAiAFKQMQNwOYASAAKQOwBiFxIAApA6gGIXIgACkDoAYhcyACICo5A7gBIAIgczcDoAEgAiByNwOoASACIHE3A7ABIAUrAwghICAFKwMAISMCQCAlRAAAAAAAAAAAZSApRAAAAAAAAAAAZXIEQCAKKwMwIh0hKCAKKwM4IiEhJCAdIh4hJSAhIh8hKQwBCyAnICcgIaIiH6EiJSAeoiI0ICSaICQgKKIiKKEiKiAdoiI1oCAKKwM4IiGgISkgJSAdoiI2ICogHpoiN6IiOKAgCisDMCIqoCElICeaIB+hIicgHqIiOSA1oCAhoCEfICcgHaIiJyA4oCAqoCEeIDQgJCAooSIoIB2iIh2gICGgISQgNiAoIDeiIjSgICqgISggOSAdoCAhoCEhICcgNKAgKqAhHQsgAkEANgKgBCACICk5A6gCIAIgJTkDoAIgAiAfOQOIAiACIB45A4ACIAIgJDkD6AEgAiAoOQPgASACICE5A8gBIAIgHTkDwAEgAiAgIClEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A7gCIAIgICAfRAAAAECmVFhBo0T4wWMa3KVMQKKgOQOYAiACICAgJEQAAABAplRYQaNE+MFjGtylTECioDkD+AEgAiAgICFEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A9gBIAIgIyAlRI3ttaD3xrA+ICBEOZ1SokbfkT+iECIiISAhRI3ttaD3xrA+YxtEAAAAQKZUWEGiIiGjRPjBYxrcpUxAoqA5A7ACIAIgIyAeICGjRPjBYxrcpUxAoqA5A5ACIAIgIyAoICGjRPjBYxrcpUxAoqA5A/ABIAIgIyAdICGjRPjBYxrcpUxAoqA5A9ABQQAhDCAAQTBqQQBBgAH8CwAgAEEANgIsIABCADcDICAAQgA3AxggAEIANwMQIABCADcDCCAmvUL///////////8AgyJxUCBxQoCAgICAgID4/wBRciBxQoCAgICAgID4/wBWciEYRAAAAAAAAPA/RAAAAAAAAAAAIBVBAXEiChshHiAxIC4gBiAAQQhqEAwhGSAAKwO4CCIdRAAAAAAAAAAAIB29Qv///////////wCDQoCAgICAgID4/wBUGyElIAArA7AIIilEOZ1SokbfkT+iECIiHUSN7bWg98awPqVEje21oPfGsD4gHb1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiEnIAYrA3ghKiAGKwNYISggBisDOCEuIAYrAxghMSAGKwNwITMgBisDUCE0IAYrAzAhNSAGKwMQITYgBisDaCE3IAYrA0ghOCAGKwMoITkgBisDCCE6IAYrA2AhOyAGKwNAITwgBisDICE9IAQrA6ABIT4gAEGACWohBSAAKwOoCCE/A0AgKSARIAwoAqgJIgRBBHQiAmoiFisDCEQAAABAplRYQaNE+MFjGtylTECioCIdRCS4kbJFQ1VApEQkuJGyRUNVQCAdvUL///////////8AgyJxQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgcUKAgICAgICA+P8AVBsiHUQ5nVKiRt+RP6IQIiEhIBYrAwAhHyAdRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkISAgOyA8RAAAAAAAAAAAICUgIUSTEHxF+BuDQaIiHaMgHUQAAAAAAAAAAGEbIh2iIAYrAwAgPyAfICejRPjBYxrcpUxAoqAiIUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICG9Qv///////////wCDQoCAgICAgID4/wBUGyIfoiA9ICBE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiI6KgoKAiIL1C////////////AINC//////////f/AFYNAyA3IDggHaIgOiAfoiA5ICOioKCgIiS9Qv///////////wCDQoCAgICAgID4/wBaDQMgMyA0IB2iIDYgH6IgNSAjoqCgoCIhvUL///////////8Ag0KAgICAgICA+P8AWg0DICogKCAdoiAxIB+iIC4gI6KgoKAiH71C////////////AINC//////////f/AFYgH0SN7bWg98awPmVyDQMgISEdICJEAAAAAAAAAABiBEAgPiAfoSIjICIgH6IgHaAiHSAdICNjGyEdCyAAQSxqIARqIhYtAABFBEAgAEEwaiAEQQV0aiIEIB85AxggBCAdOQMQIAQgJDkDCCAEICA5AwAgFkEBOgAAIBggLCAgRAAAAAAAAPA/IB+jIh2iRAAAAAAAAPA/oEQAAAAAAADgP6KiIiO9Qv///////////wCDQv/////////3/wBWIC9EAAAAAAAA8D8gJCAdoqFEAAAAAAAA4D+ioiIdvUL///////////8Ag0L/////////9/8AVnJyDQQgAEHACGogAmoiBCAdICajOQMIIAQgIyAmozkDAAsgBSAKBHwgAisDyAkhJCACKwPACSEgRAAAAAAAAAAAISFEAAAAAAAA8D8FIB8LOQMYIAUgITkDECAFICQ5AwggBSAgOQMAIAUgAisDiAogMKIgLaA5AyggBSACKwOACiAyoiAroDkDICAFQTBqIQUgDEEEaiIMQRhH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ACsDgAQhQiAAKwP4AyFBIAArA/ADIUAgACsDsAIhPyAAKwOoAiE+IAArA5gCIT0gACsDkAIhPCAAKwOIAiE7IAArA4ACITogACsD+AEhOSAAKwPwASE4IAArA+gBITcgACsD4AEhNiAAKwPYASE1IAArA9ABITQgACsDyAEhMyAAKwPAASExIAArA7ABIS4gACsDuAELISpEAAAAAAAAAAAhL0QAAAAAAADwPyEsRAAAAAAAAAAAIShEAAAAAAAAAAAhIUQAAAAAAAAAACEmRAAAAAAAAAAAISBEAAAAAAAAAAAhH0QAAAAAAAAAACEdRAAAAAAAAAAADAELRAAAAAAAAAAAISYgBCsDWCEnRAAAAAAAAPA/ISICQCACKwMIIh1EAAAAAAAAAABlBEBEAAAAAAAAAAAhHQwBCyACKwMQIiBEAAAAAAAAAABlBEBEAAAAAAAAAAAhHQwBCyAEKwMoIiVEAAAAAAAAAABlBEBEAAAAAAAAAAAhHQwBCyAgIB8gJCAloiAnoqIiIKIiJkQAAAAAAAAAACAmvUL///////////8Ag0KAgICAgICA+P8AVBsiJiAdICCiIh1EAAAAAAAAAAAgHb1C////////////AINCgICAgICAgPj/AFQbIh0gHSAmYxsiIL0icUIBfUL+////////B1YgcUIAUyBxQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgBCsDOCElIAQrAzAiKkQAAAAAAAAAAGRFICAgKmNFckUEQCAgICogIKMiIqIhICAmICKiISYgHSAioiEdCyAlRAAAAAAAAAAAZEUgICAlZEVyDQAgIiAlICCjIiCiISIgJiAgoiEmIB0gIKIhHQsgBSsDmAEhLCAFKwOQASEvIC5EOZ1SokbfkT+iIiUQIiEqIB1EAAAAAAAA4D+iISAgIyAlECcgHyApICSiICeioiAioiIioqAiHSEnIB4gKiAioqEiHyEkIB0iIiIjISkgHyIeIiUhKiAmRAAAAAAAAOA/oiImRAAAAAAAAAAAZSAgRAAAAAAAAAAAZXJFBEAgHyAgICEgIKIiHqEiIiAvoiIkICwgJpogKCAmoiInoSIjoiIloKEhKiAdICIgLKIiIiAjIC+aIi6iIiOgoCEpIB8gIJogHqEiHiAvoiIxICWgoSElIB0gHiAs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AgQgDSgCCBogABArCyAQKAIAIgAEQCAQIAA2AgQgECgCCBogABArC0EBIQQLIANBoARqJAAgBAtdAQJ/IABBADYCCCAAQgA3AgACQCABBEAgAUEASA0BIAAgARAtIgM2AgQgACADNgIAIAAgASADaiIENgIIIAEEQCADIAItAAAgAfwLAAsgACAENgIECyAADwsQFAAL3QEBBH9BCBAuIgBB1NUANgIAIAAiA0HE1gA2AgACf0GKCCEBQQBBiggtAABFDQAaAkACQANAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASIAQQRqIQFBgIKECCAAKAIAIgJrIAJyQYCBgoR4cUGAgYKEeEYNAAsDQCAAIgFBAWohACABLQAADQALCyABQYoIawsiAkENahAtIgBBADYCCCAAIAI2AgQgACACNgIAIABBDGohASACQQFqIgAEQCABQYoIIAD8CgAACyADIAE2AgQgA0H01gA2AgAAC9QMAwR/D3wBfiMAQaADayIJJAAgCSABKQNQNwOYAyAJIAEpA0g3A5ADIAErA1AhEyABKwNIIRQCQCABKAIAIgorAxAiDUQAAAAAAADwv2EEQCAKKwO4AUQAAAAAAAAAAGZFDQEgCisDwAFEAAAAAAAAAABmRQ0BCyANvUL///////////8Ag0L/////////9/8AVg0AIA2dIg38BiIcQgBTIA0gHLlicg0AIBynIgsgBygCBCAHKAIAIgxrQdABbU8NACAMIAtB0AFsaiILKAIARQ0AIAspA2AgASkDYFINACALKAIIIgxFDQAgCSALIAorAxhEAAAAAAAAAABiIAMgBCAMIAYgByAIEBUgCSsDCCETIAkrAwAhFCABKAIAIQoLIAkgCisDOCIXOQOAAyAJIAorA0AiGDkDiAMgCSAKKwNIIhk5A/ACIAkgCisDUCIaOQP4AiAKKwMoIRAgASsDiAEhFSAFKwMIIQ0gCisDIBAlIQcCQAJAIA1EAAAAAAAAAABlRQRAIAUrAxAiEUQAAAAAAAAAAGVFDQELIAAgEzkDCCAAIBQ5AwAMAQsgEEQAAAAAAADwPyAQRAAAAAAAAAAAYhshFgJAIAdFBEAgASsDICEQIAErAxghDyABKwMQIQ4CQCAKKwMQRAAAAAAAAPC/YQRAIAorA7gBRAAAAAAAAAAAZkUNASAKKwPA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AzAhDUQAAAAAAADwPyEJAkACQCABKwMYIghEAAAAAAAAAABlDQAgASsDICIHRAAAAAAAAAAAZQ0AIAErAygiBUQAAAAAAAAAAGUNACAHIAUgDaIgC6IiBaIiB0QAAAAAAAAAACAHvUL///////////8Ag0KAgICAgICA+P8AVBshByAIIAWiIghEAAAAAAAAAAAgCL1C////////////AINCgICAgICAgPj/AFQbIQggASsDYCIFvSIQQgF9Qv7///////8HViAQQgBTIBBC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASABKwNwIgpEAAAAAAAAAABkIgMgASsDaCIGRAAAAAAAAAAAZHJFDQEgByAIIAcgCGQbIgxEAAAAAAAAAABkRQ0BIAUgDKIiBb0iEEIBfUL+////////B1YgEEIAUyAQQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQEgCiAFoyAGIAWjRAAAAAAAAPA/IAUgBmMbRAAAAAAAAPA/IAZEAAAAAAAAAABkGyIJIAUgCaIgCmQbIAkgAxsiCUQAAAAAAADwP2EEQEQAAAAAAADwPyEJDAILIAcgCaIhByAIIAmiIQgMAQtEAAAAAAAAAAAhB0QAAAAAAAAAACEICwJ8RAAAAAAAAAAAIAdEAAAAAAAA4D+iIgVEAAAAAAAAAABlDQAaRAAAAAAAAAAAIQZEAAAAAAAAAAAgCEQAAAAAAADgP6IiD0QAAAAAAAAAAGUNABogASsDUCEKIAErA0ghDCAFIAEoAlgiAwR8IAMrAwAhBiADKwMIBUQAAAAAAAAAAAuiIQUgDyAGoiIGRAAAAAAAAAAAYQRARAAAAAAAAAAAIAVEAAAAAAAAAABhDQEaCyAGmiAMoiAFIAqioSEOIAwgBaIgBiAKoqELIQoCfCABKAJcIgNFBEBEAAAAAAAAAAAhBUQAAAAAAAAAAAwBC0QAAAAAAAAAACEFRAAAAAAAAAAAIAkgCyANIAMrAwCioqIiBkQAAAAAAAAAAGENABogBiADKwMIRDmdUqJG35E/oiILECKiIQUgBiALECeiCyEGIAErAwAhDSABKwMIIQsgAiABKwMQIgw5A1ggAiALIA4gBaAiD0QAAABAplRYQaNE+MFjGtylTECioDkDUCACIA0gCiAGoCIKIAtEOZ1SokbfkT+iECIiDkSN7bWg98awPqVEje21oPfGsD4gDr1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiIOo0T4wWMa3KVMQKKgOQNIIAJCADcDMCACQgA3AyhBACEDIAJB4ABqIAJByABqIAJBKGoQGARAIAIgAikAKTcDOCACIAIpADA3AD8gAi0AKCEEQQEhAwsgAEEAOgCgASAAQQA6AIgBIABBADoAgAEgAEEAOgBwIABBADoAaCAAQQA6AFggACAEOgAAIAAgAikDODcAASAAIAIpAD83AAggACAPOQM4IAAgCjkDMCAAIAk5AyggACAHOQMgIAAgCDkDGCAAIAM6ABAgACACKQNYNwNQIAAgAikDUDcDSCAAIAIpA0g3A0AgAS0AmAFBAUYEQCACIAw5AyAgAiAFRAAAAECmVFhBo0T4wWMa3KVMQKIgC6A5AxggAiANIAYgDqNE+MFjGtylTECioDkDECACQgA3AwggAkIANwMAIAJB4ABqIAJBEGogAhAYBEAgACACKQMINwNgIAAgAikDADcDWCAAQQE6AGgLIABBAToAgAEgACAFOQN4IAAgBjkDcCAAIAIpAyA3A5gBIAAgAikDGDcDkAEgACACKQMQNwOIASAAQQE6AKABCyACQfAAaiQAC7kLAwd8An8BfgJAIAICfAJAIAAoAgAtAABBAUcNACAAKAIEIgsoAngoAhAiCkUNACABKwMIIgNEJLiRskVDVUCkRCS4kbJFQ1VAIAO9Qv///////////wCDIgxCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAMQoCAgICAgID4/wBUGyIERDmdUqJG35E/ohAiIQYgASsDECEDIAorA1ghByABKwMAIQUgCisDGCEIIAREJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECQhBCAKKwNgIAorA0BEAAAAAAAAAAAgA0QAAAAAAAAAACADvUL///////////8Ag0KAgICAgICA+P8AVBsgBkSTEHxF+BuDQaIiA6MgA0QAAAAAAAAAAGEbIgOiIAorAwAgBUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAW9Qv///////////wCDQoCAgICAgID4/wBUGyIFoiAKKwMgIARE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiBKKgoKAiBr1C////////////AINC//////////f/AFYNACAKKwNoIAorA0ggA6IgCisDCCAFoiAKKwMoIASioKCgIgm9Qv///////////wCDQoCAgICAgID4/wBaDQAgCisDcCAKKwNQIAOiIAorAxAgBaIgCisDMCAEoqCgoL1C////////////AINCgICAgICAgPj/AFoNACAKKwN4IAcgA6IgCCAFoiAEIAorAziioKCgIgO9Qv///////////wCDQv/////////3/wBWIANEje21oPfGsD5lcg0AIAZEAAAAAAAA8D8gA6MiA6JEAAAAAAAA8D+gRAAAAAAAAOA/oiALKwOAAaIiBb1C////////////AINC//////////f/AFYNAEQAAAAAAADwPyAJIAOioUQAAAAAAADgP6IgCysDiAGiIgS9Qv///////////wCDQoCAgICAgID4/wBaDQAgCysDkAEiA71C////////////AIMiDEIBfUL+////////B1YgDEKAgICAgICACH1C/////////+//AFZxDQAgAiAFIAOjOQMAIAQgA6MMAQtBACEKIAAoAggtAABBAUcNASAAKAIEKAJ4IgsoAhQiAEUNASALKwMAIgNEAAAAAAAAAABlDQEgASsDACEFIAArAwAhBiABKwMIIgREJLiRskVDVUCkRCS4kbJFQ1VAIAS9Qv///////////wCDIgxCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IAxCgICAgICAgPj/AFQbECkQJCEHIAArA2AgACsDQCABKwMQIgREAAAAAAAAAAAgBL1C////////////AINCgICAgICAgPj/AFQbIgSiIAYgAyAFRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gBb1C////////////AINCgICAgICAgPj/AFQboiIFoiAAKwMgIAMgB0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6IiA6KgoKAiBr1C////////////AINC//////////f/AFYNASAAKwNoIAArA0ggBKIgACsDCCAFoiADIAArAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQEgACsDeCAAKwNYIASiIAArAxggBaIgAyAAKwM4oqCgoCIDvSIMQgF9Qv7///////8HViAMQgBTIAxC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASACIAYgA6M5AwAgByADows5AwhBASEKCyAKC4sGAwJ8A38CfiMAQYABayIHJAAgACABIAIQGwJAAkAgAysDCCIEIAIrAwgiBWIEQCAEIAVjDQEMAgsgAigCACEGRAAAAAAAAAAAIQVEAAAAAAAAAAAhBCADKAIAIggEQCAIKAIAKwNwIQQLIAYEQCAGKAIAKwNwIQULIAQgBWIEQCAEIAVjDQEMAgsgCARAIAgpA2AhCQsgBgRAIAYpA2AhCgsgCSAKUgRAIAkgClMNAQwCC0QAAAAAAAAAACEEIAgEQCAIKAIAKwOYASEECyAGBHwgBigCACsDmAEFRAAAAAAAAAAACyAEZEUNAQsgByACQYAB/AoAACACIANBgAH8CgAAIAMgB0GAAfwKAAACQCACKwMIIgQgASsDCCIFYgRAIAQgBWMNAQwCCyABKAIAIQNEAAAAAAAAAAAhBUQAAAAAAAAAACEEIAIoAgAiBgRAIAYoAgArA3AhBAsgAwRAIAMoAgArA3AhBQsgBCAFYgRAIAQgBWMNAQwCC0IAIQpCACEJIAYEQCAGKQNgIQkLIAMEQCADKQNgIQoLIAkgClIEQCAJIApTDQEMAgtEAAAAAAAAAAAhBCAGBEAgBigCACsDmAEhBAsgAwR8IAMoAgArA5gBBUQAAAAAAAAAAAsgBGRFDQELIAcgAUGAAfwKAAAgASACQYAB/AoAACACIAdBgAH8CgAAAkAgASsDCCIEIAArAwgiBWIEQCAEIAVjDQEMAgsgACgCACECRAAAAAAAAAAAIQVEAAAAAAAAAAAhBCABKAIAIgMEQCADKAIAKwNwIQQLIAIEQCACKAIAKwNwIQULIAQgBWIEQCAEIAVjDQEMAgtCACEKQgAhCSADBEAgAykDYCEJCyACBEAgAikDYCEKCyAJIApSBEAgCSAKUw0BDAILRAAAAAAAAAAAIQQgAwRAIAMoAgArA5gBIQQLIAIEfCACKAIAKwOYAQVEAAAAAAAAAAALIARkRQ0BCyAHIABBgAH8CgAAIAAgAUGAAfwKAAAgASAHQYAB/AoAAAsgB0GAAWokAAuHCAMCfAJ+A38jAEGAAWsiCiQAIAAgASACIAMQGQJAAkAgBCsDCCIFIAMrAwgiBmIEQCAFIAZjDQEMAgsgAygCACEJRAAAAAAAAAAAIQZEAAAAAAAAAAAhBSAEKAIAIgsEQCALKAIAKwNwIQULIAkEQCAJKAIAKwNwIQYLIAUgBmIEQCAFIAZjDQEMAgsgCwRAIAspA2AhBwsgCQRAIAkpA2AhCAsgByAIUgRAIAcgCFMNAQwCC0QAAAAAAAAAACEFIAsEQCALKAIAKwOYASEFCyAJBHwgCSgCACsDmAEFRAAAAAAAAAAACyAFZEUNAQsgCiADQYAB/AoAACADIARBgAH8CgAAIAQgCkGAAfwKAAACQCADKwMIIgUgAisDCCIGYgRAIAUgBmMNAQwCCyACKAIAIQREAAAAAAAAAAAhBkQAAAAAAAAAACEFIAMoAgAiCQRAIAkoAgArA3AhBQsgBARAIAQoAgArA3AhBgsgBSAGYgRAIAUgBmMNAQwCC0IAIQhCACEHIAkEQCAJKQNgIQcLIAQEQCAEKQNgIQgLIAcgCFIEQCAHIAhTDQEMAgtEAAAAAAAAAAAhBSAJBEAgCSgCACsDmAEhBQsgBAR8IAQoAgArA5gBBUQAAAAAAAAAAAsgBWRFDQELIAogAkGAAfwKAAAgAiADQYAB/AoAACADIApBgAH8CgAAAkAgAisDCCIFIAErAwgiBmIEQCAFIAZjDQEMAgsgASgCACEDRAAAAAAAAAAAIQZEAAAAAAAAAAAhBSACKAIAIgQEQCAEKAIAKwNwIQULIAMEQCADKAIAKwNwIQYLIAUgBmIEQCAFIAZjDQEMAgtCACEIQgAhByAEBEAgBCkDYCEHCyADBEAgAykDYCEICyAHIAhSBEAgByAIUw0BDAILRAAAAAAAAAAAIQUgBARAIAQoAgArA5gBIQULIAMEfCADKAIAKwOYAQVEAAAAAAAAAAALIAVkRQ0BCyAKIAFBgAH8CgAAIAEgAkGAAfwKAAAgAiAKQYAB/AoAAAJAIAErAwgiBSAAKwMIIgZiBEAgBSAGYw0BDAILIAAoAgAhAkQAAAAAAAAAACEGRAAAAAAAAAAAIQUgASgCACIDBEAgAygCACsDcCEFCyACBEAgAigCACsDcCEGCyAFIAZiBEAgBSAGYw0BDAILQgAhCEIAIQcgAwRAIAMpA2AhBwsgAgRAIAIpA2AhCAsgByAIUgRAIAcgCFMNAQwCC0QAAAAAAAAAACEFIAMEQCADKAIAKwOYASEFCyACBHwgAigCACsDmAEFRAAAAAAAAAAACyAFZEUNAQsgCiAAQYAB/AoAACAAIAFBgAH8CgAAIAEgCkGAAfwKAAALIApBgAFqJAAL1QkDA3wDfwJ+IwBBgAFrIQggASgCACEGAkACQAJAIAErAwgiBSAAKwMIIgNiBEAgAyAFZA0CDAELIAAoAgAhB0QAAAAAAAAAACEDIAYEQCAGKAIAKwNwIQQLIAcEQCAHKAIAKwNwIQMLIAMgBGIEQCADIARkDQIMAQsgBgRAIAYpA2AhCQsgBwRAIAcpA2AhCgsgCSAKUgRAIAkgClkNAQwCC0QAAAAAAAAAACEEIAYEQCAGKAIAKwOYASEECyAHBHwgBygCACsDmAEFRAAAAAAAAAAACyAEZA0BCwJAIAUgAisDCCIDYgRAIAMgBWMNAQwDC0QAAAAAAAAAACEERAAAAAAAAAAAIQMgAigCACIHBEAgBygCACsDcCEDCyAGBEAgBigCACsDcCEECyADIARiBEAgAyAEYw0BDAMLQgAhCkIAIQkgBwRAIAcpA2AhCQsgBgRAIAYpA2AhCgsgCSAKUgRAIAkgClMNAQwDC0QAAAAAAAAAACEDIAcEQCAHKAIAKwOYASEDCyAGBHwgBigCACsDmAEFRAAAAAAAAAAACyADZEUNAgsgCCABQYAB/AoAACABIAJBgAH8CgAAIAIgCEGAAfwKAAACQCABKwMIIgMgACsDCCIEYgRAIAMgBGMNAQwDCyAAKAIAIQJEAAAAAAAAAAAhBEQAAAAAAAAAACEDIAEoAgAiBgRAIAYoAgArA3AhAwsgAgRAIAIoAgArA3AhBAsgAyAEYgRAIAMgBGMNAQwDC0IAIQpCACEJIAYEQCAGKQNgIQkLIAIEQCACKQNgIQoLIAkgClIEQCAJIApTDQEMAwtEAAAAAAAAAAAhAyAGBEAgBigCACsDmAEhAwsgAgR8IAIoAgArA5gBBUQAAAAAAAAAAAsgA2RFDQILIAggAEGAAfwKAAAgACABQYAB/AoAACABIAhBgAH8CgAADwsCQAJAIAUgAisDCCIDYgRAIAMgBWNFDQIMAQtEAAAAAAAAAAAhBEQAAAAAAAAAACEDIAIoAgAiBwRAIAcoAgArA3AhAwsgBgRAIAYoAgArA3AhBAsgAyAEYgRAIAMgBGNFDQIMAQtCACEKQgAhCSAHBEAgBykDYCEJCyAGBEAgBikDYCEKCyAJIApSBEAgCSAKUw0BDAILRAAAAAAAAAAAIQMgBwRAIAcoAgArA5gBIQMLIAYEfCAGKAIAKwOYAQVEAAAAAAAAAAALIANkRQ0BCyAIIABBgAH8CgAAIAAgAkGAAfwKAAAgAiAIQYAB/AoAAA8LIAggAEGAAfwKAAAgACABQYAB/AoAACABIAhBgAH8CgAAAkAgAisDCCIDIAErAwgiBGIEQCADIARjDQEMAgsgASgCACEARAAAAAAAAAAAIQREAAAAAAAAAAAhAyACKAIAIgYEQCAGKAIAKwNwIQMLIAAEQCAAKAIAKwNwIQQLIAMgBGIEQCADIARjDQEMAgtCACEKQgAhCSAGBEAgBikDYCEJCyAABEAgACkDYCEKCyAJIApSBEAgCSAKUw0BDAILRAAAAAAAAAAAIQMgBgRAIAYoAgArA5gBIQMLIAAEfCAAKAIAKwOYAQVEAAAAAAAAAAALIANkRQ0BCyAIIAFBgAH8CgAAIAEgAkGAAfwKAAAgAiAIQYAB/AoAAAsLggkDCX8DfAJ+IwBBgAFrIgckAEEBIQUCQAJAAkACQAJAAkAgASAAa0EHdQ4GBQUAAQIDBAsgAUGAAWshAwJAIAFB+ABrKwMAIgsgACsDCCIMYgRAIAsgDGMNAQwGCyAAKAIAIQFEAAAAAAAAAAAhC0QAAAAAAAAAACEMIAMoAgAiAgRAIAIoAgArA3AhDAsgAQRAIAEoAgArA3AhCwsgCyAMYgRAIAsgDGQNAQwGCyACBEAgAikDYCEOCyABBEAgASkDYCEPCyAOIA9SBEAgDiAPUw0BDAYLRAAAAAAAAAAAIQwgAgRAIAIoAgArA5gBIQwLIAEEfCABKAIAKwOYAQVEAAAAAAAAAAALIAxkRQ0FCyAHIABBgAH8CgAAIAAgA0GAAfwKAAAgAyAHQYAB/AoAAAwECyAAIABBgAFqIAFBgAFrEBsMAwsgACAAQYABaiAAQYACaiABQYABaxAZDAILIAAgAEGAAWogAEGAAmogAEGAA2ogAUGAAWsQGgwBCyAAIABBgAFqIABBgAJqIgMQGyAAQYADaiICIAFGDQADQCACIgUoAgAhBAJAAkAgAisDCCINIAMrAwgiC2IEQCALIA1kDQEMAgtEAAAAAAAAAAAhDEQAAAAAAAAAACELIAQEQCAEKAIAKwNwIQsLIAMoAgAiAgRAIAIoAgArA3AhDAsgCyAMYgRAIAsgDGNFDQIMAQtCACEPQgAhDiAEBEAgBCkDYCEOCyACBEAgAikDYCEPCyAOIA9SBEAgDiAPWQ0CDAELRAAAAAAAAAAAIQsgBARAIAQoAgArA5gBIQsLIAIEfCACKAIAKwOYAQVEAAAAAAAAAAALIAtkRQ0BCyAFKAIEIQggByAFQRBqQfAA/AoAACAFIANBgAH8CgAAAkACQCAERQRAA0AgAyICQYABayEDAkAgAkH4AGsrAwAiCyANYQRAIAMoAgAiBkUNBSAGKAIAKwNwIgtEAAAAAAAAAABhBEAgBikDYCIOQgBSBEAgDkIAVQ0DDAcLIAYoAgArA5gBRAAAAAAAAAAAZA0CDAYLIAtEAAAAAAAAAABkDQEMBQsgCyANZEUNBAsgAiADQYAB/AoAACAAIANHDQAMAgsACwNAIAMiAkGAAWshAwJAIAJB+ABrKwMAIgsgDWIEQCALIA1kDQEMBAsgBCgCACIJKwNwIQwCfAJAAkACQAJAIAMoAgAiBkUEQEQAAAAAAAAAACELIAxEAAAAAAAAAABiDQFCACEPIAQpA2AiDkIAUg0DRAAAAAAAAAAADAULIAwgBigCACsDcCILYQ0BCyALIAxkDQQMBwsgBCkDYCIOIAYpA2AiD1ENAQsgDiAPUw0CDAULIAYoAgArA5gBCyAJKwOYAWRFDQMLIAIgA0GAAfwKAAAgACADRw0ACwsgACECCyACIA05AwggAiAINgIEIAIgBDYCACACQRBqIAdB8AD8CgAAIApBAWoiCkEIRw0AIAVBgAFqIAFGIQUMAgsgBSIDQYABaiICIAFHDQALQQEhBQsgB0GAAWokACAFC4kBAQR/An8jAEEQayIAJAACQCAAQQxqIABBCGoQAEUEQCAAKAIMIgIEfyAAIAJBAnQiAkETakFwcWsiASQAIAEgACgCCEEPakFwcWsiAyQAIAEgAmpBADYCACABIAMQAQ0CIAAoAgwFQQALIAEQAiAAQRBqJAAMAgtBxwAQAwALQccAEAMACxADAAvxAwMDfAJ/AX4gAL0iBkIgiKdB/////wdxIgRBgIDAoARPBEAgAEQYLURU+yH5PyAApiAGQv///////////wCDQoCAgICAgID4/wBWGw8LAkACfyAEQf//7/4DTQRAQX8gBEGAgIDyA08NARoMAgsgAJkhACAEQf//y/8DTQRAIARB//+X/wNNBEAgACAAoEQAAAAAAADwv6AgAEQAAAAAAAAAQKCjIQBBAAwCCyAARAAAAAAAAPC/oCAARAAAAAAAAPA/oKMhAEEBDAELIARB//+NgARNBEAgAEQAAAAAAAD4v6AgAEQAAAAAAAD4P6JEAAAAAAAA8D+goyEAQQIMAQtEAAAAAAAA8L8gAKMhAEEDCyAAIACiIgIgAqIiASABIAEgASABRC9saixEtKK/okSa/d5SLd6tv6CiRG2adK/ysLO/oKJEcRYj/sZxvL+gokTE65iZmZnJv6CiIQMgAiABIAEgASABIAFEEdoi4zqtkD+iROsNdiRLe6k/oKJEUT3QoGYNsT+gokRuIEzFzUW3P6CiRP+DAJIkScI/oKJEDVVVVVVV1T+goiEBIARB///v/gNNBEAgACAAIAMgAaCioQ8LQQN0IgQrA+AKIAAgAyABoKIgBCsDgAuhIAChoSIAmiAAIAZCAFMbIQALIAALkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC80WAxN/BHwBfiMAQTBrIgkkAAJAAkACQCAAvSIZQiCIpyIDQf////8HcSIGQfrUvYAETQRAIANB//8/cUH7wyRGDQEgBkH8souABE0EQCAZQgBZBEAgASAARAAAQFT7Ifm/oCIARDFjYhphtNC9oCIVOQMAIAEgACAVoUQxY2IaYbTQvaA5AwhBASEDDAULIAEgAEQAAEBU+yH5P6AiAEQxY2IaYbTQPaAiFTkDACABIAAgFaFEMWNiGmG00D2gOQMIQX8hAwwECyAZQgBZBEAgASAARAAAQFT7IQnAoCIARDFjYhphtOC9oCIVOQMAIAEgACAVoUQxY2IaYbTgvaA5AwhBAiEDDAQLIAEgAEQAAEBU+yEJQKAiAEQxY2IaYbTgPaAiFTkDACABIAAgFaFEMWNiGmG04D2gOQMIQX4hAwwDCyAGQbuM8YAETQRAIAZBvPvXgARNBEAgBkH8ssuABEYNAiAZQgBZBEAgASAARAAAMH982RLAoCIARMqUk6eRDum9oCIVOQMAIAEgACAVoUTKlJOnkQ7pvaA5AwhBAyEDDAULIAEgAEQAADB/fNkSQKAiAETKlJOnkQ7pPaAiFTkDACABIAAgFaFEypSTp5EO6T2gOQMIQX0hAwwECyAGQfvD5IAERg0BIBlCAFkEQCABIABEAABAVPshGcCgIgBEMWNiGmG08L2gIhU5AwAgASAAIBWhRDFjYhphtPC9oDkDCEEEIQMMBAsgASAARAAAQFT7IRlAoCIARDFjYhphtPA9oCIVOQMAIAEgACAVoUQxY2IaYbTwPaA5AwhBfCEDDAMLIAZB+sPkiQRLDQELIABEg8jJbTBf5D+iRAAAAAAAADhDoEQAAAAAAAA4w6AiFvwCIQMCQCAAIBZEAABAVPsh+b+ioCIVIBZEMWNiGmG00D2iIhehIhhEGC1EVPsh6b9jBEAgA0EBayEDIBZEAAAAAAAA8L+gIhZEMWNiGmG00D2iIRcgACAWRAAAQFT7Ifm/oqAhFQwBCyAYRBgtRFT7Iek/ZEUNACADQQFqIQMgFkQAAAAAAADwP6AiFkQxY2IaYbTQPaIhFyAAIBZEAABAVPsh+b+ioCEVCyABIBUgF6EiADkDAAJAIAZBFHYiAiAAvUI0iKdB/w9xa0ERSA0AIAEgFSAWRAAAYBphtNA9oiIAoSIYIBZEc3ADLooZozuiIBUgGKEgAKGhIhehIgA5AwAgAiAAvUI0iKdB/w9xa0EySARAIBghFQwBCyABIBggFkQAAAAuihmjO6IiAKEiFSAWRMFJICWag3s5oiAYIBWhIAChoSIXoSIAOQMACyABIBUgAKEgF6E5AwgMAQsgBkGAgMD/B08EQCABIAAgAKEiADkDACABIAA5AwhBACEDDAELIAlBEGoiA0EIciEEIBlC/////////weDQoCAgICAgICwwQCEvyEAQQEhAgNAIAMgAPwCtyIVOQMAIAAgFaFEAAAAAAAAcEGiIQAgAkEAIQIgBCEDDQALIAkgADkDIEECIQMDQCADIgJBAWshAyAJQRBqIg4gAkEDdGorAwBEAAAAAAAAAABhDQALQQAhBCMAQbAEayIFJAAgBkEUdkGWCGsiA0EDa0EYbSIIQQAgCEEAShsiB0FobCADaiELQaQLKAIAIgggAkEBaiIMQQFrIgpqQQBOBEAgCCAMaiEDIAcgCmshAgNAIAVBwAJqIARBA3RqIAJBAEgEfEQAAAAAAAAAAAUgAkECdCgCsAu3CzkDACACQQFqIQIgBEEBaiIEIANHDQALCyALQRhrIQZBACEDIAhBACAIQQBKGyEEIAxBAEwhDQNAAkAgDQRARAAAAAAAAAAAIQAMAQsgAyAKaiEPQQAhAkQAAAAAAAAAACEAA0AgDiACQQN0aisDACAFQcACaiAPIAJrQQN0aisDAKIgAKAhACACQQFqIgIgDEcNAAsLIAUgA0EDdGogADkDACADIARGIANBAWohA0UNAAtBLyALayEQQTAgC2shDyAHQQJ0QbALaiERIAtBGWshEiAIIQMCQANAIAUgA0EDdGorAwAhAEEAIQIgAyEEIANBAEoEQANAIAVB4ANqIAJBAnRqIABEAAAAAAAAcD6i/AK3IhVEAAAAAAAAcMGiIACg/AI2AgAgBSAEQQN0akEIaysDACAVoCEAIARBAWshBCACQQFqIgIgA0cNAAsLIAAgBhAmIgAgAEQAAAAAAADAP6KcRAAAAAAAACDAoqAiACAA/AIiDbehIQACQAJAAkACfyAGQQBMIhNFBEAgA0ECdCAFaiICIAIoAtwDIgIgAiAPdSICIA90ayIENgLcAyACIA1qIQ0gBCAQdQwBCyAGDQEgA0ECdCAFaigC3ANBF3ULIgpBAEwNAgwBC0ECIQogAEQAAAAAAADgP2YNAEEAIQoMAQtBACECQQAhB0EBIQQgA0EASgRAA0AgBUHgA2ogAkECdGoiFCgCACEEAn8CQCAUIAcEf0H///8HBSAERQ0BQYCAgAgLIARrNgIAQQEhB0EADAELQQAhB0EBCyEEIAJBAWoiAiADRw0ACwsCQCATDQBB////AyECAkACQCASDgIBAAILQf///wEhAgsgA0ECdCAFaiIHIAcoAtwDIAJxNgLcAwsgDUEBaiENIApBAkcNAEQAAAAAAADwPyAAoSEAQQIhCiAEDQAgAEQAAAAAAADwPyAGECahIQALIABEAAAAAAAAAABhBEBBACEEIAMhAgJAIAMgCEwNAANAIAVB4ANqIAJBAWsiAkECdGooAgAgBHIhBCACIAhKDQALIARFDQADQCAGQRhrIQYgBUHgA2ogA0EBayIDQQJ0aigCAEUNAAsMAwtBASECA0AgAiIEQQFqIQIgBUHgA2ogCCAEa0ECdGooAgBFDQALIAMgBGohBANAIAVBwAJqIAMgDGoiB0EDdGogESADQQFqIgNBAnRqKAIAtzkDAEEAIQJEAAAAAAAAAAAhACAMQQBKBEADQCAOIAJBA3RqKwMAIAVBwAJqIAcgAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBSADQQN0aiAAOQMAIAMgBEgNAAsgBCEDDAELCwJAIABBGCALaxAmIgBEAAAAAAAAcEFmBEAgBUHgA2ogA0ECdGogAEQAAAAAAABwPqL8AiICt0QAAAAAAABwwaIgAKD8AjYCACADQQFqIQMgCyEGDAELIAD8AiECCyAFQeADaiADQQJ0aiACNgIAC0QAAAAAAADwPyAGECYhACADQQBOBEAgAyECA0AgBSACIgRBA3RqIAAgBUHgA2ogAkECdGooAgC3ojkDACACQQFrIQIgAEQAAAAAAABwPqIhACAEDQALQQAhByADIQQDQCAIIAcgByAIShshBiADIARrIQsgBSAEQQN0aiEMQQAhAkQAAAAAAAAAACEAA0AgAkEDdCIOKwOAISAMIA5qKwMAoiAAoCEAIAIgBkcgAkEBaiECDQALIAVBoAFqIAtBA3RqIAA5AwAgBEEBayEEIAMgB0cgB0EBaiEHDQALC0QAAAAAAAAAACEAIANBAE4EQCADIQIDQCACIgRBAWshAiAAIAVBoAFqIARBA3RqKwMAoCEAIAQNAAsLIAkgAJogACAKGzkDACAFKwOgASAAoSEAQQEhAiADQQBKBEADQCAAIAVBoAFqIAJBA3RqKwMAoCEAIAIgA0cgAkEBaiECDQALCyAJIACaIAAgChs5AwggBUGwBGokACANQQdxIQMgCSsDACEAIBlCAFMEQCABIACaOQMAIAEgCSsDCJo5AwhBACADayEDDAELIAEgADkDACABIAkrAwg5AwgLIAlBMGokACADC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgACADoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBCAFoqGiIAGhIARESVVVVVVVxT+ioKELvAECAn8BfCMAQRBrIgEkAAJ8IAC9QiCIp0H/////B3EiAkH7w6T/A00EQEQAAAAAAADwPyACQZ7BmvIDSQ0BGiAARAAAAAAAAAAAEB8MAQsgACAAoSACQYCAwP8HTw0AGiAAIAEQICECIAErAwghACABKwMAIQMCQAJAAkACQCACQQNxQQFrDgMBAgMACyADIAAQHwwDCyADIABBARAhmgwCCyADIAAQH5oMAQsgAyAAQQEQIQsgAUEQaiQAC7MEAwN8An8CfgJ8AkAgAL1CNIinQf8PcSIFQckHa0E/SQRAIAUhBAwBCyAFQckHSQRAIABEAAAAAAAA8D+gDwsgBUGJCEkNAEQAAAAAAAAAACAAvSIGQoCAgICAgIB4UQ0BGiAFQf8PTwRAIABEAAAAAAAA8D+gDwsgBkIAUwRAIwBBEGsiBEQAAAAAAAAAEDkDCCAEKwMIRAAAAAAAAAAQog8LIwBBEGsiBEQAAAAAAAAAcDkDCCAEKwMIRAAAAAAAAABwog8LIABBwCErAwCiQcghKwMAIgGgIgIgAaEiAUHYISsDAKIgAUHQISsDAKIgAKCgIgEgAaIiACAAoiABQfghKwMAokHwISsDAKCiIAAgAUHoISsDAKJB4CErAwCgoiACvSIGp0EEdEHwD3EiBSsDsCIgAaCgoCEBIAUpA7giIAZCLYZ8IQcgBEUEQAJ8IAZCgICAgAiDUARAIAdCgICAgICAgIg/fb8iACABoiAAoEQAAAAAAAAAf6IMAQsgB0KAgICAgICA8D98vyICIAGiIgEgAqAiA0QAAAAAAADwP2MEfCMAQRBrIgRCgICAgICAgAg3AwggBCAEKwMIRAAAAAAAABAAojkDCEQAAAAAAAAAACADRAAAAAAAAPA/oCIAIAEgAiADoaAgA0QAAAAAAADwPyAAoaCgoEQAAAAAAADwv6AiACAARAAAAAAAAAAAYRsFIAMLRAAAAAAAABAAogsPCyAHvyIAIAGiIACgCwvBBAMBfwZ8An4gAL0iCEIwiKchASAIQoCAgICAgID3P31C//////+fwgFYBEAgCEKAgICAgICA+D9RBEBEAAAAAAAAAAAPCyAARAAAAAAAAPC/oCIAIAAgAEQAAAAAAACgQaIiAqAgAqEiAiACokHoMisDACIFoiIGoCIHIAAgACAAoiIDoiIEIAQgBCAEQbgzKwMAoiADQbAzKwMAoiAAQagzKwMAokGgMysDAKCgoKIgA0GYMysDAKIgAEGQMysDAKJBiDMrAwCgoKCiIANBgDMrAwCiIABB+DIrAwCiQfAyKwMAoKCgoiAAIAKhIAWiIAAgAqCiIAYgACAHoaCgoKAPCwJAIAFB8P8Ba0GfgH5NBEAgAEQAAAAAAAAAAGEEQCMAQRBrIgFEAAAAAAAA8L85AwggASsDCEQAAAAAAAAAAKMPCyAIQoCAgICAgID4/wBRDQEgAUHw/wFxQfD/AUcgAUH//wFNcUUEQCAAIAChIgAgAKMPCyAARAAAAAAAADBDor1CgICAgICAgKADfSEICyAIQoCAgICAgIDzP30iCUI0h7kiA0GwMisDAKIgCUItiKdB/wBxQQR0IgErA8gzoCIEIAErA8AzIAggCUKAgICAgICAeIN9vyABKwPAQ6EgASsDyEOhoiIAoCIFIAAgACAAoiICoiACIABB4DIrAwCiQdgyKwMAoKIgAEHQMisDAKJByDIrAwCgoKIgAkHAMisDAKIgA0G4MisDAKIgACAEIAWhoKCgoKAhAAsgAAumAQMBfAF+AX8gAL0iAkI0iKdB/w9xIgNBsghNBHwgA0H9B00EfCAARAAAAAAAAAAAogUCfCAAmSIARAAAAAAAADBDoEQAAAAAAAAww6AgAKEiAUQAAAAAAADgP2QEQCAAIAGgRAAAAAAAAPC/oAwBCyAAIAGgIgAgAUQAAAAAAADgv2VFDQAaIABEAAAAAAAA8D+gCyIAmiAAIAJCAFMbCwUgAAv8AguoAQACQCABQYAITgRAIABEAAAAAAAA4H+iIQAgAUH/D0kEQCABQf8HayEBDAILIABEAAAAAAAA4H+iIQBB/RcgASABQf0XTxtB/g9rIQEMAQsgAUGBeEoNACAARAAAAAAAAGADoiEAIAFBuHBLBEAgAUHJB2ohAQwBCyAARAAAAAAAAGADoiEAQfBoIAEgAUHwaE0bQZIPaiEBCyAAIAFB/wdqrUI0hr+iC8QBAgJ/AXwjAEEQayIBJAACQCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEAgAkGAgMDyA0kNASAARAAAAAAAAAAAQQAQISEADAELIAJBgIDA/wdPBEAgACAAoSEADAELIAAgARAgIQIgASsDCCEAIAErAwAhAwJAAkACQAJAIAJBA3FBAWsOAwECAwALIAMgAEEBECEhAAwDCyADIAAQHyEADAILIAMgAEEBECGaIQAMAQsgAyAAEB+aIQALIAFBEGokACAAC58DAwJ8AX4CfyAAvSIFQoCAgICA/////wCDQoGAgIDwhOXyP1QiBkUEQEQYLURU+yHpPyAAmaFEB1wUMyamgTwgASABmiAFQgBZIgcboaAhAEQAAAAAAAAAACEBCyAAIAAgACAAoiIEoiIDRGNVVVVVVdU/oiAEIAMgBCAEoiIDIAMgAyADIANEc1Ng28t1876iRKaSN6CIfhQ/oKJEAWXy8thEQz+gokQoA1bJIm1tP6CiRDfWBoT0ZJY/oKJEev4QERERwT+gIAQgAyADIAMgAyADRNR6v3RwKvs+okTpp/AyD7gSP6CiRGgQjRr3JjA/oKJEFYPg/sjbVz+gokSThG7p4yaCP6CiRP5Bsxu6oas/oKKgoiABoKIgAaCgIgOgIQEgBkUEQEEBIAJBAXRrtyIEIAAgAyABIAGiIAEgBKCjoaAiACAAoKEiACAAmiAHGw8LIAIEfEQAAAAAAADwvyABoyIEIAS9QoCAgIBwg78iBCADIAG9QoCAgIBwg78iASAAoaGiIAQgAaJEAAAAAAAA8D+goKIgBKAFIAELC4EBAQJ/IwBBEGsiASQAAkAgAL1CIIinQf////8HcSICQfvDpP8DTQRAIAJBgICA8gNJDQEgAEQAAAAAAAAAAEEAECghAAwBCyACQYCAwP8HTwRAIAAgAKEhAAwBCyAAIAEQICECIAErAwAgASsDCCACQQFxECghAAsgAUEQaiQAIAALsigBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQcDXACgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgNBA3QiAUHo1wBqIgAgASgC8FciAigCCCIFRgRAQcDXACAEQX4gA3dxNgIADAELIAUgADYCDCAAIAU2AggLIAJBCGohACACIAFBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkHI1wAoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgNBA3QiAUHo1wBqIgIgASgC8FciACgCCCIFRgRAQcDXACAEQX4gA3dxIgQ2AgAMAQsgBSACNgIMIAIgBTYCCAsgACAGQQNyNgIEIAAgBmoiAyABIAZrIgVBAXI2AgQgACABaiAFNgIAIAgEQCAIQXhxQejXAGohAUHU1wAoAgAhAgJ/IARBASAIQQN2dCIHcUUEQEHA1wAgBCAHcjYCACABDAELIAEoAggLIQQgASACNgIIIAQgAjYCDCACIAE2AgwgAiAENgIICyAAQQhqIQBB1NcAIAM2AgBByNcAIAU2AgAMCwtBxNcAKAIAIgtFDQEgC2hBAnQoAvBZIgIoAgRBeHEgBmshAyACIQEDQAJAIAEoAhAiAEUEQCABKAIUIgBFDQELIAAoAgRBeHEgBmsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAQsLIAIoAhghCSACIAIoAgwiAEcEQCACKAIIIgEgADYCDCAAIAE2AggMCgsgAigCFCIBBH8gAkEUagUgAigCECIBRQ0DIAJBEGoLIQUDQCAFIQcgASIAQRRqIQUgACgCFCIBDQAgAEEQaiEFIAAoAhAiAQ0ACyAHQQA2AgAMCQtBfyEGIABBv39LDQAgAEELaiIBQXhxIQZBxNcAKAIAIgdFDQBBHyEIQQAgBmshAyAAQfT//wdNBEAgBkEmIAFBCHZnIgBrdkEBcSAAQQF0a0E+aiEICwJAAkACQCAIQQJ0KALwWSIBRQRAQQAhAAwBC0EAIQAgBkEZIAhBAXZrQQAgCEEfRxt0IQIDQAJAIAEoAgRBeHEgBmsiBCADTw0AIAEhBSAEIgMNAEEAIQMgASEADAMLIAAgASgCFCIEIAQgASACQR12QQRxaigCECIBRhsgACAEGyEAIAJBAXQhAiABDQALCyAAIAVyRQRAQQAhBUECIAh0IgBBACAAa3IgB3EiAEUNAyAAaEECdCgC8FkhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANByNcAKAIAIAZrTw0AIAUoAhghCCAFIAUoAgwiAEcEQCAFKAIIIgEgADYCDCAAIAE2AggMCAsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0DIAVBEGoLIQIDQCACIQQgASIAQRRqIQIgACgCFCIBDQAgAEEQaiECIAAoAhAiAQ0ACyAEQQA2AgAMBwsgBkHI1wAoAgAiBU0EQEHU1wAoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQcjXACABNgIAQdTXACACNgIAIABBCGohAAwJCyAGQczXACgCACICSQRAQczXACACIAZrIgE2AgBB2NcAQdjXACgCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QZjbACgCAARAQaDbACgCAAwBC0Gk2wBCfzcCAEGc2wBCgKCAgICABDcCAEGY2wAgCkEMakFwcUHYqtWqBXM2AgBBrNsAQQA2AgBB/NoAQQA2AgBBgCALIgFqIgRBACABayIHcSIBIAZNDQhB+NoAKAIAIgUEQEHw2gAoAgAiCCABaiIJIAhNIAUgCUlyDQkLAkBB/NoALQAAQQRxRQRAAkACQAJAAkBB2NcAKAIAIgUEQEGA2wAhAANAIAAoAgAiCCAFTQRAIAUgCCAAKAIEakkNAwsgACgCCCIADQALC0EAECwiAkF/Rg0DIAEhBEGc2wAoAgAiAEEBayIFIAJxBEAgASACayACIAVqQQAgAGtxaiEECyAEIAZNDQNB+NoAKAIAIgAEQEHw2gAoAgAiBSAEaiIHIAVNIAAgB0lyDQQLIAQQLCIAIAJHDQEMBQsgBCACayAHcSIEECwiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtBoNsAKAIAIgIgAyAEa2pBACACa3EiAhAsQX9GDQEgAiAEaiEEIAAhAgwDCyACQX9HDQILQfzaAEH82gAoAgBBBHI2AgALIAEQLCICQX9GQQAQLCIAQX9GciAAIAJNcg0FIAAgAmsiBCAGQShqTQ0FC0Hw2gBB8NoAKAIAIARqIgA2AgBB9NoAKAIAIABJBEBB9NoAIAA2AgALAkBB2NcAKAIAIgMEQEGA2wAhAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQdDXACgCACIAQQAgACACTRtFBEBB0NcAIAI2AgALQQAhAEGE2wAgBDYCAEGA2wAgAjYCAEHg1wBBfzYCAEHk1wBBmNsAKAIANgIAQYzbAEEANgIAA0AgAEEDdCIBIAFB6NcAaiIFNgLwVyABIAU2AvRXIABBAWoiAEEgRw0AC0HM1wAgBEEoayIAQXggAmtBB3EiAWsiBTYCAEHY1wAgASACaiIBNgIAIAEgBUEBcjYCBCAAIAJqQSg2AgRB3NcAQajbACgCADYCAAwECyACIANNIAEgA0tyDQIgACgCDEEIcQ0CIAAgBCAFajYCBEHY1wAgA0F4IANrQQdxIgBqIgE2AgBBzNcAQczXACgCACAEaiICIABrIgA2AgAgASAAQQFyNgIEIAIgA2pBKDYCBEHc1wBBqNsAKAIANgIADAMLQQAhAAwGC0EAIQAMBAtB0NcAKAIAIAJLBEBB0NcAIAI2AgALIAIgBGohBUGA2wAhAAJAA0AgBSAAKAIAIgFHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQMLQYDbACEAA0ACQCAAKAIAIgEgA00EQCADIAEgACgCBGoiBUkNAQsgACgCCCEADAELC0HM1wAgBEEoayIAQXggAmtBB3EiAWsiBzYCAEHY1wAgASACaiIBNgIAIAEgB0EBcjYCBCAAIAJqQSg2AgRB3NcAQajbACgCADYCACADIAVBJyAFa0EHcWpBL2siACAAIANBEGpJGyIBQRs2AgQgAUGI2wApAgA3AhAgAUGA2wApAgA3AghBiNsAIAFBCGo2AgBBhNsAIAQ2AgBBgNsAIAI2AgBBjNsAQQA2AgAgAUEYaiEAA0AgAEEHNgIEIABBCGogAEEEaiEAIAVJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAAn8gAkH/AU0EQCACQfgBcUHo1wBqIQACf0HA1wAoAgAiAUEBIAJBA3Z0IgJxRQRAQcDXACABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMQQwhAkEIDAELQR8hACACQf///wdNBEAgAkEmIAJBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyADIAA2AhwgA0IANwIQIABBAnRB8NkAaiEBAkACQEHE1wAoAgAiBUEBIAB0IgRxRQRAQcTXACAEIAVyNgIAIAEgAzYCAAwBCyACQRkgAEEBdmtBACAAQR9HG3QhACABKAIAIQUDQCAFIgEoAgRBeHEgAkYNAiAAQR12IQUgAEEBdCEAIAEgBUEEcWoiBCgCECIFDQALIAQgAzYCEAsgAyABNgIYQQghAiADIgEhAEEMDAELIAEoAggiACADNgIMIAEgAzYCCCADIAA2AghBACEAQRghAkEMCyADaiABNgIAIAIgA2ogADYCAAtBzNcAKAIAIgAgBk0NAEHM1wAgACAGayIBNgIAQdjXAEHY1wAoAgAiACAGaiICNgIAIAIgAUEBcjYCBCAAIAZBA3I2AgQgAEEIaiEADAQLQbzXAEEwNgIAQQAhAAwDCyAAIAI2AgAgACAAKAIEIARqNgIEIAJBeCACa0EHcWoiCCAGQQNyNgIEIAFBeCABa0EHcWoiBCAGIAhqIgNrIQcCQEHY1wAoAgAgBEYEQEHY1wAgAzYCAEHM1wBBzNcAKAIAIAdqIgA2AgAgAyAAQQFyNgIEDAELQdTXACgCACAERgRAQdTXACADNgIAQcjXAEHI1wAoAgAgB2oiADYCACADIABBAXI2AgQgACADaiAANgIADAELIAQoAgQiAEEDcUEBRgRAIABBeHEhCSAEKAIMIQICQCAAQf8BTQRAIAQoAggiASACRgRAQcDXAEHA1wAoAgBBfiAAQQN2d3E2AgAMAgsgASACNgIMIAIgATYCCAwBCyAEKAIYIQYCQCACIARHBEAgBCgCCCIAIAI2AgwgAiAANgIIDAELAkAgBCgCFCIABH8gBEEUagUgBCgCECIARQ0BIARBEGoLIQEDQCABIQUgACICQRRqIQEgACgCFCIADQAgAkEQaiEBIAIoAhAiAA0ACyAFQQA2AgAMAQtBACECCyAGRQ0AAkAgBCgCHCIAQQJ0IgEoAvBZIARGBEAgAUHw2QBqIAI2AgAgAg0BQcTXAEHE1wAoAgBBfiAAd3E2AgAMAgsCQCAEIAYoAhBGBEAgBiACNgIQDAELIAYgAjYCFAsgAkUNAQsgAiAGNgIYIAQoAhAiAARAIAIgADYCECAAIAI2AhgLIAQoAhQiAEUNACACIAA2AhQgACACNgIYCyAHIAlqIQcgBCAJaiIEKAIEIQALIAQgAEF+cTYCBCADIAdBAXI2AgQgAyAHaiAHNgIAIAdB/wFNBEAgB0H4AXFB6NcAaiEAAn9BwNcAKAIAIgFBASAHQQN2dCICcUUEQEHA1wAgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDCADIAA2AgwgAyABNgIIDAELQR8hAiAHQf///wdNBEAgB0EmIAdBCHZnIgBrdkEBcSAAQQF0a0E+aiECCyADIAI2AhwgA0IANwIQIAJBAnRB8NkAaiEAAkACQEHE1wAoAgAiAUEBIAJ0IgVxRQRAQcTXACABIAVyNgIAIAAgAzYCAAwBCyAHQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQEDQCABIgAoAgRBeHEgB0YNAiACQR12IQEgAkEBdCECIAAgAUEEcWoiBSgCECIBDQALIAUgAzYCEAsgAyAANgIYIAMgAzYCDCADIAM2AggMAQsgACgCCCIBIAM2AgwgACADNgIIIANBADYCGCADIAA2AgwgAyABNgIICyAIQQhqIQAMAgsCQCAIRQ0AAkAgBSgCHCIBQQJ0IgIoAvBZIAVGBEAgAkHw2QBqIAA2AgAgAA0BQcTXACAHQX4gAXdxIgc2AgAMAgsCQCAFIAgoAhBGBEAgCCAANgIQDAELIAggADYCFAsgAEUNAQsgACAINgIYIAUoAhAiAQRAIAAgATYCECABIAA2AhgLIAUoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCAFIAMgBmoiAEEDcjYCBCAAIAVqIgAgACgCBEEBcjYCBAwBCyAFIAZBA3I2AgQgBSAGaiIEIANBAXI2AgQgAyAEaiADNgIAIANB/wFNBEAgA0H4AXFB6NcAaiEAAn9BwNcAKAIAIgFBASADQQN2dCICcUUEQEHA1wAgASACcjYCACAADAELIAAoAggLIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCABNgIIDAELQR8hACADQf///wdNBEAgA0EmIANBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyAEIAA2AhwgBEIANwIQIABBAnRB8NkAaiEBAkACQCAHQQEgAHQiAnFFBEBBxNcAIAIgB3I2AgAgASAENgIAIAQgATYCGAwBCyADQRkgAEEBdmtBACAAQR9HG3QhACABKAIAIQEDQCABIgIoAgRBeHEgA0YNAiAAQR12IQEgAEEBdCEAIAIgAUEEcWoiBygCECIBDQALIAcgBDYCECAEIAI2AhgLIAQgBDYCDCAEIAQ2AggMAQsgAigCCCIAIAQ2AgwgAiAENgIIIARBADYCGCAEIAI2AgwgBCAANgIICyAFQQhqIQAMAQsCQCAJRQ0AAkAgAigCHCIBQQJ0IgUoAvBZIAJGBEAgBUHw2QBqIAA2AgAgAA0BQcTXACALQX4gAXdxNgIADAILAkAgAiAJKAIQRgRAIAkgADYCEAwBCyAJIAA2AhQLIABFDQELIAAgCTYCGCACKAIQIgEEQCAAIAE2AhAgASAANgIYCyACKAIUIgFFDQAgACABNgIUIAEgADYCGAsCQCADQQ9NBEAgAiADIAZqIgBBA3I2AgQgACACaiIAIAAoAgRBAXI2AgQMAQsgAiAGQQNyNgIEIAIgBmoiBSADQQFyNgIEIAMgBWogAzYCACAIBEAgCEF4cUHo1wBqIQBB1NcAKAIAIQECf0EBIAhBA3Z0IgcgBHFFBEBBwNcAIAQgB3I2AgAgAAwBCyAAKAIICyEEIAAgATYCCCAEIAE2AgwgASAANgIMIAEgBDYCCAtB1NcAIAU2AgBByNcAIAM2AgALIAJBCGohAAsgCkEQaiQAIAALgAwBCH8CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQJxRQ0BIAMgAygCACIBayIDQdDXACgCAEkNASAAIAFqIQACQAJAAkBB1NcAKAIAIANHBEAgAygCDCECIAFB/wFNBEAgAiADKAIIIgRHDQJBwNcAQcDXACgCAEF+IAFBA3Z3cTYCAAwFCyADKAIYIQYgAiADRwRAIAMoAggiASACNgIMIAIgATYCCAwECyADKAIUIgEEfyADQRRqBSADKAIQIgFFDQMgA0EQagshBANAIAQhByABIgJBFGohBCACKAIUIgENACACQRBqIQQgAigCECIBDQALIAdBADYCAAwDCyAFKAIEIgFBA3FBA0cNA0HI1wAgADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAUgADYCAA8LIAQgAjYCDCACIAQ2AggMAgtBACECCyAGRQ0AAkAgAygCHCIBQQJ0IgQoAvBZIANGBEAgBEHw2QBqIAI2AgAgAg0BQcTXAEHE1wAoAgBBfiABd3E2AgAMAgsCQCADIAYoAhBGBEAgBiACNgIQDAELIAYgAjYCFAsgAkUNAQsgAiAGNgIYIAMoAhAiAQRAIAIgATYCECABIAI2AhgLIAMoAhQiAUUNACACIAE2AhQgASACNgIYCyADIAVPDQAgBSgCBCIBQQFxRQ0AAkACQAJAAkAgAUECcUUEQEHY1wAoAgAgBUYEQEHY1wAgAzYCAEHM1wBBzNcAKAIAIABqIgA2AgAgAyAAQQFyNgIEIANB1NcAKAIARw0GQcjXAEEANgIAQdTXAEEANgIADwtB1NcAKAIAIgggBUYEQEHU1wAgAzYCAEHI1wBByNcAKAIAIABqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAFBeHEgAGohACAFKAIMIQIgAUH/AU0EQCAFKAIIIgQgAkYEQEHA1wBBwNcAKAIAQX4gAUEDdndxNgIADAULIAQgAjYCDCACIAQ2AggMBAsgBSgCGCEGIAIgBUcEQCAFKAIIIgEgAjYCDCACIAE2AggMAwsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0CIAVBEGoLIQQDQCAEIQcgASICQRRqIQQgAigCFCIBDQAgAkEQaiEEIAIoAhAiAQ0ACyAHQQA2AgAMAgsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgAMAwtBACECCyAGRQ0AAkAgBSgCHCIBQQJ0IgQoAvBZIAVGBEAgBEHw2QBqIAI2AgAgAg0BQcTXAEHE1wAoAgBBfiABd3E2AgAMAgsCQCAFIAYoAhBGBEAgBiACNgIQDAELIAYgAjYCFAsgAkUNAQsgAiAGNgIYIAUoAhAiAQRAIAIgATYCECABIAI2AhgLIAUoAhQiAUUNACACIAE2AhQgASACNgIYCyADIABBAXI2AgQgACADaiAANgIAIAMgCEcNAEHI1wAgADYCAA8LIABB/wFNBEAgAEH4AXFB6NcAaiEBAn9BwNcAKAIAIgRBASAAQQN2dCIAcUUEQEHA1wAgACAEcjYCACABDAELIAEoAggLIQAgASADNgIIIAAgAzYCDCADIAE2AgwgAyAANgIIDwtBHyECIABB////B00EQCAAQSYgAEEIdmciAWt2QQFxIAFBAXRrQT5qIQILIAMgAjYCHCADQgA3AhAgAkECdEHw2QBqIQQCfwJAAn9BxNcAKAIAIgFBASACdCIHcUUEQEHE1wAgASAHcjYCACAEIAM2AgBBGCECQQgMAQsgAEEZIAJBAXZrQQAgAkEfRxt0IQIgBCgCACEEA0AgBCIBKAIEQXhxIABGDQIgAkEddiEEIAJBAXQhAiABIARBBHFqIgcoAhAiBA0ACyAHIAM2AhBBGCECIAEhBEEICyEAIAMiAQwBCyABKAIIIgQgAzYCDCABIAM2AghBGCEAQQghAkEACyEHIAIgA2ogBDYCACADIAE2AgwgACADaiAHNgIAQeDXAEHg1wAoAgBBAWsiAEF/IAAbNgIACwt0AgF/AX4CQEG41wAoAgAiAa0gAK1CB3xC+P///x+DfCICQv////8PWARAIAKnIgA/AEEQdE0NASAAPwBBEHRrQf//A2pBEHZAAEF/RgR/QQAFQQAQBEEBCw0BC0G81wBBMDYCAEF/DwtBuNcAIAA2AgAgAQs6AQJ/QQEgACAAQQFNGyEBA0ACQCABECoiAA0AQbDbACgCACICRQ0AIAIRBwAMAQsLIABFBEAACyAACw4AIABB0ABqECpB0ABqCwQAIAALAgALBgAgABArC3EBAX8gAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCwJAIAAoAgQiAy0AACIARSABKAIEIgItAAAiASAAR3INAANAIAItAAEhASADLQABIgBFDQEgAkEBaiECIANBAWohAyAAIAFGDQALCyAAIAFGC6EFAQZ/IwBB0ABrIgUkAAJAAn9BASAAIAFBABAyDQAaQQAgAUUNABojAEEQayIGJAAgBiABKAIAIgdBCGsoAgAiBDYCDCAGIAEgBGo2AgQgBiAHQQRrKAIANgIIIAYoAggiB0Hw0wBBABAyIQQgBigCBCEIAkAgBARAIAYoAgwhASMAQUBqIgMkACADQUBrJABBACAIIAEbIQMMAQsjAEFAaiIEJAAgASAITgRAIARCADcCFCAEQQA2AhAgBEHw0wA2AgwgBCAHNgIEIARCADcCHCAEQgA3AiQgBEIANwIsIARBADYCPCAEQoGAgICAgICAATcCNCAEIAE2AgggByAEQQRqIAggCEEBQQAgBygCACgCFBEGACABQQAgBCgCHBshAwsgBEFAayQAIAMNACMAQUBqIgMkACADQQA2AhAgA0HA0wA2AgwgAyABNgIIIANB8NMANgIEQQAhASADQRRqQQBBJ/wLACADQQA2AjwgA0EBOgA7IAcgA0EEaiAIQQFBACAHKAIAKAIYEQUAAkACQAJAIAMoAigOAgABAgsgAygCGEEAIAMoAiRBAUYbQQAgAygCIEEBRhtBACADKAIsQQFGGyEBDAELIAMoAhxBAUcEQCADKAIsDQEgAygCIEEBRw0BIAMoAiRBAUcNAQsgAygCFCEBCyADQUBrJAAgASEDCyAGQRBqJABBACADRQ0AGiACKAIAIgFFDQEgBUEYakEAQTj8CwAgBUEBOgBLIAVBfzYCICAFIAA2AhwgBSADNgIUIAVBATYCRCADIAVBFGogAUEBIAMoAgAoAhwRAgAgBSgCLCIAQQFGBEAgAiAFKAIkNgIACyAAQQFGCyAFQdAAaiQADwsgBUGECTYCCCAFQecDNgIEIAVBkQg2AgAAC3YBAX8gACgCJCIDRQRAIAAgAjYCGCAAIAE2AhAgAEEBNgIkIAAgACgCODYCFA8LAkACQCAAKAIUIAAoAjhHDQAgACgCECABRw0AIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgA0EBajYCJAsLGAAgACABKAIIQQAQMgRAIAEgAiADEDQLCzEAIAAgASgCCEEAEDIEQCABIAIgAxA0DwsgACgCCCIAIAEgAiADIAAoAgAoAhwRAgALmgEAIABBAToANQJAIAIgACgCBEcNACAAQQE6ADQCQCAAKAIQIgJFBEAgAEEBNgIkIAAgAzYCGCAAIAE2AhAgA0EBRw0CIAAoAjBBAUYNAQwCCyABIAJGBEAgACgCGCICQQJGBEAgACADNgIYIAMhAgsgACgCMEEBRw0CIAJBAUYNAQwCCyAAIAAoAiRBAWo2AiQLIABBAToANgsLiwIAIAAgASgCCCAEEDIEQAJAIAIgASgCBEcNACABKAIcQQFGDQAgASADNgIcCw8LAkAgACABKAIAIAQQMgRAAkAgASgCECACRwRAIAIgASgCFEcNAQsgA0EBRw0CIAFBATYCIA8LIAEgAzYCIAJAIAEoAixBBEYNACABQQA7ATQgACgCCCIAIAEgAiACQQEgBCAAKAIAKAIUEQYAIAEtADVBAUYEQCABQQM2AiwgAS0ANEUNAQwDCyABQQQ2AiwLIAEgAjYCFCABIAEoAihBAWo2AiggASgCJEEBRw0BIAEoAhhBAkcNASABQQE6ADYPCyAAKAIIIgAgASACIAMgBCAAKAIAKAIYEQUACwunAQAgACABKAIIIAQQMgRAAkAgAiABKAIERw0AIAEoAhxBAUYNACABIAM2AhwLDwsCQCAAIAEoAgAgBBAyRQ0AAkAgASgCECACRwRAIAIgASgCFEcNAQsgA0EBRw0BIAFBATYCIA8LIAEgAjYCFCABIAM2AiAgASABKAIoQQFqNgIoAkAgASgCJEEBRw0AIAEoAhhBAkcNACABQQE6ADYLIAFBBDYCLAsLNwAgACABKAIIIAUQMgRAIAEgAiADIAQQNw8LIAAoAggiACABIAIgAyAEIAUgACgCACgCFBEGAAsaACAAIAEoAgggBRAyBEAgASACIAMgBBA3CwsFAEHRCAsFAEH1CAsFAEHgCAsyAQJ/IABBxNYANgIAIAAoAgRBDGsiASABKAIIQQFrIgI2AgggAkEASARAIAEQKwsgAAsLACAAED8aIAAQKwsHACAAKAIECwYAIAAkAAsEACMACwuATwgAQYAIC70BJXM6JWQ6ICVzAHZlY3RvcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAc3RkOjpleGNlcHRpb24AYmFkX2FycmF5X25ld19sZW5ndGgAc3RkOjpiYWRfYWxsb2MAY2F0Y2hpbmcgYSBjbGFzcyB3aXRob3V0IGFuIG9iamVjdD8AAAAAAAEAAAACAAAAAgAAAAEAAAADAEHGCQs68L8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwvwAAAAAAAPC/AAAAAAAA8D8AAAAAAADwvwBBlgoLAvA/AEGuCgsS8D8AAAAAAADwPwAAAAAAAPA/AEHeCguZFvA/T7thBWes3T8YLURU+yHpP5v2gdILc+8/GC1EVPsh+T/iZS8ifyt6PAdcFDMmpoE8vcvweogHcDwHXBQzJqaRPAMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAZxEcAzWfDAAno3ABZgyoAi3bEAKYclgBEr90AGVfRAKU+BQAFB/8AM34/AMIy6ACYT94Au30yACY9wwAea+8An/heADUfOgB/8soA8YcdAHyQIQBqJHwA1W76ADAtdwAVO0MAtRTGAMMZnQCtxMIALE1BAAwAXQCGfUYA43EtAJvGmgAzYgAAtNJ8ALSnlwA3VdUA1z72AKMQGABNdvwAZJ0qAHDXqwBjfPgAerBXABcV5wDASVYAO9bZAKeEOAAkI8sA1op3AFpUIwAAH7kA8QobABnO3wCfMf8AZh5qAJlXYQCs+0cAfn/YACJltwAy6IkA5r9gAO/EzQBsNgkAXT/UABbe1wBYO94A3puSANIiKAAohugA4lhNAMbKMgAI4xYA4H3LABfAUADzHacAGOBbAC4TNACDEmIAg0gBAPWOWwCtsH8AHunyAEhKQwAQZ9MAqt3YAK5fQgBqYc4ACiikANOZtAAGpvIAXHd/AKPCgwBhPIgAinN4AK+MWgBv170ALaZjAPS/ywCNge8AJsFnAFXKRQDK2TYAKKjSAMJhjQASyXcABCYUABJGmwDEWcQAyMVEAE2ykQAAF/MA1EOtAClJ5QD91RAAAL78AB6UzABwzu4AEz71AOzxgACz58MAx/goAJMFlADBcT4ALgmzAAtF8wCIEpwAqyB7AC61nwBHksIAezIvAAxVbQByp5AAa+cfADHLlgB5FkoAQXniAPTfiQDolJcA4uaEAJkxlwCI7WsAX182ALv9DgBImrQAZ6RsAHFyQgCNXTIAnxW4ALzlCQCNMSUA93Q5ADAFHAANDAEASwhoACzuWABHqpAAdOcCAL3WJAD3faYAbkhyAJ8W7wCOlKYAtJH2ANFTUQDPCvIAIJgzAPVLfgCyY2gA3T5fAEBdAwCFiX8AVVIpADdkwABt2BAAMkgyAFtMdQBOcdQARVRuAAsJwQAq9WkAFGbVACcHnQBdBFAAtDvbAOp2xQCH+RcASWt9AB0nugCWaSkAxsysAK0UVACQ4moAiNmJACxyUAAEpL4AdweUAPMwcAAA/CcA6nGoAGbCSQBk4D0Al92DAKM/lwBDlP0ADYaMADFB3gCSOZ0A3XCMABe35wAI3zsAFTcrAFyAoABagJMAEBGSAA/o2ABsgK8A2/9LADiQDwBZGHYAYqUVAGHLuwDHibkAEEC9ANLyBABJdScA67b2ANsiuwAKFKoAiSYvAGSDdgAJOzMADpQaAFE6qgAdo8IAr+2uAFwmEgBtwk0ALXqcAMBWlwADP4MACfD2ACtAjABtMZkAObQHAAwgFQDYw1sA9ZLEAMatSwBOyqUApzfNAOapNgCrkpQA3UJoABlj3gB2jO8AaItSAPzbNwCuoasA3xUxAACuoQAM+9oAZE1mAO0FtwApZTAAV1a/AEf/OgBq+bkAdb7zACiT3wCrgDAAZoz2AATLFQD6IgYA2eQdAD2zpABXG48ANs0JAE5C6QATvqQAMyO1APCqGgBPZagA0sGlAAs/DwBbeM0AI/l2AHuLBACJF3IAxqZTAG9u4gDv6wAAm0pYAMTatwCqZroAds/PANECHQCx8S0AjJnBAMOtdwCGSNoA912gAMaA9ACs8C8A3eyaAD9cvADQ3m0AkMcfACrbtgCjJToAAK+aAK1TkwC2VwQAKS20AEuAfgDaB6cAdqoOAHtZoQAWEioA3LctAPrl/QCJ2/4Aib79AOR2bAAGqfwAPoBwAIVuFQD9h/8AKD4HAGFnMwAqGIYATb3qALPnrwCPbW4AlWc5ADG/WwCE10gAMN8WAMctQwAlYTUAyXDOADDLuAC/bP0ApACiAAVs5ABa3aAAIW9HAGIS0gC5XIQAcGFJAGtW4ACZUgEAUFU3AB7VtwAz8cQAE25fAF0w5ACFLqkAHbLDAKEyNgAIt6QA6rHUABb3IQCPaeQAJ/93AAwDgACNQC0AT82gACClmQCzotMAL10KALT5QgAR2ssAfb7QAJvbwQCrF70AyqKBAAhqXAAuVRcAJwBVAH8U8ADhB4YAFAtkAJZBjQCHvt4A2v0qAGsltgB7iTQABfP+ALm/ngBoak8ASiqoAE/EWgAt+LwA11qYAPTHlQANTY0AIDqmAKRXXwAUP7EAgDiVAMwgAQBx3YYAyd62AL9g9QBNZREAAQdrAIywrACywNAAUVVIAB77DgCVcsMAowY7AMBANQAG3HsA4EXMAE4p+gDWysgA6PNBAHxk3gCbZNgA2b4xAKSXwwB3WNQAaePFAPDaEwC6OjwARhhGAFV1XwDSvfUAbpLGAKwuXQAORO0AHD5CAGHEhwAp/ekA59bzACJ8ygBvkTUACODFAP/XjQBuauIAsP3GAJMIwQB8XXQAa62yAM1unQA+cnsAxhFqAPfPqQApc98Atcm6ALcAUQDisg0AdLokAOV9YAB02IoADRUsAIEYDAB+ZpQAASkWAJ96dgD9/b4AVkXvANl+NgDs2RMAi7q5AMSX/AAxqCcA8W7DAJTFNgDYqFYAtKi1AM/MDgASiS0Ab1c0ACxWiQCZzuMA1iC5AGteqgA+KpwAEV/MAP0LSgDh9PsAjjttAOKGLADp1IQA/LSpAO/u0QAuNckALzlhADghRAAb2cgAgfwKAPtKagAvHNgAU7SEAE6ZjABUIswAKlXcAMDG1gALGZYAGnC4AGmVZAAmWmAAP1LuAH8RDwD0tREA/Mv1ADS8LQA0vO4A6F3MAN1eYABnjpsAkjPvAMkXuABhWJsA4Ve8AFGDxgDYPhAA3XFIAC0c3QCvGKEAISxGAFnz1wDZepgAnlTAAE+G+gBWBvwA5XmuAIkiNgA4rSIAZ5PcAFXoqgCCJjgAyuebAFENpACZM7EAqdcOAGkFSABlsvAAf4inAIhMlwD50TYAIZKzAHuCSgCYzyEAQJ/cANxHVQDhdDoAZ+tCAP6d3wBe1F8Ae2ekALqsegBV9qIAK4gjAEG6VQBZbggAISqGADlHgwCJ4+YA5Z7UAEn7QAD/VukAHA/KAMVZigCU+isA08HFAA/FzwDbWq4AR8WGAIVDYgAhhjsALHmUABBhhwAqTHsAgCwaAEO/EgCIJpAAeDyJAKjE5ADl23sAxDrCACb06gD3Z4oADZK/AGWjKwA9k7EAvXwLAKRR3AAn3WMAaeHdAJqUGQCoKZUAaM4oAAnttABEnyAATpjKAHCCYwB+fCMAD7kyAKf1jgAUVucAIfEIALWdKgBvfk0ApRlRALX5qwCC39YAlt1hABY2AgDEOp8Ag6KhAHLtbQA5jXoAgripAGsyXABGJ1sAADTtANIAdwD89FUAAVlNAOBxgABBgyELrQFA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1/oIrZUcVZ0AAAAAAAAA4QwAA+v5CLna/OjuevJr3DL29/f/////fPzxUVVVVVcU/kSsXz1VVpT8X0KRnERGBPwAAAAAAAMhC7zn6/kIu5j8kxIL/vb/OP7X0DNcIa6w/zFBG0quygz+EOk6b4NdVPwBBviIL9jTwP26/iBpPO5s8NTP7qT327z9d3NicE2BxvGGAdz6a7O8/0WaHEHpekLyFf27oFePvPxP2ZzVS0ow8dIUV07DZ7z/6jvkjgM6LvN723Slr0O8/YcjmYU73YDzIm3UYRcfvP5nTM1vko5A8g/PGyj6+7z9te4NdppqXPA+J+WxYte8//O/9khq1jjz3R3IrkqzvP9GcL3A9vj48otHTMuyj7z8LbpCJNANqvBvT/q9mm+8/Dr0vKlJWlbxRWxLQAZPvP1XqTozvgFC8zDFswL2K7z8W9NW5I8mRvOAtqa6agu8/r1Vc6ePTgDxRjqXImHrvP0iTpeoVG4C8e1F9PLhy7z89Mt5V8B+PvOqNjDj5au8/v1MTP4yJizx1y2/rW2PvPybrEXac2Za81FwEhOBb7z9gLzo+9+yaPKq5aDGHVO8/nTiGy4Lnj7wd2fwiUE3vP43DpkRBb4o81oxiiDtG7z99BOSwBXqAPJbcfZFJP+8/lKio4/2Oljw4YnVuejjvP31IdPIYXoc8P6ayT84x7z/y5x+YK0eAPN184mVFK+8/XghxP3u4lryBY/Xh3yTvPzGrCW3h94I84d4f9Z0e7z/6v28amyE9vJDZ2tB/GO8/tAoMcoI3izwLA+SmhRLvP4/LzomSFG48Vi8+qa8M7z+2q7BNdU2DPBW3MQr+Bu8/THSs4gFChjwx2Ez8cAHvP0r401053Y88/xZksgj87j8EW447gKOGvPGfkl/F9u4/aFBLzO1KkrzLqTo3p/HuP44tURv4B5m8ZtgFba7s7j/SNpQ+6NFxvPef5TTb5+4/FRvOsxkZmbzlqBPDLePuP21MKqdIn4U8IjQSTKbe7j+KaSh6YBKTvByArARF2u4/W4kXSI+nWLwqLvchCtbuPxuaSWebLHy8l6hQ2fXR7j8RrMJg7WNDPC2JYWAIzu4/72QGOwlmljxXAB3tQcruP3kDodrhzG480DzBtaLG7j8wEg8/jv+TPN7T1/Aqw+4/sK96u86QdjwnKjbV2r/uP3fgVOu9HZM8Dd39mbK87j+Oo3EANJSPvKcsnXayue4/SaOT3Mzeh7xCZs+i2rbuP184D73G3ni8gk+dViu07j/2XHvsRhKGvA+SXcqkse4/jtf9GAU1kzzaJ7U2R6/uPwWbii+3mHs8/ceX1BKt7j8JVBzi4WOQPClUSN0Hq+4/6sYZUIXHNDy3RlmKJqnuPzXAZCvmMpQ8SCGtFW+n7j+fdplhSuSMvAncdrnhpe4/qE3vO8UzjLyFVTqwfqTuP67pK4l4U4S8IMPMNEaj7j9YWFZ43c6TvCUiVYI4ou4/ZBl+gKoQVzxzqUzUVaHuPygiXr/vs5O8zTt/Zp6g7j+CuTSHrRJqvL/aC3USoO4/7qltuO9nY7wvGmU8sp/uP1GI4FQ93IC8hJRR+X2f7j/PPlp+ZB94vHRf7Oh1n+4/sH2LwEruhrx0gaVImp/uP4rmVR4yGYa8yWdCVuuf7j/T1Aley5yQPD9d3k9poO4/HaVNudwye7yHAetzFKHuP2vAZ1T97JQ8MsEwAe2h7j9VbNar4etlPGJOzzbzou4/Qs+zL8WhiLwSGj5UJ6TuPzQ3O/G2aZO8E85MmYml7j8e/xk6hF6AvK3HI0Yap+4/bldy2FDUlLztkkSb2ajuPwCKDltnrZA8mWaK2ceq7j+06vDBL7eNPNugKkLlrO4//+fFnGC2ZbyMRLUWMq/uP0Rf81mD9ns8NncVma6x7j+DPR6nHwmTvMb/kQtbtO4/KR5si7ipXbzlxc2wN7fuP1m5kHz5I2y8D1LIy0S67j+q+fQiQ0OSvFBO3p+Cve4/S45m12zKhby6B8pw8cDuPyfOkSv8r3E8kPCjgpHE7j+7cwrhNdJtPCMj4xljyO4/YyJiIgTFh7xl5V17ZszuP9Ux4uOGHIs8My1K7JvQ7j8Vu7zT0buRvF0lPrID1e4/0jHunDHMkDxYszATntnuP7Nac26EaYQ8v/15VWve7j+0nY6Xzd+CvHrz079r4+4/hzPLkncajDyt01qZn+juP/rZ0UqPe5C8ZraNKQfu7j+6rtxW2cNVvPsVT7ii8+4/QPamPQ6kkLw6WeWNcvnuPzSTrTj01mi8R1778nb/7j81ilhr4u6RvEoGoTCwBe8/zd1fCtf/dDzSwUuQHgzvP6yYkvr7vZG8CR7XW8IS7z+zDK8wrm5zPJxShd2bGe8/lP2fXDLjjjx60P9fqyDvP6xZCdGP4IQ8S9FXLvEn7z9nGk44r81jPLXnBpRtL+8/aBmSbCxrZzxpkO/cIDfvP9K1zIMYioC8+sNdVQs/7z9v+v8/Xa2PvHyJB0otR+8/Sal1OK4NkLzyiQ0Ih0/vP6cHPaaFo3Q8h6T73BhY7z8PIkAgnpGCvJiDyRbjYO8/rJLB1VBajjyFMtsD5mnvP0trAaxZOoQ8YLQB8yFz7z8fPrQHIdWCvF+bezOXfO8/yQ1HO7kqibwpofUURobvP9OIOmAEtnQ89j+L5y6Q7z9xcp1R7MWDPINMx/tRmu8/8JHTjxL3j7zakKSir6TvP310I+KYro288WeOLUiv7z8IIKpBvMOOPCdaYe4buu8/Muupw5QrhDyXums3K8XvP+6F0TGpZIo8QEVuW3bQ7z/t4zvkujeOvBS+nK392+8/nc2RTTuJdzzYkJ6BwefvP4nMYEHBBVM88XGPK8Lz7z8AOPr+Qi7mPzBnx5NX8y49AQAAAAAA4L9bMFFVVVXVP5BF6////8+/EQHxJLOZyT+fyAbldVXFvwAAAAAAAOC/d1VVVVVV1T/L/f/////PvwzdlZmZmck/p0VnVVVVxb8w3kSjJEnCP2U9QqT//7+/ytYqKIRxvD//aLBD65m5v4XQr/eCgbc/zUXRdRNStb+f3uDD8DT3PwCQ5nl/zNe/H+ksangT9z8AAA3C7m/Xv6C1+ghg8vY/AOBRE+MT1799jBMfptH2PwB4KDhbuNa/0bTFC0mx9j8AeICQVV3Wv7oMLzNHkfY/AAAYdtAC1r8jQiIYn3H2PwCQkIbKqNW/2R6lmU9S9j8AUANWQ0/Vv8Qkj6pWM/Y/AEBrwzf21L8U3J1rsxT2PwBQqP2nndS/TFzGUmT29T8AqIk5kkXUv08skbVn2PU/ALiwOfTt07/ekFvLvLr1PwBwj0TOltO/eBrZ8mGd9T8AoL0XHkDTv4dWRhJWgPU/AIBG7+Lp0r/Ta+fOl2P1PwDgMDgblNK/k3+n4iVH9T8AiNqMxT7Sv4NFBkL/KvU/AJAnKeHp0b/fvbLbIg/1PwD4SCttldG/1940R4/z9D8A+LmaZ0HRv0Ao3s9D2PQ/AJjvlNDt0L/Io3jAPr30PwAQ2xilmtC/iiXgw3+i9D8AuGNS5kfQvzSE1CQFiPQ/APCGRSLrz78LLRkbzm30PwCwF3VKR8+/VBg509lT9D8AMBA9RKTOv1qEtEQnOvQ/ALDpRA0Czr/7+BVBtSD0PwDwdymiYM2/sfQ+2oIH9D8AkJUEAcDMv4/+V12P7vM/ABCJVikgzL/pTAug2dXzPwAQgY0Xgcu/K8EQwGC98z8A0NPMyeLKv7jadSskpfM/AJASLkBFyr8C0J/NIo3zPwDwHWh3qMm/HHqExVt18z8AMEhpbQzJv+I2rUnOXfM/AMBFpiBxyL9A1E2YeUbzPwAwFLSP1se/JMv/zlwv8z8AcGI8uDzHv0kNoXV3GPM/AGA3m5qjxr+QOT43yAHzPwCgt1QxC8a/QfiVu07r8j8AMCR2fXPFv9GpGQIK1fI/ADDCj3vcxL8q/beo+b7yPwAA0lEsRsS/qxsMehyp8j8AAIO8irDDvzC1FGByk/I/AABJa5kbw7/1oVdX+n3yPwBApJBUh8K/vzsdm7No8j8AoHn4ufPBv731j4OdU/I/AKAsJchgwb87CMmqtz7yPwAg91d/zsC/tkCpKwEq8j8AoP5J3DzAvzJBzJZ5FfI/AIBLvL1Xv7+b/NIdIAHyPwBAQJYIN76/C0hNSfTs8T8AQPk+mBe9v2llj1L12PE/AKDYTmf5u798flcRI8XxPwBgLyB53Lq/6SbLdHyx8T8AgCjnw8C5v7YaLAwBnvE/AMBys0amuL+9cLZ7sIrxPwAArLMBjbe/trzvJYp38T8AADhF8XS2v9oxTDWNZPE/AICHbQ5etb/dXyeQuVHxPwDgod5cSLS/TNIypA4/8T8AoGpN2TOzv9r5EHKLLPE/AGDF+Hkgsr8xtewoMBrxPwAgYphGDrG/rzSE2vsH8T8AANJqbPqvv7NrTg/u9fA/AEB3So3arb/OnypdBuTwPwAAheTsvKu/IaUsY0TS8D8AwBJAiaGpvxqY4nynwPA/AMACM1iIp7/RNsaDL6/wPwCA1mdecaW/OROgmNud8D8AgGVJilyjv9/nUq+rjPA/AEAVZONJob/7KE4vn3vwPwCA64LAcp6/GY81jLVq8D8AgFJS8VWavyz57KXuWfA/AICBz2I9lr+QLNHNSUnwPwAAqoz7KJK/qa3wxsY48D8AAPkgezGMv6kyeRNlKPA/AACqXTUZhL9Ic+onJBjwPwAA7MIDEni/lbEUBgQI8D8AACR5CQRgvxr6Jvcf4O8/AACQhPPvbz906mHCHKHvPwAAPTVB3Ic/LpmBsBBj7z8AgMLEo86TP82t7jz2Je8/AACJFMGfmz/nE5EDyOnuPwAAEc7YsKE/q7HLeICu7j8AwAHQW4qlP5sMnaIadO4/AIDYQINcqT+1mQqDkTruPwCAV+9qJ60/VppgCeAB7j8AwJjlmHWwP5i7d+UByu0/ACAN4/VTsj8DkXwL8pLtPwAAOIvdLrQ/zlz7Zqxc7T8AwFeHWQa2P53eXqosJ+0/AABqNXbatz/NLGs+bvLsPwBgHE5Dq7k/Anmnom2+7D8AYA27x3i7P20IN20mi+w/ACDnMhNDvT8EWF29lFjsPwBg3nExCr8/jJ+7M7Um7D8AQJErFWfAPz/n7O6D9es/ALCSgoVHwT/Bltt1/cTrPwAwys1uJsI/KEqGDB6V6z8AUMWm1wPDPyw+78XiZes/ABAzPMPfwz+LiMlnSDfrPwCAems2usQ/SjAdIUsJ6z8A8NEoOZPFP37v8oXo2+o/APAYJM1qxj+iPWAxHa/qPwCQZuz4QMc/p1jTP+aC6j8A8Br1wBXIP4tzCe9AV+o/AID2VCnpyD8nS6uQKizqPwBA+AI2u8k/0fKTE6AB6j8AACwc7YvKPxs82ySf1+k/ANABXFFbyz+QsccFJa7pPwDAvMxnKcw/L86X8i6F6T8AYEjVNfbMP3VLpO66XOk/AMBGNL3BzT84SOedxjTpPwDgz7gBjM4/5lJnL08N6T8AkBfACVXPP53X/45S5ug/ALgfEmwO0D98AMyfzr/oPwDQkw64cdA/DsO+2sCZ6D8AcIaea9TQP/sXI6ondOg/ANBLM4c20T8ImrOsAE/oPwBII2cNmNE/VT5l6Ekq6D8AgMzg//jRP2AC9JUBBug/AGhj119Z0j8po+BjJeLnPwCoFAkwudI/rbXcd7O+5z8AYEMQchjTP8Ill2eqm+c/ABjsbSZ30z9XBhfyB3nnPwAwr/tP1dM/DBPW28pW5z8A4C/j7jLUP2u2TwEAEOY/PFtCkWwCfjyVtE0DADDmP0FdAEjqv408eNSUDQBQ5j+3pdaGp3+OPK1vTgcAcOY/TCVUa+r8YTyuD9/+/4/mP/0OWUwnfny8vMVjBwCw5j8B2txIaMGKvPbBXB4A0OY/EZNJnRw/gzw+9gXr/+/mP1Mt4hoEgH68gJeGDgAQ5z9SeQlxZv97PBLpZ/z/L+c/JIe9JuIAjDxqEYHf/0/nP9IB8W6RAm68kJxnDwBw5z90nFTNcfxnvDXIfvr/j+c/gwT1nsG+gTzmwiD+/6/nP2VkzCkXfnC8AMk/7f/P5z8ci3sIcoCAvHYaJun/7+c/rvmdbSjAjTzoo5wEABDoPzNM5VHSf4k8jyyTFwAw6D+B8zC26f6KvJxzMwYAUOg/vDVla7+/iTzGiUIgAHDoP3V7EfNlv4u8BHn16/+P6D9Xyz2ibgCJvN8EvCIAsOg/CkvgON8AfbyKGwzl/8/oPwWf/0ZxAIi8Q46R/P/v6D84cHrQe4GDPMdf+h4AEOk/A7TfdpE+iTy5e0YTADDpP3YCmEtOgH88bwfu5v9P6T8uYv/Z8H6PvNESPN7/b+k/ujgmlqqCcLwNikX0/4/pP++oZJEbgIe8Pi6Y3f+v6T83k1qK4ECHvGb7Se3/z+k/AOCbwQjOPzxRnPEgAPDpPwpbiCeqP4q8BrBFEQAQ6j9W2liZSP90PPr2uwcAMOo/GG0riqu+jDx5HZcQAFDqPzB5eN3K/og8SC71HQBw6j/bq9g9dkGPvFIzWRwAkOo/EnbChAK/jrxLPk8qALDqP18//zwE/Wm80R6u1//P6j+0cJAS5z6CvHgEUe7/7+o/o94O4D4GajxbDWXb/w/rP7kKHzjIBlo8V8qq/v8v6z8dPCN0HgF5vNy6ldn/T+s/nyqGaBD/ebycZZ4kAHDrPz5PhtBF/4o8QBaH+f+P6z/5w8KWd/58PE/LBNL/r+s/xCvy7if/Y7xFXEHS/8/rPyHqO+63/2y83wlj+P/v6z9cCy6XA0GBvFN2teH/D+w/GWq3lGTBizzjV/rx/y/sP+3GMI3v/mS8JOS/3P9P7D91R+y8aD+EvPe5VO3/b+w/7OBT8KN+hDzVj5nr/4/sP/GS+Y0Gg3M8miElIQCw7D8EDhhkjv1ovJxGlN3/z+w/curHHL5+jjx2xP3q/+/sP/6In605vo48K/iaFgAQ7T9xWrmokX11PB33Dw0AMO0/2sdwaZDBiTzED3nq/0/tPwz+WMU3Dli85YfcLgBw7T9ED8FN1oB/vKqC3CEAkO0/XFz9lI98dLyDAmvY/6/tP35hIcUdf4w8OUdsKQDQ7T9Tsf+yngGIPPWQROX/7+0/icxSxtIAbjyU9qvN/w/uP9JpLSBAg3+83chS2/8v7j9kCBvKwQB7PO8WQvL/T+4/UauUsKj/cjwRXoro/2/uP1m+77Fz9le8Df+eEQCQ7j8ByAtejYCEvEQXpd//r+4/tSBD1QYAeDyhfxIaANDuP5JcVmD4AlC8xLy6BwDw7j8R5jVdRECFvAKNevX/D+8/BZHvOTH7T7zHiuUeADDvP1URc/KsgYo8lDSC9f9P7z9Dx9fUQT+KPGtMqfz/b+8/dXiYHPQCYrxBxPnh/4/vP0vnd/TRfXc8fuPg0v+v7z8xo3yaGQFvvJ7kdxwA0O8/sazOS+6BcTwxw+D3/+/vP1qHcAE3BW68bmBl9P8P8D/aChxJrX6KvFh6hvP/L/A/4LL8w2l/l7wXDfz9/0/wP1uUyzT+v5c8gk3NAwBw8D/LVuTAgwCCPOjL8vn/j/A/GnU3vt//bbxl2gwBALDwP+sm5q5/P5G8ONOkAQDQ8D/3n0h5+n2APP392vr/7/A/wGvWcAUEd7yW/boLABDxP2ILbYTUgI48XfTl+v8v8T/vNv1k+r+dPNma1Q0AUPE/rlAScHcAmjyaVSEPAHDxP+7e4+L5/Y08JlQn/P+P8T9zcjvcMACRPFk8PRIAsPE/iAEDgHl/mTy3nin4/8/xP2eMn6sy+WW8ANSK9P/v8T/rW6edv3+TPKSGiwwAEPI/Ilv9kWuAnzwDQ4UDADDyPzO/n+vC/5M8hPa8//9P8j9yLi5+5wF2PNkhKfX/b/I/YQx/drv8fzw8OpMUAJDyPytBAjzKAnK8E2NVFACw8j8CH/IzgoCSvDtS/uv/z/I/8txPOH7/iLyWrbgLAPDyP8VBMFBR/4W8r+J6+/8P8z+dKF6IcQCBvH9frP7/L/M/Fbe3P13/kbxWZ6YMAFDzP72CiyKCf5U8Iff7EQBw8z/M1Q3EugCAPLkvWfn/j/M/UaeyLZ0/lLxC0t0EALDzP+E4dnBrf4U8V8my9f/P8z8xEr8QOgJ6PBi0sOr/7/M/sFKxZm1/mDz0rzIVABD0PySFGV83+Gc8KYtHFwAw9D9DUdxy5gGDPGO0lef/T/Q/WomyuGn/iTzgdQTo/2/0P1TywpuxwJW858Fv7/+P9D9yKjryCUCbPASnvuX/r/Q/RX0Nv7f/lLzeJxAXAND0Pz1q3HFkwJm84j7wDwDw9D8cU4ULiX+XPNFL3BIAEPU/NqRmcWUEYDx6JwUWADD1PwkyI87Ov5a8THDb7P9P9T/XoQUFcgKJvKlUX+//b/U/EmTJDua/mzwSEOYXAJD1P5Dvr4HFfog8kj7JAwCw9T/ADL8KCEGfvLwZSR0A0PU/KUcl+yqBmLyJerjn/+/1PwRp7YC3fpS8UCoAAMwpAACgKwAATjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAUCoAAPwpAADAKQAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAAAAAAPApAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAAAAABwKgAABAAAAAwAAAAGAAAABwAAAAgAAAANAAAADgAAAA8AAABQKgAAfCoAAPApAABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAAAAAAAPgqAAABAAAAEAAAABEAAAAAAAAAFCsAAAEAAAASAAAAEwAAAAAAAADgKgAAAQAAABQAAAAVAAAAKCoAAOgqAABTdDlleGNlcHRpb24AAAAAUCoAAAQrAADgKgAAU3Q5YmFkX2FsbG9jAAAAAFAqAAAgKwAA+CoAAFN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aAAAAAAAAAAAUCsAAAIAAAAWAAAAFwAAAFAqAABcKwAA4CoAAFN0MTFsb2dpY19lcnJvcgAAAAAAgCsAAAIAAAAYAAAAFwAAAFAqAACMKwAAUCsAAFN0MTJsZW5ndGhfZXJyb3IAAAAAKCoAAKgrAABTdDl0eXBlX2luZm8AQbjXAAsDwC0B";
|
|
527
|
+
const __vite_glob_0_2 = "data:text/javascript;base64,YXN5bmMgZnVuY3Rpb24gTW9kdWxlKG1vZHVsZUFyZz17fSl7dmFyIG1vZHVsZVJ0bjt2YXIgTW9kdWxlPW1vZHVsZUFyZzt2YXIgRU5WSVJPTk1FTlRfSVNfV0VCPSEhZ2xvYmFsVGhpcy53aW5kb3c7dmFyIEVOVklST05NRU5UX0lTX1dPUktFUj0hIWdsb2JhbFRoaXMuV29ya2VyR2xvYmFsU2NvcGU7dmFyIEVOVklST05NRU5UX0lTX05PREU9Z2xvYmFsVGhpcy5wcm9jZXNzPy52ZXJzaW9ucz8ubm9kZSYmZ2xvYmFsVGhpcy5wcm9jZXNzPy50eXBlIT0icmVuZGVyZXIiO3ZhciBFTlZJUk9OTUVOVF9JU19QVEhSRUFEPUVOVklST05NRU5UX0lTX1dPUktFUiYmc2VsZi5uYW1lPy5zdGFydHNXaXRoKCJlbS1wdGhyZWFkIik7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7Y29uc3R7Y3JlYXRlUmVxdWlyZX09YXdhaXQgaW1wb3J0KCJtb2R1bGUiKTt2YXIgcmVxdWlyZT1jcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7dmFyIHdvcmtlcl90aHJlYWRzPXJlcXVpcmUoIndvcmtlcl90aHJlYWRzIik7Z2xvYmFsLldvcmtlcj13b3JrZXJfdGhyZWFkcy5Xb3JrZXI7RU5WSVJPTk1FTlRfSVNfV09SS0VSPSF3b3JrZXJfdGhyZWFkcy5pc01haW5UaHJlYWQ7RU5WSVJPTk1FTlRfSVNfUFRIUkVBRD1FTlZJUk9OTUVOVF9JU19XT1JLRVImJndvcmtlcl90aHJlYWRzWyJ3b3JrZXJEYXRhIl09PSJlbS1wdGhyZWFkIn12YXIgYXJndW1lbnRzXz1bXTt2YXIgdGhpc1Byb2dyYW09Ii4vdGhpcy5wcm9ncmFtIjt2YXIgcXVpdF89KHN0YXR1cyx0b1Rocm93KT0+e3Rocm93IHRvVGhyb3d9O3ZhciBfc2NyaXB0TmFtZT1pbXBvcnQubWV0YS51cmw7dmFyIHNjcmlwdERpcmVjdG9yeT0iIjtmdW5jdGlvbiBsb2NhdGVGaWxlKHBhdGgpe2lmKE1vZHVsZVsibG9jYXRlRmlsZSJdKXtyZXR1cm4gTW9kdWxlWyJsb2NhdGVGaWxlIl0ocGF0aCxzY3JpcHREaXJlY3RvcnkpfXJldHVybiBzY3JpcHREaXJlY3RvcnkrcGF0aH12YXIgcmVhZEFzeW5jLHJlYWRCaW5hcnk7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7dmFyIGZzPXJlcXVpcmUoImZzIik7aWYoX3NjcmlwdE5hbWUuc3RhcnRzV2l0aCgiZmlsZToiKSl7c2NyaXB0RGlyZWN0b3J5PXJlcXVpcmUoInBhdGgiKS5kaXJuYW1lKHJlcXVpcmUoInVybCIpLmZpbGVVUkxUb1BhdGgoX3NjcmlwdE5hbWUpKSsiLyJ9cmVhZEJpbmFyeT1maWxlbmFtZT0+e2ZpbGVuYW1lPWlzRmlsZVVSSShmaWxlbmFtZSk/bmV3IFVSTChmaWxlbmFtZSk6ZmlsZW5hbWU7dmFyIHJldD1mcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUpO3JldHVybiByZXR9O3JlYWRBc3luYz1hc3luYyhmaWxlbmFtZSxiaW5hcnk9dHJ1ZSk9PntmaWxlbmFtZT1pc0ZpbGVVUkkoZmlsZW5hbWUpP25ldyBVUkwoZmlsZW5hbWUpOmZpbGVuYW1lO3ZhciByZXQ9ZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLGJpbmFyeT91bmRlZmluZWQ6InV0ZjgiKTtyZXR1cm4gcmV0fTtpZihwcm9jZXNzLmFyZ3YubGVuZ3RoPjEpe3RoaXNQcm9ncmFtPXByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIil9YXJndW1lbnRzXz1wcm9jZXNzLmFyZ3Yuc2xpY2UoMik7cXVpdF89KHN0YXR1cyx0b1Rocm93KT0+e3Byb2Nlc3MuZXhpdENvZGU9c3RhdHVzO3Rocm93IHRvVGhyb3d9fWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfV0VCfHxFTlZJUk9OTUVOVF9JU19XT1JLRVIpe3RyeXtzY3JpcHREaXJlY3Rvcnk9bmV3IFVSTCgiLiIsX3NjcmlwdE5hbWUpLmhyZWZ9Y2F0Y2h7fWlmKCFFTlZJUk9OTUVOVF9JU19OT0RFKXtpZihFTlZJUk9OTUVOVF9JU19XT1JLRVIpe3JlYWRCaW5hcnk9dXJsPT57dmFyIHhocj1uZXcgWE1MSHR0cFJlcXVlc3Q7eGhyLm9wZW4oIkdFVCIsdXJsLGZhbHNlKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7eGhyLnNlbmQobnVsbCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHhoci5yZXNwb25zZSl9fXJlYWRBc3luYz1hc3luYyB1cmw9PntpZihpc0ZpbGVVUkkodXJsKSl7cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9Pnt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdDt4aHIub3BlbigiR0VUIix1cmwsdHJ1ZSk7eGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3hoci5vbmxvYWQ9KCk9PntpZih4aHIuc3RhdHVzPT0yMDB8fHhoci5zdGF0dXM9PTAmJnhoci5yZXNwb25zZSl7cmVzb2x2ZSh4aHIucmVzcG9uc2UpO3JldHVybn1yZWplY3QoeGhyLnN0YXR1cyl9O3hoci5vbmVycm9yPXJlamVjdDt4aHIuc2VuZChudWxsKX0pfXZhciByZXNwb25zZT1hd2FpdCBmZXRjaCh1cmwse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KTtpZihyZXNwb25zZS5vayl7cmV0dXJuIHJlc3BvbnNlLmFycmF5QnVmZmVyKCl9dGhyb3cgbmV3IEVycm9yKHJlc3BvbnNlLnN0YXR1cysiIDogIityZXNwb25zZS51cmwpfX19ZWxzZXt9dmFyIGRlZmF1bHRQcmludD1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO3ZhciBkZWZhdWx0UHJpbnRFcnI9Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO2lmKEVOVklST05NRU5UX0lTX05PREUpe3ZhciB1dGlscz1yZXF1aXJlKCJ1dGlsIik7dmFyIHN0cmluZ2lmeT1hPT50eXBlb2YgYT09Im9iamVjdCI/dXRpbHMuaW5zcGVjdChhKTphO2RlZmF1bHRQcmludD0oLi4uYXJncyk9PmZzLndyaXRlU3luYygxLGFyZ3MubWFwKHN0cmluZ2lmeSkuam9pbigiICIpKyJcbiIpO2RlZmF1bHRQcmludEVycj0oLi4uYXJncyk9PmZzLndyaXRlU3luYygyLGFyZ3MubWFwKHN0cmluZ2lmeSkuam9pbigiICIpKyJcbiIpfXZhciBvdXQ9ZGVmYXVsdFByaW50O3ZhciBlcnI9ZGVmYXVsdFByaW50RXJyO3ZhciB3YXNtQmluYXJ5O3ZhciB3YXNtTW9kdWxlO3ZhciBBQk9SVD1mYWxzZTt2YXIgRVhJVFNUQVRVUzt2YXIgaXNGaWxlVVJJPWZpbGVuYW1lPT5maWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOi8vIik7dmFyIHJlYWR5UHJvbWlzZVJlc29sdmUscmVhZHlQcm9taXNlUmVqZWN0O2lmKEVOVklST05NRU5UX0lTX05PREUmJkVOVklST05NRU5UX0lTX1BUSFJFQUQpe3ZhciBwYXJlbnRQb3J0PXdvcmtlcl90aHJlYWRzWyJwYXJlbnRQb3J0Il07cGFyZW50UG9ydC5vbigibWVzc2FnZSIsbXNnPT5nbG9iYWwub25tZXNzYWdlPy4oe2RhdGE6bXNnfSkpO09iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcyx7c2VsZjpnbG9iYWwscG9zdE1lc3NhZ2U6bXNnPT5wYXJlbnRQb3J0WyJwb3N0TWVzc2FnZSJdKG1zZyl9KTtwcm9jZXNzLm9uKCJ1bmNhdWdodEV4Y2VwdGlvbiIsZXJyPT57cG9zdE1lc3NhZ2Uoe2NtZDoidW5jYXVnaHRFeGNlcHRpb24iLGVycm9yOmVycn0pO3Byb2Nlc3MuZXhpdCgxKX0pfXZhciBzdGFydFdvcmtlcjtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXt2YXIgaW5pdGlhbGl6ZWRKUz1mYWxzZTtzZWxmLm9udW5oYW5kbGVkcmVqZWN0aW9uPWU9Pnt0aHJvdyBlLnJlYXNvbnx8ZX07ZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShlKXt0cnl7dmFyIG1zZ0RhdGE9ZVsiZGF0YSJdO3ZhciBjbWQ9bXNnRGF0YS5jbWQ7aWYoY21kPT09ImxvYWQiKXtsZXQgbWVzc2FnZVF1ZXVlPVtdO3NlbGYub25tZXNzYWdlPWU9Pm1lc3NhZ2VRdWV1ZS5wdXNoKGUpO3N0YXJ0V29ya2VyPSgpPT57cG9zdE1lc3NhZ2Uoe2NtZDoibG9hZGVkIn0pO2ZvcihsZXQgbXNnIG9mIG1lc3NhZ2VRdWV1ZSl7aGFuZGxlTWVzc2FnZShtc2cpfXNlbGYub25tZXNzYWdlPWhhbmRsZU1lc3NhZ2V9O2Zvcihjb25zdCBoYW5kbGVyIG9mIG1zZ0RhdGEuaGFuZGxlcnMpe2lmKCFNb2R1bGVbaGFuZGxlcl18fE1vZHVsZVtoYW5kbGVyXS5wcm94eSl7TW9kdWxlW2hhbmRsZXJdPSguLi5hcmdzKT0+e3Bvc3RNZXNzYWdlKHtjbWQ6ImNhbGxIYW5kbGVyIixoYW5kbGVyLGFyZ3N9KX07aWYoaGFuZGxlcj09InByaW50IilvdXQ9TW9kdWxlW2hhbmRsZXJdO2lmKGhhbmRsZXI9PSJwcmludEVyciIpZXJyPU1vZHVsZVtoYW5kbGVyXX19d2FzbU1lbW9yeT1tc2dEYXRhLndhc21NZW1vcnk7dXBkYXRlTWVtb3J5Vmlld3MoKTt3YXNtTW9kdWxlPW1zZ0RhdGEud2FzbU1vZHVsZTtjcmVhdGVXYXNtKCk7cnVuKCl9ZWxzZSBpZihjbWQ9PT0icnVuIil7ZXN0YWJsaXNoU3RhY2tTcGFjZShtc2dEYXRhLnB0aHJlYWRfcHRyKTtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQobXNnRGF0YS5wdGhyZWFkX3B0ciwwLDAsMSwwLDApO1BUaHJlYWQudGhyZWFkSW5pdFRMUygpO19fZW1zY3JpcHRlbl90aHJlYWRfbWFpbGJveF9hd2FpdChtc2dEYXRhLnB0aHJlYWRfcHRyKTtpZighaW5pdGlhbGl6ZWRKUyl7aW5pdGlhbGl6ZWRKUz10cnVlfXRyeXtpbnZva2VFbnRyeVBvaW50KG1zZ0RhdGEuc3RhcnRfcm91dGluZSxtc2dEYXRhLmFyZyl9Y2F0Y2goZXgpe2lmKGV4IT0idW53aW5kIil7dGhyb3cgZXh9fX1lbHNlIGlmKG1zZ0RhdGEudGFyZ2V0PT09InNldGltbWVkaWF0ZSIpe31lbHNlIGlmKGNtZD09PSJjaGVja01haWxib3giKXtpZihpbml0aWFsaXplZEpTKXtjaGVja01haWxib3goKX19ZWxzZSBpZihjbWQpe2Vycihgd29ya2VyOiByZWNlaXZlZCB1bmtub3duIGNvbW1hbmQgJHtjbWR9YCk7ZXJyKG1zZ0RhdGEpfX1jYXRjaChleCl7X19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkKCk7dGhyb3cgZXh9fXNlbGYub25tZXNzYWdlPWhhbmRsZU1lc3NhZ2V9dmFyIEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7dmFyIEhFQVA2NCxIRUFQVTY0O3ZhciBydW50aW1lSW5pdGlhbGl6ZWQ9ZmFsc2U7ZnVuY3Rpb24gdXBkYXRlTWVtb3J5Vmlld3MoKXt2YXIgYj13YXNtTWVtb3J5LmJ1ZmZlcjtIRUFQOD1uZXcgSW50OEFycmF5KGIpO0hFQVAxNj1uZXcgSW50MTZBcnJheShiKTtIRUFQVTg9bmV3IFVpbnQ4QXJyYXkoYik7SEVBUFUxNj1uZXcgVWludDE2QXJyYXkoYik7SEVBUDMyPW5ldyBJbnQzMkFycmF5KGIpO0hFQVBVMzI9bmV3IFVpbnQzMkFycmF5KGIpO0hFQVBGMzI9bmV3IEZsb2F0MzJBcnJheShiKTtIRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYik7SEVBUDY0PW5ldyBCaWdJbnQ2NEFycmF5KGIpO0hFQVBVNjQ9bmV3IEJpZ1VpbnQ2NEFycmF5KGIpfWZ1bmN0aW9uIGluaXRNZW1vcnkoKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtyZXR1cm59aWYoTW9kdWxlWyJ3YXNtTWVtb3J5Il0pe3dhc21NZW1vcnk9TW9kdWxlWyJ3YXNtTWVtb3J5Il19ZWxzZXt2YXIgSU5JVElBTF9NRU1PUlk9TW9kdWxlWyJJTklUSUFMX01FTU9SWSJdfHw1MzY4NzA5MTI7d2FzbU1lbW9yeT1uZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOklOSVRJQUxfTUVNT1JZLzY1NTM2LG1heGltdW06SU5JVElBTF9NRU1PUlkvNjU1MzYsc2hhcmVkOnRydWV9KX11cGRhdGVNZW1vcnlWaWV3cygpfWZ1bmN0aW9uIHByZVJ1bigpe2lmKE1vZHVsZVsicHJlUnVuIl0pe2lmKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlUnVuIl09W01vZHVsZVsicHJlUnVuIl1dO3doaWxlKE1vZHVsZVsicHJlUnVuIl0ubGVuZ3RoKXthZGRPblByZVJ1bihNb2R1bGVbInByZVJ1biJdLnNoaWZ0KCkpfX1jYWxsUnVudGltZUNhbGxiYWNrcyhvblByZVJ1bnMpfWZ1bmN0aW9uIGluaXRSdW50aW1lKCl7cnVudGltZUluaXRpYWxpemVkPXRydWU7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gc3RhcnRXb3JrZXIoKTt3YXNtRXhwb3J0c1sicyJdKCl9ZnVuY3Rpb24gcG9zdFJ1bigpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3JldHVybn1pZihNb2R1bGVbInBvc3RSdW4iXSl7aWYodHlwZW9mIE1vZHVsZVsicG9zdFJ1biJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicG9zdFJ1biJdPVtNb2R1bGVbInBvc3RSdW4iXV07d2hpbGUoTW9kdWxlWyJwb3N0UnVuIl0ubGVuZ3RoKXthZGRPblBvc3RSdW4oTW9kdWxlWyJwb3N0UnVuIl0uc2hpZnQoKSl9fWNhbGxSdW50aW1lQ2FsbGJhY2tzKG9uUG9zdFJ1bnMpfWZ1bmN0aW9uIGFib3J0KHdoYXQpe01vZHVsZVsib25BYm9ydCJdPy4od2hhdCk7d2hhdD0iQWJvcnRlZCgiK3doYXQrIikiO2Vycih3aGF0KTtBQk9SVD10cnVlO3doYXQrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKHdoYXQpO3JlYWR5UHJvbWlzZVJlamVjdD8uKGUpO3Rocm93IGV9dmFyIHdhc21CaW5hcnlGaWxlO2Z1bmN0aW9uIGZpbmRXYXNtQmluYXJ5KCl7aWYoTW9kdWxlWyJsb2NhdGVGaWxlIl0pe3JldHVybiBsb2NhdGVGaWxlKCJvZmZsb2Fkcy1zaW1kLW10Lndhc20iKX1yZXR1cm4gbmV3IFVSTCgib2ZmbG9hZHMtc2ltZC1tdC53YXNtIixpbXBvcnQubWV0YS51cmwpLmhyZWZ9ZnVuY3Rpb24gZ2V0QmluYXJ5U3luYyhmaWxlKXtpZihmaWxlPT13YXNtQmluYXJ5RmlsZSYmd2FzbUJpbmFyeSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KHdhc21CaW5hcnkpfWlmKHJlYWRCaW5hcnkpe3JldHVybiByZWFkQmluYXJ5KGZpbGUpfXRocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1hc3luYyBmdW5jdGlvbiBnZXRXYXNtQmluYXJ5KGJpbmFyeUZpbGUpe2lmKCF3YXNtQmluYXJ5KXt0cnl7dmFyIHJlc3BvbnNlPWF3YWl0IHJlYWRBc3luYyhiaW5hcnlGaWxlKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzcG9uc2UpfWNhdGNoe319cmV0dXJuIGdldEJpbmFyeVN5bmMoYmluYXJ5RmlsZSl9YXN5bmMgZnVuY3Rpb24gaW5zdGFudGlhdGVBcnJheUJ1ZmZlcihiaW5hcnlGaWxlLGltcG9ydHMpe3RyeXt2YXIgYmluYXJ5PWF3YWl0IGdldFdhc21CaW5hcnkoYmluYXJ5RmlsZSk7dmFyIGluc3RhbmNlPWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGJpbmFyeSxpbXBvcnRzKTtyZXR1cm4gaW5zdGFuY2V9Y2F0Y2gocmVhc29uKXtlcnIoYGZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICR7cmVhc29ufWApO2Fib3J0KHJlYXNvbil9fWFzeW5jIGZ1bmN0aW9uIGluc3RhbnRpYXRlQXN5bmMoYmluYXJ5LGJpbmFyeUZpbGUsaW1wb3J0cyl7aWYoIWJpbmFyeSYmIWlzRmlsZVVSSShiaW5hcnlGaWxlKSYmIUVOVklST05NRU5UX0lTX05PREUpe3RyeXt2YXIgcmVzcG9uc2U9ZmV0Y2goYmluYXJ5RmlsZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pO3ZhciBpbnN0YW50aWF0aW9uUmVzdWx0PWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3BvbnNlLGltcG9ydHMpO3JldHVybiBpbnN0YW50aWF0aW9uUmVzdWx0fWNhdGNoKHJlYXNvbil7ZXJyKGB3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogJHtyZWFzb259YCk7ZXJyKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpfX1yZXR1cm4gaW5zdGFudGlhdGVBcnJheUJ1ZmZlcihiaW5hcnlGaWxlLGltcG9ydHMpfWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7YXNzaWduV2FzbUltcG9ydHMoKTt2YXIgaW1wb3J0cz17YTp3YXNtSW1wb3J0c307cmV0dXJuIGltcG9ydHN9YXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSxtb2R1bGUpe3dhc21FeHBvcnRzPWluc3RhbmNlLmV4cG9ydHM7cmVnaXN0ZXJUTFNJbml0KHdhc21FeHBvcnRzWyJEIl0pO2Fzc2lnbldhc21FeHBvcnRzKHdhc21FeHBvcnRzKTt3YXNtTW9kdWxlPW1vZHVsZTtyZXR1cm4gd2FzbUV4cG9ydHN9ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KXtyZXR1cm4gcmVjZWl2ZUluc3RhbmNlKHJlc3VsdFsiaW5zdGFuY2UiXSxyZXN1bHRbIm1vZHVsZSJdKX12YXIgaW5mbz1nZXRXYXNtSW1wb3J0cygpO2lmKE1vZHVsZVsiaW5zdGFudGlhdGVXYXNtIl0pe3JldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpPT57TW9kdWxlWyJpbnN0YW50aWF0ZVdhc20iXShpbmZvLChpbnN0LG1vZCk9PntyZXNvbHZlKHJlY2VpdmVJbnN0YW5jZShpbnN0LG1vZCkpfSl9KX1pZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXt2YXIgaW5zdGFuY2U9bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKHdhc21Nb2R1bGUsZ2V0V2FzbUltcG9ydHMoKSk7cmV0dXJuIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSx3YXNtTW9kdWxlKX13YXNtQmluYXJ5RmlsZT8/PWZpbmRXYXNtQmluYXJ5KCk7dmFyIHJlc3VsdD1hd2FpdCBpbnN0YW50aWF0ZUFzeW5jKHdhc21CaW5hcnksd2FzbUJpbmFyeUZpbGUsaW5mbyk7dmFyIGV4cG9ydHM9cmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KTtyZXR1cm4gZXhwb3J0c31jbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKHN0YXR1cyl7dGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7c3RhdHVzfSlgO3RoaXMuc3RhdHVzPXN0YXR1c319dmFyIHRlcm1pbmF0ZVdvcmtlcj13b3JrZXI9Pnt3b3JrZXIudGVybWluYXRlKCk7d29ya2VyLm9ubWVzc2FnZT1lPT57fX07dmFyIGNsZWFudXBUaHJlYWQ9cHRocmVhZF9wdHI9Pnt2YXIgd29ya2VyPVBUaHJlYWQucHRocmVhZHNbcHRocmVhZF9wdHJdO1BUaHJlYWQucmV0dXJuV29ya2VyVG9Qb29sKHdvcmtlcil9O3ZhciBjYWxsUnVudGltZUNhbGxiYWNrcz1jYWxsYmFja3M9Pnt3aGlsZShjYWxsYmFja3MubGVuZ3RoPjApe2NhbGxiYWNrcy5zaGlmdCgpKE1vZHVsZSl9fTt2YXIgb25QcmVSdW5zPVtdO3ZhciBhZGRPblByZVJ1bj1jYj0+b25QcmVSdW5zLnB1c2goY2IpO3ZhciBydW5EZXBlbmRlbmNpZXM9MDt2YXIgZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7dmFyIHJlbW92ZVJ1bkRlcGVuZGVuY3k9aWQ9PntydW5EZXBlbmRlbmNpZXMtLTtNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXT8uKHJ1bkRlcGVuZGVuY2llcyk7aWYocnVuRGVwZW5kZW5jaWVzPT0wKXtpZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKX19fTt2YXIgYWRkUnVuRGVwZW5kZW5jeT1pZD0+e3J1bkRlcGVuZGVuY2llcysrO01vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdPy4ocnVuRGVwZW5kZW5jaWVzKX07dmFyIHNwYXduVGhyZWFkPXRocmVhZFBhcmFtcz0+e3ZhciB3b3JrZXI9UFRocmVhZC5nZXROZXdXb3JrZXIoKTtpZighd29ya2VyKXtyZXR1cm4gNn1QVGhyZWFkLnJ1bm5pbmdXb3JrZXJzLnB1c2god29ya2VyKTtQVGhyZWFkLnB0aHJlYWRzW3RocmVhZFBhcmFtcy5wdGhyZWFkX3B0cl09d29ya2VyO3dvcmtlci5wdGhyZWFkX3B0cj10aHJlYWRQYXJhbXMucHRocmVhZF9wdHI7dmFyIG1zZz17Y21kOiJydW4iLHN0YXJ0X3JvdXRpbmU6dGhyZWFkUGFyYW1zLnN0YXJ0Um91dGluZSxhcmc6dGhyZWFkUGFyYW1zLmFyZyxwdGhyZWFkX3B0cjp0aHJlYWRQYXJhbXMucHRocmVhZF9wdHJ9O2lmKEVOVklST05NRU5UX0lTX05PREUpe3dvcmtlci51bnJlZigpfXdvcmtlci5wb3N0TWVzc2FnZShtc2csdGhyZWFkUGFyYW1zLnRyYW5zZmVyTGlzdCk7cmV0dXJuIDB9O3ZhciBydW50aW1lS2VlcGFsaXZlQ291bnRlcj0wO3ZhciBrZWVwUnVudGltZUFsaXZlPSgpPT5ub0V4aXRSdW50aW1lfHxydW50aW1lS2VlcGFsaXZlQ291bnRlcj4wO3ZhciBzdGFja1NhdmU9KCk9Pl9lbXNjcmlwdGVuX3N0YWNrX2dldF9jdXJyZW50KCk7dmFyIHN0YWNrUmVzdG9yZT12YWw9Pl9fZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlKHZhbCk7dmFyIHN0YWNrQWxsb2M9c3o9Pl9fZW1zY3JpcHRlbl9zdGFja19hbGxvYyhzeik7dmFyIHByb3h5VG9NYWluVGhyZWFkPShmdW5jSW5kZXgsZW1Bc21BZGRyLHN5bmMsLi4uY2FsbEFyZ3MpPT57dmFyIHNlcmlhbGl6ZWROdW1DYWxsQXJncz1jYWxsQXJncy5sZW5ndGgqMjt2YXIgc3A9c3RhY2tTYXZlKCk7dmFyIGFyZ3M9c3RhY2tBbGxvYyhzZXJpYWxpemVkTnVtQ2FsbEFyZ3MqOCk7dmFyIGI9YXJncz4+Mztmb3IodmFyIGk9MDtpPGNhbGxBcmdzLmxlbmd0aDtpKyspe3ZhciBhcmc9Y2FsbEFyZ3NbaV07aWYodHlwZW9mIGFyZz09ImJpZ2ludCIpe0hFQVA2NFtiKzIqaV09MW47SEVBUDY0W2IrMippKzFdPWFyZ31lbHNle0hFQVA2NFtiKzIqaV09MG47SEVBUEY2NFtiKzIqaSsxXT1hcmd9fXZhciBydG49X19lbXNjcmlwdGVuX3J1bl9qc19vbl9tYWluX3RocmVhZChmdW5jSW5kZXgsZW1Bc21BZGRyLHNlcmlhbGl6ZWROdW1DYWxsQXJncyxhcmdzLHN5bmMpO3N0YWNrUmVzdG9yZShzcCk7cmV0dXJuIHJ0bn07ZnVuY3Rpb24gX3Byb2NfZXhpdChjb2RlKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBwcm94eVRvTWFpblRocmVhZCgwLDAsMSxjb2RlKTtFWElUU1RBVFVTPWNvZGU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7UFRocmVhZC50ZXJtaW5hdGVBbGxUaHJlYWRzKCk7TW9kdWxlWyJvbkV4aXQiXT8uKGNvZGUpO0FCT1JUPXRydWV9cXVpdF8oY29kZSxuZXcgRXhpdFN0YXR1cyhjb2RlKSl9ZnVuY3Rpb24gZXhpdE9uTWFpblRocmVhZChyZXR1cm5Db2RlKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBwcm94eVRvTWFpblRocmVhZCgxLDAsMCxyZXR1cm5Db2RlKTtfZXhpdChyZXR1cm5Db2RlKX12YXIgZXhpdEpTPShzdGF0dXMsaW1wbGljaXQpPT57RVhJVFNUQVRVUz1zdGF0dXM7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7ZXhpdE9uTWFpblRocmVhZChzdGF0dXMpO3Rocm93InVud2luZCJ9X3Byb2NfZXhpdChzdGF0dXMpfTt2YXIgX2V4aXQ9ZXhpdEpTO3ZhciBQVGhyZWFkPXt1bnVzZWRXb3JrZXJzOltdLHJ1bm5pbmdXb3JrZXJzOltdLHRsc0luaXRGdW5jdGlvbnM6W10scHRocmVhZHM6e30saW5pdCgpe2lmKCFFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtQVGhyZWFkLmluaXRNYWluVGhyZWFkKCl9fSxpbml0TWFpblRocmVhZCgpe3ZhciBwdGhyZWFkUG9vbFNpemU9NDt3aGlsZShwdGhyZWFkUG9vbFNpemUtLSl7UFRocmVhZC5hbGxvY2F0ZVVudXNlZFdvcmtlcigpfWFkZE9uUHJlUnVuKGFzeW5jKCk9Pnt2YXIgcHRocmVhZFBvb2xSZWFkeT1QVGhyZWFkLmxvYWRXYXNtTW9kdWxlVG9BbGxXb3JrZXJzKCk7YWRkUnVuRGVwZW5kZW5jeSgibG9hZGluZy13b3JrZXJzIik7YXdhaXQgcHRocmVhZFBvb2xSZWFkeTtyZW1vdmVSdW5EZXBlbmRlbmN5KCJsb2FkaW5nLXdvcmtlcnMiKX0pfSx0ZXJtaW5hdGVBbGxUaHJlYWRzOigpPT57Zm9yKHZhciB3b3JrZXIgb2YgUFRocmVhZC5ydW5uaW5nV29ya2Vycyl7dGVybWluYXRlV29ya2VyKHdvcmtlcil9Zm9yKHZhciB3b3JrZXIgb2YgUFRocmVhZC51bnVzZWRXb3JrZXJzKXt0ZXJtaW5hdGVXb3JrZXIod29ya2VyKX1QVGhyZWFkLnVudXNlZFdvcmtlcnM9W107UFRocmVhZC5ydW5uaW5nV29ya2Vycz1bXTtQVGhyZWFkLnB0aHJlYWRzPXt9fSxyZXR1cm5Xb3JrZXJUb1Bvb2w6d29ya2VyPT57dmFyIHB0aHJlYWRfcHRyPXdvcmtlci5wdGhyZWFkX3B0cjtkZWxldGUgUFRocmVhZC5wdGhyZWFkc1twdGhyZWFkX3B0cl07UFRocmVhZC51bnVzZWRXb3JrZXJzLnB1c2god29ya2VyKTtQVGhyZWFkLnJ1bm5pbmdXb3JrZXJzLnNwbGljZShQVGhyZWFkLnJ1bm5pbmdXb3JrZXJzLmluZGV4T2Yod29ya2VyKSwxKTt3b3JrZXIucHRocmVhZF9wdHI9MDtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YShwdGhyZWFkX3B0cil9LHRocmVhZEluaXRUTFMoKXtQVGhyZWFkLnRsc0luaXRGdW5jdGlvbnMuZm9yRWFjaChmPT5mKCkpfSxsb2FkV2FzbU1vZHVsZVRvV29ya2VyOndvcmtlcj0+bmV3IFByb21pc2Uob25GaW5pc2hlZExvYWRpbmc9Pnt3b3JrZXIub25tZXNzYWdlPWU9Pnt2YXIgZD1lWyJkYXRhIl07dmFyIGNtZD1kLmNtZDtpZihkLnRhcmdldFRocmVhZCYmZC50YXJnZXRUaHJlYWQhPV9wdGhyZWFkX3NlbGYoKSl7dmFyIHRhcmdldFdvcmtlcj1QVGhyZWFkLnB0aHJlYWRzW2QudGFyZ2V0VGhyZWFkXTtpZih0YXJnZXRXb3JrZXIpe3RhcmdldFdvcmtlci5wb3N0TWVzc2FnZShkLGQudHJhbnNmZXJMaXN0KX1lbHNle2VycihgSW50ZXJuYWwgZXJyb3IhIFdvcmtlciBzZW50IGEgbWVzc2FnZSAiJHtjbWR9IiB0byB0YXJnZXQgcHRocmVhZCAke2QudGFyZ2V0VGhyZWFkfSwgYnV0IHRoYXQgdGhyZWFkIG5vIGxvbmdlciBleGlzdHMhYCl9cmV0dXJufWlmKGNtZD09PSJjaGVja01haWxib3giKXtjaGVja01haWxib3goKX1lbHNlIGlmKGNtZD09PSJzcGF3blRocmVhZCIpe3NwYXduVGhyZWFkKGQpfWVsc2UgaWYoY21kPT09ImNsZWFudXBUaHJlYWQiKXtjYWxsVXNlckNhbGxiYWNrKCgpPT5jbGVhbnVwVGhyZWFkKGQudGhyZWFkKSl9ZWxzZSBpZihjbWQ9PT0ibG9hZGVkIil7d29ya2VyLmxvYWRlZD10cnVlO2lmKEVOVklST05NRU5UX0lTX05PREUmJiF3b3JrZXIucHRocmVhZF9wdHIpe3dvcmtlci51bnJlZigpfW9uRmluaXNoZWRMb2FkaW5nKHdvcmtlcil9ZWxzZSBpZihkLnRhcmdldD09PSJzZXRpbW1lZGlhdGUiKXt3b3JrZXIucG9zdE1lc3NhZ2UoZCl9ZWxzZSBpZihjbWQ9PT0idW5jYXVnaHRFeGNlcHRpb24iKXt3b3JrZXIub25lcnJvcihkLmVycm9yKX1lbHNlIGlmKGNtZD09PSJjYWxsSGFuZGxlciIpe01vZHVsZVtkLmhhbmRsZXJdKC4uLmQuYXJncyl9ZWxzZSBpZihjbWQpe2Vycihgd29ya2VyIHNlbnQgYW4gdW5rbm93biBjb21tYW5kICR7Y21kfWApfX07d29ya2VyLm9uZXJyb3I9ZT0+e3ZhciBtZXNzYWdlPSJ3b3JrZXIgc2VudCBhbiBlcnJvciEiO2VycihgJHttZXNzYWdlfSAke2UuZmlsZW5hbWV9OiR7ZS5saW5lbm99OiAke2UubWVzc2FnZX1gKTt0aHJvdyBlfTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXt3b3JrZXIub24oIm1lc3NhZ2UiLGRhdGE9Pndvcmtlci5vbm1lc3NhZ2Uoe2RhdGF9KSk7d29ya2VyLm9uKCJlcnJvciIsZT0+d29ya2VyLm9uZXJyb3IoZSkpfXZhciBoYW5kbGVycz1bXTt2YXIga25vd25IYW5kbGVycz1bIm9uRXhpdCIsIm9uQWJvcnQiLCJwcmludCIsInByaW50RXJyIl07Zm9yKHZhciBoYW5kbGVyIG9mIGtub3duSGFuZGxlcnMpe2lmKE1vZHVsZS5wcm9wZXJ0eUlzRW51bWVyYWJsZShoYW5kbGVyKSl7aGFuZGxlcnMucHVzaChoYW5kbGVyKX19d29ya2VyLnBvc3RNZXNzYWdlKHtjbWQ6ImxvYWQiLGhhbmRsZXJzLHdhc21NZW1vcnksd2FzbU1vZHVsZX0pfSksYXN5bmMgbG9hZFdhc21Nb2R1bGVUb0FsbFdvcmtlcnMoKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtyZXR1cm59bGV0IHB0aHJlYWRQb29sUmVhZHk9UHJvbWlzZS5hbGwoUFRocmVhZC51bnVzZWRXb3JrZXJzLm1hcChQVGhyZWFkLmxvYWRXYXNtTW9kdWxlVG9Xb3JrZXIpKTtyZXR1cm4gcHRocmVhZFBvb2xSZWFkeX0sYWxsb2NhdGVVbnVzZWRXb3JrZXIoKXt2YXIgd29ya2VyO2lmKE1vZHVsZVsibWFpblNjcmlwdFVybE9yQmxvYiJdKXt2YXIgcHRocmVhZE1haW5Kcz1Nb2R1bGVbIm1haW5TY3JpcHRVcmxPckJsb2IiXTtpZih0eXBlb2YgcHRocmVhZE1haW5KcyE9InN0cmluZyIpe3B0aHJlYWRNYWluSnM9VVJMLmNyZWF0ZU9iamVjdFVSTChwdGhyZWFkTWFpbkpzKX13b3JrZXI9bmV3IFdvcmtlcihwdGhyZWFkTWFpbkpzLHt0eXBlOiJtb2R1bGUiLHdvcmtlckRhdGE6ImVtLXB0aHJlYWQiLG5hbWU6ImVtLXB0aHJlYWQifSl9ZWxzZSB3b3JrZXI9bmV3IFdvcmtlcihuZXcgVVJMKCJvZmZsb2Fkcy1zaW1kLW10LmpzIixpbXBvcnQubWV0YS51cmwpLHt0eXBlOiJtb2R1bGUiLHdvcmtlckRhdGE6ImVtLXB0aHJlYWQiLG5hbWU6ImVtLXB0aHJlYWQifSk7UFRocmVhZC51bnVzZWRXb3JrZXJzLnB1c2god29ya2VyKX0sZ2V0TmV3V29ya2VyKCl7aWYoUFRocmVhZC51bnVzZWRXb3JrZXJzLmxlbmd0aD09MCl7UFRocmVhZC5hbGxvY2F0ZVVudXNlZFdvcmtlcigpO1BUaHJlYWQubG9hZFdhc21Nb2R1bGVUb1dvcmtlcihQVGhyZWFkLnVudXNlZFdvcmtlcnNbMF0pfXJldHVybiBQVGhyZWFkLnVudXNlZFdvcmtlcnMucG9wKCl9fTt2YXIgb25Qb3N0UnVucz1bXTt2YXIgYWRkT25Qb3N0UnVuPWNiPT5vblBvc3RSdW5zLnB1c2goY2IpO2Z1bmN0aW9uIGVzdGFibGlzaFN0YWNrU3BhY2UocHRocmVhZF9wdHIpe3ZhciBzdGFja0hpZ2g9SEVBUFUzMltwdGhyZWFkX3B0cis1Mj4+Ml07dmFyIHN0YWNrU2l6ZT1IRUFQVTMyW3B0aHJlYWRfcHRyKzU2Pj4yXTt2YXIgc3RhY2tMb3c9c3RhY2tIaWdoLXN0YWNrU2l6ZTtfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzKHN0YWNrSGlnaCxzdGFja0xvdyk7c3RhY2tSZXN0b3JlKHN0YWNrSGlnaCl9dmFyIHdhc21UYWJsZU1pcnJvcj1bXTt2YXIgZ2V0V2FzbVRhYmxlRW50cnk9ZnVuY1B0cj0+e3ZhciBmdW5jPXdhc21UYWJsZU1pcnJvcltmdW5jUHRyXTtpZighZnVuYyl7d2FzbVRhYmxlTWlycm9yW2Z1bmNQdHJdPWZ1bmM9d2FzbVRhYmxlLmdldChmdW5jUHRyKX1yZXR1cm4gZnVuY307dmFyIGludm9rZUVudHJ5UG9pbnQ9KHB0cixhcmcpPT57cnVudGltZUtlZXBhbGl2ZUNvdW50ZXI9MDtub0V4aXRSdW50aW1lPTA7dmFyIHJlc3VsdD1nZXRXYXNtVGFibGVFbnRyeShwdHIpKGFyZyk7ZnVuY3Rpb24gZmluaXNoKHJlc3VsdCl7aWYoa2VlcFJ1bnRpbWVBbGl2ZSgpKXtFWElUU1RBVFVTPXJlc3VsdDtyZXR1cm59X19lbXNjcmlwdGVuX3RocmVhZF9leGl0KHJlc3VsdCl9ZmluaXNoKHJlc3VsdCl9O3ZhciBub0V4aXRSdW50aW1lPXRydWU7dmFyIHJlZ2lzdGVyVExTSW5pdD10bHNJbml0RnVuYz0+UFRocmVhZC50bHNJbml0RnVuY3Rpb25zLnB1c2godGxzSW5pdEZ1bmMpO3ZhciB3YXNtTWVtb3J5O2NsYXNzIEV4Y2VwdGlvbkluZm97Y29uc3RydWN0b3IoZXhjUHRyKXt0aGlzLmV4Y1B0cj1leGNQdHI7dGhpcy5wdHI9ZXhjUHRyLTI0fXNldF90eXBlKHR5cGUpe0hFQVBVMzJbdGhpcy5wdHIrND4+Ml09dHlwZX1nZXRfdHlwZSgpe3JldHVybiBIRUFQVTMyW3RoaXMucHRyKzQ+PjJdfXNldF9kZXN0cnVjdG9yKGRlc3RydWN0b3Ipe0hFQVBVMzJbdGhpcy5wdHIrOD4+Ml09ZGVzdHJ1Y3Rvcn1nZXRfZGVzdHJ1Y3Rvcigpe3JldHVybiBIRUFQVTMyW3RoaXMucHRyKzg+PjJdfXNldF9jYXVnaHQoY2F1Z2h0KXtjYXVnaHQ9Y2F1Z2h0PzE6MDtIRUFQOFt0aGlzLnB0cisxMl09Y2F1Z2h0fWdldF9jYXVnaHQoKXtyZXR1cm4gSEVBUDhbdGhpcy5wdHIrMTJdIT0wfXNldF9yZXRocm93bihyZXRocm93bil7cmV0aHJvd249cmV0aHJvd24/MTowO0hFQVA4W3RoaXMucHRyKzEzXT1yZXRocm93bn1nZXRfcmV0aHJvd24oKXtyZXR1cm4gSEVBUDhbdGhpcy5wdHIrMTNdIT0wfWluaXQodHlwZSxkZXN0cnVjdG9yKXt0aGlzLnNldF9hZGp1c3RlZF9wdHIoMCk7dGhpcy5zZXRfdHlwZSh0eXBlKTt0aGlzLnNldF9kZXN0cnVjdG9yKGRlc3RydWN0b3IpfXNldF9hZGp1c3RlZF9wdHIoYWRqdXN0ZWRQdHIpe0hFQVBVMzJbdGhpcy5wdHIrMTY+PjJdPWFkanVzdGVkUHRyfWdldF9hZGp1c3RlZF9wdHIoKXtyZXR1cm4gSEVBUFUzMlt0aGlzLnB0cisxNj4+Ml19fXZhciBleGNlcHRpb25MYXN0PTA7dmFyIHVuY2F1Z2h0RXhjZXB0aW9uQ291bnQ9MDt2YXIgX19fY3hhX3Rocm93PShwdHIsdHlwZSxkZXN0cnVjdG9yKT0+e3ZhciBpbmZvPW5ldyBFeGNlcHRpb25JbmZvKHB0cik7aW5mby5pbml0KHR5cGUsZGVzdHJ1Y3Rvcik7ZXhjZXB0aW9uTGFzdD1wdHI7dW5jYXVnaHRFeGNlcHRpb25Db3VudCsrO3Rocm93IGV4Y2VwdGlvbkxhc3R9O2Z1bmN0aW9uIHB0aHJlYWRDcmVhdGVQcm94aWVkKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gcHJveHlUb01haW5UaHJlYWQoMiwwLDEscHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKTtyZXR1cm4gX19fcHRocmVhZF9jcmVhdGVfanMocHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKX12YXIgX2Vtc2NyaXB0ZW5faGFzX3RocmVhZGluZ19zdXBwb3J0PSgpPT4hIWdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI7dmFyIF9fX3B0aHJlYWRfY3JlYXRlX2pzPShwdGhyZWFkX3B0cixhdHRyLHN0YXJ0Um91dGluZSxhcmcpPT57aWYoIV9lbXNjcmlwdGVuX2hhc190aHJlYWRpbmdfc3VwcG9ydCgpKXtyZXR1cm4gNn12YXIgdHJhbnNmZXJMaXN0PVtdO3ZhciBlcnJvcj0wO2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQmJih0cmFuc2Zlckxpc3QubGVuZ3RoPT09MHx8ZXJyb3IpKXtyZXR1cm4gcHRocmVhZENyZWF0ZVByb3hpZWQocHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKX1pZihlcnJvcilyZXR1cm4gZXJyb3I7dmFyIHRocmVhZFBhcmFtcz17c3RhcnRSb3V0aW5lLHB0aHJlYWRfcHRyLGFyZyx0cmFuc2Zlckxpc3R9O2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3RocmVhZFBhcmFtcy5jbWQ9InNwYXduVGhyZWFkIjtwb3N0TWVzc2FnZSh0aHJlYWRQYXJhbXMsdHJhbnNmZXJMaXN0KTtyZXR1cm4gMH1yZXR1cm4gc3Bhd25UaHJlYWQodGhyZWFkUGFyYW1zKX07dmFyIF9fYWJvcnRfanM9KCk9PmFib3J0KCIiKTt2YXIgX19lbXNjcmlwdGVuX2luaXRfbWFpbl90aHJlYWRfanM9dGI9PntfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQodGIsIUVOVklST05NRU5UX0lTX1dPUktFUiwxLCFFTlZJUk9OTUVOVF9JU19XRUIsNjU1MzYsZmFsc2UpO1BUaHJlYWQudGhyZWFkSW5pdFRMUygpfTt2YXIgaGFuZGxlRXhjZXB0aW9uPWU9PntpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1c3x8ZT09InVud2luZCIpe3JldHVybiBFWElUU1RBVFVTfXF1aXRfKDEsZSl9O3ZhciBtYXliZUV4aXQ9KCk9PntpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXt0cnl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7aWYoX3B0aHJlYWRfc2VsZigpKV9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdChFWElUU1RBVFVTKTtyZXR1cm59X2V4aXQoRVhJVFNUQVRVUyl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX19O3ZhciBjYWxsVXNlckNhbGxiYWNrPWZ1bmM9PntpZihBQk9SVCl7cmV0dXJufXRyeXtmdW5jKCk7bWF5YmVFeGl0KCl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX07dmFyIF9fZW1zY3JpcHRlbl90aHJlYWRfbWFpbGJveF9hd2FpdD1wdGhyZWFkX3B0cj0+e2lmKEF0b21pY3Mud2FpdEFzeW5jKXt2YXIgd2FpdD1BdG9taWNzLndhaXRBc3luYyhIRUFQMzIscHRocmVhZF9wdHI+PjIscHRocmVhZF9wdHIpO3dhaXQudmFsdWUudGhlbihjaGVja01haWxib3gpO3ZhciB3YWl0aW5nQXN5bmM9cHRocmVhZF9wdHIrMTI4O0F0b21pY3Muc3RvcmUoSEVBUDMyLHdhaXRpbmdBc3luYz4+MiwxKX19O3ZhciBjaGVja01haWxib3g9KCk9PmNhbGxVc2VyQ2FsbGJhY2soKCk9Pnt2YXIgcHRocmVhZF9wdHI9X3B0aHJlYWRfc2VsZigpO2lmKHB0aHJlYWRfcHRyKXtfX2Vtc2NyaXB0ZW5fdGhyZWFkX21haWxib3hfYXdhaXQocHRocmVhZF9wdHIpO19fZW1zY3JpcHRlbl9jaGVja19tYWlsYm94KCl9fSk7dmFyIF9fZW1zY3JpcHRlbl9ub3RpZnlfbWFpbGJveF9wb3N0bWVzc2FnZT0odGFyZ2V0VGhyZWFkLGN1cnJUaHJlYWRJZCk9PntpZih0YXJnZXRUaHJlYWQ9PWN1cnJUaHJlYWRJZCl7c2V0VGltZW91dChjaGVja01haWxib3gpfWVsc2UgaWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7cG9zdE1lc3NhZ2Uoe3RhcmdldFRocmVhZCxjbWQ6ImNoZWNrTWFpbGJveCJ9KX1lbHNle3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1t0YXJnZXRUaHJlYWRdO2lmKCF3b3JrZXIpe3JldHVybn13b3JrZXIucG9zdE1lc3NhZ2Uoe2NtZDoiY2hlY2tNYWlsYm94In0pfX07dmFyIHByb3hpZWRKU0NhbGxBcmdzPVtdO3ZhciBfX2Vtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qcz0oZnVuY0luZGV4LGVtQXNtQWRkcixjYWxsaW5nVGhyZWFkLG51bUNhbGxBcmdzLGFyZ3MpPT57bnVtQ2FsbEFyZ3MvPTI7cHJveGllZEpTQ2FsbEFyZ3MubGVuZ3RoPW51bUNhbGxBcmdzO3ZhciBiPWFyZ3M+PjM7Zm9yKHZhciBpPTA7aTxudW1DYWxsQXJncztpKyspe2lmKEhFQVA2NFtiKzIqaV0pe3Byb3hpZWRKU0NhbGxBcmdzW2ldPUhFQVA2NFtiKzIqaSsxXX1lbHNle3Byb3hpZWRKU0NhbGxBcmdzW2ldPUhFQVBGNjRbYisyKmkrMV19fXZhciBmdW5jPXByb3hpZWRGdW5jdGlvblRhYmxlW2Z1bmNJbmRleF07UFRocmVhZC5jdXJyZW50UHJveGllZE9wZXJhdGlvbkNhbGxlclRocmVhZD1jYWxsaW5nVGhyZWFkO3ZhciBydG49ZnVuYyguLi5wcm94aWVkSlNDYWxsQXJncyk7UFRocmVhZC5jdXJyZW50UHJveGllZE9wZXJhdGlvbkNhbGxlclRocmVhZD0wO3JldHVybiBydG59O3ZhciBfX2Vtc2NyaXB0ZW5fdGhyZWFkX2NsZWFudXA9dGhyZWFkPT57aWYoIUVOVklST05NRU5UX0lTX1BUSFJFQUQpY2xlYW51cFRocmVhZCh0aHJlYWQpO2Vsc2UgcG9zdE1lc3NhZ2Uoe2NtZDoiY2xlYW51cFRocmVhZCIsdGhyZWFkfSl9O3ZhciBfX2Vtc2NyaXB0ZW5fdGhyZWFkX3NldF9zdHJvbmdyZWY9dGhyZWFkPT57aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7UFRocmVhZC5wdGhyZWFkc1t0aHJlYWRdLnJlZigpfX07dmFyIF9lbXNjcmlwdGVuX2dldF9ub3c9KCk9PnBlcmZvcm1hbmNlLnRpbWVPcmlnaW4rcGVyZm9ybWFuY2Uubm93KCk7dmFyIF9lbXNjcmlwdGVuX2NoZWNrX2Jsb2NraW5nX2FsbG93ZWQ9KCk9Pnt9O3ZhciBydW50aW1lS2VlcGFsaXZlUHVzaD0oKT0+e3J1bnRpbWVLZWVwYWxpdmVDb3VudGVyKz0xfTt2YXIgX2Vtc2NyaXB0ZW5fZXhpdF93aXRoX2xpdmVfcnVudGltZT0oKT0+e3J1bnRpbWVLZWVwYWxpdmVQdXNoKCk7dGhyb3cidW53aW5kIn07dmFyIGdldEhlYXBNYXg9KCk9PkhFQVBVOC5sZW5ndGg7dmFyIF9lbXNjcmlwdGVuX2dldF9oZWFwX21heD0oKT0+Z2V0SGVhcE1heCgpO3ZhciBfZW1zY3JpcHRlbl9udW1fbG9naWNhbF9jb3Jlcz0oKT0+RU5WSVJPTk1FTlRfSVNfTk9ERT9yZXF1aXJlKCJvcyIpLmNwdXMoKS5sZW5ndGg6bmF2aWdhdG9yWyJoYXJkd2FyZUNvbmN1cnJlbmN5Il07dmFyIGFib3J0T25DYW5ub3RHcm93TWVtb3J5PXJlcXVlc3RlZFNpemU9PnthYm9ydCgiT09NIil9O3ZhciBfZW1zY3JpcHRlbl9yZXNpemVfaGVhcD1yZXF1ZXN0ZWRTaXplPT57dmFyIG9sZFNpemU9SEVBUFU4Lmxlbmd0aDtyZXF1ZXN0ZWRTaXplPj4+PTA7YWJvcnRPbkNhbm5vdEdyb3dNZW1vcnkocmVxdWVzdGVkU2l6ZSl9O3ZhciBwcmludENoYXJCdWZmZXJzPVtudWxsLFtdLFtdXTt2YXIgVVRGOERlY29kZXI9Z2xvYmFsVGhpcy5UZXh0RGVjb2RlciYmbmV3IFRleHREZWNvZGVyO3ZhciBmaW5kU3RyaW5nRW5kPShoZWFwT3JBcnJheSxpZHgsbWF4Qnl0ZXNUb1JlYWQsaWdub3JlTnVsKT0+e3ZhciBtYXhJZHg9aWR4K21heEJ5dGVzVG9SZWFkO2lmKGlnbm9yZU51bClyZXR1cm4gbWF4SWR4O3doaWxlKGhlYXBPckFycmF5W2lkeF0mJiEoaWR4Pj1tYXhJZHgpKSsraWR4O3JldHVybiBpZHh9O3ZhciBVVEY4QXJyYXlUb1N0cmluZz0oaGVhcE9yQXJyYXksaWR4PTAsbWF4Qnl0ZXNUb1JlYWQsaWdub3JlTnVsKT0+e3ZhciBlbmRQdHI9ZmluZFN0cmluZ0VuZChoZWFwT3JBcnJheSxpZHgsbWF4Qnl0ZXNUb1JlYWQsaWdub3JlTnVsKTtpZihlbmRQdHItaWR4PjE2JiZoZWFwT3JBcnJheS5idWZmZXImJlVURjhEZWNvZGVyKXtyZXR1cm4gVVRGOERlY29kZXIuZGVjb2RlKGhlYXBPckFycmF5LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2hlYXBPckFycmF5LnN1YmFycmF5KGlkeCxlbmRQdHIpOmhlYXBPckFycmF5LnNsaWNlKGlkeCxlbmRQdHIpKX12YXIgc3RyPSIiO3doaWxlKGlkeDxlbmRQdHIpe3ZhciB1MD1oZWFwT3JBcnJheVtpZHgrK107aWYoISh1MCYxMjgpKXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUodTApO2NvbnRpbnVlfXZhciB1MT1oZWFwT3JBcnJheVtpZHgrK10mNjM7aWYoKHUwJjIyNCk9PTE5Mil7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCh1MCYzMSk8PDZ8dTEpO2NvbnRpbnVlfXZhciB1Mj1oZWFwT3JBcnJheVtpZHgrK10mNjM7aWYoKHUwJjI0MCk9PTIyNCl7dTA9KHUwJjE1KTw8MTJ8dTE8PDZ8dTJ9ZWxzZXt1MD0odTAmNyk8PDE4fHUxPDwxMnx1Mjw8NnxoZWFwT3JBcnJheVtpZHgrK10mNjN9aWYodTA8NjU1MzYpe3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh1MCl9ZWxzZXt2YXIgY2g9dTAtNjU1MzY7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGNoPj4xMCw1NjMyMHxjaCYxMDIzKX19cmV0dXJuIHN0cn07dmFyIHByaW50Q2hhcj0oc3RyZWFtLGN1cnIpPT57dmFyIGJ1ZmZlcj1wcmludENoYXJCdWZmZXJzW3N0cmVhbV07aWYoY3Vycj09PTB8fGN1cnI9PT0xMCl7KHN0cmVhbT09PTE/b3V0OmVycikoVVRGOEFycmF5VG9TdHJpbmcoYnVmZmVyKSk7YnVmZmVyLmxlbmd0aD0wfWVsc2V7YnVmZmVyLnB1c2goY3Vycil9fTtmdW5jdGlvbiBfZmRfd3JpdGUoZmQsaW92LGlvdmNudCxwbnVtKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBwcm94eVRvTWFpblRocmVhZCgzLDAsMSxmZCxpb3YsaW92Y250LHBudW0pO3ZhciBudW09MDtmb3IodmFyIGk9MDtpPGlvdmNudDtpKyspe3ZhciBwdHI9SEVBUFUzMltpb3Y+PjJdO3ZhciBsZW49SEVBUFUzMltpb3YrND4+Ml07aW92Kz04O2Zvcih2YXIgaj0wO2o8bGVuO2orKyl7cHJpbnRDaGFyKGZkLEhFQVBVOFtwdHIral0pfW51bSs9bGVufUhFQVBVMzJbcG51bT4+Ml09bnVtO3JldHVybiAwfVBUaHJlYWQuaW5pdCgpO3tpbml0TWVtb3J5KCk7aWYoTW9kdWxlWyJub0V4aXRSdW50aW1lIl0pbm9FeGl0UnVudGltZT1Nb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXTtpZihNb2R1bGVbInByaW50Il0pb3V0PU1vZHVsZVsicHJpbnQiXTtpZihNb2R1bGVbInByaW50RXJyIl0pZXJyPU1vZHVsZVsicHJpbnRFcnIiXTtpZihNb2R1bGVbIndhc21CaW5hcnkiXSl3YXNtQmluYXJ5PU1vZHVsZVsid2FzbUJpbmFyeSJdO2lmKE1vZHVsZVsiYXJndW1lbnRzIl0pYXJndW1lbnRzXz1Nb2R1bGVbImFyZ3VtZW50cyJdO2lmKE1vZHVsZVsidGhpc1Byb2dyYW0iXSl0aGlzUHJvZ3JhbT1Nb2R1bGVbInRoaXNQcm9ncmFtIl07aWYoTW9kdWxlWyJwcmVJbml0Il0pe2lmKHR5cGVvZiBNb2R1bGVbInByZUluaXQiXT09ImZ1bmN0aW9uIilNb2R1bGVbInByZUluaXQiXT1bTW9kdWxlWyJwcmVJbml0Il1dO3doaWxlKE1vZHVsZVsicHJlSW5pdCJdLmxlbmd0aD4wKXtNb2R1bGVbInByZUluaXQiXS5zaGlmdCgpKCl9fX1Nb2R1bGVbIndhc21NZW1vcnkiXT13YXNtTWVtb3J5O3ZhciBwcm94aWVkRnVuY3Rpb25UYWJsZT1bX3Byb2NfZXhpdCxleGl0T25NYWluVGhyZWFkLHB0aHJlYWRDcmVhdGVQcm94aWVkLF9mZF93cml0ZV07dmFyIF9mcm9tTG5nTGF0LF9wcm9qZWN0LF91bnByb2plY3QsX2NhbGN1bGF0ZVBlcnNwZWN0aXZlUmF0aW8sX3NldFRocmVhZFBvb2xTaXplLF9wcm9qZWN0TG5nTGF0VG9DbGlwU3BhY2UsX2NhbGN1bGF0ZUJpbGxib2FyZERlcHRoS2V5LF9jYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXksX3ByZXBhcmVEcmF3U3ByaXRlSW1hZ2VzLF9fZW1zY3JpcHRlbl90bHNfaW5pdCxfcHRocmVhZF9zZWxmLF9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdCxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQsX19lbXNjcmlwdGVuX3J1bl9qc19vbl9tYWluX3RocmVhZCxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YSxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQsX21hbGxvYyxfZnJlZSxfX2Vtc2NyaXB0ZW5fY2hlY2tfbWFpbGJveCxfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzLF9fZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlLF9fZW1zY3JpcHRlbl9zdGFja19hbGxvYyxfZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudCxfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlLHdhc21UYWJsZTtmdW5jdGlvbiBhc3NpZ25XYXNtRXhwb3J0cyh3YXNtRXhwb3J0cyl7X2Zyb21MbmdMYXQ9TW9kdWxlWyJfZnJvbUxuZ0xhdCJdPXdhc21FeHBvcnRzWyJ0Il07X3Byb2plY3Q9TW9kdWxlWyJfcHJvamVjdCJdPXdhc21FeHBvcnRzWyJ1Il07X3VucHJvamVjdD1Nb2R1bGVbIl91bnByb2plY3QiXT13YXNtRXhwb3J0c1sidiJdO19jYWxjdWxhdGVQZXJzcGVjdGl2ZVJhdGlvPU1vZHVsZVsiX2NhbGN1bGF0ZVBlcnNwZWN0aXZlUmF0aW8iXT13YXNtRXhwb3J0c1sidyJdO19zZXRUaHJlYWRQb29sU2l6ZT1Nb2R1bGVbIl9zZXRUaHJlYWRQb29sU2l6ZSJdPXdhc21FeHBvcnRzWyJ5Il07X3Byb2plY3RMbmdMYXRUb0NsaXBTcGFjZT1Nb2R1bGVbIl9wcm9qZWN0TG5nTGF0VG9DbGlwU3BhY2UiXT13YXNtRXhwb3J0c1sieiJdO19jYWxjdWxhdGVCaWxsYm9hcmREZXB0aEtleT1Nb2R1bGVbIl9jYWxjdWxhdGVCaWxsYm9hcmREZXB0aEtleSJdPXdhc21FeHBvcnRzWyJBIl07X2NhbGN1bGF0ZVN1cmZhY2VEZXB0aEtleT1Nb2R1bGVbIl9jYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXkiXT13YXNtRXhwb3J0c1siQiJdO19wcmVwYXJlRHJhd1Nwcml0ZUltYWdlcz1Nb2R1bGVbIl9wcmVwYXJlRHJhd1Nwcml0ZUltYWdlcyJdPXdhc21FeHBvcnRzWyJDIl07X19lbXNjcmlwdGVuX3Rsc19pbml0PXdhc21FeHBvcnRzWyJEIl07X3B0aHJlYWRfc2VsZj13YXNtRXhwb3J0c1siRSJdO19fZW1zY3JpcHRlbl90aHJlYWRfaW5pdD13YXNtRXhwb3J0c1siRiJdO19fZW1zY3JpcHRlbl90aHJlYWRfY3Jhc2hlZD13YXNtRXhwb3J0c1siRyJdO19fZW1zY3JpcHRlbl9ydW5fanNfb25fbWFpbl90aHJlYWQ9d2FzbUV4cG9ydHNbIkgiXTtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YT13YXNtRXhwb3J0c1siSSJdO19fZW1zY3JpcHRlbl90aHJlYWRfZXhpdD13YXNtRXhwb3J0c1siSiJdO19tYWxsb2M9TW9kdWxlWyJfbWFsbG9jIl09d2FzbUV4cG9ydHNbIksiXTtfZnJlZT1Nb2R1bGVbIl9mcmVlIl09d2FzbUV4cG9ydHNbIkwiXTtfX2Vtc2NyaXB0ZW5fY2hlY2tfbWFpbGJveD13YXNtRXhwb3J0c1siTSJdO19lbXNjcmlwdGVuX3N0YWNrX3NldF9saW1pdHM9d2FzbUV4cG9ydHNbIk4iXTtfX2Vtc2NyaXB0ZW5fc3RhY2tfcmVzdG9yZT13YXNtRXhwb3J0c1siTyJdO19fZW1zY3JpcHRlbl9zdGFja19hbGxvYz13YXNtRXhwb3J0c1siUCJdO19lbXNjcmlwdGVuX3N0YWNrX2dldF9jdXJyZW50PXdhc21FeHBvcnRzWyJRIl07X19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT13YXNtVGFibGU9d2FzbUV4cG9ydHNbIngiXX12YXIgd2FzbUltcG9ydHM7ZnVuY3Rpb24gYXNzaWduV2FzbUltcG9ydHMoKXt3YXNtSW1wb3J0cz17ZjpfX19jeGFfdGhyb3csZzpfX19wdGhyZWFkX2NyZWF0ZV9qcyxvOl9fYWJvcnRfanMsazpfX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qcyxxOl9fZW1zY3JpcHRlbl9ub3RpZnlfbWFpbGJveF9wb3N0bWVzc2FnZSxsOl9fZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzLGM6X19lbXNjcmlwdGVuX3RocmVhZF9jbGVhbnVwLGo6X19lbXNjcmlwdGVuX3RocmVhZF9tYWlsYm94X2F3YWl0LGk6X19lbXNjcmlwdGVuX3RocmVhZF9zZXRfc3Ryb25ncmVmLGQ6X2Vtc2NyaXB0ZW5fY2hlY2tfYmxvY2tpbmdfYWxsb3dlZCxoOl9lbXNjcmlwdGVuX2V4aXRfd2l0aF9saXZlX3J1bnRpbWUsbTpfZW1zY3JpcHRlbl9nZXRfaGVhcF9tYXgsYjpfZW1zY3JpcHRlbl9nZXRfbm93LG46X2Vtc2NyaXB0ZW5fbnVtX2xvZ2ljYWxfY29yZXMscDpfZW1zY3JpcHRlbl9yZXNpemVfaGVhcCxyOl9leGl0LGU6X2ZkX3dyaXRlLGE6d2FzbU1lbW9yeX19ZnVuY3Rpb24gcnVuKCl7aWYocnVuRGVwZW5kZW5jaWVzPjApe2RlcGVuZGVuY2llc0Z1bGZpbGxlZD1ydW47cmV0dXJufWlmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3JlYWR5UHJvbWlzZVJlc29sdmU/LihNb2R1bGUpO2luaXRSdW50aW1lKCk7cmV0dXJufXByZVJ1bigpO2lmKHJ1bkRlcGVuZGVuY2llcz4wKXtkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuO3JldHVybn1mdW5jdGlvbiBkb1J1bigpe01vZHVsZVsiY2FsbGVkUnVuIl09dHJ1ZTtpZihBQk9SVClyZXR1cm47aW5pdFJ1bnRpbWUoKTtyZWFkeVByb21pc2VSZXNvbHZlPy4oTW9kdWxlKTtNb2R1bGVbIm9uUnVudGltZUluaXRpYWxpemVkIl0/LigpO3Bvc3RSdW4oKX1pZihNb2R1bGVbInNldFN0YXR1cyJdKXtNb2R1bGVbInNldFN0YXR1cyJdKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKT0+e3NldFRpbWVvdXQoKCk9Pk1vZHVsZVsic2V0U3RhdHVzIl0oIiIpLDEpO2RvUnVuKCl9LDEpfWVsc2V7ZG9SdW4oKX19dmFyIHdhc21FeHBvcnRzO2lmKCFFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXt3YXNtRXhwb3J0cz1hd2FpdCAoY3JlYXRlV2FzbSgpKTtydW4oKX1pZihydW50aW1lSW5pdGlhbGl6ZWQpe21vZHVsZVJ0bj1Nb2R1bGV9ZWxzZXttb2R1bGVSdG49bmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KT0+e3JlYWR5UHJvbWlzZVJlc29sdmU9cmVzb2x2ZTtyZWFkeVByb21pc2VSZWplY3Q9cmVqZWN0fSl9CjtyZXR1cm4gbW9kdWxlUnRufWV4cG9ydCBkZWZhdWx0IE1vZHVsZTt2YXIgaXNQdGhyZWFkPWdsb2JhbFRoaXMuc2VsZj8ubmFtZT8uc3RhcnRzV2l0aCgiZW0tcHRocmVhZCIpO3ZhciBpc05vZGU9Z2xvYmFsVGhpcy5wcm9jZXNzPy52ZXJzaW9ucz8ubm9kZSYmZ2xvYmFsVGhpcy5wcm9jZXNzPy50eXBlIT0icmVuZGVyZXIiO2lmKGlzTm9kZSlpc1B0aHJlYWQ9KGF3YWl0IGltcG9ydCgid29ya2VyX3RocmVhZHMiKSkud29ya2VyRGF0YT09PSJlbS1wdGhyZWFkIjtpc1B0aHJlYWQmJk1vZHVsZSgpOwo=";
|
|
528
|
+
const __vite_glob_0_3 = "data:application/wasm;base64,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QCAAIQIMAQsgAkEESQRAIAAhAgwBCyADQQRrIQQgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCwuZAQEDfCAAIACiIgMgAyADoqIgA0R81c9aOtnlPaJE65wriublWr6goiADIANEff6xV+Mdxz6iRNVhwRmgASq/oKJEpvgQERERgT+goCEFIAAgA6IhBCACRQRAIAQgAyAFokRJVVVVVVXFv6CiIACgDwsgACADIAFEAAAAAAAA4D+iIAQgBaKhoiABoSAERElVVVVVVcU/oqChC5IBAQN8RAAAAAAAAPA/IAAgAKIiAkQAAAAAAADgP6IiA6EiBEQAAAAAAADwPyAEoSADoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAiACoiIDIAOiIAIgAkTUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgACABoqGgoAsGACAAEBELGgAgACgCAARAQdDgAP4QAgARAgAQGQALIAALqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F08bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhNG0GSD2ohAQsgACABQf8Haq1CNIa/ogubAwEGfyAALQAAQQ9xRQRAIABBBGpBAEEK/kgCAEEKcQ8LAn8gACgCACECAkACQAJAAkACQCMDIgEoAhgiBCAAKAIEIgNB/////wNxIgZHDQACQCACQQhxRQ0AIAAoAhRBAE4NACAAQQA2AhQgA0GAgICABHEhAwwCCyACQQNxQQFHDQBBBiAAKAIUIgFB/v///wdLDQUaIAAgAUEBajYCFAwCC0E4IQUgBkH/////A0YNAwJAIAZBACADIAJBBHEbcg0AIAMgAEEEaiADIAJBgAFxBH8gASgCUEUEQCABQXQ2AlALIAAoAgghBiABIABBEGo2AlQgBEGAgICAeHIg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QRtHDQBBG0EAQeTgACgCABshAAsgBEEQaiQAIAAL5wEBBH9BCBBnIgBBjN0ANgIAIAAiA0H83QA2AgACf0HnCCEBQQBB5wgtAABFDQAaAkACQANAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASIAQQRqIQFBgIKECCAAKAIAIgJrIAJyQYCBgoR4cUGAgYKEeEYNAAsDQCAAIgFBAWohACABLQAADQALCyABQecIawsiAkENahASIgBBADYCCCAAIAI2AgQgACACNgIAIABBDGohASACQQFqIgAEQCABQecIIAD8CgAACyADIAE2AgQgA0Gs3gA2AgAgA0G43gBBBBAEAAsyAQJ/QRgQEiIBQQA2AgggAUIANwIAIAFBDGoiAkEANgIIIAJCADcCACAAIAE2AgAgAAuXAQECfwJ/QajYAC4BACIBRQRAIwFBHDYCAEF/DAELAkACQCABQX5KDQBB6aAMIQACQAJAAkACQAJAAkACQCABQf8BcUEBaw4LCAABAgMEBAUFBgMHC0GAgAgMCAtBgIACDAcLQYCABAwGC0H/////BwwFCxAMDAQLEAtBEHYMAwtBAAwCCyABIQALIAALIgBBACAAQQBKGwt7AQR/QYznACgCACMDKAIYRgRAQYznAEEANgIACwNAQYTnACgCACECQYDnAEGA5wAoAgAiACAAQQFrQQAgAEH/////B3EiAUEBRxtBACABQf////8HRxsiA/5IAgAgAEcNAAsgAyACRSAAQQBOcXJFBEBBgOcAIAEQFgsLTQECfwJAAkADQEEGIQECQEGA5wAoAgAiAEH/////B3FB/v///wdrDgIDAgALIABBgOcAIAAgAEEBav5IAgBHDQALQQAPC0EKIQELIAELAgALOQEBf0Hw4gAoAgAiAARAQfDiACAAQQFrNgIADwtB7OIAQQD+FwIAQfTiACgCAARAQeziAEEBEBYLC1gBAn8jAygCGCIAQeziACgCAEcEQEHs4gBBACAA/kgCACIBBEADQEHs4gBB9OIAIAEQHUHs4gBBACAA/kgCACIBDQALCw8LQfDiAEHw4gAoAgBBAWo2AgALUwEDfyMAQRBrIgIkACMDIQMgAkEMaiIEBEAgBCADLQAoNgIACyADQQE6ACggACABEC4gAigCDCIBQQJNBH8jAyABOgAoQQAFQRwLGiACQRBq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ACADQRBqJAALIAYQESAAC+QHAgx8AX8CQCADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxBYEFlE+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRELIBELHAAgACAAEFc2AnggAEEB/hcCfCAAQQD+FwKAAQufAwMCfAF+An8gAL0iBUKAgICAgP////8Ag0KBgICA8ITl8j9UIgZFBEBEGC1EVPsh6T8gAJmhRAdcFDMmpoE8IAEgAZogBUIAWSIHG6GgIQBEAAAAAAAAAAAhAQsgACAAIAAgAKIiBKIiA0RjVVVVVVXVP6IgBCADIAQgBKIiAyADIAMgAyADRHNTYNvLdfO+okSmkjegiH4UP6CiRAFl8vLYREM/oKJEKANWySJtbT+gokQ31gaE9GSWP6CiRHr+EBEREcE/oCAEIAMgAyADIAMgA0TUer90cCr7PqJE6afwMg+4Ej+gokRoEI0a9yYwP6CiRBWD4P7I21c/oKJEk4Ru6eMmgj+gokT+QbMbuqGrP6CioKIgAaCiIAGgoCIDoCEBIAZFBEBBASACQQF0a7ciBCAAIAMgASABoiABIASgo6GgIgAgAKChIgAgAJogBxsPCyACBHxEAAAAAAAA8L8gAaMiBCAEvUKAgICAcIO/IgQgAyABvUKAgICAcIO/IgEgAKGhoiAEIAGiRAAAAAAAAPA/oKCiIASgBSABCwunAQEBfwJAEDNBCkcNAEHkACEAA0ACQCAARQ0AQYDnACgCAEUNACAAQQFrIQBBhOcAKAIARQ0BCwsQM0EKRw0AA0ACQEGA5wAoAgAiAEH/////B3FB/////wdHDQBBhOcAQQH+HgIAGkGA5wAgAEF//kgCABpBiOcAKAIAGkGA5wBBfxA3IQBBhOcAQQH+JQIAGiAARQ0AIABBG0cNAgsQM0EKRg0ACwsLNAAgACgCAEGBAU4EQEHg4gAoAgAiAARAA0BB4OIAQeTiACAAEB1B4OIAKAIAIgANAAsLCwuWAwEDfyMDIgIoAkhFBEAgAkGA4wA2AkgLAkBBjOcAKAIAIwMoAhhGDQBBgOcAQQBB/////wf+SAIABH9BCgVBjOcAIwMoAhg2AgBBAAtBCkcNAEHkACECA0ACQCACRQ0AQYDnACgCAEUNACACQQFrIQJBhOcAKAIARQ0BCwtBgOcAQQBB/////wf+SAIABH9BCgVBjOcAIwMoAhg2AgBBAAtBCkYEQANAAkBBgOcAKAIAIgJFDQBBhOcAQQH+HgIAGkGA5wAgAiACQYCAgIB4ciIC/kgCABpBiOcAKAIAGkGA5wAgAhA3IQJBhOcAQQH+JQIAGiACRQ0AIAJBG0cNAwtBgOcAQQBB/////wf+SAIABH9BCgVBjOcAIwMoAhg2AgBBAAtBCkYNAAsLQYznACMDKAIYNgIACyABQRAgARshAkGg5wAoAgAiAyEBAn8DQCABQQJ0IgQoArBnRQRAIAAgATYCAEGg5wAgATYCACAEQbDnAGogAjYCAEEADAILIAFBAWpB/wBxIgEgA0cNAAtBBgsQMgvlBAQGewF+AXwBfyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyILQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgC0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQEyEMIAP9AANQIQUgA/0AAxAhByABRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYIQECQCAD/QADYCAD/QADQEQAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyAMRJMQfEX4G4NBoiICoyACRAAAAAAAAAAAYRv9FCII/fIBIAP9AAMAIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBv9FCIJ/fIBIAFE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKP9FCIKIAP9AAMg/fIB/fAB/fAB/fABIgb9IQC9Qv///////////wCDQv/////////3/wBWIAb9IQG9Qv///////////wCDQoCAgICAgID4/wBacg0AIAP9AANwIAUgCP3yASAHIAn98gEgCiAD/QADMP3yAf3wAf3wAf3wASIF/SEAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAX9IQEiAL1C////////////AINC//////////f/AFYgAESN7bWg98awPmVyDQAgBCAG/QsDACAEIAX9CwMQQQEh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IAIEfCACKAIAKwOYAQVEAAAAAAAAAAALIAVkRQ0BCyAKIABBgAH8CgAAIAAgAUGAAfwKAAAgASAKQYAB/AoAAAsgCkGAAWokAAu5CwMHfAJ/AX4CQCACAnwCQCAAKAIALQAAQQFHDQAgACgCBCILKAJ4KAIQIgpFDQAgASsDCCIDRCS4kbJFQ1VApEQkuJGyRUNVQCADvUL///////////8AgyIMQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgDEKAgICAgICA+P8AVBsiBEQ5nVKiRt+RP6IQEyEGIAErAxAhAyAKKwNYIQcgASsDACEFIAorAxghCCAERCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYIQQgCisDYCAKKwNARAAAAAAAAAAAIANEAAAAAAAAAAAgA71C////////////AINCgICAgICAgPj/AFQbIAZEkxB8Rfgbg0GiIgOjIANEAAAAAAAAAABhGyIDoiAKKwMAIAVEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAFvUL///////////8Ag0KAgICAgICA+P8AVBsiBaIgCisDICAERPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIgSioKCgIga9Qv///////////wCDQv/////////3/wBWDQAgCisDaCAKKwNIIAOiIAorAwggBaIgCisDKCAEoqCgoCIJvUL///////////8Ag0KAgICAgICA+P8AWg0AIAorA3AgCisDUCADoiAKKwMQIAWiIAorAzAgBKKgoKC9Qv///////////wCDQoCAgICAgID4/wBaDQAgCisDeCAHIAOiIAggBaIgBCAKKwM4oqCgoCIDvUL///////////8Ag0L/////////9/8AViADRI3ttaD3xrA+ZXINACAGRAAAAAAAAPA/IAOjIgOiRAAAAAAAAPA/oEQAAAAAAADgP6IgCysDgAGiIgW9Qv///////////wCDQv/////////3/wBWDQBEAAAAAAAA8D8gCSADoqFEAAAAAAAA4D+iIAsrA4gBoiIEvUL///////////8Ag0KAgICAgICA+P8AWg0AIAsrA5ABIgO9Qv///////////wCDIgxCAX1C/v///////wdWIAxCgICAgICAgAh9Qv/////////v/wBWcQ0AIAIgBSADozkDACAEIAOjDAELQQAhCiAAKAIILQAAQQFHDQEgACgCBCgCeCILKAIUIgBFDQEgCysDACIDRAAAAAAAAAAAZQ0BIAErAwAhBSAAKwMAIQYgASsDCCIERCS4kbJFQ1VApEQkuJGyRUNVQCAEvUL///////////8AgyIMQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oEQYLURU+yHpPyAMQoCAgICAgID4/wBUGxAXEBghByAAKwNgIAArA0AgASsDECIERAAAAAAAAAAAIAS9Qv///////////wCDQoCAgICAgID4/wBUGyIEoiAGIAMgBUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAW9Qv///////////wCDQoCAgICAgID4/wBUG6IiBaIgACsDICADIAdE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgOioKCgIga9Qv///////////wCDQv/////////3/wBWDQEgACsDaCAAKwNIIASiIAArAwggBaIgAyAAKwMooqCgoCIHvUL///////////8Ag0L/////////9/8AVg0BIAArA3ggACsDWCAEoiAAKwMYIAWiIAMgACsDOKKgoKAiA70iDEIBfUL+////////B1YgDEIAUyAMQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQEgAiAGIAOjOQMAIAcgA6MLOQMIQQEhCgsgCgvLDAMDfwt8AX4jAEHwAGsiAiQAIAEoAnghAyACAn9BACABLQB8QQFHDQAaQQAgA0UNABpBACABKwOAAUQAAAAAAAAAAGRFDQAaQQAgASsDiAFEAAAAAAAAAABkRQ0AGkEAIAErA5ABIgdEAAAAAAAAAABhDQAaIAe9Qv///////////wCDQoCAgICAgID4/wBUCzoAbyACIAEtAH0gA0EAR3E6AG4gAiABNgJkIAIgAkHuAGo2AmggAiACQe8AajYCYCABKwM4IQsgASsDMCENRAAAAAAAAPA/IQkCQAJAIAErAxgiCEQAAAAAAAAAAGUNACABKwMgIgdEAAAAAAAAAABlDQAgASsDKCIFRAAAAAAAAAAAZQ0AIAcgBSANoiALoiIFoiIHRAAAAAAAAAAAIAe9Qv///////////wCDQoCAgICAgID4/wBUGyEHIAggBaIiCEQAAAAAAAAAACAIvUL///////////8Ag0KAgICAgICA+P8AVBshCCABKwNgIgW9IhBCAX1C/v///////wdWIBBCAFMgEEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAErA3AiCkQAAAAAAAAAAGQiAyABKwNoIgZEAAAAAAAAAABkckUNASAHIAggByAIZBsiDEQAAAAAAAAAAGRFDQEgBSAMoiIFvSIQQgF9Qv7///////8HViAQQgBTIBBC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAKIAWjIAYgBaNEAAAAAAAA8D8gBSAGYxtEAAAAAAAA8D8gBkQAAAAAAAAAAGQbIgkgBSAJoiAKZBsgCSADGyIJRAAAAAAAAPA/YQRARAAAAAAAAPA/IQkMAgsgByAJoiEHIAggCaIhCAwBC0QAAAAAAAAAACEHRAAAAAAAAAAAIQgLAnxEAAAAAAAAAAAgB0QAAAAAAADgP6IiBUQAAAAAAAAAAGUNABpEAAAAAAAAAAAhBkQAAAAAAAAAACAIRAAAAAAAAOA/oiIPRAAAAAAAAAAAZQ0AGiABKwNQIQogASsDSCEMIAUgASgCWCIDBHwgAysDACEGIAMrAwgFRAAAAAAAAAAAC6IhBSAPIAaiIgZEAAAAAAAAAABhBEBEAAAAAAAAAAAgBUQAAAAAAAAAAGENARoLIAaaIAyiIAUgCqKhIQ4gDCAFoiAGIAqioQshCgJ8IAEoAlwiA0UEQEQAAAAAAAAAACEFRAAAAAAAAAAADAELRAAAAAAAAAAAIQVEAAAAAAAAAAAgCSALIA0gAysDAKKioiIGRAAAAAAAAAAAYQ0AGiAGIAMrAwhEOZ1SokbfkT+iIgsQE6IhBSAGIAsQIKILIQYgASsDACENIAErAwghCyACIAErAxAiDDkDWCACIAsgDiAFoCIPRAAAAECmVFhBo0T4wWMa3KVMQKKgOQNQIAIgDSAKIAagIgogC0Q5nVKiRt+RP6IQEyIORI3ttaD3xrA+pUSN7bWg98awPiAOvUL///////////8A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AQVEAAAAAAAAAAALIARkRQ0BCwsgACAISQ0ACwsgAEGAAWsiCCAMRwRAIAwgCEGAAfwKAAALIAggCTYCACAAQfgAayAGOQMAIABB/ABrIBQ2AgAgAEHwAGsgDkHwAPwKAAAgCyANTQRAIAwgCBBaIQogACABEFoEQCAIIQEgDCEAIApFDQUMAwsgCg0BCwsgDCAIIAIgEBBfQQAhAwwBCwsLIA5B8AFqJAALsRoECnwMfwJ+CXsjAEHQAWsiDiQAIAMgAygCACIPNgIEAkACQCAAKAIAIhVFDQAgACgCBCIURQ0AIAAoAggiEkUNACABIBUoAgQgFSgCAGtB0AFtIhBPIAEgAk9yDQACQCAQIAIgAiAQSxsiGCABayICIAMoAgggD2tBB3VNDQAgAkGAgIAQTw0CIAMgAkEHdCIQEBIiAjYCBCADIAI2AgAgAyACIBBqNgIIIA9FDQAgDxARCyABIBhPDQAgDkH4AGohGQNAAkAgFSgCACABQdABbGoiAigCACIQRQ0AIAIoAggiD0UNACAPLQAYQQFHDQAgAi0AWEEBRw0AIBIrAwghByAUKAIQIQ8gFCsDCCEGAkAgAi0AgAFBAUYEQCACKwN4IgS9IhpCAX1C/////////wdUIBpC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUIBpCAFlxcg0BCyACKwMYIgREOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIAdEAAAAAAAAgECioyIIvSIaQgF9Qv7///////8HViAaQgBTIBpC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEJAkAgD0UgBkQAAAAAAAAAAGVyDQACfCACLQBAQQFGBEAgAisDOCEEIAIrAyghByACKwMwDAELIAREJLiRskVDVUCkRCS4kbJFQ1VAIAS9Qv///////////wCDIhpCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAaQoCAgICAgID4/wBUGyIKRDmdUqJG35E/ohATIQREAAAAAAAAAAAgAisDICIHRAAAAAAAAAAAIAe9Qv///////////wCDQoCAgICAgID4/wBUGyAERJMQfEX4G4NBoiIEoyAERAAAAAAAAAAAYRshBCACKwMQIgdEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAHvUL///////////8Ag0KAgICAgICA+P8AVBshByAKRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEKIA8rA3ggDysDWCAEoiAPKwMYIAeiIAogDysDOKKgoKAiBL0iGkIBfUL+////////B1YgGkIAUyAaQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgBiAEoyIERAAAAAAAAPA/IAQgBL0iGkIAUxtEAAAAAAAA8D8gGkL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbIBpCAX1C/////////wdUGyEJC0QAAAAAAADwPyAIoyAJoiIEvSIaQgF9Qv7///////8HViAaQgBTIBpC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASACQQE6AIABIAIgBDkDeCACIAk5A3AgAiAIOQNoCyACQaABQcgAIAItALABIg8baisDACEGIAJBqAFB0AAgDxtqKwMAIQcgDkIANwPIASAQKwMgIQggDkEAOgBYIA5CADcDUCAO/QwAAAAAAAAAAAAAAAAAAAAA/QsDYCAOQoCAgICAgID4PzcDcCAZQQBB0AD8CwAgDiACNgJIAkAgCBA5RQRAIBQoAhAiE0UNAkQAAAAAAAAAACEIRAAAAAAAAPA/IQcgAigCACIPKwMoIgZEAAAAAAAA8D8gBkQAAAAAAAAAAGIbIQkgDysDSCEMIA9BQGsgEisDWCEKAkAgAigCCCIRKwMIIgVEAAAAAAAAAABlBEBEAAAAAAAAAAAhBgwBCyARKwMQIgZEAAAAAAAAAABlBEBEAAAAAAAAAAAhBgwBCyASKwMoIgtEAAAAAAAAAABlBEBEAAAAAAAAAAAhBgwBCyAGIAkgC6IgCqIiCKIiBkQAAAAAAAAAACAGvUL///////////8Ag0KAgICAgICA+P8AVBshBiAFIAiiIghEAAAAAAAAAAAgCL1C////////////AINCgICAgICAgPj/AFQbIQggBL0iGkIBfUL+////////B1YgGkIAUyAaQv///////////wCDQoCAgICA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AOA/oiIbOQMwIAIgHEQAAAAAAADgP6IiIDkDKCACIBdEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAXvUL///////////8Ag0KAgICAgICA+P8AVBsiKDkDACACRAAAAAAAAAAAIBhEAAAAAAAAAAAgGL1C////////////AINCgICAgICAgPj/AFQbIBVEJLiRskVDVUCkRCS4kbJFQ1VAIBW9Qv///////////wCDIl1CgICAgICAgPj/AFgbRCS4kbJFQ1XApSIYRAAAAAAAAAAAIF1CgICAgICAgPj/AFQiChsiKUQ5nVKiRt+RP6IQE0STEHxF+BuDQaIiKqMgKkQAAAAAAAAAAGEbOQMQIAIgF0QAAAAAAADwPyAVRDmdUqJG35E/ohATIhdEje21oPfGsD6lRI3ttaD3xrA+IBe9Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaKjRPjBYxrcpUxAoqAiF0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IBe9Qv///////////wCDQoCAgICAgID4/wBUGyAooTkDGCACIClEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBAXEBhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKM5AwggGEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IAobEBcQGCEXIAIgFUQecBggy9biPqAiFUQkuJGyRUNVQKREJLiRskVDVUAgFb1C////////////AINCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IBW9Qv///////////wCDQoCAgICAgID4/wBUGxAXEBhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMgF0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6E5AyAgCP0AAzAhOSACIBk5A2AgAiAWOQNYIAIgOf0LA0ggBisDiAEhFSACICE5A3AgAiAVOQNoIAIgA/0AA5AG/QsDeCACIANBqAhqIgYpAwA3A4gBIAIgBv0AAwj9CwOQASAD/QADqAYhOSADKQOgBiFdIAIgJzkDuAEgAiBdNwOgASACIDn9CwOoASAGKwMIIRcgBisDACEYAkAgHEQAAAAAAAAAAGUgH0QAAAAAAAAAAGVyBEAgCCsDMCIWIRkgCCsDOCIVIRsgFiIdIRwgFSIaIR8MAQsgIP0U/QwAAAAAAADwvwAAAAAAAPA//fIBICAgGqL9FP3xASI5IBb9FCI6/fIBIjsgG/0U/e0BIBsgHaIiFf0U/fEBIj0gGf0UIj798gH98AEgCP0AAzAiQCA5/Q0ICQoLDA0ODwgJCgsMDQ4PIkH98AEiQv0hASEfIDkgPv3yASI5ID0gOv3yAf3xASBAIDn9DQABAgMEBQYHAAECAwQFBgciOv3wASI9/SEBIRwgQv0hACEaID39IQAhHSA7IBsgFaEiFSAZov0U/fABIEH98AEiO/0hASEbIDkgFSAWov0U/fEBIDr98AEiOf0hASEZIDv9IQAhFSA5/SEAIRYLIAJBADYCoAQgAiAfOQOoAiACIBw5A6ACIAIgGjkDiAIgAiAdOQOAAiACIBs5A+gBIAIgGTkD4AEgAiAVOQPIASACIBY5A8ABIAIgFyAfRAAAAECmVFhBo0T4wWMa3KVMQKKgOQO4AiACIBcgGkQAAABAplRYQaNE+MFjGtylTECioDkDmAIgAiAXIBtEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A/gBIAIgFyAVRAAAAECmVFhBo0T4wWMa3KVMQKKgOQPYASACIBggHESN7bWg98awPiAXRDmdUqJG35E/ohATIhUgFUSN7bWg98awPmMbRAAAAECmVFhBoiIVo0T4wWMa3KVMQKKgOQOwAiACIBggHSAVo0T4wWMa3KVMQKKgOQOQAiACIBggGSAVo0T4wWMa3KVMQKKgOQPwASACIBggFiAVo0T4wWMa3KVMQKKgOQPQAUEAIQYgA0EwakEAQYAB/AsAIANBADYCLCAD/QwAAAAAAAAAAAAAAAAAAAAA/QsDGCAD/QwAAAAAAAAAAAAAAAAAAAAA/QsDCCAevUL///////////8AgyJdUCBdQoCAgICAgID4/wBRciBdQoCAgICAgID4/wBWciEKRAAAAAAAAPA/RAAAAAAAAAAAIA5BAXEiCBshGSAlICQgBCADQQhqEEYhDSADKwO4CCIVRAAAAAAAAAAAIBW9Qv///////////wCDQoCAgICAgID4/wBUGyEbIAMrA7AIIhxEOZ1SokbfkT+iEBMiFUSN7bWg98awPqVEje21oPfGsD4gFb1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiEfIAQrAwAhICAEKwN4ISQgBCsDWCElIAQrAzghJiAEKwMYIScgBCsDcCEoIAQrA1AhKSAEKwMwISogBCsDECEvIAQrA2ghMCAEKwNIITEgBCsDKCEyIAQrAwghMyAEKwNgITQgBCsDQCE1IAQrAyAhNiAFKwOgASE3IANBgAlqIQIgAysDqAghOANAIDQgNUQAAAAAAAAAACAbIBwgCyAGKALgDCIEQQR0IgVqIgwrAwhEAAAAQKZUWEGjRPjBYxrcpUxAoqAiFUQkuJGyRUNVQKREJLiRskVDVUAgFb1C////////////AIMiXUKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIF1CgICAgICAgPj/AFQbIhZEOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIhWjIBVEAAAAAAAAAABhGyIVoiAgIDggDCsDACAfo0T4wWMa3KVMQKKgIhpEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAavUL///////////8Ag0KAgICAgICA+P8AVBsiGqIgNiAWRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIh2ioKCgIhe9Qv///////////wCDQv/////////3/wBWDQMgMCAxIBWiIDMgGqIgMiAdoqCgoCIYvUL///////////8Ag0KAgICAgICA+P8AWg0DICggKSAVoiAvIBqiICogHaKgoKAiFr1C////////////AINCgICAgICAgPj/AFoNAyAkICUgFaIgJyAaoiAmIB2ioKCgIhq9Qv///////////wCDQv/////////3/wBWIBpEje21oPfGsD5lcg0DIBYhFSAhRAAAAAAAAAAAYgRAIDcgGqEiHSAhIBqiIBWgIhUgFSAdYxshFQsgA0EsaiAEaiIMLQAARQRAIANBMGogBEEFdGoiBCAa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GyINoiAHKwMgIA9E+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiDqKgoKC9Qv///////////wCDQv/////////3/wBWDQIgBysDaCAHKwNIIAyiIAcrAwggDaIgBysDKCAOoqCgoL1C////////////AINCgICAgICAgPj/AFoNAiAHKwNwIAcrA1AgDKIgBysDECANoiAHKwMwIA6ioKCgIg+9Qv///////////wCDQoCAgICAgID4/wBaDQIgBysDeCASIAyiIBMgDaIgBysDOCAOoqCgoCIMvUL///////////8Ag0L/////////9/8AViAMRI3ttaD3xrA+ZXINAiAIBHwgCiAMoSINIAkgDKIgD6AiDiANIA5kGwUgDwsgDKMiDL1C////////////AINC//////////f/AFYNAiAMmiIMIAIgAiAMYxshAgsgFUEBaiIVIAZHDQALQQAhFCACvUL///////////8Ag0L/////////9/8AVg0AIAsgAjkDAEEBIRQLIBQLDgAgAEHQAGoQGkHQAGoLKgEBfyMAQRBrIgEkAEHk9wAQFARAIAEgACgCADYCABAZAAsgAUEQaiQACzMBAX8jAEEQayICJAAgACABNgIAQeT3ABAVBEAgAiAAKAIANgIAEBkACyACQRBqJAAgAAsEACAAC9ADAQZ/AkBB4PcA/hIAAEEBcQ0AIwBBIGsiASQAIAFBCGoiAEHg9wA2AgAgAEEAOgAMIABBADYCCCAAQeH3ADYCBCAAQQA6ABQgACgCAP4SAAAEf0EABQJ/IwBBEGsiAyQAIANBDGpB8gkQaSEFAkACQCAAQQRqIgAtAAhFDQAgACgCAC0AAEECcUUNACAAKAIEKAIAIABBDGooAgBGDQELA0AgACgCACIELQAAIgJBAnEEQCAEIAJBBHI6AABB/PcAQeT3ABBSDAELCyACQQFGIgJFBEAgAC0ACEEBRgRAIAAoAgQgAEEMaigCADYCAAsgBEECOgAACyAFEGggA0EQaiQAIAIMAQsQGQALQQFzCyABQSBqJABFDQBB2PcAQRUQRQRAEBkAC0Hc9wBB2PcANgIAIwBBIGsiAyQAIANBCGoiAEHg9wA2AgAgAEEAOgAMIABBADYCCCAAQeH3ADYCBCAAQQA6ABQgACgCAEEB/hkAACMAQRBrIgEkACAB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AkBBzOsAKAIAIgRBASADdCIHcUUEQEHM6wAgBCAHcjYCACACIAA2AgAgACACNgIYDAELIAFBGSADQQF2a0EAIANBH0cbdCEDIAIoAgAhAgNAIAIiBCgCBEF4cSABRg0CIANBHXYhAiADQQF0IQMgBCACQQRxaiIHKAIQIgINAAsgByAANgIQIAAgBDYCGAsgACAANgIMIAAgADYCCA8LIAQoAggiASAANgIMIAQgADYCCCAAQQA2AhggACAENgIMIAAgATYCCAsLyAEBA38jAEEQayIBJABBuO8AEBUaQbDrACgCAEUEQEHE6wBBAjYCAEG86wBCfzcCAEG06wBCgKCAgICABDcCAEGE7wBBAjYCACABQQxqIgJBADYCACMAQSBrIgBCADcDGCAAQgA3AxAgAEIANwMIQZjvACAAKQMYNwIAQZDvACAAKQMQNwIAQYjvACAAKQMINwIAIAIEQEGI7wAgAigCADYCAAtBsOsAIAFBCGpBcHFB2KrVqgVzNgIAC0G47wAQFBogAUEQaiQAC9sFAwJ/AX4FeyMAQRBrIgYkAAJAIAK9IghCAX1C/v///////wdWIAhCAFMgCEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAb9DAAAAAAAAAAAAAAAAAAAAAD9CwQAIAAgASACIAMgBhBARQ0AIAYrAwgiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AIMiCEKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAhCgICAgICAgPj/AFQbIgFEOZ1SokbfkT+iEBMhAiAE/QADUCEJIAYrAwAhACAE/QADECEKIAFEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBAXEBghASAE/QADYCAE/QADQEQAAAAAAAAAAEQAAAAAAAAAACACRJMQfEX4G4NBoiICoyACRAAAAAAAAAAAYRv9FCIL/fIBIAT9AAMAIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBv9FCIM/fIBIAFE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKP9FCINIAT9AAMg/fIB/fAB/fAB/fAB/Qz/////////f/////////9//U79DAAAAAAAAPB/AAAAAAAA8H/92wEgBP0AA3AgCSAL/fIBIAogDP3yASANIAT9AAMw/fIB/fAB/fAB/fABIgn9DP////////9//////////3/9Tv0MAAAAAAAA8H8AAAAAAADwf/3bAf0NAAECAwgJCgsQERITGBkaG/1TDQAgCf0hACAJ/SEBIgBEAAAAAAAA8D8gAEQAAAAAAAAAAGIboyIAvUL///////////8Ag0L/////////9/8AVg0AIAUgAJo5AwBBASEHCyAGQRBqJAAgBwsEACMDCyMBAX8gBUUgA0UgBEVycgR/QQAFIAAgASACIAMgBCAFEHMLCxoAIABBAP5BAgBBA0YEQCAAQf////8HEBYLC+4EAQZ/IwMiAUEBOgAoIAEgADYCQCABQQA6ACkgAUEB/iUCfEEBayIABEAgAUH8AGohAgNAIAIgAEQAAAAAAADwfxAhGiAC/hACACIADQALCyABKAJ4EFQCQCABKAJ4IgD+EAIARQRAIAAQVgwBC0H03gAQFRogAEHw3gA2AjggAEGk3wAoAgA2AjRBpN8AIAA2AgAgACgCNCAANgI4QfTeABAUGgsjAyECA0AgAigCRCIABEAgACgCBCAAKAIAIAIgACgCCDYCRBEAAAwBCwsCQCMDIgAtACpBAXFFDQADQBBDIAAgAC0AKkH+AXE6ACpBACECA0AgAkECdCIEKAKwZyEDIAAoAkggBGoiBigCACEEIAZBADYCACAERSADRXIgA0EQRnJFBEAQMiAEIAMRAAAQQwsgAkEBaiICQYABRw0ACxAyIAAtACpBAXFFDQEgBUEDSSAFQQFqIQUNAAsLEDZBAEEB/h4C4GIaAkAgASgCTCIARQ0AIAAgAUHMAGoiAkYNAANAIABBCGsoAgAgASAANgJUIAEgACgCADYCTCAAQQxrIgBBgICAgAT+QQIAIQQgAUEANgJURSAEQQBOcUUEQCAAQQEQFgsgAigCACIARQ0BIAAgAkcNAAsLEEdBnOEAQZzhACgCAEEBayIANgIAIABFBEBBm+EAQQA6AAALIAEoAgwiACABKAIIIgI2AgggAiAANgIMIAEgATYCCCABIAE2AgwQNSMFRQRAQQAkA0EAJARBACQFQQEkBiABQSBqIgBBAkEB/kgCAEEDRgRAIAEQAQ8LIABBAP4XAgAgAEEBEBYPC0EAEBAACxIAIAAoAiwiAEGEARBIIAAQEQsMAEHU4gAjA/4XAgALJgECf0GQ4QAoAgBBABAeIAAhAQNAIAEoAlggARBLIgEgAEcNAAsLOAAgACAAKAIAIAAoAgQgACgCCCAAKAIMIAAoAhAQCjkDGCAALQAgQQFGBEAgACgCEBARIAAQEQsLHQEBfyADRSAERXIEf0EABSAAIAEgAiADIAQQRgsL4gUCA38BfCMAQTBrIgUkACAFIAE2AgwgBSAANgIIIAVBADYAKSAFQQA6ACggBUIANwMgIAVBADYCHCAFIAM2AhggBSACNgIUIAUjAzYCECAFQQA2ACwCfCAEBEAjAEEQayIDJAAgAyAFQQhqNgIMIANBADYCCCADQQ82AgQgA0EEaiEEIwBBgAFrIgAkACMAQeAAayIBJAACQEGU4QAoAgBBAkYEQCMAQRBrQQA2AgwMAQsjAEEQayICJAADQAJAAkACQAJAAkBBlOEAQQBBAf5IAgAOBAACAQMFCyACQQRqIgZBlOEANgIEIAJBETYCBCACIwMiBygCRDYCDCAHIAY2AkQQSiMDIAIoAgw2AkRBlOEAQQL+QQIAQQNHDQBBlOEAQf////8HEBYLIAJBEGokAAwCC0GU4QBBAUED/kgCABoLQZThAEEAQQMQHQwBCwsLIAFBAEHQAPwLACABQQ42AlwgASAENgJYIAFBADYCVCABQQA2AlAgAEEgaiICIAEoAlw2AgAgAiABKAJYNgIEIAIgASgCVDYCCCACIAEoAlA2AgwgAkEQaiABQdAA/AoAACABQeAAaiQAIABBCTYCGCAAQQo2AhQgACAAKQIUNwMIIAAgAjYCHCAAIAI2AhBB7OAAQdDhACAAQQhqECsEfyAAQTBqIgEQFRogACgCLEUEQCAAQcgAaiECA0AgAiABEFIgACgCLEUNAAsLIAEQFBogACgCLEEBRgVBAAshASAAQSBqEEwgAEGAAWokACADQRBqJAAgBSsDIEQAAAAAAAAAACABGwwBC0EoEBoiASAFQQhqQSj8CgAAIAFBAToAICABIAJBA3QiABAaIgI2AhAgAiADIAAQIyMAQSBrIgAkACAAQQA2AhggAEEPNgIUIAAgATYCHCAAIAE2AhAgACAAKQIUNwMIQezgAEHQ4QAgAEEIahArGiAAQSBqJABEAAAAAAAAAAALIAVBMGokAAuVAQECfyABKAIIIAEoAgARAAAjAEEgayIBJAACQCAAKAIIRQRAIABBEGoiAhAVGiAAQQE2AgwgABBNIAIQFBogAEEoahBQDAELIAAQTSAAKAIQIQIgACgCDCABQQc2AhggAUEINgIUIAEgADYCHCABIAA2AhAgASABKQIUNwMIIAIgAUEIahArDQAgABAiCyABQSBqJAALEwAgACgCBCAAKAIYEQAAIAAQIgtsAQF/AkAjAygCSEGQ4QAoAgBBAnRqKAIAIgFFBEAgACAANgJYIAAgADYCXEGQ4QAoAgAgABAeDAELIAAgATYCWCAAIAEoAlw2AlwgASAANgJcIAAoAlwgADYCWAsgACAAKAIEIAAoAgARAwALEwAgACgCBCAAKAIUEQAAIAAQIgtLAAJAQeDgACAARAAAAAAAAAAAZAR/IABEAAAAAAAA4D+gnCIARAAAAAAAAPB/ZCAARAAAAAAAAPB/Y3JFDQEgAPwDBUEACzYCAAsLowQCAX4BfwJAIAVFIAZFcg0AAnwgAwRAIAMrAxAhAiADKwMIIQEgAysDAAwBC0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIHQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgB0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQE0STEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEbIQIgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gEBcQGET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyEBIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBsLIQAgBSsDeCAFKwNYIAKiIAUrAxggAKIgASAFKwM4oqCgoCIAvSIHQgF9Qv7///////8HViAHQgBTIAdC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEIACjIgC9IgdCAX1C/v///////wdWIAdCAFMgB0L///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAYgADkDAEEBIQgLIAgLGQAgAEEB/hcCACAAEDggAEEBQQD+SAIAGgsGACAAEFQLrggDDHwBfgF/AkAgA0UgBEVyDQAgAr0iEUIBfUL+////////B1YgEUIAUyARQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgAysDeCIHIAMrA1giCEQAAAAAAAAAAKIgAysDGCAARAAAAAAAAAAAIAC9Qv///////////wCDQoCAgICAgID4/wBUGyIFoiABRAAAAAAAAAAAIAG9Qv///////////wCDQoCAgICAgID4/wBUGyIGIAMrAziioCIBoKAiAL1C////////////AINC//////////f/AFYNACAHIAggAaCgIgG9Qv///////////wCDQv/////////3/wBWIABEAAAAAAAAAABhciABRAAAAAAAAAAAYXINACADKwNgIgkgAysDQCIKRAAAAAAAAAAAoiADKwMAIAWiIAYgAysDIKKgIgugoCAAoyIHvUL///////////8Ag0L/////////9/8AVg0AIAMrA2giDCADKwNIIg1EAAAAAAAAAACiIAMrAwggBaIgBiADKwMooqAiDqCgIACjIgi9Qv///////////wCDQoCAgICAgID4/wBaDQAgAysDcCIPIAMrA1AiEEQAAAAAAAAAAKIgAysDECAFoiAGIAMrAzCioCIGoKAgAKMiBb1C////////////AINCgICAgICAgPj/AFoNACAJIAogC6CgIAGjIgm9Qv///////////wCDQoCAgICAgID4/wBaDQAgDCANIA6goCABoyIKvUL///////////8Ag0KAgICAgICA+P8AWg0AIA8gECAGoKAgAaMiAb1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAAAAACEAIAEgBaEiAUQAAAAAAAAAAGIEQEQAAAAAAAAAACAFoSABoyEACyAJIAehIACiIAegIgG9Qv///////////wCDQv/////////3/wBWDQAgCiAIoSAAoiAIoCIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAEgAqMiAb1C////////////AINC//////////f/AFYNACAAIAKjIgC9Qv///////////wCDQoCAgICAgID4/wBaDQBEAAAAAACAZkAgAEQAAAAAAIB2QKKhRBgtRFT7IQlAokQAAAAAAIBmQKMQWBBZRPjBYxrcpVxAokQAAAAAAIBWwKAiAEQkuJGyRUNVQKREJLiRskVDVUAgAL1C////////////AINCgICAgICAgPj/AFgbIAFEAAAAAACAdkCiRAAAAAAAgGbAoCIBvUL///////////8Ag0L/////////9/8AVg0ARCS4kbJFQ1XApSIAvUL///////////8Ag0KAgICAgICA+P8AWg0AIAQgADkDCCAEIAE5AwBBASESCyASC04BA38jASEAIwMiAigCdCIBBEAgAkEANgJ0IAEkASABQQBBBfwLACABDwsjAkEBIAAbBEBBASQCQQUQGiEACyAAJAEgAEEAQQX8CwAgAAvfBAMBfgJ8AX8CQCAERSAFRXINACADvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEKwMAIQcgAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiBkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gBkKAgICAgICA+P8AVBsQFxAYIQggBCsDYCAEKwNAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIgGiIAcgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyADoiIAoiADIAhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgIgBCsDIKKgoKAiA71C////////////AINC//////////f/AFYNACAEKwNoIAQrA0ggAaIgBCsDCCAAoiACIAQrAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQAgBCsDeCAEKwNYIAGiIAQrAxggAKIgAiAEKwM4oqCgoCIAvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAFIAcgAKM5AwggBSADIACjOQMAQQEhCQsgCQtLAQJ/EGsgACgCACECIABBADYCACgCACACEB4gACgCDCAAKAIEIAAoAggQYSAAKAIAIQEgAEEANgIAIAEEQCABED8QEQsgABARQQALXAECfxBrIAAoAgAhAiAAQQA2AgAoAgAgAhAeIABBBGogACgCFCAAKAIYIAAoAhwoAgAgACgCIEEMbGoQYCAAKAIAIQEgAEEANgIAIAEEQCABED8QEQsgABARQQAL2wIBAX4gAwRAIAMgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGzkDACADRAAAAAAAAAAAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIAFEJLiRskVDVUCkRCS4kbJFQ1VAIAG9Qv///////////wCDIgRCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAEQoCAgICAgID4/wBUGyIARDmdUqJG35E/ohATRJMQfEX4G4NBoiIBoyABRAAAAAAAAAAAYRs5AxAgAyAARCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjOQMICyADQQBHCwQAIwALEAAjACAAa0FwcSIAJAAgAAsGACAAJAALJgAgACQDIAEkBCACJAUgAyQGIAJFIARFckUEQEGs3wAgBDYCAAsLBwAgACgCBAsFAEG9CQsFAEGYCwvbXAQYfwd8A34DeyMAQbAEayIDJAACQAJAIABFIAFFcg0AIAH9DAAAAAAAAEJAAAAAAAAAEED9CwMQIAH9DAAAAAAAAAAAAAAAAABgYED9CwMAIAFCADcDICAB/QwAAAAAAAAAAAAAAAAAAAAA/QsDKCAAKwMAIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyICcSAiQoCAgICAgID4/wBRciAiQoCAgICAgID4/wBWciAiQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINACAaRAAAAAAAAOA/oJwiGkQAAAAAAADwf2QgGkQAAAAAAADwf2NyRQ0AIBr8AyIHQQ9JIBogB7hicg0AIAArAwgiGr0iIUL///////////8AgyIiQgF9Qv////////8HVCAhQgBTIgJxICJCgICAgICAgPj/AFFyICJCgICAgICAgPj/AFZyICJCgICAgICAgAh9QoCAgICAgIDw/wBUIAJxcg0AIBpEAAAAAAAA4D+gnCIaRAAAAAAAAPB/ZCAaRAAAAAAAAPB/Y3JFDQAgGvwDIgJBGEcgGiACuGJyDQAgACsDECIavSIhQv///////////wCDIiJCAX1C/////////wdUICFCAFMiAnEgIkKAgICAgICA+P8AUXIgIkKAgICAgICA+P8AVnIgIkKAgICAgICACH1CgICAgICAgPD/AFQgAnFyDQAgGkQAAAAAAADgP6CcIhpEAAAAAAAA8H9kIBpEAAAAAAAA8H9jckUNACAaIBr8AyIGuGIgBiAHS3IgByAGa0EwSXINACAAKwMYIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyICcSAiQoCAgICAgID4/wBRciAiQoCAgICAgID4/wBWciAiQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINACAaRAAAAAAAAOA/oJwiGkQAAAAAAADwf2QgGkQAAAAAAADwf2NyRQ0AIBogGvwDIg64Yg0AIAArAyAiGr0iIUL///////////8AgyIiQgF9Qv////////8HVCAhQgBTIgJxICJCgICAgICAgPj/AFFyICJCgICAgICAgPj/AFZyICJCgICAgICAgAh9QoCAgICAgIDw/wBUIAJxcg0AIBpEAAAAAAAA4D+gnCIaRAAAAAAAAPB/ZCAaRAAAAAAAAPB/Y3JFDQAgGiAa/AMiC7hiIAcgC0lyIAcgC2sgDkEJbElyDQAgACsDKCIavSIhQv///////////wCDIiJCAX1C/////////wdUICFCAFMiAnEgIkKAgICAgICA+P8AUXIgIkKAgICAgICA+P8AVnIgIkKAgICAgICACH1CgICAgICAgPD/AFQgAnFyDQAgGkQAAAAAAADgP6CcIhpEAAAAAAAA8H9kIBpEAAAAAAAA8H9jckUNACAaIBr8AyIFuGINACAAKwMwIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyIC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ADoAuAYgAkHABmoiAiALRw0ACwsgBCALNgIECyAEDAELDAILIQUgFQRAIAAgCUEDdGohCSAXKAIEIBcoAgAiBGtByABtIQsgBSgCACEHIAMoAtwCIQogAysDyAIhHUEAIQADQCADQQA6AJgBIANCADcDkAEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA4ABIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwOgASADQQA6ALABIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwO4ASADQQA6ANgBIANCADcD0AEgA0KAgICAgICA+D83A8gBIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwPgASADQoCAgICAgID4PzcD8AEgA0EAOgCIAiAD/QwAAAAAAAAAAAAAAAAAAAAA/QsD+AEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA5ACIANBADoAoAIgAyAANgJcIAMgCSAAQdgBbGoiBjYCWCADAn9BACAGKwMIIhq9IiFC////////////AIMiIkIBfUL/////////B1QgIUIAUyICcSAiQoCAgICAgID4/wBRciAiQoCAgICAgID4/wBWciAiQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINABpBACAaRAAAAAAAAOA/oJwiGkQAAAAAAADwf2QgGkQAAAAAAADwf2NyRQ0AGkEAIBogGvwDIgK4Yg0AGiAEIAJByABsakEAIAIgC0kbCzYCYCAG/QADoAEhJCADIAYrA7ABOQN4IAMgJP0LA2hBACECAkAgCkUgHUQAAAAAAAAAAGVyDQAgAysDaCEeIAorAwAhHCADKwNwIhpEJLiRskVDVUCkRCS4kbJFQ1VAIBq9Qv///////////wCDIiFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/ICFCgICAgICAgPj/AFQbEBcQGCEbIAorA2AgCisDQCADKwN4IhpEAAAAAAAAAAAgGr1C////////////AINCgICAgICAgPj/AFQbIiCiIBwgHSAeRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gHr1C////////////AINCgICAgICAgPj/AFQboiIeoiAKKwMgIB0gG0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6IiHKKgoKAiG71C////////////AINC//////////f/AFYNACAKKwNoIAorA0ggIKIgCisDCCAeoiAcIAorAyiioKCgIhq9Qv///////////wCDQv/////////3/wBWDQAgCisDeCAKKwNYICCiIAorAxggHqIgHCAKKwM4oqCgoCIcvSIhQgF9Qv7///////8HViAhQgBTICFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACADIBogHKM5A6gBIAMgGyAcozkDoAFBASECCyADIAI6ALABIAMrA3ghHCADKwNwIRsgAyADKwNoIhpEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAavUL///////////8Ag0KAgICAgICA+P8AVBs5A4ABIANEAAAAAAAAAAAgHEQAAAAAAAAAACAcvUL///////////8Ag0KAgICAgICA+P8AVBsgG0QkuJGyRUNVQKREJLiRskVDVUAgG71C////////////AIMiIUKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAICFCgICAgICAgPj/AFQbIhtEOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIhqjIBpEAAAAAAAAAABhGzkDkAEgAyAbRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjOQOIASADQQE6AJgBAkAgAygCWCICKwMAIhq9Qv///////////wCDQv/////////3/wBYBEAgGp0iGiAa/AYiIblhDQELQgAhIQsgAyAhNwO4AQJAIAIrA1giH71C////////////AINCgICAgICAgPj/AFQNAEQAAAAAAAAAACEfIAIrA2AgAisDaKAiGr1C////////////AINC//////////f/AFYNAEQAAAAAAAAAAAJ8IBq9IiNCNIinQf8PcSICQf8PRgRAIBpEAAAAAACAdkCiIhogGqMMAQsgI0IBhiIhQoCAgICAgMD2gH9YBEAgGkQAAAAAAAAAAKIgGiAhQoCAgICAgMD2gH9RGwwBCwJ+IAJFBEBBACECICNCDIYiIUIAWQRAA0AgAkEBayECICFCAYYiIUIAWQ0ACwsgI0EBIAJrrYYMAQsgI0L/////////B4NCgICAgICAgAiECyEhIAJBhwhKBEADQAJAICFCgICAgICAoAt9IiJCAFMNACAiIiFCAFINACAaRAAAAAAAAAAAogwDCyAhQgGGISEgAkEBayICQYcISg0AC0GHCCECCwJAICFCgICAgICAoAt9IiJCAFMNACAiIiFCAFINACAaRAAAAAAAAAAAogwBCyAhQv////////8HWARAA0AgAkEBayECICFCgICAgICAgARUICFCAYYhIQ0ACwsgI0KAgICAgICAgIB/gyAhQoCAgICAgIAIfSACrUI0hoQgIUEBIAJrrYggAkEAShuEvwsiGkQAAAAAAIB2QKAgGiAaRAAAAAAAAAAAYxsiGiAaRAAAAAAAAAAAYRshHwsgAyAfOQPgASADIB9EOZ1Sokbfkb+iIhoQEzkD8AEgAyAaECA5A+gBIAcgAEHQAWxqIANB2ABqQckB/AoAACAAQQFqIgAgFUcNAAsLIANByAJqIRggA0HoAmohEiADLQDHAiEGIwBBIGsiCyQAIAUiACgCACIEIAAoAgQiBUcEQANAAkAgBCgCAEUNACAEKAIIIgJFDQAgBC0AWEEBRw0AIBIrAwghGiAYKAIQIQcgGCsDCCEgAkAgBC0AgAFBAUYEQCAEKwN4Ih29IiFCAX1C/////////wdUICFC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUICFCAFlxcg0BCyAEKwMYIhtEOZ1SokbfkT+iEBNEkxB8Rfgbg0GiIBpEAAAAAAAAgECioyIevSIhQgF9Qv7///////8HViAhQgBTICFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEfAkAgB0UgIEQAAAAAAAAAAGVyDQACfCAELQBAQQFGBEAgBCsDOCEdIAQrAyghGyAEKwMwDAELIBtEJLiRskVDVUCkRCS4kbJFQ1VAIBu9Qv///////////wCDIiFCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACAhQoCAgICAgID4/wBUGyIcRDmdUqJG35E/ohATIRtEAAAAAAAAAAAgBCsDICIaRAAAAAAAAAAAIBq9Qv///////////wCDQoCAgICAgID4/wBUGyAbRJMQfEX4G4NBoiIaoyAaRAAAAAAAAAAAYRshHSAEKwMQIhpEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAavUL///////////8Ag0KAgICAgICA+P8AVBshGyAcRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQFxAYRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEaIAcrA3ggBysDWCAdoiAHKwMYIBuiIBogBysDOKKgoKAiGr0iIUIBfUL+////////B1YgIUIAUyAhQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgICAaoyIaRAAAAAAAAPA/IBogGr0iIUIAUxtEAAAAAAAA8D8gIUL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbICFCAX1C/////////wdUGyEfC0QAAAAAAADwPyAeoyAfoiIdvSIhQgF9Qv7///////8HViAhQgBTICFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAEQQE6AIABIAQgHTkDeCAEIB85A3AgBCAeOQNoCyALQRBqIARBASAYIBIgAiAdIAAgBhA9IAQgC/0AAxD9CwOgASAEQQE6ALABIAsgBEEAIBggEiAEKAIIIB0gACAGED0gBCAL/QADAP0LA7gBIARBAToAyAELIARB0AFqIgQgBUcNAAsLIAtBIGokACMAQTBrIggkACADQcwAaiIKQQA2AgggA0IANwJMIAhBADYCLCAIQgA3AiQgACILKAIEIgIgACgCACIAa0HQAW0hBSAAIAJHBEAgBUGAgIAQTw0CIAggBUEHdCIAEBIiAjYCKCAIIAI2AiQgCCAAIAJqNgIsCyAIIA0gD0EEcUECdnE6ACAgCCASNgIcIAggGDYCGCAIIAs2AhQCQAJAIAhBFGpBACAFQYAETwR/IAVBCHYiAhAxIgBBBCAAGyIAIAAgAksbIQVB4OAAKAIAIgJFBEAQMSIAQQQgABshAgsgAiAFIAIgBUkbIgxBAUsNASALKAIEIAsoAgBrQdABbQUgBQsgCEEkahBgDAELIAggDEEMbCIAEBIiAjYCCCAIIAAg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AEHy2QBBAEHkAPwLAEHW2gBBAEGXBPwIAwAjCQRAAAtB8N4AQQBBNPwLAEGk3wBBAEHlAPwIBABBieAAQQBBP/wLAEHI4ABBAEEM/AgFAEHg4ABBAEHQF/wLAEGw+ABBAv4XAgBBsPgAQX/+AAIAGgwBC0Gw+ABBAUJ//gECABoL/AkA/AkB/AkC/AkDQQEkCfwJBPwJBQuJAQBBwPgEJAhBwPgAJAdB8OEAQQI2AgBB0OEAQdDhADYCAEGc4gBBnOIANgIAQbDiAEG44QA2AgBB6OEAQSo2AgBBmOIAQYDjADYCAEHc4QBB0OEANgIAQdjhAEHQ4QA2AgBB0OEAEAlBhOIAIwg2AgBBiOIAIwgjB2s2AgBB0OEAEEFB0OEAEAgLC71WBgHoBSVzIGZhaWxlZCB0byByZWxlYXNlIG11dGV4ACVzIGZhaWxlZCB0byBhY3F1aXJlIG11dGV4ACVzIGZhaWxlZCB0byBicm9hZGNhc3QAJXM6JWQ6ICVzAHZlY3RvcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAc3RkOjpleGNlcHRpb24AYmFkX2FycmF5X25ld19sZW5ndGgAdGVybWluYXRpbmcAX19jeGFfZ3VhcmRfcmVsZWFzZQBfX2N4YV9ndWFyZF9hY3F1aXJlAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZAB0aHJlYWQgY29uc3RydWN0b3IgZmFpbGVkAF9fdGhyZWFkX3NwZWNpZmljX3B0ciBjb25zdHJ1Y3Rpb24gZmFpbGVkAHRocmVhZDo6am9pbiBmYWlsZWQAbXV0ZXggbG9jayBmYWlsZWQAc3RkOjpiYWRfYWxsb2MAY2F0Y2hpbmcgYSBjbGFzcyB3aXRob3V0IGFuIG9iamVjdD8AX19jeGFfZ3VhcmRfYWNxdWlyZSBkZXRlY3RlZCByZWN1cnNpdmUgaW5pdGlhbGl6YXRpb246IGRvIHlvdSBoYXZlIGEgZnVuY3Rpb24tbG9jYWwgc3RhdGljIHZhcmlhYmxlIHdob3NlIGluaXRpYWxpemF0aW9uIGRlcGVuZHMgb24gdGhhdCBmdW5jdGlvbj8AAAAAAAAAAQAAAAIA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AXY82SEp9f9v8j9hDH92u/x/PDw6kxQAkPI/K0ECPMoCcrwTY1UUALDyPwIf8jOCgJK8O1L+6//P8j/y3E84fv+IvJatuAsA8PI/xUEwUFH/hbyv4nr7/w/zP50oXohxAIG8f1+s/v8v8z8Vt7c/Xf+RvFZnpgwAUPM/vYKLIoJ/lTwh9/sRAHDzP8zVDcS6AIA8uS9Z+f+P8z9Rp7ItnT+UvELS3QQAsPM/4Th2cGt/hTxXybL1/8/zPzESvxA6Ano8GLSw6v/v8z+wUrFmbX+YPPSvMhUAEPQ/JIUZXzf4Zzwpi0cXADD0P0NR3HLmAYM8Y7SV5/9P9D9aibK4af+JPOB1BOj/b/Q/VPLCm7HAlbznwW/v/4/0P3IqOvIJQJs8BKe+5f+v9D9FfQ2/t/+UvN4nEBcA0PQ/PWrccWTAmbziPvAPAPD0PxxThQuJf5c80UvcEgAQ9T82pGZxZQRgPHonBRYAMPU/CTIjzs6/lrxMcNvs/0/1P9ehBQVyAom8qVRf7/9v9T8SZMkO5r+bPBIQ5hcAkPU/kO+vgcV+iDySPskDALD1P8AMvwoIQZ+8vBlJHQDQ9T8pRyX7KoGYvIl6uOf/7/U/BGntgLd+lLwC/wAEZAAgAAAE//8QAAEAAQABAP//Af8B//////8B/wH/Af8B/wH/Af8B/wH//////wr/IAD//wP/Af8E/x4AAAEF//////9jAAAIYwDoAwIAAAD//////wAAAAH/Af//////////////AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAH/Af//////AAEgAAQAgAAACP//Af8B/////////wH/Bv8H/wj/Cf//////vAK8AgEA//8BAAEA//8AAP//////////AAAAAAAAAAAAAAAAAAAAABQBeP//AQAK////////////Af8B/wAAAAAAAAH/Af8B/wAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAAf8B/wEAAAABAAAAAf//////AAAAAAH///8AAAAA/////////////ygACv//////AQAK/////wD//////////wGXBAH/Af///wEA//////////////////8K//////8M/w3/AAAILgAAhC0AAFgvAABOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQAAAAAILgAAtC0AAHgtAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAAAAAAAAqC0AABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAAAAAACguAAAXAAAAHwAAABkAAAAaAAAAGwAAACAAAAAhAAAAIgAAAAguAAA0LgAAqC0AAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAAAAsC4AAAMAAAAjAAAAJAAAAAAAAADMLgAAAwAAACUAAAAmAAAAAAAAAJguAAADAAAAJwAAACgAAADgLQAAoC4AAFN0OWV4Y2VwdGlvbgAAAAAILgAAvC4AAJguAABTdDliYWRfYWxsb2MAAAAACC4AANguAACwLgAAU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoAAAAAAAAAAAILwAABAAAACkAAAAqAAAACC4AABQvAACYLgAAU3QxMWxvZ2ljX2Vycm9yAAAAAAA4LwAABAAAACsAAAAqAAAACC4AAEQvAAAILwAAU3QxMmxlbmd0aF9lcnJvcgAAAADgLQAAYC8AAFN0OXR5cGVfaW5mbwABZXAvAABwLwAAAAABAAACAAAAAAAABQAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAABQAAADYNwAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAP////8KAQy4LwAAQDwBABYAAAA=";
|
|
529
|
+
const __vite_glob_0_4 = "data:application/wasm;base64,AGFzbQEAAAABtAEZYAF/AX9gAX8AYAR/f39/AGABfAF8YAJ/fwF/YAV/f39/fwBgBn9/f39/fwBgAABgBXx8fH9/AX9gA39/fwF/YAZ8fHx/f38Bf2AMfHx8f39/f39/fHx/AX9gA39/fwBgA3x8fwF8YAR8fHx/AX9gBnx8fHx/fwF/YAd8fHx/fH9/AX9gAXwAYAl/f39/f398f38AYAJ/fwBgAnx8AXxgAnx/AX9gAXwBf2ACfH8BfGAAAX8CqwEFFndhc2lfc25hcHNob3RfcHJldmlldzEOYXJnc19zaXplc19nZXQABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGFyZ3NfZ2V0AAQDZW52EF9fbWFpbl9hcmdjX2FyZ3YABBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCXByb2NfZXhpdAABA2Vudh9lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoAAEDQD8HDg8IEBEICAoKCAsLBAkHEgITCQIFDAQHAxQVDQMDAxYXAw0DAAEAAAAAAQEJCQwCAgIFBQYGAAAAAAEAARgEBQFwARkZBQcBAYICgIACBggBfwFBwNsECwe6AhAGbWVtb3J5AgAKZnJvbUxuZ0xhdAAGB3Byb2plY3QABwl1bnByb2plY3QACBljYWxjdWxhdGVQZXJzcGVjdGl2ZVJhdGlvAAkZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAEXNldFRocmVhZFBvb2xTaXplAAoYcHJvamVjdExuZ0xhdFRvQ2xpcFNwYWNlAAsaY2FsY3VsYXRlQmlsbGJvYXJkRGVwdGhLZXkADRhjYWxjdWxhdGVTdXJmYWNlRGVwdGhLZXkAEBdwcmVwYXJlRHJhd1Nwcml0ZUltYWdlcwASBl9zdGFydAAdBm1hbGxvYwAqBGZyZWUAKxlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAEIcZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudABDCR4BAEEBCxgvPwUvMTAwMzs5NTE6ODYxPTE+MTxAQUAMAQgKsc8DPwIAC9sCAQF+IAMEQCADIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBs5AwAgA0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIEQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgBEKAgICAgICA+P8AVBsiAEQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAaMgAUQAAAAAAAAAAGEbOQMQIAMgAEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDCAsgA0EARwvfBAMBfgJ8AX8CQCAERSAFRXINACADvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEKwMAIQcgAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiBkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gBkKAgICAgICA+P8AVBsQKRAkIQggBCsDYCAEKwNAIAJEAAAAAAAAAAAgAr1C////////////AINCgICAgICAgPj/AFQbIgGiIAcgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUGyADoiIAoiADIAhE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKOiIgIgBCsDIKKgoKAiA71C////////////AINC//////////f/AFYNACAEKwNoIAQrA0ggAaIgBCsDCCAAoiACIAQrAyiioKCgIge9Qv///////////wCDQv/////////3/wBWDQAgBCsDeCAEKwNYIAGiIAQrAxggAKIgAiAEKwM4oqCgoCIAvSIGQgF9Qv7///////8HViAGQgBTIAZC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAFIAcgAKM5AwggBSADIACjOQMAQQEhCQsgCQuuCAMMfAF+AX8CQCADRSAERXINACACvSIRQgF9Qv7///////8HViARQgBTIBFC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxAjEB5E+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRILIBILowQCAX4BfwJAIAVFIAZFcg0AAnwgAwRAIAMrAxAhAiADKwMIIQEgAysDAAwBC0QAAAAAAAAAACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyABRCS4kbJFQ1VApEQkuJGyRUNVQCABvUL///////////8AgyIHQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgB0KAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEbIQIgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyEBIABEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAAvUL///////////8Ag0KAgICAgICA+P8AVBsLIQAgBSsDeCAFKwNYIAKiIAUrAxggAKIgASAFKwM4oqCgoCIAvSIHQgF9Qv7///////8HViAHQgBTIAdC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAEIACjIgC9IgdCAX1C/v///////wdWIAdCAFMgB0L///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAYgADkDAEEBIQgLIAgLAgALHQEBfyADRSAERXIEf0EABSAAIAEgAiADIAQQDAsL5QQEBnsBfgF8AX8gAUQkuJGyRUNVQKREJLiRskVDVUAgAb1C////////////AIMiC0KAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAtCgICAgICAgPj/AFQbIgFEOZ1SokbfkT+iECIhDCAD/QADUCEFIAP9AAMQIQcgAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJCEBAkAgA/0AA2AgA/0AA0BEAAAAAAAAAAAgAkQAAAAAAAAAACACvUL///////////8Ag0KAgICAgICA+P8AVBsgDESTEHxF+BuDQaIiAqMgAkQAAAAAAAAAAGEb/RQiCP3yASAD/QADACAARAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gAL1C////////////AINCgICAgICAgPj/AFQb/RQiCf3yASABRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCj/RQiCiAD/QADIP3yAf3wAf3wAf3wASIG/SEAvUL///////////8Ag0L/////////9/8AViAG/SEBvUL///////////8Ag0KAgICAgICA+P8AWnINACAD/QADcCAFIAj98gEgByAJ/fIBIAogA/0AAzD98gH98AH98AH98AEiBf0hAL1C////////////AINCgICAgICAgPj/AFoNACAF/SEBIgC9Qv///////////wCDQv/////////3/wBWIABEje21oPfGsD5lcg0AIAQgBv0LAwAgBCAF/QsDEEEBIQ0LIA0LIwEBfyAFRSADRSAERXJyBH9BAAUgACABIAIgAyAEIAUQDgsL2wUDAn8BfgV7IwBBEGsiBiQAAkAgAr0iCEIBfUL+////////B1YgCEIAUyAIQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgBv0MAAAAAAAAAAAAAAAAAAAAAP0LBAAgACABIAIgAyAGEA9FDQAgBisDCCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8AgyIIQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgCEKAgICAgICA+P8AVBsiAUQ5nVKiRt+RP6IQIiECIAT9AANQIQkgBisDACEAIAT9AAMQIQogAUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJCEBIAT9AANgIAT9AANARAAAAAAAAAAARAAAAAAAAAAAIAJEkxB8Rfgbg0GiIgKjIAJEAAAAAAAAAABhG/0UIgv98gEgBP0AAwAgAEQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IAC9Qv///////////wCDQoCAgICAgID4/wBUG/0UIgz98gEgAUT4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo/0UIg0gBP0AAyD98gH98AH98AH98AH9DP////////9//////////3/9Tv0MAAAAAAAA8H8AAAAAAADwf/3bASAE/QADcCAJIAv98gEgCiAM/fIBIA0gBP0AAzD98gH98AH98AH98AEiCf0M/////////3//////////f/1O/QwAAAAAAADwfwAAAAAAAPB//dsB/Q0AAQIDCAkKCxAREhMYGRob/VMNACAJ/SEAIAn9IQEiAEQAAAAAAADwPyAARAAAAAAAAAAAYhujIgC9Qv///////////wCDQv/////////3/wBWDQAgBSAAmjkDAEEBIQcLIAZBEGokACAHC+QHAgx8AX8CQCADKwN4IgcgAysDWCIIRAAAAAAAAAAAoiADKwMYIABEAAAAAAAAAAAgAL1C////////////AINCgICAgICAgPj/AFQbIgWiIAFEAAAAAAAAAAAgAb1C////////////AINCgICAgICAgPj/AFQbIgYgAysDOKKgIgGgoCIAvUL///////////8Ag0L/////////9/8AVg0AIAcgCCABoKAiAb1C////////////AINC//////////f/AFYgAEQAAAAAAAAAAGFyIAFEAAAAAAAAAABhcg0AIAMrA2AiCSADKwNAIgpEAAAAAAAAAACiIAMrAwAgBaIgBiADKwMgoqAiC6CgIACjIge9Qv///////////wCDQv/////////3/wBWDQAgAysDaCIMIAMrA0giDUQAAAAAAAAAAKIgAysDCCAFoiAGIAMrAyiioCIOoKAgAKMiCL1C////////////AINCgICAgICAgPj/AFoNACADKwNwIg8gAysDUCIQRAAAAAAAAAAAoiADKwMQIAWiIAYgAysDMKKgIgagoCAAoyIFvUL///////////8Ag0KAgICAgICA+P8AWg0AIAkgCiALoKAgAaMiCb1C////////////AINCgICAgICAgPj/AFoNACAMIA0gDqCgIAGjIgq9Qv///////////wCDQoCAgICAgID4/wBaDQAgDyAQIAagoCABoyIBvUL///////////8Ag0KAgICAgICA+P8AWg0ARAAAAAAAAAAAIQAgASAFoSIBRAAAAAAAAAAAYgRARAAAAAAAAAAAIAWhIAGjIQALIAkgB6EgAKIgB6AiAb1C////////////AINC//////////f/AFYNACAKIAihIACiIAigIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgASACoyIBvUL///////////8Ag0L/////////9/8AVg0AIAAgAqMiAL1C////////////AINCgICAgICAgPj/AFoNAEQAAAAAAIBmQCAARAAAAAAAgHZAoqFEGC1EVPshCUCiRAAAAAAAgGZAoxAjEB5E+MFjGtylXECiRAAAAAAAgFbAoCIARCS4kbJFQ1VApEQkuJGyRUNVQCAAvUL///////////8Ag0KAgICAgICA+P8AWBsgAUQAAAAAAIB2QKJEAAAAAACAZsCgIgG9Qv///////////wCDQv/////////3/wBWDQBEJLiRskVDVcClIgC9Qv///////////wCDQoCAgICAgID4/wBaDQAgBCAAOQMIIAQgATkDAEEBIRELIBELNgEBfyADRSAFRXIgB0UgC0VycgR/QQAFIAAgASACIAMgBCAFIAYgByAIQQBHIAkgCiALEBELC5wHAwh8An8BfgJAIARBAEwgBkEATHINACACRAAAAAAAAAAAIAK9Qv///////////wCDQoCAgICAgID4/wBUGyEQIAFEOZ1SokbfkT+iECIiAkSN7bWg98awPqVEje21oPfGsD4gAr1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiERRAAAAAAAAPD/IQIDQCAEIAUgFUECdGooAgAiFEsEQCABIAMgFEEEdGoiFCsDCEQAAABAplRYQaNE+MFjGtylTECioCIMRCS4kbJFQ1VApEQkuJGyRUNVQCAMvUL///////////8AgyIWQoCAgICAgID4/wBYG0QkuJGyRUNVwKVEAAAAAAAAAAAgFkKAgICAgICA+P8AVBsiDEQ5nVKiRt+RP6IQIiENIAcrA1ghEiAUKwMAIQ4gBysDGCETIAxEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECQhD0EAIRQgBysDYCAHKwNARAAAAAAAAAAAIBAgDUSTEHxF+BuDQaIiDKMgDEQAAAAAAAAAAGEbIgyiIAcrAwAgACAOIBGjRPjBYxrcpUxAoqAiDUQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IA29Qv///////////wCDQoCAgICAgID4/wBUGyINoiAHKwMgIA9E+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMiDqKgoKC9Qv///////////wCDQv/////////3/wBWDQIgBysDaCAHKwNIIAyiIAcrAwggDaIgBysDKCAOoqCgoL1C////////////AINCgICAgICAgPj/AFoNAiAHKwNwIAcrA1AgDKIgBysDECANoiAHKwMwIA6ioKCgIg+9Qv///////////wCDQoCAgICAgID4/wBaDQIgBysDeCASIAyiIBMgDaIgBysDOCAOoqCgoCIMvUL///////////8Ag0L/////////9/8AViAMRI3ttaD3xrA+ZXINAiAIBHwgCiAMoSINIAkgDKIgD6AiDiANIA5kGwUgDwsgDKMiDL1C////////////AINC//////////f/AFYNAiAMmiIMIAIgAiAMYxshAgsgFUEBaiIVIAZHDQALQQAhFCACvUL///////////8Ag0L/////////9/8AVg0AIAsgAjkDAEEBIRQLIBQL/qcBBBx/JHwDfiR7IwBBoARrIgMkAAJAIABFIAFFcg0AIAH9DAAAAAAAAEJAAAAAAAAAEED9CwMQIAH9DAAAAAAAAAAAAAAAAABgYED9CwMAIAFCADcDICAB/QwAAAAAAAAAAAAAAAAAAAAA/QsDKCAAKwMAIh69IkNC////////////AIMiQkIBfUL/////////B1QgQ0IAUyICcSBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciBCQoCAgICAgIAIfUKAgICAgICA8P8AVCACcXINACAeRAAAAAAAAOA/oJwiHkQAAAAAAADwf2QgHkQAAAAAAADwf2NyRQ0AIB78AyICQQ9JIB4gArhicg0AIAArAwgiHr0iQ0L///////////8AgyJCQgF9Qv////////8HVCBDQgBTIgRxIEJCgICAgICAgPj/AFFyIEJCgICAgICAgPj/AFZyIEJCgICAgICAgAh9QoCAgICAgIDw/wBUIARxcg0AIB5EAAAAAAAA4D+gnCIeRAAAAAAAAPB/ZCAeRAAAAAAAAPB/Y3JFDQAgHvwDIgRBGEcgHiAEuGJyDQAgACsDECIevSJDQv///////////wCDIkJCAX1C/////////wdUIENCAFMiBHEgQkKAgICAgICA+P8AUXIgQkKAgICAgICA+P8AVnIgQkKAgICAgICACH1CgICAgICAgPD/AFQgBHFyDQAgHkQAAAAAAADgP6CcIh5EAAAAAAAA8H9kIB5EAAAAAAAA8H9jckUNACAeIB78AyIEuGIgAiAESXIgAiAEa0EwSXINACAAKwMYIh69IkNC////////////AIMiQkIBfUL/////////B1QgQ0IAUyIFcSBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciBCQoCAgICAgIAIfUKAgICAgICA8P8AVCAFcXINACAeRAAAAAAAAOA/oJwiHkQAAAAAAADwf2QgHkQAAAAAAADwf2NyRQ0AIB4gHvwDIga4Yg0AIAArAyAiHr0iQ0L///////////8AgyJCQgF9Qv////////8HVCBDQgBTIgVxIEJCgICAgICAgPj/AFFyIEJCgICAgICAgPj/AFZyIEJCgICAgICAgAh9QoCAgICAgIDw/wBUIAVxcg0AIB5EAAAAAAAA4D+gnCIeRAAAAAAAAPB/ZCAeRAAAAAAAAPB/Y3JFDQAgHiAe/AMiCLhiIAIgCElyIAIgCGsgBkEJbElyDQAgACsDKCIevSJDQv///////////wCDIkJCAX1C/////////wdUIENCAFMiBXEgQkKAgICAgICA+P8AUXIgQkKAgICAgICA+P8AVnIgQkKAgICAgICACH1CgICAgICAgPD/AFQgBXFyDQAgHkQAAAAAAADgP6CcIh5EAAAAAAAA8H9kIB5EAAAAAAAA8H9jckUNACAeIB78AyIMuGINACAAKwMwIh69IkNC////////////AIMiQkIBfUL/////////B1QgQ0IAUyIFcSBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciBCQoCAgICAgIAIfUKAgICAgICA8P8AVCAFcXINACAeRAAAAAAAAOA/oJwiHkQAAAAAAADwf2QgHkQAAAAAAADwf2NyRQ0AIB4gHvwDIgW4YiACIAVJciACIAVrIAxBBmxJcg0AIAArAzgiHr0iQ0L///////////8AgyJCQgF9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oAEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA6gBIANBADoAyAEgA0IANwPAASADQoCAgICAgID4PzcDuAEgA/0MAAAAAAAAAAAAAAAAAAAAAP0LA9ABIANCgICAgICAgPg/NwPgASADQQA6APgBIAP9DAAAAAAAAAAAAAAAAAAAAAD9CwPoASAD/QwAAAAAAAAAAAAAAAAAAAAA/QsDgAIgA0EAOgCQAiADIAA2AkwgAyAGIABB2AFsaiICNgJIIAMCf0EAIAIrAwgiHr0iQ0L///////////8AgyJCQgF9Qv////////8HVCBDQgBTIgVxIEJCgICAgICAgPj/AFFyIEJCgICAgICAgPj/AFZyIEJCgICAgICAgAh9QoCAgICAgIDw/wBUIAVxcg0AGkEAIB5EAAAAAAAA4D+gnCIeRAAAAAAAAPB/ZCAeRAAAAAAAAPB/Y3JFDQAaQQAgHiAe/AMiBbhiDQAaIAggBUHIAGxqQQAgBSANSRsLNgJQIAL9AAOgASFFIAMgAisDsAE5A2ggAyBF/QsDWEEAIQUCQCAERSAgRAAAAAAAAAAAZXINACADKwNYIR4gBCsDACEjIAMrA2AiH0QkuJGyRUNVQKREJLiRskVDVUAgH71C////////////AIMiQkKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gQkKAgICAgICA+P8AVBsQKRAkISEgBCsDYCAEKwNAIAMrA2giH0QAAAAAAAAAACAfvUL///////////8Ag0KAgICAgICA+P8AVBsiH6IgIyAgIB5EAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAevUL///////////8Ag0KAgICAgICA+P8AVBuiIh6iIAQrAyAgICAhRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjoiIjoqCgoCIhvUL///////////8Ag0L/////////9/8AVg0AIAQrA2ggBCsDSCAfoiAEKwMIIB6iICMgBCsDKKKgoKAiIr1C////////////AINC//////////f/AFYNACAEKwN4IAQrA1ggH6IgBCsDGCAeoiAjIAQrAziioKCgIh69IkJCAX1C/v///////wdWIEJCAFMgQkL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0AIAMgIiAeozkDmAEgAyAhIB6jOQOQAUEBIQULIAMgBToAoAEgAysDaCEeIAMrA2AhHyADIAMrA1giI0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICO9Qv///////////wCDQoCAgICAgID4/wBUGzkDcCADRAAAAAAAAAAAIB5EAAAAAAAAAAAgHr1C////////////AINCgICAgICAgPj/AFQbIB9EJLiRskVDVUCkRCS4kbJFQ1VAIB+9Qv///////////wCDIkJCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBCQoCAgICAgID4/wBUGyIeRDmdUqJG35E/ohAiRJMQfEX4G4NBoiIfoyAfRAAAAAAAAAAAYRs5A4ABIAMgHkQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAozkDeCADQQE6AIgBAkAgAygCSCICKwMAIh69Qv///////////wCDQv/////////3/wBYBEAgHp0iHiAe/AYiQrlhDQELQgAhQgsgAyBCNwOoAQJAIAIrA1giH71C////////////AINCgICAgICAgPj/AFQNAEQAAAAAAAAAACEfIAIrA2AgAisDaKAiHr1C////////////AINC//////////f/AFYNAEQAAAAAAAAAAAJ8IB69IkRCNIinQf8PcSICQf8PRgRAIB5EAAAAAACAdkCiIh4gHqMMAQsgREIBhiJCQoCAgICAgMD2gH9YBEAgHkQAAAAAAAAAAKIgHiBCQoCAgICAgMD2gH9RGwwBCwJ+IAJFBEBBACECIERCDIYiQkIAWQRAA0AgAkEBayECIEJCAYYiQkIAWQ0ACwsgREEBIAJrrYYMAQsgREL/////////B4NCgICAgICAgAiECyFCIAJBhwhKBEADQAJAIEJCgICAgICAoAt9IkNCAFMNACBDIkJCAFINACAeRAAAAAAAAAAAogwDCyBCQgGGIUIgAkEBayICQYcISg0AC0GHCCECCwJAIEJCgICAgICAoAt9IkNCAFMNACBDIkJCAFINACAeRAAAAAAAAAAAogwBCyBCQv////////8HWARAA0AgAkEBayECIEJCgICAgICAgARUIEJCAYYhQg0ACwsgREKAgICAgICAgIB/gyBCQoCAgICAgIAIfSACrUI0hoQgQkEBIAJrrYggAkEAShuEvwsiHkQAAAAAAIB2QKAgHiAeRAAAAAAAAAAAYxsiHiAeRAAAAAAAAAAAYRshHwsgAyAfOQPQASADIB9EOZ1Sokbfkb+iIh4QIjkD4AEgAyAeECc5A9gBIAkgAEHQAWxqIANByABqQckB/AoAACAAQQFqIgAgEkcNAAsLIANBuAJqIQkgA0HYAmohBiMAQSBrIgAkACAMKAIAIgIgDCgCBCIFRwRAA0ACQCACKAIARQ0AIAIoAggiCEUNACACLQBYQQFHDQAgBisDCCEfIAkoAhAhBCAJKwMIISACQCACLQCAAUEBRgRAIAIrA3giHr0iQkIBfUL/////////B1QgQkL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQgQkIAWXFyDQELIAIrAxgiHkQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIgH0QAAAAAAACAQKKjIiO9IkJCAX1C/v///////wdWIEJCAFMgQkL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BRAAAAAAAAPA/IR8CQCAERSAgRAAAAAAAAAAAZXINAAJ8IAItAEBBAUYEQCACKwM4IR4gAisDKCEkIAIrAzAMAQsgHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AIMiQkKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIEJCgICAgICAgPj/AFQbIiFEOZ1SokbfkT+iECIhHkQAAAAAAAAAACACKwMgIiJEAAAAAAAAAAAgIr1C////////////AINCgICAgICAgPj/AFQbIB5EkxB8Rfgbg0GiIh6jIB5EAAAAAAAAAABhGyEeIAIrAxAiIkQAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/ICK9Qv///////////wCDQoCAgICAgID4/wBUGyEkICFEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMLISEgBCsDeCAEKwNYIB6iIAQrAxggJKIgISAEKwM4oqCgoCIevSJCQgF9Qv7///////8HViBCQgBTIEJC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENACAgIB6jIh5EAAAAAAAA8D8gHiAevSJCQgBTG0QAAAAAAADwPyBCQv///////////wCDQoCAgICAgIAIfUKAgICAgICA8P8AVBsgQkIBfUL/////////B1QbIR8LRAAAAAAAAPA/ICOjIB+iIh69IkJCAX1C/v///////wdWIEJCAFMgQkL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAJBAToAgAEgAiAeOQN4IAIgHzkDcCACICM5A2gLIABBEGogAkEBIAkgBiAIIB4gDCAHEBUgAiAA/QADEP0LA6ABIAJBAToAsAEgACACQQAgCSAGIAIoAgggHiAMIAcQFSACIAD9AAMA/QsDuAEgAkEBOgDIAQsgAkHQAWoiAiAFRw0ACwsgAEEgaiQAIA9BBHFBAnZxIRBBACECQQAhAEEAIQ0jAEHQAGsiByQAIANBPGoiFyIPQQA2AgggD0IANwIAIAwoAgQiBCAMKAIAIgVrQdABbSERAkACQAJAIAQgBUcEQCARQYCAgBBPDQEgEUEHdCIAEC0iAiAAaiENIAIhAANAAkAgDCgCACAUQdABbGoiBCgCACIFRQ0AIAQoAggiCkUNACAKLQAYQQFHDQAgBC0AWEEBRw0AIAYrAwghHiAJKAIQIQggCSsDCCEfAkAgBC0AgAFBAUYEQCAEKwN4IiG9IkJCAX1C/////////wdUIEJC////////////AINCgICAgICAgAh9QoCAgICAgIDw/wBUIEJCAFlxcg0BCyAEKwMYIiBEOZ1SokbfkT+iECJEkxB8Rfgbg0GiIB5EAAAAAAAAgECioyIjvSJCQgF9Qv7///////8HViBCQgBTIEJC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENAUQAAAAAAADwPyEeAkAgCEUgH0QAAAAAAAAAAGVyDQACfCAELQBAQQFGBEAgBCsDOCEhIAQrAyghJCAEKwMwDAELICBEJLiRskVDVUCkRCS4kbJFQ1VAICC9Qv///////////wCDIkJCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQAAAAAAAAAACBCQoCAgICAgID4/wBUGyIgRDmdUqJG35E/ohAiISFEAAAAAAAAAAAgBCsDICIiRAAAAAAAAAAAICK9Qv///////////wCDQoCAgICAgID4/wBUGyAhRJMQfEX4G4NBoiIhoyAhRAAAAAAAAAAAYRshISAEKwMQIiJEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAivUL///////////8Ag0KAgICAgICA+P8AVBshJCAgRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjCyEgIAgrA3ggCCsDWCAhoiAIKwMYICSiICAgCCsDOKKgoKAiIL0iQkIBfUL+////////B1YgQkIAUyBCQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQAgHyAgoyIeRAAAAAAAAPA/IB4gHr0iQkIAUxtEAAAAAAAA8D8gQkL///////////8Ag0KAgICAgICACH1CgICAgICAgPD/AFQbIEJCAX1C/////////wdUGyEeC0QAAAAAAADwPyAjoyAeoiIhvSJCQgF9Qv7///////8HViBCQgBTIEJC////////////AINCgICAgICAgAh9Qv/////////v/wBWcnENASAEQQE6AIABIAQgITkDeCAEIB45A3AgBCAjOQNoCyAEQaABQcgAIAQtALABIgsbaisDACEeIARBqAFB0AAgCxtqKwMAIR8gB0IANwNIAn8gBSsDIBAlRQRAIAhFDQJEAAAAAAAAAAAhIkQAAAAAAADwPyEeIAUrAygiH0QAAAAAAADwPyAfRAAAAAAAAAAAYhshIyAFKwNIISYgBUFAayAGKwNYISQCQCAKKwMIIiBEAAAAAAAAAABlBEBEAAAAAAAAAAAhHwwBCyAKKwMQIh9EAAAAAAAAAABlBEBEAAAAAAAAAAAhHwwBCyAGKwMoIiVEAAAAAAAAAABlBEBEAAAAAAAAAAAhHwwBCyAfICMgJaIgJKIiIqIiH0QAAAAAAAAAACAfvUL///////////8Ag0KAgICAgICA+P8AVBshHyAg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RAAAAAAAAAAAICFEAAAAAAAAAAAgIb1C////////////AINCgICAgICAgPj/AFQbIB5EJLiRskVDVUCkRCS4kbJFQ1VAIB69Qv///////////wCDIkJCgICAgICAgPj/AFgbRCS4kbJFQ1XApSIhRAAAAAAAAAAAIEJCgICAgICAgPj/AFQiEBsiMkQ5nVKiRt+RP6IQIkSTEHxF+BuDQaIiM6MgM0QAAAAAAAAAAGEbOQMQIAIgH0QAAAAAAADwPyAeRDmdUqJG35E/ohAiIh9Eje21oPfGsD6lRI3ttaD3xrA+IB+9Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaKjRPjBYxrcpUxAoqAiH0QAAAAAAIBmQKBEAAAAAACAdkCjRAAAAAAAAOA/IB+9Qv///////////wCDQoCAgICAgID4/wBUGyAxoTkDGCACIDJEJLiRskVDVUCkRCS4kbJFQ1XApUQ5nVKiRt+RP6JEAAAAAAAA4D+iRBgtRFT7Iek/oBApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKM5AwggIUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IBAbECkQJCEfIAIgHkQecBggy9biPqAiHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AINCgICAgICAgPj/AFgbRCS4kbJFQ1XApUQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gRBgtRFT7Iek/IB69Qv///////////wCDQoCAgICAgID4/wBUGxApECRE+MFjGtylTMCiRAAAAAAAgGZAoEQAAAAAAIB2QKMgH0T4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAo6E5AyAgCf0AAzAhRSACICY5A2AgAiAlOQNYIAIgRf0LA0ggBysDiAEhHiACICQ5A3AgAiAeOQNoIAIgAP0AA5AG/QsDeCACIABBqAhqIgcpAwA3A4gBIAIgB/0AAwj9CwOQASAA/QADqAYhRSAAKQOgBiFCIAIgIjkDuAEgAiBCNwOgASACIEX9CwOoASAHKwMIISEgBysDACEiAkAgKEQAAAAAAAAAAGUgKUQAAAAAAAAAAGVyBEAgCSsDMCIeISUgCSsDOCIgISYgHiIjISggICIfISkMAQsgK/0U/QwAAAAAAADwvwAAAAAAAPA//fIBICsgIKL9FP3xASJFICX9FCJG/fIBIkcgKv0U/e0BICogI6IiHv0U/fEBIkkgJv0UIkv98gH98AEgCf0AAzAiTCBF/Q0ICQoLDA0ODwgJCgsMDQ4PIk398AEiTv0hASEpIEUgS/3yASJFIEkgRv3yAf3xASBMIEX9DQABAgMEBQYHAAECAwQFBgciRv3wASJJ/SEBISggTv0hACEfIEn9IQAhIyBHICogHqEiHiAmov0U/fABIE398AEiR/0hASEmIEUgHiAlov0U/fEBIEb98AEiRf0hASElIEf9IQAhICBF/SEAIR4LIAJBADYCoAQgAiApOQOoAiACICg5A6ACIAIgHzkDiAIgAiAjOQOAAiACICY5A+gBIAIgJTkD4AEgAiAgOQPIASACIB45A8ABIAIgISApRAAAAECmVFhBo0T4wWMa3KVMQKKgOQO4AiACICEgH0QAAABAplRYQaNE+MFjGtylTECioDkDmAIgAiAhICZEAAAAQKZUWEGjRPjBYxrcpUxAoqA5A/gBIAIgISAgRAAAAECmVFhBo0T4wWMa3KVMQKKgOQPYASACICIgKESN7bWg98awPiAhRDmdUqJG35E/ohAiIh8gH0SN7bWg98awPmMbRAAAAECmVFhBoiIfo0T4wWMa3KVMQKKgOQOwAiACICIgIyAfo0T4wWMa3KVMQKKgOQOQAiACICIgJSAfo0T4wWMa3KVMQKKgOQPwASACICIgHiAfo0T4wWMa3KVMQKKgOQPQAUEAIQcgAEEwakEAQYAB/AsAIABBADYCLCAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDGCAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDCCAnvUL///////////8AgyJCUCBCQoCAgICAgID4/wBRciBCQoCAgICAgID4/wBWciEQRAAAAAAAAPA/RAAAAAAAAAAAIBVBAXEiCRshJSAvIC4gBiAAQQhqEAwhGCAAKwO4CCIeRAAAAAAAAAAAIB69Qv///////////wCDQoCAgICAgID4/wBUGyEmIAArA7AIIihEOZ1SokbfkT+iECIiHkSN7bWg98awPqVEje21oPfGsD4gHr1C////////////AINCgICAgICAgPj/AFgbRAAAAECmVFhBoiEpIAYrAwAhKiAGKwN4ISsgBisDWCEuIAYrAzghLyAGKwMYITAgBisDcCExIAYrA1AhMiAGKwMwITMgBisDECE4IAYrA2ghOSAGKwNIITogBisDKCE7IAYrAwghPCAGKwNgIT0gBisDQCE+IAYrAyAhPyAEKwOgASFAIABBgAlqIQIgACsDqAghQQNAID0gPkQAAAAAAAAAACAmICggDiAHKAKoCSIGQQR0IgRqIhYrAwhEAAAAQKZUWEGjRPjBYxrcpUxAoqAiHkQkuJGyRUNVQKREJLiRskVDVUAgHr1C////////////AIMiQkKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIEJCgICAgICAgPj/AFQbIh9EOZ1SokbfkT+iECJEkxB8Rfgbg0GiIh6jIB5EAAAAAAAAAABhGyIeoiAqIEEgFisDACApo0T4wWMa3KVMQKKgIiBEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAgvUL///////////8Ag0KAgICAgICA+P8AVBsiIKIgPyAfRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6AQKRAkRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjIiOioKCgIiG9Qv///////////wCDQv/////////3/wBWDQMgOSA6IB6iIDwgIKIgOyAjoqCgoCIivUL///////////8Ag0KAgICAgICA+P8AWg0DIDEgMiAeoiA4ICCiIDMgI6KgoKAiH71C////////////AINCgICAgICAgPj/AFoNAyArIC4gHqIgMCAgoiAvICOioKCgIiC9Qv///////////wCDQv/////////3/wBWICBEje21oPfGsD5lcg0DIB8hHiAkRAAAAAAAAAAAYgRAIEAgIKEiIyAkICCiIB6gIh4gHiAjYxshHgsgAEEsaiAGaiIWLQAARQRAIABBMGogBkEFdGoiBiAgOQMYIAYgHjkDECAGICI5AwggBiAhOQMAIBZBAToAACAQICwgIUQAAAAAAADwPyAgoyIeokQAAAAAAADwP6BEAAAAAAAA4D+ioiIjvUL///////////8Ag0L/////////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AGsgBjkDACAAQfwAayAUNgIAIABB8ABrIA5B8AD8CgAAIAsgDU0EQCAMIAgQHCEKIAAgARAcBEAgCCEBIAwhACAKRQ0FDAMLIAoNAQsLIAwgCCACIBAQFkEAIQMMAQsLCyAOQfABaiQAC8sMAwN/C3wBfiMAQfAAayICJAAgASgCeCEDIAICf0EAIAEtAHxBAUcNABpBACADRQ0AGkEAIAErA4ABRAAAAAAAAAAAZEUNABpBACABKwOIAUQAAAAAAAAAAGRFDQAaQQAgASsDkAEiB0QAAAAAAAAAAGENABogB71C////////////AINCgICAgICAgPj/AFQLOgBvIAIgAS0AfSADQQBHcToAbiACIAE2AmQgAiACQe4AajYCaCACIAJB7wBqNgJgIAErAzghCyABKwMwIQ1EAAAAAAAA8D8hCQJAAkAgASsDGCIIRAAAAAAAAAAAZQ0AIAErAyAiB0QAAAAAAAAAAGUNACABKwMoIgVEAAAAAAAAAABlDQAgByAFIA2iIAuiIgWiIgdEAAAAAAAAAAAgB71C////////////AINCgICAgICAgPj/AFQbIQcgCCAFoiIIRAAAAAAAAAAAIAi9Qv///////////wCDQoCAgICAgID4/wBUGyEIIAErA2AiBb0iEEIBfUL+////////B1YgEEIAUyAQQv///////////wCDQoCAgICAgIAIfUL/////////7/8AVnJxDQEgASsDcCIKRAAAAAAAAAAAZCIDIAErA2giBkQAAAAAAAAAAGRyRQ0BIAcgCCAHIAhkGyIMRAAAAAAAAAAAZEUNASAFIAyiIgW9IhBCAX1C/v///////wdWIBBCAFMgEEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAogBaMgBiAFo0QAAAAAAADwPyAFIAZjG0QAAAAAAADwPyAGRAAAAAAAAAAAZBsiCSAFIAmiIApkGyAJIAMbIglEAAAAAAAA8D9hBEBEAAAAAAAA8D8hCQwCCyAHIAmiIQcgCCAJoiEIDAELRAAAAAAAAAAAIQdEAAAAAAAAAAAhCAsCfEQAAAAAAAAAACAHRAAAAAAAAOA/oiIFRAAAAAAAAAAAZQ0AGkQAAAAAAAAAACEGRAAAAAAAAAAAIAhEAAAAAAAA4D+iIg9EAAAAAAAAAABlDQAaIAErA1AhCiABKwNIIQwgBSABKAJYIgMEfCADKwMAIQYgAysDCAVEAAAAAAAAAAALoiEFIA8gBqIiBkQAAAAAAAAAAGEEQEQAAAAAAAAAACAFRAAAAAAAAAAAYQ0BGgsgBpogDKIgBSAKoqEhDiAMIAWiIAYgCqKhCyEKAnwgASgCXCIDRQRARAAAAAAAAAAAIQVEAAAAAAAAAAAMAQtEAAAAAAAAAAAhBUQAAAAAAAAAACAJIAsgDSADKwMAoqKiIgZEAAAAAAAAAABhDQAaIAYgAysDCEQ5nVKiRt+RP6IiCxAioiEFIAYgCxAnogshBiABKwMAIQ0gASsDCCELIAIgASsDECIMOQNYIAIgCyAOIAWgIg9EAAAAQKZUWEGjRPjBYxrcpUxAoqA5A1AgAiANIAogBqAiCiALRDmdUqJG35E/ohAiIg5Eje21oPfGsD6lRI3ttaD3xrA+IA69Qv///////////wCDQoCAgICAgID4/wBYG0QAAABAplRYQaIiDqNE+MFjGtylTECioDkDSCAC/QwAAAAAAAAAAAAAAAAAAAAA/QsDKEEAIQMgAkHgAGogAkHIAGogAkEoahAYBEAgAiACKQApNwM4IAIgAikAMDcAPyACLQAoIQRBASEDCyAAQQA6AKABIABBADoAiAEgAEEAOgCAASAAQQA6AHAgAEEAOgBoIABBADoAWCAAIAQ6AAAgACACKQM4NwABIAAgAikAPzcACCAAIA85AzggACAKOQMwIAAgCTkDKCAAIAc5AyAgACAIOQMYIAAgAzoAECAAIAL9AANQ/QsDSCAAIAIpA0g3A0AgAS0AmAFBAUYEQCACIAw5AyAgAiAFRAAAAECmVFhBo0T4wWMa3KVMQKIgC6A5AxggAiANIAYgDqNE+MFjGtylTECioDkDECAC/QwAAAAAAAAAAAAAAAAAAAAA/QsDACACQeAAaiACQRBqIAIQGARAIAAgAv0AAwD9CwNYIABBAToAaAsgAEEBOgCAASAAIAU5A3ggACAGOQNwIAAgAikDIDcDmAEgACAC/QADEP0LA4gBIABBAToAoAELIAJB8ABqJAALuQsDB3wCfwF+AkAgAgJ8AkAgACgCAC0AAEEBRw0AIAAoAgQiCygCeCgCECIKRQ0AIAErAwgiA0QkuJGyRUNVQKREJLiRskVDVUAgA71C////////////AIMiDEKAgICAgICA+P8AWBtEJLiRskVDVcClRAAAAAAAAAAAIAxCgICAgICAgPj/AFQbIgREOZ1SokbfkT+iECIhBiABKwMQIQMgCisDWCEHIAErAwAhBSAKKwMYIQggBEQkuJGyRUNVQKREJLiRskVDVcClRDmdUqJG35E/okQAAAAAAADgP6JEGC1EVPsh6T+gECkQJCEEIAorA2AgCisDQEQAAAAAAAAAACADRAAAAAAAAAAAIAO9Qv///////////wCDQoCAgICAgID4/wBUGyAGRJMQfEX4G4NBoiIDoyADRAAAAAAAAAAAYRsiA6IgCisDACAFRAAAAAAAgGZAoEQAAAAAAIB2QKNEAAAAAAAA4D8gBb1C////////////AINCgICAgICAgPj/AFQbIgWiIAorAyAgBET4wWMa3KVMwKJEAAAAAACAZkCgRAAAAAAAgHZAoyIEoqCgoCIGvUL///////////8Ag0L/////////9/8AVg0AIAorA2ggCisDSCADoiAKKwMIIAWiIAorAyggBKKgoKAiCb1C////////////AINCgICAgICAgPj/AFoNACAKKwNwIAorA1AgA6IgCisDECAFoiAKKwMwIASioKCgvUL///////////8Ag0KAgICAgICA+P8AWg0AIAorA3ggByADoiAIIAWiIAQgCisDOKKgoKAiA71C////////////AINC//////////f/AFYgA0SN7bWg98awPmVyDQAgBkQAAAAAAADwPyADoyIDokQAAAAAAADwP6BEAAAAAAAA4D+iIAsrA4ABoiIFvUL///////////8Ag0L/////////9/8AVg0ARAAAAAAAAPA/IAkgA6KhRAAAAAAAAOA/oiALKwOIAaIiBL1C////////////AINCgICAgICAgPj/AFoNACALKwOQASIDvUL///////////8AgyIMQgF9Qv7///////8HViAMQoCAgICAgIAIfUL/////////7/8AVnENACACIAUgA6M5AwAgBCADowwBC0EAIQogACgCCC0AAEEBRw0BIAAoAgQoAngiCygCFCIARQ0BIAsrAwAiA0QAAAAAAAAAAGUNASABKwMAIQUgACsDACEGIAErAwgiBEQkuJGyRUNVQKREJLiRskVDVUAgBL1C////////////AIMiDEKAgICAgICA+P8AWBtEJLiRskVDVcClRCS4kbJFQ1VApEQkuJGyRUNVwKVEOZ1SokbfkT+iRAAAAAAAAOA/okQYLURU+yHpP6BEGC1EVPsh6T8gDEKAgICAgICA+P8AVBsQKRAkIQcgACsDYCAAKwNAIAErAxAiBEQAAAAAAAAAACAEvUL///////////8Ag0KAgICAgICA+P8AVBsiBKIgBiADIAVEAAAAAACAZkCgRAAAAAAAgHZAo0QAAAAAAADgPyAFvUL///////////8Ag0KAgICAgICA+P8AVBuiIgWiIAArAyAgAyAHRPjBYxrcpUzAokQAAAAAAIBmQKBEAAAAAACAdkCjoiIDoqCgoCIGvUL///////////8Ag0L/////////9/8AVg0BIAArA2ggACsDSCAEoiAAKwMIIAWiIAMgACsDKKKgoKAiB71C////////////AINC//////////f/AFYNASAAKwN4IAArA1ggBKIgACsDGCAFoiADIAArAziioKCgIgO9IgxCAX1C/v///////wdWIAxCAFMgDEL///////////8Ag0KAgICAgICACH1C/////////+//AFZycQ0BIAIgBiADozkDACAHIAOjCzkDCEEBIQoLIAoLiwYDAnwDfwJ+IwBBgAFrIgckACAAIAEgAhAbAkACQCADKwMIIgQgAisDCCIFYgRAIAQgBWMNAQwCCyACKAIAIQZEAAAAAAAAAAAhBUQAAAAAAAAAACEEIAMoAgAiCARAIAgoAgArA3AhBAsgBgRAIAYoAgArA3AhBQsgBCAFYgRAIAQgBWMNAQwCCyAIBEAgCCkDYCEJCyAGBEAgBikDYCEKCyAJIApSBEAgCSAKUw0BDAILRAAAAAAAAAAAIQQgCARAIAgoAgArA5gBIQQLIAYEfCAGKAIAKwOYAQVEAAAAAAAAAAALIARkRQ0BCyAHIAJBgAH8CgAAIAIgA0GAAfwKAAAgAyAHQYAB/AoAAAJAIAIrAwgiBCABKwMIIgViBEAgBCAFYw0BDAILIAEoAgAhA0QAAAAAAAAAACEFRAAAAAAAAAAAIQQgAigCACIGBEAgBigCACsDcCEECyADBEAgAygCACsDcCEFCyAEIAViBEAgBCAFYw0BDAILQgAhCkIAIQkgBgRAIAYpA2AhCQsgAwRAIAMpA2AhCgsg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IAAgAUEAEDINABpBACABRQ0AGiMAQRBrIgYkACAGIAEoAgAiB0EIaygCACIENgIMIAYgASAEajYCBCAGIAdBBGsoAgA2AgggBigCCCIHQfDTAEEAEDIhBCAGKAIEIQgCQCAEBEAgBigCDCEBIwBBQGoiAyQAIANBQGskAEEAIAggARshAwwBCyMAQUBqIgQkACABIAhOBEAgBEIANwIUIARBADYCECAEQfDTADYCDCAEIAc2AgQgBEIANwIcIARCADcCJCAEQgA3AiwgBEEANgI8IARCgYCAgICAgIABNwI0IAQgATYCCCAHIARBBGogCCAIQQFBACAHKAIAKAIUEQYAIAFBACAEKAIcGyEDCyAEQUBrJAAgAw0AIwBBQGoiAyQAIANBADYCECADQcDTADYCDCADIAE2AgggA0Hw0wA2AgRBACEBIANBFGpBAEEn/AsAIANBADYCPCADQQE6ADsgByADQQRqIAhBAUEAIAcoAgAoAhgRBQACQAJAAkAgAygCKA4CAAECCyADKAIYQQAgAygCJEEBRhtBACADKAIgQQFGG0EAIAMoAixBAUYbIQEMAQsgAygCHEEBRwRAIAMoAiwNASADKAIgQQFHDQEgAygCJEEBRw0BCyADKAIUIQELIANBQGskACABIQMLIAZBEGokAEEAIANFDQAaIAIoAgAiAUUNASAFQRhqQQBBOPwLACAFQQE6AEsgBUF/NgIgIAUgADYCHCAFIAM2AhQgBUEBNgJEIAMgBUEUaiABQQEgAygCACgCHBECACAFKAIsIgBBAUYEQCACIAUoAiQ2AgALIABBAUYLIAVB0ABqJAAPCyAFQYQJNgIIIAVB5wM2AgQgBUGRCDYCAAALdgEBfyAAKAIkIgNFBEAgACACNgIYIAAgATYCECAAQQE2AiQgACAAKAI4NgIUDwsCQAJAIAAoAhQgACgCOEcNACAAKAIQIAFHDQAgACgCGEECRw0BIAAgAjYCGA8LIABBAToANiAAQQI2AhggACADQQFqNgIkCwsYACAAIAEoAghBABAyBEAgASACIAMQNAsLMQAgACABKAIIQQAQMgRAIAEgAiADEDQPCyAAKAIIIgAgASACIAMgACgCACgCHBECAAuaAQAgAEEBOgA1AkAgAiAAKAIERw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACAD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";
|
|
530
|
+
const pthreadPoolSize = 4;
|
|
531
|
+
const wasmConfig = {
|
|
532
|
+
pthreadPoolSize
|
|
533
|
+
};
|
|
534
|
+
const BUFFER_POOL_ENTRY_TTL_MS = 5e3;
|
|
535
|
+
const BUFFER_POOL_SWEEP_INTERVAL_MS = 3e3;
|
|
536
|
+
const BUFFER_POOL_MAX_REUSE_RATIO = 2;
|
|
537
|
+
const CONFIGURED_PTHREAD_POOL_SIZE = Math.max(0, Math.trunc(wasmConfig.pthreadPoolSize));
|
|
538
|
+
const WASM_ASSET_FILES = {
|
|
539
|
+
"simd-mt": {
|
|
540
|
+
wasm: "offloads-simd-mt.wasm",
|
|
541
|
+
js: "offloads-simd-mt.js",
|
|
542
|
+
worker: "offloads-simd-mt.worker.js"
|
|
543
|
+
},
|
|
544
|
+
simd: {
|
|
545
|
+
wasm: "offloads-simd.wasm"
|
|
546
|
+
},
|
|
547
|
+
nosimd: {
|
|
548
|
+
wasm: "offloads-nosimd.wasm"
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
const VARIANT_FALLBACKS = {
|
|
552
|
+
"simd-mt": ["simd-mt", "simd", "nosimd"],
|
|
553
|
+
simd: ["simd", "nosimd"],
|
|
554
|
+
nosimd: ["nosimd"]
|
|
555
|
+
};
|
|
556
|
+
let threadedVariantWarningPrinted = false;
|
|
557
|
+
const ensureTrailingSlash = (value) => value.endsWith("/") ? value : `${value}/`;
|
|
558
|
+
const resolveRuntimeBase = () => {
|
|
559
|
+
const runtimeLocation = globalThis.location;
|
|
560
|
+
if (runtimeLocation == null ? void 0 : runtimeLocation.href) {
|
|
561
|
+
return runtimeLocation.href;
|
|
562
|
+
}
|
|
563
|
+
return import.meta.url;
|
|
564
|
+
};
|
|
565
|
+
const buildAssetUrlFromFile = (fileName) => {
|
|
566
|
+
if (wasmBaseUrlOverride !== void 0) {
|
|
567
|
+
const normalizedBase = ensureTrailingSlash(wasmBaseUrlOverride);
|
|
568
|
+
const baseUrl = resolveBaseUrl(normalizedBase);
|
|
569
|
+
return new URL(fileName, baseUrl);
|
|
570
|
+
}
|
|
571
|
+
return new URL((/* @__PURE__ */ Object.assign({ "./wasm/config.json": __vite_glob_0_0, "./wasm/offloads-nosimd.wasm": __vite_glob_0_1, "./wasm/offloads-simd-mt.js": __vite_glob_0_2, "./wasm/offloads-simd-mt.wasm": __vite_glob_0_3, "./wasm/offloads-simd.wasm": __vite_glob_0_4 }))[`./wasm/${fileName}`], import.meta.url);
|
|
572
|
+
};
|
|
573
|
+
const resolveVariantAssetUrl = (variant, kind) => {
|
|
574
|
+
const files = WASM_ASSET_FILES[variant];
|
|
575
|
+
const fileName = files == null ? void 0 : files[kind];
|
|
576
|
+
if (!fileName) {
|
|
577
|
+
throw new Error(`Asset ${kind} is not defined for variant "${variant}".`);
|
|
578
|
+
}
|
|
579
|
+
return buildAssetUrlFromFile(fileName);
|
|
580
|
+
};
|
|
581
|
+
const resolveBaseUrl = (base) => {
|
|
582
|
+
try {
|
|
583
|
+
return new URL(base);
|
|
584
|
+
} catch (e) {
|
|
585
|
+
return new URL(base, resolveRuntimeBase());
|
|
586
|
+
}
|
|
587
|
+
};
|
|
588
|
+
let wasmBaseUrlOverride;
|
|
589
|
+
const isNodeEnvironment = (() => {
|
|
590
|
+
var _a;
|
|
591
|
+
const globalProcess = globalThis.process;
|
|
592
|
+
return !!((_a = globalProcess == null ? void 0 : globalProcess.versions) == null ? void 0 : _a.node);
|
|
593
|
+
})();
|
|
594
|
+
const canUseThreadedWasm = () => {
|
|
595
|
+
if (isNodeEnvironment) {
|
|
596
|
+
return true;
|
|
597
|
+
}
|
|
598
|
+
if (typeof SharedArrayBuffer === "undefined") {
|
|
599
|
+
return false;
|
|
600
|
+
}
|
|
601
|
+
const globalFlags = globalThis;
|
|
602
|
+
if ("crossOriginIsolated" in globalFlags) {
|
|
603
|
+
return !!globalFlags.crossOriginIsolated;
|
|
604
|
+
}
|
|
605
|
+
return false;
|
|
606
|
+
};
|
|
607
|
+
const importNodeModule = async (specifier) => await import(
|
|
608
|
+
/* @vite-ignore */
|
|
609
|
+
specifier
|
|
610
|
+
);
|
|
611
|
+
const createImportNamespace = (additional) => {
|
|
612
|
+
const functionStub = () => 0;
|
|
613
|
+
const target = {};
|
|
614
|
+
return new Proxy(target, {
|
|
615
|
+
get(currentTarget, prop) {
|
|
616
|
+
if (prop in currentTarget) {
|
|
617
|
+
return currentTarget[prop];
|
|
618
|
+
}
|
|
619
|
+
return functionStub;
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
};
|
|
623
|
+
const loadWasmBinary = async (variant) => {
|
|
624
|
+
const wasmUrl = resolveVariantAssetUrl(variant, "wasm");
|
|
625
|
+
if (typeof fetch === "function") {
|
|
626
|
+
try {
|
|
627
|
+
const response2 = await fetch(wasmUrl);
|
|
628
|
+
if (response2.ok) {
|
|
629
|
+
return await response2.arrayBuffer();
|
|
630
|
+
}
|
|
631
|
+
} catch (e) {
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
if (isNodeEnvironment && wasmUrl.protocol === "file:") {
|
|
635
|
+
const [{ readFile }, { fileURLToPath }] = await Promise.all([
|
|
636
|
+
importNodeModule("node:fs/promises"),
|
|
637
|
+
importNodeModule("node:url")
|
|
638
|
+
]);
|
|
639
|
+
const filePath = fileURLToPath(wasmUrl);
|
|
640
|
+
const fileBuffer = await readFile(filePath);
|
|
641
|
+
const arrayBuffer = fileBuffer.buffer;
|
|
642
|
+
return arrayBuffer.slice(
|
|
643
|
+
fileBuffer.byteOffset,
|
|
644
|
+
fileBuffer.byteOffset + fileBuffer.byteLength
|
|
645
|
+
);
|
|
646
|
+
}
|
|
647
|
+
const response = await fetch(wasmUrl);
|
|
648
|
+
if (!response.ok) {
|
|
649
|
+
throw new Error(`Failed to load ${variant} offloads WASM: ${wasmUrl.href}`);
|
|
650
|
+
}
|
|
651
|
+
return await response.arrayBuffer();
|
|
652
|
+
};
|
|
653
|
+
const instantiateThreadedProjectionWasm = async () => {
|
|
654
|
+
var _a, _b;
|
|
655
|
+
const scriptUrl = resolveVariantAssetUrl("simd-mt", "js");
|
|
656
|
+
const wasmUrl = resolveVariantAssetUrl("simd-mt", "wasm");
|
|
657
|
+
const workerUrl = resolveVariantAssetUrl("simd-mt", "worker");
|
|
658
|
+
const moduleFactory = await import(
|
|
659
|
+
/* @vite-ignore */
|
|
660
|
+
scriptUrl.href
|
|
661
|
+
);
|
|
662
|
+
const createModule = (_b = (_a = moduleFactory == null ? void 0 : moduleFactory.default) != null ? _a : moduleFactory == null ? void 0 : moduleFactory.Module) != null ? _b : moduleFactory;
|
|
663
|
+
if (typeof createModule !== "function") {
|
|
664
|
+
throw new Error("maplibre-gl-layers: simd-mt module is unavailable.");
|
|
665
|
+
}
|
|
666
|
+
const moduleInstance = await createModule({
|
|
667
|
+
locateFile: (path) => {
|
|
668
|
+
if (path.endsWith(".wasm")) {
|
|
669
|
+
return wasmUrl.href;
|
|
670
|
+
}
|
|
671
|
+
if (path.endsWith(".worker.js")) {
|
|
672
|
+
return workerUrl.href;
|
|
673
|
+
}
|
|
674
|
+
return path;
|
|
675
|
+
}
|
|
676
|
+
});
|
|
677
|
+
const threadLimit = resolveThreadPoolLimit();
|
|
678
|
+
if (threadLimit > 0 && typeof moduleInstance._setThreadPoolSize === "function") {
|
|
679
|
+
moduleInstance._setThreadPoolSize(threadLimit);
|
|
680
|
+
}
|
|
681
|
+
return moduleInstance;
|
|
682
|
+
};
|
|
683
|
+
const instantiateProjectionWasm = async (variant) => {
|
|
684
|
+
if (variant === "simd-mt") {
|
|
685
|
+
const threadedExports = await instantiateThreadedProjectionWasm();
|
|
686
|
+
return createWasmHostFromExports(threadedExports);
|
|
687
|
+
}
|
|
688
|
+
const binary = await loadWasmBinary(variant);
|
|
689
|
+
const imports = {};
|
|
690
|
+
const importTargets = imports;
|
|
691
|
+
importTargets.wasi_snapshot_preview1 = createImportNamespace();
|
|
692
|
+
importTargets.env = createImportNamespace();
|
|
693
|
+
const { instance } = await WebAssembly.instantiate(binary, imports);
|
|
694
|
+
const exports = instance.exports;
|
|
695
|
+
return createWasmHostFromExports(exports);
|
|
696
|
+
};
|
|
697
|
+
const createWasmHostFromExports = (exports) => {
|
|
698
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
699
|
+
if (typeof exports.__wasm_call_ctors === "function") {
|
|
700
|
+
exports.__wasm_call_ctors();
|
|
701
|
+
}
|
|
702
|
+
const memory = (_a = exports.memory) != null ? _a : exports.wasmMemory;
|
|
703
|
+
if (!memory) {
|
|
704
|
+
throw new Error("maplibre-gl-layers: wasm memory is unavailable.");
|
|
705
|
+
}
|
|
706
|
+
const malloc = (_b = exports._malloc) != null ? _b : exports.malloc;
|
|
707
|
+
const free = (_c = exports._free) != null ? _c : exports.free;
|
|
708
|
+
const fromLngLat = (_d = exports._fromLngLat) != null ? _d : exports.fromLngLat;
|
|
709
|
+
const project = (_e = exports._project) != null ? _e : exports.project;
|
|
710
|
+
const unproject = (_f = exports._unproject) != null ? _f : exports.unproject;
|
|
711
|
+
const calculatePerspectiveRatio = (_g = exports._calculatePerspectiveRatio) != null ? _g : exports.calculatePerspectiveRatio;
|
|
712
|
+
const projectLngLatToClipSpace2 = (_h = exports._projectLngLatToClipSpace) != null ? _h : exports.projectLngLatToClipSpace;
|
|
713
|
+
const calculateBillboardDepthKey2 = (_i = exports._calculateBillboardDepthKey) != null ? _i : exports.calculateBillboardDepthKey;
|
|
714
|
+
const calculateSurfaceDepthKey2 = (_j = exports._calculateSurfaceDepthKey) != null ? _j : exports.calculateSurfaceDepthKey;
|
|
715
|
+
const prepareDrawSpriteImages2 = (_k = exports._prepareDrawSpriteImages) != null ? _k : exports.prepareDrawSpriteImages;
|
|
716
|
+
if (!memory || !malloc || !free || !fromLngLat || !project || !unproject || !calculatePerspectiveRatio || !projectLngLatToClipSpace2 || !calculateBillboardDepthKey2 || !calculateSurfaceDepthKey2 || !prepareDrawSpriteImages2) {
|
|
717
|
+
throw new Error("Projection host WASM exports are incomplete.");
|
|
718
|
+
}
|
|
719
|
+
const pool = /* @__PURE__ */ new Map();
|
|
720
|
+
let destroyed = false;
|
|
721
|
+
let sweepTimer;
|
|
722
|
+
const getNow = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
723
|
+
const sweepPool = () => {
|
|
724
|
+
if (destroyed || pool.size === 0) {
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
727
|
+
const limit = getNow() - BUFFER_POOL_ENTRY_TTL_MS;
|
|
728
|
+
const emptyTypeKeys = [];
|
|
729
|
+
pool.forEach((typedPool, typeKey) => {
|
|
730
|
+
const emptyLengths = [];
|
|
731
|
+
typedPool.forEach((stack, length) => {
|
|
732
|
+
let writeIndex = 0;
|
|
733
|
+
for (let i = 0; i < stack.length; i++) {
|
|
734
|
+
const holder = stack[i];
|
|
735
|
+
if (!holder.__pooled) {
|
|
736
|
+
continue;
|
|
737
|
+
}
|
|
738
|
+
if (holder.__lastReleasedAt <= limit) {
|
|
739
|
+
holder.__free();
|
|
740
|
+
continue;
|
|
741
|
+
}
|
|
742
|
+
stack[writeIndex++] = holder;
|
|
743
|
+
}
|
|
744
|
+
if (writeIndex === 0) {
|
|
745
|
+
stack.length = 0;
|
|
746
|
+
emptyLengths.push(length);
|
|
747
|
+
} else {
|
|
748
|
+
stack.length = writeIndex;
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
emptyLengths.forEach((length) => typedPool.delete(length));
|
|
752
|
+
if (typedPool.size === 0) {
|
|
753
|
+
emptyTypeKeys.push(typeKey);
|
|
754
|
+
}
|
|
755
|
+
});
|
|
756
|
+
emptyTypeKeys.forEach((typeKey) => pool.delete(typeKey));
|
|
757
|
+
if (!destroyed && pool.size > 0) {
|
|
758
|
+
sweepTimer = setTimeout(() => {
|
|
759
|
+
sweepTimer = void 0;
|
|
760
|
+
sweepPool();
|
|
761
|
+
}, BUFFER_POOL_SWEEP_INTERVAL_MS);
|
|
762
|
+
}
|
|
763
|
+
};
|
|
764
|
+
const schedulePoolSweep = () => {
|
|
765
|
+
if (destroyed || pool.size === 0 || sweepTimer) {
|
|
766
|
+
return;
|
|
767
|
+
}
|
|
768
|
+
sweepTimer = setTimeout(() => {
|
|
769
|
+
sweepTimer = void 0;
|
|
770
|
+
sweepPool();
|
|
771
|
+
}, BUFFER_POOL_SWEEP_INTERVAL_MS);
|
|
772
|
+
};
|
|
773
|
+
const allocate = (length, ArrayType) => {
|
|
774
|
+
let typedPool = pool.get(ArrayType);
|
|
775
|
+
if (!typedPool) {
|
|
776
|
+
typedPool = /* @__PURE__ */ new Map();
|
|
777
|
+
pool.set(ArrayType, typedPool);
|
|
778
|
+
}
|
|
779
|
+
let candidate;
|
|
780
|
+
const exactStack = typedPool.get(length);
|
|
781
|
+
if (exactStack && exactStack.length > 0) {
|
|
782
|
+
candidate = exactStack.pop();
|
|
783
|
+
if (exactStack.length === 0) {
|
|
784
|
+
typedPool.delete(length);
|
|
785
|
+
if (typedPool.size === 0) {
|
|
786
|
+
pool.delete(ArrayType);
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
candidate.__pooled = false;
|
|
790
|
+
candidate.__lastReleasedAt = 0;
|
|
791
|
+
return candidate;
|
|
792
|
+
}
|
|
793
|
+
if (typedPool.size > 0) {
|
|
794
|
+
const maxCapacity = length * BUFFER_POOL_MAX_REUSE_RATIO;
|
|
795
|
+
let bestCapacity;
|
|
796
|
+
let bestStack;
|
|
797
|
+
typedPool.forEach((stack, capacity) => {
|
|
798
|
+
if (stack.length === 0) {
|
|
799
|
+
typedPool.delete(capacity);
|
|
800
|
+
return;
|
|
801
|
+
}
|
|
802
|
+
if (capacity < length || capacity > maxCapacity) {
|
|
803
|
+
return;
|
|
804
|
+
}
|
|
805
|
+
if (bestStack === void 0 || capacity < bestCapacity) {
|
|
806
|
+
bestStack = stack;
|
|
807
|
+
bestCapacity = capacity;
|
|
808
|
+
}
|
|
809
|
+
});
|
|
810
|
+
if (bestStack && bestStack.length > 0) {
|
|
811
|
+
candidate = bestStack.pop();
|
|
812
|
+
if (bestStack.length === 0) {
|
|
813
|
+
typedPool.delete(bestCapacity);
|
|
814
|
+
if (typedPool.size === 0) {
|
|
815
|
+
pool.delete(ArrayType);
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
candidate.__pooled = false;
|
|
819
|
+
candidate.__lastReleasedAt = 0;
|
|
820
|
+
return candidate;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
let ptr = malloc(length * ArrayType.BYTES_PER_ELEMENT);
|
|
824
|
+
let buffer = new ArrayType(memory.buffer, ptr, length);
|
|
825
|
+
const prepare = () => {
|
|
826
|
+
if (candidate.__ptr === 0) {
|
|
827
|
+
throw new Error("Buffer already freed.");
|
|
828
|
+
}
|
|
829
|
+
if (candidate.__buffer.buffer !== memory.buffer || candidate.__buffer.length !== candidate.length) {
|
|
830
|
+
candidate.__buffer = new ArrayType(
|
|
831
|
+
memory.buffer,
|
|
832
|
+
candidate.__ptr,
|
|
833
|
+
candidate.length
|
|
834
|
+
);
|
|
835
|
+
}
|
|
836
|
+
return { ptr: candidate.__ptr, buffer: candidate.__buffer };
|
|
837
|
+
};
|
|
838
|
+
const release2 = () => {
|
|
839
|
+
if (candidate.__pooled) {
|
|
840
|
+
return;
|
|
841
|
+
}
|
|
842
|
+
if (destroyed) {
|
|
843
|
+
candidate.__free();
|
|
844
|
+
return;
|
|
845
|
+
}
|
|
846
|
+
candidate.__pooled = true;
|
|
847
|
+
candidate.__lastReleasedAt = getNow();
|
|
848
|
+
const capacity = candidate.__capacity;
|
|
849
|
+
let stack = typedPool.get(capacity);
|
|
850
|
+
if (!stack) {
|
|
851
|
+
stack = [];
|
|
852
|
+
typedPool.set(capacity, stack);
|
|
853
|
+
}
|
|
854
|
+
if (!pool.has(ArrayType)) {
|
|
855
|
+
pool.set(ArrayType, typedPool);
|
|
856
|
+
}
|
|
857
|
+
stack.push(candidate);
|
|
858
|
+
schedulePoolSweep();
|
|
859
|
+
};
|
|
860
|
+
const __free = () => {
|
|
861
|
+
if (candidate.__ptr) {
|
|
862
|
+
free(candidate.__ptr);
|
|
863
|
+
candidate.__ptr = 0;
|
|
864
|
+
candidate.__buffer = void 0;
|
|
865
|
+
candidate.__capacity = 0;
|
|
866
|
+
candidate.__pooled = false;
|
|
867
|
+
candidate.__lastReleasedAt = 0;
|
|
868
|
+
candidate.__free = void 0;
|
|
869
|
+
candidate.length = 0;
|
|
870
|
+
candidate.prepare = void 0;
|
|
871
|
+
candidate.release = void 0;
|
|
872
|
+
}
|
|
873
|
+
};
|
|
874
|
+
candidate = {
|
|
875
|
+
length,
|
|
876
|
+
prepare,
|
|
877
|
+
release: release2,
|
|
878
|
+
__ptr: ptr,
|
|
879
|
+
__buffer: buffer,
|
|
880
|
+
__capacity: length,
|
|
881
|
+
__pooled: false,
|
|
882
|
+
__lastReleasedAt: 0,
|
|
883
|
+
__free
|
|
884
|
+
};
|
|
885
|
+
return candidate;
|
|
886
|
+
};
|
|
887
|
+
const allocateTypedBuffer = (ArrayType, elements) => {
|
|
888
|
+
const isElementLength = typeof elements === "number";
|
|
889
|
+
const length = isElementLength ? elements : elements.length;
|
|
890
|
+
const candidate = allocate(length, ArrayType);
|
|
891
|
+
if (!isElementLength) {
|
|
892
|
+
const { buffer } = candidate.prepare();
|
|
893
|
+
buffer.set(elements);
|
|
894
|
+
}
|
|
895
|
+
return candidate;
|
|
896
|
+
};
|
|
897
|
+
const release = () => {
|
|
898
|
+
if (destroyed) {
|
|
899
|
+
return;
|
|
900
|
+
}
|
|
901
|
+
destroyed = true;
|
|
902
|
+
if (sweepTimer) {
|
|
903
|
+
clearTimeout(sweepTimer);
|
|
904
|
+
sweepTimer = void 0;
|
|
905
|
+
}
|
|
906
|
+
pool.forEach((typedPool) => {
|
|
907
|
+
typedPool.forEach((stack) => {
|
|
908
|
+
stack.forEach((holder) => {
|
|
909
|
+
holder.__free();
|
|
910
|
+
});
|
|
911
|
+
stack.length = 0;
|
|
912
|
+
});
|
|
913
|
+
typedPool.clear();
|
|
914
|
+
});
|
|
915
|
+
pool.clear();
|
|
916
|
+
};
|
|
917
|
+
return {
|
|
918
|
+
allocateTypedBuffer,
|
|
919
|
+
fromLngLat,
|
|
920
|
+
project,
|
|
921
|
+
unproject,
|
|
922
|
+
calculatePerspectiveRatio,
|
|
923
|
+
projectLngLatToClipSpace: projectLngLatToClipSpace2,
|
|
924
|
+
calculateBillboardDepthKey: calculateBillboardDepthKey2,
|
|
925
|
+
calculateSurfaceDepthKey: calculateSurfaceDepthKey2,
|
|
926
|
+
prepareDrawSpriteImages: prepareDrawSpriteImages2,
|
|
927
|
+
release
|
|
928
|
+
};
|
|
929
|
+
};
|
|
930
|
+
const initializeWasmHostInternal = async (preferredVariant) => {
|
|
931
|
+
var _a;
|
|
932
|
+
if (preferredVariant === "disabled") {
|
|
933
|
+
console.log(
|
|
934
|
+
"maplibre-gl-layers: Wasm execution disabled by configuration."
|
|
935
|
+
);
|
|
936
|
+
return ["disabled", void 0];
|
|
937
|
+
}
|
|
938
|
+
const variantsToTry = (_a = VARIANT_FALLBACKS[preferredVariant]) != null ? _a : ["nosimd"];
|
|
939
|
+
for (const variant of variantsToTry) {
|
|
940
|
+
if (variant === "simd-mt" && !canUseThreadedWasm()) {
|
|
941
|
+
if (!threadedVariantWarningPrinted) {
|
|
942
|
+
console.warn(
|
|
943
|
+
"maplibre-gl-layers: SharedArrayBuffer is unavailable, skipping simd-mt wasm variant."
|
|
944
|
+
);
|
|
945
|
+
threadedVariantWarningPrinted = true;
|
|
946
|
+
}
|
|
947
|
+
continue;
|
|
948
|
+
}
|
|
949
|
+
try {
|
|
950
|
+
const wasmHost = await instantiateProjectionWasm(variant);
|
|
951
|
+
console.log(
|
|
952
|
+
`maplibre-gl-layers: Initialized wasm module (variant: ${variant}).`
|
|
953
|
+
);
|
|
954
|
+
return [variant, wasmHost];
|
|
955
|
+
} catch (error) {
|
|
956
|
+
console.warn(
|
|
957
|
+
`maplibre-gl-layers: Failed to initialize ${variant} wasm module.`,
|
|
958
|
+
error
|
|
959
|
+
);
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
console.warn(
|
|
963
|
+
"maplibre-gl-layers: Falling back to JavaScript implementation."
|
|
964
|
+
);
|
|
965
|
+
return ["disabled", void 0];
|
|
966
|
+
};
|
|
967
|
+
let currentVariant = "disabled";
|
|
968
|
+
let currentWasmHost;
|
|
969
|
+
const initializeWasmHost = async (preferredVariant, options) => {
|
|
970
|
+
let nextBaseUrl = wasmBaseUrlOverride;
|
|
971
|
+
if ((options == null ? void 0 : options.wasmBaseUrl) !== void 0) {
|
|
972
|
+
nextBaseUrl = options.wasmBaseUrl === "" ? void 0 : options.wasmBaseUrl;
|
|
973
|
+
}
|
|
974
|
+
const baseChanged = nextBaseUrl !== wasmBaseUrlOverride;
|
|
975
|
+
if ((options == null ? void 0 : options.wasmBaseUrl) !== void 0) {
|
|
976
|
+
wasmBaseUrlOverride = nextBaseUrl;
|
|
977
|
+
}
|
|
978
|
+
if ((options == null ? void 0 : options.force) || baseChanged) {
|
|
979
|
+
currentWasmHost = void 0;
|
|
980
|
+
}
|
|
981
|
+
if (currentWasmHost !== void 0) {
|
|
982
|
+
return currentVariant;
|
|
983
|
+
}
|
|
984
|
+
const [variant, wasmHost] = await initializeWasmHostInternal(preferredVariant);
|
|
985
|
+
currentVariant = variant;
|
|
986
|
+
currentWasmHost = wasmHost;
|
|
987
|
+
return variant;
|
|
988
|
+
};
|
|
989
|
+
const releaseWasmHost = () => {
|
|
990
|
+
if (currentWasmHost) {
|
|
991
|
+
currentWasmHost.release();
|
|
992
|
+
currentWasmHost = void 0;
|
|
993
|
+
currentVariant = "disabled";
|
|
994
|
+
}
|
|
995
|
+
};
|
|
996
|
+
const prepareWasmHost = () => {
|
|
997
|
+
if (!currentWasmHost) {
|
|
998
|
+
throw new Error("Could not use WasmHost, needs before initialization.");
|
|
999
|
+
}
|
|
1000
|
+
return currentWasmHost;
|
|
1001
|
+
};
|
|
1002
|
+
const resolveThreadPoolLimit = () => {
|
|
1003
|
+
const hardware = typeof navigator !== "undefined" && typeof navigator.hardwareConcurrency === "number" ? navigator.hardwareConcurrency : 0;
|
|
1004
|
+
if (CONFIGURED_PTHREAD_POOL_SIZE > 0 && hardware > 0) {
|
|
1005
|
+
return Math.min(CONFIGURED_PTHREAD_POOL_SIZE, hardware);
|
|
1006
|
+
}
|
|
1007
|
+
if (CONFIGURED_PTHREAD_POOL_SIZE > 0) {
|
|
1008
|
+
return CONFIGURED_PTHREAD_POOL_SIZE;
|
|
1009
|
+
}
|
|
1010
|
+
return hardware;
|
|
1011
|
+
};
|
|
1012
|
+
const spriteLayerHostInitializationMutex = createMutex();
|
|
1013
|
+
let spriteLayerHostVariant = "disabled";
|
|
1014
|
+
const isSpriteLayerHostEnabled = () => spriteLayerHostVariant !== "disabled";
|
|
1015
|
+
const initializeRuntimeHost = async (options) => {
|
|
1016
|
+
var _a;
|
|
1017
|
+
const locker = await spriteLayerHostInitializationMutex.lock();
|
|
1018
|
+
try {
|
|
1019
|
+
const requestedVariant = (_a = options == null ? void 0 : options.variant) != null ? _a : "simd";
|
|
1020
|
+
if (requestedVariant === "disabled") {
|
|
1021
|
+
releaseRuntimeHost();
|
|
1022
|
+
return "disabled";
|
|
1023
|
+
}
|
|
1024
|
+
const forceReload = options !== void 0;
|
|
1025
|
+
spriteLayerHostVariant = await initializeWasmHost(requestedVariant, {
|
|
1026
|
+
force: forceReload,
|
|
1027
|
+
wasmBaseUrl: options == null ? void 0 : options.wasmBaseUrl
|
|
1028
|
+
});
|
|
1029
|
+
return spriteLayerHostVariant;
|
|
1030
|
+
} finally {
|
|
1031
|
+
locker.release();
|
|
1032
|
+
}
|
|
1033
|
+
};
|
|
1034
|
+
const releaseRuntimeHost = () => {
|
|
1035
|
+
if (spriteLayerHostVariant === "disabled") {
|
|
1036
|
+
return;
|
|
1037
|
+
}
|
|
1038
|
+
spriteLayerHostVariant = "disabled";
|
|
1039
|
+
releaseWasmHost();
|
|
1040
|
+
};
|
|
1041
|
+
const detectMultiThreadedModuleAvailability = () => {
|
|
1042
|
+
const scope = typeof globalThis === "object" ? globalThis : void 0;
|
|
1043
|
+
if (!scope) {
|
|
1044
|
+
return {
|
|
1045
|
+
available: false,
|
|
1046
|
+
reason: "Global scope is unavailable."
|
|
1047
|
+
};
|
|
1048
|
+
}
|
|
1049
|
+
if (typeof scope.SharedArrayBuffer !== "function") {
|
|
1050
|
+
return {
|
|
1051
|
+
available: false,
|
|
1052
|
+
reason: "SharedArrayBuffer is not available in this environment."
|
|
1053
|
+
};
|
|
1054
|
+
}
|
|
1055
|
+
if (typeof scope.Atomics !== "object") {
|
|
1056
|
+
return {
|
|
1057
|
+
available: false,
|
|
1058
|
+
reason: "Atomics API is not available in this environment."
|
|
1059
|
+
};
|
|
1060
|
+
}
|
|
1061
|
+
if (typeof scope.Worker !== "function") {
|
|
1062
|
+
return {
|
|
1063
|
+
available: false,
|
|
1064
|
+
reason: "Web Worker API is unavailable in this environment."
|
|
1065
|
+
};
|
|
1066
|
+
}
|
|
1067
|
+
if (scope.crossOriginIsolated !== true) {
|
|
1068
|
+
return {
|
|
1069
|
+
available: false,
|
|
1070
|
+
reason: "Enable cross-origin isolation (COOP/COEP) so SharedArrayBuffer can be used."
|
|
1071
|
+
};
|
|
1072
|
+
}
|
|
1073
|
+
return { available: true };
|
|
1074
|
+
};
|
|
307
1075
|
var maplibreGl$1 = { exports: {} };
|
|
308
1076
|
/**
|
|
309
1077
|
* MapLibre GL JS
|
|
@@ -21249,247 +22017,79 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
21249
22017
|
}, e.RasterDEMTileSource = X, e.RasterTileSource = H, e.ScaleControl = class {
|
|
21250
22018
|
constructor(e2) {
|
|
21251
22019
|
this._onMove = () => {
|
|
21252
|
-
us(this._map, this._container, this.options);
|
|
21253
|
-
}, this.setUnit = (e3) => {
|
|
21254
|
-
this.options.unit = e3, us(this._map, this._container, this.options);
|
|
21255
|
-
}, this.options = Object.assign(Object.assign({}, hs), e2);
|
|
21256
|
-
}
|
|
21257
|
-
getDefaultPosition() {
|
|
21258
|
-
return "bottom-left";
|
|
21259
|
-
}
|
|
21260
|
-
onAdd(e2) {
|
|
21261
|
-
return this._map = e2, this._container = c.create("div", "maplibregl-ctrl maplibregl-ctrl-scale", e2.getContainer()), this._map.on("move", this._onMove), this._onMove(), this._container;
|
|
21262
|
-
}
|
|
21263
|
-
onRemove() {
|
|
21264
|
-
c.remove(this._container), this._map.off("move", this._onMove), this._map = void 0;
|
|
21265
|
-
}
|
|
21266
|
-
}, e.ScrollZoomHandler = Sr, e.Style = Ii, e.TerrainControl = class {
|
|
21267
|
-
constructor(e2) {
|
|
21268
|
-
this._toggleTerrain = () => {
|
|
21269
|
-
this._map.getTerrain() ? this._map.setTerrain(null) : this._map.setTerrain(this.options), this._updateTerrainIcon();
|
|
21270
|
-
}, this._updateTerrainIcon = () => {
|
|
21271
|
-
this._terrainButton.classList.remove("maplibregl-ctrl-terrain"), this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"), this._map.terrain ? (this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"), this._terrainButton.title = this._map._getUIString("TerrainControl.Disable")) : (this._terrainButton.classList.add("maplibregl-ctrl-terrain"), this._terrainButton.title = this._map._getUIString("TerrainControl.Enable"));
|
|
21272
|
-
}, this.options = e2;
|
|
21273
|
-
}
|
|
21274
|
-
onAdd(e2) {
|
|
21275
|
-
return this._map = e2, this._container = c.create("div", "maplibregl-ctrl maplibregl-ctrl-group"), this._terrainButton = c.create("button", "maplibregl-ctrl-terrain", this._container), c.create("span", "maplibregl-ctrl-icon", this._terrainButton).setAttribute("aria-hidden", "true"), this._terrainButton.type = "button", this._terrainButton.addEventListener("click", this._toggleTerrain), this._updateTerrainIcon(), this._map.on("terrain", this._updateTerrainIcon), this._container;
|
|
21276
|
-
}
|
|
21277
|
-
onRemove() {
|
|
21278
|
-
c.remove(this._container), this._map.off("terrain", this._updateTerrainIcon), this._map = void 0;
|
|
21279
|
-
}
|
|
21280
|
-
}, e.TwoFingersTouchPitchHandler = wr, e.TwoFingersTouchRotateHandler = br, e.TwoFingersTouchZoomHandler = vr, e.TwoFingersTouchZoomRotateHandler = Lr, e.VectorTileSource = q, e.VideoSource = Y, e.addSourceType = (e2, i2) => t._(void 0, void 0, void 0, (function* () {
|
|
21281
|
-
if (te(e2)) throw new Error(`A source type called "${e2}" already exists.`);
|
|
21282
|
-
((e3, t2) => {
|
|
21283
|
-
ee[e3] = t2;
|
|
21284
|
-
})(e2, i2);
|
|
21285
|
-
})), e.clearPrewarmedResources = function() {
|
|
21286
|
-
const e2 = k;
|
|
21287
|
-
e2 && (e2.isPreloaded() && 1 === e2.numActive() ? (e2.release(z), k = null) : console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));
|
|
21288
|
-
}, e.createTileMesh = Jt, e.getMaxParallelImageRequests = function() {
|
|
21289
|
-
return t.a.MAX_PARALLEL_IMAGE_REQUESTS;
|
|
21290
|
-
}, e.getRTLTextPluginStatus = function() {
|
|
21291
|
-
return re().getRTLTextPluginStatus();
|
|
21292
|
-
}, e.getVersion = function() {
|
|
21293
|
-
return fs;
|
|
21294
|
-
}, e.getWorkerCount = function() {
|
|
21295
|
-
return A.workerCount;
|
|
21296
|
-
}, e.getWorkerUrl = function() {
|
|
21297
|
-
return t.a.WORKER_URL;
|
|
21298
|
-
}, e.importScriptInWorkers = function(e2) {
|
|
21299
|
-
return j().broadcast("IS", e2);
|
|
21300
|
-
}, e.isTimeFrozen = function() {
|
|
21301
|
-
return n.isFrozen();
|
|
21302
|
-
}, e.prewarm = function() {
|
|
21303
|
-
B().acquire(z);
|
|
21304
|
-
}, e.restoreNow = function() {
|
|
21305
|
-
n.restoreNow();
|
|
21306
|
-
}, e.setMaxParallelImageRequests = function(e2) {
|
|
21307
|
-
t.a.MAX_PARALLEL_IMAGE_REQUESTS = e2;
|
|
21308
|
-
}, e.setNow = function(e2) {
|
|
21309
|
-
n.setNow(e2);
|
|
21310
|
-
}, e.setRTLTextPlugin = function(e2, t2) {
|
|
21311
|
-
return re().setRTLTextPlugin(e2, t2);
|
|
21312
|
-
}, e.setWorkerCount = function(e2) {
|
|
21313
|
-
A.workerCount = e2;
|
|
21314
|
-
}, e.setWorkerUrl = function(e2) {
|
|
21315
|
-
t.a.WORKER_URL = e2;
|
|
21316
|
-
};
|
|
21317
|
-
}));
|
|
21318
|
-
var maplibregl$1 = maplibregl;
|
|
21319
|
-
return maplibregl$1;
|
|
21320
|
-
}));
|
|
21321
|
-
})(maplibreGl$1);
|
|
21322
|
-
return maplibreGl$1.exports;
|
|
21323
|
-
}
|
|
21324
|
-
requireMaplibreGl();
|
|
21325
|
-
/*!
|
|
21326
|
-
* name: async-primitives
|
|
21327
|
-
* version: 1.4.0
|
|
21328
|
-
* description: A collection of primitive functions for asynchronous operations
|
|
21329
|
-
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
21330
|
-
* license: MIT
|
|
21331
|
-
* repository.url: https://github.com/kekyo/async-primitives.git
|
|
21332
|
-
* git.commit.hash: 147b7bee11bf17823a185e0492d7f73587748715
|
|
21333
|
-
*/
|
|
21334
|
-
const __NOOP_HANDLER = () => {
|
|
21335
|
-
};
|
|
21336
|
-
const __NOOP_RELEASABLE = {
|
|
21337
|
-
release: __NOOP_HANDLER,
|
|
21338
|
-
[Symbol.dispose]: __NOOP_HANDLER
|
|
21339
|
-
};
|
|
21340
|
-
const onAbort = (signal, callback) => {
|
|
21341
|
-
if (!signal) {
|
|
21342
|
-
return __NOOP_RELEASABLE;
|
|
21343
|
-
}
|
|
21344
|
-
if (signal.aborted) {
|
|
21345
|
-
try {
|
|
21346
|
-
callback();
|
|
21347
|
-
} catch (error) {
|
|
21348
|
-
console.warn("AbortHook callback error: ", error);
|
|
21349
|
-
}
|
|
21350
|
-
return __NOOP_RELEASABLE;
|
|
21351
|
-
}
|
|
21352
|
-
let abortHandler;
|
|
21353
|
-
abortHandler = () => {
|
|
21354
|
-
if (abortHandler) {
|
|
21355
|
-
signal.removeEventListener("abort", abortHandler);
|
|
21356
|
-
abortHandler = void 0;
|
|
21357
|
-
try {
|
|
21358
|
-
callback();
|
|
21359
|
-
} catch (error) {
|
|
21360
|
-
console.warn("AbortHook callback error: ", error);
|
|
21361
|
-
}
|
|
21362
|
-
}
|
|
21363
|
-
};
|
|
21364
|
-
const release = () => {
|
|
21365
|
-
if (abortHandler) {
|
|
21366
|
-
signal.removeEventListener("abort", abortHandler);
|
|
21367
|
-
abortHandler = void 0;
|
|
21368
|
-
}
|
|
21369
|
-
};
|
|
21370
|
-
signal.addEventListener("abort", abortHandler, { once: true });
|
|
21371
|
-
const handle = {
|
|
21372
|
-
release,
|
|
21373
|
-
[Symbol.dispose]: release
|
|
21374
|
-
};
|
|
21375
|
-
return handle;
|
|
21376
|
-
};
|
|
21377
|
-
const defer = (fn) => {
|
|
21378
|
-
if (typeof setImmediate === "function") {
|
|
21379
|
-
setImmediate(fn);
|
|
21380
|
-
} else {
|
|
21381
|
-
setTimeout(fn, 0);
|
|
21382
|
-
}
|
|
21383
|
-
};
|
|
21384
|
-
const ABORTED_ERROR$2 = () => new Error("Lock acquisition was aborted");
|
|
21385
|
-
const createLockHandle = (releaseCallback) => {
|
|
21386
|
-
let isActive = true;
|
|
21387
|
-
const release = () => {
|
|
21388
|
-
if (!isActive) {
|
|
21389
|
-
return;
|
|
21390
|
-
}
|
|
21391
|
-
isActive = false;
|
|
21392
|
-
releaseCallback();
|
|
21393
|
-
};
|
|
21394
|
-
return {
|
|
21395
|
-
get isActive() {
|
|
21396
|
-
return isActive;
|
|
21397
|
-
},
|
|
21398
|
-
release,
|
|
21399
|
-
[Symbol.dispose]: release
|
|
21400
|
-
};
|
|
21401
|
-
};
|
|
21402
|
-
const createMutex = (maxConsecutiveCalls = 20) => {
|
|
21403
|
-
let isLocked = false;
|
|
21404
|
-
const queue = [];
|
|
21405
|
-
let count = 0;
|
|
21406
|
-
const processQueue = () => {
|
|
21407
|
-
var _a;
|
|
21408
|
-
if (isLocked || queue.length === 0) {
|
|
21409
|
-
return;
|
|
21410
|
-
}
|
|
21411
|
-
const item = queue.shift();
|
|
21412
|
-
if ((_a = item.signal) == null ? void 0 : _a.aborted) {
|
|
21413
|
-
item.reject(ABORTED_ERROR$2());
|
|
21414
|
-
scheduleNextProcess();
|
|
21415
|
-
return;
|
|
21416
|
-
}
|
|
21417
|
-
isLocked = true;
|
|
21418
|
-
const lockHandle = createLockHandle(releaseLock);
|
|
21419
|
-
item.resolve(lockHandle);
|
|
21420
|
-
};
|
|
21421
|
-
const scheduleNextProcess = () => {
|
|
21422
|
-
count++;
|
|
21423
|
-
if (count >= maxConsecutiveCalls) {
|
|
21424
|
-
count = 0;
|
|
21425
|
-
defer(processQueue);
|
|
21426
|
-
} else {
|
|
21427
|
-
processQueue();
|
|
21428
|
-
}
|
|
21429
|
-
};
|
|
21430
|
-
const releaseLock = () => {
|
|
21431
|
-
if (!isLocked) {
|
|
21432
|
-
return;
|
|
21433
|
-
}
|
|
21434
|
-
isLocked = false;
|
|
21435
|
-
scheduleNextProcess();
|
|
21436
|
-
};
|
|
21437
|
-
const removeFromQueue = (item) => {
|
|
21438
|
-
const index = queue.indexOf(item);
|
|
21439
|
-
if (index !== -1) {
|
|
21440
|
-
queue.splice(index, 1);
|
|
21441
|
-
}
|
|
21442
|
-
};
|
|
21443
|
-
const lock = async (signal) => {
|
|
21444
|
-
if (signal) {
|
|
21445
|
-
if (signal.aborted) {
|
|
21446
|
-
throw ABORTED_ERROR$2();
|
|
21447
|
-
}
|
|
21448
|
-
return new Promise((resolve, reject) => {
|
|
21449
|
-
const queueItem = {
|
|
21450
|
-
resolve: void 0,
|
|
21451
|
-
reject: void 0,
|
|
21452
|
-
signal
|
|
21453
|
-
};
|
|
21454
|
-
const abortHandle = onAbort(signal, () => {
|
|
21455
|
-
removeFromQueue(queueItem);
|
|
21456
|
-
reject(ABORTED_ERROR$2());
|
|
21457
|
-
});
|
|
21458
|
-
queueItem.resolve = (handle) => {
|
|
21459
|
-
abortHandle.release();
|
|
21460
|
-
resolve(handle);
|
|
21461
|
-
};
|
|
21462
|
-
queueItem.reject = (error) => {
|
|
21463
|
-
abortHandle.release();
|
|
21464
|
-
reject(error);
|
|
22020
|
+
us(this._map, this._container, this.options);
|
|
22021
|
+
}, this.setUnit = (e3) => {
|
|
22022
|
+
this.options.unit = e3, us(this._map, this._container, this.options);
|
|
22023
|
+
}, this.options = Object.assign(Object.assign({}, hs), e2);
|
|
22024
|
+
}
|
|
22025
|
+
getDefaultPosition() {
|
|
22026
|
+
return "bottom-left";
|
|
22027
|
+
}
|
|
22028
|
+
onAdd(e2) {
|
|
22029
|
+
return this._map = e2, this._container = c.create("div", "maplibregl-ctrl maplibregl-ctrl-scale", e2.getContainer()), this._map.on("move", this._onMove), this._onMove(), this._container;
|
|
22030
|
+
}
|
|
22031
|
+
onRemove() {
|
|
22032
|
+
c.remove(this._container), this._map.off("move", this._onMove), this._map = void 0;
|
|
22033
|
+
}
|
|
22034
|
+
}, e.ScrollZoomHandler = Sr, e.Style = Ii, e.TerrainControl = class {
|
|
22035
|
+
constructor(e2) {
|
|
22036
|
+
this._toggleTerrain = () => {
|
|
22037
|
+
this._map.getTerrain() ? this._map.setTerrain(null) : this._map.setTerrain(this.options), this._updateTerrainIcon();
|
|
22038
|
+
}, this._updateTerrainIcon = () => {
|
|
22039
|
+
this._terrainButton.classList.remove("maplibregl-ctrl-terrain"), this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"), this._map.terrain ? (this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"), this._terrainButton.title = this._map._getUIString("TerrainControl.Disable")) : (this._terrainButton.classList.add("maplibregl-ctrl-terrain"), this._terrainButton.title = this._map._getUIString("TerrainControl.Enable"));
|
|
22040
|
+
}, this.options = e2;
|
|
22041
|
+
}
|
|
22042
|
+
onAdd(e2) {
|
|
22043
|
+
return this._map = e2, this._container = c.create("div", "maplibregl-ctrl maplibregl-ctrl-group"), this._terrainButton = c.create("button", "maplibregl-ctrl-terrain", this._container), c.create("span", "maplibregl-ctrl-icon", this._terrainButton).setAttribute("aria-hidden", "true"), this._terrainButton.type = "button", this._terrainButton.addEventListener("click", this._toggleTerrain), this._updateTerrainIcon(), this._map.on("terrain", this._updateTerrainIcon), this._container;
|
|
22044
|
+
}
|
|
22045
|
+
onRemove() {
|
|
22046
|
+
c.remove(this._container), this._map.off("terrain", this._updateTerrainIcon), this._map = void 0;
|
|
22047
|
+
}
|
|
22048
|
+
}, e.TwoFingersTouchPitchHandler = wr, e.TwoFingersTouchRotateHandler = br, e.TwoFingersTouchZoomHandler = vr, e.TwoFingersTouchZoomRotateHandler = Lr, e.VectorTileSource = q, e.VideoSource = Y, e.addSourceType = (e2, i2) => t._(void 0, void 0, void 0, (function* () {
|
|
22049
|
+
if (te(e2)) throw new Error(`A source type called "${e2}" already exists.`);
|
|
22050
|
+
((e3, t2) => {
|
|
22051
|
+
ee[e3] = t2;
|
|
22052
|
+
})(e2, i2);
|
|
22053
|
+
})), e.clearPrewarmedResources = function() {
|
|
22054
|
+
const e2 = k;
|
|
22055
|
+
e2 && (e2.isPreloaded() && 1 === e2.numActive() ? (e2.release(z), k = null) : console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));
|
|
22056
|
+
}, e.createTileMesh = Jt, e.getMaxParallelImageRequests = function() {
|
|
22057
|
+
return t.a.MAX_PARALLEL_IMAGE_REQUESTS;
|
|
22058
|
+
}, e.getRTLTextPluginStatus = function() {
|
|
22059
|
+
return re().getRTLTextPluginStatus();
|
|
22060
|
+
}, e.getVersion = function() {
|
|
22061
|
+
return fs;
|
|
22062
|
+
}, e.getWorkerCount = function() {
|
|
22063
|
+
return A.workerCount;
|
|
22064
|
+
}, e.getWorkerUrl = function() {
|
|
22065
|
+
return t.a.WORKER_URL;
|
|
22066
|
+
}, e.importScriptInWorkers = function(e2) {
|
|
22067
|
+
return j().broadcast("IS", e2);
|
|
22068
|
+
}, e.isTimeFrozen = function() {
|
|
22069
|
+
return n.isFrozen();
|
|
22070
|
+
}, e.prewarm = function() {
|
|
22071
|
+
B().acquire(z);
|
|
22072
|
+
}, e.restoreNow = function() {
|
|
22073
|
+
n.restoreNow();
|
|
22074
|
+
}, e.setMaxParallelImageRequests = function(e2) {
|
|
22075
|
+
t.a.MAX_PARALLEL_IMAGE_REQUESTS = e2;
|
|
22076
|
+
}, e.setNow = function(e2) {
|
|
22077
|
+
n.setNow(e2);
|
|
22078
|
+
}, e.setRTLTextPlugin = function(e2, t2) {
|
|
22079
|
+
return re().setRTLTextPlugin(e2, t2);
|
|
22080
|
+
}, e.setWorkerCount = function(e2) {
|
|
22081
|
+
A.workerCount = e2;
|
|
22082
|
+
}, e.setWorkerUrl = function(e2) {
|
|
22083
|
+
t.a.WORKER_URL = e2;
|
|
21465
22084
|
};
|
|
21466
|
-
|
|
21467
|
-
|
|
21468
|
-
|
|
21469
|
-
}
|
|
21470
|
-
|
|
21471
|
-
|
|
21472
|
-
|
|
21473
|
-
|
|
21474
|
-
});
|
|
21475
|
-
processQueue();
|
|
21476
|
-
});
|
|
21477
|
-
}
|
|
21478
|
-
};
|
|
21479
|
-
const result = {
|
|
21480
|
-
lock,
|
|
21481
|
-
waiter: {
|
|
21482
|
-
wait: lock
|
|
21483
|
-
},
|
|
21484
|
-
get isLocked() {
|
|
21485
|
-
return isLocked;
|
|
21486
|
-
},
|
|
21487
|
-
get pendingCount() {
|
|
21488
|
-
return queue.length;
|
|
21489
|
-
}
|
|
21490
|
-
};
|
|
21491
|
-
return result;
|
|
21492
|
-
};
|
|
22085
|
+
}));
|
|
22086
|
+
var maplibregl$1 = maplibregl;
|
|
22087
|
+
return maplibregl$1;
|
|
22088
|
+
}));
|
|
22089
|
+
})(maplibreGl$1);
|
|
22090
|
+
return maplibreGl$1.exports;
|
|
22091
|
+
}
|
|
22092
|
+
requireMaplibreGl();
|
|
21493
22093
|
const SPRITE_ORIGIN_REFERENCE_KEY_NONE = -1;
|
|
21494
22094
|
const SPRITE_ORIGIN_REFERENCE_INDEX_NONE = -1;
|
|
21495
22095
|
const linearEasing = (progress) => {
|
|
@@ -22970,15 +23570,12 @@ uniform vec2 u_billboardHalfSize;
|
|
|
22970
23570
|
uniform vec2 u_billboardAnchor;
|
|
22971
23571
|
uniform vec2 u_billboardSinCos;
|
|
22972
23572
|
uniform float u_surfaceClipEnabled;
|
|
22973
|
-
uniform
|
|
22974
|
-
uniform vec4 u_surfaceClipBasisEast;
|
|
22975
|
-
uniform vec4 u_surfaceClipBasisNorth;
|
|
23573
|
+
uniform mat4 u_surfaceClipMatrix;
|
|
22976
23574
|
uniform float u_surfaceDepthBias;
|
|
22977
23575
|
varying vec2 v_uv;
|
|
22978
|
-
vec2 computeBillboardCorner(vec2
|
|
22979
|
-
vec2 base = vec2(uv.x * 2.0 - 1.0, 1.0 - uv.y * 2.0);
|
|
23576
|
+
vec2 computeBillboardCorner(vec2 baseCorner) {
|
|
22980
23577
|
vec2 anchorShift = vec2(u_billboardAnchor.x * u_billboardHalfSize.x, u_billboardAnchor.y * u_billboardHalfSize.y);
|
|
22981
|
-
vec2 shifted = vec2(
|
|
23578
|
+
vec2 shifted = vec2(baseCorner.x * u_billboardHalfSize.x, baseCorner.y * u_billboardHalfSize.y) - anchorShift;
|
|
22982
23579
|
float sinR = u_billboardSinCos.x;
|
|
22983
23580
|
float cosR = u_billboardSinCos.y;
|
|
22984
23581
|
vec2 rotated = vec2(
|
|
@@ -22994,9 +23591,7 @@ vec4 computeSurfaceCorner(vec2 corner) {
|
|
|
22994
23591
|
if (u_surfaceClipEnabled < 0.5) {
|
|
22995
23592
|
return vec4(0.0, 0.0, 0.0, 1.0);
|
|
22996
23593
|
}
|
|
22997
|
-
vec4 clip =
|
|
22998
|
-
+ (corner.x * u_surfaceClipBasisEast)
|
|
22999
|
-
+ (corner.y * u_surfaceClipBasisNorth);
|
|
23594
|
+
vec4 clip = u_surfaceClipMatrix * vec4(1.0, corner.x, corner.y, 0.0);
|
|
23000
23595
|
clip.z += u_surfaceDepthBias * clip.w;
|
|
23001
23596
|
return clip;
|
|
23002
23597
|
}
|
|
@@ -23004,7 +23599,7 @@ void main() {
|
|
|
23004
23599
|
v_uv = a_uv;
|
|
23005
23600
|
vec4 position;
|
|
23006
23601
|
if (u_billboardMode > 0.5) {
|
|
23007
|
-
vec2 screenPosition = computeBillboardCorner(
|
|
23602
|
+
vec2 screenPosition = computeBillboardCorner(a_position.xy);
|
|
23008
23603
|
position = vec4(screenPosition, 0.0, 1.0);
|
|
23009
23604
|
} else if (u_surfaceMode > 0.5) {
|
|
23010
23605
|
vec2 baseCorner = vec2(a_position.x, a_position.y);
|
|
@@ -23144,9 +23739,533 @@ const createShaderProgram = (glContext, vertexSource, fragmentSource) => {
|
|
|
23144
23739
|
if (!glContext.getProgramParameter(program, glContext.LINK_STATUS)) {
|
|
23145
23740
|
const info = (_a = glContext.getProgramInfoLog(program)) != null ? _a : "unknown error";
|
|
23146
23741
|
glContext.deleteProgram(program);
|
|
23147
|
-
throw new Error(`Program link failed: ${info}`);
|
|
23148
|
-
}
|
|
23149
|
-
return program;
|
|
23742
|
+
throw new Error(`Program link failed: ${info}`);
|
|
23743
|
+
}
|
|
23744
|
+
return program;
|
|
23745
|
+
};
|
|
23746
|
+
const SURFACE_CLIP_MATRIX_IDENTITY = new Float32Array([
|
|
23747
|
+
0,
|
|
23748
|
+
0,
|
|
23749
|
+
0,
|
|
23750
|
+
1,
|
|
23751
|
+
0,
|
|
23752
|
+
0,
|
|
23753
|
+
0,
|
|
23754
|
+
0,
|
|
23755
|
+
0,
|
|
23756
|
+
0,
|
|
23757
|
+
0,
|
|
23758
|
+
0,
|
|
23759
|
+
0,
|
|
23760
|
+
0,
|
|
23761
|
+
0,
|
|
23762
|
+
0
|
|
23763
|
+
]);
|
|
23764
|
+
const FLOATS_PER_VERTEX = VERTEX_COMPONENT_COUNT;
|
|
23765
|
+
const FLOATS_PER_SPRITE = QUAD_VERTEX_COUNT * VERTEX_COMPONENT_COUNT;
|
|
23766
|
+
const createSpriteDrawProgram = (glContext) => {
|
|
23767
|
+
const vertexBuffer = glContext.createBuffer();
|
|
23768
|
+
if (!vertexBuffer) {
|
|
23769
|
+
throw new Error("Failed to create vertex buffer.");
|
|
23770
|
+
}
|
|
23771
|
+
glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);
|
|
23772
|
+
glContext.bufferData(
|
|
23773
|
+
glContext.ARRAY_BUFFER,
|
|
23774
|
+
INITIAL_QUAD_VERTICES,
|
|
23775
|
+
glContext.DYNAMIC_DRAW
|
|
23776
|
+
);
|
|
23777
|
+
let vertexBufferCapacityFloats = INITIAL_QUAD_VERTICES.length;
|
|
23778
|
+
const program = createShaderProgram(
|
|
23779
|
+
glContext,
|
|
23780
|
+
VERTEX_SHADER_SOURCE,
|
|
23781
|
+
FRAGMENT_SHADER_SOURCE
|
|
23782
|
+
);
|
|
23783
|
+
glContext.useProgram(program);
|
|
23784
|
+
const attribPositionLocation = glContext.getAttribLocation(
|
|
23785
|
+
program,
|
|
23786
|
+
"a_position"
|
|
23787
|
+
);
|
|
23788
|
+
const attribUvLocation = glContext.getAttribLocation(program, "a_uv");
|
|
23789
|
+
if (attribPositionLocation === -1 || attribUvLocation === -1) {
|
|
23790
|
+
glContext.deleteBuffer(vertexBuffer);
|
|
23791
|
+
glContext.deleteProgram(program);
|
|
23792
|
+
throw new Error("Failed to acquire attribute locations.");
|
|
23793
|
+
}
|
|
23794
|
+
const uniformTextureLocation = glContext.getUniformLocation(
|
|
23795
|
+
program,
|
|
23796
|
+
"u_texture"
|
|
23797
|
+
);
|
|
23798
|
+
const uniformOpacityLocation = glContext.getUniformLocation(
|
|
23799
|
+
program,
|
|
23800
|
+
"u_opacity"
|
|
23801
|
+
);
|
|
23802
|
+
const uniformScreenToClipScaleLocation = glContext.getUniformLocation(
|
|
23803
|
+
program,
|
|
23804
|
+
"u_screenToClipScale"
|
|
23805
|
+
);
|
|
23806
|
+
const uniformScreenToClipOffsetLocation = glContext.getUniformLocation(
|
|
23807
|
+
program,
|
|
23808
|
+
"u_screenToClipOffset"
|
|
23809
|
+
);
|
|
23810
|
+
const uniformBillboardModeLocation = glContext.getUniformLocation(
|
|
23811
|
+
program,
|
|
23812
|
+
"u_billboardMode"
|
|
23813
|
+
);
|
|
23814
|
+
const uniformBillboardCenterLocation = glContext.getUniformLocation(
|
|
23815
|
+
program,
|
|
23816
|
+
"u_billboardCenter"
|
|
23817
|
+
);
|
|
23818
|
+
const uniformBillboardHalfSizeLocation = glContext.getUniformLocation(
|
|
23819
|
+
program,
|
|
23820
|
+
"u_billboardHalfSize"
|
|
23821
|
+
);
|
|
23822
|
+
const uniformBillboardAnchorLocation = glContext.getUniformLocation(
|
|
23823
|
+
program,
|
|
23824
|
+
"u_billboardAnchor"
|
|
23825
|
+
);
|
|
23826
|
+
const uniformBillboardSinCosLocation = glContext.getUniformLocation(
|
|
23827
|
+
program,
|
|
23828
|
+
"u_billboardSinCos"
|
|
23829
|
+
);
|
|
23830
|
+
const uniformSurfaceModeLocation = glContext.getUniformLocation(
|
|
23831
|
+
program,
|
|
23832
|
+
"u_surfaceMode"
|
|
23833
|
+
);
|
|
23834
|
+
const uniformSurfaceDepthBiasLocation = glContext.getUniformLocation(
|
|
23835
|
+
program,
|
|
23836
|
+
"u_surfaceDepthBias"
|
|
23837
|
+
);
|
|
23838
|
+
const uniformSurfaceClipEnabledLocation = glContext.getUniformLocation(
|
|
23839
|
+
program,
|
|
23840
|
+
"u_surfaceClipEnabled"
|
|
23841
|
+
);
|
|
23842
|
+
const uniformSurfaceClipMatrixLocation = glContext.getUniformLocation(
|
|
23843
|
+
program,
|
|
23844
|
+
"u_surfaceClipMatrix"
|
|
23845
|
+
);
|
|
23846
|
+
if (!uniformTextureLocation || !uniformOpacityLocation || !uniformScreenToClipScaleLocation || !uniformScreenToClipOffsetLocation || !uniformBillboardModeLocation || !uniformBillboardCenterLocation || !uniformBillboardHalfSizeLocation || !uniformBillboardAnchorLocation || !uniformBillboardSinCosLocation || !uniformSurfaceModeLocation || !uniformSurfaceDepthBiasLocation || !uniformSurfaceClipEnabledLocation || !uniformSurfaceClipMatrixLocation) {
|
|
23847
|
+
glContext.deleteBuffer(vertexBuffer);
|
|
23848
|
+
glContext.deleteProgram(program);
|
|
23849
|
+
throw new Error("Failed to acquire uniform locations.");
|
|
23850
|
+
}
|
|
23851
|
+
glContext.uniform1i(uniformTextureLocation, 0);
|
|
23852
|
+
glContext.uniform1f(uniformOpacityLocation, 1);
|
|
23853
|
+
glContext.uniform2f(uniformScreenToClipScaleLocation, 1, 1);
|
|
23854
|
+
glContext.uniform2f(uniformScreenToClipOffsetLocation, 0, 0);
|
|
23855
|
+
glContext.uniform1f(uniformSurfaceClipEnabledLocation, 0);
|
|
23856
|
+
glContext.uniformMatrix4fv(
|
|
23857
|
+
uniformSurfaceClipMatrixLocation,
|
|
23858
|
+
false,
|
|
23859
|
+
SURFACE_CLIP_MATRIX_IDENTITY
|
|
23860
|
+
);
|
|
23861
|
+
glContext.uniform1f(uniformBillboardModeLocation, 0);
|
|
23862
|
+
glContext.uniform2f(uniformBillboardCenterLocation, 0, 0);
|
|
23863
|
+
glContext.uniform2f(uniformBillboardHalfSizeLocation, 0, 0);
|
|
23864
|
+
glContext.uniform2f(uniformBillboardAnchorLocation, 0, 0);
|
|
23865
|
+
glContext.uniform2f(uniformBillboardSinCosLocation, 0, 1);
|
|
23866
|
+
glContext.uniform1f(uniformSurfaceModeLocation, 0);
|
|
23867
|
+
glContext.uniform1f(uniformSurfaceDepthBiasLocation, 0);
|
|
23868
|
+
const vertexBatchOffsets = /* @__PURE__ */ new Map();
|
|
23869
|
+
let batchedVertexScratch = new Float32Array(FLOATS_PER_SPRITE);
|
|
23870
|
+
const ensureVertexBatchCapacity = (requiredFloatCount) => {
|
|
23871
|
+
if (batchedVertexScratch.length >= requiredFloatCount) {
|
|
23872
|
+
return;
|
|
23873
|
+
}
|
|
23874
|
+
let capacity = batchedVertexScratch.length || FLOATS_PER_SPRITE;
|
|
23875
|
+
while (capacity < requiredFloatCount) {
|
|
23876
|
+
capacity *= 2;
|
|
23877
|
+
}
|
|
23878
|
+
batchedVertexScratch = new Float32Array(capacity);
|
|
23879
|
+
};
|
|
23880
|
+
const ensureVertexBufferCapacity = (requiredFloatCount) => {
|
|
23881
|
+
if (requiredFloatCount <= vertexBufferCapacityFloats) {
|
|
23882
|
+
return;
|
|
23883
|
+
}
|
|
23884
|
+
let capacity = Math.max(vertexBufferCapacityFloats, FLOATS_PER_SPRITE);
|
|
23885
|
+
while (capacity < requiredFloatCount) {
|
|
23886
|
+
capacity *= 2;
|
|
23887
|
+
}
|
|
23888
|
+
glContext.bufferData(
|
|
23889
|
+
glContext.ARRAY_BUFFER,
|
|
23890
|
+
capacity * FLOAT_SIZE,
|
|
23891
|
+
glContext.DYNAMIC_DRAW
|
|
23892
|
+
);
|
|
23893
|
+
vertexBufferCapacityFloats = capacity;
|
|
23894
|
+
};
|
|
23895
|
+
const orphanVertexBuffer = () => {
|
|
23896
|
+
glContext.bufferData(
|
|
23897
|
+
glContext.ARRAY_BUFFER,
|
|
23898
|
+
vertexBufferCapacityFloats * FLOAT_SIZE,
|
|
23899
|
+
glContext.DYNAMIC_DRAW
|
|
23900
|
+
);
|
|
23901
|
+
};
|
|
23902
|
+
let currentScaleX = Number.NaN;
|
|
23903
|
+
let currentScaleY = Number.NaN;
|
|
23904
|
+
let currentOffsetX = Number.NaN;
|
|
23905
|
+
let currentOffsetY = Number.NaN;
|
|
23906
|
+
let currentSurfaceMode = Number.NaN;
|
|
23907
|
+
let currentSurfaceClipEnabled = Number.NaN;
|
|
23908
|
+
const currentSurfaceClipMatrix = new Float32Array(16);
|
|
23909
|
+
currentSurfaceClipMatrix.fill(Number.NaN);
|
|
23910
|
+
const surfaceClipMatrixScratch = new Float32Array(16);
|
|
23911
|
+
let currentSurfaceDepthBias = Number.NaN;
|
|
23912
|
+
let currentBillboardMode = Number.NaN;
|
|
23913
|
+
const currentBillboardCenter = { x: Number.NaN, y: Number.NaN };
|
|
23914
|
+
const currentBillboardHalfSize = { x: Number.NaN, y: Number.NaN };
|
|
23915
|
+
const currentBillboardAnchor = { x: Number.NaN, y: Number.NaN };
|
|
23916
|
+
const currentBillboardSinCos = { x: Number.NaN, y: Number.NaN };
|
|
23917
|
+
let currentOpacity = Number.NaN;
|
|
23918
|
+
let currentBoundTexture = null;
|
|
23919
|
+
const resetFrameState = () => {
|
|
23920
|
+
currentScaleX = Number.NaN;
|
|
23921
|
+
currentScaleY = Number.NaN;
|
|
23922
|
+
currentOffsetX = Number.NaN;
|
|
23923
|
+
currentOffsetY = Number.NaN;
|
|
23924
|
+
currentSurfaceMode = Number.NaN;
|
|
23925
|
+
currentSurfaceClipEnabled = Number.NaN;
|
|
23926
|
+
currentSurfaceClipMatrix.fill(Number.NaN);
|
|
23927
|
+
currentSurfaceDepthBias = Number.NaN;
|
|
23928
|
+
currentBillboardMode = Number.NaN;
|
|
23929
|
+
currentBillboardCenter.x = Number.NaN;
|
|
23930
|
+
currentBillboardCenter.y = Number.NaN;
|
|
23931
|
+
currentBillboardHalfSize.x = Number.NaN;
|
|
23932
|
+
currentBillboardHalfSize.y = Number.NaN;
|
|
23933
|
+
currentBillboardAnchor.x = Number.NaN;
|
|
23934
|
+
currentBillboardAnchor.y = Number.NaN;
|
|
23935
|
+
currentBillboardSinCos.x = Number.NaN;
|
|
23936
|
+
currentBillboardSinCos.y = Number.NaN;
|
|
23937
|
+
currentOpacity = Number.NaN;
|
|
23938
|
+
currentBoundTexture = null;
|
|
23939
|
+
vertexBatchOffsets.clear();
|
|
23940
|
+
};
|
|
23941
|
+
const matricesEqual = (a, b) => {
|
|
23942
|
+
for (let index = 0; index < a.length; index++) {
|
|
23943
|
+
if (a[index] !== b[index]) {
|
|
23944
|
+
return false;
|
|
23945
|
+
}
|
|
23946
|
+
}
|
|
23947
|
+
return true;
|
|
23948
|
+
};
|
|
23949
|
+
const writeSurfaceClipMatrix = (target, inputs) => {
|
|
23950
|
+
const center = inputs.clipCenter;
|
|
23951
|
+
const basisEast = inputs.clipBasisEast;
|
|
23952
|
+
const basisNorth = inputs.clipBasisNorth;
|
|
23953
|
+
target[0] = center.x;
|
|
23954
|
+
target[1] = center.y;
|
|
23955
|
+
target[2] = center.z;
|
|
23956
|
+
target[3] = center.w;
|
|
23957
|
+
target[4] = basisEast.x;
|
|
23958
|
+
target[5] = basisEast.y;
|
|
23959
|
+
target[6] = basisEast.z;
|
|
23960
|
+
target[7] = basisEast.w;
|
|
23961
|
+
target[8] = basisNorth.x;
|
|
23962
|
+
target[9] = basisNorth.y;
|
|
23963
|
+
target[10] = basisNorth.z;
|
|
23964
|
+
target[11] = basisNorth.w;
|
|
23965
|
+
target[12] = 0;
|
|
23966
|
+
target[13] = 0;
|
|
23967
|
+
target[14] = 0;
|
|
23968
|
+
target[15] = 0;
|
|
23969
|
+
};
|
|
23970
|
+
const applyScreenToClipUniforms = (scaleX, scaleY, offsetX, offsetY) => {
|
|
23971
|
+
if (scaleX !== currentScaleX || scaleY !== currentScaleY || offsetX !== currentOffsetX || offsetY !== currentOffsetY) {
|
|
23972
|
+
glContext.uniform2f(uniformScreenToClipScaleLocation, scaleX, scaleY);
|
|
23973
|
+
glContext.uniform2f(uniformScreenToClipOffsetLocation, offsetX, offsetY);
|
|
23974
|
+
currentScaleX = scaleX;
|
|
23975
|
+
currentScaleY = scaleY;
|
|
23976
|
+
currentOffsetX = offsetX;
|
|
23977
|
+
currentOffsetY = offsetY;
|
|
23978
|
+
}
|
|
23979
|
+
};
|
|
23980
|
+
const applySurfaceMode = (enabled) => {
|
|
23981
|
+
const value = enabled ? 1 : 0;
|
|
23982
|
+
if (value !== currentSurfaceMode) {
|
|
23983
|
+
glContext.uniform1f(uniformSurfaceModeLocation, value);
|
|
23984
|
+
currentSurfaceMode = value;
|
|
23985
|
+
}
|
|
23986
|
+
};
|
|
23987
|
+
const applySurfaceClipUniforms = (enabled, inputs) => {
|
|
23988
|
+
const hasInputs = Boolean(enabled && inputs);
|
|
23989
|
+
const value = hasInputs ? 1 : 0;
|
|
23990
|
+
if (value !== currentSurfaceClipEnabled) {
|
|
23991
|
+
glContext.uniform1f(uniformSurfaceClipEnabledLocation, value);
|
|
23992
|
+
currentSurfaceClipEnabled = value;
|
|
23993
|
+
}
|
|
23994
|
+
if (!hasInputs || !inputs) {
|
|
23995
|
+
return;
|
|
23996
|
+
}
|
|
23997
|
+
writeSurfaceClipMatrix(surfaceClipMatrixScratch, inputs);
|
|
23998
|
+
if (!matricesEqual(surfaceClipMatrixScratch, currentSurfaceClipMatrix)) {
|
|
23999
|
+
glContext.uniformMatrix4fv(
|
|
24000
|
+
uniformSurfaceClipMatrixLocation,
|
|
24001
|
+
false,
|
|
24002
|
+
surfaceClipMatrixScratch
|
|
24003
|
+
);
|
|
24004
|
+
currentSurfaceClipMatrix.set(surfaceClipMatrixScratch);
|
|
24005
|
+
}
|
|
24006
|
+
};
|
|
24007
|
+
const beginFrame = () => {
|
|
24008
|
+
glContext.useProgram(program);
|
|
24009
|
+
glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);
|
|
24010
|
+
glContext.enableVertexAttribArray(attribPositionLocation);
|
|
24011
|
+
glContext.vertexAttribPointer(
|
|
24012
|
+
attribPositionLocation,
|
|
24013
|
+
POSITION_COMPONENT_COUNT,
|
|
24014
|
+
glContext.FLOAT,
|
|
24015
|
+
false,
|
|
24016
|
+
VERTEX_STRIDE,
|
|
24017
|
+
0
|
|
24018
|
+
);
|
|
24019
|
+
glContext.enableVertexAttribArray(attribUvLocation);
|
|
24020
|
+
glContext.vertexAttribPointer(
|
|
24021
|
+
attribUvLocation,
|
|
24022
|
+
UV_COMPONENT_COUNT,
|
|
24023
|
+
glContext.FLOAT,
|
|
24024
|
+
false,
|
|
24025
|
+
VERTEX_STRIDE,
|
|
24026
|
+
UV_OFFSET
|
|
24027
|
+
);
|
|
24028
|
+
resetFrameState();
|
|
24029
|
+
};
|
|
24030
|
+
const uploadVertexBatch = (items) => {
|
|
24031
|
+
vertexBatchOffsets.clear();
|
|
24032
|
+
if (items.length === 0) {
|
|
24033
|
+
return;
|
|
24034
|
+
}
|
|
24035
|
+
let requiredFloatCount = 0;
|
|
24036
|
+
for (const prepared of items) {
|
|
24037
|
+
requiredFloatCount += prepared.vertexData.length;
|
|
24038
|
+
}
|
|
24039
|
+
ensureVertexBatchCapacity(requiredFloatCount);
|
|
24040
|
+
let floatOffset = 0;
|
|
24041
|
+
let vertexOffset = 0;
|
|
24042
|
+
for (const prepared of items) {
|
|
24043
|
+
const data = prepared.vertexData;
|
|
24044
|
+
batchedVertexScratch.set(data, floatOffset);
|
|
24045
|
+
vertexBatchOffsets.set(prepared, vertexOffset);
|
|
24046
|
+
floatOffset += data.length;
|
|
24047
|
+
vertexOffset += data.length / FLOATS_PER_VERTEX;
|
|
24048
|
+
}
|
|
24049
|
+
const uploadView = batchedVertexScratch.subarray(0, floatOffset);
|
|
24050
|
+
ensureVertexBufferCapacity(uploadView.length);
|
|
24051
|
+
orphanVertexBuffer();
|
|
24052
|
+
glContext.bufferSubData(glContext.ARRAY_BUFFER, 0, uploadView);
|
|
24053
|
+
};
|
|
24054
|
+
const draw = (prepared) => {
|
|
24055
|
+
const { screenToClip } = prepared;
|
|
24056
|
+
applyScreenToClipUniforms(
|
|
24057
|
+
screenToClip.scaleX,
|
|
24058
|
+
screenToClip.scaleY,
|
|
24059
|
+
screenToClip.offsetX,
|
|
24060
|
+
screenToClip.offsetY
|
|
24061
|
+
);
|
|
24062
|
+
applySurfaceMode(prepared.useShaderSurface);
|
|
24063
|
+
const surfaceInputs = prepared.surfaceShaderInputs;
|
|
24064
|
+
if (prepared.useShaderSurface && surfaceInputs) {
|
|
24065
|
+
const depthBias = surfaceInputs.depthBiasNdc;
|
|
24066
|
+
if (depthBias !== currentSurfaceDepthBias) {
|
|
24067
|
+
glContext.uniform1f(uniformSurfaceDepthBiasLocation, depthBias);
|
|
24068
|
+
currentSurfaceDepthBias = depthBias;
|
|
24069
|
+
}
|
|
24070
|
+
applySurfaceClipUniforms(
|
|
24071
|
+
prepared.surfaceClipEnabled,
|
|
24072
|
+
prepared.surfaceClipEnabled ? surfaceInputs : null
|
|
24073
|
+
);
|
|
24074
|
+
} else {
|
|
24075
|
+
if (currentSurfaceDepthBias !== 0) {
|
|
24076
|
+
glContext.uniform1f(uniformSurfaceDepthBiasLocation, 0);
|
|
24077
|
+
currentSurfaceDepthBias = 0;
|
|
24078
|
+
}
|
|
24079
|
+
applySurfaceClipUniforms(false, null);
|
|
24080
|
+
}
|
|
24081
|
+
const billboardMode = prepared.useShaderBillboard ? 1 : 0;
|
|
24082
|
+
if (billboardMode !== currentBillboardMode) {
|
|
24083
|
+
glContext.uniform1f(uniformBillboardModeLocation, billboardMode);
|
|
24084
|
+
currentBillboardMode = billboardMode;
|
|
24085
|
+
}
|
|
24086
|
+
if (prepared.useShaderBillboard && prepared.billboardUniforms) {
|
|
24087
|
+
const uniforms = prepared.billboardUniforms;
|
|
24088
|
+
if (uniforms.center.x !== currentBillboardCenter.x || uniforms.center.y !== currentBillboardCenter.y) {
|
|
24089
|
+
glContext.uniform2f(
|
|
24090
|
+
uniformBillboardCenterLocation,
|
|
24091
|
+
uniforms.center.x,
|
|
24092
|
+
uniforms.center.y
|
|
24093
|
+
);
|
|
24094
|
+
currentBillboardCenter.x = uniforms.center.x;
|
|
24095
|
+
currentBillboardCenter.y = uniforms.center.y;
|
|
24096
|
+
}
|
|
24097
|
+
if (uniforms.halfWidth !== currentBillboardHalfSize.x || uniforms.halfHeight !== currentBillboardHalfSize.y) {
|
|
24098
|
+
glContext.uniform2f(
|
|
24099
|
+
uniformBillboardHalfSizeLocation,
|
|
24100
|
+
uniforms.halfWidth,
|
|
24101
|
+
uniforms.halfHeight
|
|
24102
|
+
);
|
|
24103
|
+
currentBillboardHalfSize.x = uniforms.halfWidth;
|
|
24104
|
+
currentBillboardHalfSize.y = uniforms.halfHeight;
|
|
24105
|
+
}
|
|
24106
|
+
if (uniforms.anchor.x !== currentBillboardAnchor.x || uniforms.anchor.y !== currentBillboardAnchor.y) {
|
|
24107
|
+
glContext.uniform2f(
|
|
24108
|
+
uniformBillboardAnchorLocation,
|
|
24109
|
+
uniforms.anchor.x,
|
|
24110
|
+
uniforms.anchor.y
|
|
24111
|
+
);
|
|
24112
|
+
currentBillboardAnchor.x = uniforms.anchor.x;
|
|
24113
|
+
currentBillboardAnchor.y = uniforms.anchor.y;
|
|
24114
|
+
}
|
|
24115
|
+
if (uniforms.sin !== currentBillboardSinCos.x || uniforms.cos !== currentBillboardSinCos.y) {
|
|
24116
|
+
glContext.uniform2f(
|
|
24117
|
+
uniformBillboardSinCosLocation,
|
|
24118
|
+
uniforms.sin,
|
|
24119
|
+
uniforms.cos
|
|
24120
|
+
);
|
|
24121
|
+
currentBillboardSinCos.x = uniforms.sin;
|
|
24122
|
+
currentBillboardSinCos.y = uniforms.cos;
|
|
24123
|
+
}
|
|
24124
|
+
}
|
|
24125
|
+
const texture = prepared.imageResource.texture;
|
|
24126
|
+
if (!texture) {
|
|
24127
|
+
return false;
|
|
24128
|
+
}
|
|
24129
|
+
if (prepared.opacity !== currentOpacity) {
|
|
24130
|
+
glContext.uniform1f(uniformOpacityLocation, prepared.opacity);
|
|
24131
|
+
currentOpacity = prepared.opacity;
|
|
24132
|
+
}
|
|
24133
|
+
if (currentBoundTexture !== texture) {
|
|
24134
|
+
glContext.activeTexture(glContext.TEXTURE0);
|
|
24135
|
+
glContext.bindTexture(glContext.TEXTURE_2D, texture);
|
|
24136
|
+
currentBoundTexture = texture;
|
|
24137
|
+
}
|
|
24138
|
+
const vertexOffset = vertexBatchOffsets.get(prepared);
|
|
24139
|
+
if (vertexOffset === void 0) {
|
|
24140
|
+
return false;
|
|
24141
|
+
}
|
|
24142
|
+
glContext.drawArrays(glContext.TRIANGLES, vertexOffset, QUAD_VERTEX_COUNT);
|
|
24143
|
+
return true;
|
|
24144
|
+
};
|
|
24145
|
+
const release = () => {
|
|
24146
|
+
glContext.deleteBuffer(vertexBuffer);
|
|
24147
|
+
glContext.deleteProgram(program);
|
|
24148
|
+
};
|
|
24149
|
+
return {
|
|
24150
|
+
beginFrame,
|
|
24151
|
+
uploadVertexBatch,
|
|
24152
|
+
draw,
|
|
24153
|
+
release
|
|
24154
|
+
};
|
|
24155
|
+
};
|
|
24156
|
+
const createDebugOutlineRenderer = (glContext) => {
|
|
24157
|
+
const program = createShaderProgram(
|
|
24158
|
+
glContext,
|
|
24159
|
+
DEBUG_OUTLINE_VERTEX_SHADER_SOURCE,
|
|
24160
|
+
DEBUG_OUTLINE_FRAGMENT_SHADER_SOURCE
|
|
24161
|
+
);
|
|
24162
|
+
const attribPositionLocation = glContext.getAttribLocation(
|
|
24163
|
+
program,
|
|
24164
|
+
"a_position"
|
|
24165
|
+
);
|
|
24166
|
+
if (attribPositionLocation === -1) {
|
|
24167
|
+
glContext.deleteProgram(program);
|
|
24168
|
+
throw new Error("Failed to acquire debug attribute location.");
|
|
24169
|
+
}
|
|
24170
|
+
const uniformColorLocation = glContext.getUniformLocation(program, "u_color");
|
|
24171
|
+
const uniformScreenToClipScaleLocation = glContext.getUniformLocation(
|
|
24172
|
+
program,
|
|
24173
|
+
"u_screenToClipScale"
|
|
24174
|
+
);
|
|
24175
|
+
const uniformScreenToClipOffsetLocation = glContext.getUniformLocation(
|
|
24176
|
+
program,
|
|
24177
|
+
"u_screenToClipOffset"
|
|
24178
|
+
);
|
|
24179
|
+
if (!uniformColorLocation || !uniformScreenToClipScaleLocation || !uniformScreenToClipOffsetLocation) {
|
|
24180
|
+
glContext.deleteProgram(program);
|
|
24181
|
+
throw new Error("Failed to acquire debug uniforms.");
|
|
24182
|
+
}
|
|
24183
|
+
const vertexBuffer = glContext.createBuffer();
|
|
24184
|
+
if (!vertexBuffer) {
|
|
24185
|
+
glContext.deleteProgram(program);
|
|
24186
|
+
throw new Error("Failed to create debug vertex buffer.");
|
|
24187
|
+
}
|
|
24188
|
+
glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);
|
|
24189
|
+
glContext.bufferData(
|
|
24190
|
+
glContext.ARRAY_BUFFER,
|
|
24191
|
+
DEBUG_OUTLINE_VERTEX_SCRATCH,
|
|
24192
|
+
glContext.DYNAMIC_DRAW
|
|
24193
|
+
);
|
|
24194
|
+
glContext.bindBuffer(glContext.ARRAY_BUFFER, null);
|
|
24195
|
+
let active = false;
|
|
24196
|
+
const begin = (screenToClipScaleX, screenToClipScaleY, screenToClipOffsetX, screenToClipOffsetY) => {
|
|
24197
|
+
glContext.useProgram(program);
|
|
24198
|
+
glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);
|
|
24199
|
+
glContext.enableVertexAttribArray(attribPositionLocation);
|
|
24200
|
+
glContext.vertexAttribPointer(
|
|
24201
|
+
attribPositionLocation,
|
|
24202
|
+
DEBUG_OUTLINE_POSITION_COMPONENT_COUNT,
|
|
24203
|
+
glContext.FLOAT,
|
|
24204
|
+
false,
|
|
24205
|
+
DEBUG_OUTLINE_VERTEX_STRIDE,
|
|
24206
|
+
0
|
|
24207
|
+
);
|
|
24208
|
+
glContext.disable(glContext.DEPTH_TEST);
|
|
24209
|
+
glContext.depthMask(false);
|
|
24210
|
+
glContext.uniform4f(
|
|
24211
|
+
uniformColorLocation,
|
|
24212
|
+
DEBUG_OUTLINE_COLOR[0],
|
|
24213
|
+
DEBUG_OUTLINE_COLOR[1],
|
|
24214
|
+
DEBUG_OUTLINE_COLOR[2],
|
|
24215
|
+
DEBUG_OUTLINE_COLOR[3]
|
|
24216
|
+
);
|
|
24217
|
+
glContext.uniform2f(
|
|
24218
|
+
uniformScreenToClipScaleLocation,
|
|
24219
|
+
screenToClipScaleX,
|
|
24220
|
+
screenToClipScaleY
|
|
24221
|
+
);
|
|
24222
|
+
glContext.uniform2f(
|
|
24223
|
+
uniformScreenToClipOffsetLocation,
|
|
24224
|
+
screenToClipOffsetX,
|
|
24225
|
+
screenToClipOffsetY
|
|
24226
|
+
);
|
|
24227
|
+
active = true;
|
|
24228
|
+
};
|
|
24229
|
+
const drawOutline = (corners) => {
|
|
24230
|
+
if (!active) {
|
|
24231
|
+
return;
|
|
24232
|
+
}
|
|
24233
|
+
let writeOffset = 0;
|
|
24234
|
+
for (const cornerIndex of DEBUG_OUTLINE_CORNER_ORDER) {
|
|
24235
|
+
const corner = corners[cornerIndex];
|
|
24236
|
+
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = corner.x;
|
|
24237
|
+
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = corner.y;
|
|
24238
|
+
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = 0;
|
|
24239
|
+
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = 1;
|
|
24240
|
+
}
|
|
24241
|
+
glContext.bufferSubData(
|
|
24242
|
+
glContext.ARRAY_BUFFER,
|
|
24243
|
+
0,
|
|
24244
|
+
DEBUG_OUTLINE_VERTEX_SCRATCH
|
|
24245
|
+
);
|
|
24246
|
+
glContext.drawArrays(glContext.LINE_LOOP, 0, DEBUG_OUTLINE_VERTEX_COUNT);
|
|
24247
|
+
};
|
|
24248
|
+
const end = () => {
|
|
24249
|
+
if (!active) {
|
|
24250
|
+
return;
|
|
24251
|
+
}
|
|
24252
|
+
glContext.depthMask(true);
|
|
24253
|
+
glContext.enable(glContext.DEPTH_TEST);
|
|
24254
|
+
glContext.disableVertexAttribArray(attribPositionLocation);
|
|
24255
|
+
glContext.bindBuffer(glContext.ARRAY_BUFFER, null);
|
|
24256
|
+
active = false;
|
|
24257
|
+
};
|
|
24258
|
+
const release = () => {
|
|
24259
|
+
end();
|
|
24260
|
+
glContext.deleteBuffer(vertexBuffer);
|
|
24261
|
+
glContext.deleteProgram(program);
|
|
24262
|
+
};
|
|
24263
|
+
return {
|
|
24264
|
+
begin,
|
|
24265
|
+
drawOutline,
|
|
24266
|
+
end,
|
|
24267
|
+
release
|
|
24268
|
+
};
|
|
23150
24269
|
};
|
|
23151
24270
|
function copy(out, a) {
|
|
23152
24271
|
out[0] = a[0];
|
|
@@ -23613,543 +24732,200 @@ const prepareProjectionState = (params) => {
|
|
|
23613
24732
|
return {
|
|
23614
24733
|
zoom,
|
|
23615
24734
|
mercatorMatrix,
|
|
23616
|
-
pixelMatrix,
|
|
23617
|
-
pixelMatrixInverse,
|
|
23618
|
-
worldSize,
|
|
23619
|
-
pixelPerMeter,
|
|
23620
|
-
cameraToCenterDistance,
|
|
23621
|
-
clipContext
|
|
23622
|
-
};
|
|
23623
|
-
};
|
|
23624
|
-
const createProjectionHost = (params) => {
|
|
23625
|
-
let state = prepareProjectionState(params);
|
|
23626
|
-
const getZoom = () => state.zoom;
|
|
23627
|
-
const getClipContext = () => state.clipContext;
|
|
23628
|
-
const fromLngLat = (location2) => {
|
|
23629
|
-
const lng = toFiniteOr$1(location2.lng, 0);
|
|
23630
|
-
const lat = clamp(
|
|
23631
|
-
toFiniteOr$1(location2.lat, 0),
|
|
23632
|
-
-MAX_MERCATOR_LATITUDE,
|
|
23633
|
-
MAX_MERCATOR_LATITUDE
|
|
23634
|
-
);
|
|
23635
|
-
const altitude = toFiniteOr$1(location2.z, 0);
|
|
23636
|
-
return {
|
|
23637
|
-
x: mercatorXfromLng(lng),
|
|
23638
|
-
y: mercatorYfromLat(lat),
|
|
23639
|
-
z: mercatorZfromAltitude(altitude, lat)
|
|
23640
|
-
};
|
|
23641
|
-
};
|
|
23642
|
-
const project = (location2) => {
|
|
23643
|
-
if (!state.pixelMatrix) {
|
|
23644
|
-
return null;
|
|
23645
|
-
}
|
|
23646
|
-
const mercator = fromLngLat(location2);
|
|
23647
|
-
const worldX = mercator.x * state.worldSize;
|
|
23648
|
-
const worldY = mercator.y * state.worldSize;
|
|
23649
|
-
const elevation = toFiniteOr$1(location2.z, 0);
|
|
23650
|
-
const [x, y, , w] = multiplyMatrixAndVector(
|
|
23651
|
-
state.pixelMatrix,
|
|
23652
|
-
worldX,
|
|
23653
|
-
worldY,
|
|
23654
|
-
elevation,
|
|
23655
|
-
1
|
|
23656
|
-
);
|
|
23657
|
-
if (!Number.isFinite(w) || w <= 0) {
|
|
23658
|
-
return null;
|
|
23659
|
-
}
|
|
23660
|
-
const projectedX = x / w;
|
|
23661
|
-
const projectedY = y / w;
|
|
23662
|
-
if (!Number.isFinite(projectedX) || !Number.isFinite(projectedY)) {
|
|
23663
|
-
return null;
|
|
23664
|
-
}
|
|
23665
|
-
return { x: projectedX, y: projectedY };
|
|
23666
|
-
};
|
|
23667
|
-
const unproject = (point) => {
|
|
23668
|
-
if (!state.pixelMatrixInverse) {
|
|
23669
|
-
return null;
|
|
23670
|
-
}
|
|
23671
|
-
const coord0 = multiplyMatrixAndVector(
|
|
23672
|
-
state.pixelMatrixInverse,
|
|
23673
|
-
toFiniteOr$1(point.x, 0),
|
|
23674
|
-
toFiniteOr$1(point.y, 0),
|
|
23675
|
-
0,
|
|
23676
|
-
1
|
|
23677
|
-
);
|
|
23678
|
-
const coord1 = multiplyMatrixAndVector(
|
|
23679
|
-
state.pixelMatrixInverse,
|
|
23680
|
-
toFiniteOr$1(point.x, 0),
|
|
23681
|
-
toFiniteOr$1(point.y, 0),
|
|
23682
|
-
1,
|
|
23683
|
-
1
|
|
23684
|
-
);
|
|
23685
|
-
const w0 = coord0[3];
|
|
23686
|
-
const w1 = coord1[3];
|
|
23687
|
-
if (!Number.isFinite(w0) || !Number.isFinite(w1) || w0 === 0 || w1 === 0) {
|
|
23688
|
-
return null;
|
|
23689
|
-
}
|
|
23690
|
-
const x0 = coord0[0] / w0;
|
|
23691
|
-
const x1 = coord1[0] / w1;
|
|
23692
|
-
const y0 = coord0[1] / w0;
|
|
23693
|
-
const y1 = coord1[1] / w1;
|
|
23694
|
-
const z0 = coord0[2] / w0;
|
|
23695
|
-
const z1 = coord1[2] / w1;
|
|
23696
|
-
const targetZ = 0;
|
|
23697
|
-
const t = z0 === z1 ? 0 : (targetZ - z0) / (z1 - z0);
|
|
23698
|
-
const worldX = x0 + (x1 - x0) * t;
|
|
23699
|
-
const worldY = y0 + (y1 - y0) * t;
|
|
23700
|
-
const mercatorX = worldX / (state.worldSize || 1);
|
|
23701
|
-
const mercatorY = worldY / (state.worldSize || 1);
|
|
23702
|
-
if (!Number.isFinite(mercatorX) || !Number.isFinite(mercatorY)) {
|
|
23703
|
-
return null;
|
|
23704
|
-
}
|
|
23705
|
-
return {
|
|
23706
|
-
lng: lngFromMercatorX(mercatorX),
|
|
23707
|
-
lat: clamp(
|
|
23708
|
-
latFromMercatorY(mercatorY),
|
|
23709
|
-
-MAX_MERCATOR_LATITUDE,
|
|
23710
|
-
MAX_MERCATOR_LATITUDE
|
|
23711
|
-
)
|
|
23712
|
-
};
|
|
23713
|
-
};
|
|
23714
|
-
const calculatePerspectiveRatio = (location2, cachedMercator) => {
|
|
23715
|
-
var _a;
|
|
23716
|
-
if (!state.mercatorMatrix || state.cameraToCenterDistance <= 0) {
|
|
23717
|
-
return 1;
|
|
23718
|
-
}
|
|
23719
|
-
try {
|
|
23720
|
-
const mercator = cachedMercator != null ? cachedMercator : fromLngLat(location2);
|
|
23721
|
-
const [, , , w] = multiplyMatrixAndVector(
|
|
23722
|
-
state.mercatorMatrix,
|
|
23723
|
-
mercator.x,
|
|
23724
|
-
mercator.y,
|
|
23725
|
-
(_a = mercator.z) != null ? _a : 0,
|
|
23726
|
-
1
|
|
23727
|
-
);
|
|
23728
|
-
if (!Number.isFinite(w) || w <= 0) {
|
|
23729
|
-
return 1;
|
|
23730
|
-
}
|
|
23731
|
-
const ratio = state.cameraToCenterDistance / w;
|
|
23732
|
-
return Number.isFinite(ratio) && ratio > 0 ? ratio : 1;
|
|
23733
|
-
} catch (e) {
|
|
23734
|
-
return 1;
|
|
23735
|
-
}
|
|
23736
|
-
};
|
|
23737
|
-
const release = () => {
|
|
23738
|
-
state = void 0;
|
|
23739
|
-
};
|
|
23740
|
-
return {
|
|
23741
|
-
getZoom,
|
|
23742
|
-
getClipContext,
|
|
23743
|
-
fromLngLat,
|
|
23744
|
-
project,
|
|
23745
|
-
unproject,
|
|
23746
|
-
calculatePerspectiveRatio,
|
|
23747
|
-
release
|
|
23748
|
-
};
|
|
23749
|
-
};
|
|
23750
|
-
const createProjectionHostParamsFromMapLibre = (map) => {
|
|
23751
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
23752
|
-
const ensureFinite2 = (value) => typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
23753
|
-
const centerLngLat = map.getCenter();
|
|
23754
|
-
const transform = map.transform;
|
|
23755
|
-
const canvas = typeof map.getCanvas === "function" ? (_a = map.getCanvas()) != null ? _a : null : null;
|
|
23756
|
-
if (!transform) {
|
|
23757
|
-
return {
|
|
23758
|
-
zoom: (_b = ensureFinite2(map.getZoom())) != null ? _b : 0,
|
|
23759
|
-
width: (_c = ensureFinite2(canvas == null ? void 0 : canvas.width)) != null ? _c : 0,
|
|
23760
|
-
height: (_d = ensureFinite2(canvas == null ? void 0 : canvas.height)) != null ? _d : 0,
|
|
23761
|
-
center: { lng: centerLngLat.lng, lat: centerLngLat.lat }
|
|
23762
|
-
};
|
|
23763
|
-
}
|
|
23764
|
-
const width = (_f = (_e = ensureFinite2(transform.width)) != null ? _e : ensureFinite2(canvas == null ? void 0 : canvas.width)) != null ? _f : 0;
|
|
23765
|
-
const height = (_h = (_g = ensureFinite2(transform.height)) != null ? _g : ensureFinite2(canvas == null ? void 0 : canvas.height)) != null ? _h : 0;
|
|
23766
|
-
const zoom = (_j = (_i = ensureFinite2(transform.zoom)) != null ? _i : ensureFinite2(map.getZoom())) != null ? _j : 0;
|
|
23767
|
-
const pitchDeg = (_k = ensureFinite2(transform.pitch)) != null ? _k : ensureFinite2(map.getPitch());
|
|
23768
|
-
const bearingDeg = (_l = ensureFinite2(transform.bearing)) != null ? _l : ensureFinite2(map.getBearing());
|
|
23769
|
-
const rollDeg = ensureFinite2(transform.roll);
|
|
23770
|
-
const fovDeg = ensureFinite2(transform.fov);
|
|
23771
|
-
const centerElevation = ensureFinite2(transform.elevation);
|
|
23772
|
-
const minElevation = ensureFinite2(transform.minElevationForCurrentTile);
|
|
23773
|
-
const cameraToCenterDistance = ensureFinite2(transform.cameraToCenterDistance);
|
|
23774
|
-
const centerOffset = transform.centerOffset;
|
|
23775
|
-
const centerOffsetX = ensureFinite2(centerOffset == null ? void 0 : centerOffset.x);
|
|
23776
|
-
const centerOffsetY = ensureFinite2(centerOffset == null ? void 0 : centerOffset.y);
|
|
23777
|
-
const tileSize = ensureFinite2(transform.tileSize);
|
|
23778
|
-
const autoCalculateNearFarZ = typeof transform.autoCalculateNearFarZ === "boolean" ? transform.autoCalculateNearFarZ : void 0;
|
|
23779
|
-
const nearZOverride = autoCalculateNearFarZ === false ? ensureFinite2(transform.nearZ) : void 0;
|
|
23780
|
-
const farZOverride = autoCalculateNearFarZ === false ? ensureFinite2(transform.farZ) : void 0;
|
|
23781
|
-
return {
|
|
23782
|
-
zoom,
|
|
23783
|
-
width,
|
|
23784
|
-
height,
|
|
23785
|
-
center: {
|
|
23786
|
-
lng: centerLngLat.lng,
|
|
23787
|
-
lat: centerLngLat.lat
|
|
23788
|
-
},
|
|
23789
|
-
...pitchDeg !== void 0 ? { pitchDeg } : {},
|
|
23790
|
-
...bearingDeg !== void 0 ? { bearingDeg } : {},
|
|
23791
|
-
...rollDeg !== void 0 ? { rollDeg } : {},
|
|
23792
|
-
...fovDeg !== void 0 ? { fovDeg } : {},
|
|
23793
|
-
...centerElevation !== void 0 ? { centerElevationMeters: centerElevation } : {},
|
|
23794
|
-
...minElevation !== void 0 ? { minElevationMeters: minElevation } : {},
|
|
23795
|
-
...cameraToCenterDistance !== void 0 ? { cameraToCenterDistance } : {},
|
|
23796
|
-
...centerOffsetX !== void 0 ? { centerOffsetX } : {},
|
|
23797
|
-
...centerOffsetY !== void 0 ? { centerOffsetY } : {},
|
|
23798
|
-
...tileSize !== void 0 ? { tileSize } : {},
|
|
23799
|
-
...autoCalculateNearFarZ !== void 0 ? { autoCalculateNearFarZ } : {},
|
|
23800
|
-
...nearZOverride !== void 0 ? { nearZOverride } : {},
|
|
23801
|
-
...farZOverride !== void 0 ? { farZOverride } : {}
|
|
23802
|
-
};
|
|
23803
|
-
};
|
|
23804
|
-
const USE_SHADER_BILLBOARD_GEOMETRY = true;
|
|
23805
|
-
const ENABLE_NDC_BIAS_SURFACE = true;
|
|
23806
|
-
const BUFFER_POOL_ENTRY_TTL_MS = 5e3;
|
|
23807
|
-
const BUFFER_POOL_SWEEP_INTERVAL_MS = 3e3;
|
|
23808
|
-
const BUFFER_POOL_MAX_REUSE_RATIO = 2;
|
|
23809
|
-
const WASM_BINARY_PATHS = {
|
|
23810
|
-
simd: "./wasm/offloads-simd.wasm",
|
|
23811
|
-
nosimd: "./wasm/offloads-nosimd.wasm"
|
|
23812
|
-
};
|
|
23813
|
-
const isNodeEnvironment = (() => {
|
|
23814
|
-
var _a;
|
|
23815
|
-
const globalProcess = globalThis.process;
|
|
23816
|
-
return !!((_a = globalProcess == null ? void 0 : globalProcess.versions) == null ? void 0 : _a.node);
|
|
23817
|
-
})();
|
|
23818
|
-
const importNodeModule = async (specifier) => await import(
|
|
23819
|
-
/* @vite-ignore */
|
|
23820
|
-
specifier
|
|
23821
|
-
);
|
|
23822
|
-
const createImportFunctionStub = () => {
|
|
23823
|
-
const noop = () => 0;
|
|
23824
|
-
return new Proxy(
|
|
23825
|
-
{},
|
|
23826
|
-
{
|
|
23827
|
-
get: () => noop
|
|
23828
|
-
}
|
|
23829
|
-
);
|
|
23830
|
-
};
|
|
23831
|
-
const loadWasmBinary = async (variant) => {
|
|
23832
|
-
const wasmUrl = new URL(WASM_BINARY_PATHS[variant], import.meta.url);
|
|
23833
|
-
if (typeof fetch === "function") {
|
|
23834
|
-
try {
|
|
23835
|
-
const response2 = await fetch(wasmUrl);
|
|
23836
|
-
if (response2.ok) {
|
|
23837
|
-
return await response2.arrayBuffer();
|
|
23838
|
-
}
|
|
23839
|
-
} catch (e) {
|
|
23840
|
-
}
|
|
23841
|
-
}
|
|
23842
|
-
if (isNodeEnvironment && wasmUrl.protocol === "file:") {
|
|
23843
|
-
const [{ readFile }, { fileURLToPath }] = await Promise.all([
|
|
23844
|
-
importNodeModule("node:fs/promises"),
|
|
23845
|
-
importNodeModule("node:url")
|
|
23846
|
-
]);
|
|
23847
|
-
const filePath = fileURLToPath(wasmUrl);
|
|
23848
|
-
const fileBuffer = await readFile(filePath);
|
|
23849
|
-
const arrayBuffer = fileBuffer.buffer;
|
|
23850
|
-
return arrayBuffer.slice(
|
|
23851
|
-
fileBuffer.byteOffset,
|
|
23852
|
-
fileBuffer.byteOffset + fileBuffer.byteLength
|
|
23853
|
-
);
|
|
23854
|
-
}
|
|
23855
|
-
const response = await fetch(wasmUrl);
|
|
23856
|
-
if (!response.ok) {
|
|
23857
|
-
throw new Error(`Failed to load ${variant} offloads WASM: ${wasmUrl.href}`);
|
|
23858
|
-
}
|
|
23859
|
-
return await response.arrayBuffer();
|
|
24735
|
+
pixelMatrix,
|
|
24736
|
+
pixelMatrixInverse,
|
|
24737
|
+
worldSize,
|
|
24738
|
+
pixelPerMeter,
|
|
24739
|
+
cameraToCenterDistance,
|
|
24740
|
+
clipContext
|
|
24741
|
+
};
|
|
23860
24742
|
};
|
|
23861
|
-
const
|
|
23862
|
-
|
|
23863
|
-
const
|
|
23864
|
-
const
|
|
23865
|
-
const
|
|
23866
|
-
|
|
23867
|
-
|
|
23868
|
-
|
|
23869
|
-
|
|
23870
|
-
|
|
23871
|
-
|
|
23872
|
-
|
|
23873
|
-
|
|
23874
|
-
|
|
23875
|
-
|
|
23876
|
-
|
|
23877
|
-
|
|
23878
|
-
|
|
23879
|
-
const
|
|
23880
|
-
|
|
23881
|
-
|
|
23882
|
-
const calculateBillboardDepthKey2 = (_h = exports._calculateBillboardDepthKey) != null ? _h : exports.calculateBillboardDepthKey;
|
|
23883
|
-
const calculateSurfaceDepthKey2 = (_i = exports._calculateSurfaceDepthKey) != null ? _i : exports.calculateSurfaceDepthKey;
|
|
23884
|
-
const prepareDrawSpriteImages2 = (_j = exports._prepareDrawSpriteImages) != null ? _j : exports.prepareDrawSpriteImages;
|
|
23885
|
-
if (!memory || !malloc || !free || !fromLngLat || !project || !unproject || !calculatePerspectiveRatio || !projectLngLatToClipSpace2 || !calculateBillboardDepthKey2 || !calculateSurfaceDepthKey2 || !prepareDrawSpriteImages2) {
|
|
23886
|
-
throw new Error("Projection host WASM exports are incomplete.");
|
|
23887
|
-
}
|
|
23888
|
-
const pool = /* @__PURE__ */ new Map();
|
|
23889
|
-
let destroyed = false;
|
|
23890
|
-
let sweepTimer;
|
|
23891
|
-
const getNow = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
23892
|
-
const sweepPool = () => {
|
|
23893
|
-
if (destroyed || pool.size === 0) {
|
|
23894
|
-
return;
|
|
24743
|
+
const createProjectionHost = (params) => {
|
|
24744
|
+
let state = prepareProjectionState(params);
|
|
24745
|
+
const getZoom = () => state.zoom;
|
|
24746
|
+
const getClipContext = () => state.clipContext;
|
|
24747
|
+
const fromLngLat = (location2) => {
|
|
24748
|
+
const lng = toFiniteOr$1(location2.lng, 0);
|
|
24749
|
+
const lat = clamp(
|
|
24750
|
+
toFiniteOr$1(location2.lat, 0),
|
|
24751
|
+
-MAX_MERCATOR_LATITUDE,
|
|
24752
|
+
MAX_MERCATOR_LATITUDE
|
|
24753
|
+
);
|
|
24754
|
+
const altitude = toFiniteOr$1(location2.z, 0);
|
|
24755
|
+
return {
|
|
24756
|
+
x: mercatorXfromLng(lng),
|
|
24757
|
+
y: mercatorYfromLat(lat),
|
|
24758
|
+
z: mercatorZfromAltitude(altitude, lat)
|
|
24759
|
+
};
|
|
24760
|
+
};
|
|
24761
|
+
const project = (location2) => {
|
|
24762
|
+
if (!state.pixelMatrix) {
|
|
24763
|
+
return null;
|
|
23895
24764
|
}
|
|
23896
|
-
const
|
|
23897
|
-
const
|
|
23898
|
-
|
|
23899
|
-
|
|
23900
|
-
|
|
23901
|
-
|
|
23902
|
-
|
|
23903
|
-
|
|
23904
|
-
|
|
23905
|
-
|
|
23906
|
-
|
|
23907
|
-
|
|
23908
|
-
|
|
23909
|
-
continue;
|
|
23910
|
-
}
|
|
23911
|
-
stack[writeIndex++] = holder;
|
|
23912
|
-
}
|
|
23913
|
-
if (writeIndex === 0) {
|
|
23914
|
-
stack.length = 0;
|
|
23915
|
-
emptyLengths.push(length);
|
|
23916
|
-
} else {
|
|
23917
|
-
stack.length = writeIndex;
|
|
23918
|
-
}
|
|
23919
|
-
});
|
|
23920
|
-
emptyLengths.forEach((length) => typedPool.delete(length));
|
|
23921
|
-
if (typedPool.size === 0) {
|
|
23922
|
-
emptyTypeKeys.push(typeKey);
|
|
23923
|
-
}
|
|
23924
|
-
});
|
|
23925
|
-
emptyTypeKeys.forEach((typeKey) => pool.delete(typeKey));
|
|
23926
|
-
if (!destroyed && pool.size > 0) {
|
|
23927
|
-
sweepTimer = setTimeout(() => {
|
|
23928
|
-
sweepTimer = void 0;
|
|
23929
|
-
sweepPool();
|
|
23930
|
-
}, BUFFER_POOL_SWEEP_INTERVAL_MS);
|
|
24765
|
+
const mercator = fromLngLat(location2);
|
|
24766
|
+
const worldX = mercator.x * state.worldSize;
|
|
24767
|
+
const worldY = mercator.y * state.worldSize;
|
|
24768
|
+
const elevation = toFiniteOr$1(location2.z, 0);
|
|
24769
|
+
const [x, y, , w] = multiplyMatrixAndVector(
|
|
24770
|
+
state.pixelMatrix,
|
|
24771
|
+
worldX,
|
|
24772
|
+
worldY,
|
|
24773
|
+
elevation,
|
|
24774
|
+
1
|
|
24775
|
+
);
|
|
24776
|
+
if (!Number.isFinite(w) || w <= 0) {
|
|
24777
|
+
return null;
|
|
23931
24778
|
}
|
|
23932
|
-
|
|
23933
|
-
|
|
23934
|
-
if (
|
|
23935
|
-
return;
|
|
24779
|
+
const projectedX = x / w;
|
|
24780
|
+
const projectedY = y / w;
|
|
24781
|
+
if (!Number.isFinite(projectedX) || !Number.isFinite(projectedY)) {
|
|
24782
|
+
return null;
|
|
23936
24783
|
}
|
|
23937
|
-
|
|
23938
|
-
sweepTimer = void 0;
|
|
23939
|
-
sweepPool();
|
|
23940
|
-
}, BUFFER_POOL_SWEEP_INTERVAL_MS);
|
|
24784
|
+
return { x: projectedX, y: projectedY };
|
|
23941
24785
|
};
|
|
23942
|
-
const
|
|
23943
|
-
|
|
23944
|
-
|
|
23945
|
-
typedPool = /* @__PURE__ */ new Map();
|
|
23946
|
-
pool.set(ArrayType, typedPool);
|
|
23947
|
-
}
|
|
23948
|
-
let candidate;
|
|
23949
|
-
const exactStack = typedPool.get(length);
|
|
23950
|
-
if (exactStack && exactStack.length > 0) {
|
|
23951
|
-
candidate = exactStack.pop();
|
|
23952
|
-
if (exactStack.length === 0) {
|
|
23953
|
-
typedPool.delete(length);
|
|
23954
|
-
if (typedPool.size === 0) {
|
|
23955
|
-
pool.delete(ArrayType);
|
|
23956
|
-
}
|
|
23957
|
-
}
|
|
24786
|
+
const unproject = (point) => {
|
|
24787
|
+
if (!state.pixelMatrixInverse) {
|
|
24788
|
+
return null;
|
|
23958
24789
|
}
|
|
23959
|
-
|
|
23960
|
-
|
|
23961
|
-
|
|
23962
|
-
|
|
23963
|
-
|
|
23964
|
-
|
|
23965
|
-
|
|
23966
|
-
|
|
23967
|
-
|
|
23968
|
-
|
|
23969
|
-
|
|
23970
|
-
|
|
23971
|
-
|
|
23972
|
-
|
|
23973
|
-
|
|
23974
|
-
|
|
23975
|
-
|
|
23976
|
-
|
|
23977
|
-
candidate = bestStack.pop();
|
|
23978
|
-
if (bestStack.length === 0) {
|
|
23979
|
-
typedPool.delete(bestCapacity);
|
|
23980
|
-
if (typedPool.size === 0) {
|
|
23981
|
-
pool.delete(ArrayType);
|
|
23982
|
-
}
|
|
23983
|
-
}
|
|
23984
|
-
}
|
|
24790
|
+
const coord0 = multiplyMatrixAndVector(
|
|
24791
|
+
state.pixelMatrixInverse,
|
|
24792
|
+
toFiniteOr$1(point.x, 0),
|
|
24793
|
+
toFiniteOr$1(point.y, 0),
|
|
24794
|
+
0,
|
|
24795
|
+
1
|
|
24796
|
+
);
|
|
24797
|
+
const coord1 = multiplyMatrixAndVector(
|
|
24798
|
+
state.pixelMatrixInverse,
|
|
24799
|
+
toFiniteOr$1(point.x, 0),
|
|
24800
|
+
toFiniteOr$1(point.y, 0),
|
|
24801
|
+
1,
|
|
24802
|
+
1
|
|
24803
|
+
);
|
|
24804
|
+
const w0 = coord0[3];
|
|
24805
|
+
const w1 = coord1[3];
|
|
24806
|
+
if (!Number.isFinite(w0) || !Number.isFinite(w1) || w0 === 0 || w1 === 0) {
|
|
24807
|
+
return null;
|
|
23985
24808
|
}
|
|
23986
|
-
|
|
23987
|
-
|
|
23988
|
-
|
|
23989
|
-
|
|
23990
|
-
|
|
23991
|
-
|
|
23992
|
-
|
|
23993
|
-
|
|
23994
|
-
|
|
23995
|
-
|
|
23996
|
-
|
|
23997
|
-
|
|
23998
|
-
|
|
23999
|
-
|
|
24000
|
-
return { ptr: candidate.__ptr, buffer: candidate.__buffer };
|
|
24001
|
-
};
|
|
24002
|
-
const release2 = () => {
|
|
24003
|
-
if (candidate.__pooled) {
|
|
24004
|
-
return;
|
|
24005
|
-
}
|
|
24006
|
-
if (destroyed) {
|
|
24007
|
-
candidate.__free();
|
|
24008
|
-
return;
|
|
24009
|
-
}
|
|
24010
|
-
candidate.__pooled = true;
|
|
24011
|
-
candidate.__lastReleasedAt = getNow();
|
|
24012
|
-
const capacity = candidate.__capacity;
|
|
24013
|
-
let stack = typedPool.get(capacity);
|
|
24014
|
-
if (!stack) {
|
|
24015
|
-
stack = [];
|
|
24016
|
-
typedPool.set(capacity, stack);
|
|
24017
|
-
}
|
|
24018
|
-
if (!pool.has(ArrayType)) {
|
|
24019
|
-
pool.set(ArrayType, typedPool);
|
|
24020
|
-
}
|
|
24021
|
-
stack.push(candidate);
|
|
24022
|
-
schedulePoolSweep();
|
|
24023
|
-
};
|
|
24024
|
-
const __free = () => {
|
|
24025
|
-
if (candidate.__ptr) {
|
|
24026
|
-
free(candidate.__ptr);
|
|
24027
|
-
candidate.__ptr = 0;
|
|
24028
|
-
candidate.__buffer = void 0;
|
|
24029
|
-
candidate.__capacity = 0;
|
|
24030
|
-
candidate.__length = 0;
|
|
24031
|
-
candidate.__pooled = false;
|
|
24032
|
-
candidate.__lastReleasedAt = 0;
|
|
24033
|
-
candidate.__free = void 0;
|
|
24034
|
-
candidate.prepare = void 0;
|
|
24035
|
-
candidate.release = void 0;
|
|
24036
|
-
}
|
|
24037
|
-
};
|
|
24038
|
-
candidate = {
|
|
24039
|
-
prepare,
|
|
24040
|
-
release: release2,
|
|
24041
|
-
__ptr: ptr,
|
|
24042
|
-
__buffer: buffer,
|
|
24043
|
-
__capacity: length,
|
|
24044
|
-
__length: length,
|
|
24045
|
-
__pooled: false,
|
|
24046
|
-
__lastReleasedAt: 0,
|
|
24047
|
-
__free
|
|
24048
|
-
};
|
|
24049
|
-
} else {
|
|
24050
|
-
candidate.__pooled = false;
|
|
24051
|
-
candidate.__length = length;
|
|
24052
|
-
candidate.__lastReleasedAt = 0;
|
|
24809
|
+
const x0 = coord0[0] / w0;
|
|
24810
|
+
const x1 = coord1[0] / w1;
|
|
24811
|
+
const y0 = coord0[1] / w0;
|
|
24812
|
+
const y1 = coord1[1] / w1;
|
|
24813
|
+
const z0 = coord0[2] / w0;
|
|
24814
|
+
const z1 = coord1[2] / w1;
|
|
24815
|
+
const targetZ = 0;
|
|
24816
|
+
const t = z0 === z1 ? 0 : (targetZ - z0) / (z1 - z0);
|
|
24817
|
+
const worldX = x0 + (x1 - x0) * t;
|
|
24818
|
+
const worldY = y0 + (y1 - y0) * t;
|
|
24819
|
+
const mercatorX = worldX / (state.worldSize || 1);
|
|
24820
|
+
const mercatorY = worldY / (state.worldSize || 1);
|
|
24821
|
+
if (!Number.isFinite(mercatorX) || !Number.isFinite(mercatorY)) {
|
|
24822
|
+
return null;
|
|
24053
24823
|
}
|
|
24054
|
-
return
|
|
24824
|
+
return {
|
|
24825
|
+
lng: lngFromMercatorX(mercatorX),
|
|
24826
|
+
lat: clamp(
|
|
24827
|
+
latFromMercatorY(mercatorY),
|
|
24828
|
+
-MAX_MERCATOR_LATITUDE,
|
|
24829
|
+
MAX_MERCATOR_LATITUDE
|
|
24830
|
+
)
|
|
24831
|
+
};
|
|
24055
24832
|
};
|
|
24056
|
-
const
|
|
24057
|
-
|
|
24058
|
-
|
|
24059
|
-
|
|
24060
|
-
|
|
24061
|
-
|
|
24062
|
-
|
|
24833
|
+
const calculatePerspectiveRatio = (location2, cachedMercator) => {
|
|
24834
|
+
var _a;
|
|
24835
|
+
if (!state.mercatorMatrix || state.cameraToCenterDistance <= 0) {
|
|
24836
|
+
return 1;
|
|
24837
|
+
}
|
|
24838
|
+
try {
|
|
24839
|
+
const mercator = cachedMercator != null ? cachedMercator : fromLngLat(location2);
|
|
24840
|
+
const [, , , w] = multiplyMatrixAndVector(
|
|
24841
|
+
state.mercatorMatrix,
|
|
24842
|
+
mercator.x,
|
|
24843
|
+
mercator.y,
|
|
24844
|
+
(_a = mercator.z) != null ? _a : 0,
|
|
24845
|
+
1
|
|
24846
|
+
);
|
|
24847
|
+
if (!Number.isFinite(w) || w <= 0) {
|
|
24848
|
+
return 1;
|
|
24849
|
+
}
|
|
24850
|
+
const ratio = state.cameraToCenterDistance / w;
|
|
24851
|
+
return Number.isFinite(ratio) && ratio > 0 ? ratio : 1;
|
|
24852
|
+
} catch (e) {
|
|
24853
|
+
return 1;
|
|
24063
24854
|
}
|
|
24064
|
-
return candidate;
|
|
24065
24855
|
};
|
|
24066
24856
|
const release = () => {
|
|
24067
|
-
|
|
24068
|
-
return;
|
|
24069
|
-
}
|
|
24070
|
-
destroyed = true;
|
|
24071
|
-
if (sweepTimer) {
|
|
24072
|
-
clearTimeout(sweepTimer);
|
|
24073
|
-
sweepTimer = void 0;
|
|
24074
|
-
}
|
|
24075
|
-
pool.forEach((typedPool) => {
|
|
24076
|
-
typedPool.forEach((stack) => {
|
|
24077
|
-
stack.forEach((holder) => {
|
|
24078
|
-
holder.__free();
|
|
24079
|
-
});
|
|
24080
|
-
stack.length = 0;
|
|
24081
|
-
});
|
|
24082
|
-
typedPool.clear();
|
|
24083
|
-
});
|
|
24084
|
-
pool.clear();
|
|
24857
|
+
state = void 0;
|
|
24085
24858
|
};
|
|
24086
24859
|
return {
|
|
24087
|
-
|
|
24860
|
+
getZoom,
|
|
24861
|
+
getClipContext,
|
|
24088
24862
|
fromLngLat,
|
|
24089
24863
|
project,
|
|
24090
24864
|
unproject,
|
|
24091
24865
|
calculatePerspectiveRatio,
|
|
24092
|
-
projectLngLatToClipSpace: projectLngLatToClipSpace2,
|
|
24093
|
-
calculateBillboardDepthKey: calculateBillboardDepthKey2,
|
|
24094
|
-
calculateSurfaceDepthKey: calculateSurfaceDepthKey2,
|
|
24095
|
-
prepareDrawSpriteImages: prepareDrawSpriteImages2,
|
|
24096
24866
|
release
|
|
24097
24867
|
};
|
|
24098
24868
|
};
|
|
24099
|
-
const
|
|
24100
|
-
|
|
24101
|
-
|
|
24102
|
-
|
|
24103
|
-
|
|
24104
|
-
|
|
24105
|
-
|
|
24106
|
-
|
|
24107
|
-
|
|
24108
|
-
|
|
24109
|
-
|
|
24110
|
-
|
|
24111
|
-
|
|
24112
|
-
);
|
|
24113
|
-
return [variant, wasmHost];
|
|
24114
|
-
} catch (error) {
|
|
24115
|
-
console.warn(
|
|
24116
|
-
`maplibre-gl-layers: Failed to initialize ${variant} wasm module.`,
|
|
24117
|
-
error
|
|
24118
|
-
);
|
|
24119
|
-
}
|
|
24120
|
-
}
|
|
24121
|
-
console.warn(
|
|
24122
|
-
"maplibre-gl-layers: Falling back to JavaScript implementation."
|
|
24123
|
-
);
|
|
24124
|
-
return ["disabled", void 0];
|
|
24125
|
-
};
|
|
24126
|
-
let currentVariant = "disabled";
|
|
24127
|
-
let currentWasmHost;
|
|
24128
|
-
const initializeWasmHost = async (preferredVariant, options) => {
|
|
24129
|
-
if (options == null ? void 0 : options.force) {
|
|
24130
|
-
currentWasmHost = void 0;
|
|
24131
|
-
}
|
|
24132
|
-
if (currentWasmHost !== void 0) {
|
|
24133
|
-
return currentVariant;
|
|
24134
|
-
}
|
|
24135
|
-
const [variant, wasmHost] = await initializeWasmHostInternal(preferredVariant);
|
|
24136
|
-
currentVariant = variant;
|
|
24137
|
-
currentWasmHost = wasmHost;
|
|
24138
|
-
return variant;
|
|
24139
|
-
};
|
|
24140
|
-
const releaseWasmHost = () => {
|
|
24141
|
-
if (currentWasmHost) {
|
|
24142
|
-
currentWasmHost.release();
|
|
24143
|
-
currentWasmHost = void 0;
|
|
24144
|
-
currentVariant = "disabled";
|
|
24145
|
-
}
|
|
24146
|
-
};
|
|
24147
|
-
const prepareWasmHost = () => {
|
|
24148
|
-
if (!currentWasmHost) {
|
|
24149
|
-
throw new Error("Could not use WasmHost, needs before initialization.");
|
|
24869
|
+
const createProjectionHostParamsFromMapLibre = (map) => {
|
|
24870
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
24871
|
+
const ensureFinite2 = (value) => typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
24872
|
+
const centerLngLat = map.getCenter();
|
|
24873
|
+
const transform = map.transform;
|
|
24874
|
+
const canvas = typeof map.getCanvas === "function" ? (_a = map.getCanvas()) != null ? _a : null : null;
|
|
24875
|
+
if (!transform) {
|
|
24876
|
+
return {
|
|
24877
|
+
zoom: (_b = ensureFinite2(map.getZoom())) != null ? _b : 0,
|
|
24878
|
+
width: (_c = ensureFinite2(canvas == null ? void 0 : canvas.width)) != null ? _c : 0,
|
|
24879
|
+
height: (_d = ensureFinite2(canvas == null ? void 0 : canvas.height)) != null ? _d : 0,
|
|
24880
|
+
center: { lng: centerLngLat.lng, lat: centerLngLat.lat }
|
|
24881
|
+
};
|
|
24150
24882
|
}
|
|
24151
|
-
|
|
24883
|
+
const width = (_f = (_e = ensureFinite2(transform.width)) != null ? _e : ensureFinite2(canvas == null ? void 0 : canvas.width)) != null ? _f : 0;
|
|
24884
|
+
const height = (_h = (_g = ensureFinite2(transform.height)) != null ? _g : ensureFinite2(canvas == null ? void 0 : canvas.height)) != null ? _h : 0;
|
|
24885
|
+
const zoom = (_j = (_i = ensureFinite2(transform.zoom)) != null ? _i : ensureFinite2(map.getZoom())) != null ? _j : 0;
|
|
24886
|
+
const pitchDeg = (_k = ensureFinite2(transform.pitch)) != null ? _k : ensureFinite2(map.getPitch());
|
|
24887
|
+
const bearingDeg = (_l = ensureFinite2(transform.bearing)) != null ? _l : ensureFinite2(map.getBearing());
|
|
24888
|
+
const rollDeg = ensureFinite2(transform.roll);
|
|
24889
|
+
const fovDeg = ensureFinite2(transform.fov);
|
|
24890
|
+
const centerElevation = ensureFinite2(transform.elevation);
|
|
24891
|
+
const minElevation = ensureFinite2(transform.minElevationForCurrentTile);
|
|
24892
|
+
const cameraToCenterDistance = ensureFinite2(transform.cameraToCenterDistance);
|
|
24893
|
+
const centerOffset = transform.centerOffset;
|
|
24894
|
+
const centerOffsetX = ensureFinite2(centerOffset == null ? void 0 : centerOffset.x);
|
|
24895
|
+
const centerOffsetY = ensureFinite2(centerOffset == null ? void 0 : centerOffset.y);
|
|
24896
|
+
const tileSize = ensureFinite2(transform.tileSize);
|
|
24897
|
+
const autoCalculateNearFarZ = typeof transform.autoCalculateNearFarZ === "boolean" ? transform.autoCalculateNearFarZ : void 0;
|
|
24898
|
+
const nearZOverride = autoCalculateNearFarZ === false ? ensureFinite2(transform.nearZ) : void 0;
|
|
24899
|
+
const farZOverride = autoCalculateNearFarZ === false ? ensureFinite2(transform.farZ) : void 0;
|
|
24900
|
+
return {
|
|
24901
|
+
zoom,
|
|
24902
|
+
width,
|
|
24903
|
+
height,
|
|
24904
|
+
center: {
|
|
24905
|
+
lng: centerLngLat.lng,
|
|
24906
|
+
lat: centerLngLat.lat
|
|
24907
|
+
},
|
|
24908
|
+
...pitchDeg !== void 0 ? { pitchDeg } : {},
|
|
24909
|
+
...bearingDeg !== void 0 ? { bearingDeg } : {},
|
|
24910
|
+
...rollDeg !== void 0 ? { rollDeg } : {},
|
|
24911
|
+
...fovDeg !== void 0 ? { fovDeg } : {},
|
|
24912
|
+
...centerElevation !== void 0 ? { centerElevationMeters: centerElevation } : {},
|
|
24913
|
+
...minElevation !== void 0 ? { minElevationMeters: minElevation } : {},
|
|
24914
|
+
...cameraToCenterDistance !== void 0 ? { cameraToCenterDistance } : {},
|
|
24915
|
+
...centerOffsetX !== void 0 ? { centerOffsetX } : {},
|
|
24916
|
+
...centerOffsetY !== void 0 ? { centerOffsetY } : {},
|
|
24917
|
+
...tileSize !== void 0 ? { tileSize } : {},
|
|
24918
|
+
...autoCalculateNearFarZ !== void 0 ? { autoCalculateNearFarZ } : {},
|
|
24919
|
+
...nearZOverride !== void 0 ? { nearZOverride } : {},
|
|
24920
|
+
...farZOverride !== void 0 ? { farZOverride } : {}
|
|
24921
|
+
};
|
|
24152
24922
|
};
|
|
24923
|
+
const USE_SHADER_BILLBOARD_GEOMETRY = true;
|
|
24924
|
+
const ENABLE_NDC_BIAS_SURFACE = true;
|
|
24925
|
+
const ATLAS_QUEUE_CHUNK_SIZE = 64;
|
|
24926
|
+
const ATLAS_QUEUE_TIME_BUDGET_MS = 20;
|
|
24927
|
+
const TEXT_GLYPH_QUEUE_CHUNK_SIZE = 16;
|
|
24928
|
+
const TEXT_GLYPH_QUEUE_TIME_BUDGET_MS = 20;
|
|
24153
24929
|
const WASM_FromLngLat_RESULT_ELEMENT_COUNT = 3;
|
|
24154
24930
|
const createFromLngLat = (wasm) => {
|
|
24155
24931
|
const resultHolder = wasm.allocateTypedBuffer(
|
|
@@ -24798,6 +25574,12 @@ const prepareDrawSpriteImageInternal = (projectionHost, item, zoom, zoomScaleFac
|
|
|
24798
25574
|
const imageEntry = item.image;
|
|
24799
25575
|
const imageResource = item.resource;
|
|
24800
25576
|
const resolveOrigin = item.resolveOrigin;
|
|
25577
|
+
const atlasU0 = Number.isFinite(imageResource.atlasU0) ? imageResource.atlasU0 : 0;
|
|
25578
|
+
const atlasV0 = Number.isFinite(imageResource.atlasV0) ? imageResource.atlasV0 : 0;
|
|
25579
|
+
const atlasU1 = Number.isFinite(imageResource.atlasU1) ? imageResource.atlasU1 : 1;
|
|
25580
|
+
const atlasV1 = Number.isFinite(imageResource.atlasV1) ? imageResource.atlasV1 : 1;
|
|
25581
|
+
const atlasUSpan = atlasU1 - atlasU0;
|
|
25582
|
+
const atlasVSpan = atlasV1 - atlasV0;
|
|
24801
25583
|
const spriteMercator = resolveSpriteMercator(projectionHost, item.sprite);
|
|
24802
25584
|
imageEntry.surfaceShaderInputs = void 0;
|
|
24803
25585
|
let screenCornerBuffer = null;
|
|
@@ -24986,7 +25768,9 @@ const prepareDrawSpriteImageInternal = (projectionHost, item, zoom, zoomScaleFac
|
|
|
24986
25768
|
if (clipCornerPositions) {
|
|
24987
25769
|
clipCornerPositions[index] = [clipX, clipY, clipZ, clipW];
|
|
24988
25770
|
}
|
|
24989
|
-
const [
|
|
25771
|
+
const [baseU, baseV] = UV_CORNERS[index];
|
|
25772
|
+
const u = atlasU0 + baseU * atlasUSpan;
|
|
25773
|
+
const v = atlasV0 + baseV * atlasVSpan;
|
|
24990
25774
|
if (useShaderSurface) {
|
|
24991
25775
|
const baseCorner = SURFACE_BASE_CORNERS[index];
|
|
24992
25776
|
QUAD_VERTEX_SCRATCH[bufferOffset++] = baseCorner[0];
|
|
@@ -25142,8 +25926,10 @@ const prepareDrawSpriteImageInternal = (projectionHost, item, zoom, zoomScaleFac
|
|
|
25142
25926
|
}
|
|
25143
25927
|
QUAD_VERTEX_SCRATCH[bufferOffset++] = 0;
|
|
25144
25928
|
QUAD_VERTEX_SCRATCH[bufferOffset++] = 1;
|
|
25145
|
-
|
|
25146
|
-
|
|
25929
|
+
const scaledU = atlasU0 + corner.u * atlasUSpan;
|
|
25930
|
+
const scaledV = atlasV0 + corner.v * atlasVSpan;
|
|
25931
|
+
QUAD_VERTEX_SCRATCH[bufferOffset++] = scaledU;
|
|
25932
|
+
QUAD_VERTEX_SCRATCH[bufferOffset++] = scaledV;
|
|
25147
25933
|
}
|
|
25148
25934
|
for (let i = 0; i < corners.length; i++) {
|
|
25149
25935
|
const source = corners[i];
|
|
@@ -25234,7 +26020,7 @@ const createCalculationHost = (params) => {
|
|
|
25234
26020
|
const INPUT_HEADER_LENGTH = 15;
|
|
25235
26021
|
const INPUT_FRAME_CONSTANT_LENGTH = 24;
|
|
25236
26022
|
const INPUT_MATRIX_LENGTH = 48;
|
|
25237
|
-
const RESOURCE_STRIDE =
|
|
26023
|
+
const RESOURCE_STRIDE = 9;
|
|
25238
26024
|
const SPRITE_STRIDE = 6;
|
|
25239
26025
|
const ITEM_STRIDE = 27;
|
|
25240
26026
|
const INPUT_BASE_LENGTH = INPUT_HEADER_LENGTH + INPUT_FRAME_CONSTANT_LENGTH + INPUT_MATRIX_LENGTH;
|
|
@@ -25698,10 +26484,20 @@ const convertToWasmProjectionState = (wasm, params, deps) => {
|
|
|
25698
26484
|
parameterBuffer[cursor++] = resource.width;
|
|
25699
26485
|
parameterBuffer[cursor++] = resource.height;
|
|
25700
26486
|
parameterBuffer[cursor++] = resource.texture ? 1 : 0;
|
|
26487
|
+
parameterBuffer[cursor++] = typeof resource.atlasPageIndex === "number" ? resource.atlasPageIndex : -1;
|
|
26488
|
+
parameterBuffer[cursor++] = typeof resource.atlasU0 === "number" ? resource.atlasU0 : 0;
|
|
26489
|
+
parameterBuffer[cursor++] = typeof resource.atlasV0 === "number" ? resource.atlasV0 : 0;
|
|
26490
|
+
parameterBuffer[cursor++] = typeof resource.atlasU1 === "number" ? resource.atlasU1 : 1;
|
|
26491
|
+
parameterBuffer[cursor++] = typeof resource.atlasV1 === "number" ? resource.atlasV1 : 1;
|
|
25701
26492
|
} else {
|
|
25702
26493
|
parameterBuffer[cursor++] = 0;
|
|
25703
26494
|
parameterBuffer[cursor++] = 0;
|
|
25704
26495
|
parameterBuffer[cursor++] = 0;
|
|
26496
|
+
parameterBuffer[cursor++] = -1;
|
|
26497
|
+
parameterBuffer[cursor++] = 0;
|
|
26498
|
+
parameterBuffer[cursor++] = 0;
|
|
26499
|
+
parameterBuffer[cursor++] = 1;
|
|
26500
|
+
parameterBuffer[cursor++] = 1;
|
|
25705
26501
|
}
|
|
25706
26502
|
}
|
|
25707
26503
|
cursor = spriteOffset;
|
|
@@ -25948,34 +26744,389 @@ const createSpriteOriginReference = () => {
|
|
|
25948
26744
|
decodeKey
|
|
25949
26745
|
};
|
|
25950
26746
|
};
|
|
25951
|
-
const
|
|
25952
|
-
|
|
25953
|
-
const
|
|
25954
|
-
const
|
|
25955
|
-
const
|
|
25956
|
-
|
|
25957
|
-
|
|
25958
|
-
|
|
25959
|
-
|
|
25960
|
-
|
|
26747
|
+
const DEFAULT_PAGE_WIDTH = 2048;
|
|
26748
|
+
const DEFAULT_PAGE_HEIGHT = 2048;
|
|
26749
|
+
const DEFAULT_PADDING = 1;
|
|
26750
|
+
const createFallbackCanvas2D = (width, height) => {
|
|
26751
|
+
const fallbackCanvas = {
|
|
26752
|
+
width,
|
|
26753
|
+
height
|
|
26754
|
+
};
|
|
26755
|
+
const fallbackContext = {
|
|
26756
|
+
canvas: fallbackCanvas,
|
|
26757
|
+
drawImage: () => {
|
|
26758
|
+
},
|
|
26759
|
+
clearRect: () => {
|
|
26760
|
+
},
|
|
26761
|
+
save: () => {
|
|
26762
|
+
},
|
|
26763
|
+
restore: () => {
|
|
26764
|
+
},
|
|
26765
|
+
scale: () => {
|
|
26766
|
+
},
|
|
26767
|
+
translate: () => {
|
|
26768
|
+
},
|
|
26769
|
+
imageSmoothingEnabled: false
|
|
26770
|
+
};
|
|
26771
|
+
fallbackCanvas.getContext = () => fallbackContext;
|
|
26772
|
+
return {
|
|
26773
|
+
canvas: fallbackCanvas,
|
|
26774
|
+
ctx: fallbackContext
|
|
26775
|
+
};
|
|
26776
|
+
};
|
|
26777
|
+
const createCanvas2D$1 = (width, height) => {
|
|
26778
|
+
if (typeof OffscreenCanvas !== "undefined") {
|
|
26779
|
+
const canvas = new OffscreenCanvas(width, height);
|
|
26780
|
+
const ctx = canvas.getContext("2d");
|
|
26781
|
+
if (!ctx) {
|
|
26782
|
+
throw new Error("Failed to acquire 2D context for sprite atlas.");
|
|
25961
26783
|
}
|
|
25962
|
-
|
|
25963
|
-
|
|
25964
|
-
|
|
25965
|
-
|
|
25966
|
-
|
|
25967
|
-
|
|
25968
|
-
|
|
26784
|
+
return { canvas, ctx };
|
|
26785
|
+
}
|
|
26786
|
+
if (typeof document !== "undefined") {
|
|
26787
|
+
const canvas = document.createElement("canvas");
|
|
26788
|
+
canvas.width = width;
|
|
26789
|
+
canvas.height = height;
|
|
26790
|
+
const ctx = canvas.getContext("2d");
|
|
26791
|
+
if (!ctx) {
|
|
26792
|
+
throw new Error("Failed to acquire 2D context for sprite atlas.");
|
|
26793
|
+
}
|
|
26794
|
+
return { canvas, ctx };
|
|
25969
26795
|
}
|
|
26796
|
+
return createFallbackCanvas2D(width, height);
|
|
25970
26797
|
};
|
|
25971
|
-
const
|
|
25972
|
-
if (
|
|
25973
|
-
return;
|
|
26798
|
+
const clampPositiveInteger = (value) => {
|
|
26799
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
26800
|
+
return 1;
|
|
25974
26801
|
}
|
|
25975
|
-
|
|
25976
|
-
|
|
26802
|
+
return Math.max(1, Math.round(value));
|
|
26803
|
+
};
|
|
26804
|
+
const tryAllocateInPage = (page, width, height) => {
|
|
26805
|
+
if (page.cursorX + width > page.width) {
|
|
26806
|
+
const nextRowY = page.cursorY + page.rowHeight;
|
|
26807
|
+
if (nextRowY + height > page.height) {
|
|
26808
|
+
return null;
|
|
26809
|
+
}
|
|
26810
|
+
page.cursorX = 0;
|
|
26811
|
+
page.cursorY = nextRowY;
|
|
26812
|
+
page.rowHeight = 0;
|
|
26813
|
+
}
|
|
26814
|
+
if (page.cursorY + height > page.height) {
|
|
26815
|
+
return null;
|
|
26816
|
+
}
|
|
26817
|
+
const slot = {
|
|
26818
|
+
x: page.cursorX,
|
|
26819
|
+
y: page.cursorY
|
|
26820
|
+
};
|
|
26821
|
+
page.cursorX += width;
|
|
26822
|
+
if (height > page.rowHeight) {
|
|
26823
|
+
page.rowHeight = height;
|
|
26824
|
+
}
|
|
26825
|
+
return slot;
|
|
26826
|
+
};
|
|
26827
|
+
const createPage = (index, width, height) => {
|
|
26828
|
+
const { canvas, ctx } = createCanvas2D$1(width, height);
|
|
26829
|
+
ctx.clearRect(0, 0, width, height);
|
|
26830
|
+
return {
|
|
26831
|
+
index,
|
|
26832
|
+
width,
|
|
26833
|
+
height,
|
|
26834
|
+
canvas,
|
|
26835
|
+
ctx,
|
|
26836
|
+
cursorX: 0,
|
|
26837
|
+
cursorY: 0,
|
|
26838
|
+
rowHeight: 0,
|
|
26839
|
+
needsUpload: true
|
|
26840
|
+
};
|
|
26841
|
+
};
|
|
26842
|
+
const applyPlacementToPage = (image, page, slot, padding) => {
|
|
26843
|
+
const drawX = slot.x + padding;
|
|
26844
|
+
const drawY = slot.y + padding;
|
|
26845
|
+
page.ctx.drawImage(image.bitmap, drawX, drawY);
|
|
26846
|
+
page.needsUpload = true;
|
|
26847
|
+
const placement = {
|
|
26848
|
+
pageIndex: page.index,
|
|
26849
|
+
width: image.width,
|
|
26850
|
+
height: image.height,
|
|
26851
|
+
x: drawX,
|
|
26852
|
+
y: drawY,
|
|
26853
|
+
u0: drawX / page.width,
|
|
26854
|
+
v0: drawY / page.height,
|
|
26855
|
+
u1: (drawX + image.width) / page.width,
|
|
26856
|
+
v1: (drawY + image.height) / page.height
|
|
26857
|
+
};
|
|
26858
|
+
image.placement = placement;
|
|
26859
|
+
return placement;
|
|
26860
|
+
};
|
|
26861
|
+
const redrawPlacementOnPage = (image, page, placement) => {
|
|
26862
|
+
page.ctx.clearRect(
|
|
26863
|
+
placement.x,
|
|
26864
|
+
placement.y,
|
|
26865
|
+
placement.width,
|
|
26866
|
+
placement.height
|
|
26867
|
+
);
|
|
26868
|
+
page.ctx.drawImage(image.bitmap, placement.x, placement.y);
|
|
26869
|
+
page.needsUpload = true;
|
|
26870
|
+
image.placement = placement;
|
|
26871
|
+
return placement;
|
|
26872
|
+
};
|
|
26873
|
+
const sortImagesForPacking = (left, right) => {
|
|
26874
|
+
if (left.height !== right.height) {
|
|
26875
|
+
return right.height - left.height;
|
|
26876
|
+
}
|
|
26877
|
+
if (left.width !== right.width) {
|
|
26878
|
+
return right.width - left.width;
|
|
26879
|
+
}
|
|
26880
|
+
return left.id.localeCompare(right.id);
|
|
26881
|
+
};
|
|
26882
|
+
const createAtlasManager = (options) => {
|
|
26883
|
+
const pageWidth = clampPositiveInteger(
|
|
26884
|
+
DEFAULT_PAGE_WIDTH
|
|
26885
|
+
);
|
|
26886
|
+
const pageHeight = clampPositiveInteger(
|
|
26887
|
+
DEFAULT_PAGE_HEIGHT
|
|
26888
|
+
);
|
|
26889
|
+
const padding = Math.max(0, Math.round(DEFAULT_PADDING));
|
|
26890
|
+
const images = /* @__PURE__ */ new Map();
|
|
26891
|
+
let pages = [];
|
|
26892
|
+
const ensureFitsInPage = (image) => {
|
|
26893
|
+
const paddedWidth = image.width + padding * 2;
|
|
26894
|
+
const paddedHeight = image.height + padding * 2;
|
|
26895
|
+
if (paddedWidth > pageWidth || paddedHeight > pageHeight) {
|
|
26896
|
+
throw new Error(
|
|
26897
|
+
`[SpriteLayer][Atlas] Image "${image.id}" (${image.width}x${image.height}) exceeds atlas page size ${pageWidth}x${pageHeight}.`
|
|
26898
|
+
);
|
|
26899
|
+
}
|
|
26900
|
+
};
|
|
26901
|
+
const placeImageIncrementally = (image) => {
|
|
26902
|
+
ensureFitsInPage(image);
|
|
26903
|
+
const paddedWidth = image.width + padding * 2;
|
|
26904
|
+
const paddedHeight = image.height + padding * 2;
|
|
26905
|
+
for (const page of pages) {
|
|
26906
|
+
const slot2 = tryAllocateInPage(page, paddedWidth, paddedHeight);
|
|
26907
|
+
if (slot2) {
|
|
26908
|
+
return applyPlacementToPage(image, page, slot2, padding);
|
|
26909
|
+
}
|
|
26910
|
+
}
|
|
26911
|
+
const newPage = createPage(pages.length, pageWidth, pageHeight);
|
|
26912
|
+
pages.push(newPage);
|
|
26913
|
+
const slot = tryAllocateInPage(newPage, paddedWidth, paddedHeight);
|
|
26914
|
+
if (!slot) {
|
|
26915
|
+
throw new Error(
|
|
26916
|
+
`[SpriteLayer][Atlas] Unable to allocate image "${image.id}" on a fresh page.`
|
|
26917
|
+
);
|
|
26918
|
+
}
|
|
26919
|
+
return applyPlacementToPage(image, newPage, slot, padding);
|
|
26920
|
+
};
|
|
26921
|
+
const rebuildAtlas = () => {
|
|
26922
|
+
if (images.size === 0) {
|
|
26923
|
+
pages = [];
|
|
26924
|
+
return;
|
|
26925
|
+
}
|
|
26926
|
+
const sortedImages = Array.from(images.values()).sort(sortImagesForPacking);
|
|
26927
|
+
const rebuiltPages = [];
|
|
26928
|
+
for (const entry of sortedImages) {
|
|
26929
|
+
const paddedWidth = entry.width + padding * 2;
|
|
26930
|
+
const paddedHeight = entry.height + padding * 2;
|
|
26931
|
+
if (paddedWidth > pageWidth || paddedHeight > pageHeight) {
|
|
26932
|
+
throw new Error(
|
|
26933
|
+
`[SpriteLayer][Atlas] Image "${entry.id}" (${entry.width}x${entry.height}) exceeds atlas page size ${pageWidth}x${pageHeight}.`
|
|
26934
|
+
);
|
|
26935
|
+
}
|
|
26936
|
+
let allocatedSlot = null;
|
|
26937
|
+
let targetPage = null;
|
|
26938
|
+
for (const page of rebuiltPages) {
|
|
26939
|
+
const slot = tryAllocateInPage(page, paddedWidth, paddedHeight);
|
|
26940
|
+
if (slot) {
|
|
26941
|
+
allocatedSlot = slot;
|
|
26942
|
+
targetPage = page;
|
|
26943
|
+
break;
|
|
26944
|
+
}
|
|
26945
|
+
}
|
|
26946
|
+
if (!allocatedSlot || !targetPage) {
|
|
26947
|
+
const newPage = createPage(rebuiltPages.length, pageWidth, pageHeight);
|
|
26948
|
+
rebuiltPages.push(newPage);
|
|
26949
|
+
allocatedSlot = tryAllocateInPage(newPage, paddedWidth, paddedHeight);
|
|
26950
|
+
targetPage = newPage;
|
|
26951
|
+
if (!allocatedSlot) {
|
|
26952
|
+
throw new Error(
|
|
26953
|
+
`[SpriteLayer][Atlas] Unable to allocate image "${entry.id}" on a fresh page.`
|
|
26954
|
+
);
|
|
26955
|
+
}
|
|
26956
|
+
}
|
|
26957
|
+
applyPlacementToPage(entry, targetPage, allocatedSlot, padding);
|
|
26958
|
+
}
|
|
26959
|
+
pages = rebuiltPages;
|
|
26960
|
+
};
|
|
26961
|
+
return {
|
|
26962
|
+
upsertImage: (id, bitmap) => {
|
|
26963
|
+
const width = clampPositiveInteger(bitmap.width);
|
|
26964
|
+
const height = clampPositiveInteger(bitmap.height);
|
|
26965
|
+
const existing = images.get(id);
|
|
26966
|
+
if (existing) {
|
|
26967
|
+
existing.bitmap = bitmap;
|
|
26968
|
+
const sizeChanged = existing.width !== width || existing.height !== height;
|
|
26969
|
+
existing.width = width;
|
|
26970
|
+
existing.height = height;
|
|
26971
|
+
if (!sizeChanged && existing.placement) {
|
|
26972
|
+
const page = pages[existing.placement.pageIndex];
|
|
26973
|
+
if (!page) {
|
|
26974
|
+
throw new Error(
|
|
26975
|
+
`[SpriteLayer][Atlas] Missing atlas page ${existing.placement.pageIndex} for image "${id}".`
|
|
26976
|
+
);
|
|
26977
|
+
}
|
|
26978
|
+
return redrawPlacementOnPage(existing, page, existing.placement);
|
|
26979
|
+
}
|
|
26980
|
+
rebuildAtlas();
|
|
26981
|
+
} else {
|
|
26982
|
+
const image = {
|
|
26983
|
+
id,
|
|
26984
|
+
bitmap,
|
|
26985
|
+
width,
|
|
26986
|
+
height,
|
|
26987
|
+
placement: null
|
|
26988
|
+
};
|
|
26989
|
+
images.set(id, image);
|
|
26990
|
+
try {
|
|
26991
|
+
return placeImageIncrementally(image);
|
|
26992
|
+
} catch (error) {
|
|
26993
|
+
images.delete(id);
|
|
26994
|
+
throw error;
|
|
26995
|
+
}
|
|
26996
|
+
}
|
|
26997
|
+
const entry = images.get(id);
|
|
26998
|
+
if (!entry || !entry.placement) {
|
|
26999
|
+
throw new Error(
|
|
27000
|
+
`[SpriteLayer][Atlas] Failed to register image "${id}" in the atlas.`
|
|
27001
|
+
);
|
|
27002
|
+
}
|
|
27003
|
+
return entry.placement;
|
|
27004
|
+
},
|
|
27005
|
+
removeImage: (id) => {
|
|
27006
|
+
const removed = images.delete(id);
|
|
27007
|
+
if (removed) {
|
|
27008
|
+
rebuildAtlas();
|
|
27009
|
+
}
|
|
27010
|
+
return removed;
|
|
27011
|
+
},
|
|
27012
|
+
getImagePlacement: (id) => {
|
|
27013
|
+
var _a;
|
|
27014
|
+
const entry = images.get(id);
|
|
27015
|
+
return (_a = entry == null ? void 0 : entry.placement) != null ? _a : null;
|
|
27016
|
+
},
|
|
27017
|
+
getPages: () => {
|
|
27018
|
+
return pages.slice();
|
|
27019
|
+
},
|
|
27020
|
+
markPageClean: (pageIndex) => {
|
|
27021
|
+
const page = pages[pageIndex];
|
|
27022
|
+
if (page) {
|
|
27023
|
+
page.needsUpload = false;
|
|
27024
|
+
}
|
|
27025
|
+
},
|
|
27026
|
+
clear: () => {
|
|
27027
|
+
images.clear();
|
|
27028
|
+
pages = [];
|
|
27029
|
+
}
|
|
27030
|
+
};
|
|
27031
|
+
};
|
|
27032
|
+
const createAtlasOperationQueue = (atlasManager, options, callbacks) => {
|
|
27033
|
+
const queue = [];
|
|
27034
|
+
let timer = null;
|
|
27035
|
+
let isProcessing = false;
|
|
27036
|
+
const normalizedMaxOps = Math.max(1, options.maxOperationsPerPass | 0);
|
|
27037
|
+
const now = () => typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
27038
|
+
const processChunk = (timeBudgetMs = options.timeBudgetMs) => {
|
|
27039
|
+
if (isProcessing || queue.length === 0) {
|
|
27040
|
+
return {
|
|
27041
|
+
processedAny: false,
|
|
27042
|
+
hasRemaining: queue.length > 0
|
|
27043
|
+
};
|
|
27044
|
+
}
|
|
27045
|
+
isProcessing = true;
|
|
27046
|
+
let processedAny = false;
|
|
27047
|
+
const hasBudget = Number.isFinite(timeBudgetMs) && timeBudgetMs > 0;
|
|
27048
|
+
const budgetStart = hasBudget ? now() : 0;
|
|
27049
|
+
try {
|
|
27050
|
+
let processedCount = 0;
|
|
27051
|
+
while (queue.length > 0) {
|
|
27052
|
+
const entry = queue.shift();
|
|
27053
|
+
try {
|
|
27054
|
+
atlasManager.upsertImage(entry.imageId, entry.bitmap);
|
|
27055
|
+
entry.deferred.resolve(true);
|
|
27056
|
+
processedAny = true;
|
|
27057
|
+
} catch (error) {
|
|
27058
|
+
entry.deferred.reject(error);
|
|
27059
|
+
}
|
|
27060
|
+
processedCount += 1;
|
|
27061
|
+
if (processedCount >= normalizedMaxOps) {
|
|
27062
|
+
break;
|
|
27063
|
+
}
|
|
27064
|
+
if (hasBudget && now() - budgetStart >= timeBudgetMs) {
|
|
27065
|
+
break;
|
|
27066
|
+
}
|
|
27067
|
+
}
|
|
27068
|
+
if (processedAny) {
|
|
27069
|
+
callbacks.onChunkProcessed();
|
|
27070
|
+
}
|
|
27071
|
+
return {
|
|
27072
|
+
processedAny,
|
|
27073
|
+
hasRemaining: queue.length > 0
|
|
27074
|
+
};
|
|
27075
|
+
} finally {
|
|
27076
|
+
isProcessing = false;
|
|
27077
|
+
}
|
|
27078
|
+
};
|
|
27079
|
+
const schedule = () => {
|
|
27080
|
+
if (timer || queue.length === 0) {
|
|
27081
|
+
return;
|
|
27082
|
+
}
|
|
27083
|
+
timer = setTimeout(() => {
|
|
27084
|
+
timer = null;
|
|
27085
|
+
const { hasRemaining } = processChunk();
|
|
27086
|
+
if (hasRemaining) {
|
|
27087
|
+
schedule();
|
|
27088
|
+
}
|
|
27089
|
+
}, 0);
|
|
27090
|
+
};
|
|
27091
|
+
const cancelEntriesForImage = (imageId, reason) => {
|
|
27092
|
+
for (let idx = queue.length - 1; idx >= 0; idx -= 1) {
|
|
27093
|
+
const entry = queue[idx];
|
|
27094
|
+
if (entry && entry.imageId === imageId) {
|
|
27095
|
+
queue.splice(idx, 1);
|
|
27096
|
+
entry.deferred.reject(reason);
|
|
27097
|
+
}
|
|
27098
|
+
}
|
|
27099
|
+
};
|
|
27100
|
+
return {
|
|
27101
|
+
enqueueUpsert: (entry) => {
|
|
27102
|
+
queue.push(entry);
|
|
27103
|
+
schedule();
|
|
27104
|
+
},
|
|
27105
|
+
flushPending: () => {
|
|
27106
|
+
const { hasRemaining } = processChunk();
|
|
27107
|
+
if (hasRemaining) {
|
|
27108
|
+
schedule();
|
|
27109
|
+
}
|
|
27110
|
+
},
|
|
27111
|
+
cancelForImage: (imageId, reason) => {
|
|
27112
|
+
const rejectionReason = reason != null ? reason : new Error(
|
|
27113
|
+
`[SpriteLayer][Atlas] Image "${imageId}" was cancelled before placement.`
|
|
27114
|
+
);
|
|
27115
|
+
cancelEntriesForImage(imageId, rejectionReason);
|
|
27116
|
+
},
|
|
27117
|
+
rejectAll: (reason) => {
|
|
27118
|
+
while (queue.length > 0) {
|
|
27119
|
+
const entry = queue.shift();
|
|
27120
|
+
entry == null ? void 0 : entry.deferred.reject(reason);
|
|
27121
|
+
}
|
|
27122
|
+
},
|
|
27123
|
+
get pendingCount() {
|
|
27124
|
+
return queue.length;
|
|
27125
|
+
}
|
|
27126
|
+
};
|
|
25977
27127
|
};
|
|
25978
27128
|
const DEFAULT_AUTO_ROTATION_MIN_DISTANCE_METERS = 20;
|
|
27129
|
+
const ATLAS_PAGE_INDEX_NONE = -1;
|
|
25979
27130
|
const HIT_TEST_QUERY_RADIUS_PIXELS = 32;
|
|
25980
27131
|
const MIN_FILTER_VALUES = [
|
|
25981
27132
|
"nearest",
|
|
@@ -26526,33 +27677,179 @@ const createSpriteLayer = (options) => {
|
|
|
26526
27677
|
};
|
|
26527
27678
|
let gl = null;
|
|
26528
27679
|
let map = null;
|
|
26529
|
-
let
|
|
26530
|
-
let vertexBuffer = null;
|
|
26531
|
-
let attribPositionLocation = -1;
|
|
26532
|
-
let attribUvLocation = -1;
|
|
26533
|
-
let uniformTextureLocation = null;
|
|
26534
|
-
let uniformOpacityLocation = null;
|
|
26535
|
-
let uniformScreenToClipScaleLocation = null;
|
|
26536
|
-
let uniformScreenToClipOffsetLocation = null;
|
|
26537
|
-
let uniformBillboardModeLocation = null;
|
|
26538
|
-
let uniformBillboardCenterLocation = null;
|
|
26539
|
-
let uniformBillboardHalfSizeLocation = null;
|
|
26540
|
-
let uniformBillboardAnchorLocation = null;
|
|
26541
|
-
let uniformBillboardSinCosLocation = null;
|
|
26542
|
-
let uniformSurfaceModeLocation = null;
|
|
26543
|
-
let uniformSurfaceDepthBiasLocation = null;
|
|
26544
|
-
let uniformSurfaceClipEnabledLocation = null;
|
|
26545
|
-
let uniformSurfaceClipCenterLocation = null;
|
|
26546
|
-
let uniformSurfaceClipBasisEastLocation = null;
|
|
26547
|
-
let uniformSurfaceClipBasisNorthLocation = null;
|
|
27680
|
+
let spriteDrawProgram = null;
|
|
26548
27681
|
let anisotropyExtension = null;
|
|
26549
27682
|
let maxSupportedAnisotropy = 1;
|
|
26550
|
-
let
|
|
26551
|
-
|
|
26552
|
-
|
|
26553
|
-
let
|
|
26554
|
-
let
|
|
26555
|
-
|
|
27683
|
+
let debugOutlineRenderer = null;
|
|
27684
|
+
const atlasManager = createAtlasManager();
|
|
27685
|
+
const atlasPageTextures = /* @__PURE__ */ new Map();
|
|
27686
|
+
let atlasNeedsUpload = false;
|
|
27687
|
+
let handleAtlasQueueChunkProcessed = null;
|
|
27688
|
+
const atlasQueue = createAtlasOperationQueue(
|
|
27689
|
+
atlasManager,
|
|
27690
|
+
{
|
|
27691
|
+
maxOperationsPerPass: ATLAS_QUEUE_CHUNK_SIZE,
|
|
27692
|
+
timeBudgetMs: ATLAS_QUEUE_TIME_BUDGET_MS
|
|
27693
|
+
},
|
|
27694
|
+
{
|
|
27695
|
+
onChunkProcessed: () => {
|
|
27696
|
+
handleAtlasQueueChunkProcessed == null ? void 0 : handleAtlasQueueChunkProcessed();
|
|
27697
|
+
}
|
|
27698
|
+
}
|
|
27699
|
+
);
|
|
27700
|
+
const pendingTextGlyphIds = /* @__PURE__ */ new Set();
|
|
27701
|
+
const textGlyphQueue = [];
|
|
27702
|
+
let textGlyphQueueTimer = null;
|
|
27703
|
+
let isProcessingTextGlyphQueue = false;
|
|
27704
|
+
const now = () => typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
27705
|
+
const scheduleTextGlyphQueueProcessing = () => {
|
|
27706
|
+
if (textGlyphQueueTimer) {
|
|
27707
|
+
return;
|
|
27708
|
+
}
|
|
27709
|
+
textGlyphQueueTimer = setTimeout(() => {
|
|
27710
|
+
textGlyphQueueTimer = null;
|
|
27711
|
+
void processTextGlyphQueueChunk();
|
|
27712
|
+
}, 0);
|
|
27713
|
+
};
|
|
27714
|
+
const enqueueTextGlyphJob = (entry) => {
|
|
27715
|
+
textGlyphQueue.push(entry);
|
|
27716
|
+
scheduleTextGlyphQueueProcessing();
|
|
27717
|
+
};
|
|
27718
|
+
const cancelPendingTextGlyphJob = (imageId, reason) => {
|
|
27719
|
+
var _a2;
|
|
27720
|
+
for (let idx = textGlyphQueue.length - 1; idx >= 0; idx -= 1) {
|
|
27721
|
+
const entry = textGlyphQueue[idx];
|
|
27722
|
+
if (entry && entry.glyphId === imageId) {
|
|
27723
|
+
textGlyphQueue.splice(idx, 1);
|
|
27724
|
+
pendingTextGlyphIds.delete(imageId);
|
|
27725
|
+
(_a2 = entry.abortHandle) == null ? void 0 : _a2.release();
|
|
27726
|
+
entry.deferred.reject(
|
|
27727
|
+
reason != null ? reason : new Error(
|
|
27728
|
+
`[SpriteLayer][GlyphQueue] Image "${imageId}" was cancelled before generation.`
|
|
27729
|
+
)
|
|
27730
|
+
);
|
|
27731
|
+
}
|
|
27732
|
+
}
|
|
27733
|
+
};
|
|
27734
|
+
const rejectAllPendingTextGlyphJobs = (reason) => {
|
|
27735
|
+
var _a2;
|
|
27736
|
+
while (textGlyphQueue.length > 0) {
|
|
27737
|
+
const entry = textGlyphQueue.shift();
|
|
27738
|
+
if (entry) {
|
|
27739
|
+
pendingTextGlyphIds.delete(entry.glyphId);
|
|
27740
|
+
(_a2 = entry.abortHandle) == null ? void 0 : _a2.release();
|
|
27741
|
+
entry.deferred.reject(reason);
|
|
27742
|
+
}
|
|
27743
|
+
}
|
|
27744
|
+
};
|
|
27745
|
+
const executeTextGlyphJob = async (entry) => {
|
|
27746
|
+
var _a2, _b, _c, _d, _e, _f, _g;
|
|
27747
|
+
if ((_a2 = entry.signal) == null ? void 0 : _a2.aborted) {
|
|
27748
|
+
(_b = entry.abortHandle) == null ? void 0 : _b.release();
|
|
27749
|
+
entry.deferred.reject(entry.signal.reason);
|
|
27750
|
+
pendingTextGlyphIds.delete(entry.glyphId);
|
|
27751
|
+
return;
|
|
27752
|
+
}
|
|
27753
|
+
if (images.has(entry.glyphId)) {
|
|
27754
|
+
(_c = entry.abortHandle) == null ? void 0 : _c.release();
|
|
27755
|
+
entry.deferred.resolve(false);
|
|
27756
|
+
pendingTextGlyphIds.delete(entry.glyphId);
|
|
27757
|
+
return;
|
|
27758
|
+
}
|
|
27759
|
+
if (!pendingTextGlyphIds.has(entry.glyphId)) {
|
|
27760
|
+
(_d = entry.abortHandle) == null ? void 0 : _d.release();
|
|
27761
|
+
entry.deferred.reject(
|
|
27762
|
+
new Error(
|
|
27763
|
+
`[SpriteLayer][GlyphQueue] Image "${entry.glyphId}" was removed before generation.`
|
|
27764
|
+
)
|
|
27765
|
+
);
|
|
27766
|
+
return;
|
|
27767
|
+
}
|
|
27768
|
+
let registeredImage = null;
|
|
27769
|
+
try {
|
|
27770
|
+
const { bitmap, width, height } = await renderTextGlyphBitmap(
|
|
27771
|
+
entry.text,
|
|
27772
|
+
entry.dimensions,
|
|
27773
|
+
entry.options
|
|
27774
|
+
);
|
|
27775
|
+
const handle = imageIdHandler.allocate(entry.glyphId);
|
|
27776
|
+
registeredImage = {
|
|
27777
|
+
id: entry.glyphId,
|
|
27778
|
+
handle,
|
|
27779
|
+
width,
|
|
27780
|
+
height,
|
|
27781
|
+
bitmap,
|
|
27782
|
+
texture: void 0,
|
|
27783
|
+
atlasPageIndex: ATLAS_PAGE_INDEX_NONE,
|
|
27784
|
+
atlasU0: 0,
|
|
27785
|
+
atlasV0: 0,
|
|
27786
|
+
atlasU1: 1,
|
|
27787
|
+
atlasV1: 1
|
|
27788
|
+
};
|
|
27789
|
+
images.set(entry.glyphId, registeredImage);
|
|
27790
|
+
imageIdHandler.store(handle, registeredImage);
|
|
27791
|
+
updateSpriteImageHandles(entry.glyphId, handle);
|
|
27792
|
+
imageHandleBuffersController.markDirty(images);
|
|
27793
|
+
const atlasDeferred = createDeferred();
|
|
27794
|
+
atlasQueue.enqueueUpsert({
|
|
27795
|
+
imageId: entry.glyphId,
|
|
27796
|
+
bitmap,
|
|
27797
|
+
deferred: atlasDeferred
|
|
27798
|
+
});
|
|
27799
|
+
await atlasDeferred.promise;
|
|
27800
|
+
entry.deferred.resolve(true);
|
|
27801
|
+
} catch (error) {
|
|
27802
|
+
if (registeredImage) {
|
|
27803
|
+
images.delete(entry.glyphId);
|
|
27804
|
+
imageIdHandler.release(entry.glyphId);
|
|
27805
|
+
updateSpriteImageHandles(entry.glyphId, 0);
|
|
27806
|
+
imageHandleBuffersController.markDirty(images);
|
|
27807
|
+
atlasManager.removeImage(entry.glyphId);
|
|
27808
|
+
(_f = (_e = registeredImage.bitmap).close) == null ? void 0 : _f.call(_e);
|
|
27809
|
+
}
|
|
27810
|
+
entry.deferred.reject(error);
|
|
27811
|
+
}
|
|
27812
|
+
pendingTextGlyphIds.delete(entry.glyphId);
|
|
27813
|
+
(_g = entry.abortHandle) == null ? void 0 : _g.release();
|
|
27814
|
+
};
|
|
27815
|
+
const processTextGlyphQueueChunk = async () => {
|
|
27816
|
+
if (isProcessingTextGlyphQueue || textGlyphQueue.length === 0) {
|
|
27817
|
+
return;
|
|
27818
|
+
}
|
|
27819
|
+
isProcessingTextGlyphQueue = true;
|
|
27820
|
+
const budgetStart = now();
|
|
27821
|
+
let processedCount = 0;
|
|
27822
|
+
try {
|
|
27823
|
+
while (textGlyphQueue.length > 0) {
|
|
27824
|
+
const entry = textGlyphQueue.shift();
|
|
27825
|
+
await executeTextGlyphJob(entry);
|
|
27826
|
+
processedCount += 1;
|
|
27827
|
+
if (processedCount >= TEXT_GLYPH_QUEUE_CHUNK_SIZE) {
|
|
27828
|
+
break;
|
|
27829
|
+
}
|
|
27830
|
+
if (now() - budgetStart >= TEXT_GLYPH_QUEUE_TIME_BUDGET_MS) {
|
|
27831
|
+
break;
|
|
27832
|
+
}
|
|
27833
|
+
}
|
|
27834
|
+
} finally {
|
|
27835
|
+
isProcessingTextGlyphQueue = false;
|
|
27836
|
+
}
|
|
27837
|
+
if (textGlyphQueue.length > 0) {
|
|
27838
|
+
scheduleTextGlyphQueueProcessing();
|
|
27839
|
+
}
|
|
27840
|
+
};
|
|
27841
|
+
const shouldUploadAtlasPages = (pageStates) => {
|
|
27842
|
+
const pages = pageStates != null ? pageStates : atlasManager.getPages();
|
|
27843
|
+
for (const page of pages) {
|
|
27844
|
+
if (page.needsUpload) {
|
|
27845
|
+
return true;
|
|
27846
|
+
}
|
|
27847
|
+
if (!atlasPageTextures.has(page.index)) {
|
|
27848
|
+
return true;
|
|
27849
|
+
}
|
|
27850
|
+
}
|
|
27851
|
+
return false;
|
|
27852
|
+
};
|
|
26556
27853
|
const images = /* @__PURE__ */ new Map();
|
|
26557
27854
|
const imageIdHandler = createIdHandler();
|
|
26558
27855
|
const spriteIdHandler = createIdHandler();
|
|
@@ -26562,15 +27859,36 @@ const createSpriteLayer = (options) => {
|
|
|
26562
27859
|
return resource ? resource.handle : 0;
|
|
26563
27860
|
};
|
|
26564
27861
|
const originReference = createSpriteOriginReference();
|
|
26565
|
-
const
|
|
26566
|
-
|
|
26567
|
-
|
|
26568
|
-
|
|
26569
|
-
|
|
26570
|
-
|
|
26571
|
-
|
|
26572
|
-
|
|
26573
|
-
|
|
27862
|
+
const syncAtlasPlacementsFromManager = () => {
|
|
27863
|
+
let placementsChanged = false;
|
|
27864
|
+
images.forEach((image, imageId) => {
|
|
27865
|
+
const placement = atlasManager.getImagePlacement(imageId);
|
|
27866
|
+
if (!placement) {
|
|
27867
|
+
if (image.atlasPageIndex !== ATLAS_PAGE_INDEX_NONE || image.atlasU0 !== 0 || image.atlasV0 !== 0 || image.atlasU1 !== 1 || image.atlasV1 !== 1) {
|
|
27868
|
+
image.atlasPageIndex = ATLAS_PAGE_INDEX_NONE;
|
|
27869
|
+
image.atlasU0 = 0;
|
|
27870
|
+
image.atlasV0 = 0;
|
|
27871
|
+
image.atlasU1 = 1;
|
|
27872
|
+
image.atlasV1 = 1;
|
|
27873
|
+
image.texture = void 0;
|
|
27874
|
+
placementsChanged = true;
|
|
27875
|
+
}
|
|
27876
|
+
return;
|
|
27877
|
+
}
|
|
27878
|
+
if (image.atlasPageIndex !== placement.pageIndex || image.atlasU0 !== placement.u0 || image.atlasV0 !== placement.v0 || image.atlasU1 !== placement.u1 || image.atlasV1 !== placement.v1) {
|
|
27879
|
+
image.atlasPageIndex = placement.pageIndex;
|
|
27880
|
+
image.atlasU0 = placement.u0;
|
|
27881
|
+
image.atlasV0 = placement.v0;
|
|
27882
|
+
image.atlasU1 = placement.u1;
|
|
27883
|
+
image.atlasV1 = placement.v1;
|
|
27884
|
+
image.texture = void 0;
|
|
27885
|
+
placementsChanged = true;
|
|
27886
|
+
}
|
|
27887
|
+
});
|
|
27888
|
+
if (placementsChanged) {
|
|
27889
|
+
imageHandleBuffersController.markDirty(images);
|
|
27890
|
+
}
|
|
27891
|
+
atlasNeedsUpload = placementsChanged || shouldUploadAtlasPages();
|
|
26574
27892
|
};
|
|
26575
27893
|
const sprites = /* @__PURE__ */ new Map();
|
|
26576
27894
|
const updateSpriteImageHandles = (imageId, handle) => {
|
|
@@ -27202,36 +28520,48 @@ const createSpriteLayer = (options) => {
|
|
|
27202
28520
|
if (!gl) {
|
|
27203
28521
|
return;
|
|
27204
28522
|
}
|
|
27205
|
-
|
|
28523
|
+
atlasQueue.flushPending();
|
|
28524
|
+
if (!atlasNeedsUpload) {
|
|
27206
28525
|
return;
|
|
27207
28526
|
}
|
|
27208
28527
|
const glContext = gl;
|
|
27209
|
-
|
|
27210
|
-
|
|
27211
|
-
|
|
27212
|
-
|
|
27213
|
-
|
|
28528
|
+
const pages = atlasManager.getPages();
|
|
28529
|
+
const activePageIndices = /* @__PURE__ */ new Set();
|
|
28530
|
+
pages.forEach((page) => activePageIndices.add(page.index));
|
|
28531
|
+
atlasPageTextures.forEach((texture, pageIndex) => {
|
|
28532
|
+
if (!activePageIndices.has(pageIndex)) {
|
|
28533
|
+
glContext.deleteTexture(texture);
|
|
28534
|
+
atlasPageTextures.delete(pageIndex);
|
|
27214
28535
|
}
|
|
27215
|
-
|
|
27216
|
-
|
|
27217
|
-
|
|
27218
|
-
|
|
28536
|
+
});
|
|
28537
|
+
pages.forEach((page) => {
|
|
28538
|
+
const requiresUpload = page.needsUpload || !atlasPageTextures.has(page.index);
|
|
28539
|
+
if (!requiresUpload) {
|
|
28540
|
+
return;
|
|
27219
28541
|
}
|
|
27220
|
-
|
|
28542
|
+
let texture = atlasPageTextures.get(page.index);
|
|
28543
|
+
let isNewTexture = false;
|
|
27221
28544
|
if (!texture) {
|
|
27222
|
-
|
|
28545
|
+
texture = glContext.createTexture();
|
|
28546
|
+
if (!texture) {
|
|
28547
|
+
throw new Error("Failed to create texture.");
|
|
28548
|
+
}
|
|
28549
|
+
atlasPageTextures.set(page.index, texture);
|
|
28550
|
+
isNewTexture = true;
|
|
27223
28551
|
}
|
|
27224
28552
|
glContext.bindTexture(glContext.TEXTURE_2D, texture);
|
|
27225
|
-
|
|
27226
|
-
glContext.
|
|
27227
|
-
|
|
27228
|
-
|
|
27229
|
-
|
|
27230
|
-
|
|
27231
|
-
glContext.
|
|
27232
|
-
|
|
27233
|
-
|
|
27234
|
-
|
|
28553
|
+
if (isNewTexture) {
|
|
28554
|
+
glContext.texParameteri(
|
|
28555
|
+
glContext.TEXTURE_2D,
|
|
28556
|
+
glContext.TEXTURE_WRAP_S,
|
|
28557
|
+
glContext.CLAMP_TO_EDGE
|
|
28558
|
+
);
|
|
28559
|
+
glContext.texParameteri(
|
|
28560
|
+
glContext.TEXTURE_2D,
|
|
28561
|
+
glContext.TEXTURE_WRAP_T,
|
|
28562
|
+
glContext.CLAMP_TO_EDGE
|
|
28563
|
+
);
|
|
28564
|
+
}
|
|
27235
28565
|
glContext.pixelStorei(glContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);
|
|
27236
28566
|
glContext.texImage2D(
|
|
27237
28567
|
glContext.TEXTURE_2D,
|
|
@@ -27239,7 +28569,7 @@ const createSpriteLayer = (options) => {
|
|
|
27239
28569
|
glContext.RGBA,
|
|
27240
28570
|
glContext.RGBA,
|
|
27241
28571
|
glContext.UNSIGNED_BYTE,
|
|
27242
|
-
|
|
28572
|
+
page.canvas
|
|
27243
28573
|
);
|
|
27244
28574
|
let minFilterEnum = resolveGlMinFilter(
|
|
27245
28575
|
glContext,
|
|
@@ -27252,7 +28582,7 @@ const createSpriteLayer = (options) => {
|
|
|
27252
28582
|
let usedMipmaps = false;
|
|
27253
28583
|
if (resolvedTextureFiltering.generateMipmaps) {
|
|
27254
28584
|
const isWebGL2 = typeof WebGL2RenderingContext !== "undefined" && glContext instanceof WebGL2RenderingContext;
|
|
27255
|
-
const canUseMipmaps = isWebGL2 || isPowerOfTwo(
|
|
28585
|
+
const canUseMipmaps = isWebGL2 || isPowerOfTwo(page.width) && isPowerOfTwo(page.height);
|
|
27256
28586
|
if (canUseMipmaps) {
|
|
27257
28587
|
glContext.generateMipmap(glContext.TEXTURE_2D);
|
|
27258
28588
|
usedMipmaps = true;
|
|
@@ -27287,9 +28617,17 @@ const createSpriteLayer = (options) => {
|
|
|
27287
28617
|
);
|
|
27288
28618
|
}
|
|
27289
28619
|
}
|
|
27290
|
-
|
|
27291
|
-
|
|
28620
|
+
atlasManager.markPageClean(page.index);
|
|
28621
|
+
});
|
|
28622
|
+
images.forEach((image) => {
|
|
28623
|
+
if (image.atlasPageIndex !== ATLAS_PAGE_INDEX_NONE) {
|
|
28624
|
+
image.texture = atlasPageTextures.get(image.atlasPageIndex);
|
|
28625
|
+
} else {
|
|
28626
|
+
image.texture = void 0;
|
|
28627
|
+
}
|
|
27292
28628
|
});
|
|
28629
|
+
imageHandleBuffersController.markDirty(images);
|
|
28630
|
+
atlasNeedsUpload = shouldUploadAtlasPages(pages);
|
|
27293
28631
|
};
|
|
27294
28632
|
let isRenderScheduled = false;
|
|
27295
28633
|
const scheduleRender = () => {
|
|
@@ -27299,6 +28637,10 @@ const createSpriteLayer = (options) => {
|
|
|
27299
28637
|
isRenderScheduled = true;
|
|
27300
28638
|
map.triggerRepaint();
|
|
27301
28639
|
};
|
|
28640
|
+
handleAtlasQueueChunkProcessed = () => {
|
|
28641
|
+
syncAtlasPlacementsFromManager();
|
|
28642
|
+
scheduleRender();
|
|
28643
|
+
};
|
|
27302
28644
|
const ensureRenderTargetEntries = () => {
|
|
27303
28645
|
var _a2;
|
|
27304
28646
|
renderTargetEntries.length = 0;
|
|
@@ -27456,188 +28798,9 @@ const createSpriteLayer = (options) => {
|
|
|
27456
28798
|
});
|
|
27457
28799
|
}
|
|
27458
28800
|
}
|
|
27459
|
-
|
|
27460
|
-
if (!buffer) {
|
|
27461
|
-
throw new Error("Failed to create vertex buffer.");
|
|
27462
|
-
}
|
|
27463
|
-
vertexBuffer = buffer;
|
|
27464
|
-
glContext.bindBuffer(glContext.ARRAY_BUFFER, vertexBuffer);
|
|
27465
|
-
glContext.bufferData(
|
|
27466
|
-
glContext.ARRAY_BUFFER,
|
|
27467
|
-
INITIAL_QUAD_VERTICES,
|
|
27468
|
-
glContext.DYNAMIC_DRAW
|
|
27469
|
-
);
|
|
27470
|
-
const shaderProgram = createShaderProgram(
|
|
27471
|
-
glContext,
|
|
27472
|
-
VERTEX_SHADER_SOURCE,
|
|
27473
|
-
FRAGMENT_SHADER_SOURCE
|
|
27474
|
-
);
|
|
27475
|
-
program = shaderProgram;
|
|
27476
|
-
glContext.useProgram(shaderProgram);
|
|
27477
|
-
attribPositionLocation = glContext.getAttribLocation(
|
|
27478
|
-
shaderProgram,
|
|
27479
|
-
"a_position"
|
|
27480
|
-
);
|
|
27481
|
-
attribUvLocation = glContext.getAttribLocation(shaderProgram, "a_uv");
|
|
27482
|
-
if (attribPositionLocation === -1 || attribUvLocation === -1) {
|
|
27483
|
-
throw new Error("Failed to acquire attribute locations.");
|
|
27484
|
-
}
|
|
27485
|
-
uniformTextureLocation = glContext.getUniformLocation(
|
|
27486
|
-
shaderProgram,
|
|
27487
|
-
"u_texture"
|
|
27488
|
-
);
|
|
27489
|
-
uniformOpacityLocation = glContext.getUniformLocation(
|
|
27490
|
-
shaderProgram,
|
|
27491
|
-
"u_opacity"
|
|
27492
|
-
);
|
|
27493
|
-
uniformScreenToClipScaleLocation = glContext.getUniformLocation(
|
|
27494
|
-
shaderProgram,
|
|
27495
|
-
"u_screenToClipScale"
|
|
27496
|
-
);
|
|
27497
|
-
uniformScreenToClipOffsetLocation = glContext.getUniformLocation(
|
|
27498
|
-
shaderProgram,
|
|
27499
|
-
"u_screenToClipOffset"
|
|
27500
|
-
);
|
|
27501
|
-
uniformBillboardModeLocation = glContext.getUniformLocation(
|
|
27502
|
-
shaderProgram,
|
|
27503
|
-
"u_billboardMode"
|
|
27504
|
-
);
|
|
27505
|
-
uniformBillboardCenterLocation = glContext.getUniformLocation(
|
|
27506
|
-
shaderProgram,
|
|
27507
|
-
"u_billboardCenter"
|
|
27508
|
-
);
|
|
27509
|
-
uniformBillboardHalfSizeLocation = glContext.getUniformLocation(
|
|
27510
|
-
shaderProgram,
|
|
27511
|
-
"u_billboardHalfSize"
|
|
27512
|
-
);
|
|
27513
|
-
uniformBillboardAnchorLocation = glContext.getUniformLocation(
|
|
27514
|
-
shaderProgram,
|
|
27515
|
-
"u_billboardAnchor"
|
|
27516
|
-
);
|
|
27517
|
-
uniformBillboardSinCosLocation = glContext.getUniformLocation(
|
|
27518
|
-
shaderProgram,
|
|
27519
|
-
"u_billboardSinCos"
|
|
27520
|
-
);
|
|
27521
|
-
uniformSurfaceModeLocation = glContext.getUniformLocation(
|
|
27522
|
-
shaderProgram,
|
|
27523
|
-
"u_surfaceMode"
|
|
27524
|
-
);
|
|
27525
|
-
uniformSurfaceDepthBiasLocation = glContext.getUniformLocation(
|
|
27526
|
-
shaderProgram,
|
|
27527
|
-
"u_surfaceDepthBias"
|
|
27528
|
-
);
|
|
27529
|
-
uniformSurfaceClipEnabledLocation = glContext.getUniformLocation(
|
|
27530
|
-
shaderProgram,
|
|
27531
|
-
"u_surfaceClipEnabled"
|
|
27532
|
-
);
|
|
27533
|
-
uniformSurfaceClipCenterLocation = glContext.getUniformLocation(
|
|
27534
|
-
shaderProgram,
|
|
27535
|
-
"u_surfaceClipCenter"
|
|
27536
|
-
);
|
|
27537
|
-
uniformSurfaceClipBasisEastLocation = glContext.getUniformLocation(
|
|
27538
|
-
shaderProgram,
|
|
27539
|
-
"u_surfaceClipBasisEast"
|
|
27540
|
-
);
|
|
27541
|
-
uniformSurfaceClipBasisNorthLocation = glContext.getUniformLocation(
|
|
27542
|
-
shaderProgram,
|
|
27543
|
-
"u_surfaceClipBasisNorth"
|
|
27544
|
-
);
|
|
27545
|
-
if (!uniformTextureLocation || !uniformOpacityLocation || !uniformScreenToClipScaleLocation || !uniformScreenToClipOffsetLocation || !uniformBillboardModeLocation || !uniformBillboardCenterLocation || !uniformBillboardHalfSizeLocation || !uniformBillboardAnchorLocation || !uniformBillboardSinCosLocation || !uniformSurfaceModeLocation || !uniformSurfaceDepthBiasLocation || !uniformSurfaceClipEnabledLocation || !uniformSurfaceClipCenterLocation || !uniformSurfaceClipBasisEastLocation || !uniformSurfaceClipBasisNorthLocation) {
|
|
27546
|
-
throw new Error("Failed to acquire uniform locations.");
|
|
27547
|
-
}
|
|
27548
|
-
glContext.enableVertexAttribArray(attribPositionLocation);
|
|
27549
|
-
glContext.vertexAttribPointer(
|
|
27550
|
-
attribPositionLocation,
|
|
27551
|
-
POSITION_COMPONENT_COUNT,
|
|
27552
|
-
glContext.FLOAT,
|
|
27553
|
-
false,
|
|
27554
|
-
VERTEX_STRIDE,
|
|
27555
|
-
0
|
|
27556
|
-
);
|
|
27557
|
-
glContext.enableVertexAttribArray(attribUvLocation);
|
|
27558
|
-
glContext.vertexAttribPointer(
|
|
27559
|
-
attribUvLocation,
|
|
27560
|
-
UV_COMPONENT_COUNT,
|
|
27561
|
-
glContext.FLOAT,
|
|
27562
|
-
false,
|
|
27563
|
-
VERTEX_STRIDE,
|
|
27564
|
-
UV_OFFSET
|
|
27565
|
-
);
|
|
27566
|
-
glContext.uniform1i(uniformTextureLocation, 0);
|
|
27567
|
-
glContext.uniform1f(uniformOpacityLocation, 1);
|
|
27568
|
-
glContext.uniform2f(uniformScreenToClipScaleLocation, 1, 1);
|
|
27569
|
-
glContext.uniform2f(uniformScreenToClipOffsetLocation, 0, 0);
|
|
27570
|
-
glContext.uniform1f(uniformSurfaceClipEnabledLocation, 0);
|
|
27571
|
-
glContext.uniform4f(uniformSurfaceClipCenterLocation, 0, 0, 0, 1);
|
|
27572
|
-
glContext.uniform4f(
|
|
27573
|
-
uniformSurfaceClipBasisEastLocation,
|
|
27574
|
-
0,
|
|
27575
|
-
0,
|
|
27576
|
-
0,
|
|
27577
|
-
0
|
|
27578
|
-
);
|
|
27579
|
-
glContext.uniform4f(
|
|
27580
|
-
uniformSurfaceClipBasisNorthLocation,
|
|
27581
|
-
0,
|
|
27582
|
-
0,
|
|
27583
|
-
0,
|
|
27584
|
-
0
|
|
27585
|
-
);
|
|
27586
|
-
glContext.uniform1f(uniformBillboardModeLocation, 0);
|
|
27587
|
-
glContext.uniform2f(uniformBillboardCenterLocation, 0, 0);
|
|
27588
|
-
glContext.uniform2f(uniformBillboardHalfSizeLocation, 0, 0);
|
|
27589
|
-
glContext.uniform2f(uniformBillboardAnchorLocation, 0, 0);
|
|
27590
|
-
glContext.uniform2f(uniformBillboardSinCosLocation, 0, 1);
|
|
27591
|
-
glContext.uniform1f(uniformSurfaceModeLocation, 0);
|
|
27592
|
-
glContext.uniform1f(uniformSurfaceDepthBiasLocation, 0);
|
|
27593
|
-
glContext.bindBuffer(glContext.ARRAY_BUFFER, null);
|
|
28801
|
+
spriteDrawProgram = createSpriteDrawProgram(glContext);
|
|
27594
28802
|
if (showDebugBounds) {
|
|
27595
|
-
|
|
27596
|
-
glContext,
|
|
27597
|
-
DEBUG_OUTLINE_VERTEX_SHADER_SOURCE,
|
|
27598
|
-
DEBUG_OUTLINE_FRAGMENT_SHADER_SOURCE
|
|
27599
|
-
);
|
|
27600
|
-
debugProgram = debugShaderProgram;
|
|
27601
|
-
debugAttribPositionLocation = glContext.getAttribLocation(
|
|
27602
|
-
debugShaderProgram,
|
|
27603
|
-
"a_position"
|
|
27604
|
-
);
|
|
27605
|
-
if (debugAttribPositionLocation === -1) {
|
|
27606
|
-
throw new Error("Failed to acquire debug attribute location.");
|
|
27607
|
-
}
|
|
27608
|
-
const colorLocation = glContext.getUniformLocation(
|
|
27609
|
-
debugShaderProgram,
|
|
27610
|
-
"u_color"
|
|
27611
|
-
);
|
|
27612
|
-
if (!colorLocation) {
|
|
27613
|
-
throw new Error("Failed to acquire debug color uniform.");
|
|
27614
|
-
}
|
|
27615
|
-
debugUniformColorLocation = colorLocation;
|
|
27616
|
-
debugUniformScreenToClipScaleLocation = glContext.getUniformLocation(
|
|
27617
|
-
debugShaderProgram,
|
|
27618
|
-
"u_screenToClipScale"
|
|
27619
|
-
);
|
|
27620
|
-
debugUniformScreenToClipOffsetLocation = glContext.getUniformLocation(
|
|
27621
|
-
debugShaderProgram,
|
|
27622
|
-
"u_screenToClipOffset"
|
|
27623
|
-
);
|
|
27624
|
-
if (!debugUniformScreenToClipScaleLocation || !debugUniformScreenToClipOffsetLocation) {
|
|
27625
|
-
throw new Error("Failed to acquire debug screen-to-clip uniforms.");
|
|
27626
|
-
}
|
|
27627
|
-
glContext.uniform2f(debugUniformScreenToClipScaleLocation, 1, 1);
|
|
27628
|
-
glContext.uniform2f(debugUniformScreenToClipOffsetLocation, 0, 0);
|
|
27629
|
-
const outlineBuffer = glContext.createBuffer();
|
|
27630
|
-
if (!outlineBuffer) {
|
|
27631
|
-
throw new Error("Failed to create debug vertex buffer.");
|
|
27632
|
-
}
|
|
27633
|
-
debugVertexBuffer = outlineBuffer;
|
|
27634
|
-
glContext.bindBuffer(glContext.ARRAY_BUFFER, outlineBuffer);
|
|
27635
|
-
glContext.bufferData(
|
|
27636
|
-
glContext.ARRAY_BUFFER,
|
|
27637
|
-
DEBUG_OUTLINE_VERTEX_SCRATCH,
|
|
27638
|
-
glContext.DYNAMIC_DRAW
|
|
27639
|
-
);
|
|
27640
|
-
glContext.bindBuffer(glContext.ARRAY_BUFFER, null);
|
|
28803
|
+
debugOutlineRenderer = createDebugOutlineRenderer(glContext);
|
|
27641
28804
|
}
|
|
27642
28805
|
scheduleRender();
|
|
27643
28806
|
};
|
|
@@ -27651,51 +28814,28 @@ const createSpriteLayer = (options) => {
|
|
|
27651
28814
|
hitTestTreeItems = /* @__PURE__ */ new WeakMap();
|
|
27652
28815
|
const glContext = gl;
|
|
27653
28816
|
if (glContext) {
|
|
28817
|
+
atlasPageTextures.forEach((texture) => {
|
|
28818
|
+
glContext.deleteTexture(texture);
|
|
28819
|
+
});
|
|
28820
|
+
atlasPageTextures.clear();
|
|
27654
28821
|
images.forEach((image) => {
|
|
27655
|
-
if (image.texture) {
|
|
27656
|
-
glContext.deleteTexture(image.texture);
|
|
27657
|
-
}
|
|
27658
28822
|
image.texture = void 0;
|
|
27659
|
-
queueTextureUpload(image);
|
|
27660
28823
|
});
|
|
27661
|
-
|
|
27662
|
-
|
|
28824
|
+
atlasNeedsUpload = true;
|
|
28825
|
+
if (spriteDrawProgram) {
|
|
28826
|
+
spriteDrawProgram.release();
|
|
28827
|
+
spriteDrawProgram = null;
|
|
27663
28828
|
}
|
|
27664
|
-
if (
|
|
27665
|
-
|
|
27666
|
-
|
|
27667
|
-
if (program) {
|
|
27668
|
-
glContext.deleteProgram(program);
|
|
27669
|
-
}
|
|
27670
|
-
if (debugProgram) {
|
|
27671
|
-
glContext.deleteProgram(debugProgram);
|
|
28829
|
+
if (debugOutlineRenderer) {
|
|
28830
|
+
debugOutlineRenderer.release();
|
|
28831
|
+
debugOutlineRenderer = null;
|
|
27672
28832
|
}
|
|
27673
28833
|
}
|
|
27674
28834
|
eventListeners.forEach((set) => set.clear());
|
|
27675
28835
|
eventListeners.clear();
|
|
27676
28836
|
gl = null;
|
|
27677
28837
|
map = null;
|
|
27678
|
-
|
|
27679
|
-
vertexBuffer = null;
|
|
27680
|
-
debugProgram = null;
|
|
27681
|
-
debugVertexBuffer = null;
|
|
27682
|
-
attribPositionLocation = -1;
|
|
27683
|
-
attribUvLocation = -1;
|
|
27684
|
-
debugAttribPositionLocation = -1;
|
|
27685
|
-
uniformTextureLocation = null;
|
|
27686
|
-
uniformOpacityLocation = null;
|
|
27687
|
-
uniformScreenToClipScaleLocation = null;
|
|
27688
|
-
uniformScreenToClipOffsetLocation = null;
|
|
27689
|
-
uniformBillboardModeLocation = null;
|
|
27690
|
-
uniformBillboardCenterLocation = null;
|
|
27691
|
-
uniformBillboardHalfSizeLocation = null;
|
|
27692
|
-
uniformBillboardAnchorLocation = null;
|
|
27693
|
-
uniformBillboardSinCosLocation = null;
|
|
27694
|
-
uniformSurfaceModeLocation = null;
|
|
27695
|
-
uniformSurfaceDepthBiasLocation = null;
|
|
27696
|
-
debugUniformColorLocation = null;
|
|
27697
|
-
debugUniformScreenToClipScaleLocation = null;
|
|
27698
|
-
debugUniformScreenToClipOffsetLocation = null;
|
|
28838
|
+
debugOutlineRenderer = null;
|
|
27699
28839
|
anisotropyExtension = null;
|
|
27700
28840
|
maxSupportedAnisotropy = 1;
|
|
27701
28841
|
};
|
|
@@ -27704,10 +28844,7 @@ const createSpriteLayer = (options) => {
|
|
|
27704
28844
|
hitTestEntries.length = 0;
|
|
27705
28845
|
hitTestEntryByImage = /* @__PURE__ */ new WeakMap();
|
|
27706
28846
|
const mapInstance = map;
|
|
27707
|
-
if (!mapInstance || !
|
|
27708
|
-
return;
|
|
27709
|
-
}
|
|
27710
|
-
if (!uniformOpacityLocation || !uniformTextureLocation || !uniformScreenToClipScaleLocation || !uniformScreenToClipOffsetLocation) {
|
|
28847
|
+
if (!mapInstance || !spriteDrawProgram) {
|
|
27711
28848
|
return;
|
|
27712
28849
|
}
|
|
27713
28850
|
const timestamp = typeof performance !== "undefined" && typeof performance.now === "function" ? (
|
|
@@ -27785,164 +28922,16 @@ const createSpriteLayer = (options) => {
|
|
|
27785
28922
|
glContext.blendFunc(glContext.SRC_ALPHA, glContext.ONE_MINUS_SRC_ALPHA);
|
|
27786
28923
|
glContext.disable(glContext.DEPTH_TEST);
|
|
27787
28924
|
glContext.depthMask(false);
|
|
27788
|
-
|
|
27789
|
-
|
|
27790
|
-
glContext.enableVertexAttribArray(attribPositionLocation);
|
|
27791
|
-
glContext.vertexAttribPointer(
|
|
27792
|
-
attribPositionLocation,
|
|
27793
|
-
POSITION_COMPONENT_COUNT,
|
|
27794
|
-
glContext.FLOAT,
|
|
27795
|
-
false,
|
|
27796
|
-
VERTEX_STRIDE,
|
|
27797
|
-
0
|
|
27798
|
-
);
|
|
27799
|
-
glContext.enableVertexAttribArray(attribUvLocation);
|
|
27800
|
-
glContext.vertexAttribPointer(
|
|
27801
|
-
attribUvLocation,
|
|
27802
|
-
UV_COMPONENT_COUNT,
|
|
27803
|
-
glContext.FLOAT,
|
|
27804
|
-
false,
|
|
27805
|
-
VERTEX_STRIDE,
|
|
27806
|
-
UV_OFFSET
|
|
27807
|
-
);
|
|
27808
|
-
glContext.uniform1i(uniformTextureLocation, 0);
|
|
27809
|
-
const screenToClipScaleLocation = uniformScreenToClipScaleLocation;
|
|
27810
|
-
const screenToClipOffsetLocation = uniformScreenToClipOffsetLocation;
|
|
27811
|
-
let currentScaleX = Number.NaN;
|
|
27812
|
-
let currentScaleY = Number.NaN;
|
|
27813
|
-
let currentOffsetX = Number.NaN;
|
|
27814
|
-
let currentOffsetY = Number.NaN;
|
|
27815
|
-
const applyScreenToClipUniforms = (scaleX, scaleY, offsetX, offsetY) => {
|
|
27816
|
-
if (scaleX !== currentScaleX || scaleY !== currentScaleY || offsetX !== currentOffsetX || offsetY !== currentOffsetY) {
|
|
27817
|
-
glContext.uniform2f(screenToClipScaleLocation, scaleX, scaleY);
|
|
27818
|
-
glContext.uniform2f(screenToClipOffsetLocation, offsetX, offsetY);
|
|
27819
|
-
currentScaleX = scaleX;
|
|
27820
|
-
currentScaleY = scaleY;
|
|
27821
|
-
currentOffsetX = offsetX;
|
|
27822
|
-
currentOffsetY = offsetY;
|
|
27823
|
-
}
|
|
27824
|
-
};
|
|
27825
|
-
let currentSurfaceMode = Number.NaN;
|
|
27826
|
-
const applySurfaceMode = (enabled) => {
|
|
27827
|
-
if (!uniformSurfaceModeLocation) {
|
|
27828
|
-
return;
|
|
27829
|
-
}
|
|
27830
|
-
const value = enabled ? 1 : 0;
|
|
27831
|
-
if (value !== currentSurfaceMode) {
|
|
27832
|
-
glContext.uniform1f(uniformSurfaceModeLocation, value);
|
|
27833
|
-
currentSurfaceMode = value;
|
|
27834
|
-
}
|
|
27835
|
-
};
|
|
27836
|
-
let currentSurfaceClipEnabled = Number.NaN;
|
|
27837
|
-
const applySurfaceClipUniforms = (enabled, inputs) => {
|
|
27838
|
-
if (!uniformSurfaceClipEnabledLocation || !uniformSurfaceClipCenterLocation || !uniformSurfaceClipBasisEastLocation || !uniformSurfaceClipBasisNorthLocation) {
|
|
27839
|
-
return;
|
|
27840
|
-
}
|
|
27841
|
-
const value = enabled ? 1 : 0;
|
|
27842
|
-
if (value !== currentSurfaceClipEnabled) {
|
|
27843
|
-
glContext.uniform1f(uniformSurfaceClipEnabledLocation, value);
|
|
27844
|
-
currentSurfaceClipEnabled = value;
|
|
27845
|
-
}
|
|
27846
|
-
const clipCenter = enabled && inputs ? inputs.clipCenter : { x: 0, y: 0, z: 0, w: 1 };
|
|
27847
|
-
glContext.uniform4f(
|
|
27848
|
-
uniformSurfaceClipCenterLocation,
|
|
27849
|
-
clipCenter.x,
|
|
27850
|
-
clipCenter.y,
|
|
27851
|
-
clipCenter.z,
|
|
27852
|
-
clipCenter.w
|
|
27853
|
-
);
|
|
27854
|
-
const clipBasisEast = enabled && inputs ? inputs.clipBasisEast : { x: 0, y: 0, z: 0, w: 0 };
|
|
27855
|
-
glContext.uniform4f(
|
|
27856
|
-
uniformSurfaceClipBasisEastLocation,
|
|
27857
|
-
clipBasisEast.x,
|
|
27858
|
-
clipBasisEast.y,
|
|
27859
|
-
clipBasisEast.z,
|
|
27860
|
-
clipBasisEast.w
|
|
27861
|
-
);
|
|
27862
|
-
const clipBasisNorth = enabled && inputs ? inputs.clipBasisNorth : { x: 0, y: 0, z: 0, w: 0 };
|
|
27863
|
-
glContext.uniform4f(
|
|
27864
|
-
uniformSurfaceClipBasisNorthLocation,
|
|
27865
|
-
clipBasisNorth.x,
|
|
27866
|
-
clipBasisNorth.y,
|
|
27867
|
-
clipBasisNorth.z,
|
|
27868
|
-
clipBasisNorth.w
|
|
27869
|
-
);
|
|
27870
|
-
};
|
|
28925
|
+
const drawProgram = spriteDrawProgram;
|
|
28926
|
+
drawProgram.beginFrame();
|
|
27871
28927
|
let drawOrderCounter = 0;
|
|
27872
|
-
const
|
|
27873
|
-
|
|
27874
|
-
|
|
27875
|
-
|
|
27876
|
-
screenToClip.scaleY,
|
|
27877
|
-
screenToClip.offsetX,
|
|
27878
|
-
screenToClip.offsetY
|
|
27879
|
-
);
|
|
27880
|
-
applySurfaceMode(prepared.useShaderSurface);
|
|
27881
|
-
const surfaceInputs = prepared.surfaceShaderInputs;
|
|
27882
|
-
if (prepared.useShaderSurface && surfaceInputs) {
|
|
27883
|
-
if (uniformSurfaceDepthBiasLocation) {
|
|
27884
|
-
glContext.uniform1f(
|
|
27885
|
-
uniformSurfaceDepthBiasLocation,
|
|
27886
|
-
surfaceInputs.depthBiasNdc
|
|
27887
|
-
);
|
|
27888
|
-
}
|
|
27889
|
-
applySurfaceClipUniforms(
|
|
27890
|
-
prepared.surfaceClipEnabled,
|
|
27891
|
-
prepared.surfaceClipEnabled ? surfaceInputs : null
|
|
27892
|
-
);
|
|
27893
|
-
} else {
|
|
27894
|
-
if (uniformSurfaceDepthBiasLocation) {
|
|
27895
|
-
glContext.uniform1f(uniformSurfaceDepthBiasLocation, 0);
|
|
27896
|
-
}
|
|
27897
|
-
applySurfaceClipUniforms(false, null);
|
|
27898
|
-
}
|
|
27899
|
-
if (uniformBillboardModeLocation) {
|
|
27900
|
-
glContext.uniform1f(
|
|
27901
|
-
uniformBillboardModeLocation,
|
|
27902
|
-
prepared.useShaderBillboard ? 1 : 0
|
|
27903
|
-
);
|
|
27904
|
-
}
|
|
27905
|
-
if (prepared.useShaderBillboard && prepared.billboardUniforms) {
|
|
27906
|
-
const uniforms = prepared.billboardUniforms;
|
|
27907
|
-
if (uniformBillboardCenterLocation) {
|
|
27908
|
-
glContext.uniform2f(
|
|
27909
|
-
uniformBillboardCenterLocation,
|
|
27910
|
-
uniforms.center.x,
|
|
27911
|
-
uniforms.center.y
|
|
27912
|
-
);
|
|
27913
|
-
}
|
|
27914
|
-
if (uniformBillboardHalfSizeLocation) {
|
|
27915
|
-
glContext.uniform2f(
|
|
27916
|
-
uniformBillboardHalfSizeLocation,
|
|
27917
|
-
uniforms.halfWidth,
|
|
27918
|
-
uniforms.halfHeight
|
|
27919
|
-
);
|
|
27920
|
-
}
|
|
27921
|
-
if (uniformBillboardAnchorLocation) {
|
|
27922
|
-
glContext.uniform2f(
|
|
27923
|
-
uniformBillboardAnchorLocation,
|
|
27924
|
-
uniforms.anchor.x,
|
|
27925
|
-
uniforms.anchor.y
|
|
27926
|
-
);
|
|
27927
|
-
}
|
|
27928
|
-
if (uniformBillboardSinCosLocation) {
|
|
27929
|
-
glContext.uniform2f(
|
|
27930
|
-
uniformBillboardSinCosLocation,
|
|
27931
|
-
uniforms.sin,
|
|
27932
|
-
uniforms.cos
|
|
27933
|
-
);
|
|
27934
|
-
}
|
|
27935
|
-
}
|
|
27936
|
-
const texture = prepared.imageResource.texture;
|
|
27937
|
-
if (!texture) {
|
|
28928
|
+
const drawPreparedSprite = (prepared) => {
|
|
28929
|
+
var _a2;
|
|
28930
|
+
const didDraw = drawProgram.draw(prepared);
|
|
28931
|
+
if (!didDraw) {
|
|
27938
28932
|
return;
|
|
27939
28933
|
}
|
|
27940
|
-
|
|
27941
|
-
glContext.uniform1f(uniformOpacityLocation, prepared.opacity);
|
|
27942
|
-
glContext.activeTexture(glContext.TEXTURE0);
|
|
27943
|
-
glContext.bindTexture(glContext.TEXTURE_2D, texture);
|
|
27944
|
-
glContext.drawArrays(glContext.TRIANGLES, 0, QUAD_VERTEX_COUNT);
|
|
27945
|
-
prepared.imageEntry.surfaceShaderInputs = surfaceInputs != null ? surfaceInputs : void 0;
|
|
28934
|
+
prepared.imageEntry.surfaceShaderInputs = (_a2 = prepared.surfaceShaderInputs) != null ? _a2 : void 0;
|
|
27946
28935
|
if (prepared.hitTestCorners && prepared.hitTestCorners.length === 4) {
|
|
27947
28936
|
registerHitTestEntry(
|
|
27948
28937
|
prepared.spriteEntry,
|
|
@@ -27988,6 +28977,7 @@ const createSpriteLayer = (options) => {
|
|
|
27988
28977
|
screenToClipOffsetX,
|
|
27989
28978
|
screenToClipOffsetY
|
|
27990
28979
|
});
|
|
28980
|
+
drawProgram.uploadVertexBatch(preparedItems);
|
|
27991
28981
|
const preparedBySubLayer = /* @__PURE__ */ new Map();
|
|
27992
28982
|
for (const prepared of preparedItems) {
|
|
27993
28983
|
const subLayer = prepared.imageEntry.subLayer;
|
|
@@ -28012,70 +29002,24 @@ const createSpriteLayer = (options) => {
|
|
|
28012
29002
|
continue;
|
|
28013
29003
|
}
|
|
28014
29004
|
bucketImages.delete(prepared.imageEntry);
|
|
28015
|
-
|
|
29005
|
+
drawPreparedSprite(prepared);
|
|
28016
29006
|
}
|
|
28017
29007
|
}
|
|
28018
29008
|
} finally {
|
|
28019
29009
|
calculationHost.release();
|
|
28020
29010
|
}
|
|
28021
29011
|
}
|
|
28022
|
-
if (showDebugBounds &&
|
|
28023
|
-
|
|
28024
|
-
|
|
28025
|
-
|
|
28026
|
-
|
|
28027
|
-
|
|
28028
|
-
DEBUG_OUTLINE_POSITION_COMPONENT_COUNT,
|
|
28029
|
-
glContext.FLOAT,
|
|
28030
|
-
false,
|
|
28031
|
-
DEBUG_OUTLINE_VERTEX_STRIDE,
|
|
28032
|
-
0
|
|
29012
|
+
if (showDebugBounds && debugOutlineRenderer) {
|
|
29013
|
+
debugOutlineRenderer.begin(
|
|
29014
|
+
screenToClipScaleX,
|
|
29015
|
+
screenToClipScaleY,
|
|
29016
|
+
screenToClipOffsetX,
|
|
29017
|
+
screenToClipOffsetY
|
|
28033
29018
|
);
|
|
28034
|
-
glContext.disable(glContext.DEPTH_TEST);
|
|
28035
|
-
glContext.depthMask(false);
|
|
28036
|
-
glContext.uniform4f(
|
|
28037
|
-
debugUniformColorLocation,
|
|
28038
|
-
DEBUG_OUTLINE_COLOR[0],
|
|
28039
|
-
DEBUG_OUTLINE_COLOR[1],
|
|
28040
|
-
DEBUG_OUTLINE_COLOR[2],
|
|
28041
|
-
DEBUG_OUTLINE_COLOR[3]
|
|
28042
|
-
);
|
|
28043
|
-
if (debugUniformScreenToClipScaleLocation && debugUniformScreenToClipOffsetLocation) {
|
|
28044
|
-
glContext.uniform2f(
|
|
28045
|
-
debugUniformScreenToClipScaleLocation,
|
|
28046
|
-
screenToClipScaleX,
|
|
28047
|
-
screenToClipScaleY
|
|
28048
|
-
);
|
|
28049
|
-
glContext.uniform2f(
|
|
28050
|
-
debugUniformScreenToClipOffsetLocation,
|
|
28051
|
-
screenToClipOffsetX,
|
|
28052
|
-
screenToClipOffsetY
|
|
28053
|
-
);
|
|
28054
|
-
}
|
|
28055
29019
|
for (const entry of hitTestEntries) {
|
|
28056
|
-
|
|
28057
|
-
for (const cornerIndex of DEBUG_OUTLINE_CORNER_ORDER) {
|
|
28058
|
-
const corner = entry.corners[cornerIndex];
|
|
28059
|
-
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = corner.x;
|
|
28060
|
-
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = corner.y;
|
|
28061
|
-
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = 0;
|
|
28062
|
-
DEBUG_OUTLINE_VERTEX_SCRATCH[writeOffset++] = 1;
|
|
28063
|
-
}
|
|
28064
|
-
glContext.bufferSubData(
|
|
28065
|
-
glContext.ARRAY_BUFFER,
|
|
28066
|
-
0,
|
|
28067
|
-
DEBUG_OUTLINE_VERTEX_SCRATCH
|
|
28068
|
-
);
|
|
28069
|
-
glContext.drawArrays(
|
|
28070
|
-
glContext.LINE_LOOP,
|
|
28071
|
-
0,
|
|
28072
|
-
DEBUG_OUTLINE_VERTEX_COUNT
|
|
28073
|
-
);
|
|
29020
|
+
debugOutlineRenderer.drawOutline(entry.corners);
|
|
28074
29021
|
}
|
|
28075
|
-
|
|
28076
|
-
glContext.enable(glContext.DEPTH_TEST);
|
|
28077
|
-
glContext.disableVertexAttribArray(debugAttribPositionLocation);
|
|
28078
|
-
glContext.bindBuffer(glContext.ARRAY_BUFFER, null);
|
|
29022
|
+
debugOutlineRenderer.end();
|
|
28079
29023
|
}
|
|
28080
29024
|
} finally {
|
|
28081
29025
|
projectionHost.release();
|
|
@@ -28084,7 +29028,8 @@ const createSpriteLayer = (options) => {
|
|
|
28084
29028
|
glContext.enable(glContext.DEPTH_TEST);
|
|
28085
29029
|
glContext.disable(glContext.BLEND);
|
|
28086
29030
|
};
|
|
28087
|
-
const registerImage = async (imageId, imageSource, options2) => {
|
|
29031
|
+
const registerImage = async (imageId, imageSource, options2, signal) => {
|
|
29032
|
+
var _a2;
|
|
28088
29033
|
let bitmap;
|
|
28089
29034
|
try {
|
|
28090
29035
|
bitmap = typeof imageSource === "string" ? await loadImageBitmap(imageSource, options2) : imageSource;
|
|
@@ -28108,21 +29053,37 @@ const createSpriteLayer = (options) => {
|
|
|
28108
29053
|
width: bitmap.width,
|
|
28109
29054
|
height: bitmap.height,
|
|
28110
29055
|
bitmap,
|
|
28111
|
-
texture: void 0
|
|
29056
|
+
texture: void 0,
|
|
29057
|
+
atlasPageIndex: ATLAS_PAGE_INDEX_NONE,
|
|
29058
|
+
atlasU0: 0,
|
|
29059
|
+
atlasV0: 0,
|
|
29060
|
+
atlasU1: 1,
|
|
29061
|
+
atlasV1: 1
|
|
28112
29062
|
};
|
|
28113
29063
|
images.set(imageId, image);
|
|
28114
29064
|
imageIdHandler.store(handle, image);
|
|
28115
29065
|
updateSpriteImageHandles(imageId, handle);
|
|
28116
29066
|
imageHandleBuffersController.markDirty(images);
|
|
28117
|
-
|
|
28118
|
-
|
|
28119
|
-
|
|
28120
|
-
|
|
28121
|
-
|
|
28122
|
-
|
|
28123
|
-
|
|
28124
|
-
|
|
29067
|
+
const deferred = createDeferred();
|
|
29068
|
+
const abortHandle = signal ? onAbort(signal, (error) => {
|
|
29069
|
+
deferred.reject(error);
|
|
29070
|
+
}) : null;
|
|
29071
|
+
atlasQueue.enqueueUpsert({ imageId, bitmap, deferred });
|
|
29072
|
+
try {
|
|
29073
|
+
return await deferred.promise;
|
|
29074
|
+
} catch (e) {
|
|
29075
|
+
images.delete(imageId);
|
|
29076
|
+
imageIdHandler.release(imageId);
|
|
29077
|
+
updateSpriteImageHandles(imageId, 0);
|
|
29078
|
+
imageHandleBuffersController.markDirty(images);
|
|
29079
|
+
atlasManager.removeImage(imageId);
|
|
29080
|
+
(_a2 = bitmap.close) == null ? void 0 : _a2.call(bitmap);
|
|
29081
|
+
throw e;
|
|
29082
|
+
} finally {
|
|
29083
|
+
abortHandle == null ? void 0 : abortHandle.release();
|
|
28125
29084
|
}
|
|
29085
|
+
};
|
|
29086
|
+
const renderTextGlyphBitmap = async (text, dimensions, options2) => {
|
|
28126
29087
|
let lineHeight;
|
|
28127
29088
|
let maxWidth;
|
|
28128
29089
|
const isLineHeightMode = "lineHeightPixel" in dimensions;
|
|
@@ -28149,13 +29110,13 @@ const createSpriteLayer = (options) => {
|
|
|
28149
29110
|
);
|
|
28150
29111
|
let contentWidthLimit;
|
|
28151
29112
|
if (!isLineHeightMode && typeof maxWidth === "number") {
|
|
28152
|
-
const
|
|
28153
|
-
const
|
|
29113
|
+
const padding = resolved.paddingPixel;
|
|
29114
|
+
const borderWidth = resolved.borderWidthPixel;
|
|
28154
29115
|
const glyphCount = Array.from(text).length;
|
|
28155
29116
|
const letterSpacingTotal = letterSpacing * Math.max(glyphCount - 1, 0);
|
|
28156
29117
|
contentWidthLimit = Math.max(
|
|
28157
29118
|
1,
|
|
28158
|
-
maxWidth -
|
|
29119
|
+
maxWidth - borderWidth - padding.left - padding.right
|
|
28159
29120
|
);
|
|
28160
29121
|
if (contentWidthLimit < letterSpacingTotal) {
|
|
28161
29122
|
contentWidthLimit = letterSpacingTotal;
|
|
@@ -28201,20 +29162,18 @@ const createSpriteLayer = (options) => {
|
|
|
28201
29162
|
letterSpacing
|
|
28202
29163
|
);
|
|
28203
29164
|
const measuredHeight = measureTextHeight(measureCtx, text, fontSize);
|
|
28204
|
-
const
|
|
28205
|
-
const
|
|
28206
|
-
const contentHeight = isLineHeightMode ? (
|
|
28207
|
-
// When the caller provided an explicit line height, honour it directly.
|
|
28208
|
-
lineHeight
|
|
28209
|
-
) : (
|
|
28210
|
-
// Otherwise base the height on measured text metrics.
|
|
28211
|
-
clampGlyphDimension(Math.ceil(measuredHeight))
|
|
28212
|
-
);
|
|
29165
|
+
const paddingPixel = resolved.paddingPixel;
|
|
29166
|
+
const borderWidthPixel = resolved.borderWidthPixel;
|
|
29167
|
+
const contentHeight = isLineHeightMode ? lineHeight : clampGlyphDimension(Math.ceil(measuredHeight));
|
|
28213
29168
|
const totalWidth = clampGlyphDimension(
|
|
28214
|
-
Math.ceil(
|
|
29169
|
+
Math.ceil(
|
|
29170
|
+
borderWidthPixel + paddingPixel.left + paddingPixel.right + measuredWidth
|
|
29171
|
+
)
|
|
28215
29172
|
);
|
|
28216
29173
|
const totalHeight = clampGlyphDimension(
|
|
28217
|
-
Math.ceil(
|
|
29174
|
+
Math.ceil(
|
|
29175
|
+
borderWidthPixel + paddingPixel.top + paddingPixel.bottom + contentHeight
|
|
29176
|
+
)
|
|
28218
29177
|
);
|
|
28219
29178
|
const renderPixelRatio = resolved.renderPixelRatio;
|
|
28220
29179
|
const renderWidth = Math.max(1, Math.round(totalWidth * renderPixelRatio));
|
|
@@ -28238,10 +29197,10 @@ const createSpriteLayer = (options) => {
|
|
|
28238
29197
|
resolved.backgroundColor
|
|
28239
29198
|
);
|
|
28240
29199
|
}
|
|
28241
|
-
if (resolved.borderColor &&
|
|
28242
|
-
const inset =
|
|
28243
|
-
const strokeWidth = Math.max(0, totalWidth -
|
|
28244
|
-
const strokeHeight = Math.max(0, totalHeight -
|
|
29200
|
+
if (resolved.borderColor && borderWidthPixel > 0) {
|
|
29201
|
+
const inset = borderWidthPixel / 2;
|
|
29202
|
+
const strokeWidth = Math.max(0, totalWidth - borderWidthPixel);
|
|
29203
|
+
const strokeHeight = Math.max(0, totalHeight - borderWidthPixel);
|
|
28245
29204
|
const strokeRadius = Math.max(0, resolved.borderRadiusPixel - inset);
|
|
28246
29205
|
ctx.save();
|
|
28247
29206
|
ctx.translate(inset, inset);
|
|
@@ -28251,22 +29210,22 @@ const createSpriteLayer = (options) => {
|
|
|
28251
29210
|
strokeHeight,
|
|
28252
29211
|
strokeRadius,
|
|
28253
29212
|
resolved.borderColor,
|
|
28254
|
-
|
|
29213
|
+
borderWidthPixel,
|
|
28255
29214
|
resolved.borderSides
|
|
28256
29215
|
);
|
|
28257
29216
|
ctx.restore();
|
|
28258
29217
|
}
|
|
28259
|
-
const borderInset =
|
|
29218
|
+
const borderInset = borderWidthPixel / 2;
|
|
28260
29219
|
const contentWidth = Math.max(
|
|
28261
29220
|
0,
|
|
28262
|
-
totalWidth -
|
|
29221
|
+
totalWidth - borderWidthPixel - paddingPixel.left - paddingPixel.right
|
|
28263
29222
|
);
|
|
28264
29223
|
const contentHeightInner = Math.max(
|
|
28265
29224
|
0,
|
|
28266
|
-
totalHeight -
|
|
29225
|
+
totalHeight - borderWidthPixel - paddingPixel.top - paddingPixel.bottom
|
|
28267
29226
|
);
|
|
28268
|
-
const contentLeft = borderInset +
|
|
28269
|
-
const contentTop = borderInset +
|
|
29227
|
+
const contentLeft = borderInset + paddingPixel.left;
|
|
29228
|
+
const contentTop = borderInset + paddingPixel.top;
|
|
28270
29229
|
const textY = contentTop + contentHeightInner / 2;
|
|
28271
29230
|
const renderOptions = { ...resolved, fontSizePixel: fontSize };
|
|
28272
29231
|
ctx.font = buildFontString(renderOptions);
|
|
@@ -28301,29 +29260,56 @@ const createSpriteLayer = (options) => {
|
|
|
28301
29260
|
totalHeight,
|
|
28302
29261
|
renderPixelRatio
|
|
28303
29262
|
);
|
|
28304
|
-
|
|
28305
|
-
|
|
28306
|
-
|
|
28307
|
-
|
|
28308
|
-
|
|
28309
|
-
|
|
28310
|
-
|
|
28311
|
-
|
|
28312
|
-
|
|
28313
|
-
|
|
28314
|
-
|
|
28315
|
-
|
|
28316
|
-
|
|
28317
|
-
|
|
28318
|
-
|
|
28319
|
-
|
|
28320
|
-
|
|
29263
|
+
return { bitmap, width: totalWidth, height: totalHeight };
|
|
29264
|
+
};
|
|
29265
|
+
const registerTextGlyph = async (textGlyphId, text, dimensions, options2, signal) => {
|
|
29266
|
+
if (images.has(textGlyphId) || pendingTextGlyphIds.has(textGlyphId)) {
|
|
29267
|
+
return true;
|
|
29268
|
+
}
|
|
29269
|
+
pendingTextGlyphIds.add(textGlyphId);
|
|
29270
|
+
const deferred = createDeferred();
|
|
29271
|
+
let glyphAbortHandle = null;
|
|
29272
|
+
if (signal) {
|
|
29273
|
+
glyphAbortHandle = onAbort(signal, (error) => {
|
|
29274
|
+
cancelPendingTextGlyphJob(textGlyphId, error);
|
|
29275
|
+
});
|
|
29276
|
+
}
|
|
29277
|
+
enqueueTextGlyphJob({
|
|
29278
|
+
glyphId: textGlyphId,
|
|
29279
|
+
text,
|
|
29280
|
+
dimensions,
|
|
29281
|
+
options: options2,
|
|
29282
|
+
deferred,
|
|
29283
|
+
signal,
|
|
29284
|
+
abortHandle: glyphAbortHandle
|
|
29285
|
+
});
|
|
29286
|
+
try {
|
|
29287
|
+
return await deferred.promise;
|
|
29288
|
+
} finally {
|
|
29289
|
+
pendingTextGlyphIds.delete(textGlyphId);
|
|
29290
|
+
}
|
|
28321
29291
|
};
|
|
28322
29292
|
const unregisterImage = (imageId) => {
|
|
29293
|
+
var _a2, _b;
|
|
28323
29294
|
const image = images.get(imageId);
|
|
28324
29295
|
if (!image) {
|
|
29296
|
+
if (pendingTextGlyphIds.has(imageId)) {
|
|
29297
|
+
cancelPendingTextGlyphJob(
|
|
29298
|
+
imageId,
|
|
29299
|
+
new Error(
|
|
29300
|
+
`[SpriteLayer][GlyphQueue] Image "${imageId}" was unregistered before generation.`
|
|
29301
|
+
)
|
|
29302
|
+
);
|
|
29303
|
+
return true;
|
|
29304
|
+
}
|
|
28325
29305
|
return false;
|
|
28326
29306
|
}
|
|
29307
|
+
atlasQueue.cancelForImage(
|
|
29308
|
+
imageId,
|
|
29309
|
+
new Error(
|
|
29310
|
+
`[SpriteLayer][Atlas] Image "${imageId}" was unregistered before placement.`
|
|
29311
|
+
)
|
|
29312
|
+
);
|
|
28327
29313
|
sprites.forEach((sprite) => {
|
|
28328
29314
|
sprite.images.forEach((orderMap) => {
|
|
28329
29315
|
orderMap.forEach((imageState) => {
|
|
@@ -28333,31 +29319,45 @@ const createSpriteLayer = (options) => {
|
|
|
28333
29319
|
});
|
|
28334
29320
|
});
|
|
28335
29321
|
});
|
|
28336
|
-
|
|
28337
|
-
|
|
28338
|
-
glContext.deleteTexture(image.texture);
|
|
29322
|
+
if (image.bitmap) {
|
|
29323
|
+
(_b = (_a2 = image.bitmap).close) == null ? void 0 : _b.call(_a2);
|
|
28339
29324
|
}
|
|
28340
|
-
cancelQueuedTextureUpload(imageId);
|
|
28341
29325
|
images.delete(imageId);
|
|
28342
29326
|
imageIdHandler.release(imageId);
|
|
28343
29327
|
updateSpriteImageHandles(imageId, 0);
|
|
28344
29328
|
imageHandleBuffersController.markDirty(images);
|
|
29329
|
+
atlasManager.removeImage(imageId);
|
|
29330
|
+
syncAtlasPlacementsFromManager();
|
|
28345
29331
|
ensureRenderTargetEntries();
|
|
28346
29332
|
scheduleRender();
|
|
28347
29333
|
return true;
|
|
28348
29334
|
};
|
|
28349
29335
|
const unregisterAllImages = () => {
|
|
29336
|
+
rejectAllPendingTextGlyphJobs(
|
|
29337
|
+
new Error(
|
|
29338
|
+
"[SpriteLayer][GlyphQueue] Pending glyph operations were cleared."
|
|
29339
|
+
)
|
|
29340
|
+
);
|
|
29341
|
+
pendingTextGlyphIds.clear();
|
|
29342
|
+
atlasQueue.rejectAll(
|
|
29343
|
+
new Error("[SpriteLayer][Atlas] Pending atlas operations were cleared.")
|
|
29344
|
+
);
|
|
28350
29345
|
const glContext = gl;
|
|
29346
|
+
atlasPageTextures.forEach((texture) => {
|
|
29347
|
+
if (glContext) {
|
|
29348
|
+
glContext.deleteTexture(texture);
|
|
29349
|
+
}
|
|
29350
|
+
});
|
|
29351
|
+
atlasPageTextures.clear();
|
|
28351
29352
|
images.forEach((image) => {
|
|
28352
29353
|
var _a2, _b;
|
|
28353
|
-
if (glContext && image.texture) {
|
|
28354
|
-
glContext.deleteTexture(image.texture);
|
|
28355
|
-
}
|
|
28356
29354
|
if (image.bitmap) {
|
|
28357
29355
|
(_b = (_a2 = image.bitmap).close) == null ? void 0 : _b.call(_a2);
|
|
28358
29356
|
}
|
|
28359
29357
|
});
|
|
28360
29358
|
images.clear();
|
|
29359
|
+
atlasManager.clear();
|
|
29360
|
+
atlasNeedsUpload = false;
|
|
28361
29361
|
imageIdHandler.reset();
|
|
28362
29362
|
imageHandleBuffersController.markDirty(images);
|
|
28363
29363
|
sprites.forEach((sprite) => {
|
|
@@ -28370,7 +29370,6 @@ const createSpriteLayer = (options) => {
|
|
|
28370
29370
|
hitTestTree.clear();
|
|
28371
29371
|
hitTestTreeItems = /* @__PURE__ */ new WeakMap();
|
|
28372
29372
|
hitTestEntryByImage = /* @__PURE__ */ new WeakMap();
|
|
28373
|
-
clearTextureQueue();
|
|
28374
29373
|
ensureRenderTargetEntries();
|
|
28375
29374
|
scheduleRender();
|
|
28376
29375
|
};
|
|
@@ -29238,9 +30237,10 @@ export {
|
|
|
29238
30237
|
cloneOffset,
|
|
29239
30238
|
createImageStateFromInit,
|
|
29240
30239
|
createSpriteLayer,
|
|
29241
|
-
|
|
30240
|
+
detectMultiThreadedModuleAvailability,
|
|
30241
|
+
initializeRuntimeHost,
|
|
29242
30242
|
loadImageBitmap,
|
|
29243
30243
|
readImageBitmap,
|
|
29244
|
-
|
|
30244
|
+
releaseRuntimeHost
|
|
29245
30245
|
};
|
|
29246
30246
|
//# sourceMappingURL=index.mjs.map
|