@forgeax/engine-codec 0.1.20 → 0.1.21

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/dist/.tsbuildinfo CHANGED
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/errors.ts","../../../node_modules/.pnpm/fzstd@0.1.1/node_modules/fzstd/lib/index.d.ts","../src/zstd.ts","../src/ktx2.ts","../src/wasm/basis-types.ts","../src/basis-transcoder.ts","../src/block-format.ts","../src/encode-impl.ts","../src/transcode.ts","../src/index.ts","../src/encode/basis-encode.ts","../src/encode/index.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.11/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/tasks.d-DEYaIMIu.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.11/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.11/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/index.d.ts","../src/__tests__/basis-encode-fast-preset.unit.test.ts","../src/__tests__/basis-encode-lifecycle.unit.test.ts","../src/__tests__/basis-transcoder.unit.test.ts","../src/__tests__/block-format.unit.test.ts","../src/__tests__/byte-identical-falsification.test.ts","../src/__tests__/codec-errors.test-d.ts","../src/__tests__/codec-errors.unit.test.ts","../src/__tests__/compression-field.unit.test.ts","../src/__tests__/encode-pixel-limit.unit.test.ts","../src/__tests__/encode-roundtrip.unit.test.ts","../src/__tests__/ktx2-basis-capability-matrix.unit.test.ts","../src/__tests__/ktx2-errors.test.ts","../src/__tests__/ktx2-parse-scheme0.test.ts","../src/__tests__/ktx2-parse-scheme2.test.ts","../src/__tests__/ktx2-scheme1-and-transcode-errors.unit.test.ts","../src/__tests__/ktx2-to-texture.integration.test.ts","../src/__tests__/transcode-select-target.unit.test.ts","../src/__tests__/wasm-init-smoke.test.ts","../src/__tests__/zstd-deterministic.unit.test.ts","../src/__tests__/zstd-encode-singleton.unit.test.ts","../src/__tests__/zstd-roundtrip.unit.test.ts","../src/__tests__/zstd-singleton.unit.test.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/@webgpu+types@0.1.71/node_modules/@webgpu/types/dist/index.d.ts"],"fileIdsList":[[148,194],[100,101,148,194],[148,191,194],[148,193,194],[194],[148,194,199,227],[148,194,195,200,205,213,224,235],[148,194,195,196,205,213],[143,144,145,148,194],[148,194,197,236],[148,194,198,199,206,214],[148,194,199,224,232],[148,194,200,202,205,213],[148,193,194,201],[148,194,202,203],[148,194,204,205],[148,193,194,205],[148,194,205,206,207,224,235],[148,194,205,206,207,220,224,227],[148,194,202,205,208,213,224,235],[148,194,205,206,208,209,213,224,232,235],[148,194,208,210,224,232,235],[146,147,148,149,150,151,152,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[148,194,205,211],[148,194,212,235,240],[148,194,202,205,213,224],[148,194,214],[148,194,215],[148,193,194,216],[148,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[148,194,218],[148,194,219],[148,194,205,220,221],[148,194,220,222,236,238],[148,194,205,224,225,227],[148,194,226,227],[148,194,224,225],[148,194,227],[148,194,228],[148,191,194,224,229],[148,194,205,230,231],[148,194,230,231],[148,194,199,213,224,232],[148,194,233],[148,194,213,234],[148,194,208,219,235],[148,194,199,236],[148,194,224,237],[148,194,212,238],[148,194,239],[148,189,194],[148,189,194,205,207,216,224,227,235,238,240],[148,194,224,241],[73,79,97,98,99,102,148,194],[109,148,194],[109,110,148,194],[77,79,80,148,194],[77,79,148,194],[77,148,194],[72,77,88,89,148,194],[72,77,88,148,194],[96,148,194],[72,78,148,194],[72,148,194],[74,148,194],[72,73,74,75,76,148,194],[115,116,148,194],[115,116,117,118,148,194],[115,117,148,194],[115,148,194],[148,161,165,194,235],[148,161,194,224,235],[148,156,194],[148,158,161,194,232,235],[148,194,213,232],[148,194,242],[148,156,194,242],[148,158,161,194,213,235],[148,153,154,157,160,194,205,224,235],[148,161,168,194],[148,153,159,194],[148,161,182,183,194],[148,157,161,194,227,235,242],[148,182,194,242],[148,155,156,194,242],[148,161,194],[148,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,183,184,185,186,187,188,194],[148,161,176,194],[148,161,168,169,194],[148,159,161,169,170,194],[148,160,194],[148,153,156,161,194],[148,161,165,169,170,194],[148,165,194],[148,159,161,164,194,235],[148,153,158,161,168,194],[148,194,224],[148,156,161,182,194,240,242],[83,148,194],[83,84,85,86,148,194],[85,148,194],[81,104,105,107,148,194],[81,82,94,107,148,194],[72,79,81,82,90,107,148,194],[87,148,194],[72,81,82,90,103,106,107,148,194],[81,82,87,90,107,148,194],[81,104,105,106,107,148,194],[81,87,91,92,93,107,148,194],[72,77,79,81,82,87,90,91,92,93,94,95,97,103,104,105,106,107,108,111,112,113,114,119,148,194],[72,79,81,82,90,91,104,105,106,107,112,148,194],[69,70,71,120,148,194,206,235],[71,120,148,194],[63,64,65,120,148,194,206,235],[69,120,148,194],[69,71,120,148,194],[120,148,194],[64,69,120,148,194,206,235],[63,64,69,71,120,148,194,206,235],[64,120,148,194,206,235],[61,62,71,120,148,194],[60,63,64,148,194],[60,148,194,212],[60,64,68,148,194],[67,70,148,194],[60,62,63,65,66,68,148,194],[60,62,148,194],[60,61,148,194]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"5cd04196cd0918c5d44d432e6fd721ce39872dd5bc1a2be066409571c59a1fcc","signature":"550ea97801362e6dbbfcdc476d492de6cfd05d5f8e0cea68cc74319806c3867c"},{"version":"1c760da0ee927ecfdaf9dcf4427e1670fbed2368a1b39e2f749770a19db3dcb3","impliedFormat":1},{"version":"18a37b201e7b98fb3d1b9fbb24a7af2107d2894c7daad2ade093dc1377bd7abe","signature":"700c4b2bd16c8be27cef72e42695c2c814899ad1373803f90d29dcaf4aa8feba"},{"version":"fcca0be422672388b32a95202056a40c0618770ace0b5d0d8b1e06e65e39e548","signature":"d942f139517261e120d633ad4f741dd5c15acdf00d435a5283141c82406c2682"},{"version":"6cbee48d3f5a899da29ad43237d2fcbb8b42b742e6063b442bb71ccc09deca0b","signature":"032d03fa6b84dc200691e1325575adfc16bf4411f674779fc78032366ef6a076"},{"version":"a422c91a9ae193d22148d66fdf46a870de6567895f8b528062eb893ed5cec589","signature":"205340e36cf69f920f64fcc0ca1010af904ecfc3b54c4e0a22946c83fcd05927"},{"version":"9b84180e61f0268091113a7f018b996389f188dfe4b21bbecf1e2b100ab7e54b","signature":"d007ceb6824f3907da1573a39f87b6a3207b3b8621d1fd808484eb8655a47ed9"},{"version":"156786b82c8305a5c61a446c176feec9733d1c2c5be2bb83d770913509464dcf","signature":"7943a1670148d0e777b119ea86f97a8bb9a26241f308293fd3e1a11c0fd0c675"},{"version":"ad4d068641ee4a596450cae9469038052e53f9659a4b583238837d2f9071cc91","signature":"a9d6b362152964561bf7e735fb513a1ee0a06c8d6e7805efdc6d5dd820c41e8f"},{"version":"62b9f43d74a34bae6e47c20ccc92af6f4a59e7583aea342d516cf93e72784939","signature":"8e1e0a24d69cc41e82e3d1c3faf5f6ec9508eda81a9f4bbe68320b031c627554"},{"version":"0e71dacc4ba9ab67751826845498a0d9511c4380044a1cf74aa294b79f2c838a","signature":"6ad8ad56ddb39466e76670c67c5b52c79de2a55ee0254786f83433a09a748d24"},{"version":"71ef35aa9e062656a41f848ad65af649c8178caeda2feaffad185cb802614729","signature":"93e89094028d3792bfbb7a4baabd39ff61aa7f88f4e1055db62d6427b4194242"},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"82179358c2d9d7347f1602dc9300039a2250e483137b38ebf31d4d2e5519c181","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"605450898939e8abce51e8085a41b60640278337a969c33cd6b169e7c4f9c3f2","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"434a046c04f542713b3bb0f2b00f7ef7bc18d764bf0fb4991cfc13f50b003b8f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"8c9dee10e5fce36ddc113ee54ff9ffc9c33dbf4db84270cdf61c5d5bf7063231","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2d7723bb0bf5cc47e521d6bd6ffe270f9b187c7bca2fd157874ff31f47308349","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"00e7a91279b0cb060e0e58e0e7b5f4bcdee7466c2c946742273b6db49ab94bca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ab5c6e68c2f6a6f8f7bd1f5ec0d00f4c162beaac72e9afba3cad5a8288d6a806","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c0c62a5ccdb7978436b5be9f8207f1fe66e112a6fadc4a720f0d9af1697cba56","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"f583d98493af1c8b535480b5f9c062b465b9d494c3c291ba2b2f15b1f6641860","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3855fd5b12035470f99c999380a30feb8e4ec3c0612590ee78fa9f25161f3cb2","signature":"4432d51f0a8d89a71637c10f0f3afbe816e57b58c4a3a602680f8432ef44d99b"},{"version":"642c838c4e39d79d71f7f6b21dea9ad1ff062c665c4588c14c77c6168ff62038","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"bdbceb07531bd08744cb01e8089e9ce7b07be2a6010090e764c8e174ab2f759b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"05629a0438119ee9af940c3e17fd52e9e8709a70ab3e05646da9cd75d683334b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c098a50d181abd6a8c99982b6362ec12845e0eef517a87b55210b25ffbecd5f8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"36e125286d23e894dd8c22983fc49739fd00a2a10ceaa103ac538156bcf21610","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"80d1d474f3f1f7df7da91415a10e0fbdcf8554470a311eb56b0ae8dcc7c5925a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a4fbccc82673704a016a7ea4eb9c306887956862ae44be9795ed179372526026","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fbcb985822c6682f114bf36b3c7d7745be85d60904af507a828e992046791a78","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"19381beefbcbf53f08f2fbdba1d2924558bd6c94120f29f05a00ff30a427f2df","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a5ad90abbf4682eab43f16aa3f715ada70455ee2caa23330d6d35b3813b5bd3c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ce3073a7aa00a5798c645c6cb08d6ef496d11ee946a7077560dfd9845776cbe2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"23dd96c042e97d1d75289a7c561be9e722f7eeb8739cc2d4f8fd9c776993b3d1","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3ee1463321fe9f456dea99e229dfaf7ef0699e01646bc9ba41e1c2aaa4439561","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"42d952cade25ef3fcdcb66e97f363d593db1137dcca8d4b2a792216bb2855698","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"092c1137e31de289f3cc6a57fdccb3cca298d8a680d1e367d206d3318f1394a1","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"d2e5cfb2397ec8cacfd30de0e6f7992eb7db7b02cc83b7c43ef58bcd5aa88bc3","affectsGlobalScope":true,"impliedFormat":1}],"root":[60,[62,71],[121,142]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[99,1],[102,2],[100,1],[191,3],[192,3],[193,4],[148,5],[194,6],[195,7],[196,8],[143,1],[146,9],[144,1],[145,1],[197,10],[198,11],[199,12],[200,13],[201,14],[202,15],[203,15],[204,16],[205,17],[206,18],[207,19],[149,1],[147,1],[208,20],[209,21],[210,22],[242,23],[211,24],[212,25],[213,26],[214,27],[215,28],[216,29],[217,30],[218,31],[219,32],[220,33],[221,33],[222,34],[223,1],[224,35],[226,36],[225,37],[227,38],[228,39],[229,40],[230,41],[231,42],[232,43],[233,44],[234,45],[235,46],[236,47],[237,48],[238,49],[239,50],[150,1],[151,1],[152,1],[190,51],[240,52],[241,53],[103,54],[110,55],[111,56],[109,1],[72,1],[81,57],[80,58],[104,57],[88,59],[90,60],[89,61],[97,62],[96,1],[79,63],[73,64],[75,65],[77,66],[76,1],[78,64],[74,1],[243,1],[101,1],[117,67],[119,68],[118,69],[116,70],[115,1],[61,1],[105,1],[98,1],[58,1],[59,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[168,71],[178,72],[167,71],[188,73],[159,74],[158,75],[187,76],[181,77],[186,78],[161,79],[175,80],[160,81],[184,82],[156,83],[155,76],[185,84],[157,85],[162,86],[163,1],[166,86],[153,1],[189,87],[179,88],[170,89],[171,90],[173,91],[169,92],[172,93],[182,76],[164,94],[165,95],[174,96],[154,97],[177,88],[176,86],[180,1],[183,98],[84,99],[87,100],[85,99],[83,1],[86,101],[106,102],[95,103],[91,104],[92,59],[113,105],[107,106],[93,107],[112,108],[82,1],[94,109],[120,110],[114,111],[108,1],[121,112],[122,113],[123,114],[124,115],[125,116],[126,115],[127,115],[128,117],[129,118],[130,118],[131,119],[132,115],[133,115],[134,116],[135,115],[136,116],[137,115],[138,120],[139,113],[140,113],[141,116],[142,121],[65,122],[66,1],[67,123],[70,124],[71,125],[60,1],[69,126],[63,127],[68,1],[64,1],[62,128]],"latestChangedDtsFile":"./__tests__/zstd-singleton.unit.test.d.ts","version":"6.0.3"}
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/errors.ts","../../../node_modules/.pnpm/fzstd@0.1.1/node_modules/fzstd/lib/index.d.ts","../src/zstd.ts","../src/ktx2.ts","../src/wasm/basis-types.ts","../src/basis-transcoder.ts","../src/block-format.ts","../src/encode-impl.ts","../src/transcode.ts","../src/index.ts","../src/encode/basis-encode.ts","../src/encode/index.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.11/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/tasks.d-DEYaIMIu.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.11/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.11/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/index.d.ts","../src/__tests__/basis-encode-fast-preset.unit.test.ts","../src/__tests__/basis-encode-lifecycle.unit.test.ts","../src/__tests__/basis-transcoder.unit.test.ts","../src/__tests__/block-format.unit.test.ts","../src/__tests__/byte-identical-falsification.test.ts","../src/__tests__/codec-errors.test-d.ts","../src/__tests__/codec-errors.unit.test.ts","../src/__tests__/compression-field.unit.test.ts","../src/__tests__/encode-pixel-limit.unit.test.ts","../src/__tests__/encode-roundtrip.unit.test.ts","../src/__tests__/ktx2-basis-capability-matrix.unit.test.ts","../src/__tests__/ktx2-errors.test.ts","../src/__tests__/ktx2-parse-scheme0.test.ts","../src/__tests__/ktx2-parse-scheme2.test.ts","../src/__tests__/ktx2-scheme1-and-transcode-errors.unit.test.ts","../src/__tests__/ktx2-to-texture.integration.test.ts","../src/__tests__/transcode-select-target.unit.test.ts","../src/__tests__/wasm-init-smoke.test.ts","../src/__tests__/zstd-deterministic.unit.test.ts","../src/__tests__/zstd-encode-singleton.unit.test.ts","../src/__tests__/zstd-roundtrip.unit.test.ts","../src/__tests__/zstd-singleton.unit.test.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@20.19.40/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/@webgpu+types@0.1.71/node_modules/@webgpu/types/dist/index.d.ts"],"fileIdsList":[[148,194],[100,101,148,194],[148,191,194],[148,193,194],[194],[148,194,199,227],[148,194,195,200,205,213,224,235],[148,194,195,196,205,213],[143,144,145,148,194],[148,194,197,236],[148,194,198,199,206,214],[148,194,199,224,232],[148,194,200,202,205,213],[148,193,194,201],[148,194,202,203],[148,194,204,205],[148,193,194,205],[148,194,205,206,207,224,235],[148,194,205,206,207,220,224,227],[148,194,202,205,208,213,224,235],[148,194,205,206,208,209,213,224,232,235],[148,194,208,210,224,232,235],[146,147,148,149,150,151,152,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[148,194,205,211],[148,194,212,235,240],[148,194,202,205,213,224],[148,194,214],[148,194,215],[148,193,194,216],[148,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[148,194,218],[148,194,219],[148,194,205,220,221],[148,194,220,222,236,238],[148,194,205,224,225,227],[148,194,226,227],[148,194,224,225],[148,194,227],[148,194,228],[148,191,194,224,229],[148,194,205,230,231],[148,194,230,231],[148,194,199,213,224,232],[148,194,233],[148,194,213,234],[148,194,208,219,235],[148,194,199,236],[148,194,224,237],[148,194,212,238],[148,194,239],[148,189,194],[148,189,194,205,207,216,224,227,235,238,240],[148,194,224,241],[73,79,97,98,99,102,148,194],[109,148,194],[109,110,148,194],[77,79,80,148,194],[77,79,148,194],[77,148,194],[72,77,88,89,148,194],[72,77,88,148,194],[96,148,194],[72,78,148,194],[72,148,194],[74,148,194],[72,73,74,75,76,148,194],[115,116,148,194],[115,116,117,118,148,194],[115,117,148,194],[115,148,194],[148,161,165,194,235],[148,161,194,224,235],[148,156,194],[148,158,161,194,232,235],[148,194,213,232],[148,194,242],[148,156,194,242],[148,158,161,194,213,235],[148,153,154,157,160,194,205,224,235],[148,161,168,194],[148,153,159,194],[148,161,182,183,194],[148,157,161,194,227,235,242],[148,182,194,242],[148,155,156,194,242],[148,161,194],[148,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,183,184,185,186,187,188,194],[148,161,176,194],[148,161,168,169,194],[148,159,161,169,170,194],[148,160,194],[148,153,156,161,194],[148,161,165,169,170,194],[148,165,194],[148,159,161,164,194,235],[148,153,158,161,168,194],[148,194,224],[148,156,161,182,194,240,242],[83,148,194],[83,84,85,86,148,194],[85,148,194],[81,104,105,107,148,194],[81,82,94,107,148,194],[72,79,81,82,90,107,148,194],[87,148,194],[72,81,82,90,103,106,107,148,194],[81,82,87,90,107,148,194],[81,104,105,106,107,148,194],[81,87,91,92,93,107,148,194],[72,77,79,81,82,87,90,91,92,93,94,95,97,103,104,105,106,107,108,111,112,113,114,119,148,194],[72,79,81,82,90,91,104,105,106,107,112,148,194],[69,70,71,120,148,194,206,235],[71,120,148,194],[63,64,65,120,148,194,206,235],[69,120,148,194],[69,71,120,148,194],[120,148,194],[64,69,120,148,194,206,235],[63,64,69,71,120,148,194,206,235],[64,120,148,194,206,235],[61,62,71,120,148,194],[60,63,64,148,194],[60,148,194,212],[60,64,68,148,194],[67,70,148,194],[60,62,63,65,66,68,148,194],[60,62,148,194],[60,61,148,194]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"5cd04196cd0918c5d44d432e6fd721ce39872dd5bc1a2be066409571c59a1fcc","signature":"550ea97801362e6dbbfcdc476d492de6cfd05d5f8e0cea68cc74319806c3867c"},{"version":"1c760da0ee927ecfdaf9dcf4427e1670fbed2368a1b39e2f749770a19db3dcb3","impliedFormat":1},{"version":"18a37b201e7b98fb3d1b9fbb24a7af2107d2894c7daad2ade093dc1377bd7abe","signature":"700c4b2bd16c8be27cef72e42695c2c814899ad1373803f90d29dcaf4aa8feba"},{"version":"fcca0be422672388b32a95202056a40c0618770ace0b5d0d8b1e06e65e39e548","signature":"d942f139517261e120d633ad4f741dd5c15acdf00d435a5283141c82406c2682"},{"version":"6cbee48d3f5a899da29ad43237d2fcbb8b42b742e6063b442bb71ccc09deca0b","signature":"032d03fa6b84dc200691e1325575adfc16bf4411f674779fc78032366ef6a076"},{"version":"f0bd5c0b75659f095f4b9fea446563876a07a348375cd472de05a73884c32a24","signature":"205340e36cf69f920f64fcc0ca1010af904ecfc3b54c4e0a22946c83fcd05927"},{"version":"9b84180e61f0268091113a7f018b996389f188dfe4b21bbecf1e2b100ab7e54b","signature":"d007ceb6824f3907da1573a39f87b6a3207b3b8621d1fd808484eb8655a47ed9"},{"version":"156786b82c8305a5c61a446c176feec9733d1c2c5be2bb83d770913509464dcf","signature":"7943a1670148d0e777b119ea86f97a8bb9a26241f308293fd3e1a11c0fd0c675"},{"version":"ad4d068641ee4a596450cae9469038052e53f9659a4b583238837d2f9071cc91","signature":"a9d6b362152964561bf7e735fb513a1ee0a06c8d6e7805efdc6d5dd820c41e8f"},{"version":"62b9f43d74a34bae6e47c20ccc92af6f4a59e7583aea342d516cf93e72784939","signature":"8e1e0a24d69cc41e82e3d1c3faf5f6ec9508eda81a9f4bbe68320b031c627554"},{"version":"0e71dacc4ba9ab67751826845498a0d9511c4380044a1cf74aa294b79f2c838a","signature":"6ad8ad56ddb39466e76670c67c5b52c79de2a55ee0254786f83433a09a748d24"},{"version":"71ef35aa9e062656a41f848ad65af649c8178caeda2feaffad185cb802614729","signature":"93e89094028d3792bfbb7a4baabd39ff61aa7f88f4e1055db62d6427b4194242"},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"82179358c2d9d7347f1602dc9300039a2250e483137b38ebf31d4d2e5519c181","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"605450898939e8abce51e8085a41b60640278337a969c33cd6b169e7c4f9c3f2","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"434a046c04f542713b3bb0f2b00f7ef7bc18d764bf0fb4991cfc13f50b003b8f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"8c9dee10e5fce36ddc113ee54ff9ffc9c33dbf4db84270cdf61c5d5bf7063231","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2d7723bb0bf5cc47e521d6bd6ffe270f9b187c7bca2fd157874ff31f47308349","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"00e7a91279b0cb060e0e58e0e7b5f4bcdee7466c2c946742273b6db49ab94bca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ab5c6e68c2f6a6f8f7bd1f5ec0d00f4c162beaac72e9afba3cad5a8288d6a806","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c0c62a5ccdb7978436b5be9f8207f1fe66e112a6fadc4a720f0d9af1697cba56","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"f583d98493af1c8b535480b5f9c062b465b9d494c3c291ba2b2f15b1f6641860","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3855fd5b12035470f99c999380a30feb8e4ec3c0612590ee78fa9f25161f3cb2","signature":"4432d51f0a8d89a71637c10f0f3afbe816e57b58c4a3a602680f8432ef44d99b"},{"version":"642c838c4e39d79d71f7f6b21dea9ad1ff062c665c4588c14c77c6168ff62038","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"bdbceb07531bd08744cb01e8089e9ce7b07be2a6010090e764c8e174ab2f759b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"05629a0438119ee9af940c3e17fd52e9e8709a70ab3e05646da9cd75d683334b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c098a50d181abd6a8c99982b6362ec12845e0eef517a87b55210b25ffbecd5f8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"36e125286d23e894dd8c22983fc49739fd00a2a10ceaa103ac538156bcf21610","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"80d1d474f3f1f7df7da91415a10e0fbdcf8554470a311eb56b0ae8dcc7c5925a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a4fbccc82673704a016a7ea4eb9c306887956862ae44be9795ed179372526026","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fbcb985822c6682f114bf36b3c7d7745be85d60904af507a828e992046791a78","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"19381beefbcbf53f08f2fbdba1d2924558bd6c94120f29f05a00ff30a427f2df","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a5ad90abbf4682eab43f16aa3f715ada70455ee2caa23330d6d35b3813b5bd3c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ce3073a7aa00a5798c645c6cb08d6ef496d11ee946a7077560dfd9845776cbe2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"23dd96c042e97d1d75289a7c561be9e722f7eeb8739cc2d4f8fd9c776993b3d1","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3ee1463321fe9f456dea99e229dfaf7ef0699e01646bc9ba41e1c2aaa4439561","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"42d952cade25ef3fcdcb66e97f363d593db1137dcca8d4b2a792216bb2855698","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"092c1137e31de289f3cc6a57fdccb3cca298d8a680d1e367d206d3318f1394a1","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"d2e5cfb2397ec8cacfd30de0e6f7992eb7db7b02cc83b7c43ef58bcd5aa88bc3","affectsGlobalScope":true,"impliedFormat":1}],"root":[60,[62,71],[121,142]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[99,1],[102,2],[100,1],[191,3],[192,3],[193,4],[148,5],[194,6],[195,7],[196,8],[143,1],[146,9],[144,1],[145,1],[197,10],[198,11],[199,12],[200,13],[201,14],[202,15],[203,15],[204,16],[205,17],[206,18],[207,19],[149,1],[147,1],[208,20],[209,21],[210,22],[242,23],[211,24],[212,25],[213,26],[214,27],[215,28],[216,29],[217,30],[218,31],[219,32],[220,33],[221,33],[222,34],[223,1],[224,35],[226,36],[225,37],[227,38],[228,39],[229,40],[230,41],[231,42],[232,43],[233,44],[234,45],[235,46],[236,47],[237,48],[238,49],[239,50],[150,1],[151,1],[152,1],[190,51],[240,52],[241,53],[103,54],[110,55],[111,56],[109,1],[72,1],[81,57],[80,58],[104,57],[88,59],[90,60],[89,61],[97,62],[96,1],[79,63],[73,64],[75,65],[77,66],[76,1],[78,64],[74,1],[243,1],[101,1],[117,67],[119,68],[118,69],[116,70],[115,1],[61,1],[105,1],[98,1],[58,1],[59,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[168,71],[178,72],[167,71],[188,73],[159,74],[158,75],[187,76],[181,77],[186,78],[161,79],[175,80],[160,81],[184,82],[156,83],[155,76],[185,84],[157,85],[162,86],[163,1],[166,86],[153,1],[189,87],[179,88],[170,89],[171,90],[173,91],[169,92],[172,93],[182,76],[164,94],[165,95],[174,96],[154,97],[177,88],[176,86],[180,1],[183,98],[84,99],[87,100],[85,99],[83,1],[86,101],[106,102],[95,103],[91,104],[92,59],[113,105],[107,106],[93,107],[112,108],[82,1],[94,109],[120,110],[114,111],[108,1],[121,112],[122,113],[123,114],[124,115],[125,116],[126,115],[127,115],[128,117],[129,118],[130,118],[131,119],[132,115],[133,115],[134,116],[135,115],[136,116],[137,115],[138,120],[139,113],[140,113],[141,116],[142,121],[65,122],[66,1],[67,123],[70,124],[71,125],[60,1],[69,126],[63,127],[68,1],[64,1],[62,128]],"latestChangedDtsFile":"./__tests__/zstd-singleton.unit.test.d.ts","version":"6.0.3"}
@@ -1 +1 @@
1
- {"version":3,"file":"basis-transcoder.d.ts","sourceRoot":"","sources":["../src/basis-transcoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAsB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAElG,sEAAsE;AACtE,KAAK,kBAAkB,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;AA4B/D;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAQpE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAI3E;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;CACzC;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,EAC9B,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,GACxC,WAAW,CAAC,qBAAqB,CAAC,CAoBpC;AAuCD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CA2DzC;AAED,8EAA8E;AAC9E,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAmD9C"}
1
+ {"version":3,"file":"basis-transcoder.d.ts","sourceRoot":"","sources":["../src/basis-transcoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAsB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAElG,sEAAsE;AACtE,KAAK,kBAAkB,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAoD/D;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CASpE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAI3E;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;CACzC;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,EAC9B,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,GACxC,WAAW,CAAC,qBAAqB,CAAC,CAoBpC;AAuCD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CA+DzC;AAED,8EAA8E;AAC9E,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAmD9C"}
package/dist/index.mjs CHANGED
@@ -22,19 +22,34 @@ function codecError(code, detail) {
22
22
  // src/basis-transcoder.ts
23
23
  var TRANSCODER_GLUE = new URL("../pkg/basis_transcoder.mjs", import.meta.url);
24
24
  var TRANSCODER_WASM = new URL("../pkg/basis_transcoder.wasm", import.meta.url);
25
+ function traceBasisPhase(phase, detail) {
26
+ const sink = globalThis.__forgeaxAssetLoadTrace;
27
+ if (sink === void 0) return;
28
+ try {
29
+ sink({ phase: `codec.${phase}`, at: Date.now(), ...detail === void 0 ? {} : { detail } });
30
+ } catch {
31
+ }
32
+ }
25
33
  var defaultImporter = async () => {
34
+ traceBasisPhase("basis.glue.import.start", { url: TRANSCODER_GLUE.href });
26
35
  const factory = (await import(
27
36
  /* @vite-ignore */
28
37
  TRANSCODER_GLUE.href
29
38
  )).default;
39
+ traceBasisPhase("basis.glue.import.complete");
40
+ traceBasisPhase("basis.wasm.factory.start", { url: TRANSCODER_WASM.href });
30
41
  const mod = await factory({ locateFile: () => TRANSCODER_WASM.href });
42
+ traceBasisPhase("basis.wasm.factory.complete");
43
+ traceBasisPhase("basis.initialize.start");
31
44
  mod.initializeBasis();
45
+ traceBasisPhase("basis.initialize.complete");
32
46
  return mod;
33
47
  };
34
48
  var importer = defaultImporter;
35
49
  var _initPromise = null;
36
50
  function initBasisTranscoder() {
37
51
  if (_initPromise !== null) return _initPromise;
52
+ traceBasisPhase("basis.init.start");
38
53
  _initPromise = importer().catch((cause) => {
39
54
  _initPromise = null;
40
55
  throw new Error("codec-init-failed", { cause });
@@ -92,6 +107,7 @@ function basisTargetFor(mod, format) {
92
107
  }
93
108
  }
94
109
  async function transcodeKtx2(parsed, targetFormat) {
110
+ traceBasisPhase("ktx2.transcode.start", { targetFormat });
95
111
  let mod;
96
112
  try {
97
113
  mod = await initBasisTranscoder();
@@ -107,6 +123,7 @@ async function transcodeKtx2(parsed, targetFormat) {
107
123
  }
108
124
  const file = new mod.KTX2File(parsed.rawBytes);
109
125
  try {
126
+ traceBasisPhase("ktx2.file.start");
110
127
  if (!file.isValid()) {
111
128
  return codecError("transcode-failed", {
112
129
  sourceFormat: "invalid-ktx2-file",
@@ -120,6 +137,7 @@ async function transcodeKtx2(parsed, targetFormat) {
120
137
  });
121
138
  }
122
139
  const levels = file.getLevels();
140
+ traceBasisPhase("ktx2.file.ready", { levels });
123
141
  const mips = [];
124
142
  for (let level = 0; level < levels; level++) {
125
143
  const info = file.getImageLevelInfo(level, 0, 0);
@@ -132,6 +150,7 @@ async function transcodeKtx2(parsed, targetFormat) {
132
150
  targetFormat
133
151
  });
134
152
  }
153
+ traceBasisPhase("ktx2.mip.complete", { level });
135
154
  mips.push({ level, width: info.origWidth, height: info.origHeight, data: dst });
136
155
  }
137
156
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/basis-transcoder.ts","../src/block-format.ts","../src/zstd.ts","../src/ktx2.ts","../src/transcode.ts"],"names":["defaultImporter","importer","_initPromise"],"mappings":";AAkDO,SAAS,UAAA,CACd,MACA,MAAA,EACkB;AAClB,EAAA,MAAM,KAAA,GAAwC;AAAA,IAC5C,sBAAA,EACE,wFAAA;AAAA,IACF,mBAAA,EACE,yFAAA;AAAA,IACF,mBAAA,EACE,mFAAA;AAAA,IACF,yBAAA,EACE,+GAAA;AAAA,IACF,kBAAA,EACE,sJAAA;AAAA,IACF,oBAAA,EACE;AAAA,GACJ;AAEA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,KAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,IAAA;AAAA,MACA,QAAA,EAAU,uDAAA;AAAA,MACV,IAAA,EAAM,MAAM,IAAI,CAAA;AAAA,MAChB;AAAA;AACF,GACF;AACF;;;ACrDA,IAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,6BAAA,EAA+B,YAAY,GAAG,CAAA;AAC9E,IAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,8BAAA,EAAgC,YAAY,GAAG,CAAA;AAE/E,IAAM,kBAAsC,YAAY;AACtD,EAAA,MAAM,WACH,MAAM;AAAA;AAAA,IAA0B,eAAA,CAAgB;AAAA,GAAA,EAGjD,OAAA;AACF,EAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,EAAE,YAAY,MAAM,eAAA,CAAgB,MAAM,CAAA;AACpE,EAAA,GAAA,CAAI,eAAA,EAAgB;AACpB,EAAA,OAAO,GAAA;AACT,CAAA;AAEA,IAAI,QAAA,GAA+B,eAAA;AAOnC,IAAI,YAAA,GAAsD,IAAA;AASnD,SAAS,mBAAA,GAAsD;AACpE,EAAA,IAAI,YAAA,KAAiB,MAAM,OAAO,YAAA;AAElC,EAAA,YAAA,GAAe,QAAA,EAAS,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB;AAClD,IAAA,YAAA,GAAe,IAAA;AACf,IAAA,MAAM,IAAI,KAAA,CAAM,mBAAA,EAAqB,EAAE,OAAO,CAAA;AAAA,EAChD,CAAC,CAAA;AACD,EAAA,OAAO,YAAA;AACT;AA8DO,SAAS,kBAAA,CACd,IAAA,EACA,IAAA,EACA,OAAA,EACoC;AACpC,EAAA,IAAI,IAAA,CAAK,UAAA,KAAe,MAAA,IAAU,IAAA,CAAK,eAAe,QAAA,EAAU;AAC9D,IAAA,OAAO,WAAW,mBAAA,EAAqB;AAAA,MACrC,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH;AACA,EAAA,IAAI,IAAA,CAAK,cAAa,IAAK,CAAA,IAAK,KAAK,YAAA,CAAa,CAAC,KAAK,CAAA,EAAG;AACzD,IAAA,OAAO,UAAA,CAAW,mBAAA,EAAqB,EAAE,MAAA,EAAQ,kCAAkC,CAAA;AAAA,EACrF;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,OAAA;AAAA,MACA,KAAA,EAAO,IAAA,CAAK,aAAA,CAAc,CAAA,EAAG,CAAC,CAAA;AAAA,MAC9B,MAAA,EAAQ,IAAA,CAAK,cAAA,CAAe,CAAA,EAAG,CAAC,CAAA;AAAA,MAChC,UAAA,EAAY,IAAA,CAAK,YAAA,CAAa,CAAC,CAAA;AAAA,MAC/B,UAAA,EAAY,KAAK,YAAA;AAAa;AAChC,GACF;AACF;AASA,SAAS,cAAA,CAAe,KAA4B,MAAA,EAAyC;AAC3F,EAAA,MAAM,IAAI,GAAA,CAAI,yBAAA;AACd,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,gBAAA;AAAA,IACL,KAAK,qBAAA;AACH,MAAA,OAAO,EAAE,WAAA,CAAY,KAAA;AAAA,IACvB,KAAK,cAAA;AACH,MAAA,OAAO,EAAE,SAAA,CAAU,KAAA;AAAA,IACrB,KAAK,aAAA;AACH,MAAA,OAAO,EAAE,QAAA,CAAS,KAAA;AAAA,IACpB,KAAK,iBAAA;AACH,MAAA,OAAO,EAAE,OAAA,CAAQ,KAAA;AAAA,IACnB,KAAK,iBAAA;AAAA,IACL,KAAK,sBAAA;AACH,MAAA,OAAO,EAAE,YAAA,CAAa,KAAA;AAAA,IACxB,KAAK,gBAAA;AAAA,IACL,KAAK,qBAAA;AACH,MAAA,OAAO,EAAE,gBAAA,CAAiB,KAAA;AAAA,IAC5B,KAAK,aAAA;AACH,MAAA,OAAO,EAAE,YAAA,CAAa,KAAA;AAAA,IACxB,KAAK,YAAA;AAAA,IACL,KAAK,iBAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,SAAA;AACH,MAAA,OAAO,EAAE,SAAA,CAAU,KAAA;AAAA,IACrB;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AASA,eAAsB,aAAA,CACpB,QACA,YAAA,EACyC;AACzC,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI;AACF,IAAA,GAAA,GAAM,MAAM,mBAAA,EAAoB;AAAA,EAClC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,UAAA,CAAW,mBAAA,EAAqB,EAAE,KAAA,EAAO,mCAAmC,CAAA;AAAA,EACrF;AAEA,EAAA,MAAM,UAAA,GAAa,cAAA,CAAe,GAAA,EAAK,YAAY,CAAA;AACnD,EAAA,IAAI,eAAe,IAAA,EAAM;AACvB,IAAA,OAAO,WAAW,kBAAA,EAAoB;AAAA,MACpC,YAAA,EAAc,CAAA,UAAA,EAAa,MAAA,CAAO,GAAA,EAAK,cAAc,SAAS,CAAA,CAAA;AAAA,MAC9D;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,QAAA,CAAS,OAAO,QAAQ,CAAA;AAC7C,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,EAAQ,EAAG;AACnB,MAAA,OAAO,WAAW,kBAAA,EAAoB;AAAA,QACpC,YAAA,EAAc,mBAAA;AAAA,QACd;AAAA,OACD,CAAA;AAAA,IACH;AACA,IAAA,IAAI,IAAA,CAAK,gBAAA,EAAiB,KAAM,CAAA,EAAG;AACjC,MAAA,OAAO,WAAW,kBAAA,EAAoB;AAAA,QACpC,YAAA,EAAc,0BAAA;AAAA,QACd;AAAA,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,MAAA,GAAS,KAAK,SAAA,EAAU;AAC9B,IAAA,MAAM,OAAwB,EAAC;AAC/B,IAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,MAAA,EAAQ,KAAA,EAAA,EAAS;AAC3C,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,iBAAA,CAAkB,KAAA,EAAO,GAAG,CAAC,CAAA;AAC/C,MAAA,MAAM,OAAO,IAAA,CAAK,6BAAA,CAA8B,KAAA,EAAO,CAAA,EAAG,GAAG,UAAU,CAAA;AACvE,MAAA,MAAM,GAAA,GAAM,IAAI,UAAA,CAAW,IAAI,CAAA;AAC/B,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,cAAA,CAAe,GAAA,EAAK,KAAA,EAAO,GAAG,CAAA,EAAG,UAAA,EAAY,CAAA,EAAG,CAAA,CAAA,EAAI,CAAA,CAAE,CAAA;AACtE,MAAA,IAAI,OAAO,CAAA,EAAG;AACZ,QAAA,OAAO,WAAW,kBAAA,EAAoB;AAAA,UACpC,cAAc,CAAA,UAAA,EAAa,MAAA,CAAO,KAAK,UAAA,IAAc,SAAS,UAAU,KAAK,CAAA,CAAA;AAAA,UAC7E;AAAA,SACD,CAAA;AAAA,MACH;AACA,MAAA,IAAA,CAAK,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,SAAA,EAAW,MAAA,EAAQ,IAAA,CAAK,UAAA,EAAY,IAAA,EAAM,GAAA,EAAK,CAAA;AAAA,IAChF;AAEA,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,YAAA;AAAA,QACR,KAAA,EAAO,KAAK,QAAA,EAAS;AAAA,QACrB,MAAA,EAAQ,KAAK,SAAA,EAAU;AAAA,QACvB;AAAA;AACF,KACF;AAAA,EACF,CAAA,SAAE;AACA,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA,EACb;AACF;AAGA,eAAsB,cAAA,CACpB,OACA,YAAA,EAC8C;AAC9C,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI;AACF,IAAA,GAAA,GAAM,MAAM,mBAAA,EAAoB;AAAA,EAClC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,UAAA,CAAW,mBAAA,EAAqB,EAAE,KAAA,EAAO,mCAAmC,CAAA;AAAA,EACrF;AACA,EAAA,MAAM,UAAA,GAAa,cAAA,CAAe,GAAA,EAAK,YAAY,CAAA;AACnD,EAAA,IAAI,UAAA,KAAe,IAAA,IAAQ,GAAA,CAAI,SAAA,KAAc,MAAA,EAAW;AACtD,IAAA,OAAO,WAAW,kBAAA,EAAoB;AAAA,MACpC,YAAA,EAAc,WAAA;AAAA,MACd;AAAA,KACD,CAAA;AAAA,EACH;AACA,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,SAAA,CAAU,KAAK,CAAA;AACpC,EAAA,IAAI;AACF,IAAA,IAAI,IAAA,CAAK,cAAa,IAAK,CAAA,IAAK,KAAK,YAAA,CAAa,CAAC,KAAK,CAAA,EAAG;AACzD,MAAA,OAAO,WAAW,kBAAA,EAAoB,EAAE,YAAA,EAAc,oBAAA,EAAsB,cAAc,CAAA;AAAA,IAC5F;AACA,IAAA,IAAI,IAAA,CAAK,gBAAA,EAAiB,KAAM,CAAA,EAAG;AACjC,MAAA,OAAO,WAAW,kBAAA,EAAoB;AAAA,QACpC,YAAA,EAAc,0BAAA;AAAA,QACd;AAAA,OACD,CAAA;AAAA,IACH;AACA,IAAA,MAAM,OAAwB,EAAC;AAC/B,IAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAK,YAAA,CAAa,CAAC,GAAG,KAAA,EAAA,EAAS;AACzD,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,CAAA,EAAG,KAAK,CAAA;AACzC,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,CAAA,EAAG,KAAK,CAAA;AAC3C,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,6BAAA,CAA8B,CAAA,EAAG,OAAO,UAAU,CAAA;AACpE,MAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,IAAI,CAAA;AAChC,MAAA,IAAI,IAAA,CAAK,eAAe,IAAA,EAAM,CAAA,EAAG,OAAO,UAAA,EAAY,CAAC,MAAM,CAAA,EAAG;AAC5D,QAAA,OAAO,WAAW,kBAAA,EAAoB;AAAA,UACpC,YAAA,EAAc,mBAAmB,KAAK,CAAA,CAAA;AAAA,UACtC;AAAA,SACD,CAAA;AAAA,MACH;AACA,MAAA,IAAA,CAAK,KAAK,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,MAAM,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,YAAA;AAAA,QACR,KAAA,EAAO,IAAA,CAAK,CAAC,CAAA,EAAG,KAAA,IAAS,CAAA;AAAA,QACzB,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,MAAA,IAAU,CAAA;AAAA,QAC3B;AAAA;AACF,KACF;AAAA,EACF,CAAA,SAAE;AACA,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA,EACb;AACF;;;AC3RA,IAAM,WAAA,uBAA8D,GAAA,CAGlE;AAAA;AAAA,EAEA,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAC7D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAClE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,eAAe,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAC1D,CAAC,eAAe,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAC1D,CAAC,gBAAgB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC5D,CAAC,gBAAgB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC5D,CAAC,mBAAmB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC/D,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA;AAAA,EAGnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAC7D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAClE,CAAC,oBAAoB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAC/D,CAAC,yBAAyB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EACpE,CAAC,mBAAmB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC/D,CAAC,wBAAwB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACpE,CAAC,gBAAgB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAC3D,CAAC,gBAAgB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,CAAA;AAAA,EAC3D,CAAC,iBAAiB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC7D,CAAC,iBAAiB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA;AAAA,EAG7D,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,kBAAkB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAC9D,CAAC,uBAAuB,EAAE,MAAA,EAAQ,GAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACnE,CAAC,mBAAmB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAChE,CAAC,wBAAwB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACrE,CAAC,mBAAmB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAChE,CAAC,wBAAwB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACrE,CAAC,mBAAmB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAChE,CAAC,wBAAwB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACrE,CAAC,oBAAoB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,EAAA,EAAI,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAClE,CAAC,yBAAyB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,EAAA,EAAI,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACvE,CAAC,oBAAoB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,EAAA,EAAI,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAClE,CAAC,yBAAyB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,EAAA,EAAI,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EACvE,CAAC,oBAAoB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,EAAA,EAAI,aAAA,EAAe,EAAA,EAAI,CAAA;AAAA,EAClE,CAAC,yBAAyB,EAAE,MAAA,EAAQ,IAAI,MAAA,EAAQ,EAAA,EAAI,aAAA,EAAe,EAAA,EAAI;AACzE,CAAC,CAAA;AAMM,SAAS,qBAAqB,MAAA,EAA8C;AACjF,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA,IAAK,IAAA;AACpC;AAGO,SAAS,mBAAmB,MAAA,EAAmC;AACpE,EAAA,OAAO,WAAA,CAAY,IAAI,MAAM,CAAA;AAC/B;AAQO,SAAS,WAAA,CAAY,QAA0B,KAAA,EAA8B;AAClF,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA;AACrC,EAAA,IAAI,MAAA,KAAW,QAAW,OAAO,IAAA;AACjC,EAAA,OAAO,KAAK,IAAA,CAAK,KAAA,GAAQ,MAAA,CAAO,MAAM,IAAI,MAAA,CAAO,aAAA;AACnD;AAMO,SAAS,YAAA,CAAa,QAA0B,MAAA,EAA+B;AACpF,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA;AACrC,EAAA,IAAI,MAAA,KAAW,QAAW,OAAO,IAAA;AACjC,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,MAAA,CAAO,MAAM,CAAA;AACzC;;;ACtHA,IAAMA,gBAAAA,GAAgC,MACpC,OAAO,OAAO,EAAE,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,UAA6B,CAAA;AAEjE,IAAIC,SAAAA,GAAyBD,gBAAAA;AAU7B,IAAIE,aAAAA,GAAgD,IAAA;AAKpD,SAAS,eAAA,GAA4C;AACnD,EAAA,IAAIA,kBAAiB,IAAA,EAAM;AACzB,IAAA,OAAOA,aAAAA;AAAA,EACT;AAEA,EAAAA,aAAAA,GAAeD,SAAAA,EAAS,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB;AAElD,IAAAC,aAAAA,GAAe,IAAA;AACf,IAAA,MAAM,IAAI,KAAA,CAAM,mBAAA,EAAqB,EAAE,OAAO,CAAA;AAAA,EAChD,CAAC,CAAA;AACD,EAAA,OAAOA,aAAAA;AACT;AA8BA,eAAsB,eAAe,KAAA,EAAqD;AACxF,EAAA,IAAI,UAAA;AACJ,EAAA,IAAI;AACF,IAAA,UAAA,GAAa,MAAM,eAAA,EAAgB;AAAA,EACrC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,UAAA,CAAW,mBAAA,EAAqB,EAAE,KAAA,EAAO,wBAAwB,CAAA;AAAA,EAC1E;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,WAAW,KAAK,CAAA;AAC/B,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,MAAA,EAAO;AAAA,EACnC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,WAAW,sBAAA,EAAwB;AAAA,MACxC,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH;AACF;;;ACnEO,IAAM,eAAA,GAAkB,IAAI,UAAA,CAAW;AAAA,EAC5C,GAAA;AAAA,EAAM,EAAA;AAAA,EAAM,EAAA;AAAA,EAAM,EAAA;AAAA,EAAM,EAAA;AAAA,EAAM,EAAA;AAAA,EAAM,EAAA;AAAA,EAAM,GAAA;AAAA,EAAM,EAAA;AAAA,EAAM,EAAA;AAAA,EAAM,EAAA;AAAA,EAAM;AACpE,CAAC;AAoFM,SAAS,eAAe,MAAA,EAAmD;AAChF,EAAA,QAAQ,MAAA,CAAO,KAAK,gBAAA;AAAkB,IACpC,KAAK,CAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,CAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAMA,IAAM,EAAA,GAAK,IAAI,WAAA,EAAY;AAE3B,SAAS,OAAA,CAAQ,OAAmB,UAAA,EAA4B;AAC9D,EAAA,OAAO,IAAI,QAAA,CAAS,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,UAAA,GAAa,UAAA,EAAY,CAAC,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AACvF;AAGA,SAAS,OAAA,CAAQ,OAAmB,UAAA,EAA4B;AAC9D,EAAA,OAAO,MAAA,CAAO,IAAI,QAAA,CAAS,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,UAAA,GAAa,UAAA,EAAY,CAAC,CAAA,CAAE,YAAA,CAAa,CAAA,EAAG,IAAI,CAAC,CAAA;AAClG;AAGA,SAAS,YAAA,CAAa,KAAA,EAAmB,MAAA,EAAgB,MAAA,EAAgB,OAAA,EAAuB;AAC9F,EAAA,IAAI,MAAA,GAAS,MAAA,GAAS,KAAA,CAAM,MAAA,EAAQ;AAClC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,WAAA,EAAc,OAAO,CAAA,cAAA,EAAiB,MAAM,YAAY,MAAM,CAAA,WAAA,EAAc,MAAM,MAAM,CAAA,CAAA;AAAA,KAC1F;AAAA,EACF;AACF;AAMA,SAAS,QAAA,CAAS,KAAA,EAAmB,MAAA,EAAgB,cAAA,EAAiC;AACpF,EAAA,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,CAAA,EAAG,eAAe,CAAA;AAC9C,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA;AACvC,EAAA,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,SAAA,EAAW,WAAW,CAAA;AAGlD,EAAA,MAAM,QAAQ,MAAA,GAAS,CAAA;AAEvB,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA;AAClC,EAAA,MAAM,WAAW,KAAA,GAAQ,MAAA;AACzB,EAAA,MAAM,cAAA,GAAkB,UAAU,EAAA,GAAM,KAAA;AAExC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAA;AACtC,EAAA,MAAM,gBAAgB,KAAA,GAAQ,KAAA;AAC9B,EAAA,MAAM,mBAAA,GAAuB,UAAU,EAAA,GAAM,KAAA;AAE7C,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAA;AACtC,EAAA,MAAM,aAAa,KAAA,GAAQ,GAAA;AAC3B,EAAA,MAAM,cAAA,GAAkB,UAAU,CAAA,GAAK,GAAA;AACvC,EAAA,MAAM,gBAAA,GAAoB,UAAU,EAAA,GAAM,GAAA;AAC1C,EAAA,MAAM,KAAA,GAAS,UAAU,EAAA,GAAM,GAAA;AAE/B,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,KAAA,GAAQ,EAAE,CAAA;AACvC,EAAA,MAAM,iBAAiB,KAAA,GAAQ,GAAA;AAC/B,EAAA,MAAM,cAAA,GAAkB,UAAU,CAAA,GAAK,GAAA;AACvC,EAAA,MAAM,cAAA,GAAkB,UAAU,EAAA,GAAM,GAAA;AACxC,EAAA,MAAM,cAAA,GAAkB,UAAU,EAAA,GAAM,GAAA;AAExC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,KAAA,GAAQ,EAAE,CAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,KAAA,GAAQ,EAAE,CAAA;AACvC,EAAA,MAAM,UAAA,GAAgC;AAAA,IACpC,KAAA,GAAQ,GAAA;AAAA,IACP,UAAU,CAAA,GAAK,GAAA;AAAA,IACf,UAAU,EAAA,GAAM,GAAA;AAAA,IAChB,UAAU,EAAA,GAAM,GAAA;AAAA,IACjB,KAAA,GAAQ,GAAA;AAAA,IACP,UAAU,CAAA,GAAK,GAAA;AAAA,IACf,UAAU,EAAA,GAAM,GAAA;AAAA,IAChB,UAAU,EAAA,GAAM;AAAA,GACnB;AAGA,EAAA,MAAM,aAAa,KAAA,GAAQ,EAAA;AAC3B,EAAA,MAAM,UAAA,GAAA,CAAc,sBAAsB,EAAA,IAAM,EAAA;AAChD,EAAA,MAAM,UAA2B,EAAC;AAClC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,EAAA,GAAK,aAAa,CAAA,GAAI,EAAA;AAC5B,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAC7B,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,KAAA,EAAO,EAAA,GAAK,CAAC,CAAA;AACjC,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,KAAA,EAAO,EAAA,GAAK,CAAC,CAAA;AACjC,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,KAAA,EAAO,EAAA,GAAK,EAAE,CAAA;AAElC,IAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,MACX,YAAY,GAAA,GAAM,EAAA;AAAA,MAClB,WAAA,EAAc,QAAQ,CAAA,GAAK,GAAA;AAAA,MAC3B,SAAA,EAAA,CAAa,GAAA,KAAQ,EAAA,GAAM,IAAA,IAAS,CAAA;AAAA;AAAA,MACpC,SAAA,EAAY,QAAQ,EAAA,GAAM,GAAA;AAAA,MAC1B,cAAA,EAAgB;AAAA,QACd,GAAA,GAAM,GAAA;AAAA,QACL,QAAQ,CAAA,GAAK,GAAA;AAAA,QACb,QAAQ,EAAA,GAAM,GAAA;AAAA,QACd,QAAQ,EAAA,GAAM;AAAA,OACjB;AAAA,MACA,WAAA,EAAa,GAAA;AAAA,MACb,WAAA,EAAa;AAAA,KACd,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,KAAA;AAAA,IACA,mBAAA,EAAqB,CAAC,cAAA,EAAgB,cAAA,EAAgB,gBAAgB,cAAc,CAAA;AAAA,IACpF,UAAA;AAAA,IACA;AAAA,GACF;AACF;AAMA,SAAS,OAAA,CAAQ,KAAA,EAAmB,MAAA,EAAgB,aAAA,EAAsC;AACxF,EAAA,IAAI,aAAA,KAAkB,CAAA,EAAG,OAAO,EAAC;AAEjC,EAAA,MAAM,UAAyB,EAAC;AAChC,EAAA,IAAI,GAAA,GAAM,MAAA;AACV,EAAA,MAAM,MAAM,MAAA,GAAS,aAAA;AAErB,EAAA,OAAO,MAAM,GAAA,EAAK;AAChB,IAAA,YAAA,CAAa,KAAA,EAAO,GAAA,EAAK,CAAA,EAAG,0BAA0B,CAAA;AACtD,IAAA,MAAM,qBAAA,GAAwB,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAChD,IAAA,GAAA,IAAO,CAAA;AAEP,IAAA,YAAA,CAAa,KAAA,EAAO,GAAA,EAAK,qBAAA,EAAuB,YAAY,CAAA;AAE5D,IAAA,MAAM,GAAA,GAAM,KAAA,CAAM,KAAA,CAAM,GAAA,EAAK,MAAM,qBAAqB,CAAA;AAExD,IAAA,IAAI,MAAA,GAAS,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA;AAC1B,IAAA,IAAI,MAAA,KAAW,EAAA,EAAI,MAAA,GAAS,GAAA,CAAI,MAAA;AAChC,IAAA,MAAM,MAAM,EAAA,CAAG,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,EAAG,MAAM,CAAC,CAAA;AAC1C,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAElC,IAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,GAAA,EAAK,KAAA,EAAO,CAAA;AAE3B,IAAA,GAAA,IAAO,qBAAA;AAGP,IAAA,MAAM,YAAY,GAAA,GAAM,CAAA;AACxB,IAAA,IAAI,cAAc,CAAA,EAAG;AACnB,MAAA,GAAA,IAAO,CAAA,GAAI,SAAA;AAAA,IACb;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;AAeA,eAAsB,UAAU,KAAA,EAAqD;AACnF,EAAA,IAAI;AAEF,IAAA,IAAI,KAAA,CAAM,SAAS,EAAA,EAAI;AACrB,MAAA,OAAO,WAAW,mBAAA,EAAqB;AAAA,QACrC,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AACA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,MAAA,MAAM,YAAA,GAAe,gBAAgB,CAAC,CAAA;AACtC,MAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,IAAa,KAAA,CAAM,CAAC,MAAM,YAAA,EAAc;AAC3D,QAAA,OAAO,WAAW,mBAAA,EAAqB;AAAA,UACrC,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH;AAAA,IACF;AAGA,IAAA,IAAI,KAAA,CAAM,SAAS,EAAA,EAAI;AACrB,MAAA,OAAO,WAAW,mBAAA,EAAqB;AAAA,QACrC,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,MAAA,GAAqB;AAAA,MACzB,QAAA,EAAU,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC3B,QAAA,EAAU,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC3B,UAAA,EAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC7B,WAAA,EAAa,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC9B,UAAA,EAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC7B,UAAA,EAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC7B,SAAA,EAAW,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC5B,UAAA,EAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAC7B,sBAAA,EAAwB,OAAA,CAAQ,KAAA,EAAO,EAAE;AAAA,KAC3C;AAEA,IAAA,MAAM,KAAA,GAAmB;AAAA,MACvB,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAChC,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAChC,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAChC,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAChC,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,MAChC,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAO,EAAE;AAAA,KAClC;AAOA,IAAA,MAAM,SAAS,MAAA,CAAO,sBAAA;AACtB,IAAA,IAAI,MAAA,KAAW,CAAA,IAAK,MAAA,KAAW,CAAA,IAAK,WAAW,CAAA,EAAG;AAChD,MAAA,OAAO,UAAA,CAAW,yBAAA,EAA2B,EAAE,MAAA,EAAQ,CAAA;AAAA,IACzD;AAGA,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,UAAU,CAAA;AAC/C,IAAA,MAAM,eAAA,GAAkB,EAAA;AACxB,IAAA,YAAA,CAAa,KAAA,EAAO,eAAA,EAAiB,SAAA,GAAY,EAAA,EAAI,aAAa,CAAA;AAElE,IAAA,MAAM,aAA+B,EAAC;AACtC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,CAAA,EAAA,EAAK;AAClC,MAAA,MAAM,GAAA,GAAM,kBAAkB,CAAA,GAAI,EAAA;AAClC,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AACrC,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,KAAA,EAAO,GAAA,GAAM,CAAC,CAAA;AACzC,MAAA,MAAM,sBAAA,GAAyB,OAAA,CAAQ,KAAA,EAAO,GAAA,GAAM,EAAE,CAAA;AAGtD,MAAA,IAAI,UAAA,GAAa,UAAA,GAAa,KAAA,CAAM,MAAA,EAAQ;AAC1C,QAAA,OAAO,WAAW,mBAAA,EAAqB;AAAA,UACrC,MAAA,EAAQ,0BAA0B,CAAC,CAAA,YAAA,EAAe,UAAU,CAAA,YAAA,EAAe,UAAU,CAAA,mBAAA,EAAsB,KAAA,CAAM,MAAM,CAAA;AAAA,SACxH,CAAA;AAAA,MACH;AAEA,MAAA,UAAA,CAAW,IAAA,CAAK,EAAE,UAAA,EAAY,UAAA,EAAY,wBAAwB,CAAA;AAAA,IACpE;AAGA,IAAA,IAAI,GAAA,GAAsB,IAAA;AAC1B,IAAA,IAAI,KAAA,CAAM,gBAAgB,CAAA,EAAG;AAC3B,MAAA,YAAA,CAAa,KAAA,EAAO,KAAA,CAAM,aAAA,EAAe,KAAA,CAAM,eAAe,KAAK,CAAA;AACnE,MAAA,GAAA,GAAM,QAAA,CAAS,KAAA,EAAO,KAAA,CAAM,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IAChE;AAGA,IAAA,IAAI,YAA2B,EAAC;AAChC,IAAA,IAAI,KAAA,CAAM,gBAAgB,CAAA,EAAG;AAC3B,MAAA,YAAA,CAAa,KAAA,EAAO,KAAA,CAAM,aAAA,EAAe,KAAA,CAAM,eAAe,KAAK,CAAA;AACnE,MAAA,SAAA,GAAY,OAAA,CAAQ,KAAA,EAAO,KAAA,CAAM,aAAA,EAAe,MAAM,aAAa,CAAA;AAAA,IACrE;AAGA,IAAA,IAAI,GAAA,GAAyB,IAAA;AAC7B,IAAA,IAAI,KAAA,CAAM,gBAAgB,CAAA,EAAG;AAC3B,MAAA,YAAA,CAAa,KAAA,EAAO,KAAA,CAAM,aAAA,EAAe,KAAA,CAAM,eAAe,KAAK,CAAA;AACnE,MAAA,GAAA,GAAM,MAAM,KAAA,CAAM,KAAA,CAAM,eAAe,KAAA,CAAM,aAAA,GAAgB,MAAM,aAAa,CAAA;AAAA,IAClF;AAEA,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO;AAAA,QACL,MAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA,GAAA;AAAA,QACA,SAAA;AAAA,QACA,GAAA;AAAA,QACA,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,EACF,SAAS,GAAA,EAAc;AACrB,IAAA,MAAM,UAAU,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,OAAO,GAAG,CAAA;AAC/D,IAAA,OAAO,WAAW,mBAAA,EAAqB,EAAE,QAAQ,CAAA,UAAA,EAAa,OAAO,IAAI,CAAA;AAAA,EAC3E;AACF;AAgBA,SAAS,gBAAA,CAAiB,aAAqB,QAAA,EAA0B;AACvE,EAAA,MAAM,QAAA,GAAW,cAAc,CAAA,GAAI,QAAA;AACnC,EAAA,IAAI,QAAA,GAAW,CAAA,IAAK,QAAA,IAAY,WAAA,EAAa,OAAO,EAAA;AACpD,EAAA,OAAO,QAAA;AACT;AAeA,eAAsB,gBAAA,CACpB,MAAA,EACA,KAAA,GAAgB,CAAA,EACkB;AAClC,EAAA,MAAM,WAAA,GAAc,OAAO,UAAA,CAAW,MAAA;AACtC,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,WAAA,EAAa,KAAK,CAAA;AACpD,EAAA,IAAI,WAAW,CAAA,EAAG;AAChB,IAAA,OAAO,WAAW,mBAAA,EAAqB,EAAE,QAAQ,CAAA,UAAA,EAAa,KAAK,mBAAmB,CAAA;AAAA,EACxF;AACA,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,UAAA,CAAW,QAAQ,CAAA;AACxC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,WAAW,mBAAA,EAAqB;AAAA,MACrC,MAAA,EAAQ,aAAa,KAAK,CAAA,yBAAA;AAAA,KAC3B,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,CAAO,sBAAA,KAA2B,CAAA,EAAG;AAE9C,IAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,CAAS,KAAA,CAAM,MAAM,UAAA,EAAY,KAAA,CAAM,UAAA,GAAa,KAAA,CAAM,UAAU,CAAA;AACzF,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,OAAO,IAAI,UAAA,CAAW,KAAK,CAAA,EAAE;AAAA,EAClD;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,CAAO,sBAAA,KAA2B,CAAA,EAAG;AAE9C,IAAA,MAAM,eAAA,GAAkB,OAAO,QAAA,CAAS,KAAA;AAAA,MACtC,KAAA,CAAM,UAAA;AAAA,MACN,KAAA,CAAM,aAAa,KAAA,CAAM;AAAA,KAC3B;AACA,IAAA,MAAM,SAAS,MAAM,cAAA,CAAe,IAAI,UAAA,CAAW,eAAe,CAAC,CAAA;AACnE,IAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,MAAA,OAAO,WAAW,mBAAA,EAAqB;AAAA,QACrC,QAAQ,CAAA,oCAAA,EAAuC,KAAK,CAAA,EAAA,EAAK,MAAA,CAAO,MAAM,MAAM,CAAA;AAAA,OAC7E,CAAA;AAAA,IACH;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,OAAO,WAAW,yBAAA,EAA2B;AAAA,IAC3C,MAAA,EAAQ,OAAO,MAAA,CAAO;AAAA,GACvB,CAAA;AACH;;;AC/ZA,SAAS,UAAA,CAAW,MAAe,IAAA,EAAuC;AAExE,EAAA,IAAI,IAAA,CAAK,EAAA,EAAI,OAAO,IAAA,GAAO,qBAAA,GAAwB,gBAAA;AACnD,EAAA,IAAI,IAAA,CAAK,IAAA,EAAM,OAAO,IAAA,GAAO,qBAAA,GAAwB,gBAAA;AACrD,EAAA,IAAI,IAAA,CAAK,IAAA,EAAM,OAAO,IAAA,GAAO,sBAAA,GAAyB,iBAAA;AACtD,EAAA,OAAO,OAAO,iBAAA,GAAoB,YAAA;AACpC;AAEA,SAAS,SAAS,IAAA,EAAuC;AAEvD,EAAA,IAAI,IAAA,CAAK,IAAI,OAAO,cAAA;AACpB,EAAA,IAAI,IAAA,CAAK,MAAM,OAAO,eAAA;AACtB,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,QAAQ,IAAA,EAAuC;AACtD,EAAA,IAAI,IAAA,CAAK,IAAI,OAAO,aAAA;AACpB,EAAA,IAAI,IAAA,CAAK,MAAM,OAAO,cAAA;AACtB,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,UAAU,IAAA,EAAuC;AAExD,EAAA,IAAI,IAAA,CAAK,IAAI,OAAO,iBAAA;AACpB,EAAA,OAAO,aAAA;AACT;AAOO,SAAS,qBAAA,CACd,QACA,IAAA,EACkB;AAClB,EAAA,IAAI,MAAA,CAAO,KAAA,KAAU,WAAA,EAAa,OAAO,UAAU,IAAI,CAAA;AACvD,EAAA,QAAQ,OAAO,QAAA;AAAU,IACvB,KAAK,MAAA;AACH,MAAA,OAAO,UAAA,CAAW,MAAA,CAAO,IAAA,EAAM,IAAI,CAAA;AAAA,IACrC,KAAK,IAAA;AACH,MAAA,OAAO,SAAS,IAAI,CAAA;AAAA,IACtB,KAAK,GAAA;AACH,MAAA,OAAO,QAAQ,IAAI,CAAA;AAAA;AAEzB","file":"index.mjs","sourcesContent":["/**\n * Codec error model — closed union per D-8.\n *\n * All codec error codes live here as the SSOT. Runtime never extends the types\n * shared union; codec errors are nested in existing asset error detail.\n *\n * Union is order-locked and add-only-minor for Loop 2 additions.\n */\n\n/** Per-code narrowed detail payloads. */\ninterface CodecErrorDetails {\n 'decompression-failed': { readonly reason: string };\n 'codec-init-failed': { readonly stage: string };\n 'ktx2-parse-failed': { readonly reason: string };\n 'ktx2-unsupported-scheme': { readonly scheme: number };\n 'transcode-failed': { readonly sourceFormat: string; readonly targetFormat: string };\n 'ktx2-encode-failed': { readonly mode: string; readonly reason: string };\n}\n\n/** Order-locked closed union of codec error codes. */\nexport type CodecErrorCode = keyof CodecErrorDetails;\n\n/** Structured codec error with executable hint + per-code narrowed detail. */\nexport type CodecError = {\n [C in CodecErrorCode]: {\n readonly ok: false;\n readonly error: {\n readonly code: C;\n readonly expected: string;\n readonly hint: string;\n readonly detail: CodecErrorDetails[C];\n };\n };\n}[CodecErrorCode];\n\ntype CodecErrorFor<C extends CodecErrorCode> = Extract<\n CodecError,\n { readonly error: { readonly code: C } }\n>;\n\n/** Success branch of a Result<T, CodecError>. */\nexport interface CodecOk<T> {\n readonly ok: true;\n readonly value: T;\n}\n\n/** Result type for codec operations — discriminated union on `.ok`. */\nexport type CodecResult<T> = CodecOk<T> | CodecError;\n\n/** Error factory — produces a full CodecError object for the given code + detail. */\nexport function codecError<C extends CodecErrorCode>(\n code: C,\n detail: CodecErrorDetails[C],\n): CodecErrorFor<C> {\n const hints: Record<CodecErrorCode, string> = {\n 'decompression-failed':\n 'Check catalog row compression field and asset binary consistency; re-run asset import.',\n 'codec-init-failed':\n 'Uncompressed assets are still loadable. Verify the codec module is installed correctly.',\n 'ktx2-parse-failed':\n 'Check that the KTX2 file is valid and not truncated. Re-import the texture asset.',\n 'ktx2-unsupported-scheme':\n 'This supercompression scheme requires a future codec upgrade. Check the codec README Loop 2 extension points.',\n 'transcode-failed':\n 'Basis transcode failed for this source/target format pair. Verify the KTX2 payload is a valid Basis (ETC1S / UASTC) texture and re-import the asset.',\n 'ktx2-encode-failed':\n 'Basis encode failed for this compression mode. Verify the source image dimensions / pixel format match the mode (LDR rgba8 vs HDR rgba16float) and retry the asset import.',\n };\n\n return {\n ok: false,\n error: {\n code,\n expected: 'valid compressed data or supported compression scheme',\n hint: hints[code],\n detail,\n },\n } as CodecErrorFor<C>;\n}\n","/**\n * Basis transcoder glue: lazy-init singleton (D-10) + per-mip KTX2 transcode.\n *\n * `initBasisTranscoder` dynamic-imports the self-built transcoder WASM module on\n * first call and caches it; the second call returns the same instance without\n * re-importing (D-10 main-thread lazy-init -- `Engine.create` does not preload,\n * the first Basis payload triggers this). No worker pool (OOS -- forgeax has no\n * worker infrastructure). Both node and browser can `import` this module: the\n * WASM glue is a MODULARIZE factory whose `.mjs` path resolves in both.\n *\n * `transcodeKtx2` opens a parsed KTX2 container's raw bytes as a basis KTX2File,\n * starts transcoding, and transcodes every mip level (mip-major) into the target\n * `GPUTextureFormat`. It returns the block (or pixel) byte arrays per level; it\n * does not upload -- the runtime upload path (M5) consumes these with the block\n * table.\n */\n\nimport type { CodecResult } from './errors.js';\nimport { codecError } from './errors.js';\nimport type { Ktx2Parsed } from './ktx2.js';\nimport type { BasisFile, BasisModuleFactory, BasisTranscoderModule } from './wasm/basis-types.js';\n\n/** How the transcoder WASM module is loaded. Overridable in tests. */\ntype TranscoderImporter = () => Promise<BasisTranscoderModule>;\n\nconst TRANSCODER_GLUE = new URL('../pkg/basis_transcoder.mjs', import.meta.url);\nconst TRANSCODER_WASM = new URL('../pkg/basis_transcoder.wasm', import.meta.url);\n\nconst defaultImporter: TranscoderImporter = async () => {\n const factory = (\n (await import(/* @vite-ignore */ TRANSCODER_GLUE.href)) as {\n default: BasisModuleFactory<BasisTranscoderModule>;\n }\n ).default;\n const mod = await factory({ locateFile: () => TRANSCODER_WASM.href });\n mod.initializeBasis();\n return mod;\n};\n\nlet importer: TranscoderImporter = defaultImporter;\n\n/**\n * Lazy-init singleton (D-10): null = never attempted, Promise = init in flight,\n * resolved = ready, rejected = cleared so the next call retries.\n * @internal\n */\nlet _initPromise: Promise<BasisTranscoderModule> | null = null;\n\n/** Count of importer invocations; observed in tests to prove single-init. @internal */\nlet initCount = 0;\n\n/**\n * Lazy-init the Basis transcoder WASM module (D-10 main-thread singleton).\n * First call dynamic-imports + initializes; subsequent calls return the cache.\n */\nexport function initBasisTranscoder(): Promise<BasisTranscoderModule> {\n if (_initPromise !== null) return _initPromise;\n initCount++;\n _initPromise = importer().catch((cause: unknown) => {\n _initPromise = null;\n throw new Error('codec-init-failed', { cause });\n });\n return _initPromise;\n}\n\n/**\n * Test-only: number of times the transcoder importer has been invoked. Proves\n * the lazy singleton loads the module at most once (D-10).\n * @internal\n */\nexport function _basisTranscoderInitCount(): number {\n return initCount;\n}\n\n/**\n * Test-only: reset the lazy singleton and optionally override the importer.\n * Call with no argument to restore the real WASM importer.\n * @internal\n */\nexport function _setBasisTranscoderImporter(next?: TranscoderImporter): void {\n importer = next ?? defaultImporter;\n _initPromise = null;\n initCount = 0;\n}\n\n/** One transcoded mip level (mip-major output). */\nexport interface TranscodedMip {\n readonly level: number;\n readonly width: number;\n readonly height: number;\n /** Transcoded block (compressed) or pixel (uncompressed) bytes for this level. */\n readonly data: Uint8Array;\n}\n\n/** Result of transcoding a KTX2 container into a target GPU format. */\nexport interface TranscodedTexture {\n readonly format: GPUTextureFormat;\n readonly width: number;\n readonly height: number;\n /** Mip levels, base (level 0 / largest) first. */\n readonly mips: readonly TranscodedMip[];\n}\n\nexport interface BasisSourceMeta {\n readonly colorSpace: 'srgb' | 'linear';\n}\n\nexport interface BasisSourceInspection {\n readonly colorSpace: BasisSourceMeta['colorSpace'];\n readonly profile: 'etc1s' | 'uastc-ldr';\n readonly width: number;\n readonly height: number;\n readonly levelCount: number;\n readonly imageCount: number;\n}\n\n/** Result of transcoding a raw Basis file into one engine texture format. */\nexport interface TranscodedBasisTexture {\n readonly format: GPUTextureFormat;\n readonly width: number;\n readonly height: number;\n readonly mips: readonly TranscodedMip[];\n}\n\n/** Inspect a raw Basis source without inferring color from the binary payload. */\nexport function inspectBasisSource(\n file: BasisFile,\n meta: Partial<BasisSourceMeta>,\n profile: BasisSourceInspection['profile'],\n): CodecResult<BasisSourceInspection> {\n if (meta.colorSpace !== 'srgb' && meta.colorSpace !== 'linear') {\n return codecError('ktx2-parse-failed', {\n reason: 'raw Basis source requires Meta.colorSpace=srgb|linear',\n });\n }\n if (file.getNumImages() <= 0 || file.getNumLevels(0) <= 0) {\n return codecError('ktx2-parse-failed', { reason: 'invalid raw Basis source shape' });\n }\n return {\n ok: true,\n value: {\n colorSpace: meta.colorSpace,\n profile,\n width: file.getImageWidth(0, 0),\n height: file.getImageHeight(0, 0),\n levelCount: file.getNumLevels(0),\n imageCount: file.getNumImages(),\n },\n };\n}\n\n/**\n * Map a selected `GPUTextureFormat` to a basis `transcoder_texture_format` enum\n * value. sRGB variants share the transcode target (sRGB is a view/DFD concern,\n * not a distinct transcode format). Uncompressed single/dual-channel fallbacks\n * (r8/rg8) route through RGBA32 -- basis has no r8/rg8 uncompressed target; the\n * runtime upload path (M5) reconciles channel selection.\n */\nfunction basisTargetFor(mod: BasisTranscoderModule, format: GPUTextureFormat): number | null {\n const e = mod.transcoder_texture_format;\n switch (format) {\n case 'bc7-rgba-unorm':\n case 'bc7-rgba-unorm-srgb':\n return e.cTFBC7_RGBA.value;\n case 'bc5-rg-unorm':\n return e.cTFBC5_RG.value;\n case 'bc4-r-unorm':\n return e.cTFBC4_R.value;\n case 'bc6h-rgb-ufloat':\n return e.cTFBC6H.value;\n case 'etc2-rgba8unorm':\n case 'etc2-rgba8unorm-srgb':\n return e.cTFETC2_RGBA.value;\n case 'astc-4x4-unorm':\n case 'astc-4x4-unorm-srgb':\n return e.cTFASTC_4x4_RGBA.value;\n case 'rgba16float':\n return e.cTFRGBA_HALF.value;\n case 'rgba8unorm':\n case 'rgba8unorm-srgb':\n case 'rg8unorm':\n case 'r8unorm':\n return e.cTFRGBA32.value;\n default:\n return null;\n }\n}\n\n/**\n * Transcode every mip level of a parsed KTX2 container into `targetFormat`.\n *\n * Uses `parsed.rawBytes` as the basis KTX2File source. Returns one entry per mip\n * level (base first). On any basis-side failure returns a `transcode-failed`\n * CodecError carrying the source DFD color model and the target format.\n */\nexport async function transcodeKtx2(\n parsed: Ktx2Parsed,\n targetFormat: GPUTextureFormat,\n): Promise<CodecResult<TranscodedTexture>> {\n let mod: BasisTranscoderModule;\n try {\n mod = await initBasisTranscoder();\n } catch {\n return codecError('codec-init-failed', { stage: 'dynamic-import-basis-transcoder' });\n }\n\n const targetEnum = basisTargetFor(mod, targetFormat);\n if (targetEnum === null) {\n return codecError('transcode-failed', {\n sourceFormat: `dfd-model-${parsed.dfd?.colorModel ?? 'unknown'}`,\n targetFormat,\n });\n }\n\n const file = new mod.KTX2File(parsed.rawBytes);\n try {\n if (!file.isValid()) {\n return codecError('transcode-failed', {\n sourceFormat: 'invalid-ktx2-file',\n targetFormat,\n });\n }\n if (file.startTranscoding() === 0) {\n return codecError('transcode-failed', {\n sourceFormat: 'start-transcoding-failed',\n targetFormat,\n });\n }\n\n const levels = file.getLevels();\n const mips: TranscodedMip[] = [];\n for (let level = 0; level < levels; level++) {\n const info = file.getImageLevelInfo(level, 0, 0);\n const size = file.getImageTranscodedSizeInBytes(level, 0, 0, targetEnum);\n const dst = new Uint8Array(size);\n const ok = file.transcodeImage(dst, level, 0, 0, targetEnum, 0, -1, -1);\n if (ok === 0) {\n return codecError('transcode-failed', {\n sourceFormat: `dfd-model-${parsed.dfd?.colorModel ?? 'unknown'}-level-${level}`,\n targetFormat,\n });\n }\n mips.push({ level, width: info.origWidth, height: info.origHeight, data: dst });\n }\n\n return {\n ok: true,\n value: {\n format: targetFormat,\n width: file.getWidth(),\n height: file.getHeight(),\n mips,\n },\n };\n } finally {\n file.close();\n }\n}\n\n/** Transcode a raw `.basis` file; source color remains a Meta author fact. */\nexport async function transcodeBasis(\n bytes: Uint8Array,\n targetFormat: GPUTextureFormat,\n): Promise<CodecResult<TranscodedBasisTexture>> {\n let mod: BasisTranscoderModule;\n try {\n mod = await initBasisTranscoder();\n } catch {\n return codecError('codec-init-failed', { stage: 'dynamic-import-basis-transcoder' });\n }\n const targetEnum = basisTargetFor(mod, targetFormat);\n if (targetEnum === null || mod.BasisFile === undefined) {\n return codecError('transcode-failed', {\n sourceFormat: 'raw-basis',\n targetFormat,\n });\n }\n const file = new mod.BasisFile(bytes);\n try {\n if (file.getNumImages() <= 0 || file.getNumLevels(0) <= 0) {\n return codecError('transcode-failed', { sourceFormat: 'invalid-basis-file', targetFormat });\n }\n if (file.startTranscoding() === 0) {\n return codecError('transcode-failed', {\n sourceFormat: 'start-transcoding-failed',\n targetFormat,\n });\n }\n const mips: TranscodedMip[] = [];\n for (let level = 0; level < file.getNumLevels(0); level++) {\n const width = file.getImageWidth(0, level);\n const height = file.getImageHeight(0, level);\n const size = file.getImageTranscodedSizeInBytes(0, level, targetEnum);\n const data = new Uint8Array(size);\n if (file.transcodeImage(data, 0, level, targetEnum, 0) === 0) {\n return codecError('transcode-failed', {\n sourceFormat: `raw-basis-level-${level}`,\n targetFormat,\n });\n }\n mips.push({ level, width, height, data });\n }\n return {\n ok: true,\n value: {\n format: targetFormat,\n width: mips[0]?.width ?? 0,\n height: mips[0]?.height ?? 0,\n mips,\n },\n };\n } finally {\n file.close();\n }\n}\n","/**\n * Block-compressed texture format parameter table (D-6 shared SSOT).\n *\n * One table maps every WebGPU block-compressed `GPUTextureFormat` to its\n * texel-block dimensions and compressed bytes-per-block. Both the texture\n * upload path and the equirect upload path (M5) derive `bytesPerRow` /\n * `rowsPerImage` from this single table -- block math is defined once\n * (Derive, Don't Duplicate).\n *\n * Format list follows the WebGPU spec \"Compressed Texture Formats\" section.\n * PVRTC and ASTC-HDR are intentionally absent (OOS-5 / not exposed by WebGPU\n * core). Uncompressed formats are not in the table -- callers branch on\n * `isCompressedFormat` first and handle the linear `width * bytesPerPixel`\n * case themselves.\n */\n\n/** Texel-block dimensions + compressed size for one block-compressed format. */\nexport interface BlockParams {\n readonly blockW: number;\n readonly blockH: number;\n readonly bytesPerBlock: number;\n}\n\n/**\n * Block parameter table for every WebGPU block-compressed format.\n *\n * BC / ETC2 / EAC blocks are all 4x4 texels; ASTC block dimensions are encoded\n * in the format name (`astc-<W>x<H>-...`) and every ASTC block is 16 bytes.\n * bytesPerBlock: 8 for the 0.5-bpp formats (BC1, BC4, ETC2-rgb8, ETC2-rgb8a1,\n * EAC-r11), 16 for the 1-bpp formats (BC2/3/5/6H/7, ETC2-rgba8, EAC-rg11, ASTC).\n */\nconst BLOCK_TABLE: ReadonlyMap<GPUTextureFormat, BlockParams> = new Map<\n GPUTextureFormat,\n BlockParams\n>([\n // -- BC (S3TC / RGTC / BPTC) --\n ['bc1-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc1-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc2-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc2-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc3-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc3-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc4-r-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc4-r-snorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc5-rg-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc5-rg-snorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc6h-rgb-ufloat', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc6h-rgb-float', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc7-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc7-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n\n // -- ETC2 / EAC --\n ['etc2-rgb8unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgb8unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgb8a1unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgb8a1unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgba8unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['etc2-rgba8unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['eac-r11unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['eac-r11snorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['eac-rg11unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['eac-rg11snorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n\n // -- ASTC (all 16 bytes/block; block dims from the format name) --\n ['astc-4x4-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['astc-4x4-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['astc-5x4-unorm', { blockW: 5, blockH: 4, bytesPerBlock: 16 }],\n ['astc-5x4-unorm-srgb', { blockW: 5, blockH: 4, bytesPerBlock: 16 }],\n ['astc-5x5-unorm', { blockW: 5, blockH: 5, bytesPerBlock: 16 }],\n ['astc-5x5-unorm-srgb', { blockW: 5, blockH: 5, bytesPerBlock: 16 }],\n ['astc-6x5-unorm', { blockW: 6, blockH: 5, bytesPerBlock: 16 }],\n ['astc-6x5-unorm-srgb', { blockW: 6, blockH: 5, bytesPerBlock: 16 }],\n ['astc-6x6-unorm', { blockW: 6, blockH: 6, bytesPerBlock: 16 }],\n ['astc-6x6-unorm-srgb', { blockW: 6, blockH: 6, bytesPerBlock: 16 }],\n ['astc-8x5-unorm', { blockW: 8, blockH: 5, bytesPerBlock: 16 }],\n ['astc-8x5-unorm-srgb', { blockW: 8, blockH: 5, bytesPerBlock: 16 }],\n ['astc-8x6-unorm', { blockW: 8, blockH: 6, bytesPerBlock: 16 }],\n ['astc-8x6-unorm-srgb', { blockW: 8, blockH: 6, bytesPerBlock: 16 }],\n ['astc-8x8-unorm', { blockW: 8, blockH: 8, bytesPerBlock: 16 }],\n ['astc-8x8-unorm-srgb', { blockW: 8, blockH: 8, bytesPerBlock: 16 }],\n ['astc-10x5-unorm', { blockW: 10, blockH: 5, bytesPerBlock: 16 }],\n ['astc-10x5-unorm-srgb', { blockW: 10, blockH: 5, bytesPerBlock: 16 }],\n ['astc-10x6-unorm', { blockW: 10, blockH: 6, bytesPerBlock: 16 }],\n ['astc-10x6-unorm-srgb', { blockW: 10, blockH: 6, bytesPerBlock: 16 }],\n ['astc-10x8-unorm', { blockW: 10, blockH: 8, bytesPerBlock: 16 }],\n ['astc-10x8-unorm-srgb', { blockW: 10, blockH: 8, bytesPerBlock: 16 }],\n ['astc-10x10-unorm', { blockW: 10, blockH: 10, bytesPerBlock: 16 }],\n ['astc-10x10-unorm-srgb', { blockW: 10, blockH: 10, bytesPerBlock: 16 }],\n ['astc-12x10-unorm', { blockW: 12, blockH: 10, bytesPerBlock: 16 }],\n ['astc-12x10-unorm-srgb', { blockW: 12, blockH: 10, bytesPerBlock: 16 }],\n ['astc-12x12-unorm', { blockW: 12, blockH: 12, bytesPerBlock: 16 }],\n ['astc-12x12-unorm-srgb', { blockW: 12, blockH: 12, bytesPerBlock: 16 }],\n]);\n\n/**\n * Look up the block parameters for a format. Returns `null` for uncompressed\n * formats (the table only holds block-compressed entries).\n */\nexport function blockParamsForFormat(format: GPUTextureFormat): BlockParams | null {\n return BLOCK_TABLE.get(format) ?? null;\n}\n\n/** Guard: true iff `format` is a block-compressed format in the table. */\nexport function isCompressedFormat(format: GPUTextureFormat): boolean {\n return BLOCK_TABLE.has(format);\n}\n\n/**\n * Bytes per row for a compressed mip level of the given pixel width:\n * `ceil(width / blockW) * bytesPerBlock`. Tail texels pad up to a full block.\n * Returns `null` for uncompressed formats (no block entry) -- callers branch on\n * `isCompressedFormat` first.\n */\nexport function bytesPerRow(format: GPUTextureFormat, width: number): number | null {\n const params = BLOCK_TABLE.get(format);\n if (params === undefined) return null;\n return Math.ceil(width / params.blockW) * params.bytesPerBlock;\n}\n\n/**\n * Block rows for a compressed mip level of the given pixel height:\n * `ceil(height / blockH)`. Returns `null` for uncompressed formats.\n */\nexport function rowsPerImage(format: GPUTextureFormat, height: number): number | null {\n const params = BLOCK_TABLE.get(format);\n if (params === undefined) return null;\n return Math.ceil(height / params.blockH);\n}\n","import type { CodecResult } from './errors.js';\nimport { codecError } from './errors.js';\n\n/** The decompression function returned by fzstd's dynamic import. */\ntype FzstdDecompress = (dat: Uint8Array, buf?: Uint8Array) => Uint8Array;\n\n/** How the decompressor is loaded. Overridable in tests via {@link _setZstdImporter}. */\ntype ZstdImporter = () => Promise<FzstdDecompress>;\n\nconst defaultImporter: ZstdImporter = () =>\n import('fzstd').then((mod) => mod.decompress as FzstdDecompress);\n\nlet importer: ZstdImporter = defaultImporter;\n\n/**\n * Lazy-init singleton: initialized on first call to decompressZstd,\n * shared across concurrent callers (AC-12).\n *\n * null = never attempted, Promise in-flight = init pending,\n * resolved = decompressor ready, rejected = init failed (retry on next call).\n * @internal\n */\nlet _initPromise: Promise<FzstdDecompress> | null = null;\n\n/** Count of importer invocations; observed in tests to prove single-init (AC-12). @internal */\nlet initCount = 0;\n\nfunction getDecompressor(): Promise<FzstdDecompress> {\n if (_initPromise !== null) {\n return _initPromise;\n }\n initCount++;\n _initPromise = importer().catch((cause: unknown) => {\n // Clear cached failure so subsequent calls retry (do not permanently cache).\n _initPromise = null;\n throw new Error('codec-init-failed', { cause });\n });\n return _initPromise;\n}\n\n/**\n * Test-only: number of times the fzstd importer has been invoked. Proves the\n * lazy singleton loads the decompressor at most once under concurrency (AC-12).\n * @internal\n */\nexport function _zstdInitCount(): number {\n return initCount;\n}\n\n/**\n * Test-only: reset the lazy singleton and optionally override the importer, so\n * init counting / concurrency / failure-retry can be exercised deterministically.\n * Call with no argument to restore the real fzstd importer.\n * @internal\n */\nexport function _setZstdImporter(next?: ZstdImporter): void {\n importer = next ?? defaultImporter;\n _initPromise = null;\n initCount = 0;\n}\n\n/**\n * Decompress zstd-compressed bytes using fzstd (pure JS, no WASM).\n *\n * On success returns `{ ok: true, value: decompressed }`.\n * On failure returns a CodecError with `codec-init-failed` or\n * `decompression-failed` per the closed CodecErrorCode union (D-8).\n */\nexport async function decompressZstd(bytes: Uint8Array): Promise<CodecResult<Uint8Array>> {\n let decompress: FzstdDecompress;\n try {\n decompress = await getDecompressor();\n } catch {\n return codecError('codec-init-failed', { stage: 'dynamic-import-fzstd' });\n }\n\n try {\n const result = decompress(bytes);\n return { ok: true, value: result };\n } catch {\n return codecError('decompression-failed', {\n reason: 'zstd decompression failed: corrupt or invalid compressed data',\n });\n }\n}\n","/**\n * KTX2 2.0 container parser (per spec 2026-07-07-ktx2-container-binary-spec.md).\n *\n * Parses header + index + level index + DFD + KV metadata + SGD.\n * Does NOT interpret block-compressed payload content (OOS-6, Loop 2).\n *\n * scheme=2 (Zstandard) level decode reuses decompressZstd (AC-04 single implementation).\n */\n\nimport type { CodecResult } from './errors.js';\nimport { codecError } from './errors.js';\nimport { decompressZstd } from './zstd.js';\n\n/**\n * KTX2 2.0 identifier magic (12 bytes per spec section 1).\n * «KTX 20»\\r\\n\\x1A\\n\n */\nexport const KTX2_IDENTIFIER = new Uint8Array([\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a,\n]);\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface Ktx2Header {\n readonly vkFormat: number;\n readonly typeSize: number;\n readonly pixelWidth: number;\n readonly pixelHeight: number;\n readonly pixelDepth: number;\n readonly layerCount: number;\n readonly faceCount: number;\n readonly levelCount: number;\n readonly supercompressionScheme: number;\n}\n\nexport interface Ktx2Index {\n readonly dfdByteOffset: number;\n readonly dfdByteLength: number;\n readonly kvdByteOffset: number;\n readonly kvdByteLength: number;\n readonly sgdByteOffset: number;\n readonly sgdByteLength: number;\n}\n\nexport interface Ktx2LevelEntry {\n readonly byteOffset: number;\n readonly byteLength: number;\n readonly uncompressedByteLength: number;\n}\n\nexport interface Ktx2DfdSample {\n readonly bitOffset: number;\n readonly bitLength: number;\n readonly channelType: number;\n readonly qualifiers: number;\n readonly samplePosition: readonly [number, number, number, number];\n readonly sampleLower: number;\n readonly sampleUpper: number;\n}\n\nexport interface Ktx2Dfd {\n readonly totalSize: number;\n readonly vendorId: number;\n readonly descriptorType: number;\n readonly versionNumber: number;\n readonly descriptorBlockSize: number;\n readonly colorModel: number;\n readonly colorPrimaries: number;\n readonly transferFunction: number;\n readonly flags: number;\n readonly texelBlockDimension: readonly [number, number, number, number];\n readonly bytesPlane: readonly number[];\n readonly samples: readonly Ktx2DfdSample[];\n}\n\nexport interface Ktx2KvEntry {\n readonly key: string;\n readonly value: Uint8Array;\n}\n\n/** Fully parsed KTX2 container structure (five parts per AC-03). */\nexport interface Ktx2Parsed {\n readonly header: Ktx2Header;\n readonly index: Ktx2Index;\n /** Level index entries, stored smallest-first per KTX2 spec section 8. */\n readonly levelIndex: readonly Ktx2LevelEntry[];\n readonly dfd: Ktx2Dfd | null;\n readonly kvEntries: readonly Ktx2KvEntry[];\n readonly sgd: Uint8Array | null;\n /**\n * Reference to the raw source bytes. Carried so ktx2LevelsToRGBA can\n * extract level payloads without requiring a second argument.\n */\n readonly rawBytes: Uint8Array;\n}\n\n/**\n * Project the KTX2 DFD transfer function into the engine texture color\n * contract. The DFD is the container's single color authority: callers must\n * not maintain a second descriptor-side color field.\n */\nexport function ktx2ColorSpace(parsed: Ktx2Parsed): 'srgb' | 'linear' | undefined {\n switch (parsed.dfd?.transferFunction) {\n case 1:\n return 'linear';\n case 2:\n return 'srgb';\n default:\n return undefined;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers — little-endian reads\n// ---------------------------------------------------------------------------\n\nconst TD = new TextDecoder();\n\nfunction readU32(bytes: Uint8Array, byteOffset: number): number {\n return new DataView(bytes.buffer, bytes.byteOffset + byteOffset, 4).getUint32(0, true);\n}\n\n/** Read u64 LE as Number (safe for values < 2^53; all KTX2 offsets fit). */\nfunction readU64(bytes: Uint8Array, byteOffset: number): number {\n return Number(new DataView(bytes.buffer, bytes.byteOffset + byteOffset, 8).getBigUint64(0, true));\n}\n\n/** Check that offset + length is within the byte array; throw if not. */\nfunction assertBounds(bytes: Uint8Array, offset: number, length: number, context: string): void {\n if (offset + length > bytes.length) {\n throw new Error(\n `KTX2 parse ${context}: OOB (offset=${offset}, length=${length}, fileSize=${bytes.length})`,\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// DFD parser (spec sections 5.1-5.3)\n// ---------------------------------------------------------------------------\n\nfunction parseDfd(bytes: Uint8Array, offset: number, _dfdByteLength: number): Ktx2Dfd {\n assertBounds(bytes, offset, 4, 'DFD-totalSize');\n const totalSize = readU32(bytes, offset);\n assertBounds(bytes, offset, totalSize, 'DFD-block');\n\n // Descriptor block starts at offset+4 (after dfdTotalSize)\n const dbOff = offset + 4;\n\n const word0 = readU32(bytes, dbOff);\n const vendorId = word0 & 0x1ffff;\n const descriptorType = (word0 >>> 17) & 0x7fff;\n\n const word1 = readU32(bytes, dbOff + 4);\n const versionNumber = word1 & 0xffff;\n const descriptorBlockSize = (word1 >>> 16) & 0xffff;\n\n const word2 = readU32(bytes, dbOff + 8);\n const colorModel = word2 & 0xff;\n const colorPrimaries = (word2 >>> 8) & 0xff;\n const transferFunction = (word2 >>> 16) & 0xff;\n const flags = (word2 >>> 24) & 0xff;\n\n const word3 = readU32(bytes, dbOff + 12);\n const texelBlockDim0 = word3 & 0xff;\n const texelBlockDim1 = (word3 >>> 8) & 0xff;\n const texelBlockDim2 = (word3 >>> 16) & 0xff;\n const texelBlockDim3 = (word3 >>> 24) & 0xff;\n\n const word4 = readU32(bytes, dbOff + 16);\n const word5 = readU32(bytes, dbOff + 20);\n const bytesPlane: readonly number[] = [\n word4 & 0xff,\n (word4 >>> 8) & 0xff,\n (word4 >>> 16) & 0xff,\n (word4 >>> 24) & 0xff,\n word5 & 0xff,\n (word5 >>> 8) & 0xff,\n (word5 >>> 16) & 0xff,\n (word5 >>> 24) & 0xff,\n ];\n\n // Samples: each 16 bytes = 4 u32 words, after 24-byte descriptor header\n const sampleBase = dbOff + 24;\n const numSamples = (descriptorBlockSize - 24) / 16;\n const samples: Ktx2DfdSample[] = [];\n for (let i = 0; i < numSamples; i++) {\n const so = sampleBase + i * 16;\n const sw0 = readU32(bytes, so);\n const sw1 = readU32(bytes, so + 4);\n const sw2 = readU32(bytes, so + 8);\n const sw3 = readU32(bytes, so + 12);\n\n samples.push({\n qualifiers: sw0 & 0xf,\n channelType: (sw0 >>> 4) & 0xff,\n bitLength: ((sw0 >>> 12) & 0xfff) + 1, // stored as actual-1 per spec\n bitOffset: (sw0 >>> 24) & 0xff,\n samplePosition: [\n sw1 & 0xff,\n (sw1 >>> 8) & 0xff,\n (sw1 >>> 16) & 0xff,\n (sw1 >>> 24) & 0xff,\n ] as const,\n sampleLower: sw2,\n sampleUpper: sw3,\n });\n }\n\n return {\n totalSize,\n vendorId,\n descriptorType,\n versionNumber,\n descriptorBlockSize,\n colorModel,\n colorPrimaries,\n transferFunction,\n flags,\n texelBlockDimension: [texelBlockDim0, texelBlockDim1, texelBlockDim2, texelBlockDim3] as const,\n bytesPlane,\n samples,\n };\n}\n\n// ---------------------------------------------------------------------------\n// KV metadata parser (spec section 6)\n// ---------------------------------------------------------------------------\n\nfunction parseKv(bytes: Uint8Array, offset: number, kvdByteLength: number): Ktx2KvEntry[] {\n if (kvdByteLength === 0) return [];\n\n const entries: Ktx2KvEntry[] = [];\n let pos = offset;\n const end = offset + kvdByteLength;\n\n while (pos < end) {\n assertBounds(bytes, pos, 4, 'KV-keyAndValueByteLength');\n const keyAndValueByteLength = readU32(bytes, pos);\n pos += 4;\n\n assertBounds(bytes, pos, keyAndValueByteLength, 'KV-payload');\n\n const raw = bytes.slice(pos, pos + keyAndValueByteLength);\n // Key is NUL-terminated UTF-8\n let nulIdx = raw.indexOf(0);\n if (nulIdx === -1) nulIdx = raw.length;\n const key = TD.decode(raw.slice(0, nulIdx));\n const value = raw.slice(nulIdx + 1);\n\n entries.push({ key, value });\n\n pos += keyAndValueByteLength;\n\n // align(4) padding per spec section 6\n const remainder = pos & 3;\n if (remainder !== 0) {\n pos += 4 - remainder;\n }\n }\n\n return entries;\n}\n\n// ---------------------------------------------------------------------------\n// Main parser (spec section 12, steps 1-6)\n// ---------------------------------------------------------------------------\n\n/**\n * Parse a KTX2 2.0 binary container into its five structural parts:\n * header, index, level index, DFD, KV metadata, and SGD.\n *\n * Does NOT interpret block-compressed payload content (OOS-6).\n *\n * Rejects unsupported supercompression schemes (BasisLZ=1, ZLIB=3, etc.)\n * with `ktx2-unsupported-scheme` that echoes the scheme value.\n */\nexport async function parseKtx2(bytes: Uint8Array): Promise<CodecResult<Ktx2Parsed>> {\n try {\n // 1. Validate identifier (12 bytes, spec section 1)\n if (bytes.length < 12) {\n return codecError('ktx2-parse-failed', {\n reason: 'truncated-identifier: file shorter than 12-byte KTX2 magic',\n });\n }\n for (let i = 0; i < 12; i++) {\n const expectedByte = KTX2_IDENTIFIER[i];\n if (expectedByte === undefined || bytes[i] !== expectedByte) {\n return codecError('ktx2-parse-failed', {\n reason: 'invalid-identifier: not a KTX2 2.0 file',\n });\n }\n }\n\n // 2. Header + index: identifier(12) + 9*u32(36) + 4*u32(16) + 2*u64(16) = 80\n if (bytes.length < 80) {\n return codecError('ktx2-parse-failed', {\n reason: 'truncated-header: file too short for KTX2 header + index (min 80 bytes)',\n });\n }\n\n const header: Ktx2Header = {\n vkFormat: readU32(bytes, 12),\n typeSize: readU32(bytes, 16),\n pixelWidth: readU32(bytes, 20),\n pixelHeight: readU32(bytes, 24),\n pixelDepth: readU32(bytes, 28),\n layerCount: readU32(bytes, 32),\n faceCount: readU32(bytes, 36),\n levelCount: readU32(bytes, 40),\n supercompressionScheme: readU32(bytes, 44),\n };\n\n const index: Ktx2Index = {\n dfdByteOffset: readU32(bytes, 48),\n dfdByteLength: readU32(bytes, 52),\n kvdByteOffset: readU32(bytes, 56),\n kvdByteLength: readU32(bytes, 60),\n sgdByteOffset: readU64(bytes, 64),\n sgdByteLength: readU64(bytes, 72),\n };\n\n // 3. Reject unsupported supercompression schemes (spec section 2.9).\n // scheme 0 = none, 1 = BasisLZ (Basis ETC1S payload, Loop 2 transcode arm),\n // 2 = Zstandard. scheme 3 (ZLIB) and any future scheme are still rejected;\n // scheme=1 is opened here (F-1 single-point gate) so the Basis payload passes\n // through to the transcode layer -- parseKtx2 itself does not interpret it.\n const scheme = header.supercompressionScheme;\n if (scheme !== 0 && scheme !== 1 && scheme !== 2) {\n return codecError('ktx2-unsupported-scheme', { scheme });\n }\n\n // 4. Level index: N = max(1, levelCount) per spec section 4\n const numLevels = Math.max(1, header.levelCount);\n const levelIndexStart = 80;\n assertBounds(bytes, levelIndexStart, numLevels * 24, 'level-index');\n\n const levelIndex: Ktx2LevelEntry[] = [];\n for (let i = 0; i < numLevels; i++) {\n const off = levelIndexStart + i * 24;\n const byteOffset = readU64(bytes, off);\n const byteLength = readU64(bytes, off + 8);\n const uncompressedByteLength = readU64(bytes, off + 16);\n\n // Validate level data OOB\n if (byteOffset + byteLength > bytes.length) {\n return codecError('ktx2-parse-failed', {\n reason: `level-index-OOB: level ${i} byteOffset=${byteOffset} byteLength=${byteLength} exceeds file size=${bytes.length}`,\n });\n }\n\n levelIndex.push({ byteOffset, byteLength, uncompressedByteLength });\n }\n\n // 5. DFD (spec section 5)\n let dfd: Ktx2Dfd | null = null;\n if (index.dfdByteLength > 0) {\n assertBounds(bytes, index.dfdByteOffset, index.dfdByteLength, 'DFD');\n dfd = parseDfd(bytes, index.dfdByteOffset, index.dfdByteLength);\n }\n\n // 6. KV metadata (spec section 6)\n let kvEntries: Ktx2KvEntry[] = [];\n if (index.kvdByteLength > 0) {\n assertBounds(bytes, index.kvdByteOffset, index.kvdByteLength, 'KVD');\n kvEntries = parseKv(bytes, index.kvdByteOffset, index.kvdByteLength);\n }\n\n // 7. Supercompression Global Data (spec section 7)\n let sgd: Uint8Array | null = null;\n if (index.sgdByteLength > 0) {\n assertBounds(bytes, index.sgdByteOffset, index.sgdByteLength, 'SGD');\n sgd = bytes.slice(index.sgdByteOffset, index.sgdByteOffset + index.sgdByteLength);\n }\n\n return {\n ok: true,\n value: {\n header,\n index,\n levelIndex,\n dfd,\n kvEntries,\n sgd,\n rawBytes: bytes,\n },\n };\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n return codecError('ktx2-parse-failed', { reason: `internal: ${message}` });\n }\n}\n\n// ---------------------------------------------------------------------------\n// Levels → RGBA extraction (spec section 12, step 7)\n// ---------------------------------------------------------------------------\n\n/**\n * Map a mip level number to the levelIndex entry.\n *\n * KTX2 stores mip levels smallest-first in both the level index and payload\n * section (spec section 8): levelIndex[0] = smallest (level N-1),\n * levelIndex[N-1] = base (level 0).\n *\n * So mip level 0 (base/largest) maps to levelIndex[N-1],\n * mip level 1 maps to levelIndex[N-2], etc.\n */\nfunction levelIndexForMip(totalLevels: number, mipLevel: number): number {\n const entryIdx = totalLevels - 1 - mipLevel;\n if (entryIdx < 0 || entryIdx >= totalLevels) return -1;\n return entryIdx;\n}\n\n/**\n * Extract RGBA pixel bytes from a parsed KTX2 container at a given mip level.\n *\n * - scheme=0 (uncompressed): returns raw level payload directly.\n * mipPadding between levels is handled by using levelIndex byteOffsets.\n * - scheme=2 (Zstandard supercompression): decompresses with `decompressZstd`,\n * the same function used by the asset-layer fetchBinary gate (AC-04).\n * - Other schemes: not reached (parseKtx2 rejects them), but defensively\n * returns `ktx2-unsupported-scheme`.\n *\n * @param parsed Result from `parseKtx2`.\n * @param level Mip level number (0 = base/largest, default 0).\n */\nexport async function ktx2LevelsToRGBA(\n parsed: Ktx2Parsed,\n level: number = 0,\n): Promise<CodecResult<Uint8Array>> {\n const totalLevels = parsed.levelIndex.length;\n const entryIdx = levelIndexForMip(totalLevels, level);\n if (entryIdx < 0) {\n return codecError('ktx2-parse-failed', { reason: `mip level ${level} does not exist` });\n }\n const entry = parsed.levelIndex[entryIdx];\n if (!entry) {\n return codecError('ktx2-parse-failed', {\n reason: `mip level ${level} has no level index entry`,\n });\n }\n\n if (parsed.header.supercompressionScheme === 0) {\n // Uncompressed — extract raw byte slice from source\n const slice = parsed.rawBytes.slice(entry.byteOffset, entry.byteOffset + entry.byteLength);\n return { ok: true, value: new Uint8Array(slice) };\n }\n\n if (parsed.header.supercompressionScheme === 2) {\n // Zstandard — decompress with same function as asset-layer (AC-04)\n const compressedSlice = parsed.rawBytes.slice(\n entry.byteOffset,\n entry.byteOffset + entry.byteLength,\n );\n const result = await decompressZstd(new Uint8Array(compressedSlice));\n if (!result.ok) {\n return codecError('ktx2-parse-failed', {\n reason: `zstd decompression failed for level ${level}: ${result.error.detail}`,\n });\n }\n return result;\n }\n\n // Defensive: unsupported schemes should have been rejected by parseKtx2\n return codecError('ktx2-unsupported-scheme', {\n scheme: parsed.header.supercompressionScheme,\n });\n}\n","/**\n * Transcode target selection (D-4 priority chain, browser+node dual-safe).\n *\n * `selectTranscodeTarget` is a pure function: given the source Basis encoding\n * descriptor (DFD-derived) and the device's compression capabilities, it returns\n * the `GPUTextureFormat` to transcode into. It performs zero I/O and imports no\n * node-only or DOM API -- an AI user can call it in node to predict, offline,\n * which format a given caps combination will hit.\n *\n * Priority chains (requirements §range table + D-4 Mesa guard):\n * RGBA : ASTC-4x4 -> BC7 -> ETC2-rgba8 -> RGBA8\n * RG : BC5 -> EAC-rg11 -> RG8\n * R : BC4 -> EAC-r11 -> R8\n * HDR : BC6H -> rgba16float\n *\n * D-4 \"BC present => prefer BC\": when `bc` is available alongside `astc`/`etc2`,\n * every LDR arm selects the BC target first. Rationale: bc coexisting with\n * astc/etc2 means either Apple Silicon (dual hardware; BC7 is lossless-equal at\n * 8bpp) or a desktop driver software-decoding ETC2/ASTC (the Mesa/ANV trap to\n * avoid). Preferring BC is correct in both cases, so the rule needs no source\n * discrimination. Because `bc` is tested first in each arm, this fall-through is\n * inherent -- no extra branch.\n *\n * Fallback is a format, never an error: with no compression cap the LDR arms\n * return `rgba8unorm[-srgb]` and the HDR arm returns `rgba16float`. Degradation\n * is silent but observable (the returned format reflects reality). ASTC-HDR and\n * PVRTC are out of scope (OOS-5 / not exposed by WebGPU core).\n */\n\n/** The DFD-derived source encoding of the Basis payload (D-3 delivery encodings). */\nexport type TranscodeModel = 'etc1s' | 'uastc-ldr' | 'uastc-hdr';\n\n/** Which channels the source carries, deciding the LDR arm (data vs color). */\nexport type TranscodeChannels = 'rgba' | 'rg' | 'r';\n\n/** Source descriptor for target selection; all fields DFD-derived upstream. */\nexport interface TranscodeSource {\n readonly model: TranscodeModel;\n /** sRGB transfer function (from the DFD). Only varies the RGBA color arm. */\n readonly srgb: boolean;\n readonly channels: TranscodeChannels;\n}\n\n/**\n * Device compression capabilities (D-8 local structure -- codec must not depend\n * on the rhi package; the runtime side projects `RhiCaps` into this).\n */\nexport interface TranscodeCaps {\n readonly bc: boolean;\n readonly etc2: boolean;\n readonly astc: boolean;\n}\n\nfunction selectRgba(srgb: boolean, caps: TranscodeCaps): GPUTextureFormat {\n // D-4: BC wins whenever present (before ASTC), guarding the Mesa/ANV trap.\n if (caps.bc) return srgb ? 'bc7-rgba-unorm-srgb' : 'bc7-rgba-unorm';\n if (caps.astc) return srgb ? 'astc-4x4-unorm-srgb' : 'astc-4x4-unorm';\n if (caps.etc2) return srgb ? 'etc2-rgba8unorm-srgb' : 'etc2-rgba8unorm';\n return srgb ? 'rgba8unorm-srgb' : 'rgba8unorm';\n}\n\nfunction selectRg(caps: TranscodeCaps): GPUTextureFormat {\n // Data channels have no sRGB variant. ASTC is not in the RG chain.\n if (caps.bc) return 'bc5-rg-unorm';\n if (caps.etc2) return 'eac-rg11unorm';\n return 'rg8unorm';\n}\n\nfunction selectR(caps: TranscodeCaps): GPUTextureFormat {\n if (caps.bc) return 'bc4-r-unorm';\n if (caps.etc2) return 'eac-r11unorm';\n return 'r8unorm';\n}\n\nfunction selectHdr(caps: TranscodeCaps): GPUTextureFormat {\n // ASTC-HDR is OOS; only BC6H, else uncompressed half-float.\n if (caps.bc) return 'bc6h-rgb-ufloat';\n return 'rgba16float';\n}\n\n/**\n * Select the transcode target `GPUTextureFormat` for a Basis source under the\n * given device caps. Pure, browser+node dual-safe, never returns an error --\n * a missing cap degrades to an uncompressed format, not a failure.\n */\nexport function selectTranscodeTarget(\n source: TranscodeSource,\n caps: TranscodeCaps,\n): GPUTextureFormat {\n if (source.model === 'uastc-hdr') return selectHdr(caps);\n switch (source.channels) {\n case 'rgba':\n return selectRgba(source.srgb, caps);\n case 'rg':\n return selectRg(caps);\n case 'r':\n return selectR(caps);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/basis-transcoder.ts","../src/block-format.ts","../src/zstd.ts","../src/ktx2.ts","../src/transcode.ts"],"names":["defaultImporter","importer","_initPromise"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Codec error model — closed union per D-8.\n *\n * All codec error codes live here as the SSOT. Runtime never extends the types\n * shared union; codec errors are nested in existing asset error detail.\n *\n * Union is order-locked and add-only-minor for Loop 2 additions.\n */\n\n/** Per-code narrowed detail payloads. */\ninterface CodecErrorDetails {\n 'decompression-failed': { readonly reason: string };\n 'codec-init-failed': { readonly stage: string };\n 'ktx2-parse-failed': { readonly reason: string };\n 'ktx2-unsupported-scheme': { readonly scheme: number };\n 'transcode-failed': { readonly sourceFormat: string; readonly targetFormat: string };\n 'ktx2-encode-failed': { readonly mode: string; readonly reason: string };\n}\n\n/** Order-locked closed union of codec error codes. */\nexport type CodecErrorCode = keyof CodecErrorDetails;\n\n/** Structured codec error with executable hint + per-code narrowed detail. */\nexport type CodecError = {\n [C in CodecErrorCode]: {\n readonly ok: false;\n readonly error: {\n readonly code: C;\n readonly expected: string;\n readonly hint: string;\n readonly detail: CodecErrorDetails[C];\n };\n };\n}[CodecErrorCode];\n\ntype CodecErrorFor<C extends CodecErrorCode> = Extract<\n CodecError,\n { readonly error: { readonly code: C } }\n>;\n\n/** Success branch of a Result<T, CodecError>. */\nexport interface CodecOk<T> {\n readonly ok: true;\n readonly value: T;\n}\n\n/** Result type for codec operations — discriminated union on `.ok`. */\nexport type CodecResult<T> = CodecOk<T> | CodecError;\n\n/** Error factory — produces a full CodecError object for the given code + detail. */\nexport function codecError<C extends CodecErrorCode>(\n code: C,\n detail: CodecErrorDetails[C],\n): CodecErrorFor<C> {\n const hints: Record<CodecErrorCode, string> = {\n 'decompression-failed':\n 'Check catalog row compression field and asset binary consistency; re-run asset import.',\n 'codec-init-failed':\n 'Uncompressed assets are still loadable. Verify the codec module is installed correctly.',\n 'ktx2-parse-failed':\n 'Check that the KTX2 file is valid and not truncated. Re-import the texture asset.',\n 'ktx2-unsupported-scheme':\n 'This supercompression scheme requires a future codec upgrade. Check the codec README Loop 2 extension points.',\n 'transcode-failed':\n 'Basis transcode failed for this source/target format pair. Verify the KTX2 payload is a valid Basis (ETC1S / UASTC) texture and re-import the asset.',\n 'ktx2-encode-failed':\n 'Basis encode failed for this compression mode. Verify the source image dimensions / pixel format match the mode (LDR rgba8 vs HDR rgba16float) and retry the asset import.',\n };\n\n return {\n ok: false,\n error: {\n code,\n expected: 'valid compressed data or supported compression scheme',\n hint: hints[code],\n detail,\n },\n } as CodecErrorFor<C>;\n}\n","/**\n * Basis transcoder glue: lazy-init singleton (D-10) + per-mip KTX2 transcode.\n *\n * `initBasisTranscoder` dynamic-imports the self-built transcoder WASM module on\n * first call and caches it; the second call returns the same instance without\n * re-importing (D-10 main-thread lazy-init -- `Engine.create` does not preload,\n * the first Basis payload triggers this). No worker pool (OOS -- forgeax has no\n * worker infrastructure). Both node and browser can `import` this module: the\n * WASM glue is a MODULARIZE factory whose `.mjs` path resolves in both.\n *\n * `transcodeKtx2` opens a parsed KTX2 container's raw bytes as a basis KTX2File,\n * starts transcoding, and transcodes every mip level (mip-major) into the target\n * `GPUTextureFormat`. It returns the block (or pixel) byte arrays per level; it\n * does not upload -- the runtime upload path (M5) consumes these with the block\n * table.\n */\n\nimport type { CodecResult } from './errors.js';\nimport { codecError } from './errors.js';\nimport type { Ktx2Parsed } from './ktx2.js';\nimport type { BasisFile, BasisModuleFactory, BasisTranscoderModule } from './wasm/basis-types.js';\n\n/** How the transcoder WASM module is loaded. Overridable in tests. */\ntype TranscoderImporter = () => Promise<BasisTranscoderModule>;\n\nconst TRANSCODER_GLUE = new URL('../pkg/basis_transcoder.mjs', import.meta.url);\nconst TRANSCODER_WASM = new URL('../pkg/basis_transcoder.wasm', import.meta.url);\n\nfunction traceBasisPhase(phase: string, detail?: Readonly<Record<string, unknown>>): void {\n const sink = (\n globalThis as typeof globalThis & {\n __forgeaxAssetLoadTrace?: (event: {\n readonly phase: string;\n readonly at: number;\n readonly detail?: Readonly<Record<string, unknown>>;\n }) => void;\n }\n ).__forgeaxAssetLoadTrace;\n if (sink === undefined) return;\n try {\n sink({ phase: `codec.${phase}`, at: Date.now(), ...(detail === undefined ? {} : { detail }) });\n } catch {\n // Diagnostics must never change codec behavior.\n }\n}\n\nconst defaultImporter: TranscoderImporter = async () => {\n traceBasisPhase('basis.glue.import.start', { url: TRANSCODER_GLUE.href });\n const factory = (\n (await import(/* @vite-ignore */ TRANSCODER_GLUE.href)) as {\n default: BasisModuleFactory<BasisTranscoderModule>;\n }\n ).default;\n traceBasisPhase('basis.glue.import.complete');\n traceBasisPhase('basis.wasm.factory.start', { url: TRANSCODER_WASM.href });\n const mod = await factory({ locateFile: () => TRANSCODER_WASM.href });\n traceBasisPhase('basis.wasm.factory.complete');\n traceBasisPhase('basis.initialize.start');\n mod.initializeBasis();\n traceBasisPhase('basis.initialize.complete');\n return mod;\n};\n\nlet importer: TranscoderImporter = defaultImporter;\n\n/**\n * Lazy-init singleton (D-10): null = never attempted, Promise = init in flight,\n * resolved = ready, rejected = cleared so the next call retries.\n * @internal\n */\nlet _initPromise: Promise<BasisTranscoderModule> | null = null;\n\n/** Count of importer invocations; observed in tests to prove single-init. @internal */\nlet initCount = 0;\n\n/**\n * Lazy-init the Basis transcoder WASM module (D-10 main-thread singleton).\n * First call dynamic-imports + initializes; subsequent calls return the cache.\n */\nexport function initBasisTranscoder(): Promise<BasisTranscoderModule> {\n if (_initPromise !== null) return _initPromise;\n initCount++;\n traceBasisPhase('basis.init.start');\n _initPromise = importer().catch((cause: unknown) => {\n _initPromise = null;\n throw new Error('codec-init-failed', { cause });\n });\n return _initPromise;\n}\n\n/**\n * Test-only: number of times the transcoder importer has been invoked. Proves\n * the lazy singleton loads the module at most once (D-10).\n * @internal\n */\nexport function _basisTranscoderInitCount(): number {\n return initCount;\n}\n\n/**\n * Test-only: reset the lazy singleton and optionally override the importer.\n * Call with no argument to restore the real WASM importer.\n * @internal\n */\nexport function _setBasisTranscoderImporter(next?: TranscoderImporter): void {\n importer = next ?? defaultImporter;\n _initPromise = null;\n initCount = 0;\n}\n\n/** One transcoded mip level (mip-major output). */\nexport interface TranscodedMip {\n readonly level: number;\n readonly width: number;\n readonly height: number;\n /** Transcoded block (compressed) or pixel (uncompressed) bytes for this level. */\n readonly data: Uint8Array;\n}\n\n/** Result of transcoding a KTX2 container into a target GPU format. */\nexport interface TranscodedTexture {\n readonly format: GPUTextureFormat;\n readonly width: number;\n readonly height: number;\n /** Mip levels, base (level 0 / largest) first. */\n readonly mips: readonly TranscodedMip[];\n}\n\nexport interface BasisSourceMeta {\n readonly colorSpace: 'srgb' | 'linear';\n}\n\nexport interface BasisSourceInspection {\n readonly colorSpace: BasisSourceMeta['colorSpace'];\n readonly profile: 'etc1s' | 'uastc-ldr';\n readonly width: number;\n readonly height: number;\n readonly levelCount: number;\n readonly imageCount: number;\n}\n\n/** Result of transcoding a raw Basis file into one engine texture format. */\nexport interface TranscodedBasisTexture {\n readonly format: GPUTextureFormat;\n readonly width: number;\n readonly height: number;\n readonly mips: readonly TranscodedMip[];\n}\n\n/** Inspect a raw Basis source without inferring color from the binary payload. */\nexport function inspectBasisSource(\n file: BasisFile,\n meta: Partial<BasisSourceMeta>,\n profile: BasisSourceInspection['profile'],\n): CodecResult<BasisSourceInspection> {\n if (meta.colorSpace !== 'srgb' && meta.colorSpace !== 'linear') {\n return codecError('ktx2-parse-failed', {\n reason: 'raw Basis source requires Meta.colorSpace=srgb|linear',\n });\n }\n if (file.getNumImages() <= 0 || file.getNumLevels(0) <= 0) {\n return codecError('ktx2-parse-failed', { reason: 'invalid raw Basis source shape' });\n }\n return {\n ok: true,\n value: {\n colorSpace: meta.colorSpace,\n profile,\n width: file.getImageWidth(0, 0),\n height: file.getImageHeight(0, 0),\n levelCount: file.getNumLevels(0),\n imageCount: file.getNumImages(),\n },\n };\n}\n\n/**\n * Map a selected `GPUTextureFormat` to a basis `transcoder_texture_format` enum\n * value. sRGB variants share the transcode target (sRGB is a view/DFD concern,\n * not a distinct transcode format). Uncompressed single/dual-channel fallbacks\n * (r8/rg8) route through RGBA32 -- basis has no r8/rg8 uncompressed target; the\n * runtime upload path (M5) reconciles channel selection.\n */\nfunction basisTargetFor(mod: BasisTranscoderModule, format: GPUTextureFormat): number | null {\n const e = mod.transcoder_texture_format;\n switch (format) {\n case 'bc7-rgba-unorm':\n case 'bc7-rgba-unorm-srgb':\n return e.cTFBC7_RGBA.value;\n case 'bc5-rg-unorm':\n return e.cTFBC5_RG.value;\n case 'bc4-r-unorm':\n return e.cTFBC4_R.value;\n case 'bc6h-rgb-ufloat':\n return e.cTFBC6H.value;\n case 'etc2-rgba8unorm':\n case 'etc2-rgba8unorm-srgb':\n return e.cTFETC2_RGBA.value;\n case 'astc-4x4-unorm':\n case 'astc-4x4-unorm-srgb':\n return e.cTFASTC_4x4_RGBA.value;\n case 'rgba16float':\n return e.cTFRGBA_HALF.value;\n case 'rgba8unorm':\n case 'rgba8unorm-srgb':\n case 'rg8unorm':\n case 'r8unorm':\n return e.cTFRGBA32.value;\n default:\n return null;\n }\n}\n\n/**\n * Transcode every mip level of a parsed KTX2 container into `targetFormat`.\n *\n * Uses `parsed.rawBytes` as the basis KTX2File source. Returns one entry per mip\n * level (base first). On any basis-side failure returns a `transcode-failed`\n * CodecError carrying the source DFD color model and the target format.\n */\nexport async function transcodeKtx2(\n parsed: Ktx2Parsed,\n targetFormat: GPUTextureFormat,\n): Promise<CodecResult<TranscodedTexture>> {\n traceBasisPhase('ktx2.transcode.start', { targetFormat });\n let mod: BasisTranscoderModule;\n try {\n mod = await initBasisTranscoder();\n } catch {\n return codecError('codec-init-failed', { stage: 'dynamic-import-basis-transcoder' });\n }\n\n const targetEnum = basisTargetFor(mod, targetFormat);\n if (targetEnum === null) {\n return codecError('transcode-failed', {\n sourceFormat: `dfd-model-${parsed.dfd?.colorModel ?? 'unknown'}`,\n targetFormat,\n });\n }\n\n const file = new mod.KTX2File(parsed.rawBytes);\n try {\n traceBasisPhase('ktx2.file.start');\n if (!file.isValid()) {\n return codecError('transcode-failed', {\n sourceFormat: 'invalid-ktx2-file',\n targetFormat,\n });\n }\n if (file.startTranscoding() === 0) {\n return codecError('transcode-failed', {\n sourceFormat: 'start-transcoding-failed',\n targetFormat,\n });\n }\n\n const levels = file.getLevels();\n traceBasisPhase('ktx2.file.ready', { levels });\n const mips: TranscodedMip[] = [];\n for (let level = 0; level < levels; level++) {\n const info = file.getImageLevelInfo(level, 0, 0);\n const size = file.getImageTranscodedSizeInBytes(level, 0, 0, targetEnum);\n const dst = new Uint8Array(size);\n const ok = file.transcodeImage(dst, level, 0, 0, targetEnum, 0, -1, -1);\n if (ok === 0) {\n return codecError('transcode-failed', {\n sourceFormat: `dfd-model-${parsed.dfd?.colorModel ?? 'unknown'}-level-${level}`,\n targetFormat,\n });\n }\n traceBasisPhase('ktx2.mip.complete', { level });\n mips.push({ level, width: info.origWidth, height: info.origHeight, data: dst });\n }\n\n return {\n ok: true,\n value: {\n format: targetFormat,\n width: file.getWidth(),\n height: file.getHeight(),\n mips,\n },\n };\n } finally {\n file.close();\n }\n}\n\n/** Transcode a raw `.basis` file; source color remains a Meta author fact. */\nexport async function transcodeBasis(\n bytes: Uint8Array,\n targetFormat: GPUTextureFormat,\n): Promise<CodecResult<TranscodedBasisTexture>> {\n let mod: BasisTranscoderModule;\n try {\n mod = await initBasisTranscoder();\n } catch {\n return codecError('codec-init-failed', { stage: 'dynamic-import-basis-transcoder' });\n }\n const targetEnum = basisTargetFor(mod, targetFormat);\n if (targetEnum === null || mod.BasisFile === undefined) {\n return codecError('transcode-failed', {\n sourceFormat: 'raw-basis',\n targetFormat,\n });\n }\n const file = new mod.BasisFile(bytes);\n try {\n if (file.getNumImages() <= 0 || file.getNumLevels(0) <= 0) {\n return codecError('transcode-failed', { sourceFormat: 'invalid-basis-file', targetFormat });\n }\n if (file.startTranscoding() === 0) {\n return codecError('transcode-failed', {\n sourceFormat: 'start-transcoding-failed',\n targetFormat,\n });\n }\n const mips: TranscodedMip[] = [];\n for (let level = 0; level < file.getNumLevels(0); level++) {\n const width = file.getImageWidth(0, level);\n const height = file.getImageHeight(0, level);\n const size = file.getImageTranscodedSizeInBytes(0, level, targetEnum);\n const data = new Uint8Array(size);\n if (file.transcodeImage(data, 0, level, targetEnum, 0) === 0) {\n return codecError('transcode-failed', {\n sourceFormat: `raw-basis-level-${level}`,\n targetFormat,\n });\n }\n mips.push({ level, width, height, data });\n }\n return {\n ok: true,\n value: {\n format: targetFormat,\n width: mips[0]?.width ?? 0,\n height: mips[0]?.height ?? 0,\n mips,\n },\n };\n } finally {\n file.close();\n }\n}\n","/**\n * Block-compressed texture format parameter table (D-6 shared SSOT).\n *\n * One table maps every WebGPU block-compressed `GPUTextureFormat` to its\n * texel-block dimensions and compressed bytes-per-block. Both the texture\n * upload path and the equirect upload path (M5) derive `bytesPerRow` /\n * `rowsPerImage` from this single table -- block math is defined once\n * (Derive, Don't Duplicate).\n *\n * Format list follows the WebGPU spec \"Compressed Texture Formats\" section.\n * PVRTC and ASTC-HDR are intentionally absent (OOS-5 / not exposed by WebGPU\n * core). Uncompressed formats are not in the table -- callers branch on\n * `isCompressedFormat` first and handle the linear `width * bytesPerPixel`\n * case themselves.\n */\n\n/** Texel-block dimensions + compressed size for one block-compressed format. */\nexport interface BlockParams {\n readonly blockW: number;\n readonly blockH: number;\n readonly bytesPerBlock: number;\n}\n\n/**\n * Block parameter table for every WebGPU block-compressed format.\n *\n * BC / ETC2 / EAC blocks are all 4x4 texels; ASTC block dimensions are encoded\n * in the format name (`astc-<W>x<H>-...`) and every ASTC block is 16 bytes.\n * bytesPerBlock: 8 for the 0.5-bpp formats (BC1, BC4, ETC2-rgb8, ETC2-rgb8a1,\n * EAC-r11), 16 for the 1-bpp formats (BC2/3/5/6H/7, ETC2-rgba8, EAC-rg11, ASTC).\n */\nconst BLOCK_TABLE: ReadonlyMap<GPUTextureFormat, BlockParams> = new Map<\n GPUTextureFormat,\n BlockParams\n>([\n // -- BC (S3TC / RGTC / BPTC) --\n ['bc1-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc1-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc2-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc2-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc3-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc3-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc4-r-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc4-r-snorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['bc5-rg-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc5-rg-snorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc6h-rgb-ufloat', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc6h-rgb-float', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc7-rgba-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['bc7-rgba-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n\n // -- ETC2 / EAC --\n ['etc2-rgb8unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgb8unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgb8a1unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgb8a1unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['etc2-rgba8unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['etc2-rgba8unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['eac-r11unorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['eac-r11snorm', { blockW: 4, blockH: 4, bytesPerBlock: 8 }],\n ['eac-rg11unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['eac-rg11snorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n\n // -- ASTC (all 16 bytes/block; block dims from the format name) --\n ['astc-4x4-unorm', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['astc-4x4-unorm-srgb', { blockW: 4, blockH: 4, bytesPerBlock: 16 }],\n ['astc-5x4-unorm', { blockW: 5, blockH: 4, bytesPerBlock: 16 }],\n ['astc-5x4-unorm-srgb', { blockW: 5, blockH: 4, bytesPerBlock: 16 }],\n ['astc-5x5-unorm', { blockW: 5, blockH: 5, bytesPerBlock: 16 }],\n ['astc-5x5-unorm-srgb', { blockW: 5, blockH: 5, bytesPerBlock: 16 }],\n ['astc-6x5-unorm', { blockW: 6, blockH: 5, bytesPerBlock: 16 }],\n ['astc-6x5-unorm-srgb', { blockW: 6, blockH: 5, bytesPerBlock: 16 }],\n ['astc-6x6-unorm', { blockW: 6, blockH: 6, bytesPerBlock: 16 }],\n ['astc-6x6-unorm-srgb', { blockW: 6, blockH: 6, bytesPerBlock: 16 }],\n ['astc-8x5-unorm', { blockW: 8, blockH: 5, bytesPerBlock: 16 }],\n ['astc-8x5-unorm-srgb', { blockW: 8, blockH: 5, bytesPerBlock: 16 }],\n ['astc-8x6-unorm', { blockW: 8, blockH: 6, bytesPerBlock: 16 }],\n ['astc-8x6-unorm-srgb', { blockW: 8, blockH: 6, bytesPerBlock: 16 }],\n ['astc-8x8-unorm', { blockW: 8, blockH: 8, bytesPerBlock: 16 }],\n ['astc-8x8-unorm-srgb', { blockW: 8, blockH: 8, bytesPerBlock: 16 }],\n ['astc-10x5-unorm', { blockW: 10, blockH: 5, bytesPerBlock: 16 }],\n ['astc-10x5-unorm-srgb', { blockW: 10, blockH: 5, bytesPerBlock: 16 }],\n ['astc-10x6-unorm', { blockW: 10, blockH: 6, bytesPerBlock: 16 }],\n ['astc-10x6-unorm-srgb', { blockW: 10, blockH: 6, bytesPerBlock: 16 }],\n ['astc-10x8-unorm', { blockW: 10, blockH: 8, bytesPerBlock: 16 }],\n ['astc-10x8-unorm-srgb', { blockW: 10, blockH: 8, bytesPerBlock: 16 }],\n ['astc-10x10-unorm', { blockW: 10, blockH: 10, bytesPerBlock: 16 }],\n ['astc-10x10-unorm-srgb', { blockW: 10, blockH: 10, bytesPerBlock: 16 }],\n ['astc-12x10-unorm', { blockW: 12, blockH: 10, bytesPerBlock: 16 }],\n ['astc-12x10-unorm-srgb', { blockW: 12, blockH: 10, bytesPerBlock: 16 }],\n ['astc-12x12-unorm', { blockW: 12, blockH: 12, bytesPerBlock: 16 }],\n ['astc-12x12-unorm-srgb', { blockW: 12, blockH: 12, bytesPerBlock: 16 }],\n]);\n\n/**\n * Look up the block parameters for a format. Returns `null` for uncompressed\n * formats (the table only holds block-compressed entries).\n */\nexport function blockParamsForFormat(format: GPUTextureFormat): BlockParams | null {\n return BLOCK_TABLE.get(format) ?? null;\n}\n\n/** Guard: true iff `format` is a block-compressed format in the table. */\nexport function isCompressedFormat(format: GPUTextureFormat): boolean {\n return BLOCK_TABLE.has(format);\n}\n\n/**\n * Bytes per row for a compressed mip level of the given pixel width:\n * `ceil(width / blockW) * bytesPerBlock`. Tail texels pad up to a full block.\n * Returns `null` for uncompressed formats (no block entry) -- callers branch on\n * `isCompressedFormat` first.\n */\nexport function bytesPerRow(format: GPUTextureFormat, width: number): number | null {\n const params = BLOCK_TABLE.get(format);\n if (params === undefined) return null;\n return Math.ceil(width / params.blockW) * params.bytesPerBlock;\n}\n\n/**\n * Block rows for a compressed mip level of the given pixel height:\n * `ceil(height / blockH)`. Returns `null` for uncompressed formats.\n */\nexport function rowsPerImage(format: GPUTextureFormat, height: number): number | null {\n const params = BLOCK_TABLE.get(format);\n if (params === undefined) return null;\n return Math.ceil(height / params.blockH);\n}\n","import type { CodecResult } from './errors.js';\nimport { codecError } from './errors.js';\n\n/** The decompression function returned by fzstd's dynamic import. */\ntype FzstdDecompress = (dat: Uint8Array, buf?: Uint8Array) => Uint8Array;\n\n/** How the decompressor is loaded. Overridable in tests via {@link _setZstdImporter}. */\ntype ZstdImporter = () => Promise<FzstdDecompress>;\n\nconst defaultImporter: ZstdImporter = () =>\n import('fzstd').then((mod) => mod.decompress as FzstdDecompress);\n\nlet importer: ZstdImporter = defaultImporter;\n\n/**\n * Lazy-init singleton: initialized on first call to decompressZstd,\n * shared across concurrent callers (AC-12).\n *\n * null = never attempted, Promise in-flight = init pending,\n * resolved = decompressor ready, rejected = init failed (retry on next call).\n * @internal\n */\nlet _initPromise: Promise<FzstdDecompress> | null = null;\n\n/** Count of importer invocations; observed in tests to prove single-init (AC-12). @internal */\nlet initCount = 0;\n\nfunction getDecompressor(): Promise<FzstdDecompress> {\n if (_initPromise !== null) {\n return _initPromise;\n }\n initCount++;\n _initPromise = importer().catch((cause: unknown) => {\n // Clear cached failure so subsequent calls retry (do not permanently cache).\n _initPromise = null;\n throw new Error('codec-init-failed', { cause });\n });\n return _initPromise;\n}\n\n/**\n * Test-only: number of times the fzstd importer has been invoked. Proves the\n * lazy singleton loads the decompressor at most once under concurrency (AC-12).\n * @internal\n */\nexport function _zstdInitCount(): number {\n return initCount;\n}\n\n/**\n * Test-only: reset the lazy singleton and optionally override the importer, so\n * init counting / concurrency / failure-retry can be exercised deterministically.\n * Call with no argument to restore the real fzstd importer.\n * @internal\n */\nexport function _setZstdImporter(next?: ZstdImporter): void {\n importer = next ?? defaultImporter;\n _initPromise = null;\n initCount = 0;\n}\n\n/**\n * Decompress zstd-compressed bytes using fzstd (pure JS, no WASM).\n *\n * On success returns `{ ok: true, value: decompressed }`.\n * On failure returns a CodecError with `codec-init-failed` or\n * `decompression-failed` per the closed CodecErrorCode union (D-8).\n */\nexport async function decompressZstd(bytes: Uint8Array): Promise<CodecResult<Uint8Array>> {\n let decompress: FzstdDecompress;\n try {\n decompress = await getDecompressor();\n } catch {\n return codecError('codec-init-failed', { stage: 'dynamic-import-fzstd' });\n }\n\n try {\n const result = decompress(bytes);\n return { ok: true, value: result };\n } catch {\n return codecError('decompression-failed', {\n reason: 'zstd decompression failed: corrupt or invalid compressed data',\n });\n }\n}\n","/**\n * KTX2 2.0 container parser (per spec 2026-07-07-ktx2-container-binary-spec.md).\n *\n * Parses header + index + level index + DFD + KV metadata + SGD.\n * Does NOT interpret block-compressed payload content (OOS-6, Loop 2).\n *\n * scheme=2 (Zstandard) level decode reuses decompressZstd (AC-04 single implementation).\n */\n\nimport type { CodecResult } from './errors.js';\nimport { codecError } from './errors.js';\nimport { decompressZstd } from './zstd.js';\n\n/**\n * KTX2 2.0 identifier magic (12 bytes per spec section 1).\n * «KTX 20»\\r\\n\\x1A\\n\n */\nexport const KTX2_IDENTIFIER = new Uint8Array([\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a,\n]);\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface Ktx2Header {\n readonly vkFormat: number;\n readonly typeSize: number;\n readonly pixelWidth: number;\n readonly pixelHeight: number;\n readonly pixelDepth: number;\n readonly layerCount: number;\n readonly faceCount: number;\n readonly levelCount: number;\n readonly supercompressionScheme: number;\n}\n\nexport interface Ktx2Index {\n readonly dfdByteOffset: number;\n readonly dfdByteLength: number;\n readonly kvdByteOffset: number;\n readonly kvdByteLength: number;\n readonly sgdByteOffset: number;\n readonly sgdByteLength: number;\n}\n\nexport interface Ktx2LevelEntry {\n readonly byteOffset: number;\n readonly byteLength: number;\n readonly uncompressedByteLength: number;\n}\n\nexport interface Ktx2DfdSample {\n readonly bitOffset: number;\n readonly bitLength: number;\n readonly channelType: number;\n readonly qualifiers: number;\n readonly samplePosition: readonly [number, number, number, number];\n readonly sampleLower: number;\n readonly sampleUpper: number;\n}\n\nexport interface Ktx2Dfd {\n readonly totalSize: number;\n readonly vendorId: number;\n readonly descriptorType: number;\n readonly versionNumber: number;\n readonly descriptorBlockSize: number;\n readonly colorModel: number;\n readonly colorPrimaries: number;\n readonly transferFunction: number;\n readonly flags: number;\n readonly texelBlockDimension: readonly [number, number, number, number];\n readonly bytesPlane: readonly number[];\n readonly samples: readonly Ktx2DfdSample[];\n}\n\nexport interface Ktx2KvEntry {\n readonly key: string;\n readonly value: Uint8Array;\n}\n\n/** Fully parsed KTX2 container structure (five parts per AC-03). */\nexport interface Ktx2Parsed {\n readonly header: Ktx2Header;\n readonly index: Ktx2Index;\n /** Level index entries, stored smallest-first per KTX2 spec section 8. */\n readonly levelIndex: readonly Ktx2LevelEntry[];\n readonly dfd: Ktx2Dfd | null;\n readonly kvEntries: readonly Ktx2KvEntry[];\n readonly sgd: Uint8Array | null;\n /**\n * Reference to the raw source bytes. Carried so ktx2LevelsToRGBA can\n * extract level payloads without requiring a second argument.\n */\n readonly rawBytes: Uint8Array;\n}\n\n/**\n * Project the KTX2 DFD transfer function into the engine texture color\n * contract. The DFD is the container's single color authority: callers must\n * not maintain a second descriptor-side color field.\n */\nexport function ktx2ColorSpace(parsed: Ktx2Parsed): 'srgb' | 'linear' | undefined {\n switch (parsed.dfd?.transferFunction) {\n case 1:\n return 'linear';\n case 2:\n return 'srgb';\n default:\n return undefined;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers — little-endian reads\n// ---------------------------------------------------------------------------\n\nconst TD = new TextDecoder();\n\nfunction readU32(bytes: Uint8Array, byteOffset: number): number {\n return new DataView(bytes.buffer, bytes.byteOffset + byteOffset, 4).getUint32(0, true);\n}\n\n/** Read u64 LE as Number (safe for values < 2^53; all KTX2 offsets fit). */\nfunction readU64(bytes: Uint8Array, byteOffset: number): number {\n return Number(new DataView(bytes.buffer, bytes.byteOffset + byteOffset, 8).getBigUint64(0, true));\n}\n\n/** Check that offset + length is within the byte array; throw if not. */\nfunction assertBounds(bytes: Uint8Array, offset: number, length: number, context: string): void {\n if (offset + length > bytes.length) {\n throw new Error(\n `KTX2 parse ${context}: OOB (offset=${offset}, length=${length}, fileSize=${bytes.length})`,\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// DFD parser (spec sections 5.1-5.3)\n// ---------------------------------------------------------------------------\n\nfunction parseDfd(bytes: Uint8Array, offset: number, _dfdByteLength: number): Ktx2Dfd {\n assertBounds(bytes, offset, 4, 'DFD-totalSize');\n const totalSize = readU32(bytes, offset);\n assertBounds(bytes, offset, totalSize, 'DFD-block');\n\n // Descriptor block starts at offset+4 (after dfdTotalSize)\n const dbOff = offset + 4;\n\n const word0 = readU32(bytes, dbOff);\n const vendorId = word0 & 0x1ffff;\n const descriptorType = (word0 >>> 17) & 0x7fff;\n\n const word1 = readU32(bytes, dbOff + 4);\n const versionNumber = word1 & 0xffff;\n const descriptorBlockSize = (word1 >>> 16) & 0xffff;\n\n const word2 = readU32(bytes, dbOff + 8);\n const colorModel = word2 & 0xff;\n const colorPrimaries = (word2 >>> 8) & 0xff;\n const transferFunction = (word2 >>> 16) & 0xff;\n const flags = (word2 >>> 24) & 0xff;\n\n const word3 = readU32(bytes, dbOff + 12);\n const texelBlockDim0 = word3 & 0xff;\n const texelBlockDim1 = (word3 >>> 8) & 0xff;\n const texelBlockDim2 = (word3 >>> 16) & 0xff;\n const texelBlockDim3 = (word3 >>> 24) & 0xff;\n\n const word4 = readU32(bytes, dbOff + 16);\n const word5 = readU32(bytes, dbOff + 20);\n const bytesPlane: readonly number[] = [\n word4 & 0xff,\n (word4 >>> 8) & 0xff,\n (word4 >>> 16) & 0xff,\n (word4 >>> 24) & 0xff,\n word5 & 0xff,\n (word5 >>> 8) & 0xff,\n (word5 >>> 16) & 0xff,\n (word5 >>> 24) & 0xff,\n ];\n\n // Samples: each 16 bytes = 4 u32 words, after 24-byte descriptor header\n const sampleBase = dbOff + 24;\n const numSamples = (descriptorBlockSize - 24) / 16;\n const samples: Ktx2DfdSample[] = [];\n for (let i = 0; i < numSamples; i++) {\n const so = sampleBase + i * 16;\n const sw0 = readU32(bytes, so);\n const sw1 = readU32(bytes, so + 4);\n const sw2 = readU32(bytes, so + 8);\n const sw3 = readU32(bytes, so + 12);\n\n samples.push({\n qualifiers: sw0 & 0xf,\n channelType: (sw0 >>> 4) & 0xff,\n bitLength: ((sw0 >>> 12) & 0xfff) + 1, // stored as actual-1 per spec\n bitOffset: (sw0 >>> 24) & 0xff,\n samplePosition: [\n sw1 & 0xff,\n (sw1 >>> 8) & 0xff,\n (sw1 >>> 16) & 0xff,\n (sw1 >>> 24) & 0xff,\n ] as const,\n sampleLower: sw2,\n sampleUpper: sw3,\n });\n }\n\n return {\n totalSize,\n vendorId,\n descriptorType,\n versionNumber,\n descriptorBlockSize,\n colorModel,\n colorPrimaries,\n transferFunction,\n flags,\n texelBlockDimension: [texelBlockDim0, texelBlockDim1, texelBlockDim2, texelBlockDim3] as const,\n bytesPlane,\n samples,\n };\n}\n\n// ---------------------------------------------------------------------------\n// KV metadata parser (spec section 6)\n// ---------------------------------------------------------------------------\n\nfunction parseKv(bytes: Uint8Array, offset: number, kvdByteLength: number): Ktx2KvEntry[] {\n if (kvdByteLength === 0) return [];\n\n const entries: Ktx2KvEntry[] = [];\n let pos = offset;\n const end = offset + kvdByteLength;\n\n while (pos < end) {\n assertBounds(bytes, pos, 4, 'KV-keyAndValueByteLength');\n const keyAndValueByteLength = readU32(bytes, pos);\n pos += 4;\n\n assertBounds(bytes, pos, keyAndValueByteLength, 'KV-payload');\n\n const raw = bytes.slice(pos, pos + keyAndValueByteLength);\n // Key is NUL-terminated UTF-8\n let nulIdx = raw.indexOf(0);\n if (nulIdx === -1) nulIdx = raw.length;\n const key = TD.decode(raw.slice(0, nulIdx));\n const value = raw.slice(nulIdx + 1);\n\n entries.push({ key, value });\n\n pos += keyAndValueByteLength;\n\n // align(4) padding per spec section 6\n const remainder = pos & 3;\n if (remainder !== 0) {\n pos += 4 - remainder;\n }\n }\n\n return entries;\n}\n\n// ---------------------------------------------------------------------------\n// Main parser (spec section 12, steps 1-6)\n// ---------------------------------------------------------------------------\n\n/**\n * Parse a KTX2 2.0 binary container into its five structural parts:\n * header, index, level index, DFD, KV metadata, and SGD.\n *\n * Does NOT interpret block-compressed payload content (OOS-6).\n *\n * Rejects unsupported supercompression schemes (BasisLZ=1, ZLIB=3, etc.)\n * with `ktx2-unsupported-scheme` that echoes the scheme value.\n */\nexport async function parseKtx2(bytes: Uint8Array): Promise<CodecResult<Ktx2Parsed>> {\n try {\n // 1. Validate identifier (12 bytes, spec section 1)\n if (bytes.length < 12) {\n return codecError('ktx2-parse-failed', {\n reason: 'truncated-identifier: file shorter than 12-byte KTX2 magic',\n });\n }\n for (let i = 0; i < 12; i++) {\n const expectedByte = KTX2_IDENTIFIER[i];\n if (expectedByte === undefined || bytes[i] !== expectedByte) {\n return codecError('ktx2-parse-failed', {\n reason: 'invalid-identifier: not a KTX2 2.0 file',\n });\n }\n }\n\n // 2. Header + index: identifier(12) + 9*u32(36) + 4*u32(16) + 2*u64(16) = 80\n if (bytes.length < 80) {\n return codecError('ktx2-parse-failed', {\n reason: 'truncated-header: file too short for KTX2 header + index (min 80 bytes)',\n });\n }\n\n const header: Ktx2Header = {\n vkFormat: readU32(bytes, 12),\n typeSize: readU32(bytes, 16),\n pixelWidth: readU32(bytes, 20),\n pixelHeight: readU32(bytes, 24),\n pixelDepth: readU32(bytes, 28),\n layerCount: readU32(bytes, 32),\n faceCount: readU32(bytes, 36),\n levelCount: readU32(bytes, 40),\n supercompressionScheme: readU32(bytes, 44),\n };\n\n const index: Ktx2Index = {\n dfdByteOffset: readU32(bytes, 48),\n dfdByteLength: readU32(bytes, 52),\n kvdByteOffset: readU32(bytes, 56),\n kvdByteLength: readU32(bytes, 60),\n sgdByteOffset: readU64(bytes, 64),\n sgdByteLength: readU64(bytes, 72),\n };\n\n // 3. Reject unsupported supercompression schemes (spec section 2.9).\n // scheme 0 = none, 1 = BasisLZ (Basis ETC1S payload, Loop 2 transcode arm),\n // 2 = Zstandard. scheme 3 (ZLIB) and any future scheme are still rejected;\n // scheme=1 is opened here (F-1 single-point gate) so the Basis payload passes\n // through to the transcode layer -- parseKtx2 itself does not interpret it.\n const scheme = header.supercompressionScheme;\n if (scheme !== 0 && scheme !== 1 && scheme !== 2) {\n return codecError('ktx2-unsupported-scheme', { scheme });\n }\n\n // 4. Level index: N = max(1, levelCount) per spec section 4\n const numLevels = Math.max(1, header.levelCount);\n const levelIndexStart = 80;\n assertBounds(bytes, levelIndexStart, numLevels * 24, 'level-index');\n\n const levelIndex: Ktx2LevelEntry[] = [];\n for (let i = 0; i < numLevels; i++) {\n const off = levelIndexStart + i * 24;\n const byteOffset = readU64(bytes, off);\n const byteLength = readU64(bytes, off + 8);\n const uncompressedByteLength = readU64(bytes, off + 16);\n\n // Validate level data OOB\n if (byteOffset + byteLength > bytes.length) {\n return codecError('ktx2-parse-failed', {\n reason: `level-index-OOB: level ${i} byteOffset=${byteOffset} byteLength=${byteLength} exceeds file size=${bytes.length}`,\n });\n }\n\n levelIndex.push({ byteOffset, byteLength, uncompressedByteLength });\n }\n\n // 5. DFD (spec section 5)\n let dfd: Ktx2Dfd | null = null;\n if (index.dfdByteLength > 0) {\n assertBounds(bytes, index.dfdByteOffset, index.dfdByteLength, 'DFD');\n dfd = parseDfd(bytes, index.dfdByteOffset, index.dfdByteLength);\n }\n\n // 6. KV metadata (spec section 6)\n let kvEntries: Ktx2KvEntry[] = [];\n if (index.kvdByteLength > 0) {\n assertBounds(bytes, index.kvdByteOffset, index.kvdByteLength, 'KVD');\n kvEntries = parseKv(bytes, index.kvdByteOffset, index.kvdByteLength);\n }\n\n // 7. Supercompression Global Data (spec section 7)\n let sgd: Uint8Array | null = null;\n if (index.sgdByteLength > 0) {\n assertBounds(bytes, index.sgdByteOffset, index.sgdByteLength, 'SGD');\n sgd = bytes.slice(index.sgdByteOffset, index.sgdByteOffset + index.sgdByteLength);\n }\n\n return {\n ok: true,\n value: {\n header,\n index,\n levelIndex,\n dfd,\n kvEntries,\n sgd,\n rawBytes: bytes,\n },\n };\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n return codecError('ktx2-parse-failed', { reason: `internal: ${message}` });\n }\n}\n\n// ---------------------------------------------------------------------------\n// Levels → RGBA extraction (spec section 12, step 7)\n// ---------------------------------------------------------------------------\n\n/**\n * Map a mip level number to the levelIndex entry.\n *\n * KTX2 stores mip levels smallest-first in both the level index and payload\n * section (spec section 8): levelIndex[0] = smallest (level N-1),\n * levelIndex[N-1] = base (level 0).\n *\n * So mip level 0 (base/largest) maps to levelIndex[N-1],\n * mip level 1 maps to levelIndex[N-2], etc.\n */\nfunction levelIndexForMip(totalLevels: number, mipLevel: number): number {\n const entryIdx = totalLevels - 1 - mipLevel;\n if (entryIdx < 0 || entryIdx >= totalLevels) return -1;\n return entryIdx;\n}\n\n/**\n * Extract RGBA pixel bytes from a parsed KTX2 container at a given mip level.\n *\n * - scheme=0 (uncompressed): returns raw level payload directly.\n * mipPadding between levels is handled by using levelIndex byteOffsets.\n * - scheme=2 (Zstandard supercompression): decompresses with `decompressZstd`,\n * the same function used by the asset-layer fetchBinary gate (AC-04).\n * - Other schemes: not reached (parseKtx2 rejects them), but defensively\n * returns `ktx2-unsupported-scheme`.\n *\n * @param parsed Result from `parseKtx2`.\n * @param level Mip level number (0 = base/largest, default 0).\n */\nexport async function ktx2LevelsToRGBA(\n parsed: Ktx2Parsed,\n level: number = 0,\n): Promise<CodecResult<Uint8Array>> {\n const totalLevels = parsed.levelIndex.length;\n const entryIdx = levelIndexForMip(totalLevels, level);\n if (entryIdx < 0) {\n return codecError('ktx2-parse-failed', { reason: `mip level ${level} does not exist` });\n }\n const entry = parsed.levelIndex[entryIdx];\n if (!entry) {\n return codecError('ktx2-parse-failed', {\n reason: `mip level ${level} has no level index entry`,\n });\n }\n\n if (parsed.header.supercompressionScheme === 0) {\n // Uncompressed — extract raw byte slice from source\n const slice = parsed.rawBytes.slice(entry.byteOffset, entry.byteOffset + entry.byteLength);\n return { ok: true, value: new Uint8Array(slice) };\n }\n\n if (parsed.header.supercompressionScheme === 2) {\n // Zstandard — decompress with same function as asset-layer (AC-04)\n const compressedSlice = parsed.rawBytes.slice(\n entry.byteOffset,\n entry.byteOffset + entry.byteLength,\n );\n const result = await decompressZstd(new Uint8Array(compressedSlice));\n if (!result.ok) {\n return codecError('ktx2-parse-failed', {\n reason: `zstd decompression failed for level ${level}: ${result.error.detail}`,\n });\n }\n return result;\n }\n\n // Defensive: unsupported schemes should have been rejected by parseKtx2\n return codecError('ktx2-unsupported-scheme', {\n scheme: parsed.header.supercompressionScheme,\n });\n}\n","/**\n * Transcode target selection (D-4 priority chain, browser+node dual-safe).\n *\n * `selectTranscodeTarget` is a pure function: given the source Basis encoding\n * descriptor (DFD-derived) and the device's compression capabilities, it returns\n * the `GPUTextureFormat` to transcode into. It performs zero I/O and imports no\n * node-only or DOM API -- an AI user can call it in node to predict, offline,\n * which format a given caps combination will hit.\n *\n * Priority chains (requirements §range table + D-4 Mesa guard):\n * RGBA : ASTC-4x4 -> BC7 -> ETC2-rgba8 -> RGBA8\n * RG : BC5 -> EAC-rg11 -> RG8\n * R : BC4 -> EAC-r11 -> R8\n * HDR : BC6H -> rgba16float\n *\n * D-4 \"BC present => prefer BC\": when `bc` is available alongside `astc`/`etc2`,\n * every LDR arm selects the BC target first. Rationale: bc coexisting with\n * astc/etc2 means either Apple Silicon (dual hardware; BC7 is lossless-equal at\n * 8bpp) or a desktop driver software-decoding ETC2/ASTC (the Mesa/ANV trap to\n * avoid). Preferring BC is correct in both cases, so the rule needs no source\n * discrimination. Because `bc` is tested first in each arm, this fall-through is\n * inherent -- no extra branch.\n *\n * Fallback is a format, never an error: with no compression cap the LDR arms\n * return `rgba8unorm[-srgb]` and the HDR arm returns `rgba16float`. Degradation\n * is silent but observable (the returned format reflects reality). ASTC-HDR and\n * PVRTC are out of scope (OOS-5 / not exposed by WebGPU core).\n */\n\n/** The DFD-derived source encoding of the Basis payload (D-3 delivery encodings). */\nexport type TranscodeModel = 'etc1s' | 'uastc-ldr' | 'uastc-hdr';\n\n/** Which channels the source carries, deciding the LDR arm (data vs color). */\nexport type TranscodeChannels = 'rgba' | 'rg' | 'r';\n\n/** Source descriptor for target selection; all fields DFD-derived upstream. */\nexport interface TranscodeSource {\n readonly model: TranscodeModel;\n /** sRGB transfer function (from the DFD). Only varies the RGBA color arm. */\n readonly srgb: boolean;\n readonly channels: TranscodeChannels;\n}\n\n/**\n * Device compression capabilities (D-8 local structure -- codec must not depend\n * on the rhi package; the runtime side projects `RhiCaps` into this).\n */\nexport interface TranscodeCaps {\n readonly bc: boolean;\n readonly etc2: boolean;\n readonly astc: boolean;\n}\n\nfunction selectRgba(srgb: boolean, caps: TranscodeCaps): GPUTextureFormat {\n // D-4: BC wins whenever present (before ASTC), guarding the Mesa/ANV trap.\n if (caps.bc) return srgb ? 'bc7-rgba-unorm-srgb' : 'bc7-rgba-unorm';\n if (caps.astc) return srgb ? 'astc-4x4-unorm-srgb' : 'astc-4x4-unorm';\n if (caps.etc2) return srgb ? 'etc2-rgba8unorm-srgb' : 'etc2-rgba8unorm';\n return srgb ? 'rgba8unorm-srgb' : 'rgba8unorm';\n}\n\nfunction selectRg(caps: TranscodeCaps): GPUTextureFormat {\n // Data channels have no sRGB variant. ASTC is not in the RG chain.\n if (caps.bc) return 'bc5-rg-unorm';\n if (caps.etc2) return 'eac-rg11unorm';\n return 'rg8unorm';\n}\n\nfunction selectR(caps: TranscodeCaps): GPUTextureFormat {\n if (caps.bc) return 'bc4-r-unorm';\n if (caps.etc2) return 'eac-r11unorm';\n return 'r8unorm';\n}\n\nfunction selectHdr(caps: TranscodeCaps): GPUTextureFormat {\n // ASTC-HDR is OOS; only BC6H, else uncompressed half-float.\n if (caps.bc) return 'bc6h-rgb-ufloat';\n return 'rgba16float';\n}\n\n/**\n * Select the transcode target `GPUTextureFormat` for a Basis source under the\n * given device caps. Pure, browser+node dual-safe, never returns an error --\n * a missing cap degrades to an uncompressed format, not a failure.\n */\nexport function selectTranscodeTarget(\n source: TranscodeSource,\n caps: TranscodeCaps,\n): GPUTextureFormat {\n if (source.model === 'uastc-hdr') return selectHdr(caps);\n switch (source.channels) {\n case 'rgba':\n return selectRgba(source.srgb, caps);\n case 'rg':\n return selectRg(caps);\n case 'r':\n return selectR(caps);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeax/engine-codec",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -26,14 +26,38 @@ type TranscoderImporter = () => Promise<BasisTranscoderModule>;
26
26
  const TRANSCODER_GLUE = new URL('../pkg/basis_transcoder.mjs', import.meta.url);
27
27
  const TRANSCODER_WASM = new URL('../pkg/basis_transcoder.wasm', import.meta.url);
28
28
 
29
+ function traceBasisPhase(phase: string, detail?: Readonly<Record<string, unknown>>): void {
30
+ const sink = (
31
+ globalThis as typeof globalThis & {
32
+ __forgeaxAssetLoadTrace?: (event: {
33
+ readonly phase: string;
34
+ readonly at: number;
35
+ readonly detail?: Readonly<Record<string, unknown>>;
36
+ }) => void;
37
+ }
38
+ ).__forgeaxAssetLoadTrace;
39
+ if (sink === undefined) return;
40
+ try {
41
+ sink({ phase: `codec.${phase}`, at: Date.now(), ...(detail === undefined ? {} : { detail }) });
42
+ } catch {
43
+ // Diagnostics must never change codec behavior.
44
+ }
45
+ }
46
+
29
47
  const defaultImporter: TranscoderImporter = async () => {
48
+ traceBasisPhase('basis.glue.import.start', { url: TRANSCODER_GLUE.href });
30
49
  const factory = (
31
50
  (await import(/* @vite-ignore */ TRANSCODER_GLUE.href)) as {
32
51
  default: BasisModuleFactory<BasisTranscoderModule>;
33
52
  }
34
53
  ).default;
54
+ traceBasisPhase('basis.glue.import.complete');
55
+ traceBasisPhase('basis.wasm.factory.start', { url: TRANSCODER_WASM.href });
35
56
  const mod = await factory({ locateFile: () => TRANSCODER_WASM.href });
57
+ traceBasisPhase('basis.wasm.factory.complete');
58
+ traceBasisPhase('basis.initialize.start');
36
59
  mod.initializeBasis();
60
+ traceBasisPhase('basis.initialize.complete');
37
61
  return mod;
38
62
  };
39
63
 
@@ -56,6 +80,7 @@ let initCount = 0;
56
80
  export function initBasisTranscoder(): Promise<BasisTranscoderModule> {
57
81
  if (_initPromise !== null) return _initPromise;
58
82
  initCount++;
83
+ traceBasisPhase('basis.init.start');
59
84
  _initPromise = importer().catch((cause: unknown) => {
60
85
  _initPromise = null;
61
86
  throw new Error('codec-init-failed', { cause });
@@ -197,6 +222,7 @@ export async function transcodeKtx2(
197
222
  parsed: Ktx2Parsed,
198
223
  targetFormat: GPUTextureFormat,
199
224
  ): Promise<CodecResult<TranscodedTexture>> {
225
+ traceBasisPhase('ktx2.transcode.start', { targetFormat });
200
226
  let mod: BasisTranscoderModule;
201
227
  try {
202
228
  mod = await initBasisTranscoder();
@@ -214,6 +240,7 @@ export async function transcodeKtx2(
214
240
 
215
241
  const file = new mod.KTX2File(parsed.rawBytes);
216
242
  try {
243
+ traceBasisPhase('ktx2.file.start');
217
244
  if (!file.isValid()) {
218
245
  return codecError('transcode-failed', {
219
246
  sourceFormat: 'invalid-ktx2-file',
@@ -228,6 +255,7 @@ export async function transcodeKtx2(
228
255
  }
229
256
 
230
257
  const levels = file.getLevels();
258
+ traceBasisPhase('ktx2.file.ready', { levels });
231
259
  const mips: TranscodedMip[] = [];
232
260
  for (let level = 0; level < levels; level++) {
233
261
  const info = file.getImageLevelInfo(level, 0, 0);
@@ -240,6 +268,7 @@ export async function transcodeKtx2(
240
268
  targetFormat,
241
269
  });
242
270
  }
271
+ traceBasisPhase('ktx2.mip.complete', { level });
243
272
  mips.push({ level, width: info.origWidth, height: info.origHeight, data: dst });
244
273
  }
245
274