@missing-elements/h5p-offline-player 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +273 -0
  3. package/dist/VERSION +1 -0
  4. package/dist/frame-assets/MANIFEST.json +4 -0
  5. package/dist/frame-assets/fonts/h5p-core-30.woff2 +0 -0
  6. package/dist/frame-assets/fonts/h5p-hub-publish.woff +0 -0
  7. package/dist/frame-assets/fonts/h5p-hub-publish.woff2 +0 -0
  8. package/dist/frame-assets/fonts/h5p-theme.woff2 +0 -0
  9. package/dist/frame-assets/fonts/inter/Inter-ExtraBold.woff2 +0 -0
  10. package/dist/frame-assets/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
  11. package/dist/frame-assets/fonts/inter/LICENSE.txt +92 -0
  12. package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.woff2 +0 -0
  13. package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600italic.woff2 +0 -0
  14. package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-italic.woff2 +0 -0
  15. package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  16. package/dist/frame-assets/fonts/open-sans/OFL.txt +88 -0
  17. package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-600.woff2 +0 -0
  18. package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-600italic.woff2 +0 -0
  19. package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-700.woff2 +0 -0
  20. package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-700italic.woff2 +0 -0
  21. package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-italic.woff2 +0 -0
  22. package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-regular.woff2 +0 -0
  23. package/dist/frame-assets/frame.bundle.js +1 -0
  24. package/dist/frame-assets/images/h5p.svg +16 -0
  25. package/dist/frame-assets/images/throbber.gif +0 -0
  26. package/dist/frame-assets/main.bundle.js +2 -0
  27. package/dist/frame-assets/styles/h5p-fonts.css +103 -0
  28. package/dist/frame-assets/styles/h5p.css +1643 -0
  29. package/dist/h5p-player.js +1780 -0
  30. package/dist/h5p-sw-mount.js +88 -0
  31. package/dist/h5p-sw.js +88 -0
  32. package/package.json +81 -0
  33. package/types/h5p-offline-player.d.ts +154 -0
  34. package/types/jobs/chunk-writer.d.ts +16 -0
  35. package/types/jobs/jobs-worker.d.ts +1 -0
  36. package/types/node/tsconfig.node.tsbuildinfo +1 -0
  37. package/types/node/vite.config.d.ts +6 -0
  38. package/types/node/vite.demo.config.d.ts +2 -0
  39. package/types/node/vite.plugins.d.ts +19 -0
  40. package/types/shared/chunk-store.d.ts +104 -0
  41. package/types/shared/constants.d.ts +67 -0
  42. package/types/shared/entry-names.d.ts +29 -0
  43. package/types/shared/eviction.d.ts +16 -0
  44. package/types/shared/forward-index.d.ts +85 -0
  45. package/types/shared/idb.d.ts +9 -0
  46. package/types/shared/locks.d.ts +14 -0
  47. package/types/shared/mime.d.ts +7 -0
  48. package/types/shared/mp4.d.ts +41 -0
  49. package/types/shared/pkg-id.d.ts +21 -0
  50. package/types/shared/protocol.d.ts +232 -0
  51. package/types/shared/range.d.ts +16 -0
  52. package/types/shared/source.d.ts +57 -0
  53. package/types/shared/stream-utils.d.ts +7 -0
  54. package/types/sw/frame-document.d.ts +19 -0
  55. package/types/sw/mount.d.ts +17 -0
  56. package/types/sw/package-reader.d.ts +242 -0
  57. package/types/sw/routes.d.ts +26 -0
  58. package/types/sw/stream-utils.d.ts +9 -0
  59. package/types/sw/sw-entry.d.ts +1 -0
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@missing-elements/h5p-offline-player",
3
+ "version": "0.1.0",
4
+ "description": "Browser-only H5P player web component. Plays arbitrary .h5p archives from a URL or a local file, with no server-side extraction.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/missing-elements/h5p-offline-player.git"
9
+ },
10
+ "homepage": "https://github.com/missing-elements/h5p-offline-player#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/missing-elements/h5p-offline-player/issues"
13
+ },
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "type": "module",
18
+ "main": "./dist/h5p-player.js",
19
+ "module": "./dist/h5p-player.js",
20
+ "types": "./types/h5p-offline-player.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./types/h5p-offline-player.d.ts",
24
+ "default": "./dist/h5p-player.js"
25
+ },
26
+ "./sw": {
27
+ "types": "./types/sw/mount.d.ts",
28
+ "default": "./dist/h5p-sw-mount.js"
29
+ },
30
+ "./dist/*": "./dist/*"
31
+ },
32
+ "files": [
33
+ "dist",
34
+ "types"
35
+ ],
36
+ "keywords": [
37
+ "h5p",
38
+ "h5p-player",
39
+ "web-component",
40
+ "custom-element",
41
+ "service-worker",
42
+ "offline",
43
+ "zip",
44
+ "elearning"
45
+ ],
46
+ "scripts": {
47
+ "sync:assets": "node scripts/sync-h5p-assets.mjs",
48
+ "fixtures": "node scripts/build-fixtures.mjs",
49
+ "normalize": "node scripts/normalize-h5p.mjs",
50
+ "demo:content": "node scripts/build-demo-content.mjs",
51
+ "demo:og": "node scripts/build-og-image.mjs",
52
+ "prepare:dev": "npm run sync:assets && npm run fixtures",
53
+ "dev": "npm run prepare:dev && vite",
54
+ "build": "npm run sync:assets && tsc -b && vite build && node scripts/build-workers.mjs && node scripts/copy-frame-assets.mjs",
55
+ "build:demo": "npm run sync:assets && node scripts/build-demo.mjs",
56
+ "preview:demo": "vite preview --config vite.demo.config.ts",
57
+ "test": "npm run prepare:dev && vitest run",
58
+ "test:unit": "vitest run --project unit",
59
+ "test:browser": "npm run prepare:dev && vitest run --project browser",
60
+ "test:watch": "npm run prepare:dev && vitest",
61
+ "typecheck": "tsc -b --force && tsc -p tsconfig.test.json",
62
+ "prepublishOnly": "npm run typecheck && npm run test:unit && npm run build"
63
+ },
64
+ "dependencies": {
65
+ "@zip.js/zip.js": "^2.17.0",
66
+ "h5p-standalone": "^3.8.2"
67
+ },
68
+ "devDependencies": {
69
+ "@types/node": "^22.13.0",
70
+ "@vitest/browser": "^5.0.1",
71
+ "@vitest/browser-playwright": "^5.0.1",
72
+ "esbuild": "^0.25.0",
73
+ "playwright": "^1.50.0",
74
+ "typescript": "^5.7.3",
75
+ "vite": "^6.0.11",
76
+ "vitest": "^5.0.1"
77
+ },
78
+ "engines": {
79
+ "node": ">=20"
80
+ }
81
+ }
@@ -0,0 +1,154 @@
1
+ import { type ErrorCode, type MissingLibraries } from './shared/protocol';
2
+ export type PlayerState = 'idle' | 'probing' | 'downloading' | 'indexing' | 'ready' | 'error';
3
+ export interface PlayerErrorDetail {
4
+ code: ErrorCode;
5
+ message: string;
6
+ /** Present when a package declared libraries it does not carry. See the `libraries` attribute. */
7
+ missingLibraries?: MissingLibraries;
8
+ }
9
+ export interface PlayerProgressDetail {
10
+ /** 0–1, or `null` while the total is unknown (a host that exposes no length). */
11
+ fraction: number | null;
12
+ loaded: number;
13
+ total: number | null;
14
+ phase: 'download' | 'libraries' | 'extract';
15
+ entry?: string;
16
+ }
17
+ export declare class H5PPlayerElement extends HTMLElement {
18
+ static get observedAttributes(): string[];
19
+ private iframe;
20
+ private jobs;
21
+ private jobsUrl;
22
+ private routes;
23
+ private registration;
24
+ private currentFile;
25
+ private currentSource;
26
+ private load;
27
+ private connected;
28
+ private internalState;
29
+ private internalPkgId;
30
+ /** Large deflated entries, in archive order, waiting to be pulled before the content asks. */
31
+ private prefetchQueue;
32
+ private prefetching;
33
+ constructor();
34
+ get src(): string | null;
35
+ set src(value: string | null);
36
+ /**
37
+ * Whether to pull large deflated media before the content asks for it. `none` (the default)
38
+ * fetches an entry when the runtime requests it; `auto` starts once the content is up.
39
+ *
40
+ * Off by default because `auto` spends a learner's bandwidth on a video they may never reach —
41
+ * the host's call, not the element's. It is worth making for a package whose media cannot be
42
+ * streamed: see `PrefetchEntry`.
43
+ */
44
+ get preload(): 'none' | 'auto';
45
+ set preload(value: 'none' | 'auto');
46
+ /** A `File` from a picker. Setting it loads, and takes precedence over `src`. */
47
+ get file(): File | null;
48
+ set file(value: File | null);
49
+ get state(): PlayerState;
50
+ get pkgId(): string | null;
51
+ /** The resolved Service Worker scope the routes live under. Read-only, `null` until registered. */
52
+ get scope(): string | null;
53
+ connectedCallback(): void;
54
+ disconnectedCallback(): void;
55
+ attributeChangedCallback(name: string, previous: string | null, next: string | null): void;
56
+ private abortLoad;
57
+ /**
58
+ * Holds a shared lock on the package for as long as it is loaded here. Eviction — in this tab
59
+ * or any other — never picks a package with a lock under its prefix, so a learner mid-video is
60
+ * safe from a quota squeeze caused by a package loading somewhere else. Shared, so two tabs on
61
+ * the same package both hold it. Released when the load is aborted, which a new `src`,
62
+ * `clear()` and disconnection all do.
63
+ */
64
+ private holdPackage;
65
+ /** Empties the player without an error: what removing `src`, or setting `file` to null, means. */
66
+ private clear;
67
+ private startLoad;
68
+ /**
69
+ * Downloads a package from a host that ignores `Range`, and boots as soon as the worker's
70
+ * forward index says the runtime has what it needs — for a libraries-first export, long before
71
+ * the media has finished. Each progress report is a chance to ask; a "not yet" is not an error.
72
+ * The final index after the download is the real one, from the central directory: it swaps the
73
+ * worker onto it, and is where a package missing libraries is found out.
74
+ */
75
+ private downloadAndIndex;
76
+ /**
77
+ * Indexes the package, and if it turns out to declare libraries it does not carry, fetches them
78
+ * from the configured source and indexes again.
79
+ *
80
+ * Without a `libraries` attribute this is one call that either works or reports exactly what is
81
+ * missing. Reaching out to a third party is never something the element decides on its own.
82
+ */
83
+ private index;
84
+ /**
85
+ * Registers a second package as the source of the libraries this one is missing.
86
+ *
87
+ * Every failure along the way — an unreachable URL, a bundle that is not an archive, one that
88
+ * turns out not to have them either — is reported as one thing: these libraries are missing and
89
+ * this is where the attempt to supply them stopped.
90
+ */
91
+ private supplyLibraries;
92
+ /**
93
+ * Origins the host vouches for, added to the frame's policy. For content that reaches somewhere
94
+ * the built-in list cannot know about — a tenant's own Panopto host, an in-house CDN. The
95
+ * worker drops anything that is not plainly a host.
96
+ */
97
+ private allowOrigins;
98
+ private librarySource;
99
+ private resolveSource;
100
+ private recordFor;
101
+ private frameAssets;
102
+ /** Runs the pre-play download for a host that does not honour `Range`, reporting progress. */
103
+ private runDownload;
104
+ /**
105
+ * Finds the routes, registering our own worker unless a host has already mounted the handlers
106
+ * into theirs. Registration uses an explicit `h5p/` sub-scope, so a host worker living in the
107
+ * same directory — or at `/`, for a root-placed `h5p-sw.js` — is never displaced.
108
+ */
109
+ private ensureWorker;
110
+ /** A host that enforces one worker mounts our handlers in theirs; those routes answer `_ping`. */
111
+ private findMountedRoutes;
112
+ /**
113
+ * Asks the worker its version over the control channel rather than over the `_ping` route. The
114
+ * route only answers for a client the worker controls, and the host page deliberately is not
115
+ * one — our scope is a sub-directory it does not sit under. `postMessage` to the registration's
116
+ * own worker has no such requirement.
117
+ */
118
+ private warnOnVersionMismatch;
119
+ /** Sends a control message to the worker and waits for its reply on a private port. */
120
+ private send;
121
+ private ensureJobs;
122
+ /**
123
+ * Starts the next queued entry, one at a time. Serial rather than parallel: these are whole
124
+ * videos, and running two halves the rate of the one the learner reaches first. A demand
125
+ * request from the runtime is not queued behind this — it is posted straight through, and the
126
+ * Jobs worker's in-flight map collapses the two if they name the same entry.
127
+ */
128
+ private advancePrefetch;
129
+ private postToJobs;
130
+ private onWindowMessage;
131
+ /** The worker can also reach the element directly when the page itself is controlled. */
132
+ private onServiceWorkerMessage;
133
+ private handleWorkerRequest;
134
+ /**
135
+ * The embedder half of H5P's own iframe resizing, the same exchange `h5p-resizer.js` implements
136
+ * for a site embedding h5p.org content.
137
+ *
138
+ * H5P drives it from the `resize` events content types raise when they actually change — a
139
+ * dialog opening, an interaction loading, an image arriving. Watching the frame's DOM from the
140
+ * outside would both miss those and fire on changes that are not resizes.
141
+ */
142
+ private onResizerMessage;
143
+ /** Tells the content to lay out again when the window changes, as the reference embedder does. */
144
+ private onWindowResize;
145
+ private setState;
146
+ private emitProgress;
147
+ private fail;
148
+ }
149
+ declare global {
150
+ interface HTMLElementTagNameMap {
151
+ 'h5p-player': H5PPlayerElement;
152
+ }
153
+ }
154
+ export default H5PPlayerElement;
@@ -0,0 +1,16 @@
1
+ import type { ChunkStore } from '../shared/chunk-store';
2
+ export interface ChunkWriterOptions {
3
+ store: ChunkStore;
4
+ entry: string;
5
+ /** Final size when it is known up front (from the zip index or `Content-Length`). */
6
+ totalSize: number | null;
7
+ /** Bytes already in the store; a resumed download starts here. */
8
+ startOffset?: number;
9
+ onProgress?: (written: number) => void;
10
+ }
11
+ /**
12
+ * A `WritableStream` that lands bytes in the chunk store and publishes a watermark as it goes.
13
+ * The watermark is always a prefix — chunks are written in order — so a reader can serve
14
+ * everything below it without checking which chunks exist.
15
+ */
16
+ export declare function createChunkWriter(options: ChunkWriterOptions): WritableStream<Uint8Array>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/@types/node/web-globals/events.d.ts","../../node_modules/undici-types/header.d.ts","../../node_modules/undici-types/readable.d.ts","../../node_modules/undici-types/file.d.ts","../../node_modules/undici-types/fetch.d.ts","../../node_modules/undici-types/formdata.d.ts","../../node_modules/undici-types/connector.d.ts","../../node_modules/undici-types/client.d.ts","../../node_modules/undici-types/errors.d.ts","../../node_modules/undici-types/dispatcher.d.ts","../../node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/undici-types/global-origin.d.ts","../../node_modules/undici-types/pool-stats.d.ts","../../node_modules/undici-types/pool.d.ts","../../node_modules/undici-types/handlers.d.ts","../../node_modules/undici-types/balanced-pool.d.ts","../../node_modules/undici-types/agent.d.ts","../../node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/undici-types/mock-agent.d.ts","../../node_modules/undici-types/mock-client.d.ts","../../node_modules/undici-types/mock-pool.d.ts","../../node_modules/undici-types/mock-errors.d.ts","../../node_modules/undici-types/proxy-agent.d.ts","../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/undici-types/retry-handler.d.ts","../../node_modules/undici-types/retry-agent.d.ts","../../node_modules/undici-types/api.d.ts","../../node_modules/undici-types/interceptors.d.ts","../../node_modules/undici-types/util.d.ts","../../node_modules/undici-types/cookies.d.ts","../../node_modules/undici-types/patch.d.ts","../../node_modules/undici-types/websocket.d.ts","../../node_modules/undici-types/eventsource.d.ts","../../node_modules/undici-types/filereader.d.ts","../../node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/undici-types/content-type.d.ts","../../node_modules/undici-types/cache.d.ts","../../node_modules/undici-types/index.d.ts","../../node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/@types/node/web-globals/streams.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/inspector.generated.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/sea.d.ts","../../node_modules/@types/node/sqlite.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/rollup/dist/rollup.d.ts","../../node_modules/rollup/dist/parseast.d.ts","../../node_modules/vite/types/hmrpayload.d.ts","../../node_modules/vite/types/customevent.d.ts","../../node_modules/vite/types/hot.d.ts","../../node_modules/vite/dist/node/modulerunnertransport.d-dj_me5sf.d.ts","../../node_modules/vite/dist/node/module-runner.d.ts","../../node_modules/esbuild/lib/main.d.ts","../../node_modules/source-map-js/source-map.d.ts","../../node_modules/postcss/lib/previous-map.d.ts","../../node_modules/postcss/lib/input.d.ts","../../node_modules/postcss/lib/css-syntax-error.d.ts","../../node_modules/postcss/lib/declaration.d.ts","../../node_modules/postcss/lib/root.d.ts","../../node_modules/postcss/lib/warning.d.ts","../../node_modules/postcss/lib/lazy-result.d.ts","../../node_modules/postcss/lib/no-work-result.d.ts","../../node_modules/postcss/lib/processor.d.ts","../../node_modules/postcss/lib/result.d.ts","../../node_modules/postcss/lib/document.d.ts","../../node_modules/postcss/lib/rule.d.ts","../../node_modules/postcss/lib/node.d.ts","../../node_modules/postcss/lib/comment.d.ts","../../node_modules/postcss/lib/container.d.ts","../../node_modules/postcss/lib/at-rule.d.ts","../../node_modules/postcss/lib/list.d.ts","../../node_modules/postcss/lib/postcss.d.ts","../../node_modules/postcss/lib/postcss.d.mts","../../node_modules/vite/types/internal/lightningcssoptions.d.ts","../../node_modules/vite/types/internal/csspreprocessoroptions.d.ts","../../node_modules/vite/types/importglob.d.ts","../../node_modules/vite/types/metadata.d.ts","../../node_modules/vite/dist/node/index.d.ts","../../node_modules/vitest/optional-runtime-types.d.ts","../../node_modules/tinybench/dist/index.d.ts","../../node_modules/vitest/dist/chunks/config.d.cu_b-wjj.d.ts","../../node_modules/vitest/dist/chunks/rpc.d.da9utv4e.d.ts","../../node_modules/vitest/dist/chunks/environment.d.c6xyahwa.d.ts","../../node_modules/vitest/dist/chunks/worker.d.mlmnzoje.d.ts","../../node_modules/vitest/dist/chunks/browser.d.g5thl309.d.ts","../../node_modules/@types/deep-eql/index.d.ts","../../node_modules/assertion-error/index.d.ts","../../node_modules/@types/chai/index.d.ts","../../node_modules/vitest/optional-types.d.ts","../../node_modules/@vitest/mocker/dist/registry.d-xlx_foyf.d.ts","../../node_modules/@vitest/mocker/dist/index.d-d4wtotqw.d.ts","../../node_modules/@vitest/mocker/dist/index.d.ts","../../node_modules/vitest/dist/chunks/source-map.d.yqwncp4e.d.ts","../../node_modules/vitest/dist/chunks/task-utils.d.bzm4gsqd.d.ts","../../node_modules/vitest/dist/chunks/evaluatedmodules.d.bxj5omdx.d.ts","../../node_modules/expect-type/dist/utils.d.ts","../../node_modules/expect-type/dist/overloads.d.ts","../../node_modules/expect-type/dist/branding.d.ts","../../node_modules/expect-type/dist/messages.d.ts","../../node_modules/expect-type/dist/index.d.ts","../../node_modules/vitest/dist/index.d.ts","../../node_modules/vitest/dist/runtime.d.ts","../../node_modules/vitest/dist/browser.d.ts","../../node_modules/@vitest/browser/aria-role.d.ts","../../node_modules/@vitest/browser/jest-dom.d.ts","../../node_modules/@vitest/browser/matchers.d.ts","../../node_modules/@vitest/browser/dist/vendor-types.d.ts","../../node_modules/@vitest/browser/context.d.ts","../../node_modules/@vitest/browser-playwright/context.d.ts","../../node_modules/vitest/browser/context.d.ts","../../node_modules/vitest/dist/chunks/plugin.d.cn87hsxv.d.ts","../../node_modules/obug/dist/core.d.ts","../../node_modules/obug/dist/browser.d.ts","../../node_modules/vitest/dist/node.d.ts","../../node_modules/vitest/dist/config.d.ts","../../node_modules/vitest/config.d.ts","../../node_modules/@vitest/browser/dist/index.d.ts","../../node_modules/playwright-core/types/protocol.d.ts","../../node_modules/playwright-core/types/structs.d.ts","../../node_modules/playwright-core/types/types.d.ts","../../node_modules/playwright-core/index.d.ts","../../node_modules/playwright/index.d.ts","../../node_modules/@vitest/browser-playwright/dist/index.d.ts","../../vite.plugins.ts","../../vite.config.ts","../../vite.demo.config.ts"],"fileIdsList":[[63,112,129,130,204,205],[63,112,129,130],[63,109,110,112,129,130],[63,111,112,129,130],[112,129,130],[63,112,117,129,130,147],[63,112,113,118,123,129,130,132,144,155],[63,112,113,114,123,129,130,132],[58,59,60,63,112,129,130],[63,112,115,129,130,156],[63,112,116,117,124,129,130,133],[63,112,117,129,130,144,152],[63,112,118,120,123,129,130,132],[63,111,112,119,129,130],[63,112,120,121,129,130],[63,112,122,123,129,130],[63,111,112,123,129,130],[63,112,123,124,125,129,130,144,155],[63,112,123,124,125,129,130,139,144,147],[63,104,112,120,123,126,129,130,132,144,155],[63,112,123,124,126,127,129,130,132,144,152,155],[63,112,126,128,129,130,144,152,155],[61,62,63,64,65,66,67,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],[63,112,123,129,130],[63,112,129,130,131,155],[63,112,120,123,129,130,132,144],[63,112,129,130,133],[63,112,129,130,134],[63,111,112,129,130,135],[63,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],[63,112,129,130,137],[63,112,129,130,138],[63,112,123,129,130,139,140],[63,112,129,130,139,141,156,158],[63,112,124,129,130],[63,112,123,129,130,144,145,147],[63,112,129,130,146,147],[63,112,129,130,144,145],[63,112,129,130,147],[63,112,129,130,148],[63,109,112,129,130,144,149,155],[63,112,123,129,130,150,151],[63,112,129,130,150,151],[63,112,117,129,130,132,144,152],[63,112,129,130,153],[63,112,129,130,132,154],[63,112,126,129,130,138,155],[63,112,117,129,130,156],[63,112,129,130,144,157],[63,112,129,130,131,158],[63,112,129,130,159],[63,104,112,129,130],[63,104,112,123,125,129,130,135,144,147,155,157,158,160],[63,112,129,130,144,161],[63,112,129,130,226],[63,112,129,130,228,232,235,240,241],[63,112,129,130,212,219,221,222,224,225],[63,112,129,130,226,232,235,241],[63,112,129,130,222,226],[63,112,129,130,212,219,223,224,226],[63,112,129,130,208],[63,112,129,130,208,209],[63,112,129,130,214,215],[63,112,129,130,214,215,216,217],[63,112,129,130,214,216],[63,112,129,130,214],[63,112,129,130,230],[63,112,129,130,156],[63,112,129,130,238],[63,112,113,124,129,130,144,236,237],[63,112,129,130,239],[63,112,129,130,187],[63,112,129,130,185,187],[63,112,129,130,176,184,185,186,188,190],[63,112,129,130,174],[63,112,129,130,177,182,187,190],[63,112,129,130,173,190],[63,112,129,130,177,178,181,182,183,190],[63,112,129,130,177,178,179,181,182,190],[63,112,129,130,174,175,176,177,178,182,183,184,186,187,188,190],[63,112,129,130,190],[63,112,129,130,172,174,175,176,177,178,179,181,182,183,184,185,186,187,188,189],[63,112,129,130,172,190],[63,112,129,130,177,179,180,182,183,190],[63,112,129,130,181,190],[63,112,129,130,182,183,187,190],[63,112,129,130,175,185],[63,112,129,130,164,195,196],[63,112,129,130,163,164],[63,76,80,112,129,130,155],[63,76,112,129,130,144,155],[63,71,112,129,130],[63,73,76,112,129,130,152,155],[63,112,129,130,132,152],[63,112,129,130,162],[63,71,112,129,130,162],[63,73,76,112,129,130,132,155],[63,68,69,72,75,112,123,129,130,144,155],[63,76,83,112,129,130],[63,68,74,112,129,130],[63,76,97,98,112,129,130],[63,72,76,112,129,130,147,155,162],[63,97,112,129,130,162],[63,70,71,112,129,130,162],[63,76,112,129,130],[63,70,71,72,73,74,75,76,77,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,112,129,130],[63,76,91,112,129,130],[63,76,83,84,112,129,130],[63,74,76,84,85,112,129,130],[63,75,112,129,130],[63,68,71,76,112,129,130],[63,76,80,84,85,112,129,130],[63,80,112,129,130],[63,74,76,79,112,129,130,155],[63,68,73,76,83,112,129,130],[63,112,129,130,144],[63,71,76,97,112,129,130,160,162],[63,112,123,124,126,127,128,129,130,132,144,152,155,161,162,164,165,166,167,169,170,171,191,192,193,194,195,196],[63,112,129,130,166,167,168,169],[63,112,129,130,166],[63,112,129,130,167],[63,112,129,130,164,196],[63,112,129,130,221,227],[63,112,129,130,233],[63,112,129,130,197,198,199,211,212,219,220,224],[63,112,129,130,199,200,202],[63,112,129,130,197,198],[63,112,129,130,199],[63,112,129,130,170],[63,112,115,124,125,129,130,134,144,196,199,200,202,203,206,207,210,211,228,233,241],[63,112,129,130,170,199],[63,112,129,130,199,219,224],[63,112,129,130,170,199,200,201],[63,112,115,124,125,129,130,134,144,170,196,197,198,199,200,201,202,203,206,207,210,211,228,229,232,233,235,241],[63,112,129,130,170,197,198,199,200,201,202,203,206,210,212,213,218],[63,112,115,123,124,125,126,129,130,134,144,170,196,197,198,199,201,202,203,206,207,210,211,212,219,224,228,229,231,233,241],[63,112,129,130,197,198,199,201],[63,112,129,130,134,196,233,234,241,242],[63,112,124,129,130,134,196,233,242],[63,112,125,126,129,130,134,171,196,233]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"913be43dad2a40e500104700aa26cfb5c51a976114bedf19624de43fdae7474f","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"208a6a0bfb227bdf8fb964799d0a206c75cf03ccd72e63bf5495c9331354c6d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"21944c138a48dc23382cb6558b1d4498908faad2104ba7ff390ba8b27c06f3c0","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"52dcc257df5119fb66d864625112ce5033ac51a4c2afe376a0b299d2f7f76e4a","impliedFormat":1},{"version":"e5bab5f871ef708d52d47b3e5d0aa72a08ee7a152f33931d9a60809711a2a9a3","impliedFormat":1},{"version":"e16dc2a81595736024a206c7d5c8a39bfe2e6039208ef29981d0d95434ba8fcf","impliedFormat":1},{"version":"38cb107048cd8ba54a70014ef9a30cf57bee0d9f10a0ca4cefa974056e1ee460","impliedFormat":1},{"version":"19ee8416e6473ed6c7adb868fa796b5653cf0fa2a337658e677eaa0d134388c3","impliedFormat":1},{"version":"1328ab4e442614b28cdb3d4b414cf68325c0da0dca07287a338d0654b7a00261","impliedFormat":1},{"version":"a039dc21f045919f3cbee2ec13812cc6cc3eebc99dae4be00973230f468d19a6","impliedFormat":1},{"version":"3fbe57af01460e49dcd29df55d6931e1672bc6f1be0fb073d11410bc16f9037d","impliedFormat":1},{"version":"f760be449e8562ec5c09bb5187e8e1eabf3c113c0c58cddda53ef8c69f3e2131","impliedFormat":1},{"version":"44325ed13294fce6ab825b82947bbeed2611db7dad9d9135260192f375e5a189","impliedFormat":1},{"version":"e392e8fb5b514eafc585601c1d781485aa6dd6a320e75daf1064a4c6918a1b45","impliedFormat":1},{"version":"46e4a36e8ddbdfb4e7330e11c81c970dc8b218611df9183d39c41c5f8c653b55","impliedFormat":1},{"version":"3cc8a3d123b6b232d48d34b51b785f9da8d193f5b5817fa521fcd2f3b9315c55","impliedFormat":1},{"version":"6332f565867cf4a740a70e30f31cefba37ef7cebcf74f22eab8d744fde6d193e","impliedFormat":1},{"version":"9a195d8476f48523446ece812e5450b5b1ec8c3b6abf99efb8ee2479524f6f56","impliedFormat":1},{"version":"17f2922d41ddd032830a91371c948cd9ce903b35c95adca72271a54584f19b0b","impliedFormat":1},{"version":"3eed76ede2a1a14d7c9bb0a642041282dcc264811139d3dd275c9fe14efc9840","impliedFormat":1},{"version":"354a7f8e1287d9d6b7561bc97fdd8cbc2f7c1dd79e4cb37b942e8a5cfaff1085","impliedFormat":1},{"version":"8d369483f0c2b9ee388129cfdb6a43bc8112b377e86a41884bd06e19ce04f4c1","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"d9030fc0c412a31e7e13d189b9ad032b5177c20217add0f24fd3fff0cf272882","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"883ab61941ae697bd5724f02abc0a4044dc5427e7fb002c95867204918c1a68c","impliedFormat":99},{"version":"2493d114a1f01f02d69b4b44265405dfd5bbf135e0f467838808c4137c71ce54","impliedFormat":99},{"version":"fc620fc5a05d1d8499e790626f83b401604634dfd9c4b11042099a63883df8fb","impliedFormat":99},{"version":"123b46e873f6ae5902094478c2c58b725b3d92e1d36b53daf85b7732d032dfa8","impliedFormat":99},{"version":"11f54bcce4d6e4271122c6b06329b37f6d297141ad6e918b5181e17572158a10","impliedFormat":99},{"version":"dd8cb59c27a49fdc4b86eb755ddaaab5de0f30a627767f506fb2607ca4b2ec22","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"8d4ea2431523a42682a9f2efb2ae662aa42a39983c9d40a19257b2445f50450e","impliedFormat":99},{"version":"29738162d88967e51557276cba80552cb8d2a4c823873b7f1531244860f0d178","impliedFormat":99},{"version":"fc07122b30042636bbf689305c75a764d6e3c2eeb75cd1033c96a6a7dc9e6e3f","impliedFormat":99},{"version":"df5741ada9274db8915029054abcb751821c63433a6707bc7ce43fe540e71395","impliedFormat":99},{"version":"9500d6fd10c59daeab4a18b1d9aeaf13d790bd4a92a5f864d5f323dba395d4cc","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"dd51e53752b310bd20c9b1a87bbf12b1fe2be7fe40f505b43199496481096275","impliedFormat":1},{"version":"a87be4662442b3feeffc331ecafe6b36cafd08727e2d7f2425a5099577e7fd18","impliedFormat":1},{"version":"cd4cd9220a1ba793bc935e76d8e5481c110a90d9868ae7866a182ee71cdb6abb","impliedFormat":1},{"version":"0a7fb8619b10bc05fd933ca9ac1c8b2ab2220be7a57b57565c3ac158595494ef","impliedFormat":1},{"version":"c4a5f91feb9c5a6b2a91089d959c38391b79a961db3b9cc73b8877d57ad7dcdc","impliedFormat":1},{"version":"3589cb90a45acfb8c2336b34a9e340f036a6aecfdb71742047d37748dfa52816","impliedFormat":99},{"version":"a1202e4252e4b7440d9967ba15ecdb7efa55a1c3fe17db859a87c75919d0c138","impliedFormat":99},{"version":"52883e45e8a1c581524010872cbc2ec034e13f786a3d71e31fa63b69e0d2515b","impliedFormat":99},{"version":"7cd92bc6808967f175063fce65f8d1d60a07d752b79ed20aa2eba9a2b8ed0820","impliedFormat":99},{"version":"283fa25e0ce1be2705fa3158095f5abbef30a9f76077c52c2fc021f359b57e8b","impliedFormat":99},{"version":"0bba7c04b0b2807e1aeb9fbf9f91f4130e48582f9d89ea0da81981aa88391e5b","impliedFormat":99},{"version":"1f275d8ff7220c7b841a6b087f021832ed41a626741e91c9aa7c553d061cc0fe","impliedFormat":99},{"version":"6f4a24ba6cd57a49bf28fa2a017f706514b0f3d571e34303e8fa2b5ba3c7f147","impliedFormat":99},{"version":"2b1795d67cf9aa20167c72d795d4db6badea9cea646d9181869b5ca08c778479","impliedFormat":99},{"version":"b9ce547961f4a0f9b2ecf456aa4b0cf9ae8eaba8fc50554da3310929c620d36d","impliedFormat":99},{"version":"a93d72194894d0eb54e7c43bd41167195dcf6a17800ce18fcee1716e1905dda5","impliedFormat":99},{"version":"06f1305bd6733a179a021118382fe9371cfad44bb0a1b6b59747a541fa3174ec","impliedFormat":99},{"version":"bab0f4721909fb20befa777937dfc6896ac8a0b0a22e60785f767a04a18ad2a7","impliedFormat":99},{"version":"09b5ab06e7b242132974144474b24a0fddde568e0fb20d69215d156d78ac0d7f","impliedFormat":99},{"version":"dd849bf46257e8c9839babf31d89a55895a9e7886b684cd3fb48372641621e3b","impliedFormat":99},{"version":"aa348c4fb2f8ac77df855f07fb66281c9f6e71746fdff3b13c7932aa7642b788","impliedFormat":99},{"version":"b02462069af953c49995e20e1ada37148d2d602cbd84707ba6092c76c4002eaa","impliedFormat":99},{"version":"0410ed82a9ac63269dc1471ed249b280e2d461249a3a331e71cdb54cdf10db33","impliedFormat":1},{"version":"c9b9179b7291c8562eb0fb781219ddbdcf36149ebd7bd355e5b4a553d6b60b81","impliedFormat":1},{"version":"2806f6d7810fba0306066d500cd716a6d1128d90af2c3cf71723e3ea0a8904c4","impliedFormat":1},{"version":"7a8ec10b0834eb7183e4bfcd929838ac77583828e343211bb73676d1e47f6f01","impliedFormat":1},{"version":"b07f64ff6ec710998a62b07377fbda0ab4c313ba1f0055bfe9faa22cffedd47c","impliedFormat":1},{"version":"72ef861333c7870a29fc0e248129c4afc0741c0716a74c3da409d05e41ff1322","impliedFormat":99},{"version":"6f2d5608719b23dfbe15113ee3d33a9b2b5bc92f4354da08c4bd8353430e170b","signature":"3b31cb648894ce7907e966f48a65d3452fe8a3d050a3b24fbeb99bee6d9cd11a"},{"version":"8dd95bf74c75f7ddd0275d3e8fd726ce8dec61529a3b4128984833c2bb61e069","signature":"b0870d16d81c8dc192474d2a093152325da8b04dce2e14b3d93bc52588283bab"},{"version":"49ec610f0000115e0978e88fd14b3b7416ef47ea0bfa67d21a0522a34bc8a41c","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"}],"root":[[242,244]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"emitDeclarationOnly":true,"module":99,"outDir":"./","skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[206,1],[204,2],[163,2],[109,3],[110,3],[111,4],[63,5],[112,6],[113,7],[114,8],[58,2],[61,9],[59,2],[60,2],[115,10],[116,11],[117,12],[118,13],[119,14],[120,15],[121,15],[122,16],[123,17],[124,18],[125,19],[64,2],[62,2],[126,20],[127,21],[128,22],[162,23],[129,24],[130,2],[131,25],[132,26],[133,27],[134,28],[135,29],[136,30],[137,31],[138,32],[139,33],[140,33],[141,34],[142,2],[143,35],[144,36],[146,37],[145,38],[147,39],[148,40],[149,41],[150,42],[151,43],[152,44],[153,45],[154,46],[155,47],[156,48],[157,49],[158,50],[159,51],[65,2],[66,2],[67,2],[105,52],[106,2],[107,2],[108,39],[160,53],[161,54],[227,55],[241,56],[222,2],[226,57],[235,58],[225,2],[223,59],[224,60],[209,61],[210,62],[208,2],[205,2],[171,2],[216,63],[218,64],[217,65],[215,66],[214,2],[231,67],[230,68],[239,69],[236,2],[237,69],[238,70],[240,71],[188,72],[186,73],[187,74],[175,75],[176,73],[183,76],[174,77],[179,78],[189,2],[180,79],[185,80],[191,81],[190,82],[173,83],[181,84],[182,85],[177,86],[184,72],[178,87],[165,88],[164,89],[172,2],[198,2],[56,2],[57,2],[11,2],[10,2],[2,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[3,2],[20,2],[21,2],[4,2],[22,2],[26,2],[23,2],[24,2],[25,2],[27,2],[28,2],[29,2],[5,2],[30,2],[31,2],[32,2],[33,2],[6,2],[37,2],[34,2],[35,2],[36,2],[38,2],[7,2],[39,2],[44,2],[45,2],[40,2],[41,2],[42,2],[43,2],[8,2],[49,2],[46,2],[47,2],[48,2],[50,2],[9,2],[51,2],[52,2],[53,2],[55,2],[54,2],[1,2],[83,90],[93,91],[82,90],[103,92],[74,93],[73,94],[102,95],[96,96],[101,97],[76,98],[90,99],[75,100],[99,101],[71,102],[70,95],[100,103],[72,104],[77,105],[78,2],[81,105],[68,2],[104,106],[94,107],[85,108],[86,109],[88,110],[84,111],[87,112],[97,95],[79,113],[80,114],[89,115],[69,116],[92,107],[91,105],[95,2],[98,117],[196,118],[170,119],[169,120],[167,120],[166,2],[168,121],[194,2],[193,2],[192,2],[195,122],[228,123],[234,124],[221,125],[203,126],[199,127],[201,128],[213,129],[229,130],[200,131],[211,128],[212,132],[202,133],[233,134],[219,135],[232,136],[220,137],[197,2],[207,2],[243,138],[244,139],[242,140]],"latestChangedDtsFile":"./vite.demo.config.d.ts","version":"5.9.3"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The library build, the dev server and the test runner. The plugins live in `vite.plugins.ts`
3
+ * because the hosted demo (`vite.demo.config.ts`) needs the same ones.
4
+ */
5
+ declare const _default: import("vite").UserConfig;
6
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
@@ -0,0 +1,19 @@
1
+ import type { Plugin } from 'vite';
2
+ /** A standalone classic script: no imports, no `import.meta`, runnable from a blob or a URL. */
3
+ export declare function bundleWorker(entry: string, minify: boolean): Promise<string>;
4
+ /** Supplies the Jobs worker to the element as a string, for `new Worker(blob:)`. */
5
+ export declare function jobsWorkerPlugin(): Plugin;
6
+ /**
7
+ * Serves the Service Worker during dev and tests. In a built package `dist/h5p-sw.js` sits next
8
+ * to the element and `new URL('./h5p-sw.js', import.meta.url)` finds it; in dev that same URL
9
+ * points at `/src/h5p-sw.js`, which is this.
10
+ */
11
+ export declare function devServiceWorkerPlugin(): Plugin;
12
+ export declare function noRangeFixturesPlugin(): Plugin;
13
+ /**
14
+ * Replaces `%SITE_URL%` in the pages. Canonical links and social-card URLs have to be absolute,
15
+ * and the origin is only known where the site is built — Vercel's production URL, or localhost.
16
+ * It runs before Vite's own `%ENV%` pass, which would otherwise warn about a name it does not
17
+ * know.
18
+ */
19
+ export declare function siteUrlPlugin(siteUrl: string): Plugin;
@@ -0,0 +1,104 @@
1
+ import type { ByteRange } from './range';
2
+ import type { ForwardIndexSnapshot } from './forward-index';
3
+ /**
4
+ * The chunk store: one Cache API cache per package. Small entries are stored whole; archives and
5
+ * extracted media are stored as fixed-size chunks, so a range request is chunk arithmetic plus a
6
+ * slice and nothing bigger than one chunk is ever resident.
7
+ *
8
+ * It is a cache, not a library. Nothing in v1 lets a user manage it; when a write hits the quota,
9
+ * the coldest package that is not currently playing is dropped and the write is retried.
10
+ */
11
+ /** What is known about a chunked entry while and after it is written. */
12
+ export interface ChunkMeta {
13
+ /** Total size once known. `null` while a download of unknown length is in flight. */
14
+ size: number | null;
15
+ /** Bytes written so far, always a prefix of the entry: chunks are written in order. */
16
+ available: number;
17
+ complete: boolean;
18
+ }
19
+ /**
20
+ * The name a forward index is announced under on the watermark channel, so a request waiting for
21
+ * an entry that has not arrived yet wakes when the index grows, the way one waiting for bytes
22
+ * wakes when the watermark moves.
23
+ */
24
+ export declare const FORWARD_INDEX_ENTRY = "__forward_index__";
25
+ export declare function cacheNameFor(pkgId: string): string;
26
+ export declare class QuotaError extends Error {
27
+ constructor(message?: string);
28
+ }
29
+ /** Chunk indices covering an inclusive byte range. */
30
+ export declare function chunksForRange(range: ByteRange): {
31
+ first: number;
32
+ last: number;
33
+ };
34
+ /** The slice of chunk `index` that contributes to `range`, as offsets within the chunk. */
35
+ export declare function sliceWithinChunk(index: number, range: ByteRange): {
36
+ from: number;
37
+ to: number;
38
+ };
39
+ export declare class ChunkStore {
40
+ readonly pkgId: string;
41
+ private cachePromise;
42
+ constructor(pkgId: string);
43
+ private cache;
44
+ getWhole(entry: string): Promise<Response | undefined>;
45
+ /**
46
+ * Stores an entry in one piece. `body` builds the payload — usually a fresh inflate stream
47
+ * straight off zip.js, so the entry streams into storage instead of landing in memory first —
48
+ * and is called again only if a quota retry needs another.
49
+ */
50
+ putWhole(entry: string, body: () => BodyInit, contentType: string, size?: number): Promise<void>;
51
+ getMeta(entry: string): Promise<ChunkMeta | undefined>;
52
+ setMeta(entry: string, meta: ChunkMeta): Promise<void>;
53
+ putChunk(entry: string, index: number, bytes: Uint8Array): Promise<void>;
54
+ getChunk(entry: string, index: number): Promise<Uint8Array | undefined>;
55
+ /**
56
+ * Streams an inclusive byte range out of a chunked entry. Chunks are pulled one at a time as
57
+ * the consumer reads, and each streams straight out of the cache — a partial one sliced as it
58
+ * flows — so serving a 300 MB video costs kilobytes of memory, not a chunk of it. That matters
59
+ * most for the small ranges a media element probes with: materialising the 8 MB chunk to hand
60
+ * back 64 kB of it was the old cost of every such request.
61
+ *
62
+ * `waitFor` lets the stream run ahead of the extraction: it is called with the byte the next
63
+ * chunk reaches and must resolve true once that much exists. Without it every byte of the
64
+ * range has to be in the store before the first one can be served.
65
+ */
66
+ readRange(entry: string, range: ByteRange, waitFor?: (bytes: number) => Promise<boolean>): ReadableStream<Uint8Array>;
67
+ /** The stored body of one chunk, streaming, or `undefined` when it is not there. */
68
+ private chunkBody;
69
+ /** Reads an inclusive range into memory. Only used for archive reads, which are bounded. */
70
+ readRangeBytes(entry: string, range: ByteRange): Promise<Uint8Array>;
71
+ getArchiveMeta(): Promise<ChunkMeta | undefined>;
72
+ /**
73
+ * The entries of a downloading archive that are already readable, from its local headers. The
74
+ * Jobs worker publishes this as it downloads; the Service Worker serves from it until the whole
75
+ * archive — and with it the central directory, the real index — is present.
76
+ */
77
+ getForwardIndex(): Promise<ForwardIndexSnapshot | undefined>;
78
+ setForwardIndex(snapshot: ForwardIndexSnapshot): Promise<void>;
79
+ readArchiveRange(range: ByteRange): Promise<Uint8Array>;
80
+ /**
81
+ * A cache write that survives a full disk: on a quota error the coldest *other* package is
82
+ * dropped and the write retried. The package being served is never a candidate, so playback
83
+ * cannot evict itself mid-stream.
84
+ *
85
+ * It takes a factory, not a `Response`. A body can only be consumed once, and the obvious way
86
+ * to keep a retry copy — `clone()` before every attempt — tees the body: for a stream straight
87
+ * off the inflate, the unread branch then buffers the entire entry in memory, on every write,
88
+ * only to be thrown away when the put succeeds. Building a fresh response only when a retry
89
+ * actually happens keeps the common path a single pass through.
90
+ */
91
+ private write;
92
+ destroy(): Promise<void>;
93
+ }
94
+ export declare function setEvictionPolicy(lookup: (exceptPkgId: string) => Promise<string | null>): void;
95
+ export declare function setEvictionListener(listener: (pkgId: string) => Promise<void> | void): void;
96
+ export interface WatermarkNotice {
97
+ pkgId: string;
98
+ entry: string;
99
+ meta: ChunkMeta;
100
+ }
101
+ /** Calls `onNotice` for every watermark written to one entry, until the returned function is called. */
102
+ export declare function onWatermark(pkgId: string, entry: string, onNotice: (meta: ChunkMeta) => void): () => void;
103
+ /** Drops package caches written by an older major version. Called from the worker's `activate`. */
104
+ export declare function deleteStaleCaches(): Promise<string[]>;
@@ -0,0 +1,67 @@
1
+ /** Version of the element/worker pair. Kept in sync with package.json by scripts/sync-h5p-assets.mjs. */
2
+ export declare const VERSION = "0.1.0";
3
+ /** Major version. Cache names carry it, so a major bump discards every cached package. */
4
+ export declare const MAJOR_VERSION = 0;
5
+ /** One cache per package: `h5p-pkg-v<major>-<pkgId>`. */
6
+ export declare const CACHE_PREFIX = "h5p-pkg-v0-";
7
+ /**
8
+ * Chunk size for archives and extracted media: the unit of storage, and the ceiling on what one
9
+ * read or write holds in memory. The segment window in `source.ts` is the one deliberate exception.
10
+ */
11
+ export declare const CHUNK_SIZE: number;
12
+ /**
13
+ * Entries at or below this size are inflated whole into the cache on first request, whatever
14
+ * their compression method. Above it, a deflated entry goes to the Jobs worker and a stored
15
+ * entry is sliced straight out of the source.
16
+ */
17
+ export declare const INLINE_MAX_SIZE: number;
18
+ /**
19
+ * How a large span is pulled over HTTP: `SEGMENT_CONCURRENCY` ranged requests of `SEGMENT_SIZE`
20
+ * in flight at once, emitted in order.
21
+ *
22
+ * One request per span is already the difference between a working player and 3,500 round trips
23
+ * — but a single connection is often capped well below the link. Measured against one real host:
24
+ * 2.0 MB/s on one connection, 2.6 MB/s on four, against a 3.5 MB/s link. Four is where it
25
+ * stopped improving; eight was no better.
26
+ *
27
+ * The cost is memory. Segments arrive out of order and wait their turn, so up to
28
+ * `SEGMENT_CONCURRENCY * SEGMENT_SIZE` — 16 MB — can be held at once. That is a deliberate
29
+ * loosening of "nothing larger than one chunk in memory", and it is why the segment is 4 MB
30
+ * rather than the 8 MB used everywhere else.
31
+ */
32
+ export declare const SEGMENT_SIZE: number;
33
+ export declare const SEGMENT_CONCURRENCY = 4;
34
+ /** Below this, one request is better: the overlap cannot pay back its own latency. */
35
+ export declare const SEGMENT_MIN_SPAN: number;
36
+ /** Reserved chunk-store entry name for the archive itself (chunked adapter). */
37
+ export declare const ARCHIVE_ENTRY = "__archive__";
38
+ /**
39
+ * How long the watermark may sit still before the virtual server concludes the job behind it is
40
+ * gone. It is not a budget for the whole extraction: inflating a few hundred megabytes over a
41
+ * network legitimately takes minutes, and a request for the tail of such an entry cannot be
42
+ * answered before it finishes.
43
+ */
44
+ export declare const COLD_ENTRY_WAIT_MS = 15000;
45
+ /**
46
+ * How often a waiting response re-reads the watermark when no notice has arrived. Progress is
47
+ * announced on a `BroadcastChannel` the moment it is written, so this is the fallback that keeps
48
+ * stall detection honest, not what makes serving prompt.
49
+ */
50
+ export declare const WATERMARK_POLL_MS = 500;
51
+ /**
52
+ * How long one job request suppresses the next for the same entry. A media element opens with a
53
+ * burst of range requests that all land within milliseconds, and this is only there to keep that
54
+ * burst from becoming a burst of messages — the real deduplication is the Jobs worker's own
55
+ * in-flight map and its Web Lock. Keeping the window short matters: a job can die with the tab
56
+ * that owned it, and a long window would leave the entry unserved until it expired.
57
+ */
58
+ export declare const JOB_REQUEST_DEDUPE_MS = 2000;
59
+ /** IndexedDB database and store names. */
60
+ export declare const DB_NAME = "h5p-player";
61
+ export declare const DB_VERSION = 1;
62
+ export declare const PACKAGES_STORE = "packages";
63
+ /**
64
+ * Synthetic origin for chunk-store keys. The Cache API needs absolute http(s) URLs; these are
65
+ * never fetched, so an unresolvable TLD keeps them from ever reaching the network.
66
+ */
67
+ export declare const CHUNK_KEY_ORIGIN = "https://chunks.h5p-player.invalid/";
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Entry-name normalisation. Archives are untrusted: an entry may try to escape the package root
3
+ * with `..`, an absolute path, a Windows drive letter or a backslash separator. Anything that
4
+ * cannot be expressed as a plain relative path under the package root is rejected outright
5
+ * rather than sanitised, so a hostile name can never silently become a different valid name.
6
+ */
7
+ /**
8
+ * Returns the canonical form of a zip entry name, or `null` if the name is unusable.
9
+ * Canonical means: forward slashes, no leading slash, no `.` or `..` segments, no empty
10
+ * segments, no trailing slash.
11
+ */
12
+ export declare function normalizeEntryName(raw: string): string | null;
13
+ /**
14
+ * Normalises the path taken from a virtual-server URL. The path arrives percent-encoded from the
15
+ * URL; it is decoded first so that `%2e%2e` is rejected like a literal `..`.
16
+ */
17
+ export declare function normalizeRequestPath(raw: string): string | null;
18
+ /**
19
+ * Builds the entry index from raw zip names. Directory entries are dropped, unusable names are
20
+ * dropped, and a name that normalises onto one already taken is dropped rather than overwriting
21
+ * it — first occurrence wins, so a duplicate cannot shadow a library file already indexed.
22
+ */
23
+ export declare function indexEntryNames<T extends {
24
+ filename: string;
25
+ directory?: boolean;
26
+ }>(entries: T[]): {
27
+ index: Map<string, T>;
28
+ rejected: string[];
29
+ };