Content-addressed version deploy system for Diffuse elements.diffuse.sh
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: deploy 4.0.0-alpha update

+14962 -2
+5
artifacts/artifacts.json
··· 228 228 "cid": "bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq", 229 229 "createdAt": "2026-03-03T22:44:01.440Z", 230 230 "version": "4.0.0-alpha" 231 + }, 232 + "bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4": { 233 + "cid": "bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4", 234 + "createdAt": "2026-03-05T14:44:04.005Z", 235 + "version": "4.0.0-alpha" 231 236 } 232 237 }
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/APEv2Parser-JBT6ZPPL.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/APEv2Parser-JBT6ZPPL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/APEv2Parser-JBT6ZPPL.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/APEv2Parser-JBT6ZPPL.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/AiffParser-7J3JIU4R.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/AiffParser-7J3JIU4R.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/AiffParser-7J3JIU4R.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/AiffParser-7J3JIU4R.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/AsfParser-K6K2MCFT.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/AsfParser-K6K2MCFT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/AsfParser-K6K2MCFT.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/AsfParser-K6K2MCFT.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/DsdiffParser-RX5L67QC.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/DsdiffParser-RX5L67QC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/DsdiffParser-RX5L67QC.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/DsdiffParser-RX5L67QC.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/DsfParser-SEGRVUZ3.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/DsfParser-SEGRVUZ3.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/DsfParser-SEGRVUZ3.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/DsfParser-SEGRVUZ3.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/FlacParser-JAF54BZM.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/FlacParser-JAF54BZM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/FlacParser-JAF54BZM.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/FlacParser-JAF54BZM.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MP4Parser-TI5DETOV.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/MP4Parser-TI5DETOV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MP4Parser-TI5DETOV.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/MP4Parser-TI5DETOV.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MatroskaParser-2BD5GINE.js
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/MatroskaParser-2BD5GINE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MatroskaParser-2BD5GINE.js.map
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/MatroskaParser-2BD5GINE.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MpegParser-BNW6GDHZ.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/MpegParser-BNW6GDHZ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MpegParser-BNW6GDHZ.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/MpegParser-BNW6GDHZ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MusepackParser-AOTNNUS6.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/MusepackParser-AOTNNUS6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/MusepackParser-AOTNNUS6.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/MusepackParser-AOTNNUS6.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/OggParser-UNPX7QR4.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/OggParser-UNPX7QR4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/OggParser-UNPX7QR4.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/OggParser-UNPX7QR4.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/WavPackParser-BRAHRFOP.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/WavPackParser-BRAHRFOP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/WavPackParser-BRAHRFOP.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/WavPackParser-BRAHRFOP.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/WaveParser-EPX6CXTY.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/WaveParser-EPX6CXTY.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/WaveParser-EPX6CXTY.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/WaveParser-EPX6CXTY.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/android-chrome-192x192.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/android-chrome-192x192.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/android-chrome-512x512.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/android-chrome-512x512.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/apple-touch-icon.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/apple-touch-icon.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/browserconfig.xml
··· 1 + ../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/browserconfig.xml
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-242LG3VP.js
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-242LG3VP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-242LG3VP.js.map
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-242LG3VP.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2BPPIBER.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2BPPIBER.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2BPPIBER.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2BPPIBER.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2HKIFQJO.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2HKIFQJO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2HKIFQJO.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2HKIFQJO.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2PHQN23Z.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2PHQN23Z.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2PHQN23Z.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2PHQN23Z.js.map
+215
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2SPFBYRD.js
··· 1 + import { 2 + filterByPlaylist 3 + } from "./chunk-IYNRCNPM.js"; 4 + import { 5 + BroadcastableDiffuseElement, 6 + query, 7 + queryOptional 8 + } from "./chunk-2V4VRBHO.js"; 9 + import { 10 + batch, 11 + computed, 12 + signal 13 + } from "./chunk-HNJPKCUJ.js"; 14 + import { 15 + __export, 16 + __name, 17 + init_Buffer, 18 + init_process 19 + } from "./chunk-FZQXS3RE.js"; 20 + 21 + // components/orchestrator/scoped-tracks/element.js 22 + var element_exports = {}; 23 + __export(element_exports, { 24 + CLASS: () => CLASS, 25 + NAME: () => NAME, 26 + default: () => element_default 27 + }); 28 + init_Buffer(); 29 + init_process(); 30 + var ScopedTracksOrchestrator = class extends BroadcastableDiffuseElement { 31 + static { 32 + __name(this, "ScopedTracksOrchestrator"); 33 + } 34 + static NAME = "diffuse/orchestrator/scoped-tracks"; 35 + // SIGNALS 36 + #input = signal( 37 + /** @type {InputElement | null} */ 38 + null 39 + ); 40 + #output = signal( 41 + /** @type {OutputElement | null} */ 42 + null 43 + ); 44 + #scope = signal( 45 + /** @type {import("~/components/engine/scope/element.js").CLASS | null} */ 46 + null 47 + ); 48 + #search = signal( 49 + /** @type {import("~/components/processor/search/element.js").CLASS | null} */ 50 + null 51 + ); 52 + #selectedPlaylistItems = computed(() => { 53 + const playlist = this.#scope.value?.playlist(); 54 + if (!playlist) return void 0; 55 + return this.#output.value?.playlistItems.collection().filter( 56 + (p) => p.playlist === playlist 57 + ); 58 + }); 59 + #tracksAvailable = signal( 60 + /** @type {Track[]} */ 61 + [] 62 + ); 63 + #tracksSearch = signal( 64 + /** @type {Track[]} */ 65 + [] 66 + ); 67 + #tracksFinal = signal( 68 + /** @type {Track[]} */ 69 + [] 70 + ); 71 + // STATE 72 + tracks = this.#tracksFinal.get; 73 + // LIFECYCLE 74 + /** 75 + * @override 76 + */ 77 + async connectedCallback() { 78 + if (this.hasAttribute("group")) { 79 + const actions = this.broadcast(this.identifier, { 80 + getTracksAvailable: { 81 + strategy: "leaderOnly", 82 + fn: this.#tracksAvailable.get 83 + }, 84 + getTracksSearch: { 85 + strategy: "leaderOnly", 86 + fn: this.#tracksSearch.get 87 + }, 88 + getTracksFinal: { 89 + strategy: "leaderOnly", 90 + fn: this.#tracksFinal.get 91 + }, 92 + setTracksAvailable: { 93 + strategy: "replicate", 94 + fn: this.#tracksAvailable.set 95 + }, 96 + setTracksSearch: { 97 + strategy: "replicate", 98 + fn: this.#tracksSearch.set 99 + }, 100 + setTracksFinal: { 101 + strategy: "replicate", 102 + fn: this.#tracksFinal.set 103 + } 104 + }); 105 + if (!actions) return; 106 + this.#tracksAvailable.set = actions.setTracksAvailable; 107 + this.#tracksSearch.set = actions.setTracksSearch; 108 + this.#tracksFinal.set = actions.setTracksFinal; 109 + Promise.all([ 110 + actions.getTracksAvailable(), 111 + actions.getTracksSearch(), 112 + actions.getTracksFinal() 113 + ]).then( 114 + ([available, search2, final]) => batch(() => { 115 + this.#tracksAvailable.value = available; 116 + this.#tracksSearch.value = search2; 117 + this.#tracksFinal.value = final; 118 + }) 119 + ); 120 + } 121 + super.connectedCallback(); 122 + const input = query(this, "input-selector"); 123 + const output = query(this, "output-selector"); 124 + const search = query(this, "search-processor-selector"); 125 + const scope = queryOptional(this, "scope-engine-selector"); 126 + this.#input.value = input; 127 + this.#output.value = output; 128 + this.#search.value = search; 129 + if (scope) this.#scope.value = scope; 130 + await customElements.whenDefined(input.localName); 131 + await customElements.whenDefined(output.localName); 132 + if (scope) await customElements.whenDefined(scope.localName); 133 + this.effect(async () => { 134 + const collection = output.tracks.collection(); 135 + if (await this.isLeader() === false) return; 136 + const uris = []; 137 + const tracks = collection.filter((t) => { 138 + uris.push(t.uri); 139 + return t.kind !== "placeholder"; 140 + }); 141 + const groups = collection.length ? await input.groupConsult(uris) : {}; 142 + const availableUris = /* @__PURE__ */ new Set(); 143 + Object.values(groups).forEach((value) => { 144 + if (value.available === false) return; 145 + for (const uri of value.uris) { 146 + availableUris.add(uri); 147 + } 148 + }); 149 + const availableTracks = tracks.filter((t) => { 150 + return availableUris.has(t.uri); 151 + }); 152 + search.supply({ tracks: availableTracks }); 153 + this.#tracksAvailable.set(availableTracks); 154 + }); 155 + this.effect(async () => { 156 + const _trigger = search.supplyFingerprint(); 157 + const availableTracks = this.#tracksAvailable.value; 158 + const searchTerm = this.#scope.value?.searchTerm(); 159 + if (await this.isLeader() === false) return; 160 + if (searchTerm?.length) { 161 + const searchResults = await search.search({ 162 + term: searchTerm 163 + }); 164 + this.#tracksSearch.set(searchResults); 165 + } else { 166 + this.#tracksSearch.set(availableTracks); 167 + } 168 + }); 169 + this.effect(async () => { 170 + const tracks = this.#tracksSearch.value; 171 + const playlistItems = this.#selectedPlaylistItems(); 172 + const sortBy = this.#scope.value?.sortBy(); 173 + if (await this.isLeader() === false) return; 174 + let final = playlistItems?.length ? filterByPlaylist(tracks, playlistItems) : tracks; 175 + if (sortBy?.length) { 176 + final = [...final].sort((a, b) => { 177 + for (const field of sortBy) { 178 + let aVal = ( 179 + /** @type {any} */ 180 + a 181 + ); 182 + let bVal = ( 183 + /** @type {any} */ 184 + b 185 + ); 186 + for (const key of field.split(".")) { 187 + aVal = aVal?.[key]; 188 + bVal = bVal?.[key]; 189 + } 190 + if (aVal == null && bVal == null) continue; 191 + if (aVal == null) return 1; 192 + if (bVal == null) return -1; 193 + const cmp = typeof aVal === "string" && typeof bVal === "string" ? aVal.localeCompare(bVal) : aVal < bVal ? -1 : aVal > bVal ? 1 : 0; 194 + if (cmp !== 0) return cmp; 195 + } 196 + return 0; 197 + }); 198 + } 199 + this.#tracksFinal.set(final); 200 + }); 201 + } 202 + }; 203 + var element_default = ScopedTracksOrchestrator; 204 + var CLASS = ScopedTracksOrchestrator; 205 + var NAME = "do-scoped-tracks"; 206 + customElements.define(NAME, CLASS); 207 + 208 + export { 209 + element_default, 210 + CLASS, 211 + NAME, 212 + element_exports 213 + }; 214 + 215 + //# sourceMappingURL=./chunk-2SPFBYRD.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2SPFBYRD.js.map
··· 1 + {"version":3,"sources":["/components/orchestrator/scoped-tracks/element.js"],"sourcesContent":["import {\n BroadcastableDiffuseElement,\n query,\n queryOptional,\n} from \"~/common/element.js\";\nimport { batch, computed, signal } from \"~/common/signal.js\";\nimport { filterByPlaylist } from \"~/common/playlist.js\";\n\n/**\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import {InputElement} from \"~/components/input/types.d.ts\"\n * @import {OutputElement} from \"~/components/output/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\nclass ScopedTracksOrchestrator extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/orchestrator/scoped-tracks\";\n\n // SIGNALS\n\n #input = signal(/** @type {InputElement | null} */ (null));\n #output = signal(/** @type {OutputElement | null} */ (null));\n\n #scope = signal(\n /** @type {import(\"~/components/engine/scope/element.js\").CLASS | null} */ (null),\n );\n\n #search = signal(\n /** @type {import(\"~/components/processor/search/element.js\").CLASS | null} */ (null),\n );\n\n #selectedPlaylistItems = computed(() => {\n const playlist = this.#scope.value?.playlist();\n if (!playlist) return undefined;\n\n return this.#output.value?.playlistItems.collection().filter((p) =>\n p.playlist === playlist\n );\n });\n\n #tracksAvailable = signal(/** @type {Track[]} */ ([]));\n #tracksSearch = signal(/** @type {Track[]} */ ([]));\n #tracksFinal = signal(/** @type {Track[]} */ ([]));\n\n // STATE\n\n tracks = this.#tracksFinal.get;\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(this.identifier, {\n getTracksAvailable: {\n strategy: \"leaderOnly\",\n fn: this.#tracksAvailable.get,\n },\n getTracksSearch: {\n strategy: \"leaderOnly\",\n fn: this.#tracksSearch.get,\n },\n getTracksFinal: {\n strategy: \"leaderOnly\",\n fn: this.#tracksFinal.get,\n },\n setTracksAvailable: {\n strategy: \"replicate\",\n fn: this.#tracksAvailable.set,\n },\n setTracksSearch: {\n strategy: \"replicate\",\n fn: this.#tracksSearch.set,\n },\n setTracksFinal: {\n strategy: \"replicate\",\n fn: this.#tracksFinal.set,\n },\n });\n\n if (!actions) return;\n\n this.#tracksAvailable.set = actions.setTracksAvailable;\n this.#tracksSearch.set = actions.setTracksSearch;\n this.#tracksFinal.set = actions.setTracksFinal;\n\n // Sync signal state with leader\n Promise.all([\n actions.getTracksAvailable(),\n actions.getTracksSearch(),\n actions.getTracksFinal(),\n ]).then(([available, search, final]) =>\n batch(() => {\n this.#tracksAvailable.value = available;\n this.#tracksSearch.value = search;\n this.#tracksFinal.value = final;\n })\n );\n }\n\n // Super\n super.connectedCallback();\n\n /** @type {InputElement} */\n const input = query(this, \"input-selector\");\n\n /** @type {OutputElement} */\n const output = query(this, \"output-selector\");\n\n /** @type {import(\"~/components/processor/search/element.js\").CLASS} */\n const search = query(this, \"search-processor-selector\");\n\n /** @type {import(\"~/components/engine/scope/element.js\").CLASS | null} */\n const scope = queryOptional(this, \"scope-engine-selector\");\n\n // Assign to self\n this.#input.value = input;\n this.#output.value = output;\n this.#search.value = search;\n if (scope) this.#scope.value = scope;\n\n // When defined\n await customElements.whenDefined(input.localName);\n await customElements.whenDefined(output.localName);\n if (scope) await customElements.whenDefined(scope.localName);\n\n // Watch tracks collection\n this.effect(async () => {\n const collection = output.tracks.collection();\n if ((await this.isLeader()) === false) return;\n\n /** @type {string[]} */\n const uris = [];\n const tracks = collection.filter((t) => {\n uris.push(t.uri);\n return t.kind !== \"placeholder\";\n });\n\n // Consult inputs\n const groups = collection.length ? await input.groupConsult(uris) : {};\n\n /** @type {Set<string>} */\n const availableUris = new Set();\n\n Object.values(groups).forEach((value) => {\n if (value.available === false) return;\n for (const uri of value.uris) {\n availableUris.add(uri);\n }\n });\n\n const availableTracks = tracks.filter((t) => {\n return availableUris.has(t.uri);\n });\n\n // Set pool\n search.supply({ tracks: availableTracks });\n\n this.#tracksAvailable.set(availableTracks);\n });\n\n // Watch search supply\n this.effect(async () => {\n const _trigger = search.supplyFingerprint();\n const availableTracks = this.#tracksAvailable.value;\n const searchTerm = this.#scope.value?.searchTerm();\n\n if ((await this.isLeader()) === false) return;\n\n if (searchTerm?.length) {\n const searchResults = await search.search({\n term: searchTerm,\n });\n this.#tracksSearch.set(searchResults);\n } else {\n this.#tracksSearch.set(availableTracks);\n }\n });\n\n // Watch `#tracksSearch` + Playlist + Sort\n this.effect(async () => {\n const tracks = this.#tracksSearch.value;\n const playlistItems = this.#selectedPlaylistItems();\n const sortBy = this.#scope.value?.sortBy();\n\n if ((await this.isLeader()) === false) return;\n\n let final = playlistItems?.length\n ? filterByPlaylist(tracks, playlistItems)\n : tracks;\n\n if (sortBy?.length) {\n final = [...final].sort((a, b) => {\n for (const field of sortBy) {\n let aVal = /** @type {any} */ (a);\n let bVal = /** @type {any} */ (b);\n\n for (const key of field.split(\".\")) {\n aVal = aVal?.[key];\n bVal = bVal?.[key];\n }\n\n if (aVal == null && bVal == null) continue;\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n\n const cmp = typeof aVal === \"string\" && typeof bVal === \"string\"\n ? aVal.localeCompare(bVal)\n : aVal < bVal ? -1 : aVal > bVal ? 1 : 0;\n\n if (cmp !== 0) return cmp;\n }\n\n return 0;\n });\n }\n\n this.#tracksFinal.set(final);\n });\n }\n}\n\nexport default ScopedTracksOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ScopedTracksOrchestrator;\nexport const NAME = \"do-scoped-tracks\";\n\ncustomElements.define(NAME, CLASS);\n"],"mappings":"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","names":["search"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-2SPFBYRD.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2V4VRBHO.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2V4VRBHO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-2V4VRBHO.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-2V4VRBHO.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3EVAK2AC.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-3EVAK2AC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3EVAK2AC.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-3EVAK2AC.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3IXJYTB6.js
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-3IXJYTB6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3IXJYTB6.js.map
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-3IXJYTB6.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3L563ZA4.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-3L563ZA4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3L563ZA4.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-3L563ZA4.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3USAPKOY.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-3USAPKOY.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-3USAPKOY.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-3USAPKOY.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-4QN6X76O.js
··· 1 + ../bafybeicp5hi5rw4vffqlbmyqqaxhmxzx4ilejru3cq4esycpeyuuhen5ha/chunk-4QN6X76O.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-4QN6X76O.js.map
··· 1 + ../bafybeicp5hi5rw4vffqlbmyqqaxhmxzx4ilejru3cq4esycpeyuuhen5ha/chunk-4QN6X76O.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-4YB6QUPN.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-4YB6QUPN.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-4YB6QUPN.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-4YB6QUPN.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-6DKPDMFE.js
··· 1 + ../bafybeif36x7yy3gignoyekheplnhh4og5l5z3nrvviouxgiy36iimz3vai/chunk-6DKPDMFE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-6DKPDMFE.js.map
··· 1 + ../bafybeif36x7yy3gignoyekheplnhh4og5l5z3nrvviouxgiy36iimz3vai/chunk-6DKPDMFE.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-6DRHTH2U.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-6DRHTH2U.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-6DRHTH2U.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-6DRHTH2U.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-6WKBRQHS.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-6WKBRQHS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-6WKBRQHS.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-6WKBRQHS.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-77ZY4GQV.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-77ZY4GQV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-77ZY4GQV.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-77ZY4GQV.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-7BHFTEJL.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-7BHFTEJL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-7BHFTEJL.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-7BHFTEJL.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-7SBFGDAO.js
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-7SBFGDAO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-7SBFGDAO.js.map
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-7SBFGDAO.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-7U5QHBAZ.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-7U5QHBAZ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-7U5QHBAZ.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-7U5QHBAZ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ABL7GBBM.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ABL7GBBM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ABL7GBBM.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ABL7GBBM.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-AGWC42GJ.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-AGWC42GJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-AGWC42GJ.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-AGWC42GJ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-AHN37DQ6.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-AHN37DQ6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-AHN37DQ6.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-AHN37DQ6.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-B4JTLSHZ.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-B4JTLSHZ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-B4JTLSHZ.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-B4JTLSHZ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-BDBXPVO6.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-BDBXPVO6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-BDBXPVO6.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-BDBXPVO6.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-BKRD2ZIW.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-BKRD2ZIW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-BKRD2ZIW.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-BKRD2ZIW.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-CMU4QLMC.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-CMU4QLMC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-CMU4QLMC.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-CMU4QLMC.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-CRZ7HJJ4.js
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-CRZ7HJJ4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-CRZ7HJJ4.js.map
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-CRZ7HJJ4.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-D6OAWBEV.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-D6OAWBEV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-D6OAWBEV.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-D6OAWBEV.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-EEUCFWD4.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-EEUCFWD4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-EEUCFWD4.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-EEUCFWD4.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ENDOZK4Q.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ENDOZK4Q.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ENDOZK4Q.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ENDOZK4Q.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-F27JDJI2.js
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-F27JDJI2.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-F27JDJI2.js.map
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-F27JDJI2.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FAW4EB7G.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-FAW4EB7G.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FAW4EB7G.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-FAW4EB7G.js.map
+312
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FIX46GRA.js
··· 1 + import { 2 + element_default as element_default7 3 + } from "./chunk-VOFM65C2.js"; 4 + import { 5 + element_default as element_default11 6 + } from "./chunk-HDE6FJCN.js"; 7 + import { 8 + element_default 9 + } from "./chunk-ZROTLYIH.js"; 10 + import { 11 + element_default as element_default13 12 + } from "./chunk-2SPFBYRD.js"; 13 + import { 14 + element_default as element_default14 15 + } from "./chunk-K4XAE7PE.js"; 16 + import { 17 + element_default as element_default15 18 + } from "./chunk-ABL7GBBM.js"; 19 + import { 20 + element_default as element_default5 21 + } from "./chunk-TMIJ7SWF.js"; 22 + import { 23 + element_default as element_default6 24 + } from "./chunk-QKKQKAE5.js"; 25 + import { 26 + element_default as element_default8 27 + } from "./chunk-ENDOZK4Q.js"; 28 + import { 29 + element_default as element_default9 30 + } from "./chunk-FQ7GPRG2.js"; 31 + import { 32 + element_default as element_default16 33 + } from "./chunk-TMGAIVLV.js"; 34 + import { 35 + element_default as element_default3 36 + } from "./chunk-U4HLMEDD.js"; 37 + import { 38 + element_default as element_default2 39 + } from "./chunk-OAG3HI6B.js"; 40 + import { 41 + element_default as element_default4 42 + } from "./chunk-TS4JJWFE.js"; 43 + import { 44 + element_default as element_default10 45 + } from "./chunk-3L563ZA4.js"; 46 + import { 47 + element_default as element_default12 48 + } from "./chunk-VQR5VNUL.js"; 49 + import { 50 + __name, 51 + init_Buffer, 52 + init_process 53 + } from "./chunk-FZQXS3RE.js"; 54 + 55 + // common/facets/foundation.js 56 + init_Buffer(); 57 + init_process(); 58 + var url = new URL(document.location.href); 59 + var GROUP = url.searchParams.get("group") ?? "facets"; 60 + var config = { 61 + GROUP, 62 + features: { 63 + fillQueueAutomatically, 64 + playAudioFromQueue, 65 + processInputs, 66 + searchThroughCollection 67 + }, 68 + // Elements 69 + engine: { 70 + audio, 71 + queue, 72 + repeatShuffle, 73 + scope 74 + }, 75 + orchestrator: { 76 + autoQueue, 77 + favourites, 78 + input, 79 + mediaSession, 80 + output, 81 + queueAudio, 82 + processTracks, 83 + scopedTracks, 84 + sources 85 + }, 86 + processor: { 87 + artwork, 88 + metadata, 89 + search 90 + } 91 + }; 92 + var foundation_default = config; 93 + function fillQueueAutomatically() { 94 + return { 95 + engine: { 96 + queue: queue(), 97 + repeatShuffle: repeatShuffle(), 98 + scope: scope() 99 + }, 100 + orchestrator: { 101 + autoQueue: autoQueue(), 102 + input: input(), 103 + output: output(), 104 + scopedTracks: scopedTracks() 105 + } 106 + }; 107 + } 108 + __name(fillQueueAutomatically, "fillQueueAutomatically"); 109 + function playAudioFromQueue() { 110 + return { 111 + engine: { 112 + audio: audio(), 113 + queue: queue() 114 + }, 115 + orchestrator: { 116 + mediaSession: mediaSession(), 117 + queueAudio: queueAudio() 118 + } 119 + }; 120 + } 121 + __name(playAudioFromQueue, "playAudioFromQueue"); 122 + function processInputs() { 123 + return { 124 + orchestrator: { 125 + input: input(), 126 + output: output(), 127 + processTracks: processTracks() 128 + }, 129 + processor: { 130 + metadata: metadata() 131 + } 132 + }; 133 + } 134 + __name(processInputs, "processInputs"); 135 + function searchThroughCollection() { 136 + return { 137 + engine: { 138 + scope: scope() 139 + }, 140 + orchestrator: { 141 + output: output(), 142 + scopedTracks: scopedTracks() 143 + }, 144 + processor: { 145 + search: search() 146 + } 147 + }; 148 + } 149 + __name(searchThroughCollection, "searchThroughCollection"); 150 + function audio() { 151 + const a = new element_default2(); 152 + a.setAttribute("group", GROUP); 153 + return findExistingOrAdd(a); 154 + } 155 + __name(audio, "audio"); 156 + function queue() { 157 + const q = new element_default4(); 158 + q.setAttribute("group", GROUP); 159 + return findExistingOrAdd(q); 160 + } 161 + __name(queue, "queue"); 162 + function repeatShuffle() { 163 + const r = new element_default10(); 164 + r.setAttribute("group", GROUP); 165 + return findExistingOrAdd(r); 166 + } 167 + __name(repeatShuffle, "repeatShuffle"); 168 + function scope() { 169 + const s = new element_default12(); 170 + s.setAttribute("group", GROUP); 171 + return findExistingOrAdd(s); 172 + } 173 + __name(scope, "scope"); 174 + function artwork() { 175 + const a = new element_default(); 176 + a.setAttribute("group", GROUP); 177 + return findExistingOrAdd(a); 178 + } 179 + __name(artwork, "artwork"); 180 + function metadata() { 181 + const m = new element_default7(); 182 + m.setAttribute("group", GROUP); 183 + return findExistingOrAdd(m); 184 + } 185 + __name(metadata, "metadata"); 186 + function search() { 187 + const s = new element_default11(); 188 + s.setAttribute("group", GROUP); 189 + return findExistingOrAdd(s); 190 + } 191 + __name(search, "search"); 192 + function autoQueue() { 193 + const q = queue(); 194 + const r = repeatShuffle(); 195 + const t = scopedTracks(); 196 + const aqo = new element_default3(); 197 + aqo.setAttribute("group", GROUP); 198 + aqo.setAttribute("queue-engine-selector", q.selector); 199 + aqo.setAttribute("repeat-shuffle-engine-selector", r.selector); 200 + aqo.setAttribute("tracks-selector", t.selector); 201 + return findExistingOrAdd(aqo); 202 + } 203 + __name(autoQueue, "autoQueue"); 204 + function favourites() { 205 + const o = output(); 206 + const fo = new element_default14(); 207 + fo.setAttribute("group", GROUP); 208 + fo.setAttribute("output-selector", o.selector); 209 + return findExistingOrAdd(fo); 210 + } 211 + __name(favourites, "favourites"); 212 + function input() { 213 + const i = new element_default5(); 214 + i.setAttribute("group", GROUP); 215 + i.setAttribute("id", "input"); 216 + return findExistingOrAdd(i); 217 + } 218 + __name(input, "input"); 219 + function mediaSession() { 220 + const a = audio(); 221 + const aw = artwork(); 222 + const o = output(); 223 + const q = queue(); 224 + const mso = new element_default15(); 225 + mso.setAttribute("group", GROUP); 226 + mso.setAttribute("audio-engine-selector", a.selector); 227 + mso.setAttribute("artwork-processor-selector", aw.selector); 228 + mso.setAttribute("output-selector", o.selector); 229 + mso.setAttribute("queue-engine-selector", q.selector); 230 + return findExistingOrAdd(mso); 231 + } 232 + __name(mediaSession, "mediaSession"); 233 + function output() { 234 + const o = new element_default6(); 235 + o.setAttribute("group", GROUP); 236 + o.setAttribute("id", "output"); 237 + return findExistingOrAdd(o); 238 + } 239 + __name(output, "output"); 240 + function processTracks(opts = { disableWhenReady: false }) { 241 + const i = input(); 242 + const o = output(); 243 + const m = metadata(); 244 + const opt = new element_default8(); 245 + opt.setAttribute("group", GROUP); 246 + opt.setAttribute("input-selector", i.selector); 247 + opt.setAttribute("output-selector", o.selector); 248 + opt.setAttribute("metadata-processor-selector", m.selector); 249 + if (!opts.disableWhenReady) { 250 + opt.toggleAttribute("process-when-ready"); 251 + } 252 + return findExistingOrAdd(opt); 253 + } 254 + __name(processTracks, "processTracks"); 255 + function queueAudio() { 256 + const a = audio(); 257 + const i = input(); 258 + const o = output(); 259 + const q = queue(); 260 + const r = repeatShuffle(); 261 + const oqa = new element_default9(); 262 + oqa.setAttribute("group", GROUP); 263 + oqa.setAttribute("audio-engine-selector", a.selector); 264 + oqa.setAttribute("input-selector", i.selector); 265 + oqa.setAttribute("output-selector", o.selector); 266 + oqa.setAttribute("queue-engine-selector", q.selector); 267 + oqa.setAttribute("repeat-shuffle-engine-selector", r.selector); 268 + return findExistingOrAdd(oqa); 269 + } 270 + __name(queueAudio, "queueAudio"); 271 + function scopedTracks() { 272 + const i = input(); 273 + const o = output(); 274 + const e = scope(); 275 + const s = search(); 276 + const sto = new element_default13(); 277 + sto.setAttribute("group", GROUP); 278 + sto.setAttribute("input-selector", i.selector); 279 + sto.setAttribute("output-selector", o.selector); 280 + sto.setAttribute("scope-engine-selector", e.selector); 281 + sto.setAttribute("search-processor-selector", s.selector); 282 + return findExistingOrAdd(sto); 283 + } 284 + __name(scopedTracks, "scopedTracks"); 285 + function sources() { 286 + const i = input(); 287 + const o = output(); 288 + const so = new element_default16(); 289 + so.setAttribute("group", GROUP); 290 + so.setAttribute("input-selector", i.selector); 291 + so.setAttribute("output-selector", o.selector); 292 + return findExistingOrAdd(so); 293 + } 294 + __name(sources, "sources"); 295 + function findExistingOrAdd(element) { 296 + const alreadyAdded = document.body.querySelector(element.selector); 297 + if (!alreadyAdded) { 298 + document.body.append(element); 299 + return element; 300 + } 301 + return alreadyAdded; 302 + } 303 + __name(findExistingOrAdd, "findExistingOrAdd"); 304 + 305 + export { 306 + GROUP, 307 + config, 308 + foundation_default, 309 + findExistingOrAdd 310 + }; 311 + 312 + //# sourceMappingURL=./chunk-FIX46GRA.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FIX46GRA.js.map
··· 1 + {"version":3,"sources":["/common/facets/foundation.js"],"sourcesContent":["import ArtworkProcessor from \"~/components/processor/artwork/element.js\";\nimport AudioEngine from \"~/components/engine/audio/element.js\";\nimport AutoQueueOrchestrator from \"~/components/orchestrator/auto-queue/element.js\";\nimport Queue from \"~/components/engine/queue/element.js\";\nimport InputOrchestrator from \"~/components/orchestrator/input/element.js\";\nimport OutputOrchestrator from \"~/components/orchestrator/output/element.js\";\nimport MetadataProcessor from \"~/components/processor/metadata/element.js\";\nimport ProcessTracksOrchestrator from \"~/components/orchestrator/process-tracks/element.js\";\nimport QueueAudioOrchestrator from \"~/components/orchestrator/queue-audio/element.js\";\nimport RepeatShuffleEngine from \"~/components/engine/repeat-shuffle/element.js\";\nimport SearchProcessor from \"~/components/processor/search/element.js\";\nimport ScopeEngine from \"~/components/engine/scope/element.js\";\nimport ScopedTracksOrchestrator from \"~/components/orchestrator/scoped-tracks/element.js\";\nimport FavouritesOrchestrator from \"~/components/orchestrator/favourites/element.js\";\nimport MediaSessionOrchestrator from \"~/components/orchestrator/media-session/element.js\";\nimport SourcesOrchestrator from \"~/components/orchestrator/sources/element.js\";\n\n/**\n * @import { DiffuseElement } from \"@toko/diffuse/common/element.js\";\n */\n\nconst url = new URL(document.location.href);\nexport const GROUP = url.searchParams.get(\"group\") ?? \"facets\";\n\n/**\n * Default config for facets.\n */\nexport const config = {\n GROUP,\n\n features: {\n fillQueueAutomatically,\n playAudioFromQueue,\n processInputs,\n searchThroughCollection,\n },\n\n // Elements\n engine: {\n audio,\n queue,\n repeatShuffle,\n scope,\n },\n orchestrator: {\n autoQueue,\n favourites,\n input,\n mediaSession,\n output,\n queueAudio,\n processTracks,\n scopedTracks,\n sources,\n },\n processor: {\n artwork,\n metadata,\n search,\n },\n};\n\nexport default config;\n\n// 📦️\n\nfunction fillQueueAutomatically() {\n return {\n engine: {\n queue: queue(),\n repeatShuffle: repeatShuffle(),\n scope: scope(),\n },\n orchestrator: {\n autoQueue: autoQueue(),\n input: input(),\n output: output(),\n scopedTracks: scopedTracks(),\n },\n };\n}\n\nfunction playAudioFromQueue() {\n return {\n engine: {\n audio: audio(),\n queue: queue(),\n },\n orchestrator: {\n mediaSession: mediaSession(),\n queueAudio: queueAudio(),\n },\n };\n}\n\nfunction processInputs() {\n return {\n orchestrator: {\n input: input(),\n output: output(),\n processTracks: processTracks(),\n },\n processor: {\n metadata: metadata(),\n },\n };\n}\n\nfunction searchThroughCollection() {\n return {\n engine: {\n scope: scope(),\n },\n orchestrator: {\n output: output(),\n scopedTracks: scopedTracks(),\n },\n processor: {\n search: search(),\n },\n };\n}\n\n// 🥡\n\n// Engines\nfunction audio() {\n const a = new AudioEngine();\n a.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(a);\n}\n\nfunction queue() {\n const q = new Queue();\n q.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(q);\n}\n\nfunction repeatShuffle() {\n const r = new RepeatShuffleEngine();\n r.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(r);\n}\n\nfunction scope() {\n const s = new ScopeEngine();\n s.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(s);\n}\n\n// Processors\nfunction artwork() {\n const a = new ArtworkProcessor();\n a.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(a);\n}\n\nfunction metadata() {\n const m = new MetadataProcessor();\n m.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(m);\n}\n\nfunction search() {\n const s = new SearchProcessor();\n s.setAttribute(\"group\", GROUP);\n\n return findExistingOrAdd(s);\n}\n\n// Orchestrators\nfunction autoQueue() {\n const q = queue();\n const r = repeatShuffle();\n const t = scopedTracks();\n\n const aqo = new AutoQueueOrchestrator();\n aqo.setAttribute(\"group\", GROUP);\n aqo.setAttribute(\"queue-engine-selector\", q.selector);\n aqo.setAttribute(\"repeat-shuffle-engine-selector\", r.selector);\n aqo.setAttribute(\"tracks-selector\", t.selector);\n\n return findExistingOrAdd(aqo);\n}\n\nfunction favourites() {\n const o = output();\n\n const fo = new FavouritesOrchestrator();\n fo.setAttribute(\"group\", GROUP);\n fo.setAttribute(\"output-selector\", o.selector);\n\n return findExistingOrAdd(fo);\n}\n\nfunction input() {\n const i = new InputOrchestrator();\n i.setAttribute(\"group\", GROUP);\n i.setAttribute(\"id\", \"input\");\n\n return findExistingOrAdd(i);\n}\n\nfunction mediaSession() {\n const a = audio();\n const aw = artwork();\n const o = output();\n const q = queue();\n\n const mso = new MediaSessionOrchestrator();\n mso.setAttribute(\"group\", GROUP);\n mso.setAttribute(\"audio-engine-selector\", a.selector);\n mso.setAttribute(\"artwork-processor-selector\", aw.selector);\n mso.setAttribute(\"output-selector\", o.selector);\n mso.setAttribute(\"queue-engine-selector\", q.selector);\n\n return findExistingOrAdd(mso);\n}\n\nfunction output() {\n const o = new OutputOrchestrator();\n o.setAttribute(\"group\", GROUP);\n o.setAttribute(\"id\", \"output\");\n\n return findExistingOrAdd(o);\n}\n\n/**\n * @param {Object} opts - Options\n * @param {boolean} [opts.disableWhenReady] - Whether to disable processing when ready.\n */\nfunction processTracks(opts = { disableWhenReady: false }) {\n const i = input();\n const o = output();\n const m = metadata();\n\n const opt = new ProcessTracksOrchestrator();\n opt.setAttribute(\"group\", GROUP);\n opt.setAttribute(\"input-selector\", i.selector);\n opt.setAttribute(\"output-selector\", o.selector);\n opt.setAttribute(\"metadata-processor-selector\", m.selector);\n\n if (!opts.disableWhenReady) {\n opt.toggleAttribute(\"process-when-ready\");\n }\n\n return findExistingOrAdd(opt);\n}\n\nfunction queueAudio() {\n const a = audio();\n const i = input();\n const o = output();\n const q = queue();\n const r = repeatShuffle();\n\n const oqa = new QueueAudioOrchestrator();\n oqa.setAttribute(\"group\", GROUP);\n oqa.setAttribute(\"audio-engine-selector\", a.selector);\n oqa.setAttribute(\"input-selector\", i.selector);\n oqa.setAttribute(\"output-selector\", o.selector);\n oqa.setAttribute(\"queue-engine-selector\", q.selector);\n oqa.setAttribute(\"repeat-shuffle-engine-selector\", r.selector);\n\n return findExistingOrAdd(oqa);\n}\n\nfunction scopedTracks() {\n const i = input();\n const o = output();\n const e = scope();\n const s = search();\n\n const sto = new ScopedTracksOrchestrator();\n sto.setAttribute(\"group\", GROUP);\n sto.setAttribute(\"input-selector\", i.selector);\n sto.setAttribute(\"output-selector\", o.selector);\n sto.setAttribute(\"scope-engine-selector\", e.selector);\n sto.setAttribute(\"search-processor-selector\", s.selector);\n\n return findExistingOrAdd(sto);\n}\n\nfunction sources() {\n const i = input();\n const o = output();\n const so = new SourcesOrchestrator();\n so.setAttribute(\"group\", GROUP);\n so.setAttribute(\"input-selector\", i.selector);\n so.setAttribute(\"output-selector\", o.selector);\n\n return findExistingOrAdd(so);\n}\n\n// 🛠️\n\n/**\n * @template {DiffuseElement} T\n * @param {T} element\n * @returns {T}\n */\nexport function findExistingOrAdd(element) {\n /** @type {T | null} */\n const alreadyAdded = document.body.querySelector(element.selector);\n if (!alreadyAdded) {\n document.body.append(element);\n return element;\n }\n\n return alreadyAdded;\n}\n"],"mappings":"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","names":["element_default"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-FIX46GRA.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FPIXTJ7E.js
··· 1 + ../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/chunk-FPIXTJ7E.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FPIXTJ7E.js.map
··· 1 + ../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/chunk-FPIXTJ7E.js.map
+117
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FQ7GPRG2.js
··· 1 + import { 2 + BroadcastableDiffuseElement, 3 + query 4 + } from "./chunk-2V4VRBHO.js"; 5 + import { 6 + untracked 7 + } from "./chunk-HNJPKCUJ.js"; 8 + import { 9 + __name, 10 + init_Buffer, 11 + init_process 12 + } from "./chunk-FZQXS3RE.js"; 13 + 14 + // components/orchestrator/queue-audio/element.js 15 + init_Buffer(); 16 + init_process(); 17 + var QueueAudioOrchestrator = class extends BroadcastableDiffuseElement { 18 + static { 19 + __name(this, "QueueAudioOrchestrator"); 20 + } 21 + static NAME = "diffuse/orchestrator/queue-audio"; 22 + // LIFE CYCLE 23 + /** 24 + * @override 25 + */ 26 + async connectedCallback() { 27 + if (this.hasAttribute("group")) { 28 + this.broadcast(this.identifier, {}); 29 + } 30 + super.connectedCallback(); 31 + this.audio = query(this, "audio-engine-selector"); 32 + this.input = query(this, "input-selector"); 33 + this.output = query(this, "output-selector"); 34 + this.queue = query(this, "queue-engine-selector"); 35 + this.repeatShuffle = query(this, "repeat-shuffle-engine-selector"); 36 + await customElements.whenDefined(this.audio.localName); 37 + await customElements.whenDefined(this.input.localName); 38 + await customElements.whenDefined(this.queue.localName); 39 + await customElements.whenDefined(this.repeatShuffle.localName); 40 + this.effect(() => this.monitorActiveQueueItem()); 41 + this.effect(() => this.monitorAudioEnd()); 42 + } 43 + // 🛠️ 44 + async monitorActiveQueueItem() { 45 + const audio = this.audio; 46 + const input = this.input; 47 + const queue = this.queue; 48 + if (!audio) return; 49 + if (!input) return; 50 + if (!queue) return; 51 + const activeItem = queue.now(); 52 + const nextItem = queue.future()[0] ?? null; 53 + const tracks = this.output?.tracks.collection(); 54 + const activeTrack = activeItem ? tracks?.find((t) => t.id === activeItem.id) : void 0; 55 + const nextTrack = nextItem ? tracks?.find((t) => t.id === nextItem.id) : void 0; 56 + if (await this.isLeader() === false) return; 57 + const isPlaying = untracked(audio.isPlaying); 58 + const resolvedUri = activeTrack ? await input.resolve({ method: "GET", uri: activeTrack.uri }) : void 0; 59 + if (resolvedUri && "stream" in resolvedUri) { 60 + throw new Error("Streams are not supported yet."); 61 + } 62 + const url = resolvedUri?.url; 63 + if (queue.now?.()?.id !== activeItem?.id) return; 64 + const activeAudio = activeItem && url ? [{ id: activeItem.id, isPreload: false, url }] : []; 65 + audio.supply({ 66 + audio: activeAudio, 67 + play: activeItem && isPlaying ? { audioId: activeItem.id } : void 0 68 + }); 69 + clearTimeout(this._preloadTimeout); 70 + if (!nextTrack) return; 71 + this._preloadTimeout = setTimeout(async () => { 72 + const resolvedNextUri = await input.resolve({ 73 + method: "GET", 74 + uri: nextTrack.uri 75 + }); 76 + const nextUrl = resolvedNextUri && !("stream" in resolvedNextUri) ? resolvedNextUri.url : void 0; 77 + if (!nextUrl) return; 78 + audio.supply({ 79 + audio: [...activeAudio, { 80 + id: nextItem.id, 81 + isPreload: true, 82 + url: nextUrl 83 + }] 84 + }); 85 + }, 3e4); 86 + } 87 + async monitorAudioEnd() { 88 + if (!this.audio) return; 89 + if (!this.queue) return; 90 + const now = this.queue.now(); 91 + const aud = now ? this.audio.state(now.id) : void 0; 92 + if (aud?.hasEnded() && await this.isLeader()) { 93 + if (this.repeatShuffle?.repeat()) { 94 + const now2 = this.queue.now(); 95 + if (now2) { 96 + await this.queue.add({ 97 + inFront: true, 98 + trackIds: [now2.id] 99 + }); 100 + } 101 + } 102 + await this.queue.shift(); 103 + } 104 + } 105 + }; 106 + var element_default = QueueAudioOrchestrator; 107 + var CLASS = QueueAudioOrchestrator; 108 + var NAME = "do-queue-audio"; 109 + customElements.define(NAME, QueueAudioOrchestrator); 110 + 111 + export { 112 + element_default, 113 + CLASS, 114 + NAME 115 + }; 116 + 117 + //# sourceMappingURL=./chunk-FQ7GPRG2.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FQ7GPRG2.js.map
··· 1 + {"version":3,"sources":["/components/orchestrator/queue-audio/element.js"],"sourcesContent":["import { BroadcastableDiffuseElement, query } from \"~/common/element.js\";\nimport { untracked } from \"~/common/signal.js\";\n\n/**\n * @import {InputElement} from \"~/components/input/types.d.ts\"\n * @import {OutputElement} from \"~/components/output/types.d.ts\"\n * @import RepeatShuffleEngine from \"~/components/engine/repeat-shuffle/element.js\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * When the active queue item changes,\n * coordinate the audio engine accordingly.\n *\n * Vice versa, when the audio ends,\n * shift the queue if needed.\n */\nclass QueueAudioOrchestrator extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/orchestrator/queue-audio\";\n\n // LIFE CYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n this.broadcast(this.identifier, {});\n }\n\n // Super\n super.connectedCallback();\n\n /** @type {import(\"~/components/engine/audio/element.js\").CLASS} */\n this.audio = query(this, \"audio-engine-selector\");\n\n /** @type {InputElement} */\n this.input = query(this, \"input-selector\");\n\n /** @type {OutputElement} */\n this.output = query(this, \"output-selector\");\n\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS} */\n this.queue = query(this, \"queue-engine-selector\");\n\n /** @type {RepeatShuffleEngine} */\n this.repeatShuffle = query(this, \"repeat-shuffle-engine-selector\");\n\n // Wait until defined\n await customElements.whenDefined(this.audio.localName);\n await customElements.whenDefined(this.input.localName);\n await customElements.whenDefined(this.queue.localName);\n await customElements.whenDefined(this.repeatShuffle.localName);\n\n // Effects\n this.effect(() => this.monitorActiveQueueItem());\n this.effect(() => this.monitorAudioEnd());\n }\n\n // 🛠️\n\n async monitorActiveQueueItem() {\n const audio = this.audio;\n const input = this.input;\n const queue = this.queue;\n\n if (!audio) return;\n if (!input) return;\n if (!queue) return;\n\n const activeItem = queue.now();\n const nextItem = queue.future()[0] ?? null;\n\n const tracks = this.output?.tracks.collection();\n const activeTrack = activeItem\n ? tracks?.find((t) => t.id === activeItem.id)\n : undefined;\n const nextTrack = nextItem\n ? tracks?.find((t) => t.id === nextItem.id)\n : undefined;\n\n if ((await this.isLeader()) === false) return;\n\n const isPlaying = untracked(audio.isPlaying);\n\n // Resolve active URI\n const resolvedUri = activeTrack\n ? await input.resolve({ method: \"GET\", uri: activeTrack.uri })\n : undefined;\n\n if (resolvedUri && \"stream\" in resolvedUri) {\n throw new Error(\"Streams are not supported yet.\");\n }\n\n const url = resolvedUri?.url;\n\n // Check if we still need to render\n if (queue.now?.()?.id !== activeItem?.id) return;\n\n // Supply active track immediately\n // TODO: Take URL expiration timestamp into account\n const activeAudio = activeItem && url\n ? [{ id: activeItem.id, isPreload: false, url }]\n : [];\n audio.supply({\n audio: activeAudio,\n play: activeItem && isPlaying ? { audioId: activeItem.id } : undefined,\n });\n\n // Preload next track after a delay\n clearTimeout(this._preloadTimeout);\n if (!nextTrack) return;\n\n this._preloadTimeout = setTimeout(async () => {\n const resolvedNextUri = await input.resolve({\n method: \"GET\",\n uri: nextTrack.uri,\n });\n const nextUrl = resolvedNextUri && !(\"stream\" in resolvedNextUri)\n ? resolvedNextUri.url\n : undefined;\n if (!nextUrl) return;\n\n audio.supply({\n audio: [...activeAudio, {\n id: nextItem.id,\n isPreload: true,\n url: nextUrl,\n }],\n });\n }, 30_000);\n }\n\n async monitorAudioEnd() {\n if (!this.audio) return;\n if (!this.queue) return;\n\n const now = this.queue.now();\n const aud = now ? this.audio.state(now.id) : undefined;\n\n if (aud?.hasEnded() && (await this.isLeader())) {\n // TODO: Not sure yet if this is the best way to approach this.\n // The idea is that scrobblers would more easily pick this up,\n // as opposed to just resetting the audio.\n if (this.repeatShuffle?.repeat()) {\n const now = this.queue.now();\n if (now) {\n await this.queue.add({\n inFront: true,\n trackIds: [now.id],\n });\n }\n }\n\n await this.queue.shift();\n }\n }\n}\n\nexport default QueueAudioOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = QueueAudioOrchestrator;\nexport const NAME = \"do-queue-audio\";\n\ncustomElements.define(NAME, QueueAudioOrchestrator);\n"],"mappings":"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","names":["now"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-FQ7GPRG2.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FVLUJBZP.js
··· 1 + ../bafybeicokklzc7qrdyz7qaho5jskzgdhzi7o2ihwvbbalw6c5p75fsyfie/chunk-FVLUJBZP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FVLUJBZP.js.map
··· 1 + ../bafybeicokklzc7qrdyz7qaho5jskzgdhzi7o2ihwvbbalw6c5p75fsyfie/chunk-FVLUJBZP.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FZQXS3RE.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-FZQXS3RE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-FZQXS3RE.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-FZQXS3RE.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-G56PUJUJ.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-G56PUJUJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-G56PUJUJ.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-G56PUJUJ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-H3WG7GN4.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-H3WG7GN4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-H3WG7GN4.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-H3WG7GN4.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-H7PU7XY7.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-H7PU7XY7.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-H7PU7XY7.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-H7PU7XY7.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HDE6FJCN.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-HDE6FJCN.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HDE6FJCN.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-HDE6FJCN.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HMBZONBJ.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-HMBZONBJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HMBZONBJ.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-HMBZONBJ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HN4F5JEZ.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-HN4F5JEZ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HN4F5JEZ.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/chunk-HN4F5JEZ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HNJPKCUJ.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-HNJPKCUJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HNJPKCUJ.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-HNJPKCUJ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HWZ43NE5.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-HWZ43NE5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-HWZ43NE5.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-HWZ43NE5.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-I3VKG3ZJ.js
··· 1 + ../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/chunk-I3VKG3ZJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-I3VKG3ZJ.js.map
··· 1 + ../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/chunk-I3VKG3ZJ.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-I6QTRLUQ.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-I6QTRLUQ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-I6QTRLUQ.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-I6QTRLUQ.js.map
+77
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-IKAIRC6G.js
··· 1 + import { 2 + OutputTransformer 3 + } from "./chunk-2PHQN23Z.js"; 4 + import { 5 + computed 6 + } from "./chunk-HNJPKCUJ.js"; 7 + import { 8 + __name, 9 + init_Buffer, 10 + init_process 11 + } from "./chunk-FZQXS3RE.js"; 12 + 13 + // components/transformer/output/refiner/default/element.js 14 + init_Buffer(); 15 + init_process(); 16 + var DefaultOutputRefinerTransformer = class extends OutputTransformer { 17 + static { 18 + __name(this, "DefaultOutputRefinerTransformer"); 19 + } 20 + constructor() { 21 + super(); 22 + const base = this.base(); 23 + const manager = { 24 + facets: { 25 + ...base.facets, 26 + collection: computed(() => { 27 + return base.facets.collection() ?? []; 28 + }) 29 + }, 30 + playlistItems: { 31 + ...base.playlistItems, 32 + collection: computed(() => { 33 + return base.playlistItems.collection() ?? []; 34 + }), 35 + save: /* @__PURE__ */ __name(async (newPlaylists) => { 36 + const filtered = newPlaylists.filter((p) => !p.ephemeral); 37 + await base.playlistItems.save(filtered); 38 + }, "save") 39 + }, 40 + themes: { 41 + ...base.themes, 42 + collection: computed(() => { 43 + return base.themes.collection() ?? []; 44 + }) 45 + }, 46 + tracks: { 47 + ...base.tracks, 48 + collection: computed(() => { 49 + return base.tracks.collection() ?? []; 50 + }), 51 + save: /* @__PURE__ */ __name(async (newTracks) => { 52 + const filtered = newTracks.filter((t) => !t.ephemeral); 53 + await base.tracks.save(filtered); 54 + }, "save") 55 + }, 56 + // Other 57 + ready: base.ready 58 + }; 59 + this.facets = manager.facets; 60 + this.playlistItems = manager.playlistItems; 61 + this.themes = manager.themes; 62 + this.tracks = manager.tracks; 63 + this.ready = manager.ready; 64 + } 65 + }; 66 + var element_default = DefaultOutputRefinerTransformer; 67 + var CLASS = DefaultOutputRefinerTransformer; 68 + var NAME = "dtor-default"; 69 + customElements.define(NAME, CLASS); 70 + 71 + export { 72 + element_default, 73 + CLASS, 74 + NAME 75 + }; 76 + 77 + //# sourceMappingURL=./chunk-IKAIRC6G.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-IKAIRC6G.js.map
··· 1 + {"version":3,"sources":["/components/transformer/output/refiner/default/element.js"],"sourcesContent":["import { computed } from \"~/common/signal.js\";\nimport { OutputTransformer } from \"../../base.js\";\n\n/**\n * @import { OutputManagerDeputy } from \"../../../../output/types.d.ts\"\n */\n\n/**\n * @extends {OutputTransformer}\n */\nclass DefaultOutputRefinerTransformer extends OutputTransformer {\n constructor() {\n super();\n\n const base = this.base();\n\n /** @type {OutputManagerDeputy} */\n const manager = {\n facets: {\n ...base.facets,\n collection: computed(() => {\n return base.facets.collection() ?? [];\n }),\n },\n playlistItems: {\n ...base.playlistItems,\n collection: computed(() => {\n return base.playlistItems.collection() ?? [];\n }),\n save: async (newPlaylists) => {\n const filtered = newPlaylists.filter((p) => !p.ephemeral);\n await base.playlistItems.save(filtered);\n },\n },\n themes: {\n ...base.themes,\n collection: computed(() => {\n return base.themes.collection() ?? [];\n }),\n },\n tracks: {\n ...base.tracks,\n collection: computed(() => {\n return base.tracks.collection() ?? [];\n }),\n save: async (newTracks) => {\n const filtered = newTracks.filter((t) => !t.ephemeral);\n await base.tracks.save(filtered);\n },\n },\n\n // Other\n ready: base.ready,\n };\n\n // Assign manager properties to class\n this.facets = manager.facets;\n this.playlistItems = manager.playlistItems;\n this.themes = manager.themes;\n this.tracks = manager.tracks;\n this.ready = manager.ready;\n }\n}\n\nexport default DefaultOutputRefinerTransformer;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = DefaultOutputRefinerTransformer;\nexport const NAME = \"dtor-default\";\n\ncustomElements.define(NAME, CLASS);\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;AAUA,IAAM,kCAAN,cAA8C,kBAAkB;AAAA,EAVhE,OAUgE;AAAA;AAAA;AAAA,EAC9D,cAAc;AACZ,UAAM;AAEN,UAAM,OAAO,KAAK,KAAK;AAGvB,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,QACN,GAAG,KAAK;AAAA,QACR,YAAY,SAAS,MAAM;AACzB,iBAAO,KAAK,OAAO,WAAW,KAAK,CAAC;AAAA,QACtC,CAAC;AAAA,MACH;AAAA,MACA,eAAe;AAAA,QACb,GAAG,KAAK;AAAA,QACR,YAAY,SAAS,MAAM;AACzB,iBAAO,KAAK,cAAc,WAAW,KAAK,CAAC;AAAA,QAC7C,CAAC;AAAA,QACD,MAAM,8BAAO,iBAAiB;AAC5B,gBAAM,WAAW,aAAa,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS;AACxD,gBAAM,KAAK,cAAc,KAAK,QAAQ;AAAA,QACxC,GAHM;AAAA,MAIR;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,KAAK;AAAA,QACR,YAAY,SAAS,MAAM;AACzB,iBAAO,KAAK,OAAO,WAAW,KAAK,CAAC;AAAA,QACtC,CAAC;AAAA,MACH;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,KAAK;AAAA,QACR,YAAY,SAAS,MAAM;AACzB,iBAAO,KAAK,OAAO,WAAW,KAAK,CAAC;AAAA,QACtC,CAAC;AAAA,QACD,MAAM,8BAAO,cAAc;AACzB,gBAAM,WAAW,UAAU,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS;AACrD,gBAAM,KAAK,OAAO,KAAK,QAAQ;AAAA,QACjC,GAHM;AAAA,MAIR;AAAA;AAAA,MAGA,OAAO,KAAK;AAAA,IACd;AAGA,SAAK,SAAS,QAAQ;AACtB,SAAK,gBAAgB,QAAQ;AAC7B,SAAK,SAAS,QAAQ;AACtB,SAAK,SAAS,QAAQ;AACtB,SAAK,QAAQ,QAAQ;AAAA,EACvB;AACF;AAEA,IAAO,kBAAQ;AAMR,IAAM,QAAQ;AACd,IAAM,OAAO;AAEpB,eAAe,OAAO,MAAM,KAAK;","names":[],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-IKAIRC6G.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-IYNRCNPM.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-IYNRCNPM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-IYNRCNPM.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-IYNRCNPM.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-IZ2NFQMF.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-IZ2NFQMF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-IZ2NFQMF.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-IZ2NFQMF.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-J67JY2AB.js
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-J67JY2AB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-J67JY2AB.js.map
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-J67JY2AB.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JBHW662S.js
··· 1 + ../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/chunk-JBHW662S.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JBHW662S.js.map
··· 1 + ../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/chunk-JBHW662S.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JDKXATSY.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-JDKXATSY.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JDKXATSY.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-JDKXATSY.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JR4EW3HT.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-JR4EW3HT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JR4EW3HT.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-JR4EW3HT.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JUFQHHNP.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-JUFQHHNP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JUFQHHNP.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-JUFQHHNP.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JZMTETBD.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-JZMTETBD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-JZMTETBD.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-JZMTETBD.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-K2DJHH2G.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-K2DJHH2G.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-K2DJHH2G.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-K2DJHH2G.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-K4XAE7PE.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-K4XAE7PE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-K4XAE7PE.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-K4XAE7PE.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-K7SSDEZF.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-K7SSDEZF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-K7SSDEZF.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-K7SSDEZF.js.map
+5101
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-MIYY7OUT.js
··· 1 + import { 2 + hasID3v1Header 3 + } from "./chunk-7BHFTEJL.js"; 4 + import { 5 + APEv2Parser 6 + } from "./chunk-SVYFDHZC.js"; 7 + import { 8 + LyricsContentType, 9 + TimestampFormat 10 + } from "./chunk-3IXJYTB6.js"; 11 + import { 12 + decodeString, 13 + getUintBE, 14 + toRatio 15 + } from "./chunk-J67JY2AB.js"; 16 + import { 17 + TrackType, 18 + TrackTypeValueToKeyMap 19 + } from "./chunk-YEYOLW6N.js"; 20 + import { 21 + AbstractTokenizer, 22 + EndOfStreamError, 23 + fromBlob, 24 + fromBuffer, 25 + fromWebStream, 26 + open2 27 + } from "./chunk-CMU4QLMC.js"; 28 + import { 29 + CouldNotDetermineFileTypeError, 30 + INT32_BE, 31 + InternalParserError, 32 + StringType, 33 + UINT16_BE, 34 + UINT16_LE, 35 + UINT32_BE, 36 + UINT32_LE, 37 + UINT64_LE, 38 + UINT8, 39 + UnsupportedFileTypeError, 40 + require_src, 41 + textDecode 42 + } from "./chunk-F27JDJI2.js"; 43 + import { 44 + removeUndefinedValuesFromRecord 45 + } from "./chunk-3USAPKOY.js"; 46 + import { 47 + require_fast_uri 48 + } from "./chunk-SGR5ST3A.js"; 49 + import { 50 + __commonJS, 51 + __name, 52 + __toESM, 53 + init_Buffer, 54 + init_process 55 + } from "./chunk-FZQXS3RE.js"; 56 + 57 + // ../node_modules/.deno/content-type@1.0.5/node_modules/content-type/index.js 58 + var require_content_type = __commonJS({ 59 + "../node_modules/.deno/content-type@1.0.5/node_modules/content-type/index.js"(exports) { 60 + "use strict"; 61 + init_Buffer(); 62 + init_process(); 63 + var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g; 64 + var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/; 65 + var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; 66 + var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g; 67 + var QUOTE_REGEXP = /([\\"])/g; 68 + var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; 69 + exports.format = format; 70 + exports.parse = parse2; 71 + function format(obj) { 72 + if (!obj || typeof obj !== "object") { 73 + throw new TypeError("argument obj is required"); 74 + } 75 + var parameters = obj.parameters; 76 + var type = obj.type; 77 + if (!type || !TYPE_REGEXP.test(type)) { 78 + throw new TypeError("invalid type"); 79 + } 80 + var string = type; 81 + if (parameters && typeof parameters === "object") { 82 + var param; 83 + var params = Object.keys(parameters).sort(); 84 + for (var i = 0; i < params.length; i++) { 85 + param = params[i]; 86 + if (!TOKEN_REGEXP.test(param)) { 87 + throw new TypeError("invalid parameter name"); 88 + } 89 + string += "; " + param + "=" + qstring(parameters[param]); 90 + } 91 + } 92 + return string; 93 + } 94 + __name(format, "format"); 95 + function parse2(string) { 96 + if (!string) { 97 + throw new TypeError("argument string is required"); 98 + } 99 + var header = typeof string === "object" ? getcontenttype(string) : string; 100 + if (typeof header !== "string") { 101 + throw new TypeError("argument string is required to be a string"); 102 + } 103 + var index = header.indexOf(";"); 104 + var type = index !== -1 ? header.slice(0, index).trim() : header.trim(); 105 + if (!TYPE_REGEXP.test(type)) { 106 + throw new TypeError("invalid media type"); 107 + } 108 + var obj = new ContentType2(type.toLowerCase()); 109 + if (index !== -1) { 110 + var key; 111 + var match; 112 + var value; 113 + PARAM_REGEXP.lastIndex = index; 114 + while (match = PARAM_REGEXP.exec(header)) { 115 + if (match.index !== index) { 116 + throw new TypeError("invalid parameter format"); 117 + } 118 + index += match[0].length; 119 + key = match[1].toLowerCase(); 120 + value = match[2]; 121 + if (value.charCodeAt(0) === 34) { 122 + value = value.slice(1, -1); 123 + if (value.indexOf("\\") !== -1) { 124 + value = value.replace(QESC_REGEXP, "$1"); 125 + } 126 + } 127 + obj.parameters[key] = value; 128 + } 129 + if (index !== header.length) { 130 + throw new TypeError("invalid parameter format"); 131 + } 132 + } 133 + return obj; 134 + } 135 + __name(parse2, "parse"); 136 + function getcontenttype(obj) { 137 + var header; 138 + if (typeof obj.getHeader === "function") { 139 + header = obj.getHeader("content-type"); 140 + } else if (typeof obj.headers === "object") { 141 + header = obj.headers && obj.headers["content-type"]; 142 + } 143 + if (typeof header !== "string") { 144 + throw new TypeError("content-type header is missing from object"); 145 + } 146 + return header; 147 + } 148 + __name(getcontenttype, "getcontenttype"); 149 + function qstring(val) { 150 + var str = String(val); 151 + if (TOKEN_REGEXP.test(str)) { 152 + return str; 153 + } 154 + if (str.length > 0 && !TEXT_REGEXP.test(str)) { 155 + throw new TypeError("invalid parameter value"); 156 + } 157 + return '"' + str.replace(QUOTE_REGEXP, "\\$1") + '"'; 158 + } 159 + __name(qstring, "qstring"); 160 + function ContentType2(type) { 161 + this.parameters = /* @__PURE__ */ Object.create(null); 162 + this.type = type; 163 + } 164 + __name(ContentType2, "ContentType"); 165 + } 166 + }); 167 + 168 + // ../node_modules/.deno/media-typer@1.1.0/node_modules/media-typer/index.js 169 + var require_media_typer = __commonJS({ 170 + "../node_modules/.deno/media-typer@1.1.0/node_modules/media-typer/index.js"(exports) { 171 + "use strict"; 172 + init_Buffer(); 173 + init_process(); 174 + var SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; 175 + var TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; 176 + var TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; 177 + exports.format = format; 178 + exports.parse = parse2; 179 + exports.test = test; 180 + function format(obj) { 181 + if (!obj || typeof obj !== "object") { 182 + throw new TypeError("argument obj is required"); 183 + } 184 + var subtype = obj.subtype; 185 + var suffix = obj.suffix; 186 + var type = obj.type; 187 + if (!type || !TYPE_NAME_REGEXP.test(type)) { 188 + throw new TypeError("invalid type"); 189 + } 190 + if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) { 191 + throw new TypeError("invalid subtype"); 192 + } 193 + var string = type + "/" + subtype; 194 + if (suffix) { 195 + if (!TYPE_NAME_REGEXP.test(suffix)) { 196 + throw new TypeError("invalid suffix"); 197 + } 198 + string += "+" + suffix; 199 + } 200 + return string; 201 + } 202 + __name(format, "format"); 203 + function test(string) { 204 + if (!string) { 205 + throw new TypeError("argument string is required"); 206 + } 207 + if (typeof string !== "string") { 208 + throw new TypeError("argument string is required to be a string"); 209 + } 210 + return TYPE_REGEXP.test(string.toLowerCase()); 211 + } 212 + __name(test, "test"); 213 + function parse2(string) { 214 + if (!string) { 215 + throw new TypeError("argument string is required"); 216 + } 217 + if (typeof string !== "string") { 218 + throw new TypeError("argument string is required to be a string"); 219 + } 220 + var match = TYPE_REGEXP.exec(string.toLowerCase()); 221 + if (!match) { 222 + throw new TypeError("invalid media type"); 223 + } 224 + var type = match[1]; 225 + var subtype = match[2]; 226 + var suffix; 227 + var index = subtype.lastIndexOf("+"); 228 + if (index !== -1) { 229 + suffix = subtype.substr(index + 1); 230 + subtype = subtype.substr(0, index); 231 + } 232 + return new MediaType(type, subtype, suffix); 233 + } 234 + __name(parse2, "parse"); 235 + function MediaType(type, subtype, suffix) { 236 + this.type = type; 237 + this.subtype = subtype; 238 + this.suffix = suffix; 239 + } 240 + __name(MediaType, "MediaType"); 241 + } 242 + }); 243 + 244 + // components/processor/metadata/common.js 245 + init_Buffer(); 246 + init_process(); 247 + 248 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/index.js 249 + init_Buffer(); 250 + init_process(); 251 + var import_debug4 = __toESM(require_src()); 252 + 253 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/core.js 254 + init_Buffer(); 255 + init_process(); 256 + 257 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ParserFactory.js 258 + init_Buffer(); 259 + init_process(); 260 + 261 + // ../node_modules/.deno/file-type@21.3.0/node_modules/file-type/index.js 262 + init_Buffer(); 263 + init_process(); 264 + 265 + // ../node_modules/.deno/file-type@21.3.0/node_modules/file-type/core.js 266 + init_Buffer(); 267 + init_process(); 268 + 269 + // ../node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/index.js 270 + init_Buffer(); 271 + init_process(); 272 + 273 + // ../node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js 274 + init_Buffer(); 275 + init_process(); 276 + var import_debug = __toESM(require_src()); 277 + 278 + // ../node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipToken.js 279 + init_Buffer(); 280 + init_process(); 281 + var Signature = { 282 + LocalFileHeader: 67324752, 283 + DataDescriptor: 134695760, 284 + CentralFileHeader: 33639248, 285 + EndOfCentralDirectory: 101010256 286 + }; 287 + var DataDescriptor = { 288 + get(array) { 289 + return { 290 + signature: UINT32_LE.get(array, 0), 291 + compressedSize: UINT32_LE.get(array, 8), 292 + uncompressedSize: UINT32_LE.get(array, 12) 293 + }; 294 + }, 295 + len: 16 296 + }; 297 + var LocalFileHeaderToken = { 298 + get(array) { 299 + const flags = UINT16_LE.get(array, 6); 300 + return { 301 + signature: UINT32_LE.get(array, 0), 302 + minVersion: UINT16_LE.get(array, 4), 303 + dataDescriptor: !!(flags & 8), 304 + compressedMethod: UINT16_LE.get(array, 8), 305 + compressedSize: UINT32_LE.get(array, 18), 306 + uncompressedSize: UINT32_LE.get(array, 22), 307 + filenameLength: UINT16_LE.get(array, 26), 308 + extraFieldLength: UINT16_LE.get(array, 28), 309 + filename: null 310 + }; 311 + }, 312 + len: 30 313 + }; 314 + var EndOfCentralDirectoryRecordToken = { 315 + get(array) { 316 + return { 317 + signature: UINT32_LE.get(array, 0), 318 + nrOfThisDisk: UINT16_LE.get(array, 4), 319 + nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6), 320 + nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8), 321 + nrOfEntriesOfSize: UINT16_LE.get(array, 10), 322 + sizeOfCd: UINT32_LE.get(array, 12), 323 + offsetOfStartOfCd: UINT32_LE.get(array, 16), 324 + zipFileCommentLength: UINT16_LE.get(array, 20) 325 + }; 326 + }, 327 + len: 22 328 + }; 329 + var FileHeader = { 330 + get(array) { 331 + const flags = UINT16_LE.get(array, 8); 332 + return { 333 + signature: UINT32_LE.get(array, 0), 334 + minVersion: UINT16_LE.get(array, 6), 335 + dataDescriptor: !!(flags & 8), 336 + compressedMethod: UINT16_LE.get(array, 10), 337 + compressedSize: UINT32_LE.get(array, 20), 338 + uncompressedSize: UINT32_LE.get(array, 24), 339 + filenameLength: UINT16_LE.get(array, 28), 340 + extraFieldLength: UINT16_LE.get(array, 30), 341 + fileCommentLength: UINT16_LE.get(array, 32), 342 + relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42), 343 + filename: null 344 + }; 345 + }, 346 + len: 46 347 + }; 348 + 349 + // ../node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js 350 + function signatureToArray(signature) { 351 + const signatureBytes = new Uint8Array(UINT32_LE.len); 352 + UINT32_LE.put(signatureBytes, 0, signature); 353 + return signatureBytes; 354 + } 355 + __name(signatureToArray, "signatureToArray"); 356 + var debug = (0, import_debug.default)("tokenizer:inflate"); 357 + var syncBufferSize = 256 * 1024; 358 + var ddSignatureArray = signatureToArray(Signature.DataDescriptor); 359 + var eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory); 360 + var ZipHandler = class _ZipHandler { 361 + static { 362 + __name(this, "ZipHandler"); 363 + } 364 + constructor(tokenizer3) { 365 + this.tokenizer = tokenizer3; 366 + this.syncBuffer = new Uint8Array(syncBufferSize); 367 + } 368 + async isZip() { 369 + return await this.peekSignature() === Signature.LocalFileHeader; 370 + } 371 + peekSignature() { 372 + return this.tokenizer.peekToken(UINT32_LE); 373 + } 374 + async findEndOfCentralDirectoryLocator() { 375 + const randomReadTokenizer = this.tokenizer; 376 + const chunkLength = Math.min(16 * 1024, randomReadTokenizer.fileInfo.size); 377 + const buffer = this.syncBuffer.subarray(0, chunkLength); 378 + await this.tokenizer.readBuffer(buffer, { position: randomReadTokenizer.fileInfo.size - chunkLength }); 379 + for (let i = buffer.length - 4; i >= 0; i--) { 380 + if (buffer[i] === eocdSignatureBytes[0] && buffer[i + 1] === eocdSignatureBytes[1] && buffer[i + 2] === eocdSignatureBytes[2] && buffer[i + 3] === eocdSignatureBytes[3]) { 381 + return randomReadTokenizer.fileInfo.size - chunkLength + i; 382 + } 383 + } 384 + return -1; 385 + } 386 + async readCentralDirectory() { 387 + if (!this.tokenizer.supportsRandomAccess()) { 388 + debug("Cannot reading central-directory without random-read support"); 389 + return; 390 + } 391 + debug("Reading central-directory..."); 392 + const pos = this.tokenizer.position; 393 + const offset = await this.findEndOfCentralDirectoryLocator(); 394 + if (offset > 0) { 395 + debug("Central-directory 32-bit signature found"); 396 + const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset); 397 + const files = []; 398 + this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd); 399 + for (let n = 0; n < eocdHeader.nrOfEntriesOfSize; ++n) { 400 + const entry = await this.tokenizer.readToken(FileHeader); 401 + if (entry.signature !== Signature.CentralFileHeader) { 402 + throw new Error("Expected Central-File-Header signature"); 403 + } 404 + entry.filename = await this.tokenizer.readToken(new StringType(entry.filenameLength, "utf-8")); 405 + await this.tokenizer.ignore(entry.extraFieldLength); 406 + await this.tokenizer.ignore(entry.fileCommentLength); 407 + files.push(entry); 408 + debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`); 409 + } 410 + this.tokenizer.setPosition(pos); 411 + return files; 412 + } 413 + this.tokenizer.setPosition(pos); 414 + } 415 + async unzip(fileCb) { 416 + const entries = await this.readCentralDirectory(); 417 + if (entries) { 418 + return this.iterateOverCentralDirectory(entries, fileCb); 419 + } 420 + let stop = false; 421 + do { 422 + const zipHeader = await this.readLocalFileHeader(); 423 + if (!zipHeader) 424 + break; 425 + const next = fileCb(zipHeader); 426 + stop = !!next.stop; 427 + let fileData; 428 + await this.tokenizer.ignore(zipHeader.extraFieldLength); 429 + if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) { 430 + const chunks = []; 431 + let len = syncBufferSize; 432 + debug("Compressed-file-size unknown, scanning for next data-descriptor-signature...."); 433 + let nextHeaderIndex = -1; 434 + while (nextHeaderIndex < 0 && len === syncBufferSize) { 435 + len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true }); 436 + nextHeaderIndex = indexOf(this.syncBuffer.subarray(0, len), ddSignatureArray); 437 + const size = nextHeaderIndex >= 0 ? nextHeaderIndex : len; 438 + if (next.handler) { 439 + const data = new Uint8Array(size); 440 + await this.tokenizer.readBuffer(data); 441 + chunks.push(data); 442 + } else { 443 + await this.tokenizer.ignore(size); 444 + } 445 + } 446 + debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`); 447 + if (next.handler) { 448 + await this.inflate(zipHeader, mergeArrays(chunks), next.handler); 449 + } 450 + } else { 451 + if (next.handler) { 452 + debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`); 453 + fileData = new Uint8Array(zipHeader.compressedSize); 454 + await this.tokenizer.readBuffer(fileData); 455 + await this.inflate(zipHeader, fileData, next.handler); 456 + } else { 457 + debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`); 458 + await this.tokenizer.ignore(zipHeader.compressedSize); 459 + } 460 + } 461 + debug(`Reading data-descriptor at pos=${this.tokenizer.position}`); 462 + if (zipHeader.dataDescriptor) { 463 + const dataDescriptor = await this.tokenizer.readToken(DataDescriptor); 464 + if (dataDescriptor.signature !== 134695760) { 465 + throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - DataDescriptor.len}`); 466 + } 467 + } 468 + } while (!stop); 469 + } 470 + async iterateOverCentralDirectory(entries, fileCb) { 471 + for (const fileHeader of entries) { 472 + const next = fileCb(fileHeader); 473 + if (next.handler) { 474 + this.tokenizer.setPosition(fileHeader.relativeOffsetOfLocalHeader); 475 + const zipHeader = await this.readLocalFileHeader(); 476 + if (zipHeader) { 477 + await this.tokenizer.ignore(zipHeader.extraFieldLength); 478 + const fileData = new Uint8Array(fileHeader.compressedSize); 479 + await this.tokenizer.readBuffer(fileData); 480 + await this.inflate(zipHeader, fileData, next.handler); 481 + } 482 + } 483 + if (next.stop) 484 + break; 485 + } 486 + } 487 + async inflate(zipHeader, fileData, cb) { 488 + if (zipHeader.compressedMethod === 0) { 489 + return cb(fileData); 490 + } 491 + if (zipHeader.compressedMethod !== 8) { 492 + throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`); 493 + } 494 + debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`); 495 + const uncompressedData = await _ZipHandler.decompressDeflateRaw(fileData); 496 + return cb(uncompressedData); 497 + } 498 + static async decompressDeflateRaw(data) { 499 + const input = new ReadableStream({ 500 + start(controller) { 501 + controller.enqueue(data); 502 + controller.close(); 503 + } 504 + }); 505 + const ds = new DecompressionStream("deflate-raw"); 506 + const output = input.pipeThrough(ds); 507 + try { 508 + const response = new Response(output); 509 + const buffer = await response.arrayBuffer(); 510 + return new Uint8Array(buffer); 511 + } catch (err) { 512 + const message = err instanceof Error ? `Failed to deflate ZIP entry: ${err.message}` : "Unknown decompression error in ZIP entry"; 513 + throw new TypeError(message); 514 + } 515 + } 516 + async readLocalFileHeader() { 517 + const signature = await this.tokenizer.peekToken(UINT32_LE); 518 + if (signature === Signature.LocalFileHeader) { 519 + const header = await this.tokenizer.readToken(LocalFileHeaderToken); 520 + header.filename = await this.tokenizer.readToken(new StringType(header.filenameLength, "utf-8")); 521 + return header; 522 + } 523 + if (signature === Signature.CentralFileHeader) { 524 + return false; 525 + } 526 + if (signature === 3759263696) { 527 + throw new Error("Encrypted ZIP"); 528 + } 529 + throw new Error("Unexpected signature"); 530 + } 531 + }; 532 + function indexOf(buffer, portion) { 533 + const bufferLength = buffer.length; 534 + const portionLength = portion.length; 535 + if (portionLength > bufferLength) 536 + return -1; 537 + for (let i = 0; i <= bufferLength - portionLength; i++) { 538 + let found = true; 539 + for (let j = 0; j < portionLength; j++) { 540 + if (buffer[i + j] !== portion[j]) { 541 + found = false; 542 + break; 543 + } 544 + } 545 + if (found) { 546 + return i; 547 + } 548 + } 549 + return -1; 550 + } 551 + __name(indexOf, "indexOf"); 552 + function mergeArrays(chunks) { 553 + const totalLength = chunks.reduce((acc, curr) => acc + curr.length, 0); 554 + const mergedArray = new Uint8Array(totalLength); 555 + let offset = 0; 556 + for (const chunk of chunks) { 557 + mergedArray.set(chunk, offset); 558 + offset += chunk.length; 559 + } 560 + return mergedArray; 561 + } 562 + __name(mergeArrays, "mergeArrays"); 563 + 564 + // ../node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/GzipHandler.js 565 + init_Buffer(); 566 + init_process(); 567 + var GzipHandler = class { 568 + static { 569 + __name(this, "GzipHandler"); 570 + } 571 + constructor(tokenizer3) { 572 + this.tokenizer = tokenizer3; 573 + } 574 + inflate() { 575 + const tokenizer3 = this.tokenizer; 576 + return new ReadableStream({ 577 + async pull(controller) { 578 + const buffer = new Uint8Array(1024); 579 + const size = await tokenizer3.readBuffer(buffer, { mayBeLess: true }); 580 + if (size === 0) { 581 + controller.close(); 582 + return; 583 + } 584 + controller.enqueue(buffer.subarray(0, size)); 585 + } 586 + }).pipeThrough(new DecompressionStream("gzip")); 587 + } 588 + }; 589 + 590 + // ../node_modules/.deno/file-type@21.3.0/node_modules/file-type/util.js 591 + init_Buffer(); 592 + init_process(); 593 + function stringToBytes(string, encoding) { 594 + if (encoding === "utf-16le") { 595 + const bytes = []; 596 + for (let index = 0; index < string.length; index++) { 597 + const code = string.charCodeAt(index); 598 + bytes.push(code & 255, code >> 8 & 255); 599 + } 600 + return bytes; 601 + } 602 + if (encoding === "utf-16be") { 603 + const bytes = []; 604 + for (let index = 0; index < string.length; index++) { 605 + const code = string.charCodeAt(index); 606 + bytes.push(code >> 8 & 255, code & 255); 607 + } 608 + return bytes; 609 + } 610 + return [...string].map((character) => character.charCodeAt(0)); 611 + } 612 + __name(stringToBytes, "stringToBytes"); 613 + function tarHeaderChecksumMatches(arrayBuffer, offset = 0) { 614 + const readSum = Number.parseInt(new StringType(6).get(arrayBuffer, 148).replace(/\0.*$/, "").trim(), 8); 615 + if (Number.isNaN(readSum)) { 616 + return false; 617 + } 618 + let sum = 8 * 32; 619 + for (let index = offset; index < offset + 148; index++) { 620 + sum += arrayBuffer[index]; 621 + } 622 + for (let index = offset + 156; index < offset + 512; index++) { 623 + sum += arrayBuffer[index]; 624 + } 625 + return readSum === sum; 626 + } 627 + __name(tarHeaderChecksumMatches, "tarHeaderChecksumMatches"); 628 + var uint32SyncSafeToken = { 629 + get: /* @__PURE__ */ __name((buffer, offset) => buffer[offset + 3] & 127 | buffer[offset + 2] << 7 | buffer[offset + 1] << 14 | buffer[offset] << 21, "get"), 630 + len: 4 631 + }; 632 + 633 + // ../node_modules/.deno/file-type@21.3.0/node_modules/file-type/supported.js 634 + init_Buffer(); 635 + init_process(); 636 + var extensions = [ 637 + "jpg", 638 + "png", 639 + "apng", 640 + "gif", 641 + "webp", 642 + "flif", 643 + "xcf", 644 + "cr2", 645 + "cr3", 646 + "orf", 647 + "arw", 648 + "dng", 649 + "nef", 650 + "rw2", 651 + "raf", 652 + "tif", 653 + "bmp", 654 + "icns", 655 + "jxr", 656 + "psd", 657 + "indd", 658 + "zip", 659 + "tar", 660 + "rar", 661 + "gz", 662 + "bz2", 663 + "7z", 664 + "dmg", 665 + "mp4", 666 + "mid", 667 + "mkv", 668 + "webm", 669 + "mov", 670 + "avi", 671 + "mpg", 672 + "mp2", 673 + "mp3", 674 + "m4a", 675 + "oga", 676 + "ogg", 677 + "ogv", 678 + "opus", 679 + "flac", 680 + "wav", 681 + "spx", 682 + "amr", 683 + "pdf", 684 + "epub", 685 + "elf", 686 + "macho", 687 + "exe", 688 + "swf", 689 + "rtf", 690 + "wasm", 691 + "woff", 692 + "woff2", 693 + "eot", 694 + "ttf", 695 + "otf", 696 + "ttc", 697 + "ico", 698 + "flv", 699 + "ps", 700 + "xz", 701 + "sqlite", 702 + "nes", 703 + "crx", 704 + "xpi", 705 + "cab", 706 + "deb", 707 + "ar", 708 + "rpm", 709 + "Z", 710 + "lz", 711 + "cfb", 712 + "mxf", 713 + "mts", 714 + "blend", 715 + "bpg", 716 + "docx", 717 + "pptx", 718 + "xlsx", 719 + "3gp", 720 + "3g2", 721 + "j2c", 722 + "jp2", 723 + "jpm", 724 + "jpx", 725 + "mj2", 726 + "aif", 727 + "qcp", 728 + "odt", 729 + "ods", 730 + "odp", 731 + "xml", 732 + "mobi", 733 + "heic", 734 + "cur", 735 + "ktx", 736 + "ape", 737 + "wv", 738 + "dcm", 739 + "ics", 740 + "glb", 741 + "pcap", 742 + "dsf", 743 + "lnk", 744 + "alias", 745 + "voc", 746 + "ac3", 747 + "m4v", 748 + "m4p", 749 + "m4b", 750 + "f4v", 751 + "f4p", 752 + "f4b", 753 + "f4a", 754 + "mie", 755 + "asf", 756 + "ogm", 757 + "ogx", 758 + "mpc", 759 + "arrow", 760 + "shp", 761 + "aac", 762 + "mp1", 763 + "it", 764 + "s3m", 765 + "xm", 766 + "skp", 767 + "avif", 768 + "eps", 769 + "lzh", 770 + "pgp", 771 + "asar", 772 + "stl", 773 + "chm", 774 + "3mf", 775 + "zst", 776 + "jxl", 777 + "vcf", 778 + "jls", 779 + "pst", 780 + "dwg", 781 + "parquet", 782 + "class", 783 + "arj", 784 + "cpio", 785 + "ace", 786 + "avro", 787 + "icc", 788 + "fbx", 789 + "vsdx", 790 + "vtt", 791 + "apk", 792 + "drc", 793 + "lz4", 794 + "potx", 795 + "xltx", 796 + "dotx", 797 + "xltm", 798 + "ott", 799 + "ots", 800 + "otp", 801 + "odg", 802 + "otg", 803 + "xlsm", 804 + "docm", 805 + "dotm", 806 + "potm", 807 + "pptm", 808 + "jar", 809 + "jmp", 810 + "rm", 811 + "sav", 812 + "ppsm", 813 + "ppsx", 814 + "tar.gz", 815 + "reg", 816 + "dat" 817 + ]; 818 + var mimeTypes = [ 819 + "image/jpeg", 820 + "image/png", 821 + "image/gif", 822 + "image/webp", 823 + "image/flif", 824 + "image/x-xcf", 825 + "image/x-canon-cr2", 826 + "image/x-canon-cr3", 827 + "image/tiff", 828 + "image/bmp", 829 + "image/vnd.ms-photo", 830 + "image/vnd.adobe.photoshop", 831 + "application/x-indesign", 832 + "application/epub+zip", 833 + "application/x-xpinstall", 834 + "application/vnd.ms-powerpoint.slideshow.macroenabled.12", 835 + "application/vnd.oasis.opendocument.text", 836 + "application/vnd.oasis.opendocument.spreadsheet", 837 + "application/vnd.oasis.opendocument.presentation", 838 + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 839 + "application/vnd.openxmlformats-officedocument.presentationml.presentation", 840 + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 841 + "application/vnd.openxmlformats-officedocument.presentationml.slideshow", 842 + "application/zip", 843 + "application/x-tar", 844 + "application/x-rar-compressed", 845 + "application/gzip", 846 + "application/x-bzip2", 847 + "application/x-7z-compressed", 848 + "application/x-apple-diskimage", 849 + "application/vnd.apache.arrow.file", 850 + "video/mp4", 851 + "audio/midi", 852 + "video/matroska", 853 + "video/webm", 854 + "video/quicktime", 855 + "video/vnd.avi", 856 + "audio/wav", 857 + "audio/qcelp", 858 + "audio/x-ms-asf", 859 + "video/x-ms-asf", 860 + "application/vnd.ms-asf", 861 + "video/mpeg", 862 + "video/3gpp", 863 + "audio/mpeg", 864 + "audio/mp4", 865 + // RFC 4337 866 + "video/ogg", 867 + "audio/ogg", 868 + "audio/ogg; codecs=opus", 869 + "application/ogg", 870 + "audio/flac", 871 + "audio/ape", 872 + "audio/wavpack", 873 + "audio/amr", 874 + "application/pdf", 875 + "application/x-elf", 876 + "application/x-mach-binary", 877 + "application/x-msdownload", 878 + "application/x-shockwave-flash", 879 + "application/rtf", 880 + "application/wasm", 881 + "font/woff", 882 + "font/woff2", 883 + "application/vnd.ms-fontobject", 884 + "font/ttf", 885 + "font/otf", 886 + "font/collection", 887 + "image/x-icon", 888 + "video/x-flv", 889 + "application/postscript", 890 + "application/eps", 891 + "application/x-xz", 892 + "application/x-sqlite3", 893 + "application/x-nintendo-nes-rom", 894 + "application/x-google-chrome-extension", 895 + "application/vnd.ms-cab-compressed", 896 + "application/x-deb", 897 + "application/x-unix-archive", 898 + "application/x-rpm", 899 + "application/x-compress", 900 + "application/x-lzip", 901 + "application/x-cfb", 902 + "application/x-mie", 903 + "application/mxf", 904 + "video/mp2t", 905 + "application/x-blender", 906 + "image/bpg", 907 + "image/j2c", 908 + "image/jp2", 909 + "image/jpx", 910 + "image/jpm", 911 + "image/mj2", 912 + "audio/aiff", 913 + "application/xml", 914 + "application/x-mobipocket-ebook", 915 + "image/heif", 916 + "image/heif-sequence", 917 + "image/heic", 918 + "image/heic-sequence", 919 + "image/icns", 920 + "image/ktx", 921 + "application/dicom", 922 + "audio/x-musepack", 923 + "text/calendar", 924 + "text/vcard", 925 + "text/vtt", 926 + "model/gltf-binary", 927 + "application/vnd.tcpdump.pcap", 928 + "audio/x-dsf", 929 + // Non-standard 930 + "application/x.ms.shortcut", 931 + // Invented by us 932 + "application/x.apple.alias", 933 + // Invented by us 934 + "audio/x-voc", 935 + "audio/vnd.dolby.dd-raw", 936 + "audio/x-m4a", 937 + "image/apng", 938 + "image/x-olympus-orf", 939 + "image/x-sony-arw", 940 + "image/x-adobe-dng", 941 + "image/x-nikon-nef", 942 + "image/x-panasonic-rw2", 943 + "image/x-fujifilm-raf", 944 + "video/x-m4v", 945 + "video/3gpp2", 946 + "application/x-esri-shape", 947 + "audio/aac", 948 + "audio/x-it", 949 + "audio/x-s3m", 950 + "audio/x-xm", 951 + "video/MP1S", 952 + "video/MP2P", 953 + "application/vnd.sketchup.skp", 954 + "image/avif", 955 + "application/x-lzh-compressed", 956 + "application/pgp-encrypted", 957 + "application/x-asar", 958 + "model/stl", 959 + "application/vnd.ms-htmlhelp", 960 + "model/3mf", 961 + "image/jxl", 962 + "application/zstd", 963 + "image/jls", 964 + "application/vnd.ms-outlook", 965 + "image/vnd.dwg", 966 + "application/vnd.apache.parquet", 967 + "application/java-vm", 968 + "application/x-arj", 969 + "application/x-cpio", 970 + "application/x-ace-compressed", 971 + "application/avro", 972 + "application/vnd.iccprofile", 973 + "application/x.autodesk.fbx", 974 + // Invented by us 975 + "application/vnd.visio", 976 + "application/vnd.android.package-archive", 977 + "application/vnd.google.draco", 978 + // Invented by us 979 + "application/x-lz4", 980 + // Invented by us 981 + "application/vnd.openxmlformats-officedocument.presentationml.template", 982 + "application/vnd.openxmlformats-officedocument.spreadsheetml.template", 983 + "application/vnd.openxmlformats-officedocument.wordprocessingml.template", 984 + "application/vnd.ms-excel.template.macroenabled.12", 985 + "application/vnd.oasis.opendocument.text-template", 986 + "application/vnd.oasis.opendocument.spreadsheet-template", 987 + "application/vnd.oasis.opendocument.presentation-template", 988 + "application/vnd.oasis.opendocument.graphics", 989 + "application/vnd.oasis.opendocument.graphics-template", 990 + "application/vnd.ms-excel.sheet.macroenabled.12", 991 + "application/vnd.ms-word.document.macroenabled.12", 992 + "application/vnd.ms-word.template.macroenabled.12", 993 + "application/vnd.ms-powerpoint.template.macroenabled.12", 994 + "application/vnd.ms-powerpoint.presentation.macroenabled.12", 995 + "application/java-archive", 996 + "application/vnd.rn-realmedia", 997 + "application/x-spss-sav", 998 + "application/x-ms-regedit", 999 + "application/x-ft-windows-registry-hive", 1000 + "application/x-jmp-data" 1001 + ]; 1002 + 1003 + // ../node_modules/.deno/file-type@21.3.0/node_modules/file-type/core.js 1004 + var reasonableDetectionSizeInBytes = 4100; 1005 + async function fileTypeFromBuffer(input, options) { 1006 + return new FileTypeParser(options).fromBuffer(input); 1007 + } 1008 + __name(fileTypeFromBuffer, "fileTypeFromBuffer"); 1009 + function getFileTypeFromMimeType(mimeType) { 1010 + mimeType = mimeType.toLowerCase(); 1011 + switch (mimeType) { 1012 + case "application/epub+zip": 1013 + return { 1014 + ext: "epub", 1015 + mime: mimeType 1016 + }; 1017 + case "application/vnd.oasis.opendocument.text": 1018 + return { 1019 + ext: "odt", 1020 + mime: mimeType 1021 + }; 1022 + case "application/vnd.oasis.opendocument.text-template": 1023 + return { 1024 + ext: "ott", 1025 + mime: mimeType 1026 + }; 1027 + case "application/vnd.oasis.opendocument.spreadsheet": 1028 + return { 1029 + ext: "ods", 1030 + mime: mimeType 1031 + }; 1032 + case "application/vnd.oasis.opendocument.spreadsheet-template": 1033 + return { 1034 + ext: "ots", 1035 + mime: mimeType 1036 + }; 1037 + case "application/vnd.oasis.opendocument.presentation": 1038 + return { 1039 + ext: "odp", 1040 + mime: mimeType 1041 + }; 1042 + case "application/vnd.oasis.opendocument.presentation-template": 1043 + return { 1044 + ext: "otp", 1045 + mime: mimeType 1046 + }; 1047 + case "application/vnd.oasis.opendocument.graphics": 1048 + return { 1049 + ext: "odg", 1050 + mime: mimeType 1051 + }; 1052 + case "application/vnd.oasis.opendocument.graphics-template": 1053 + return { 1054 + ext: "otg", 1055 + mime: mimeType 1056 + }; 1057 + case "application/vnd.openxmlformats-officedocument.presentationml.slideshow": 1058 + return { 1059 + ext: "ppsx", 1060 + mime: mimeType 1061 + }; 1062 + case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": 1063 + return { 1064 + ext: "xlsx", 1065 + mime: mimeType 1066 + }; 1067 + case "application/vnd.ms-excel.sheet.macroenabled": 1068 + return { 1069 + ext: "xlsm", 1070 + mime: "application/vnd.ms-excel.sheet.macroenabled.12" 1071 + }; 1072 + case "application/vnd.openxmlformats-officedocument.spreadsheetml.template": 1073 + return { 1074 + ext: "xltx", 1075 + mime: mimeType 1076 + }; 1077 + case "application/vnd.ms-excel.template.macroenabled": 1078 + return { 1079 + ext: "xltm", 1080 + mime: "application/vnd.ms-excel.template.macroenabled.12" 1081 + }; 1082 + case "application/vnd.ms-powerpoint.slideshow.macroenabled": 1083 + return { 1084 + ext: "ppsm", 1085 + mime: "application/vnd.ms-powerpoint.slideshow.macroenabled.12" 1086 + }; 1087 + case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": 1088 + return { 1089 + ext: "docx", 1090 + mime: mimeType 1091 + }; 1092 + case "application/vnd.ms-word.document.macroenabled": 1093 + return { 1094 + ext: "docm", 1095 + mime: "application/vnd.ms-word.document.macroenabled.12" 1096 + }; 1097 + case "application/vnd.openxmlformats-officedocument.wordprocessingml.template": 1098 + return { 1099 + ext: "dotx", 1100 + mime: mimeType 1101 + }; 1102 + case "application/vnd.ms-word.template.macroenabledtemplate": 1103 + return { 1104 + ext: "dotm", 1105 + mime: "application/vnd.ms-word.template.macroenabled.12" 1106 + }; 1107 + case "application/vnd.openxmlformats-officedocument.presentationml.template": 1108 + return { 1109 + ext: "potx", 1110 + mime: mimeType 1111 + }; 1112 + case "application/vnd.ms-powerpoint.template.macroenabled": 1113 + return { 1114 + ext: "potm", 1115 + mime: "application/vnd.ms-powerpoint.template.macroenabled.12" 1116 + }; 1117 + case "application/vnd.openxmlformats-officedocument.presentationml.presentation": 1118 + return { 1119 + ext: "pptx", 1120 + mime: mimeType 1121 + }; 1122 + case "application/vnd.ms-powerpoint.presentation.macroenabled": 1123 + return { 1124 + ext: "pptm", 1125 + mime: "application/vnd.ms-powerpoint.presentation.macroenabled.12" 1126 + }; 1127 + case "application/vnd.ms-visio.drawing": 1128 + return { 1129 + ext: "vsdx", 1130 + mime: "application/vnd.visio" 1131 + }; 1132 + case "application/vnd.ms-package.3dmanufacturing-3dmodel+xml": 1133 + return { 1134 + ext: "3mf", 1135 + mime: "model/3mf" 1136 + }; 1137 + default: 1138 + } 1139 + } 1140 + __name(getFileTypeFromMimeType, "getFileTypeFromMimeType"); 1141 + function _check(buffer, headers, options) { 1142 + options = { 1143 + offset: 0, 1144 + ...options 1145 + }; 1146 + for (const [index, header] of headers.entries()) { 1147 + if (options.mask) { 1148 + if (header !== (options.mask[index] & buffer[index + options.offset])) { 1149 + return false; 1150 + } 1151 + } else if (header !== buffer[index + options.offset]) { 1152 + return false; 1153 + } 1154 + } 1155 + return true; 1156 + } 1157 + __name(_check, "_check"); 1158 + var FileTypeParser = class { 1159 + static { 1160 + __name(this, "FileTypeParser"); 1161 + } 1162 + constructor(options) { 1163 + this.options = { 1164 + mpegOffsetTolerance: 0, 1165 + ...options 1166 + }; 1167 + this.detectors = [ 1168 + ...options?.customDetectors ?? [], 1169 + { id: "core", detect: this.detectConfident }, 1170 + { id: "core.imprecise", detect: this.detectImprecise } 1171 + ]; 1172 + this.tokenizerOptions = { 1173 + abortSignal: options?.signal 1174 + }; 1175 + } 1176 + async fromTokenizer(tokenizer3) { 1177 + const initialPosition = tokenizer3.position; 1178 + for (const detector of this.detectors) { 1179 + const fileType = await detector.detect(tokenizer3); 1180 + if (fileType) { 1181 + return fileType; 1182 + } 1183 + if (initialPosition !== tokenizer3.position) { 1184 + return void 0; 1185 + } 1186 + } 1187 + } 1188 + async fromBuffer(input) { 1189 + if (!(input instanceof Uint8Array || input instanceof ArrayBuffer)) { 1190 + throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof input}\``); 1191 + } 1192 + const buffer = input instanceof Uint8Array ? input : new Uint8Array(input); 1193 + if (!(buffer?.length > 1)) { 1194 + return; 1195 + } 1196 + return this.fromTokenizer(fromBuffer(buffer, this.tokenizerOptions)); 1197 + } 1198 + async fromBlob(blob) { 1199 + const tokenizer3 = fromBlob(blob, this.tokenizerOptions); 1200 + try { 1201 + return await this.fromTokenizer(tokenizer3); 1202 + } finally { 1203 + await tokenizer3.close(); 1204 + } 1205 + } 1206 + async fromStream(stream) { 1207 + const tokenizer3 = fromWebStream(stream, this.tokenizerOptions); 1208 + try { 1209 + return await this.fromTokenizer(tokenizer3); 1210 + } finally { 1211 + await tokenizer3.close(); 1212 + } 1213 + } 1214 + async toDetectionStream(stream, options) { 1215 + const { sampleSize = reasonableDetectionSizeInBytes } = options; 1216 + let detectedFileType; 1217 + let firstChunk; 1218 + const reader = stream.getReader({ mode: "byob" }); 1219 + try { 1220 + const { value: chunk, done } = await reader.read(new Uint8Array(sampleSize)); 1221 + firstChunk = chunk; 1222 + if (!done && chunk) { 1223 + try { 1224 + detectedFileType = await this.fromBuffer(chunk.subarray(0, sampleSize)); 1225 + } catch (error) { 1226 + if (!(error instanceof EndOfStreamError)) { 1227 + throw error; 1228 + } 1229 + detectedFileType = void 0; 1230 + } 1231 + } 1232 + firstChunk = chunk; 1233 + } finally { 1234 + reader.releaseLock(); 1235 + } 1236 + const transformStream = new TransformStream({ 1237 + async start(controller) { 1238 + controller.enqueue(firstChunk); 1239 + }, 1240 + transform(chunk, controller) { 1241 + controller.enqueue(chunk); 1242 + } 1243 + }); 1244 + const newStream = stream.pipeThrough(transformStream); 1245 + newStream.fileType = detectedFileType; 1246 + return newStream; 1247 + } 1248 + check(header, options) { 1249 + return _check(this.buffer, header, options); 1250 + } 1251 + checkString(header, options) { 1252 + return this.check(stringToBytes(header, options?.encoding), options); 1253 + } 1254 + // Detections with a high degree of certainty in identifying the correct file type 1255 + detectConfident = /* @__PURE__ */ __name(async (tokenizer3) => { 1256 + this.buffer = new Uint8Array(reasonableDetectionSizeInBytes); 1257 + if (tokenizer3.fileInfo.size === void 0) { 1258 + tokenizer3.fileInfo.size = Number.MAX_SAFE_INTEGER; 1259 + } 1260 + this.tokenizer = tokenizer3; 1261 + await tokenizer3.peekBuffer(this.buffer, { length: 32, mayBeLess: true }); 1262 + if (this.check([66, 77])) { 1263 + return { 1264 + ext: "bmp", 1265 + mime: "image/bmp" 1266 + }; 1267 + } 1268 + if (this.check([11, 119])) { 1269 + return { 1270 + ext: "ac3", 1271 + mime: "audio/vnd.dolby.dd-raw" 1272 + }; 1273 + } 1274 + if (this.check([120, 1])) { 1275 + return { 1276 + ext: "dmg", 1277 + mime: "application/x-apple-diskimage" 1278 + }; 1279 + } 1280 + if (this.check([77, 90])) { 1281 + return { 1282 + ext: "exe", 1283 + mime: "application/x-msdownload" 1284 + }; 1285 + } 1286 + if (this.check([37, 33])) { 1287 + await tokenizer3.peekBuffer(this.buffer, { length: 24, mayBeLess: true }); 1288 + if (this.checkString("PS-Adobe-", { offset: 2 }) && this.checkString(" EPSF-", { offset: 14 })) { 1289 + return { 1290 + ext: "eps", 1291 + mime: "application/eps" 1292 + }; 1293 + } 1294 + return { 1295 + ext: "ps", 1296 + mime: "application/postscript" 1297 + }; 1298 + } 1299 + if (this.check([31, 160]) || this.check([31, 157])) { 1300 + return { 1301 + ext: "Z", 1302 + mime: "application/x-compress" 1303 + }; 1304 + } 1305 + if (this.check([199, 113])) { 1306 + return { 1307 + ext: "cpio", 1308 + mime: "application/x-cpio" 1309 + }; 1310 + } 1311 + if (this.check([96, 234])) { 1312 + return { 1313 + ext: "arj", 1314 + mime: "application/x-arj" 1315 + }; 1316 + } 1317 + if (this.check([239, 187, 191])) { 1318 + this.tokenizer.ignore(3); 1319 + return this.detectConfident(tokenizer3); 1320 + } 1321 + if (this.check([71, 73, 70])) { 1322 + return { 1323 + ext: "gif", 1324 + mime: "image/gif" 1325 + }; 1326 + } 1327 + if (this.check([73, 73, 188])) { 1328 + return { 1329 + ext: "jxr", 1330 + mime: "image/vnd.ms-photo" 1331 + }; 1332 + } 1333 + if (this.check([31, 139, 8])) { 1334 + const gzipHandler = new GzipHandler(tokenizer3); 1335 + const stream = gzipHandler.inflate(); 1336 + let shouldCancelStream = true; 1337 + try { 1338 + let compressedFileType; 1339 + try { 1340 + compressedFileType = await this.fromStream(stream); 1341 + } catch { 1342 + shouldCancelStream = false; 1343 + } 1344 + if (compressedFileType && compressedFileType.ext === "tar") { 1345 + return { 1346 + ext: "tar.gz", 1347 + mime: "application/gzip" 1348 + }; 1349 + } 1350 + } finally { 1351 + if (shouldCancelStream) { 1352 + await stream.cancel(); 1353 + } 1354 + } 1355 + return { 1356 + ext: "gz", 1357 + mime: "application/gzip" 1358 + }; 1359 + } 1360 + if (this.check([66, 90, 104])) { 1361 + return { 1362 + ext: "bz2", 1363 + mime: "application/x-bzip2" 1364 + }; 1365 + } 1366 + if (this.checkString("ID3")) { 1367 + await tokenizer3.ignore(6); 1368 + const id3HeaderLength = await tokenizer3.readToken(uint32SyncSafeToken); 1369 + if (tokenizer3.position + id3HeaderLength > tokenizer3.fileInfo.size) { 1370 + return { 1371 + ext: "mp3", 1372 + mime: "audio/mpeg" 1373 + }; 1374 + } 1375 + await tokenizer3.ignore(id3HeaderLength); 1376 + return this.fromTokenizer(tokenizer3); 1377 + } 1378 + if (this.checkString("MP+")) { 1379 + return { 1380 + ext: "mpc", 1381 + mime: "audio/x-musepack" 1382 + }; 1383 + } 1384 + if ((this.buffer[0] === 67 || this.buffer[0] === 70) && this.check([87, 83], { offset: 1 })) { 1385 + return { 1386 + ext: "swf", 1387 + mime: "application/x-shockwave-flash" 1388 + }; 1389 + } 1390 + if (this.check([255, 216, 255])) { 1391 + if (this.check([247], { offset: 3 })) { 1392 + return { 1393 + ext: "jls", 1394 + mime: "image/jls" 1395 + }; 1396 + } 1397 + return { 1398 + ext: "jpg", 1399 + mime: "image/jpeg" 1400 + }; 1401 + } 1402 + if (this.check([79, 98, 106, 1])) { 1403 + return { 1404 + ext: "avro", 1405 + mime: "application/avro" 1406 + }; 1407 + } 1408 + if (this.checkString("FLIF")) { 1409 + return { 1410 + ext: "flif", 1411 + mime: "image/flif" 1412 + }; 1413 + } 1414 + if (this.checkString("8BPS")) { 1415 + return { 1416 + ext: "psd", 1417 + mime: "image/vnd.adobe.photoshop" 1418 + }; 1419 + } 1420 + if (this.checkString("MPCK")) { 1421 + return { 1422 + ext: "mpc", 1423 + mime: "audio/x-musepack" 1424 + }; 1425 + } 1426 + if (this.checkString("FORM")) { 1427 + return { 1428 + ext: "aif", 1429 + mime: "audio/aiff" 1430 + }; 1431 + } 1432 + if (this.checkString("icns", { offset: 0 })) { 1433 + return { 1434 + ext: "icns", 1435 + mime: "image/icns" 1436 + }; 1437 + } 1438 + if (this.check([80, 75, 3, 4])) { 1439 + let fileType; 1440 + await new ZipHandler(tokenizer3).unzip((zipHeader) => { 1441 + switch (zipHeader.filename) { 1442 + case "META-INF/mozilla.rsa": 1443 + fileType = { 1444 + ext: "xpi", 1445 + mime: "application/x-xpinstall" 1446 + }; 1447 + return { 1448 + stop: true 1449 + }; 1450 + case "META-INF/MANIFEST.MF": 1451 + fileType = { 1452 + ext: "jar", 1453 + mime: "application/java-archive" 1454 + }; 1455 + return { 1456 + stop: true 1457 + }; 1458 + case "mimetype": 1459 + return { 1460 + async handler(fileData) { 1461 + const mimeType = new TextDecoder("utf-8").decode(fileData).trim(); 1462 + fileType = getFileTypeFromMimeType(mimeType); 1463 + }, 1464 + stop: true 1465 + }; 1466 + case "[Content_Types].xml": 1467 + return { 1468 + async handler(fileData) { 1469 + let xmlContent = new TextDecoder("utf-8").decode(fileData); 1470 + const endPos = xmlContent.indexOf('.main+xml"'); 1471 + if (endPos === -1) { 1472 + const mimeType = "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"; 1473 + if (xmlContent.includes(`ContentType="${mimeType}"`)) { 1474 + fileType = getFileTypeFromMimeType(mimeType); 1475 + } 1476 + } else { 1477 + xmlContent = xmlContent.slice(0, Math.max(0, endPos)); 1478 + const firstPos = xmlContent.lastIndexOf('"'); 1479 + const mimeType = xmlContent.slice(Math.max(0, firstPos + 1)); 1480 + fileType = getFileTypeFromMimeType(mimeType); 1481 + } 1482 + }, 1483 + stop: true 1484 + }; 1485 + default: 1486 + if (/classes\d*\.dex/.test(zipHeader.filename)) { 1487 + fileType = { 1488 + ext: "apk", 1489 + mime: "application/vnd.android.package-archive" 1490 + }; 1491 + return { stop: true }; 1492 + } 1493 + return {}; 1494 + } 1495 + }).catch((error) => { 1496 + if (!(error instanceof EndOfStreamError)) { 1497 + throw error; 1498 + } 1499 + }); 1500 + return fileType ?? { 1501 + ext: "zip", 1502 + mime: "application/zip" 1503 + }; 1504 + } 1505 + if (this.checkString("OggS")) { 1506 + await tokenizer3.ignore(28); 1507 + const type = new Uint8Array(8); 1508 + await tokenizer3.readBuffer(type); 1509 + if (_check(type, [79, 112, 117, 115, 72, 101, 97, 100])) { 1510 + return { 1511 + ext: "opus", 1512 + mime: "audio/ogg; codecs=opus" 1513 + }; 1514 + } 1515 + if (_check(type, [128, 116, 104, 101, 111, 114, 97])) { 1516 + return { 1517 + ext: "ogv", 1518 + mime: "video/ogg" 1519 + }; 1520 + } 1521 + if (_check(type, [1, 118, 105, 100, 101, 111, 0])) { 1522 + return { 1523 + ext: "ogm", 1524 + mime: "video/ogg" 1525 + }; 1526 + } 1527 + if (_check(type, [127, 70, 76, 65, 67])) { 1528 + return { 1529 + ext: "oga", 1530 + mime: "audio/ogg" 1531 + }; 1532 + } 1533 + if (_check(type, [83, 112, 101, 101, 120, 32, 32])) { 1534 + return { 1535 + ext: "spx", 1536 + mime: "audio/ogg" 1537 + }; 1538 + } 1539 + if (_check(type, [1, 118, 111, 114, 98, 105, 115])) { 1540 + return { 1541 + ext: "ogg", 1542 + mime: "audio/ogg" 1543 + }; 1544 + } 1545 + return { 1546 + ext: "ogx", 1547 + mime: "application/ogg" 1548 + }; 1549 + } 1550 + if (this.check([80, 75]) && (this.buffer[2] === 3 || this.buffer[2] === 5 || this.buffer[2] === 7) && (this.buffer[3] === 4 || this.buffer[3] === 6 || this.buffer[3] === 8)) { 1551 + return { 1552 + ext: "zip", 1553 + mime: "application/zip" 1554 + }; 1555 + } 1556 + if (this.checkString("MThd")) { 1557 + return { 1558 + ext: "mid", 1559 + mime: "audio/midi" 1560 + }; 1561 + } 1562 + if (this.checkString("wOFF") && (this.check([0, 1, 0, 0], { offset: 4 }) || this.checkString("OTTO", { offset: 4 }))) { 1563 + return { 1564 + ext: "woff", 1565 + mime: "font/woff" 1566 + }; 1567 + } 1568 + if (this.checkString("wOF2") && (this.check([0, 1, 0, 0], { offset: 4 }) || this.checkString("OTTO", { offset: 4 }))) { 1569 + return { 1570 + ext: "woff2", 1571 + mime: "font/woff2" 1572 + }; 1573 + } 1574 + if (this.check([212, 195, 178, 161]) || this.check([161, 178, 195, 212])) { 1575 + return { 1576 + ext: "pcap", 1577 + mime: "application/vnd.tcpdump.pcap" 1578 + }; 1579 + } 1580 + if (this.checkString("DSD ")) { 1581 + return { 1582 + ext: "dsf", 1583 + mime: "audio/x-dsf" 1584 + // Non-standard 1585 + }; 1586 + } 1587 + if (this.checkString("LZIP")) { 1588 + return { 1589 + ext: "lz", 1590 + mime: "application/x-lzip" 1591 + }; 1592 + } 1593 + if (this.checkString("fLaC")) { 1594 + return { 1595 + ext: "flac", 1596 + mime: "audio/flac" 1597 + }; 1598 + } 1599 + if (this.check([66, 80, 71, 251])) { 1600 + return { 1601 + ext: "bpg", 1602 + mime: "image/bpg" 1603 + }; 1604 + } 1605 + if (this.checkString("wvpk")) { 1606 + return { 1607 + ext: "wv", 1608 + mime: "audio/wavpack" 1609 + }; 1610 + } 1611 + if (this.checkString("%PDF")) { 1612 + return { 1613 + ext: "pdf", 1614 + mime: "application/pdf" 1615 + }; 1616 + } 1617 + if (this.check([0, 97, 115, 109])) { 1618 + return { 1619 + ext: "wasm", 1620 + mime: "application/wasm" 1621 + }; 1622 + } 1623 + if (this.check([73, 73])) { 1624 + const fileType = await this.readTiffHeader(false); 1625 + if (fileType) { 1626 + return fileType; 1627 + } 1628 + } 1629 + if (this.check([77, 77])) { 1630 + const fileType = await this.readTiffHeader(true); 1631 + if (fileType) { 1632 + return fileType; 1633 + } 1634 + } 1635 + if (this.checkString("MAC ")) { 1636 + return { 1637 + ext: "ape", 1638 + mime: "audio/ape" 1639 + }; 1640 + } 1641 + if (this.check([26, 69, 223, 163])) { 1642 + async function readField() { 1643 + const msb = await tokenizer3.peekNumber(UINT8); 1644 + let mask = 128; 1645 + let ic = 0; 1646 + while ((msb & mask) === 0 && mask !== 0) { 1647 + ++ic; 1648 + mask >>= 1; 1649 + } 1650 + const id = new Uint8Array(ic + 1); 1651 + await tokenizer3.readBuffer(id); 1652 + return id; 1653 + } 1654 + __name(readField, "readField"); 1655 + async function readElement() { 1656 + const idField = await readField(); 1657 + const lengthField = await readField(); 1658 + lengthField[0] ^= 128 >> lengthField.length - 1; 1659 + const nrLength = Math.min(6, lengthField.length); 1660 + const idView = new DataView(idField.buffer); 1661 + const lengthView = new DataView(lengthField.buffer, lengthField.length - nrLength, nrLength); 1662 + return { 1663 + id: getUintBE(idView), 1664 + len: getUintBE(lengthView) 1665 + }; 1666 + } 1667 + __name(readElement, "readElement"); 1668 + async function readChildren(children) { 1669 + while (children > 0) { 1670 + const element = await readElement(); 1671 + if (element.id === 17026) { 1672 + const rawValue = await tokenizer3.readToken(new StringType(element.len)); 1673 + return rawValue.replaceAll(/\00.*$/g, ""); 1674 + } 1675 + await tokenizer3.ignore(element.len); 1676 + --children; 1677 + } 1678 + } 1679 + __name(readChildren, "readChildren"); 1680 + const re = await readElement(); 1681 + const documentType = await readChildren(re.len); 1682 + switch (documentType) { 1683 + case "webm": 1684 + return { 1685 + ext: "webm", 1686 + mime: "video/webm" 1687 + }; 1688 + case "matroska": 1689 + return { 1690 + ext: "mkv", 1691 + mime: "video/matroska" 1692 + }; 1693 + default: 1694 + return; 1695 + } 1696 + } 1697 + if (this.checkString("SQLi")) { 1698 + return { 1699 + ext: "sqlite", 1700 + mime: "application/x-sqlite3" 1701 + }; 1702 + } 1703 + if (this.check([78, 69, 83, 26])) { 1704 + return { 1705 + ext: "nes", 1706 + mime: "application/x-nintendo-nes-rom" 1707 + }; 1708 + } 1709 + if (this.checkString("Cr24")) { 1710 + return { 1711 + ext: "crx", 1712 + mime: "application/x-google-chrome-extension" 1713 + }; 1714 + } 1715 + if (this.checkString("MSCF") || this.checkString("ISc(")) { 1716 + return { 1717 + ext: "cab", 1718 + mime: "application/vnd.ms-cab-compressed" 1719 + }; 1720 + } 1721 + if (this.check([237, 171, 238, 219])) { 1722 + return { 1723 + ext: "rpm", 1724 + mime: "application/x-rpm" 1725 + }; 1726 + } 1727 + if (this.check([197, 208, 211, 198])) { 1728 + return { 1729 + ext: "eps", 1730 + mime: "application/eps" 1731 + }; 1732 + } 1733 + if (this.check([40, 181, 47, 253])) { 1734 + return { 1735 + ext: "zst", 1736 + mime: "application/zstd" 1737 + }; 1738 + } 1739 + if (this.check([127, 69, 76, 70])) { 1740 + return { 1741 + ext: "elf", 1742 + mime: "application/x-elf" 1743 + }; 1744 + } 1745 + if (this.check([33, 66, 68, 78])) { 1746 + return { 1747 + ext: "pst", 1748 + mime: "application/vnd.ms-outlook" 1749 + }; 1750 + } 1751 + if (this.checkString("PAR1") || this.checkString("PARE")) { 1752 + return { 1753 + ext: "parquet", 1754 + mime: "application/vnd.apache.parquet" 1755 + }; 1756 + } 1757 + if (this.checkString("ttcf")) { 1758 + return { 1759 + ext: "ttc", 1760 + mime: "font/collection" 1761 + }; 1762 + } 1763 + if (this.check([254, 237, 250, 206]) || this.check([254, 237, 250, 207]) || this.check([206, 250, 237, 254]) || this.check([207, 250, 237, 254])) { 1764 + return { 1765 + ext: "macho", 1766 + mime: "application/x-mach-binary" 1767 + }; 1768 + } 1769 + if (this.check([4, 34, 77, 24])) { 1770 + return { 1771 + ext: "lz4", 1772 + mime: "application/x-lz4" 1773 + // Invented by us 1774 + }; 1775 + } 1776 + if (this.checkString("regf")) { 1777 + return { 1778 + ext: "dat", 1779 + mime: "application/x-ft-windows-registry-hive" 1780 + }; 1781 + } 1782 + if (this.checkString("$FL2") || this.checkString("$FL3")) { 1783 + return { 1784 + ext: "sav", 1785 + mime: "application/x-spss-sav" 1786 + }; 1787 + } 1788 + if (this.check([79, 84, 84, 79, 0])) { 1789 + return { 1790 + ext: "otf", 1791 + mime: "font/otf" 1792 + }; 1793 + } 1794 + if (this.checkString("#!AMR")) { 1795 + return { 1796 + ext: "amr", 1797 + mime: "audio/amr" 1798 + }; 1799 + } 1800 + if (this.checkString("{\\rtf")) { 1801 + return { 1802 + ext: "rtf", 1803 + mime: "application/rtf" 1804 + }; 1805 + } 1806 + if (this.check([70, 76, 86, 1])) { 1807 + return { 1808 + ext: "flv", 1809 + mime: "video/x-flv" 1810 + }; 1811 + } 1812 + if (this.checkString("IMPM")) { 1813 + return { 1814 + ext: "it", 1815 + mime: "audio/x-it" 1816 + }; 1817 + } 1818 + if (this.checkString("-lh0-", { offset: 2 }) || this.checkString("-lh1-", { offset: 2 }) || this.checkString("-lh2-", { offset: 2 }) || this.checkString("-lh3-", { offset: 2 }) || this.checkString("-lh4-", { offset: 2 }) || this.checkString("-lh5-", { offset: 2 }) || this.checkString("-lh6-", { offset: 2 }) || this.checkString("-lh7-", { offset: 2 }) || this.checkString("-lzs-", { offset: 2 }) || this.checkString("-lz4-", { offset: 2 }) || this.checkString("-lz5-", { offset: 2 }) || this.checkString("-lhd-", { offset: 2 })) { 1819 + return { 1820 + ext: "lzh", 1821 + mime: "application/x-lzh-compressed" 1822 + }; 1823 + } 1824 + if (this.check([0, 0, 1, 186])) { 1825 + if (this.check([33], { offset: 4, mask: [241] })) { 1826 + return { 1827 + ext: "mpg", 1828 + // May also be .ps, .mpeg 1829 + mime: "video/MP1S" 1830 + }; 1831 + } 1832 + if (this.check([68], { offset: 4, mask: [196] })) { 1833 + return { 1834 + ext: "mpg", 1835 + // May also be .mpg, .m2p, .vob or .sub 1836 + mime: "video/MP2P" 1837 + }; 1838 + } 1839 + } 1840 + if (this.checkString("ITSF")) { 1841 + return { 1842 + ext: "chm", 1843 + mime: "application/vnd.ms-htmlhelp" 1844 + }; 1845 + } 1846 + if (this.check([202, 254, 186, 190])) { 1847 + const machOArchitectureCount = UINT32_BE.get(this.buffer, 4); 1848 + const javaClassFileMajorVersion = UINT16_BE.get(this.buffer, 6); 1849 + if (machOArchitectureCount > 0 && machOArchitectureCount <= 30) { 1850 + return { 1851 + ext: "macho", 1852 + mime: "application/x-mach-binary" 1853 + }; 1854 + } 1855 + if (javaClassFileMajorVersion > 30) { 1856 + return { 1857 + ext: "class", 1858 + mime: "application/java-vm" 1859 + }; 1860 + } 1861 + } 1862 + if (this.checkString(".RMF")) { 1863 + return { 1864 + ext: "rm", 1865 + mime: "application/vnd.rn-realmedia" 1866 + }; 1867 + } 1868 + if (this.checkString("DRACO")) { 1869 + return { 1870 + ext: "drc", 1871 + mime: "application/vnd.google.draco" 1872 + // Invented by us 1873 + }; 1874 + } 1875 + if (this.check([253, 55, 122, 88, 90, 0])) { 1876 + return { 1877 + ext: "xz", 1878 + mime: "application/x-xz" 1879 + }; 1880 + } 1881 + if (this.checkString("<?xml ")) { 1882 + return { 1883 + ext: "xml", 1884 + mime: "application/xml" 1885 + }; 1886 + } 1887 + if (this.check([55, 122, 188, 175, 39, 28])) { 1888 + return { 1889 + ext: "7z", 1890 + mime: "application/x-7z-compressed" 1891 + }; 1892 + } 1893 + if (this.check([82, 97, 114, 33, 26, 7]) && (this.buffer[6] === 0 || this.buffer[6] === 1)) { 1894 + return { 1895 + ext: "rar", 1896 + mime: "application/x-rar-compressed" 1897 + }; 1898 + } 1899 + if (this.checkString("solid ")) { 1900 + return { 1901 + ext: "stl", 1902 + mime: "model/stl" 1903 + }; 1904 + } 1905 + if (this.checkString("AC")) { 1906 + const version = new StringType(4, "latin1").get(this.buffer, 2); 1907 + if (version.match("^d*") && version >= 1e3 && version <= 1050) { 1908 + return { 1909 + ext: "dwg", 1910 + mime: "image/vnd.dwg" 1911 + }; 1912 + } 1913 + } 1914 + if (this.checkString("070707")) { 1915 + return { 1916 + ext: "cpio", 1917 + mime: "application/x-cpio" 1918 + }; 1919 + } 1920 + if (this.checkString("BLENDER")) { 1921 + return { 1922 + ext: "blend", 1923 + mime: "application/x-blender" 1924 + }; 1925 + } 1926 + if (this.checkString("!<arch>")) { 1927 + await tokenizer3.ignore(8); 1928 + const string = await tokenizer3.readToken(new StringType(13, "ascii")); 1929 + if (string === "debian-binary") { 1930 + return { 1931 + ext: "deb", 1932 + mime: "application/x-deb" 1933 + }; 1934 + } 1935 + return { 1936 + ext: "ar", 1937 + mime: "application/x-unix-archive" 1938 + }; 1939 + } 1940 + if (this.checkString("WEBVTT") && // One of LF, CR, tab, space, or end of file must follow "WEBVTT" per the spec (see `fixture/fixture-vtt-*.vtt` for examples). Note that `\0` is technically the null character (there is no such thing as an EOF character). However, checking for `\0` gives us the same result as checking for the end of the stream. 1941 + ["\n", "\r", " ", " ", "\0"].some((char7) => this.checkString(char7, { offset: 6 }))) { 1942 + return { 1943 + ext: "vtt", 1944 + mime: "text/vtt" 1945 + }; 1946 + } 1947 + if (this.check([137, 80, 78, 71, 13, 10, 26, 10])) { 1948 + await tokenizer3.ignore(8); 1949 + async function readChunkHeader() { 1950 + return { 1951 + length: await tokenizer3.readToken(INT32_BE), 1952 + type: await tokenizer3.readToken(new StringType(4, "latin1")) 1953 + }; 1954 + } 1955 + __name(readChunkHeader, "readChunkHeader"); 1956 + do { 1957 + const chunk = await readChunkHeader(); 1958 + if (chunk.length < 0) { 1959 + return; 1960 + } 1961 + switch (chunk.type) { 1962 + case "IDAT": 1963 + return { 1964 + ext: "png", 1965 + mime: "image/png" 1966 + }; 1967 + case "acTL": 1968 + return { 1969 + ext: "apng", 1970 + mime: "image/apng" 1971 + }; 1972 + default: 1973 + await tokenizer3.ignore(chunk.length + 4); 1974 + } 1975 + } while (tokenizer3.position + 8 < tokenizer3.fileInfo.size); 1976 + return { 1977 + ext: "png", 1978 + mime: "image/png" 1979 + }; 1980 + } 1981 + if (this.check([65, 82, 82, 79, 87, 49, 0, 0])) { 1982 + return { 1983 + ext: "arrow", 1984 + mime: "application/vnd.apache.arrow.file" 1985 + }; 1986 + } 1987 + if (this.check([103, 108, 84, 70, 2, 0, 0, 0])) { 1988 + return { 1989 + ext: "glb", 1990 + mime: "model/gltf-binary" 1991 + }; 1992 + } 1993 + if (this.check([102, 114, 101, 101], { offset: 4 }) || this.check([109, 100, 97, 116], { offset: 4 }) || this.check([109, 111, 111, 118], { offset: 4 }) || this.check([119, 105, 100, 101], { offset: 4 })) { 1994 + return { 1995 + ext: "mov", 1996 + mime: "video/quicktime" 1997 + }; 1998 + } 1999 + if (this.check([73, 73, 82, 79, 8, 0, 0, 0, 24])) { 2000 + return { 2001 + ext: "orf", 2002 + mime: "image/x-olympus-orf" 2003 + }; 2004 + } 2005 + if (this.checkString("gimp xcf ")) { 2006 + return { 2007 + ext: "xcf", 2008 + mime: "image/x-xcf" 2009 + }; 2010 + } 2011 + if (this.checkString("ftyp", { offset: 4 }) && (this.buffer[8] & 96) !== 0) { 2012 + const brandMajor = new StringType(4, "latin1").get(this.buffer, 8).replace("\0", " ").trim(); 2013 + switch (brandMajor) { 2014 + case "avif": 2015 + case "avis": 2016 + return { ext: "avif", mime: "image/avif" }; 2017 + case "mif1": 2018 + return { ext: "heic", mime: "image/heif" }; 2019 + case "msf1": 2020 + return { ext: "heic", mime: "image/heif-sequence" }; 2021 + case "heic": 2022 + case "heix": 2023 + return { ext: "heic", mime: "image/heic" }; 2024 + case "hevc": 2025 + case "hevx": 2026 + return { ext: "heic", mime: "image/heic-sequence" }; 2027 + case "qt": 2028 + return { ext: "mov", mime: "video/quicktime" }; 2029 + case "M4V": 2030 + case "M4VH": 2031 + case "M4VP": 2032 + return { ext: "m4v", mime: "video/x-m4v" }; 2033 + case "M4P": 2034 + return { ext: "m4p", mime: "video/mp4" }; 2035 + case "M4B": 2036 + return { ext: "m4b", mime: "audio/mp4" }; 2037 + case "M4A": 2038 + return { ext: "m4a", mime: "audio/x-m4a" }; 2039 + case "F4V": 2040 + return { ext: "f4v", mime: "video/mp4" }; 2041 + case "F4P": 2042 + return { ext: "f4p", mime: "video/mp4" }; 2043 + case "F4A": 2044 + return { ext: "f4a", mime: "audio/mp4" }; 2045 + case "F4B": 2046 + return { ext: "f4b", mime: "audio/mp4" }; 2047 + case "crx": 2048 + return { ext: "cr3", mime: "image/x-canon-cr3" }; 2049 + default: 2050 + if (brandMajor.startsWith("3g")) { 2051 + if (brandMajor.startsWith("3g2")) { 2052 + return { ext: "3g2", mime: "video/3gpp2" }; 2053 + } 2054 + return { ext: "3gp", mime: "video/3gpp" }; 2055 + } 2056 + return { ext: "mp4", mime: "video/mp4" }; 2057 + } 2058 + } 2059 + if (this.checkString("REGEDIT4\r\n")) { 2060 + return { 2061 + ext: "reg", 2062 + mime: "application/x-ms-regedit" 2063 + }; 2064 + } 2065 + if (this.check([82, 73, 70, 70])) { 2066 + if (this.checkString("WEBP", { offset: 8 })) { 2067 + return { 2068 + ext: "webp", 2069 + mime: "image/webp" 2070 + }; 2071 + } 2072 + if (this.check([65, 86, 73], { offset: 8 })) { 2073 + return { 2074 + ext: "avi", 2075 + mime: "video/vnd.avi" 2076 + }; 2077 + } 2078 + if (this.check([87, 65, 86, 69], { offset: 8 })) { 2079 + return { 2080 + ext: "wav", 2081 + mime: "audio/wav" 2082 + }; 2083 + } 2084 + if (this.check([81, 76, 67, 77], { offset: 8 })) { 2085 + return { 2086 + ext: "qcp", 2087 + mime: "audio/qcelp" 2088 + }; 2089 + } 2090 + } 2091 + if (this.check([73, 73, 85, 0, 24, 0, 0, 0, 136, 231, 116, 216])) { 2092 + return { 2093 + ext: "rw2", 2094 + mime: "image/x-panasonic-rw2" 2095 + }; 2096 + } 2097 + if (this.check([48, 38, 178, 117, 142, 102, 207, 17, 166, 217])) { 2098 + async function readHeader() { 2099 + const guid = new Uint8Array(16); 2100 + await tokenizer3.readBuffer(guid); 2101 + return { 2102 + id: guid, 2103 + size: Number(await tokenizer3.readToken(UINT64_LE)) 2104 + }; 2105 + } 2106 + __name(readHeader, "readHeader"); 2107 + await tokenizer3.ignore(30); 2108 + while (tokenizer3.position + 24 < tokenizer3.fileInfo.size) { 2109 + const header = await readHeader(); 2110 + let payload = header.size - 24; 2111 + if (_check(header.id, [145, 7, 220, 183, 183, 169, 207, 17, 142, 230, 0, 192, 12, 32, 83, 101])) { 2112 + const typeId = new Uint8Array(16); 2113 + payload -= await tokenizer3.readBuffer(typeId); 2114 + if (_check(typeId, [64, 158, 105, 248, 77, 91, 207, 17, 168, 253, 0, 128, 95, 92, 68, 43])) { 2115 + return { 2116 + ext: "asf", 2117 + mime: "audio/x-ms-asf" 2118 + }; 2119 + } 2120 + if (_check(typeId, [192, 239, 25, 188, 77, 91, 207, 17, 168, 253, 0, 128, 95, 92, 68, 43])) { 2121 + return { 2122 + ext: "asf", 2123 + mime: "video/x-ms-asf" 2124 + }; 2125 + } 2126 + break; 2127 + } 2128 + await tokenizer3.ignore(payload); 2129 + } 2130 + return { 2131 + ext: "asf", 2132 + mime: "application/vnd.ms-asf" 2133 + }; 2134 + } 2135 + if (this.check([171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10])) { 2136 + return { 2137 + ext: "ktx", 2138 + mime: "image/ktx" 2139 + }; 2140 + } 2141 + if ((this.check([126, 16, 4]) || this.check([126, 24, 4])) && this.check([48, 77, 73, 69], { offset: 4 })) { 2142 + return { 2143 + ext: "mie", 2144 + mime: "application/x-mie" 2145 + }; 2146 + } 2147 + if (this.check([39, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], { offset: 2 })) { 2148 + return { 2149 + ext: "shp", 2150 + mime: "application/x-esri-shape" 2151 + }; 2152 + } 2153 + if (this.check([255, 79, 255, 81])) { 2154 + return { 2155 + ext: "j2c", 2156 + mime: "image/j2c" 2157 + }; 2158 + } 2159 + if (this.check([0, 0, 0, 12, 106, 80, 32, 32, 13, 10, 135, 10])) { 2160 + await tokenizer3.ignore(20); 2161 + const type = await tokenizer3.readToken(new StringType(4, "ascii")); 2162 + switch (type) { 2163 + case "jp2 ": 2164 + return { 2165 + ext: "jp2", 2166 + mime: "image/jp2" 2167 + }; 2168 + case "jpx ": 2169 + return { 2170 + ext: "jpx", 2171 + mime: "image/jpx" 2172 + }; 2173 + case "jpm ": 2174 + return { 2175 + ext: "jpm", 2176 + mime: "image/jpm" 2177 + }; 2178 + case "mjp2": 2179 + return { 2180 + ext: "mj2", 2181 + mime: "image/mj2" 2182 + }; 2183 + default: 2184 + return; 2185 + } 2186 + } 2187 + if (this.check([255, 10]) || this.check([0, 0, 0, 12, 74, 88, 76, 32, 13, 10, 135, 10])) { 2188 + return { 2189 + ext: "jxl", 2190 + mime: "image/jxl" 2191 + }; 2192 + } 2193 + if (this.check([254, 255])) { 2194 + if (this.checkString("<?xml ", { offset: 2, encoding: "utf-16be" })) { 2195 + return { 2196 + ext: "xml", 2197 + mime: "application/xml" 2198 + }; 2199 + } 2200 + return void 0; 2201 + } 2202 + if (this.check([208, 207, 17, 224, 161, 177, 26, 225])) { 2203 + return { 2204 + ext: "cfb", 2205 + mime: "application/x-cfb" 2206 + }; 2207 + } 2208 + await tokenizer3.peekBuffer(this.buffer, { length: Math.min(256, tokenizer3.fileInfo.size), mayBeLess: true }); 2209 + if (this.check([97, 99, 115, 112], { offset: 36 })) { 2210 + return { 2211 + ext: "icc", 2212 + mime: "application/vnd.iccprofile" 2213 + }; 2214 + } 2215 + if (this.checkString("**ACE", { offset: 7 }) && this.checkString("**", { offset: 12 })) { 2216 + return { 2217 + ext: "ace", 2218 + mime: "application/x-ace-compressed" 2219 + }; 2220 + } 2221 + if (this.checkString("BEGIN:")) { 2222 + if (this.checkString("VCARD", { offset: 6 })) { 2223 + return { 2224 + ext: "vcf", 2225 + mime: "text/vcard" 2226 + }; 2227 + } 2228 + if (this.checkString("VCALENDAR", { offset: 6 })) { 2229 + return { 2230 + ext: "ics", 2231 + mime: "text/calendar" 2232 + }; 2233 + } 2234 + } 2235 + if (this.checkString("FUJIFILMCCD-RAW")) { 2236 + return { 2237 + ext: "raf", 2238 + mime: "image/x-fujifilm-raf" 2239 + }; 2240 + } 2241 + if (this.checkString("Extended Module:")) { 2242 + return { 2243 + ext: "xm", 2244 + mime: "audio/x-xm" 2245 + }; 2246 + } 2247 + if (this.checkString("Creative Voice File")) { 2248 + return { 2249 + ext: "voc", 2250 + mime: "audio/x-voc" 2251 + }; 2252 + } 2253 + if (this.check([4, 0, 0, 0]) && this.buffer.length >= 16) { 2254 + const jsonSize = new DataView(this.buffer.buffer).getUint32(12, true); 2255 + if (jsonSize > 12 && this.buffer.length >= jsonSize + 16) { 2256 + try { 2257 + const header = new TextDecoder().decode(this.buffer.subarray(16, jsonSize + 16)); 2258 + const json = JSON.parse(header); 2259 + if (json.files) { 2260 + return { 2261 + ext: "asar", 2262 + mime: "application/x-asar" 2263 + }; 2264 + } 2265 + } catch { 2266 + } 2267 + } 2268 + } 2269 + if (this.check([6, 14, 43, 52, 2, 5, 1, 1, 13, 1, 2, 1, 1, 2])) { 2270 + return { 2271 + ext: "mxf", 2272 + mime: "application/mxf" 2273 + }; 2274 + } 2275 + if (this.checkString("SCRM", { offset: 44 })) { 2276 + return { 2277 + ext: "s3m", 2278 + mime: "audio/x-s3m" 2279 + }; 2280 + } 2281 + if (this.check([71]) && this.check([71], { offset: 188 })) { 2282 + return { 2283 + ext: "mts", 2284 + mime: "video/mp2t" 2285 + }; 2286 + } 2287 + if (this.check([71], { offset: 4 }) && this.check([71], { offset: 196 })) { 2288 + return { 2289 + ext: "mts", 2290 + mime: "video/mp2t" 2291 + }; 2292 + } 2293 + if (this.check([66, 79, 79, 75, 77, 79, 66, 73], { offset: 60 })) { 2294 + return { 2295 + ext: "mobi", 2296 + mime: "application/x-mobipocket-ebook" 2297 + }; 2298 + } 2299 + if (this.check([68, 73, 67, 77], { offset: 128 })) { 2300 + return { 2301 + ext: "dcm", 2302 + mime: "application/dicom" 2303 + }; 2304 + } 2305 + if (this.check([76, 0, 0, 0, 1, 20, 2, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70])) { 2306 + return { 2307 + ext: "lnk", 2308 + mime: "application/x.ms.shortcut" 2309 + // Invented by us 2310 + }; 2311 + } 2312 + if (this.check([98, 111, 111, 107, 0, 0, 0, 0, 109, 97, 114, 107, 0, 0, 0, 0])) { 2313 + return { 2314 + ext: "alias", 2315 + mime: "application/x.apple.alias" 2316 + // Invented by us 2317 + }; 2318 + } 2319 + if (this.checkString("Kaydara FBX Binary \0")) { 2320 + return { 2321 + ext: "fbx", 2322 + mime: "application/x.autodesk.fbx" 2323 + // Invented by us 2324 + }; 2325 + } 2326 + if (this.check([76, 80], { offset: 34 }) && (this.check([0, 0, 1], { offset: 8 }) || this.check([1, 0, 2], { offset: 8 }) || this.check([2, 0, 2], { offset: 8 }))) { 2327 + return { 2328 + ext: "eot", 2329 + mime: "application/vnd.ms-fontobject" 2330 + }; 2331 + } 2332 + if (this.check([6, 6, 237, 245, 216, 29, 70, 229, 189, 49, 239, 231, 254, 116, 183, 29])) { 2333 + return { 2334 + ext: "indd", 2335 + mime: "application/x-indesign" 2336 + }; 2337 + } 2338 + if (this.check([255, 255, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 1, 0, 1, 0]) || this.check([0, 0, 255, 255, 0, 0, 0, 7, 0, 0, 0, 4, 0, 1, 0, 1])) { 2339 + return { 2340 + ext: "jmp", 2341 + mime: "application/x-jmp-data" 2342 + }; 2343 + } 2344 + await tokenizer3.peekBuffer(this.buffer, { length: Math.min(512, tokenizer3.fileInfo.size), mayBeLess: true }); 2345 + if (this.checkString("ustar", { offset: 257 }) && (this.checkString("\0", { offset: 262 }) || this.checkString(" ", { offset: 262 })) || this.check([0, 0, 0, 0, 0, 0], { offset: 257 }) && tarHeaderChecksumMatches(this.buffer)) { 2346 + return { 2347 + ext: "tar", 2348 + mime: "application/x-tar" 2349 + }; 2350 + } 2351 + if (this.check([255, 254])) { 2352 + const encoding = "utf-16le"; 2353 + if (this.checkString("<?xml ", { offset: 2, encoding })) { 2354 + return { 2355 + ext: "xml", 2356 + mime: "application/xml" 2357 + }; 2358 + } 2359 + if (this.check([255, 14], { offset: 2 }) && this.checkString("SketchUp Model", { offset: 4, encoding })) { 2360 + return { 2361 + ext: "skp", 2362 + mime: "application/vnd.sketchup.skp" 2363 + }; 2364 + } 2365 + if (this.checkString("Windows Registry Editor Version 5.00\r\n", { offset: 2, encoding })) { 2366 + return { 2367 + ext: "reg", 2368 + mime: "application/x-ms-regedit" 2369 + }; 2370 + } 2371 + return void 0; 2372 + } 2373 + if (this.checkString("-----BEGIN PGP MESSAGE-----")) { 2374 + return { 2375 + ext: "pgp", 2376 + mime: "application/pgp-encrypted" 2377 + }; 2378 + } 2379 + }, "detectConfident"); 2380 + // Detections with limited supporting data, resulting in a higher likelihood of false positives 2381 + detectImprecise = /* @__PURE__ */ __name(async (tokenizer3) => { 2382 + this.buffer = new Uint8Array(reasonableDetectionSizeInBytes); 2383 + await tokenizer3.peekBuffer(this.buffer, { length: Math.min(8, tokenizer3.fileInfo.size), mayBeLess: true }); 2384 + if (this.check([0, 0, 1, 186]) || this.check([0, 0, 1, 179])) { 2385 + return { 2386 + ext: "mpg", 2387 + mime: "video/mpeg" 2388 + }; 2389 + } 2390 + if (this.check([0, 1, 0, 0, 0])) { 2391 + return { 2392 + ext: "ttf", 2393 + mime: "font/ttf" 2394 + }; 2395 + } 2396 + if (this.check([0, 0, 1, 0])) { 2397 + return { 2398 + ext: "ico", 2399 + mime: "image/x-icon" 2400 + }; 2401 + } 2402 + if (this.check([0, 0, 2, 0])) { 2403 + return { 2404 + ext: "cur", 2405 + mime: "image/x-icon" 2406 + }; 2407 + } 2408 + await tokenizer3.peekBuffer(this.buffer, { length: Math.min(2 + this.options.mpegOffsetTolerance, tokenizer3.fileInfo.size), mayBeLess: true }); 2409 + if (this.buffer.length >= 2 + this.options.mpegOffsetTolerance) { 2410 + for (let depth = 0; depth <= this.options.mpegOffsetTolerance; ++depth) { 2411 + const type = this.scanMpeg(depth); 2412 + if (type) { 2413 + return type; 2414 + } 2415 + } 2416 + } 2417 + }, "detectImprecise"); 2418 + async readTiffTag(bigEndian) { 2419 + const tagId = await this.tokenizer.readToken(bigEndian ? UINT16_BE : UINT16_LE); 2420 + this.tokenizer.ignore(10); 2421 + switch (tagId) { 2422 + case 50341: 2423 + return { 2424 + ext: "arw", 2425 + mime: "image/x-sony-arw" 2426 + }; 2427 + case 50706: 2428 + return { 2429 + ext: "dng", 2430 + mime: "image/x-adobe-dng" 2431 + }; 2432 + default: 2433 + } 2434 + } 2435 + async readTiffIFD(bigEndian) { 2436 + const numberOfTags = await this.tokenizer.readToken(bigEndian ? UINT16_BE : UINT16_LE); 2437 + for (let n = 0; n < numberOfTags; ++n) { 2438 + const fileType = await this.readTiffTag(bigEndian); 2439 + if (fileType) { 2440 + return fileType; 2441 + } 2442 + } 2443 + } 2444 + async readTiffHeader(bigEndian) { 2445 + const version = (bigEndian ? UINT16_BE : UINT16_LE).get(this.buffer, 2); 2446 + const ifdOffset = (bigEndian ? UINT32_BE : UINT32_LE).get(this.buffer, 4); 2447 + if (version === 42) { 2448 + if (ifdOffset >= 6) { 2449 + if (this.checkString("CR", { offset: 8 })) { 2450 + return { 2451 + ext: "cr2", 2452 + mime: "image/x-canon-cr2" 2453 + }; 2454 + } 2455 + if (ifdOffset >= 8) { 2456 + const someId1 = (bigEndian ? UINT16_BE : UINT16_LE).get(this.buffer, 8); 2457 + const someId2 = (bigEndian ? UINT16_BE : UINT16_LE).get(this.buffer, 10); 2458 + if (someId1 === 28 && someId2 === 254 || someId1 === 31 && someId2 === 11) { 2459 + return { 2460 + ext: "nef", 2461 + mime: "image/x-nikon-nef" 2462 + }; 2463 + } 2464 + } 2465 + } 2466 + await this.tokenizer.ignore(ifdOffset); 2467 + const fileType = await this.readTiffIFD(bigEndian); 2468 + return fileType ?? { 2469 + ext: "tif", 2470 + mime: "image/tiff" 2471 + }; 2472 + } 2473 + if (version === 43) { 2474 + return { 2475 + ext: "tif", 2476 + mime: "image/tiff" 2477 + }; 2478 + } 2479 + } 2480 + /** 2481 + Scan check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE). 2482 + 2483 + @param offset - Offset to scan for sync-preamble. 2484 + @returns {{ext: string, mime: string}} 2485 + */ 2486 + scanMpeg(offset) { 2487 + if (this.check([255, 224], { offset, mask: [255, 224] })) { 2488 + if (this.check([16], { offset: offset + 1, mask: [22] })) { 2489 + if (this.check([8], { offset: offset + 1, mask: [8] })) { 2490 + return { 2491 + ext: "aac", 2492 + mime: "audio/aac" 2493 + }; 2494 + } 2495 + return { 2496 + ext: "aac", 2497 + mime: "audio/aac" 2498 + }; 2499 + } 2500 + if (this.check([2], { offset: offset + 1, mask: [6] })) { 2501 + return { 2502 + ext: "mp3", 2503 + mime: "audio/mpeg" 2504 + }; 2505 + } 2506 + if (this.check([4], { offset: offset + 1, mask: [6] })) { 2507 + return { 2508 + ext: "mp2", 2509 + mime: "audio/mpeg" 2510 + }; 2511 + } 2512 + if (this.check([6], { offset: offset + 1, mask: [6] })) { 2513 + return { 2514 + ext: "mp1", 2515 + mime: "audio/mpeg" 2516 + }; 2517 + } 2518 + } 2519 + } 2520 + }; 2521 + var supportedExtensions = new Set(extensions); 2522 + var supportedMimeTypes = new Set(mimeTypes); 2523 + 2524 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ParserFactory.js 2525 + var import_content_type = __toESM(require_content_type()); 2526 + var import_media_typer = __toESM(require_media_typer()); 2527 + var import_debug3 = __toESM(require_src()); 2528 + 2529 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/MetadataCollector.js 2530 + init_Buffer(); 2531 + init_process(); 2532 + var import_debug2 = __toESM(require_src()); 2533 + 2534 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/GenericTagTypes.js 2535 + init_Buffer(); 2536 + init_process(); 2537 + var defaultTagInfo = { 2538 + multiple: false 2539 + }; 2540 + var commonTags = { 2541 + year: defaultTagInfo, 2542 + track: defaultTagInfo, 2543 + disk: defaultTagInfo, 2544 + title: defaultTagInfo, 2545 + artist: defaultTagInfo, 2546 + artists: { multiple: true, unique: true }, 2547 + albumartist: defaultTagInfo, 2548 + albumartists: { multiple: true, unique: true }, 2549 + album: defaultTagInfo, 2550 + date: defaultTagInfo, 2551 + originaldate: defaultTagInfo, 2552 + originalyear: defaultTagInfo, 2553 + releasedate: defaultTagInfo, 2554 + comment: { multiple: true, unique: false }, 2555 + genre: { multiple: true, unique: true }, 2556 + picture: { multiple: true, unique: true }, 2557 + composer: { multiple: true, unique: true }, 2558 + lyrics: { multiple: true, unique: false }, 2559 + albumsort: { multiple: false, unique: true }, 2560 + titlesort: { multiple: false, unique: true }, 2561 + work: { multiple: false, unique: true }, 2562 + artistsort: { multiple: false, unique: true }, 2563 + albumartistsort: { multiple: false, unique: true }, 2564 + composersort: { multiple: false, unique: true }, 2565 + lyricist: { multiple: true, unique: true }, 2566 + writer: { multiple: true, unique: true }, 2567 + conductor: { multiple: true, unique: true }, 2568 + remixer: { multiple: true, unique: true }, 2569 + arranger: { multiple: true, unique: true }, 2570 + engineer: { multiple: true, unique: true }, 2571 + producer: { multiple: true, unique: true }, 2572 + technician: { multiple: true, unique: true }, 2573 + djmixer: { multiple: true, unique: true }, 2574 + mixer: { multiple: true, unique: true }, 2575 + label: { multiple: true, unique: true }, 2576 + grouping: defaultTagInfo, 2577 + subtitle: { multiple: true }, 2578 + discsubtitle: defaultTagInfo, 2579 + totaltracks: defaultTagInfo, 2580 + totaldiscs: defaultTagInfo, 2581 + compilation: defaultTagInfo, 2582 + rating: { multiple: true }, 2583 + bpm: defaultTagInfo, 2584 + mood: defaultTagInfo, 2585 + media: defaultTagInfo, 2586 + catalognumber: { multiple: true, unique: true }, 2587 + tvShow: defaultTagInfo, 2588 + tvShowSort: defaultTagInfo, 2589 + tvSeason: defaultTagInfo, 2590 + tvEpisode: defaultTagInfo, 2591 + tvEpisodeId: defaultTagInfo, 2592 + tvNetwork: defaultTagInfo, 2593 + podcast: defaultTagInfo, 2594 + podcasturl: defaultTagInfo, 2595 + releasestatus: defaultTagInfo, 2596 + releasetype: { multiple: true }, 2597 + releasecountry: defaultTagInfo, 2598 + script: defaultTagInfo, 2599 + language: defaultTagInfo, 2600 + copyright: defaultTagInfo, 2601 + license: defaultTagInfo, 2602 + encodedby: defaultTagInfo, 2603 + encodersettings: defaultTagInfo, 2604 + gapless: defaultTagInfo, 2605 + barcode: defaultTagInfo, 2606 + isrc: { multiple: true }, 2607 + asin: defaultTagInfo, 2608 + musicbrainz_recordingid: defaultTagInfo, 2609 + musicbrainz_trackid: defaultTagInfo, 2610 + musicbrainz_albumid: defaultTagInfo, 2611 + musicbrainz_artistid: { multiple: true }, 2612 + musicbrainz_albumartistid: { multiple: true }, 2613 + musicbrainz_releasegroupid: defaultTagInfo, 2614 + musicbrainz_workid: defaultTagInfo, 2615 + musicbrainz_trmid: defaultTagInfo, 2616 + musicbrainz_discid: defaultTagInfo, 2617 + acoustid_id: defaultTagInfo, 2618 + acoustid_fingerprint: defaultTagInfo, 2619 + musicip_puid: defaultTagInfo, 2620 + musicip_fingerprint: defaultTagInfo, 2621 + website: defaultTagInfo, 2622 + "performer:instrument": { multiple: true, unique: true }, 2623 + averageLevel: defaultTagInfo, 2624 + peakLevel: defaultTagInfo, 2625 + notes: { multiple: true, unique: false }, 2626 + key: defaultTagInfo, 2627 + originalalbum: defaultTagInfo, 2628 + originalartist: defaultTagInfo, 2629 + discogs_artist_id: { multiple: true, unique: true }, 2630 + discogs_release_id: defaultTagInfo, 2631 + discogs_label_id: defaultTagInfo, 2632 + discogs_master_release_id: defaultTagInfo, 2633 + discogs_votes: defaultTagInfo, 2634 + discogs_rating: defaultTagInfo, 2635 + replaygain_track_peak: defaultTagInfo, 2636 + replaygain_track_gain: defaultTagInfo, 2637 + replaygain_album_peak: defaultTagInfo, 2638 + replaygain_album_gain: defaultTagInfo, 2639 + replaygain_track_minmax: defaultTagInfo, 2640 + replaygain_album_minmax: defaultTagInfo, 2641 + replaygain_undo: defaultTagInfo, 2642 + description: { multiple: true }, 2643 + longDescription: defaultTagInfo, 2644 + category: { multiple: true }, 2645 + hdVideo: defaultTagInfo, 2646 + keywords: { multiple: true }, 2647 + movement: defaultTagInfo, 2648 + movementIndex: defaultTagInfo, 2649 + movementTotal: defaultTagInfo, 2650 + podcastId: defaultTagInfo, 2651 + showMovement: defaultTagInfo, 2652 + stik: defaultTagInfo, 2653 + playCounter: defaultTagInfo 2654 + }; 2655 + function isSingleton(alias) { 2656 + return commonTags[alias] && !commonTags[alias].multiple; 2657 + } 2658 + __name(isSingleton, "isSingleton"); 2659 + function isUnique(alias) { 2660 + return !commonTags[alias].multiple || commonTags[alias].unique || false; 2661 + } 2662 + __name(isUnique, "isUnique"); 2663 + 2664 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/CombinedTagMapper.js 2665 + init_Buffer(); 2666 + init_process(); 2667 + 2668 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js 2669 + init_Buffer(); 2670 + init_process(); 2671 + 2672 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/GenericTagMapper.js 2673 + init_Buffer(); 2674 + init_process(); 2675 + var CommonTagMapper = class { 2676 + static { 2677 + __name(this, "CommonTagMapper"); 2678 + } 2679 + static toIntOrNull(str) { 2680 + const cleaned = Number.parseInt(str, 10); 2681 + return Number.isNaN(cleaned) ? null : cleaned; 2682 + } 2683 + // TODO: a string of 1of1 would fail to be converted 2684 + // converts 1/10 to no : 1, of : 10 2685 + // or 1 to no : 1, of : 0 2686 + static normalizeTrack(origVal) { 2687 + const split = origVal.toString().split("/"); 2688 + return { 2689 + no: Number.parseInt(split[0], 10) || null, 2690 + of: Number.parseInt(split[1], 10) || null 2691 + }; 2692 + } 2693 + constructor(tagTypes, tagMap2) { 2694 + this.tagTypes = tagTypes; 2695 + this.tagMap = tagMap2; 2696 + } 2697 + /** 2698 + * Process and set common tags 2699 + * write common tags to 2700 + * @param tag Native tag 2701 + * @param warnings Register warnings 2702 + * @return common name 2703 + */ 2704 + mapGenericTag(tag, warnings) { 2705 + tag = { id: tag.id, value: tag.value }; 2706 + this.postMap(tag, warnings); 2707 + const id = this.getCommonName(tag.id); 2708 + return id ? { id, value: tag.value } : null; 2709 + } 2710 + /** 2711 + * Convert native tag key to common tag key 2712 + * @param tag Native header tag 2713 + * @return common tag name (alias) 2714 + */ 2715 + getCommonName(tag) { 2716 + return this.tagMap[tag]; 2717 + } 2718 + /** 2719 + * Handle post mapping exceptions / correction 2720 + * @param tag Tag e.g. {"©alb", "Buena Vista Social Club") 2721 + * @param warnings Used to register warnings 2722 + */ 2723 + postMap(_tag, _warnings) { 2724 + return; 2725 + } 2726 + }; 2727 + CommonTagMapper.maxRatingScore = 1; 2728 + 2729 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js 2730 + var id3v1TagMap = { 2731 + title: "title", 2732 + artist: "artist", 2733 + album: "album", 2734 + year: "year", 2735 + comment: "comment", 2736 + track: "track", 2737 + genre: "genre" 2738 + }; 2739 + var ID3v1TagMapper = class extends CommonTagMapper { 2740 + static { 2741 + __name(this, "ID3v1TagMapper"); 2742 + } 2743 + constructor() { 2744 + super(["ID3v1"], id3v1TagMap); 2745 + } 2746 + }; 2747 + 2748 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js 2749 + init_Buffer(); 2750 + init_process(); 2751 + 2752 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.js 2753 + init_Buffer(); 2754 + init_process(); 2755 + var CaseInsensitiveTagMap = class extends CommonTagMapper { 2756 + static { 2757 + __name(this, "CaseInsensitiveTagMap"); 2758 + } 2759 + constructor(tagTypes, tagMap2) { 2760 + const upperCaseMap = {}; 2761 + for (const tag of Object.keys(tagMap2)) { 2762 + upperCaseMap[tag.toUpperCase()] = tagMap2[tag]; 2763 + } 2764 + super(tagTypes, upperCaseMap); 2765 + } 2766 + /** 2767 + * @tag Native header tag 2768 + * @return common tag name (alias) 2769 + */ 2770 + getCommonName(tag) { 2771 + return this.tagMap[tag.toUpperCase()]; 2772 + } 2773 + }; 2774 + 2775 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js 2776 + var id3v24TagMap = { 2777 + // id3v2.3 2778 + TIT2: "title", 2779 + TPE1: "artist", 2780 + "TXXX:Artists": "artists", 2781 + TPE2: "albumartist", 2782 + TALB: "album", 2783 + TDRV: "date", 2784 + // [ 'date', 'year' ] ToDo: improve 'year' mapping 2785 + /** 2786 + * Original release year 2787 + */ 2788 + TORY: "originalyear", 2789 + TPOS: "disk", 2790 + TCON: "genre", 2791 + APIC: "picture", 2792 + TCOM: "composer", 2793 + USLT: "lyrics", 2794 + TSOA: "albumsort", 2795 + TSOT: "titlesort", 2796 + TOAL: "originalalbum", 2797 + TSOP: "artistsort", 2798 + TSO2: "albumartistsort", 2799 + TSOC: "composersort", 2800 + TEXT: "lyricist", 2801 + "TXXX:Writer": "writer", 2802 + TPE3: "conductor", 2803 + // 'IPLS:instrument': 'performer:instrument', // ToDo 2804 + TPE4: "remixer", 2805 + "IPLS:arranger": "arranger", 2806 + "IPLS:engineer": "engineer", 2807 + "IPLS:producer": "producer", 2808 + "IPLS:DJ-mix": "djmixer", 2809 + "IPLS:mix": "mixer", 2810 + TPUB: "label", 2811 + TIT1: "grouping", 2812 + TIT3: "subtitle", 2813 + TRCK: "track", 2814 + TCMP: "compilation", 2815 + POPM: "rating", 2816 + TBPM: "bpm", 2817 + TMED: "media", 2818 + "TXXX:CATALOGNUMBER": "catalognumber", 2819 + "TXXX:MusicBrainz Album Status": "releasestatus", 2820 + "TXXX:MusicBrainz Album Type": "releasetype", 2821 + /** 2822 + * Release country as documented: https://picard.musicbrainz.org/docs/mappings/#cite_note-0 2823 + */ 2824 + "TXXX:MusicBrainz Album Release Country": "releasecountry", 2825 + /** 2826 + * Release country as implemented // ToDo: report 2827 + */ 2828 + "TXXX:RELEASECOUNTRY": "releasecountry", 2829 + "TXXX:SCRIPT": "script", 2830 + TLAN: "language", 2831 + TCOP: "copyright", 2832 + WCOP: "license", 2833 + TENC: "encodedby", 2834 + TSSE: "encodersettings", 2835 + "TXXX:BARCODE": "barcode", 2836 + "TXXX:ISRC": "isrc", 2837 + TSRC: "isrc", 2838 + "TXXX:ASIN": "asin", 2839 + "TXXX:originalyear": "originalyear", 2840 + "UFID:http://musicbrainz.org": "musicbrainz_recordingid", 2841 + "TXXX:MusicBrainz Release Track Id": "musicbrainz_trackid", 2842 + "TXXX:MusicBrainz Album Id": "musicbrainz_albumid", 2843 + "TXXX:MusicBrainz Artist Id": "musicbrainz_artistid", 2844 + "TXXX:MusicBrainz Album Artist Id": "musicbrainz_albumartistid", 2845 + "TXXX:MusicBrainz Release Group Id": "musicbrainz_releasegroupid", 2846 + "TXXX:MusicBrainz Work Id": "musicbrainz_workid", 2847 + "TXXX:MusicBrainz TRM Id": "musicbrainz_trmid", 2848 + "TXXX:MusicBrainz Disc Id": "musicbrainz_discid", 2849 + "TXXX:ACOUSTID_ID": "acoustid_id", 2850 + "TXXX:Acoustid Id": "acoustid_id", 2851 + "TXXX:Acoustid Fingerprint": "acoustid_fingerprint", 2852 + "TXXX:MusicIP PUID": "musicip_puid", 2853 + "TXXX:MusicMagic Fingerprint": "musicip_fingerprint", 2854 + WOAR: "website", 2855 + // id3v2.4 2856 + // ToDo: In same sequence as defined at http://id3.org/id3v2.4.0-frames 2857 + TDRC: "date", 2858 + // date YYYY-MM-DD 2859 + TYER: "year", 2860 + TDOR: "originaldate", 2861 + // 'TMCL:instrument': 'performer:instrument', 2862 + "TIPL:arranger": "arranger", 2863 + "TIPL:engineer": "engineer", 2864 + "TIPL:producer": "producer", 2865 + "TIPL:DJ-mix": "djmixer", 2866 + "TIPL:mix": "mixer", 2867 + TMOO: "mood", 2868 + // additional mappings: 2869 + SYLT: "lyrics", 2870 + TSST: "discsubtitle", 2871 + TKEY: "key", 2872 + COMM: "comment", 2873 + TOPE: "originalartist", 2874 + // Windows Media Player 2875 + "PRIV:AverageLevel": "averageLevel", 2876 + "PRIV:PeakLevel": "peakLevel", 2877 + // Discogs 2878 + "TXXX:DISCOGS_ARTIST_ID": "discogs_artist_id", 2879 + "TXXX:DISCOGS_ARTISTS": "artists", 2880 + "TXXX:DISCOGS_ARTIST_NAME": "artists", 2881 + "TXXX:DISCOGS_ALBUM_ARTISTS": "albumartist", 2882 + "TXXX:DISCOGS_CATALOG": "catalognumber", 2883 + "TXXX:DISCOGS_COUNTRY": "releasecountry", 2884 + "TXXX:DISCOGS_DATE": "originaldate", 2885 + "TXXX:DISCOGS_LABEL": "label", 2886 + "TXXX:DISCOGS_LABEL_ID": "discogs_label_id", 2887 + "TXXX:DISCOGS_MASTER_RELEASE_ID": "discogs_master_release_id", 2888 + "TXXX:DISCOGS_RATING": "discogs_rating", 2889 + "TXXX:DISCOGS_RELEASED": "date", 2890 + "TXXX:DISCOGS_RELEASE_ID": "discogs_release_id", 2891 + "TXXX:DISCOGS_VOTES": "discogs_votes", 2892 + "TXXX:CATALOGID": "catalognumber", 2893 + "TXXX:STYLE": "genre", 2894 + "TXXX:REPLAYGAIN_TRACK_PEAK": "replaygain_track_peak", 2895 + "TXXX:REPLAYGAIN_TRACK_GAIN": "replaygain_track_gain", 2896 + "TXXX:REPLAYGAIN_ALBUM_PEAK": "replaygain_album_peak", 2897 + "TXXX:REPLAYGAIN_ALBUM_GAIN": "replaygain_album_gain", 2898 + "TXXX:MP3GAIN_MINMAX": "replaygain_track_minmax", 2899 + "TXXX:MP3GAIN_ALBUM_MINMAX": "replaygain_album_minmax", 2900 + "TXXX:MP3GAIN_UNDO": "replaygain_undo", 2901 + MVNM: "movement", 2902 + MVIN: "movementIndex", 2903 + PCST: "podcast", 2904 + TCAT: "category", 2905 + TDES: "description", 2906 + TDRL: "releasedate", 2907 + TGID: "podcastId", 2908 + TKWD: "keywords", 2909 + WFED: "podcasturl", 2910 + GRP1: "grouping", 2911 + PCNT: "playCounter" 2912 + }; 2913 + var ID3v24TagMapper = class _ID3v24TagMapper extends CaseInsensitiveTagMap { 2914 + static { 2915 + __name(this, "ID3v24TagMapper"); 2916 + } 2917 + static toRating(popm) { 2918 + return { 2919 + source: popm.email, 2920 + rating: popm.rating > 0 ? (popm.rating - 1) / 254 * CommonTagMapper.maxRatingScore : void 0 2921 + }; 2922 + } 2923 + constructor() { 2924 + super(["ID3v2.3", "ID3v2.4"], id3v24TagMap); 2925 + } 2926 + /** 2927 + * Handle post mapping exceptions / correction 2928 + * @param tag to post map 2929 + * @param warnings Wil be used to register (collect) warnings 2930 + */ 2931 + postMap(tag, warnings) { 2932 + switch (tag.id) { 2933 + case "UFID": 2934 + { 2935 + const idTag = tag.value; 2936 + if (idTag.owner_identifier === "http://musicbrainz.org") { 2937 + tag.id += `:${idTag.owner_identifier}`; 2938 + tag.value = decodeString(idTag.identifier, "latin1"); 2939 + } 2940 + } 2941 + break; 2942 + case "PRIV": 2943 + { 2944 + const customTag = tag.value; 2945 + switch (customTag.owner_identifier) { 2946 + // decode Windows Media Player 2947 + case "AverageLevel": 2948 + case "PeakValue": 2949 + tag.id += `:${customTag.owner_identifier}`; 2950 + tag.value = customTag.data.length === 4 ? UINT32_LE.get(customTag.data, 0) : null; 2951 + if (tag.value === null) { 2952 + warnings.addWarning("Failed to parse PRIV:PeakValue"); 2953 + } 2954 + break; 2955 + default: 2956 + warnings.addWarning(`Unknown PRIV owner-identifier: ${customTag.data}`); 2957 + } 2958 + } 2959 + break; 2960 + case "POPM": 2961 + tag.value = _ID3v24TagMapper.toRating(tag.value); 2962 + break; 2963 + default: 2964 + break; 2965 + } 2966 + } 2967 + }; 2968 + 2969 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/asf/AsfTagMapper.js 2970 + init_Buffer(); 2971 + init_process(); 2972 + var asfTagMap = { 2973 + Title: "title", 2974 + Author: "artist", 2975 + "WM/AlbumArtist": "albumartist", 2976 + "WM/AlbumTitle": "album", 2977 + "WM/Year": "date", 2978 + // changed to 'year' to 'date' based on Picard mappings; ToDo: check me 2979 + "WM/OriginalReleaseTime": "originaldate", 2980 + "WM/OriginalReleaseYear": "originalyear", 2981 + Description: "comment", 2982 + "WM/TrackNumber": "track", 2983 + "WM/PartOfSet": "disk", 2984 + "WM/Genre": "genre", 2985 + "WM/Composer": "composer", 2986 + "WM/Lyrics": "lyrics", 2987 + "WM/AlbumSortOrder": "albumsort", 2988 + "WM/TitleSortOrder": "titlesort", 2989 + "WM/ArtistSortOrder": "artistsort", 2990 + "WM/AlbumArtistSortOrder": "albumartistsort", 2991 + "WM/ComposerSortOrder": "composersort", 2992 + "WM/Writer": "lyricist", 2993 + "WM/Conductor": "conductor", 2994 + "WM/ModifiedBy": "remixer", 2995 + "WM/Engineer": "engineer", 2996 + "WM/Producer": "producer", 2997 + "WM/DJMixer": "djmixer", 2998 + "WM/Mixer": "mixer", 2999 + "WM/Publisher": "label", 3000 + "WM/ContentGroupDescription": "grouping", 3001 + "WM/SubTitle": "subtitle", 3002 + "WM/SetSubTitle": "discsubtitle", 3003 + // 'WM/PartOfSet': 'totaldiscs', 3004 + "WM/IsCompilation": "compilation", 3005 + "WM/SharedUserRating": "rating", 3006 + "WM/BeatsPerMinute": "bpm", 3007 + "WM/Mood": "mood", 3008 + "WM/Media": "media", 3009 + "WM/CatalogNo": "catalognumber", 3010 + "MusicBrainz/Album Status": "releasestatus", 3011 + "MusicBrainz/Album Type": "releasetype", 3012 + "MusicBrainz/Album Release Country": "releasecountry", 3013 + "WM/Script": "script", 3014 + "WM/Language": "language", 3015 + Copyright: "copyright", 3016 + LICENSE: "license", 3017 + "WM/EncodedBy": "encodedby", 3018 + "WM/EncodingSettings": "encodersettings", 3019 + "WM/Barcode": "barcode", 3020 + "WM/ISRC": "isrc", 3021 + "MusicBrainz/Track Id": "musicbrainz_recordingid", 3022 + "MusicBrainz/Release Track Id": "musicbrainz_trackid", 3023 + "MusicBrainz/Album Id": "musicbrainz_albumid", 3024 + "MusicBrainz/Artist Id": "musicbrainz_artistid", 3025 + "MusicBrainz/Album Artist Id": "musicbrainz_albumartistid", 3026 + "MusicBrainz/Release Group Id": "musicbrainz_releasegroupid", 3027 + "MusicBrainz/Work Id": "musicbrainz_workid", 3028 + "MusicBrainz/TRM Id": "musicbrainz_trmid", 3029 + "MusicBrainz/Disc Id": "musicbrainz_discid", 3030 + "Acoustid/Id": "acoustid_id", 3031 + "Acoustid/Fingerprint": "acoustid_fingerprint", 3032 + "MusicIP/PUID": "musicip_puid", 3033 + "WM/ARTISTS": "artists", 3034 + "WM/InitialKey": "key", 3035 + ASIN: "asin", 3036 + "WM/Work": "work", 3037 + "WM/AuthorURL": "website", 3038 + "WM/Picture": "picture" 3039 + }; 3040 + var AsfTagMapper = class _AsfTagMapper extends CommonTagMapper { 3041 + static { 3042 + __name(this, "AsfTagMapper"); 3043 + } 3044 + static toRating(rating) { 3045 + return { 3046 + rating: Number.parseFloat(rating + 1) / 5 3047 + }; 3048 + } 3049 + constructor() { 3050 + super(["asf"], asfTagMap); 3051 + } 3052 + postMap(tag) { 3053 + switch (tag.id) { 3054 + case "WM/SharedUserRating": { 3055 + const keys = tag.id.split(":"); 3056 + tag.value = _AsfTagMapper.toRating(tag.value); 3057 + tag.id = keys[0]; 3058 + break; 3059 + } 3060 + } 3061 + } 3062 + }; 3063 + 3064 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js 3065 + init_Buffer(); 3066 + init_process(); 3067 + var id3v22TagMap = { 3068 + TT2: "title", 3069 + TP1: "artist", 3070 + TP2: "albumartist", 3071 + TAL: "album", 3072 + TYE: "year", 3073 + COM: "comment", 3074 + TRK: "track", 3075 + TPA: "disk", 3076 + TCO: "genre", 3077 + PIC: "picture", 3078 + TCM: "composer", 3079 + TOR: "originaldate", 3080 + TOT: "originalalbum", 3081 + TXT: "lyricist", 3082 + TP3: "conductor", 3083 + TPB: "label", 3084 + TT1: "grouping", 3085 + TT3: "subtitle", 3086 + TLA: "language", 3087 + TCR: "copyright", 3088 + WCP: "license", 3089 + TEN: "encodedby", 3090 + TSS: "encodersettings", 3091 + WAR: "website", 3092 + PCS: "podcast", 3093 + TCP: "compilation", 3094 + TDR: "date", 3095 + TS2: "albumartistsort", 3096 + TSA: "albumsort", 3097 + TSC: "composersort", 3098 + TSP: "artistsort", 3099 + TST: "titlesort", 3100 + WFD: "podcasturl", 3101 + TBP: "bpm", 3102 + GP1: "grouping" 3103 + }; 3104 + var ID3v22TagMapper = class extends CaseInsensitiveTagMap { 3105 + static { 3106 + __name(this, "ID3v22TagMapper"); 3107 + } 3108 + constructor() { 3109 + super(["ID3v2.2"], id3v22TagMap); 3110 + } 3111 + }; 3112 + 3113 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js 3114 + init_Buffer(); 3115 + init_process(); 3116 + var apev2TagMap = { 3117 + Title: "title", 3118 + Artist: "artist", 3119 + Artists: "artists", 3120 + "Album Artist": "albumartist", 3121 + Album: "album", 3122 + Year: "date", 3123 + Originalyear: "originalyear", 3124 + Originaldate: "originaldate", 3125 + Releasedate: "releasedate", 3126 + Comment: "comment", 3127 + Track: "track", 3128 + Disc: "disk", 3129 + DISCNUMBER: "disk", 3130 + // ToDo: backwards compatibility', valid tag? 3131 + Genre: "genre", 3132 + "Cover Art (Front)": "picture", 3133 + "Cover Art (Back)": "picture", 3134 + Composer: "composer", 3135 + Lyrics: "lyrics", 3136 + ALBUMSORT: "albumsort", 3137 + TITLESORT: "titlesort", 3138 + WORK: "work", 3139 + ARTISTSORT: "artistsort", 3140 + ALBUMARTISTSORT: "albumartistsort", 3141 + COMPOSERSORT: "composersort", 3142 + Lyricist: "lyricist", 3143 + Writer: "writer", 3144 + Conductor: "conductor", 3145 + // 'Performer=artist (instrument)': 'performer:instrument', 3146 + MixArtist: "remixer", 3147 + Arranger: "arranger", 3148 + Engineer: "engineer", 3149 + Producer: "producer", 3150 + DJMixer: "djmixer", 3151 + Mixer: "mixer", 3152 + Label: "label", 3153 + Grouping: "grouping", 3154 + Subtitle: "subtitle", 3155 + DiscSubtitle: "discsubtitle", 3156 + Compilation: "compilation", 3157 + BPM: "bpm", 3158 + Mood: "mood", 3159 + Media: "media", 3160 + CatalogNumber: "catalognumber", 3161 + MUSICBRAINZ_ALBUMSTATUS: "releasestatus", 3162 + MUSICBRAINZ_ALBUMTYPE: "releasetype", 3163 + RELEASECOUNTRY: "releasecountry", 3164 + Script: "script", 3165 + Language: "language", 3166 + Copyright: "copyright", 3167 + LICENSE: "license", 3168 + EncodedBy: "encodedby", 3169 + EncoderSettings: "encodersettings", 3170 + Barcode: "barcode", 3171 + ISRC: "isrc", 3172 + ASIN: "asin", 3173 + musicbrainz_trackid: "musicbrainz_recordingid", 3174 + musicbrainz_releasetrackid: "musicbrainz_trackid", 3175 + MUSICBRAINZ_ALBUMID: "musicbrainz_albumid", 3176 + MUSICBRAINZ_ARTISTID: "musicbrainz_artistid", 3177 + MUSICBRAINZ_ALBUMARTISTID: "musicbrainz_albumartistid", 3178 + MUSICBRAINZ_RELEASEGROUPID: "musicbrainz_releasegroupid", 3179 + MUSICBRAINZ_WORKID: "musicbrainz_workid", 3180 + MUSICBRAINZ_TRMID: "musicbrainz_trmid", 3181 + MUSICBRAINZ_DISCID: "musicbrainz_discid", 3182 + Acoustid_Id: "acoustid_id", 3183 + ACOUSTID_FINGERPRINT: "acoustid_fingerprint", 3184 + MUSICIP_PUID: "musicip_puid", 3185 + Weblink: "website", 3186 + REPLAYGAIN_TRACK_GAIN: "replaygain_track_gain", 3187 + REPLAYGAIN_TRACK_PEAK: "replaygain_track_peak", 3188 + MP3GAIN_MINMAX: "replaygain_track_minmax", 3189 + MP3GAIN_UNDO: "replaygain_undo" 3190 + }; 3191 + var APEv2TagMapper = class extends CaseInsensitiveTagMap { 3192 + static { 3193 + __name(this, "APEv2TagMapper"); 3194 + } 3195 + constructor() { 3196 + super(["APEv2"], apev2TagMap); 3197 + } 3198 + }; 3199 + 3200 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/mp4/MP4TagMapper.js 3201 + init_Buffer(); 3202 + init_process(); 3203 + var mp4TagMap = { 3204 + "\xA9nam": "title", 3205 + "\xA9ART": "artist", 3206 + aART: "albumartist", 3207 + /** 3208 + * ToDo: Album artist seems to be stored here while Picard documentation says: aART 3209 + */ 3210 + "----:com.apple.iTunes:Band": "albumartist", 3211 + "\xA9alb": "album", 3212 + "\xA9day": "date", 3213 + "\xA9cmt": "comment", 3214 + "\xA9com": "comment", 3215 + trkn: "track", 3216 + disk: "disk", 3217 + "\xA9gen": "genre", 3218 + covr: "picture", 3219 + "\xA9wrt": "composer", 3220 + "\xA9lyr": "lyrics", 3221 + soal: "albumsort", 3222 + sonm: "titlesort", 3223 + soar: "artistsort", 3224 + soaa: "albumartistsort", 3225 + soco: "composersort", 3226 + "----:com.apple.iTunes:LYRICIST": "lyricist", 3227 + "----:com.apple.iTunes:CONDUCTOR": "conductor", 3228 + "----:com.apple.iTunes:REMIXER": "remixer", 3229 + "----:com.apple.iTunes:ENGINEER": "engineer", 3230 + "----:com.apple.iTunes:PRODUCER": "producer", 3231 + "----:com.apple.iTunes:DJMIXER": "djmixer", 3232 + "----:com.apple.iTunes:MIXER": "mixer", 3233 + "----:com.apple.iTunes:LABEL": "label", 3234 + "\xA9grp": "grouping", 3235 + "----:com.apple.iTunes:SUBTITLE": "subtitle", 3236 + "----:com.apple.iTunes:DISCSUBTITLE": "discsubtitle", 3237 + cpil: "compilation", 3238 + tmpo: "bpm", 3239 + "----:com.apple.iTunes:MOOD": "mood", 3240 + "----:com.apple.iTunes:MEDIA": "media", 3241 + "----:com.apple.iTunes:CATALOGNUMBER": "catalognumber", 3242 + tvsh: "tvShow", 3243 + tvsn: "tvSeason", 3244 + tves: "tvEpisode", 3245 + sosn: "tvShowSort", 3246 + tven: "tvEpisodeId", 3247 + tvnn: "tvNetwork", 3248 + pcst: "podcast", 3249 + purl: "podcasturl", 3250 + "----:com.apple.iTunes:MusicBrainz Album Status": "releasestatus", 3251 + "----:com.apple.iTunes:MusicBrainz Album Type": "releasetype", 3252 + "----:com.apple.iTunes:MusicBrainz Album Release Country": "releasecountry", 3253 + "----:com.apple.iTunes:SCRIPT": "script", 3254 + "----:com.apple.iTunes:LANGUAGE": "language", 3255 + cprt: "copyright", 3256 + "\xA9cpy": "copyright", 3257 + "----:com.apple.iTunes:LICENSE": "license", 3258 + "\xA9too": "encodedby", 3259 + pgap: "gapless", 3260 + "----:com.apple.iTunes:BARCODE": "barcode", 3261 + "----:com.apple.iTunes:ISRC": "isrc", 3262 + "----:com.apple.iTunes:ASIN": "asin", 3263 + "----:com.apple.iTunes:NOTES": "comment", 3264 + "----:com.apple.iTunes:MusicBrainz Track Id": "musicbrainz_recordingid", 3265 + "----:com.apple.iTunes:MusicBrainz Release Track Id": "musicbrainz_trackid", 3266 + "----:com.apple.iTunes:MusicBrainz Album Id": "musicbrainz_albumid", 3267 + "----:com.apple.iTunes:MusicBrainz Artist Id": "musicbrainz_artistid", 3268 + "----:com.apple.iTunes:MusicBrainz Album Artist Id": "musicbrainz_albumartistid", 3269 + "----:com.apple.iTunes:MusicBrainz Release Group Id": "musicbrainz_releasegroupid", 3270 + "----:com.apple.iTunes:MusicBrainz Work Id": "musicbrainz_workid", 3271 + "----:com.apple.iTunes:MusicBrainz TRM Id": "musicbrainz_trmid", 3272 + "----:com.apple.iTunes:MusicBrainz Disc Id": "musicbrainz_discid", 3273 + "----:com.apple.iTunes:Acoustid Id": "acoustid_id", 3274 + "----:com.apple.iTunes:Acoustid Fingerprint": "acoustid_fingerprint", 3275 + "----:com.apple.iTunes:MusicIP PUID": "musicip_puid", 3276 + "----:com.apple.iTunes:fingerprint": "musicip_fingerprint", 3277 + "----:com.apple.iTunes:replaygain_track_gain": "replaygain_track_gain", 3278 + "----:com.apple.iTunes:replaygain_track_peak": "replaygain_track_peak", 3279 + "----:com.apple.iTunes:replaygain_album_gain": "replaygain_album_gain", 3280 + "----:com.apple.iTunes:replaygain_album_peak": "replaygain_album_peak", 3281 + "----:com.apple.iTunes:replaygain_track_minmax": "replaygain_track_minmax", 3282 + "----:com.apple.iTunes:replaygain_album_minmax": "replaygain_album_minmax", 3283 + "----:com.apple.iTunes:replaygain_undo": "replaygain_undo", 3284 + // Additional mappings: 3285 + gnre: "genre", 3286 + // ToDo: check mapping 3287 + "----:com.apple.iTunes:ALBUMARTISTSORT": "albumartistsort", 3288 + "----:com.apple.iTunes:ARTISTS": "artists", 3289 + "----:com.apple.iTunes:ORIGINALDATE": "originaldate", 3290 + "----:com.apple.iTunes:ORIGINALYEAR": "originalyear", 3291 + "----:com.apple.iTunes:RELEASEDATE": "releasedate", 3292 + // '----:com.apple.iTunes:PERFORMER': 'performer' 3293 + desc: "description", 3294 + ldes: "longDescription", 3295 + "\xA9mvn": "movement", 3296 + "\xA9mvi": "movementIndex", 3297 + "\xA9mvc": "movementTotal", 3298 + "\xA9wrk": "work", 3299 + catg: "category", 3300 + egid: "podcastId", 3301 + hdvd: "hdVideo", 3302 + keyw: "keywords", 3303 + shwm: "showMovement", 3304 + stik: "stik", 3305 + rate: "rating" 3306 + }; 3307 + var tagType = "iTunes"; 3308 + var MP4TagMapper = class extends CaseInsensitiveTagMap { 3309 + static { 3310 + __name(this, "MP4TagMapper"); 3311 + } 3312 + constructor() { 3313 + super([tagType], mp4TagMap); 3314 + } 3315 + postMap(tag, _warnings) { 3316 + switch (tag.id) { 3317 + case "rate": 3318 + tag.value = { 3319 + source: void 0, 3320 + rating: Number.parseFloat(tag.value) / 100 3321 + }; 3322 + break; 3323 + } 3324 + } 3325 + }; 3326 + 3327 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js 3328 + init_Buffer(); 3329 + init_process(); 3330 + var vorbisTagMap = { 3331 + TITLE: "title", 3332 + ARTIST: "artist", 3333 + ARTISTS: "artists", 3334 + ALBUMARTIST: "albumartist", 3335 + "ALBUM ARTIST": "albumartist", 3336 + ALBUM: "album", 3337 + DATE: "date", 3338 + ORIGINALDATE: "originaldate", 3339 + ORIGINALYEAR: "originalyear", 3340 + RELEASEDATE: "releasedate", 3341 + COMMENT: "comment", 3342 + TRACKNUMBER: "track", 3343 + DISCNUMBER: "disk", 3344 + GENRE: "genre", 3345 + METADATA_BLOCK_PICTURE: "picture", 3346 + COMPOSER: "composer", 3347 + LYRICS: "lyrics", 3348 + ALBUMSORT: "albumsort", 3349 + TITLESORT: "titlesort", 3350 + WORK: "work", 3351 + ARTISTSORT: "artistsort", 3352 + ALBUMARTISTSORT: "albumartistsort", 3353 + COMPOSERSORT: "composersort", 3354 + LYRICIST: "lyricist", 3355 + WRITER: "writer", 3356 + CONDUCTOR: "conductor", 3357 + // 'PERFORMER=artist (instrument)': 'performer:instrument', // ToDo 3358 + REMIXER: "remixer", 3359 + ARRANGER: "arranger", 3360 + ENGINEER: "engineer", 3361 + PRODUCER: "producer", 3362 + DJMIXER: "djmixer", 3363 + MIXER: "mixer", 3364 + LABEL: "label", 3365 + GROUPING: "grouping", 3366 + SUBTITLE: "subtitle", 3367 + DISCSUBTITLE: "discsubtitle", 3368 + TRACKTOTAL: "totaltracks", 3369 + DISCTOTAL: "totaldiscs", 3370 + COMPILATION: "compilation", 3371 + RATING: "rating", 3372 + BPM: "bpm", 3373 + KEY: "key", 3374 + MOOD: "mood", 3375 + MEDIA: "media", 3376 + CATALOGNUMBER: "catalognumber", 3377 + RELEASESTATUS: "releasestatus", 3378 + RELEASETYPE: "releasetype", 3379 + RELEASECOUNTRY: "releasecountry", 3380 + SCRIPT: "script", 3381 + LANGUAGE: "language", 3382 + COPYRIGHT: "copyright", 3383 + LICENSE: "license", 3384 + ENCODEDBY: "encodedby", 3385 + ENCODERSETTINGS: "encodersettings", 3386 + BARCODE: "barcode", 3387 + ISRC: "isrc", 3388 + ASIN: "asin", 3389 + MUSICBRAINZ_TRACKID: "musicbrainz_recordingid", 3390 + MUSICBRAINZ_RELEASETRACKID: "musicbrainz_trackid", 3391 + MUSICBRAINZ_ALBUMID: "musicbrainz_albumid", 3392 + MUSICBRAINZ_ARTISTID: "musicbrainz_artistid", 3393 + MUSICBRAINZ_ALBUMARTISTID: "musicbrainz_albumartistid", 3394 + MUSICBRAINZ_RELEASEGROUPID: "musicbrainz_releasegroupid", 3395 + MUSICBRAINZ_WORKID: "musicbrainz_workid", 3396 + MUSICBRAINZ_TRMID: "musicbrainz_trmid", 3397 + MUSICBRAINZ_DISCID: "musicbrainz_discid", 3398 + ACOUSTID_ID: "acoustid_id", 3399 + ACOUSTID_ID_FINGERPRINT: "acoustid_fingerprint", 3400 + MUSICIP_PUID: "musicip_puid", 3401 + // 'FINGERPRINT=MusicMagic Fingerprint {fingerprint}': 'musicip_fingerprint', // ToDo 3402 + WEBSITE: "website", 3403 + NOTES: "notes", 3404 + TOTALTRACKS: "totaltracks", 3405 + TOTALDISCS: "totaldiscs", 3406 + // Discogs 3407 + DISCOGS_ARTIST_ID: "discogs_artist_id", 3408 + DISCOGS_ARTISTS: "artists", 3409 + DISCOGS_ARTIST_NAME: "artists", 3410 + DISCOGS_ALBUM_ARTISTS: "albumartist", 3411 + DISCOGS_CATALOG: "catalognumber", 3412 + DISCOGS_COUNTRY: "releasecountry", 3413 + DISCOGS_DATE: "originaldate", 3414 + DISCOGS_LABEL: "label", 3415 + DISCOGS_LABEL_ID: "discogs_label_id", 3416 + DISCOGS_MASTER_RELEASE_ID: "discogs_master_release_id", 3417 + DISCOGS_RATING: "discogs_rating", 3418 + DISCOGS_RELEASED: "date", 3419 + DISCOGS_RELEASE_ID: "discogs_release_id", 3420 + DISCOGS_VOTES: "discogs_votes", 3421 + CATALOGID: "catalognumber", 3422 + STYLE: "genre", 3423 + // 3424 + REPLAYGAIN_TRACK_GAIN: "replaygain_track_gain", 3425 + REPLAYGAIN_TRACK_PEAK: "replaygain_track_peak", 3426 + REPLAYGAIN_ALBUM_GAIN: "replaygain_album_gain", 3427 + REPLAYGAIN_ALBUM_PEAK: "replaygain_album_peak", 3428 + // To Sure if these (REPLAYGAIN_MINMAX, REPLAYGAIN_ALBUM_MINMAX & REPLAYGAIN_UNDO) are used for Vorbis: 3429 + REPLAYGAIN_MINMAX: "replaygain_track_minmax", 3430 + REPLAYGAIN_ALBUM_MINMAX: "replaygain_album_minmax", 3431 + REPLAYGAIN_UNDO: "replaygain_undo" 3432 + }; 3433 + var VorbisTagMapper = class _VorbisTagMapper extends CommonTagMapper { 3434 + static { 3435 + __name(this, "VorbisTagMapper"); 3436 + } 3437 + static toRating(email, rating, maxScore) { 3438 + return { 3439 + source: email ? email.toLowerCase() : void 0, 3440 + rating: Number.parseFloat(rating) / maxScore * CommonTagMapper.maxRatingScore 3441 + }; 3442 + } 3443 + constructor() { 3444 + super(["vorbis"], vorbisTagMap); 3445 + } 3446 + postMap(tag) { 3447 + if (tag.id === "RATING") { 3448 + tag.value = _VorbisTagMapper.toRating(void 0, tag.value, 100); 3449 + } else if (tag.id.indexOf("RATING:") === 0) { 3450 + const keys = tag.id.split(":"); 3451 + tag.value = _VorbisTagMapper.toRating(keys[1], tag.value, 1); 3452 + tag.id = keys[0]; 3453 + } 3454 + } 3455 + }; 3456 + 3457 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/riff/RiffInfoTagMap.js 3458 + init_Buffer(); 3459 + init_process(); 3460 + var riffInfoTagMap = { 3461 + IART: "artist", 3462 + // Artist 3463 + ICRD: "date", 3464 + // DateCreated 3465 + INAM: "title", 3466 + // Title 3467 + TITL: "title", 3468 + IPRD: "album", 3469 + // Product 3470 + ITRK: "track", 3471 + IPRT: "track", 3472 + // Additional tag for track index 3473 + COMM: "comment", 3474 + // Comments 3475 + ICMT: "comment", 3476 + // Country 3477 + ICNT: "releasecountry", 3478 + GNRE: "genre", 3479 + // Genre 3480 + IWRI: "writer", 3481 + // WrittenBy 3482 + RATE: "rating", 3483 + YEAR: "year", 3484 + ISFT: "encodedby", 3485 + // Software 3486 + CODE: "encodedby", 3487 + // EncodedBy 3488 + TURL: "website", 3489 + // URL, 3490 + IGNR: "genre", 3491 + // Genre 3492 + IENG: "engineer", 3493 + // Engineer 3494 + ITCH: "technician", 3495 + // Technician 3496 + IMED: "media", 3497 + // Original Media 3498 + IRPD: "album" 3499 + // Product, where the file was intended for 3500 + }; 3501 + var RiffInfoTagMapper = class extends CommonTagMapper { 3502 + static { 3503 + __name(this, "RiffInfoTagMapper"); 3504 + } 3505 + constructor() { 3506 + super(["exif"], riffInfoTagMap); 3507 + } 3508 + }; 3509 + 3510 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/matroska/MatroskaTagMapper.js 3511 + init_Buffer(); 3512 + init_process(); 3513 + var ebmlTagMap = { 3514 + "segment:title": "title", 3515 + "album:ARTIST": "albumartist", 3516 + "album:ARTISTSORT": "albumartistsort", 3517 + "album:TITLE": "album", 3518 + "album:DATE_RECORDED": "originaldate", 3519 + "album:DATE_RELEASED": "releasedate", 3520 + "album:PART_NUMBER": "disk", 3521 + "album:TOTAL_PARTS": "totaltracks", 3522 + "track:ARTIST": "artist", 3523 + "track:ARTISTSORT": "artistsort", 3524 + "track:TITLE": "title", 3525 + "track:PART_NUMBER": "track", 3526 + "track:MUSICBRAINZ_TRACKID": "musicbrainz_recordingid", 3527 + "track:MUSICBRAINZ_ALBUMID": "musicbrainz_albumid", 3528 + "track:MUSICBRAINZ_ARTISTID": "musicbrainz_artistid", 3529 + "track:PUBLISHER": "label", 3530 + "track:GENRE": "genre", 3531 + "track:ENCODER": "encodedby", 3532 + "track:ENCODER_OPTIONS": "encodersettings", 3533 + "edition:TOTAL_PARTS": "totaldiscs", 3534 + picture: "picture" 3535 + }; 3536 + var MatroskaTagMapper = class extends CaseInsensitiveTagMap { 3537 + static { 3538 + __name(this, "MatroskaTagMapper"); 3539 + } 3540 + constructor() { 3541 + super(["matroska"], ebmlTagMap); 3542 + } 3543 + }; 3544 + 3545 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/aiff/AiffTagMap.js 3546 + init_Buffer(); 3547 + init_process(); 3548 + var tagMap = { 3549 + NAME: "title", 3550 + AUTH: "artist", 3551 + "(c) ": "copyright", 3552 + ANNO: "comment" 3553 + }; 3554 + var AiffTagMapper = class extends CommonTagMapper { 3555 + static { 3556 + __name(this, "AiffTagMapper"); 3557 + } 3558 + constructor() { 3559 + super(["AIFF"], tagMap); 3560 + } 3561 + }; 3562 + 3563 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/CombinedTagMapper.js 3564 + var CombinedTagMapper = class { 3565 + static { 3566 + __name(this, "CombinedTagMapper"); 3567 + } 3568 + constructor() { 3569 + this.tagMappers = {}; 3570 + [ 3571 + new ID3v1TagMapper(), 3572 + new ID3v22TagMapper(), 3573 + new ID3v24TagMapper(), 3574 + new MP4TagMapper(), 3575 + new MP4TagMapper(), 3576 + new VorbisTagMapper(), 3577 + new APEv2TagMapper(), 3578 + new AsfTagMapper(), 3579 + new RiffInfoTagMapper(), 3580 + new MatroskaTagMapper(), 3581 + new AiffTagMapper() 3582 + ].forEach((mapper) => { 3583 + this.registerTagMapper(mapper); 3584 + }); 3585 + } 3586 + /** 3587 + * Convert native to generic (common) tags 3588 + * @param tagType Originating tag format 3589 + * @param tag Native tag to map to a generic tag id 3590 + * @param warnings 3591 + * @return Generic tag result (output of this function) 3592 + */ 3593 + mapTag(tagType2, tag, warnings) { 3594 + const tagMapper = this.tagMappers[tagType2]; 3595 + if (tagMapper) { 3596 + return this.tagMappers[tagType2].mapGenericTag(tag, warnings); 3597 + } 3598 + throw new InternalParserError(`No generic tag mapper defined for tag-format: ${tagType2}`); 3599 + } 3600 + registerTagMapper(genericTagMapper) { 3601 + for (const tagType2 of genericTagMapper.tagTypes) { 3602 + this.tagMappers[tagType2] = genericTagMapper; 3603 + } 3604 + } 3605 + }; 3606 + 3607 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/lrc/LyricsParser.js 3608 + init_Buffer(); 3609 + init_process(); 3610 + var TIMESTAMP_REGEX = /\[(\d{2}):(\d{2})\.(\d{2,3})]/; 3611 + function parseLyrics(input) { 3612 + if (TIMESTAMP_REGEX.test(input)) { 3613 + return parseLrc(input); 3614 + } 3615 + return toUnsyncedLyrics(input); 3616 + } 3617 + __name(parseLyrics, "parseLyrics"); 3618 + function toUnsyncedLyrics(lyrics) { 3619 + return { 3620 + contentType: LyricsContentType.lyrics, 3621 + timeStampFormat: TimestampFormat.notSynchronized, 3622 + text: lyrics.trim(), 3623 + syncText: [] 3624 + }; 3625 + } 3626 + __name(toUnsyncedLyrics, "toUnsyncedLyrics"); 3627 + function parseLrc(lrcString) { 3628 + const lines = lrcString.split("\n"); 3629 + const syncText = []; 3630 + for (const line of lines) { 3631 + const match = line.match(TIMESTAMP_REGEX); 3632 + if (match) { 3633 + const minutes = Number.parseInt(match[1], 10); 3634 + const seconds = Number.parseInt(match[2], 10); 3635 + const ms = match[3].length === 3 ? Number.parseInt(match[3], 10) : Number.parseInt(match[3], 10) * 10; 3636 + const timestamp = (minutes * 60 + seconds) * 1e3 + ms; 3637 + const text = line.replace(TIMESTAMP_REGEX, "").trim(); 3638 + syncText.push({ timestamp, text }); 3639 + } 3640 + } 3641 + return { 3642 + contentType: LyricsContentType.lyrics, 3643 + timeStampFormat: TimestampFormat.milliseconds, 3644 + text: syncText.map((line) => line.text).join("\n"), 3645 + syncText 3646 + }; 3647 + } 3648 + __name(parseLrc, "parseLrc"); 3649 + 3650 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/MetadataCollector.js 3651 + var debug2 = (0, import_debug2.default)("music-metadata:collector"); 3652 + var TagPriority = ["matroska", "APEv2", "vorbis", "ID3v2.4", "ID3v2.3", "ID3v2.2", "exif", "asf", "iTunes", "AIFF", "ID3v1"]; 3653 + var MetadataCollector = class { 3654 + static { 3655 + __name(this, "MetadataCollector"); 3656 + } 3657 + constructor(opts) { 3658 + this.format = { 3659 + tagTypes: [], 3660 + trackInfo: [] 3661 + }; 3662 + this.native = {}; 3663 + this.common = { 3664 + track: { no: null, of: null }, 3665 + disk: { no: null, of: null }, 3666 + movementIndex: { no: null, of: null } 3667 + }; 3668 + this.quality = { 3669 + warnings: [] 3670 + }; 3671 + this.commonOrigin = {}; 3672 + this.originPriority = {}; 3673 + this.tagMapper = new CombinedTagMapper(); 3674 + this.opts = opts; 3675 + let priority = 1; 3676 + for (const tagType2 of TagPriority) { 3677 + this.originPriority[tagType2] = priority++; 3678 + } 3679 + this.originPriority.artificial = 500; 3680 + this.originPriority.id3v1 = 600; 3681 + } 3682 + /** 3683 + * @returns {boolean} true if one or more tags have been found 3684 + */ 3685 + hasAny() { 3686 + return Object.keys(this.native).length > 0; 3687 + } 3688 + addStreamInfo(streamInfo) { 3689 + debug2(`streamInfo: type=${streamInfo.type ? TrackTypeValueToKeyMap[streamInfo.type] : "?"}, codec=${streamInfo.codecName}`); 3690 + this.format.trackInfo.push(streamInfo); 3691 + } 3692 + setFormat(key, value) { 3693 + debug2(`format: ${key} = ${value}`); 3694 + this.format[key] = value; 3695 + if (this.opts?.observer) { 3696 + this.opts.observer({ metadata: this, tag: { type: "format", id: key, value } }); 3697 + } 3698 + } 3699 + setAudioOnly() { 3700 + this.setFormat("hasAudio", true); 3701 + this.setFormat("hasVideo", false); 3702 + } 3703 + async addTag(tagType2, tagId, value) { 3704 + debug2(`tag ${tagType2}.${tagId} = ${value}`); 3705 + if (!this.native[tagType2]) { 3706 + this.format.tagTypes.push(tagType2); 3707 + this.native[tagType2] = []; 3708 + } 3709 + this.native[tagType2].push({ id: tagId, value }); 3710 + await this.toCommon(tagType2, tagId, value); 3711 + } 3712 + addWarning(warning) { 3713 + this.quality.warnings.push({ message: warning }); 3714 + } 3715 + async postMap(tagType2, tag) { 3716 + switch (tag.id) { 3717 + case "artist": 3718 + return this.handleSingularArtistTag(tagType2, tag, "artist", "artists"); 3719 + case "albumartist": 3720 + return this.handleSingularArtistTag(tagType2, tag, "albumartist", "albumartists"); 3721 + case "artists": 3722 + return this.handlePluralArtistTag(tagType2, tag, "artist", "artists"); 3723 + case "albumartists": 3724 + return this.handlePluralArtistTag(tagType2, tag, "albumartist", "albumartists"); 3725 + case "picture": 3726 + return this.postFixPicture(tag.value).then((picture) => { 3727 + if (picture !== null) { 3728 + tag.value = picture; 3729 + this.setGenericTag(tagType2, tag); 3730 + } 3731 + }); 3732 + case "totaltracks": 3733 + this.common.track.of = CommonTagMapper.toIntOrNull(tag.value); 3734 + return; 3735 + case "totaldiscs": 3736 + this.common.disk.of = CommonTagMapper.toIntOrNull(tag.value); 3737 + return; 3738 + case "movementTotal": 3739 + this.common.movementIndex.of = CommonTagMapper.toIntOrNull(tag.value); 3740 + return; 3741 + case "track": 3742 + case "disk": 3743 + case "movementIndex": { 3744 + const of = this.common[tag.id].of; 3745 + this.common[tag.id] = CommonTagMapper.normalizeTrack(tag.value); 3746 + this.common[tag.id].of = of != null ? of : this.common[tag.id].of; 3747 + return; 3748 + } 3749 + case "bpm": 3750 + case "year": 3751 + case "originalyear": 3752 + tag.value = Number.parseInt(tag.value, 10); 3753 + break; 3754 + case "date": { 3755 + const year = Number.parseInt(tag.value.substr(0, 4), 10); 3756 + if (!Number.isNaN(year)) { 3757 + this.common.year = year; 3758 + } 3759 + break; 3760 + } 3761 + case "discogs_label_id": 3762 + case "discogs_release_id": 3763 + case "discogs_master_release_id": 3764 + case "discogs_artist_id": 3765 + case "discogs_votes": 3766 + tag.value = typeof tag.value === "string" ? Number.parseInt(tag.value, 10) : tag.value; 3767 + break; 3768 + case "replaygain_track_gain": 3769 + case "replaygain_track_peak": 3770 + case "replaygain_album_gain": 3771 + case "replaygain_album_peak": 3772 + tag.value = toRatio(tag.value); 3773 + break; 3774 + case "replaygain_track_minmax": 3775 + tag.value = tag.value.split(",").map((v) => Number.parseInt(v, 10)); 3776 + break; 3777 + case "replaygain_undo": { 3778 + const minMix = tag.value.split(",").map((v) => Number.parseInt(v, 10)); 3779 + tag.value = { 3780 + leftChannel: minMix[0], 3781 + rightChannel: minMix[1] 3782 + }; 3783 + break; 3784 + } 3785 + case "gapless": 3786 + // iTunes gap-less flag 3787 + case "compilation": 3788 + case "podcast": 3789 + case "showMovement": 3790 + tag.value = tag.value === "1" || tag.value === 1; 3791 + break; 3792 + case "isrc": { 3793 + const commonTag = this.common[tag.id]; 3794 + if (commonTag && commonTag.indexOf(tag.value) !== -1) 3795 + return; 3796 + break; 3797 + } 3798 + case "comment": 3799 + if (typeof tag.value === "string") { 3800 + tag.value = { text: tag.value }; 3801 + } 3802 + if (tag.value.descriptor === "iTunPGAP") { 3803 + this.setGenericTag(tagType2, { id: "gapless", value: tag.value.text === "1" }); 3804 + } 3805 + break; 3806 + case "lyrics": 3807 + if (typeof tag.value === "string") { 3808 + tag.value = parseLyrics(tag.value); 3809 + } 3810 + break; 3811 + default: 3812 + } 3813 + if (tag.value !== null) { 3814 + this.setGenericTag(tagType2, tag); 3815 + } 3816 + } 3817 + /** 3818 + * Convert native tags to common tags 3819 + * @returns {IAudioMetadata} Native + common tags 3820 + */ 3821 + toCommonMetadata() { 3822 + return { 3823 + format: this.format, 3824 + native: this.native, 3825 + quality: this.quality, 3826 + common: this.common 3827 + }; 3828 + } 3829 + /** 3830 + * Handle singular artist tags (artist, albumartist) and cross-populate to plural form 3831 + */ 3832 + handleSingularArtistTag(tagType2, tag, singularId, pluralId) { 3833 + if (this.commonOrigin[singularId] === this.originPriority[tagType2]) { 3834 + return this.postMap("artificial", { id: pluralId, value: tag.value }); 3835 + } 3836 + if (!this.common[pluralId]) { 3837 + this.setGenericTag("artificial", { id: pluralId, value: tag.value }); 3838 + } 3839 + this.setGenericTag(tagType2, tag); 3840 + } 3841 + /** 3842 + * Handle plural artist tags (artists, albumartists) and cross-populate to singular form 3843 + */ 3844 + handlePluralArtistTag(tagType2, tag, singularId, pluralId) { 3845 + if (!this.common[singularId] || this.commonOrigin[singularId] === this.originPriority.artificial) { 3846 + if (!this.common[pluralId] || this.common[pluralId].indexOf(tag.value) === -1) { 3847 + const values = (this.common[pluralId] || []).concat([tag.value]); 3848 + const value = joinArtists(values); 3849 + this.setGenericTag("artificial", { id: singularId, value }); 3850 + } 3851 + } 3852 + this.setGenericTag(tagType2, tag); 3853 + } 3854 + /** 3855 + * Fix some common issues with picture object 3856 + * @param picture Picture 3857 + */ 3858 + async postFixPicture(picture) { 3859 + if (picture.data && picture.data.length > 0) { 3860 + if (!picture.format) { 3861 + const fileType = await fileTypeFromBuffer(Uint8Array.from(picture.data)); 3862 + if (fileType) { 3863 + picture.format = fileType.mime; 3864 + } else { 3865 + return null; 3866 + } 3867 + } 3868 + picture.format = picture.format.toLocaleLowerCase(); 3869 + switch (picture.format) { 3870 + case "image/jpg": 3871 + picture.format = "image/jpeg"; 3872 + } 3873 + return picture; 3874 + } 3875 + this.addWarning("Empty picture tag found"); 3876 + return null; 3877 + } 3878 + /** 3879 + * Convert native tag to common tags 3880 + */ 3881 + async toCommon(tagType2, tagId, value) { 3882 + const tag = { id: tagId, value }; 3883 + const genericTag = this.tagMapper.mapTag(tagType2, tag, this); 3884 + if (genericTag) { 3885 + await this.postMap(tagType2, genericTag); 3886 + } 3887 + } 3888 + /** 3889 + * Set generic tag 3890 + */ 3891 + setGenericTag(tagType2, tag) { 3892 + debug2(`common.${tag.id} = ${tag.value}`); 3893 + const prio0 = this.commonOrigin[tag.id] || 1e3; 3894 + const prio1 = this.originPriority[tagType2]; 3895 + if (isSingleton(tag.id)) { 3896 + if (prio1 <= prio0) { 3897 + this.common[tag.id] = tag.value; 3898 + this.commonOrigin[tag.id] = prio1; 3899 + } else { 3900 + return debug2(`Ignore native tag (singleton): ${tagType2}.${tag.id} = ${tag.value}`); 3901 + } 3902 + } else { 3903 + if (prio1 === prio0) { 3904 + if (!isUnique(tag.id) || this.common[tag.id].indexOf(tag.value) === -1) { 3905 + this.common[tag.id].push(tag.value); 3906 + } else { 3907 + debug2(`Ignore duplicate value: ${tagType2}.${tag.id} = ${tag.value}`); 3908 + } 3909 + } else if (prio1 < prio0) { 3910 + this.common[tag.id] = [tag.value]; 3911 + this.commonOrigin[tag.id] = prio1; 3912 + } else { 3913 + return debug2(`Ignore native tag (list): ${tagType2}.${tag.id} = ${tag.value}`); 3914 + } 3915 + } 3916 + if (this.opts?.observer) { 3917 + this.opts.observer({ metadata: this, tag: { type: "common", id: tag.id, value: tag.value } }); 3918 + } 3919 + } 3920 + }; 3921 + function joinArtists(artists) { 3922 + if (artists.length > 2) { 3923 + return `${artists.slice(0, artists.length - 1).join(", ")} & ${artists[artists.length - 1]}`; 3924 + } 3925 + return artists.join(" & "); 3926 + } 3927 + __name(joinArtists, "joinArtists"); 3928 + 3929 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/mpeg/MpegLoader.js 3930 + init_Buffer(); 3931 + init_process(); 3932 + var mpegParserLoader = { 3933 + parserType: "mpeg", 3934 + extensions: [".mp2", ".mp3", ".m2a", ".aac", "aacp"], 3935 + mimeTypes: ["audio/mpeg", "audio/mp3", "audio/aacs", "audio/aacp"], 3936 + async load() { 3937 + return (await import("./MpegParser-BNW6GDHZ.js")).MpegParser; 3938 + } 3939 + }; 3940 + 3941 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/apev2/Apev2Loader.js 3942 + init_Buffer(); 3943 + init_process(); 3944 + var apeParserLoader = { 3945 + parserType: "apev2", 3946 + extensions: [".ape"], 3947 + mimeTypes: ["audio/ape", "audio/monkeys-audio"], 3948 + async load() { 3949 + return (await import("./APEv2Parser-JBT6ZPPL.js")).APEv2Parser; 3950 + } 3951 + }; 3952 + 3953 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/asf/AsfLoader.js 3954 + init_Buffer(); 3955 + init_process(); 3956 + var asfParserLoader = { 3957 + parserType: "asf", 3958 + extensions: [".asf"], 3959 + mimeTypes: ["audio/ms-wma", "video/ms-wmv", "audio/ms-asf", "video/ms-asf", "application/vnd.ms-asf"], 3960 + async load() { 3961 + return (await import("./AsfParser-K6K2MCFT.js")).AsfParser; 3962 + } 3963 + }; 3964 + 3965 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/dsdiff/DsdiffLoader.js 3966 + init_Buffer(); 3967 + init_process(); 3968 + var dsdiffParserLoader = { 3969 + parserType: "dsdiff", 3970 + extensions: [".dff"], 3971 + mimeTypes: ["audio/dsf", "audio/dsd"], 3972 + async load() { 3973 + return (await import("./DsdiffParser-RX5L67QC.js")).DsdiffParser; 3974 + } 3975 + }; 3976 + 3977 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/aiff/AiffLoader.js 3978 + init_Buffer(); 3979 + init_process(); 3980 + var aiffParserLoader = { 3981 + parserType: "aiff", 3982 + extensions: [".aif", "aiff", "aifc"], 3983 + mimeTypes: ["audio/aiff", "audio/aif", "audio/aifc", "application/aiff"], 3984 + async load() { 3985 + return (await import("./AiffParser-7J3JIU4R.js")).AIFFParser; 3986 + } 3987 + }; 3988 + 3989 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/dsf/DsfLoader.js 3990 + init_Buffer(); 3991 + init_process(); 3992 + var dsfParserLoader = { 3993 + parserType: "dsf", 3994 + extensions: [".dsf"], 3995 + mimeTypes: ["audio/dsf"], 3996 + async load() { 3997 + return (await import("./DsfParser-SEGRVUZ3.js")).DsfParser; 3998 + } 3999 + }; 4000 + 4001 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/flac/FlacLoader.js 4002 + init_Buffer(); 4003 + init_process(); 4004 + var flacParserLoader = { 4005 + parserType: "flac", 4006 + extensions: [".flac"], 4007 + mimeTypes: ["audio/flac"], 4008 + async load() { 4009 + return (await import("./FlacParser-JAF54BZM.js")).FlacParser; 4010 + } 4011 + }; 4012 + 4013 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/matroska/MatroskaLoader.js 4014 + init_Buffer(); 4015 + init_process(); 4016 + var matroskaParserLoader = { 4017 + parserType: "matroska", 4018 + extensions: [".mka", ".mkv", ".mk3d", ".mks", "webm"], 4019 + mimeTypes: ["audio/matroska", "video/matroska", "audio/webm", "video/webm"], 4020 + async load() { 4021 + return (await import("./MatroskaParser-2BD5GINE.js")).MatroskaParser; 4022 + } 4023 + }; 4024 + 4025 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/mp4/Mp4Loader.js 4026 + init_Buffer(); 4027 + init_process(); 4028 + var mp4ParserLoader = { 4029 + parserType: "mp4", 4030 + extensions: [".mp4", ".m4a", ".m4b", ".m4pa", "m4v", "m4r", "3gp", ".mov", ".movie", ".qt"], 4031 + mimeTypes: ["audio/mp4", "audio/m4a", "video/m4v", "video/mp4", "video/quicktime"], 4032 + async load() { 4033 + return (await import("./MP4Parser-TI5DETOV.js")).MP4Parser; 4034 + } 4035 + }; 4036 + 4037 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/musepack/MusepackLoader.js 4038 + init_Buffer(); 4039 + init_process(); 4040 + var musepackParserLoader = { 4041 + parserType: "musepack", 4042 + extensions: [".mpc"], 4043 + mimeTypes: ["audio/musepack"], 4044 + async load() { 4045 + return (await import("./MusepackParser-AOTNNUS6.js")).MusepackParser; 4046 + } 4047 + }; 4048 + 4049 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ogg/OggLoader.js 4050 + init_Buffer(); 4051 + init_process(); 4052 + var oggParserLoader = { 4053 + parserType: "ogg", 4054 + extensions: [".ogg", ".ogv", ".oga", ".ogm", ".ogx", ".opus", ".spx"], 4055 + mimeTypes: ["audio/ogg", "audio/opus", "audio/speex", "video/ogg"], 4056 + // RFC 7845, RFC 6716, RFC 5574 4057 + async load() { 4058 + return (await import("./OggParser-UNPX7QR4.js")).OggParser; 4059 + } 4060 + }; 4061 + 4062 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/wavpack/WavPackLoader.js 4063 + init_Buffer(); 4064 + init_process(); 4065 + var wavpackParserLoader = { 4066 + parserType: "wavpack", 4067 + extensions: [".wv", ".wvp"], 4068 + mimeTypes: ["audio/wavpack"], 4069 + async load() { 4070 + return (await import("./WavPackParser-BRAHRFOP.js")).WavPackParser; 4071 + } 4072 + }; 4073 + 4074 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/wav/WaveLoader.js 4075 + init_Buffer(); 4076 + init_process(); 4077 + var riffParserLoader = { 4078 + parserType: "riff", 4079 + extensions: [".wav", "wave", ".bwf"], 4080 + mimeTypes: ["audio/vnd.wave", "audio/wav", "audio/wave"], 4081 + async load() { 4082 + return (await import("./WaveParser-EPX6CXTY.js")).WaveParser; 4083 + } 4084 + }; 4085 + 4086 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ParserFactory.js 4087 + var debug3 = (0, import_debug3.default)("music-metadata:parser:factory"); 4088 + function parseHttpContentType(contentType) { 4089 + const type = import_content_type.default.parse(contentType); 4090 + const mime = (0, import_media_typer.parse)(type.type); 4091 + return { 4092 + type: mime.type, 4093 + subtype: mime.subtype, 4094 + suffix: mime.suffix, 4095 + parameters: type.parameters 4096 + }; 4097 + } 4098 + __name(parseHttpContentType, "parseHttpContentType"); 4099 + var ParserFactory = class { 4100 + static { 4101 + __name(this, "ParserFactory"); 4102 + } 4103 + constructor() { 4104 + this.parsers = []; 4105 + [ 4106 + flacParserLoader, 4107 + mpegParserLoader, 4108 + apeParserLoader, 4109 + mp4ParserLoader, 4110 + matroskaParserLoader, 4111 + riffParserLoader, 4112 + oggParserLoader, 4113 + asfParserLoader, 4114 + aiffParserLoader, 4115 + wavpackParserLoader, 4116 + musepackParserLoader, 4117 + dsfParserLoader, 4118 + dsdiffParserLoader 4119 + ].forEach((parser) => { 4120 + this.registerParser(parser); 4121 + }); 4122 + } 4123 + registerParser(parser) { 4124 + this.parsers.push(parser); 4125 + } 4126 + async parse(tokenizer3, parserLoader, opts) { 4127 + if (tokenizer3.supportsRandomAccess()) { 4128 + debug3("tokenizer supports random-access, scanning for appending headers"); 4129 + await scanAppendingHeaders(tokenizer3, opts); 4130 + } else { 4131 + debug3("tokenizer does not support random-access, cannot scan for appending headers"); 4132 + } 4133 + if (!parserLoader) { 4134 + const buf = new Uint8Array(4100); 4135 + if (tokenizer3.fileInfo.mimeType) { 4136 + parserLoader = this.findLoaderForContentType(tokenizer3.fileInfo.mimeType); 4137 + } 4138 + if (!parserLoader && tokenizer3.fileInfo.path) { 4139 + parserLoader = this.findLoaderForExtension(tokenizer3.fileInfo.path); 4140 + } 4141 + if (!parserLoader) { 4142 + debug3("Guess parser on content..."); 4143 + await tokenizer3.peekBuffer(buf, { mayBeLess: true }); 4144 + const guessedType = await fileTypeFromBuffer(buf, { mpegOffsetTolerance: 10 }); 4145 + if (!guessedType || !guessedType.mime) { 4146 + throw new CouldNotDetermineFileTypeError("Failed to determine audio format"); 4147 + } 4148 + debug3(`Guessed file type is mime=${guessedType.mime}, extension=${guessedType.ext}`); 4149 + parserLoader = this.findLoaderForContentType(guessedType.mime); 4150 + if (!parserLoader) { 4151 + throw new UnsupportedFileTypeError(`Guessed MIME-type not supported: ${guessedType.mime}`); 4152 + } 4153 + } 4154 + } 4155 + debug3(`Loading ${parserLoader.parserType} parser...`); 4156 + const metadata = new MetadataCollector(opts); 4157 + const ParserImpl = await parserLoader.load(); 4158 + const parser = new ParserImpl(metadata, tokenizer3, opts ?? {}); 4159 + debug3(`Parser ${parserLoader.parserType} loaded`); 4160 + await parser.parse(); 4161 + if (metadata.format.trackInfo) { 4162 + if (metadata.format.hasAudio === void 0) { 4163 + metadata.setFormat("hasAudio", !!metadata.format.trackInfo.find((track) => track.type === TrackType.audio)); 4164 + } 4165 + if (metadata.format.hasVideo === void 0) { 4166 + metadata.setFormat("hasVideo", !!metadata.format.trackInfo.find((track) => track.type === TrackType.video)); 4167 + } 4168 + } 4169 + return metadata.toCommonMetadata(); 4170 + } 4171 + /** 4172 + * @param filePath - Path, filename or extension to audio file 4173 + * @return Parser submodule name 4174 + */ 4175 + findLoaderForExtension(filePath) { 4176 + if (!filePath) 4177 + return; 4178 + const extension = getExtension(filePath).toLocaleLowerCase() || filePath; 4179 + return this.parsers.find((parser) => parser.extensions.indexOf(extension) !== -1); 4180 + } 4181 + findLoaderForContentType(httpContentType) { 4182 + let mime; 4183 + if (!httpContentType) 4184 + return; 4185 + try { 4186 + mime = parseHttpContentType(httpContentType); 4187 + } catch (_err) { 4188 + debug3(`Invalid HTTP Content-Type header value: ${httpContentType}`); 4189 + return; 4190 + } 4191 + const subType = mime.subtype.indexOf("x-") === 0 ? mime.subtype.substring(2) : mime.subtype; 4192 + return this.parsers.find((parser) => parser.mimeTypes.find((loader) => loader.indexOf(`${mime.type}/${subType}`) !== -1)); 4193 + } 4194 + getSupportedMimeTypes() { 4195 + const mimeTypeSet = /* @__PURE__ */ new Set(); 4196 + this.parsers.forEach((loader) => { 4197 + loader.mimeTypes.forEach((mimeType) => { 4198 + mimeTypeSet.add(mimeType); 4199 + mimeTypeSet.add(mimeType.replace("/", "/x-")); 4200 + }); 4201 + }); 4202 + return Array.from(mimeTypeSet); 4203 + } 4204 + }; 4205 + function getExtension(fname) { 4206 + const i = fname.lastIndexOf("."); 4207 + return i === -1 ? "" : fname.substring(i); 4208 + } 4209 + __name(getExtension, "getExtension"); 4210 + 4211 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/lyrics3/Lyrics3.js 4212 + init_Buffer(); 4213 + init_process(); 4214 + var endTag2 = "LYRICS200"; 4215 + async function getLyricsHeaderLength(tokenizer3) { 4216 + const fileSize = tokenizer3.fileInfo.size; 4217 + if (fileSize >= 143) { 4218 + const buf = new Uint8Array(15); 4219 + const position = tokenizer3.position; 4220 + await tokenizer3.readBuffer(buf, { position: fileSize - 143 }); 4221 + tokenizer3.setPosition(position); 4222 + const txt = textDecode(buf, "latin1"); 4223 + const tag = txt.substring(6); 4224 + if (tag === endTag2) { 4225 + return Number.parseInt(txt.substring(0, 6), 10) + 15; 4226 + } 4227 + } 4228 + return 0; 4229 + } 4230 + __name(getLyricsHeaderLength, "getLyricsHeaderLength"); 4231 + 4232 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/core.js 4233 + async function parseBlob(blob, options = {}) { 4234 + const tokenizer3 = fromBlob(blob); 4235 + try { 4236 + return await parseFromTokenizer(tokenizer3, options); 4237 + } finally { 4238 + await tokenizer3.close(); 4239 + } 4240 + } 4241 + __name(parseBlob, "parseBlob"); 4242 + async function parseWebStream(webStream, fileInfo, options = {}) { 4243 + const tokenizer3 = fromWebStream(webStream, { fileInfo: typeof fileInfo === "string" ? { mimeType: fileInfo } : fileInfo }); 4244 + try { 4245 + return await parseFromTokenizer(tokenizer3, options); 4246 + } finally { 4247 + await tokenizer3.close(); 4248 + } 4249 + } 4250 + __name(parseWebStream, "parseWebStream"); 4251 + function parseFromTokenizer(tokenizer3, options) { 4252 + const parserFactory = new ParserFactory(); 4253 + return parserFactory.parse(tokenizer3, void 0, options); 4254 + } 4255 + __name(parseFromTokenizer, "parseFromTokenizer"); 4256 + async function scanAppendingHeaders(tokenizer3, options = {}) { 4257 + let apeOffset = tokenizer3.fileInfo.size; 4258 + if (await hasID3v1Header(tokenizer3)) { 4259 + apeOffset -= 128; 4260 + const lyricsLen = await getLyricsHeaderLength(tokenizer3); 4261 + apeOffset -= lyricsLen; 4262 + } 4263 + options.apeHeader = await APEv2Parser.findApeFooterOffset(tokenizer3, apeOffset); 4264 + } 4265 + __name(scanAppendingHeaders, "scanAppendingHeaders"); 4266 + 4267 + // ../node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/index.js 4268 + var debug4 = (0, import_debug4.default)("music-metadata:parser"); 4269 + 4270 + // components/processor/metadata/common.js 4271 + var URI = __toESM(require_fast_uri()); 4272 + 4273 + // ../node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/index.js 4274 + init_Buffer(); 4275 + init_process(); 4276 + 4277 + // ../node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/http-client.js 4278 + init_Buffer(); 4279 + init_process(); 4280 + var import_debug7 = __toESM(require_src()); 4281 + 4282 + // ../node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/response-info.js 4283 + init_Buffer(); 4284 + init_process(); 4285 + 4286 + // ../node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/index.js 4287 + init_Buffer(); 4288 + init_process(); 4289 + 4290 + // ../node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/range-request-factory.js 4291 + init_Buffer(); 4292 + init_process(); 4293 + 4294 + // ../node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/range-request-tokenizer.js 4295 + init_Buffer(); 4296 + init_process(); 4297 + 4298 + // ../node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/index.js 4299 + init_Buffer(); 4300 + init_process(); 4301 + 4302 + // ../node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/core.js 4303 + init_Buffer(); 4304 + init_process(); 4305 + 4306 + // ../node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/index.js 4307 + init_Buffer(); 4308 + init_process(); 4309 + 4310 + // ../node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/EndOfStreamError.js 4311 + init_Buffer(); 4312 + init_process(); 4313 + var defaultMessages = "End-Of-Stream"; 4314 + var EndOfStreamError2 = class extends Error { 4315 + static { 4316 + __name(this, "EndOfStreamError"); 4317 + } 4318 + constructor() { 4319 + super(defaultMessages); 4320 + } 4321 + }; 4322 + 4323 + // ../node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/StreamReader.js 4324 + init_Buffer(); 4325 + init_process(); 4326 + 4327 + // ../node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/Deferred.js 4328 + init_Buffer(); 4329 + init_process(); 4330 + 4331 + // ../node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/AbstractStreamReader.js 4332 + init_Buffer(); 4333 + init_process(); 4334 + 4335 + // ../node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/WebStreamReader.js 4336 + init_Buffer(); 4337 + init_process(); 4338 + 4339 + // ../node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/ReadStreamTokenizer.js 4340 + init_Buffer(); 4341 + init_process(); 4342 + 4343 + // ../node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/AbstractTokenizer.js 4344 + init_Buffer(); 4345 + init_process(); 4346 + var AbstractTokenizer2 = class { 4347 + static { 4348 + __name(this, "AbstractTokenizer"); 4349 + } 4350 + /** 4351 + * Constructor 4352 + * @param options Tokenizer options 4353 + * @protected 4354 + */ 4355 + constructor(options) { 4356 + this.numBuffer = new Uint8Array(8); 4357 + this.position = 0; 4358 + this.onClose = options?.onClose; 4359 + if (options?.abortSignal) { 4360 + options.abortSignal.addEventListener("abort", () => { 4361 + this.abort(); 4362 + }); 4363 + } 4364 + } 4365 + /** 4366 + * Read a token from the tokenizer-stream 4367 + * @param token - The token to read 4368 + * @param position - If provided, the desired position in the tokenizer-stream 4369 + * @returns Promise with token data 4370 + */ 4371 + async readToken(token, position = this.position) { 4372 + const uint8Array = new Uint8Array(token.len); 4373 + const len = await this.readBuffer(uint8Array, { position }); 4374 + if (len < token.len) 4375 + throw new EndOfStreamError2(); 4376 + return token.get(uint8Array, 0); 4377 + } 4378 + /** 4379 + * Peek a token from the tokenizer-stream. 4380 + * @param token - Token to peek from the tokenizer-stream. 4381 + * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position. 4382 + * @returns Promise with token data 4383 + */ 4384 + async peekToken(token, position = this.position) { 4385 + const uint8Array = new Uint8Array(token.len); 4386 + const len = await this.peekBuffer(uint8Array, { position }); 4387 + if (len < token.len) 4388 + throw new EndOfStreamError2(); 4389 + return token.get(uint8Array, 0); 4390 + } 4391 + /** 4392 + * Read a numeric token from the stream 4393 + * @param token - Numeric token 4394 + * @returns Promise with number 4395 + */ 4396 + async readNumber(token) { 4397 + const len = await this.readBuffer(this.numBuffer, { length: token.len }); 4398 + if (len < token.len) 4399 + throw new EndOfStreamError2(); 4400 + return token.get(this.numBuffer, 0); 4401 + } 4402 + /** 4403 + * Read a numeric token from the stream 4404 + * @param token - Numeric token 4405 + * @returns Promise with number 4406 + */ 4407 + async peekNumber(token) { 4408 + const len = await this.peekBuffer(this.numBuffer, { length: token.len }); 4409 + if (len < token.len) 4410 + throw new EndOfStreamError2(); 4411 + return token.get(this.numBuffer, 0); 4412 + } 4413 + /** 4414 + * Ignore number of bytes, advances the pointer in under tokenizer-stream. 4415 + * @param length - Number of bytes to ignore 4416 + * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available 4417 + */ 4418 + async ignore(length) { 4419 + if (this.fileInfo.size !== void 0) { 4420 + const bytesLeft = this.fileInfo.size - this.position; 4421 + if (length > bytesLeft) { 4422 + this.position += bytesLeft; 4423 + return bytesLeft; 4424 + } 4425 + } 4426 + this.position += length; 4427 + return length; 4428 + } 4429 + async close() { 4430 + await this.abort(); 4431 + await this.onClose?.(); 4432 + } 4433 + normalizeOptions(uint8Array, options) { 4434 + if (options && options.position !== void 0 && options.position < this.position) { 4435 + throw new Error("`options.position` must be equal or greater than `tokenizer.position`"); 4436 + } 4437 + if (options) { 4438 + return { 4439 + mayBeLess: options.mayBeLess === true, 4440 + offset: options.offset ? options.offset : 0, 4441 + length: options.length ? options.length : uint8Array.length - (options.offset ? options.offset : 0), 4442 + position: options.position ? options.position : this.position 4443 + }; 4444 + } 4445 + return { 4446 + mayBeLess: false, 4447 + offset: 0, 4448 + length: uint8Array.length, 4449 + position: this.position 4450 + }; 4451 + } 4452 + abort() { 4453 + return Promise.resolve(); 4454 + } 4455 + }; 4456 + 4457 + // ../node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/BufferTokenizer.js 4458 + init_Buffer(); 4459 + init_process(); 4460 + 4461 + // ../node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/FileTokenizer.js 4462 + init_Buffer(); 4463 + init_process(); 4464 + var FileTokenizer = class _FileTokenizer extends AbstractTokenizer2 { 4465 + static { 4466 + __name(this, "FileTokenizer"); 4467 + } 4468 + /** 4469 + * Create tokenizer from provided file path 4470 + * @param sourceFilePath File path 4471 + */ 4472 + static async fromFile(sourceFilePath) { 4473 + const fileHandle = await open2(sourceFilePath, "r"); 4474 + const stat = await fileHandle.stat(); 4475 + return new _FileTokenizer(fileHandle, { fileInfo: { path: sourceFilePath, size: stat.size } }); 4476 + } 4477 + constructor(fileHandle, options) { 4478 + super(options); 4479 + this.fileHandle = fileHandle; 4480 + this.fileInfo = options.fileInfo; 4481 + } 4482 + /** 4483 + * Read buffer from file 4484 + * @param uint8Array - Uint8Array to write result to 4485 + * @param options - Read behaviour options 4486 + * @returns Promise number of bytes read 4487 + */ 4488 + async readBuffer(uint8Array, options) { 4489 + const normOptions = this.normalizeOptions(uint8Array, options); 4490 + this.position = normOptions.position; 4491 + if (normOptions.length === 0) 4492 + return 0; 4493 + const res = await this.fileHandle.read(uint8Array, normOptions.offset, normOptions.length, normOptions.position); 4494 + this.position += res.bytesRead; 4495 + if (res.bytesRead < normOptions.length && (!options || !options.mayBeLess)) { 4496 + throw new EndOfStreamError2(); 4497 + } 4498 + return res.bytesRead; 4499 + } 4500 + /** 4501 + * Peek buffer from file 4502 + * @param uint8Array - Uint8Array (or Buffer) to write data to 4503 + * @param options - Read behaviour options 4504 + * @returns Promise number of bytes read 4505 + */ 4506 + async peekBuffer(uint8Array, options) { 4507 + const normOptions = this.normalizeOptions(uint8Array, options); 4508 + const res = await this.fileHandle.read(uint8Array, normOptions.offset, normOptions.length, normOptions.position); 4509 + if (!normOptions.mayBeLess && res.bytesRead < normOptions.length) { 4510 + throw new EndOfStreamError2(); 4511 + } 4512 + return res.bytesRead; 4513 + } 4514 + async close() { 4515 + await this.fileHandle.close(); 4516 + return super.close(); 4517 + } 4518 + setPosition(position) { 4519 + this.position = position; 4520 + } 4521 + supportsRandomAccess() { 4522 + return true; 4523 + } 4524 + }; 4525 + 4526 + // ../node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/index.js 4527 + var fromFile2 = FileTokenizer.fromFile; 4528 + 4529 + // ../node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/chunked-file-data.js 4530 + init_Buffer(); 4531 + init_process(); 4532 + 4533 + // ../node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/range-request-tokenizer.js 4534 + var import_debug5 = __toESM(require_src()); 4535 + var debug5 = (0, import_debug5.default)("range-request-reader"); 4536 + function parseContentRange(contentRange) { 4537 + if (!contentRange) { 4538 + throw new Error("Content range must be provided"); 4539 + } 4540 + debug5(`parseContentRange response: contentRange=${contentRange}`); 4541 + const parsedContentRange = contentRange.match(/bytes (\d+)-(\d+)\/(?:(\d+)|\*)/i); 4542 + if (!parsedContentRange) { 4543 + throw new Error(`FIXME: Unknown Content-Range syntax: ${contentRange}`); 4544 + } 4545 + return { 4546 + firstBytePosition: Number.parseInt(parsedContentRange[1], 10), 4547 + lastBytePosition: Number.parseInt(parsedContentRange[2], 10), 4548 + instanceLength: parsedContentRange[3] ? Number.parseInt(parsedContentRange[3], 10) : void 0 4549 + }; 4550 + } 4551 + __name(parseContentRange, "parseContentRange"); 4552 + 4553 + // ../node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/range-request-factory.js 4554 + var import_debug6 = __toESM(require_src()); 4555 + var debug6 = (0, import_debug6.default)("range-request-reader"); 4556 + 4557 + // ../node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/response-info.js 4558 + var ResponseInfo = class { 4559 + static { 4560 + __name(this, "ResponseInfo"); 4561 + } 4562 + constructor(response) { 4563 + this.response = response; 4564 + } 4565 + getContentLength() { 4566 + const contentLength = this.response.headers.get("Content-Length"); 4567 + return contentLength ? Number.parseInt(contentLength, 10) : void 0; 4568 + } 4569 + getAcceptRangesHeaderValue() { 4570 + return this.response.headers.get("Accept-Ranges"); 4571 + } 4572 + getContentType() { 4573 + return this.response.headers.get("Content-Type"); 4574 + } 4575 + acceptRanges() { 4576 + const value = this.getAcceptRangesHeaderValue(); 4577 + return value !== null && value.trim().toLowerCase() === "bytes"; 4578 + } 4579 + getContentRange() { 4580 + const contentRange = this.response.headers.get("Content-Range"); 4581 + if (!contentRange) { 4582 + return; 4583 + } 4584 + return parseContentRange(contentRange); 4585 + } 4586 + toRangeRequestResponse() { 4587 + const contentRange = this.getContentRange(); 4588 + const size = contentRange ? contentRange.instanceLength : this.getContentLength(); 4589 + if (typeof size !== "number") { 4590 + throw new Error("Could not determine file-size from HTTP response"); 4591 + } 4592 + return { 4593 + url: this.response.url, 4594 + size, 4595 + mimeType: this.getContentType() ?? void 0, 4596 + acceptPartialRequests: this.acceptRanges(), 4597 + contentRange, 4598 + arrayBuffer: /* @__PURE__ */ __name(() => this.response.arrayBuffer().then((res) => new Uint8Array(res)), "arrayBuffer") 4599 + }; 4600 + } 4601 + }; 4602 + 4603 + // ../node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/http-client.js 4604 + var debug7 = (0, import_debug7.default)("streaming-http-token-reader:http-client"); 4605 + var DEFAULT_CONFIG = { 4606 + resolveUrl: false 4607 + }; 4608 + var HttpClient = class { 4609 + static { 4610 + __name(this, "HttpClient"); 4611 + } 4612 + constructor(url, config) { 4613 + this.url = url; 4614 + this.abortController = new AbortController(); 4615 + this.config = DEFAULT_CONFIG; 4616 + Object.assign(this.config, config); 4617 + } 4618 + async getHeadInfo() { 4619 + const response = new ResponseInfo(await fetch(this.url, { method: "HEAD", signal: this.abortController.signal })); 4620 + if (this.config.resolveUrl) 4621 + this.resolvedUrl = response.response.url; 4622 + return response.toRangeRequestResponse(); 4623 + } 4624 + async getResponse(method, range) { 4625 + const headers = new Headers(); 4626 + if (range) { 4627 + debug7(`_getResponse ${method} ${range[0]}..${range[1]}`); 4628 + headers.set("Range", `bytes=${range[0]}-${range[1]}`); 4629 + } else { 4630 + debug7(`_getResponse ${method} (range not provided)`); 4631 + } 4632 + const response = new ResponseInfo(await fetch(this.resolvedUrl || this.url, { method, headers, signal: this.abortController.signal })); 4633 + if (response.response.ok) { 4634 + if (this.config.resolveUrl) 4635 + this.resolvedUrl = response.response.url; 4636 + return response.toRangeRequestResponse(); 4637 + } 4638 + throw new Error(`Unexpected HTTP response status=${response.response.status}`); 4639 + } 4640 + abort() { 4641 + debug7("abort"); 4642 + this.abortController.abort(); 4643 + } 4644 + }; 4645 + 4646 + // ../node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/index.js 4647 + init_Buffer(); 4648 + init_process(); 4649 + 4650 + // ../node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/range-request-factory.js 4651 + init_Buffer(); 4652 + init_process(); 4653 + 4654 + // ../node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/range-request-tokenizer.js 4655 + init_Buffer(); 4656 + init_process(); 4657 + 4658 + // ../node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/chunked-file-data.js 4659 + init_Buffer(); 4660 + init_process(); 4661 + var NOT_FOUND = -1; 4662 + var ChunkedFileData2 = class { 4663 + static { 4664 + __name(this, "ChunkedFileData"); 4665 + } 4666 + constructor() { 4667 + this._fileData = []; 4668 + } 4669 + /** 4670 + * Adds data to the file storage at a specific offset. 4671 + */ 4672 + addData(offset, data) { 4673 + const offsetEnd = offset + data.byteLength - 1; 4674 + const chunkRange = this._getChunkRange(offset, offsetEnd); 4675 + if (chunkRange.startIx === NOT_FOUND) { 4676 + this._fileData.splice(chunkRange.insertIx || 0, 0, { 4677 + offset, 4678 + data 4679 + }); 4680 + } else { 4681 + const firstChunk = this._fileData[chunkRange.startIx]; 4682 + const lastChunk = this._fileData[chunkRange.endIx]; 4683 + const needsPrepend = offset > firstChunk.offset; 4684 + const needsAppend = offsetEnd < lastChunk.offset + lastChunk.data.byteLength - 1; 4685 + const chunk = { 4686 + offset: Math.min(offset, firstChunk.offset), 4687 + data 4688 + }; 4689 + if (needsPrepend) { 4690 + const slicedData = firstChunk.data.slice(0, offset - firstChunk.offset); 4691 + chunk.data = this._concatData(slicedData, data); 4692 + } 4693 + if (needsAppend) { 4694 + const slicedData = chunk.data.slice(0, lastChunk.offset - chunk.offset); 4695 + chunk.data = this._concatData(slicedData, lastChunk.data); 4696 + } 4697 + this._fileData.splice(chunkRange.startIx, chunkRange.endIx - chunkRange.startIx + 1, chunk); 4698 + } 4699 + } 4700 + hasDataRange(offsetStart, offsetEnd) { 4701 + for (let i = 0; i < this._fileData.length; i++) { 4702 + const chunk = this._fileData[i]; 4703 + if (offsetEnd < chunk.offset) { 4704 + return false; 4705 + } 4706 + if (offsetStart >= chunk.offset && offsetEnd < chunk.offset + chunk.data.byteLength) { 4707 + return true; 4708 + } 4709 + } 4710 + return false; 4711 + } 4712 + readToBuffer(buffer, offset, position, length) { 4713 + const _pos_offset = position; 4714 + let dataChunk; 4715 + for (let i = 0; i < this._fileData.length; i++) { 4716 + const dataChunkStart = this._fileData[i].offset; 4717 + const dataChunkEnd = dataChunkStart + this._fileData[i].data.byteLength; 4718 + if (_pos_offset >= dataChunkStart && _pos_offset < dataChunkEnd) { 4719 + dataChunk = this._fileData[i]; 4720 + const chunkOffset = _pos_offset - dataChunkStart; 4721 + let chunkLength = Math.min(length, dataChunk.data.byteLength - chunkOffset); 4722 + buffer.set(dataChunk.data.subarray(chunkOffset, chunkOffset + chunkLength), offset); 4723 + if (chunkLength < length) { 4724 + chunkLength += this.readToBuffer(buffer, offset + chunkLength, position + chunkLength, length - chunkLength); 4725 + } 4726 + return chunkLength; 4727 + } 4728 + } 4729 + return 0; 4730 + } 4731 + _concatData(buffer1, buffer2) { 4732 + const tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength); 4733 + tmp.set(new Uint8Array(buffer1), 0); 4734 + tmp.set(new Uint8Array(buffer2), buffer1.byteLength); 4735 + return tmp; 4736 + } 4737 + /** 4738 + * Finds the chunk range that overlaps the [offsetStart-1,offsetEnd+1] range. 4739 + * When a chunk is adjacent to the offset we still consider it part of the 4740 + * range (this is the situation of offsetStart-1 or offsetEnd+1). 4741 + * When no chunks are found `insertIx` denotes the index where the data 4742 + * should be inserted in the data list (startIx == NOT_FOUND and endIX == 4743 + * NOT_FOUND). 4744 + */ 4745 + _getChunkRange(offsetStart, offsetEnd) { 4746 + let startChunkIx = NOT_FOUND; 4747 + let endChunkIx = NOT_FOUND; 4748 + let insertIx = 0; 4749 + for (let i = 0; i < this._fileData.length; i++, insertIx = i) { 4750 + const chunkOffsetStart = this._fileData[i].offset; 4751 + const chunkOffsetEnd = chunkOffsetStart + this._fileData[i].data.byteLength; 4752 + if (offsetEnd < chunkOffsetStart - 1) { 4753 + break; 4754 + } 4755 + if (offsetStart <= chunkOffsetEnd + 1 && offsetEnd >= chunkOffsetStart - 1) { 4756 + startChunkIx = i; 4757 + break; 4758 + } 4759 + } 4760 + if (startChunkIx === NOT_FOUND) { 4761 + return { 4762 + startIx: NOT_FOUND, 4763 + endIx: NOT_FOUND, 4764 + insertIx 4765 + }; 4766 + } 4767 + for (let i = startChunkIx; i < this._fileData.length; i++) { 4768 + const chunkOffsetStart = this._fileData[i].offset; 4769 + const chunkOffsetEnd = chunkOffsetStart + this._fileData[i].data.byteLength; 4770 + if (offsetEnd >= chunkOffsetStart - 1) { 4771 + endChunkIx = i; 4772 + } 4773 + if (offsetEnd <= chunkOffsetEnd + 1) { 4774 + break; 4775 + } 4776 + } 4777 + if (endChunkIx === NOT_FOUND) { 4778 + endChunkIx = startChunkIx; 4779 + } 4780 + return { 4781 + startIx: startChunkIx, 4782 + endIx: endChunkIx 4783 + }; 4784 + } 4785 + }; 4786 + 4787 + // ../node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/range-request-tokenizer.js 4788 + var import_debug8 = __toESM(require_src()); 4789 + var debug8 = (0, import_debug8.default)("range-request-reader"); 4790 + var RangeRequestTokenizer2 = class extends AbstractTokenizer { 4791 + static { 4792 + __name(this, "RangeRequestTokenizer"); 4793 + } 4794 + constructor(rangeRequestClient, options) { 4795 + super({ fileInfo: options.fileInfo }); 4796 + this.rangeRequestClient = rangeRequestClient; 4797 + this.options = options; 4798 + this.fileInfo = options.fileInfo; 4799 + if (Number.isNaN(options.minimumChunkSize)) { 4800 + throw new Error("minimumChunkSize must be a number"); 4801 + } 4802 + this._fileData = new ChunkedFileData2(); 4803 + this.options.abortSignal?.addEventListener("abort", () => { 4804 + this.abort(); 4805 + }); 4806 + } 4807 + setPosition(position) { 4808 + this.position = position; 4809 + } 4810 + /** 4811 + * Read portion from stream 4812 + * @param uint8array - Target `Uint8Array` 4813 + * @param options - Additional read options 4814 + * @returns Promise with number of bytes read 4815 + */ 4816 + async readBuffer(uint8array, options) { 4817 + if (options?.position) { 4818 + this.position = options.position; 4819 + } 4820 + const length = await this.peekBuffer(uint8array, options); 4821 + this.position += length; 4822 + return length; 4823 + } 4824 + /** 4825 + * Peek (read ahead) buffer from tokenizer 4826 + * @param uint8array - Target `Uint8Array` to fill with data peek from the tokenizer-stream 4827 + * @param options - Additional read options 4828 + * @returns Promise with number of bytes read 4829 + */ 4830 + async peekBuffer(uint8array, options) { 4831 + const offset = 0; 4832 + if (!this.fileInfo) 4833 + throw new Error("File-info missing"); 4834 + const size = this.fileInfo.size; 4835 + const position = options?.position !== void 0 ? options.position : this.position; 4836 + const requested = options?.length !== void 0 ? options.length : uint8array.length - offset; 4837 + if (requested <= 0) 4838 + return 0; 4839 + const available = size - position; 4840 + if (available <= 0) { 4841 + if (options?.mayBeLess) 4842 + return 0; 4843 + throw new RangeError(`peekBuffer position ${position} is beyond EOF ${size}`); 4844 + } 4845 + const length = options?.mayBeLess ? Math.min(requested, available) : requested; 4846 + if (!options?.mayBeLess && length > available) { 4847 + throw new RangeError(`peekBuffer length ${length} exceeds remaining ${available} at position ${position}`); 4848 + } 4849 + const lastPos = position + length - 1; 4850 + await this.loadRange([position, lastPos]); 4851 + this._fileData.readToBuffer(uint8array, offset, position, length); 4852 + return length; 4853 + } 4854 + /** 4855 + * Ignore number of bytes, advances the pointer in under tokenizer-stream. 4856 + * @param length - Number of bytes to skip (ignore) 4857 + * @return actual number of bytes ignored 4858 + */ 4859 + async ignore(length) { 4860 + const bytesLeft = this.fileInfo.size - this.position; 4861 + if (length <= bytesLeft) { 4862 + this.position += length; 4863 + return length; 4864 + } 4865 + this.position += bytesLeft; 4866 + return bytesLeft; 4867 + } 4868 + async abort() { 4869 + this.rangeRequestClient.abort(); 4870 + } 4871 + supportsRandomAccess() { 4872 + return true; 4873 + } 4874 + async loadRange(range) { 4875 + debug8(`request range ${range[0]}..${range[1]}`); 4876 + if (range[0] > this.fileInfo.size - 1) { 4877 + throw new Error("End-Of-File"); 4878 + } 4879 + debug8(`adjusted range ${range[0]}..${range[1]}`); 4880 + if (this._fileData.hasDataRange(range[0], range[1])) { 4881 + debug8("Read from cache"); 4882 + return; 4883 + } 4884 + range = roundRange2(range, this.options.minimumChunkSize); 4885 + range[1] = Math.min(this.fileInfo.size - 1, range[1]); 4886 + debug8(`blocked range: ${range[0]}..${range[1]}`); 4887 + return this.rangeRequestClient.getResponse("GET", range).then((response) => { 4888 + return response.arrayBuffer().then((data) => { 4889 + this._fileData.addData(range[0], data); 4890 + }); 4891 + }); 4892 + } 4893 + }; 4894 + function roundRange2(range, minimumChunkSize) { 4895 + const length = range[1] - range[0] + 1; 4896 + const newLength = Math.max(minimumChunkSize, length); 4897 + return [range[0], range[0] + newLength - 1]; 4898 + } 4899 + __name(roundRange2, "roundRange"); 4900 + 4901 + // ../node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/range-request-factory.js 4902 + var import_debug9 = __toESM(require_src()); 4903 + var debug9 = (0, import_debug9.default)("range-request-reader"); 4904 + var RangeRequestFactory2 = class { 4905 + static { 4906 + __name(this, "RangeRequestFactory"); 4907 + } 4908 + constructor(rangeRequestClient) { 4909 + this.rangeRequestClient = rangeRequestClient; 4910 + this.config = { 4911 + avoidHeadRequests: false, 4912 + initialChunkSize: 4 * 1024, 4913 + minimumChunkSize: 1024 4914 + }; 4915 + } 4916 + async initTokenizer(config) { 4917 + if (config) { 4918 + this.config = { ...this.config, ...config }; 4919 + } 4920 + const headRequestInfo = await this.getHeadRequestInfo(); 4921 + if (!headRequestInfo.acceptPartialRequests) { 4922 + throw new Error("Server does not accept partial requests"); 4923 + } 4924 + return new RangeRequestTokenizer2(this.rangeRequestClient, { 4925 + fileInfo: headRequestInfo, 4926 + minimumChunkSize: this.config.minimumChunkSize, 4927 + abortSignal: config?.abortSignal 4928 + }); 4929 + } 4930 + /** 4931 + * Get file information, an HTTP-client may implement this doing a HEAD request 4932 + * @return Promise with head-request-info, extending tokenizer file-info. 4933 + */ 4934 + getHeadRequestInfo() { 4935 + return this.config.avoidHeadRequests ? this.fetchFileInfoWithGetRequest() : this.fetchFileInfoWithHeadRequest(); 4936 + } 4937 + async fetchFileInfoWithHeadRequest() { 4938 + debug9("_fetchSizeWithHeadRequest()"); 4939 + if (this.rangeRequestClient.getHeadInfo) { 4940 + const info = await this.rangeRequestClient.getHeadInfo(); 4941 + if (info.size) { 4942 + debug9(`MIME-type=${info.mimeType}, content-length=${info.size}, accept-partial-requests=${info.acceptPartialRequests}`); 4943 + return info; 4944 + } 4945 + } 4946 + debug9("Content-Length not provided by the server, fallback to GET requests"); 4947 + return this.fetchFileInfoWithGetRequest(); 4948 + } 4949 + async fetchFileInfoWithGetRequest() { 4950 + const range = roundRange2([0, this.config.initialChunkSize], this.config.minimumChunkSize); 4951 + const response = await this.rangeRequestClient.getResponse("GET", range); 4952 + debug9(`_fetchSizeWithGetRequest response: contentRange=[${response.contentRange?.firstBytePosition}-${response.contentRange?.lastBytePosition}/${response.contentRange?.instanceLength}]`); 4953 + if (!response.contentRange) { 4954 + throw new Error("Failed to resolve content range (file size)"); 4955 + } 4956 + return response; 4957 + } 4958 + }; 4959 + 4960 + // ../node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/index.js 4961 + function tokenizer2(rangeRequestClient, config) { 4962 + const factory = new RangeRequestFactory2(rangeRequestClient); 4963 + return factory.initTokenizer(config); 4964 + } 4965 + __name(tokenizer2, "tokenizer"); 4966 + 4967 + // components/processor/metadata/common.js 4968 + async function musicMetadataTags({ 4969 + includeArtwork, 4970 + mimeType, 4971 + stream, 4972 + urls 4973 + }) { 4974 + const uri = urls ? URI.parse(urls.get) : void 0; 4975 + const pathParts = uri?.path?.split("/"); 4976 + const filename = pathParts?.[pathParts.length - 1]; 4977 + let meta; 4978 + if (urls?.get.startsWith("blob:")) { 4979 + const blob = await fetch(urls.get).then((r) => r.blob()); 4980 + meta = await parseBlob(blob, { skipCovers: !includeArtwork }); 4981 + } else if (urls) { 4982 + const httpClient = new HttpClient(urls.head, { 4983 + resolveUrl: false 4984 + }); 4985 + httpClient.resolvedUrl = urls.get; 4986 + const getHeadInfo = httpClient.getHeadInfo; 4987 + httpClient.getHeadInfo = async () => { 4988 + const info = await getHeadInfo.call(httpClient); 4989 + return { ...info, acceptPartialRequests: true }; 4990 + }; 4991 + const tokenizer3 = await tokenizer2(httpClient); 4992 + meta = await parseFromTokenizer(tokenizer3, { skipCovers: !includeArtwork }); 4993 + } else if (stream) { 4994 + meta = await parseWebStream(stream, { mimeType }, { 4995 + skipCovers: !includeArtwork 4996 + }); 4997 + } else { 4998 + throw new Error("Missing args, need either some urls or a stream."); 4999 + } 5000 + const statsFull = { 5001 + albumGain: maybeRound(meta.format.albumGain), 5002 + bitrate: maybeRound(meta.format.bitrate), 5003 + bitsPerSample: maybeRound(meta.format.bitsPerSample), 5004 + codec: meta.format.codec, 5005 + container: meta.format.container, 5006 + duration: meta.format.duration != null ? Math.round(meta.format.duration * 1e3) : void 0, 5007 + lossless: meta.format.lossless, 5008 + numberOfChannels: maybeRound(meta.format.numberOfChannels), 5009 + sampleRate: maybeRound(meta.format.sampleRate), 5010 + trackGain: maybeRound(meta.format.trackGain) 5011 + }; 5012 + const tagsFull = { 5013 + album: meta.common.album, 5014 + albumartist: meta.common.albumartist, 5015 + albumartists: Array.isArray(meta.common.albumartist) ? meta.common.albumartist : meta.common.albumartist ? [meta.common.albumartist] : void 0, 5016 + albumartistsort: meta.common.albumartistsort, 5017 + albumsort: meta.common.albumsort, 5018 + arranger: meta.common.arranger, 5019 + artist: meta.common.artist, 5020 + artists: meta.common.artists ?? (meta.common.artist ? [meta.common.artist] : []), 5021 + artistsort: meta.common.artistsort, 5022 + asin: meta.common.asin, 5023 + averageLevel: meta.common.averageLevel, 5024 + barcode: meta.common.barcode, 5025 + bpm: meta.common.bpm, 5026 + catalognumbers: meta.common.catalognumber, 5027 + compilation: meta.common.compilation, 5028 + composers: meta.common.composer, 5029 + composersort: meta.common.composersort, 5030 + conductors: meta.common.conductor, 5031 + date: meta.common.date, 5032 + disc: { 5033 + no: meta.common.disk.no || 1, 5034 + ...meta.common.disk.of && { of: meta.common.disk.of } 5035 + }, 5036 + djmixers: meta.common.djmixer, 5037 + engineers: meta.common.engineer, 5038 + gapless: meta.common.gapless, 5039 + genres: Array.isArray(meta.common.genre) ? meta.common.genre : meta.common.genre ? [meta.common.genre] : void 0, 5040 + isrc: meta.common.isrc, 5041 + labels: meta.common.label, 5042 + lyricists: meta.common.lyricist, 5043 + media: meta.common.media, 5044 + mixers: meta.common.mixer, 5045 + moods: Array.isArray(meta.common.mood) ? meta.common.mood : meta.common.mood ? [meta.common.mood] : void 0, 5046 + originaldate: meta.common.originaldate, 5047 + originalyear: meta.common.originalyear, 5048 + peakLevel: meta.common.peakLevel, 5049 + producers: meta.common.producer, 5050 + publishers: meta.common.publisher, 5051 + releasecountry: meta.common.releasecountry, 5052 + releasedate: meta.common.releasedate, 5053 + releasestatus: meta.common.releasestatus, 5054 + releasetypes: meta.common.releasetype, 5055 + remixers: meta.common.remixer, 5056 + technicians: meta.common.technician, 5057 + title: meta.common.title || filename || urls?.head || "Unknown", 5058 + titlesort: meta.common.titlesort, 5059 + track: { 5060 + no: meta.common.track.no || 1, 5061 + ...meta.common.track.of && { of: meta.common.track.of } 5062 + }, 5063 + work: meta.common.work, 5064 + writers: meta.common.writer, 5065 + year: meta.common.year 5066 + }; 5067 + const stats = removeUndefinedValuesFromRecord(statsFull); 5068 + const tags = removeUndefinedValuesFromRecord(tagsFull); 5069 + return { 5070 + artwork: includeArtwork ? meta.common.picture : void 0, 5071 + stats, 5072 + tags 5073 + }; 5074 + } 5075 + __name(musicMetadataTags, "musicMetadataTags"); 5076 + function maybeRound(value) { 5077 + return typeof value === "number" ? Math.round(value) : value; 5078 + } 5079 + __name(maybeRound, "maybeRound"); 5080 + 5081 + export { 5082 + musicMetadataTags 5083 + }; 5084 + /*! Bundled license information: 5085 + 5086 + content-type/index.js: 5087 + (*! 5088 + * content-type 5089 + * Copyright(c) 2015 Douglas Christopher Wilson 5090 + * MIT Licensed 5091 + *) 5092 + 5093 + media-typer/index.js: 5094 + (*! 5095 + * media-typer 5096 + * Copyright(c) 2014-2017 Douglas Christopher Wilson 5097 + * MIT Licensed 5098 + *) 5099 + */ 5100 + 5101 + //# sourceMappingURL=./chunk-MIYY7OUT.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-MIYY7OUT.js.map
··· 1 + {"version":3,"sources":["/node_modules/.deno/content-type@1.0.5/node_modules/content-type/index.js","/node_modules/.deno/media-typer@1.1.0/node_modules/media-typer/index.js","/components/processor/metadata/common.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/index.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/core.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ParserFactory.js","/node_modules/.deno/file-type@21.3.0/node_modules/file-type/index.js","/node_modules/.deno/file-type@21.3.0/node_modules/file-type/core.js","/node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/index.js","/node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js","/node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipToken.js","/node_modules/.deno/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/GzipHandler.js","/node_modules/.deno/file-type@21.3.0/node_modules/file-type/util.js","/node_modules/.deno/file-type@21.3.0/node_modules/file-type/supported.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/MetadataCollector.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/GenericTagTypes.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/CombinedTagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/GenericTagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/asf/AsfTagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/mp4/MP4TagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/riff/RiffInfoTagMap.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/matroska/MatroskaTagMapper.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/aiff/AiffTagMap.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/lrc/LyricsParser.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/mpeg/MpegLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/apev2/Apev2Loader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/asf/AsfLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/dsdiff/DsdiffLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/aiff/AiffLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/dsf/DsfLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/flac/FlacLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/matroska/MatroskaLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/mp4/Mp4Loader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/musepack/MusepackLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/ogg/OggLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/wavpack/WavPackLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/wav/WaveLoader.js","/node_modules/.deno/music-metadata@11.12.1/node_modules/music-metadata/lib/lyrics3/Lyrics3.js","/node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/index.js","/node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/http-client.js","/node_modules/.deno/@tokenizer+http@0.9.2/node_modules/@tokenizer/http/lib/response-info.js","/node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/index.js","/node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/range-request-factory.js","/node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/range-request-tokenizer.js","/node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/index.js","/node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/core.js","/node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/index.js","/node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/EndOfStreamError.js","/node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/StreamReader.js","/node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/Deferred.js","/node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/AbstractStreamReader.js","/node_modules/.deno/peek-readable@5.4.2/node_modules/peek-readable/lib/WebStreamReader.js","/node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/ReadStreamTokenizer.js","/node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/AbstractTokenizer.js","/node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/BufferTokenizer.js","/node_modules/.deno/strtok3@9.1.1/node_modules/strtok3/lib/FileTokenizer.js","/node_modules/.deno/@tokenizer+range@0.12.0/node_modules/@tokenizer/range/lib/chunked-file-data.js","/node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/index.js","/node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/range-request-factory.js","/node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/range-request-tokenizer.js","/node_modules/.deno/@tokenizer+range@0.13.1/node_modules/@tokenizer/range/lib/chunked-file-data.js"],"sourcesContent":["/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value.charCodeAt(0) === 0x22 /* \" */) {\n // remove quotes\n value = value.slice(1, -1)\n\n // remove escapes\n if (value.indexOf('\\\\') !== -1) {\n value = value.replace(QESC_REGEXP, '$1')\n }\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n","/*!\n * media-typer\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first = ALPHA / DIGIT\n * restricted-name-chars = ALPHA / DIGIT / \"!\" / \"#\" /\n * \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n * ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n * ; specify a structured syntax suffix\n * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z\n * DIGIT = %x30-39 ; 0-9\n */\nvar SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\nexports.test = test\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var subtype = obj.subtype\n var suffix = obj.suffix\n var type = obj.type\n\n if (!type || !TYPE_NAME_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) {\n throw new TypeError('invalid subtype')\n }\n\n // format as type/subtype\n var string = type + '/' + subtype\n\n // append +suffix\n if (suffix) {\n if (!TYPE_NAME_REGEXP.test(suffix)) {\n throw new TypeError('invalid suffix')\n }\n\n string += '+' + suffix\n }\n\n return string\n}\n\n/**\n * Test media type.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction test (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n if (typeof string !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n return TYPE_REGEXP.test(string.toLowerCase())\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n if (typeof string !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var match = TYPE_REGEXP.exec(string.toLowerCase())\n\n if (!match) {\n throw new TypeError('invalid media type')\n }\n\n var type = match[1]\n var subtype = match[2]\n var suffix\n\n // suffix after last +\n var index = subtype.lastIndexOf('+')\n if (index !== -1) {\n suffix = subtype.substr(index + 1)\n subtype = subtype.substr(0, index)\n }\n\n return new MediaType(type, subtype, suffix)\n}\n\n/**\n * Class for MediaType object.\n * @public\n */\n\nfunction MediaType (type, subtype, suffix) {\n this.type = type\n this.subtype = subtype\n this.suffix = suffix\n}\n","import { parseBlob, parseFromTokenizer, parseWebStream } from \"music-metadata\";\nimport * as URI from \"fast-uri\";\nimport { HttpClient } from \"@tokenizer/http\";\nimport { tokenizer as rangeTokenizer } from \"@tokenizer/range\";\n\nimport { removeUndefinedValuesFromRecord } from \"~/common/utils.js\";\n\n/**\n * @import { TrackStats, TrackTags } from \"~/definitions/types.d.ts\";\n * @import { Extraction, Urls } from \"./types.d.ts\";\n */\n\n// 🛠️\n\n/**\n * @param {{ includeArtwork?: boolean; mimeType?: string; stream?: ReadableStream; urls?: Urls; }} _\n * @returns {Promise<Extraction>}\n */\nexport async function musicMetadataTags({\n includeArtwork,\n mimeType,\n stream,\n urls,\n}) {\n const uri = urls ? URI.parse(urls.get) : undefined;\n const pathParts = uri?.path?.split(\"/\");\n const filename = pathParts?.[pathParts.length - 1];\n\n let meta;\n\n if (urls?.get.startsWith(\"blob:\")) {\n const blob = await fetch(urls.get).then((r) => r.blob());\n meta = await parseBlob(blob, { skipCovers: !includeArtwork });\n } else if (urls) {\n const httpClient = new HttpClient(urls.head, {\n resolveUrl: false,\n });\n httpClient.resolvedUrl = urls.get;\n const getHeadInfo = httpClient.getHeadInfo;\n\n // FUCKAROUND: Not sure of the downsides of this\n httpClient.getHeadInfo = async () => {\n const info = await getHeadInfo.call(httpClient);\n return { ...info, acceptPartialRequests: true };\n };\n\n /** @type {any} */\n const tokenizer = await rangeTokenizer(httpClient);\n meta = await parseFromTokenizer(tokenizer, { skipCovers: !includeArtwork });\n } else if (stream) {\n meta = await parseWebStream(stream, { mimeType }, {\n skipCovers: !includeArtwork,\n });\n } else {\n throw new Error(\"Missing args, need either some urls or a stream.\");\n }\n\n /** @type {TrackStats} */\n const statsFull = {\n albumGain: maybeRound(meta.format.albumGain),\n bitrate: maybeRound(meta.format.bitrate),\n bitsPerSample: maybeRound(meta.format.bitsPerSample),\n codec: meta.format.codec,\n container: meta.format.container,\n duration: meta.format.duration != null\n ? Math.round(meta.format.duration * 1000)\n : undefined,\n lossless: meta.format.lossless,\n numberOfChannels: maybeRound(meta.format.numberOfChannels),\n sampleRate: maybeRound(meta.format.sampleRate),\n trackGain: maybeRound(meta.format.trackGain),\n };\n\n /** @type {TrackTags} */\n const tagsFull = {\n album: meta.common.album,\n albumartist: meta.common.albumartist,\n albumartists: Array.isArray(meta.common.albumartist)\n ? meta.common.albumartist\n : (meta.common.albumartist ? [meta.common.albumartist] : undefined),\n albumartistsort: meta.common.albumartistsort,\n albumsort: meta.common.albumsort,\n arranger: meta.common.arranger,\n artist: meta.common.artist,\n artists: meta.common.artists ??\n (meta.common.artist ? [meta.common.artist] : []),\n artistsort: meta.common.artistsort,\n asin: meta.common.asin,\n averageLevel: meta.common.averageLevel,\n barcode: meta.common.barcode,\n bpm: meta.common.bpm,\n catalognumbers: meta.common.catalognumber,\n compilation: meta.common.compilation,\n composers: meta.common.composer,\n composersort: meta.common.composersort,\n conductors: meta.common.conductor,\n date: meta.common.date,\n disc: {\n no: meta.common.disk.no || 1,\n ...(meta.common.disk.of && { of: meta.common.disk.of }),\n },\n djmixers: meta.common.djmixer,\n engineers: meta.common.engineer,\n gapless: meta.common.gapless,\n genres: Array.isArray(meta.common.genre)\n ? meta.common.genre\n : meta.common.genre\n ? [meta.common.genre]\n : undefined,\n isrc: meta.common.isrc,\n labels: meta.common.label,\n lyricists: meta.common.lyricist,\n media: meta.common.media,\n mixers: meta.common.mixer,\n moods: Array.isArray(meta.common.mood)\n ? meta.common.mood\n : meta.common.mood\n ? [meta.common.mood]\n : undefined,\n originaldate: meta.common.originaldate,\n originalyear: meta.common.originalyear,\n peakLevel: meta.common.peakLevel,\n producers: meta.common.producer,\n publishers: meta.common.publisher,\n releasecountry: meta.common.releasecountry,\n releasedate: meta.common.releasedate,\n releasestatus: meta.common.releasestatus,\n releasetypes: meta.common.releasetype,\n remixers: meta.common.remixer,\n technicians: meta.common.technician,\n title: meta.common.title || filename || urls?.head || \"Unknown\",\n titlesort: meta.common.titlesort,\n track: {\n no: meta.common.track.no || 1,\n ...(meta.common.track.of && { of: meta.common.track.of }),\n },\n work: meta.common.work,\n writers: meta.common.writer,\n year: meta.common.year,\n };\n\n const stats = removeUndefinedValuesFromRecord(statsFull);\n const tags = removeUndefinedValuesFromRecord(tagsFull);\n\n return {\n artwork: includeArtwork ? meta.common.picture : undefined,\n stats,\n tags,\n };\n}\n\n/**\n * @param {number | undefined} value\n * @returns {number | undefined}\n */\nfunction maybeRound(value) {\n return typeof value === \"number\" ? Math.round(value) : value;\n}\n","/**\n * Node.js specific entry point.\n */\nimport { fromFile, fromStream } from 'strtok3';\nimport initDebug from 'debug';\nimport { CouldNotDetermineFileTypeError, parseFromTokenizer, UnsupportedFileTypeError } from './core.js';\nimport { ParserFactory } from './ParserFactory.js';\nexport * from './core.js';\nconst debug = initDebug('music-metadata:parser');\n/**\n * Parse audio from Node Stream.Readable\n * @param stream - Stream to read the audio track from\n * @param fileInfo - File information object or MIME-type, e.g.: 'audio/mpeg'\n * @param options - Parsing options\n * @returns Metadata\n */\nexport async function parseStream(stream, fileInfo, options = {}) {\n const tokenizer = await fromStream(stream, { fileInfo: typeof fileInfo === 'string' ? { mimeType: fileInfo } : fileInfo });\n try {\n return await parseFromTokenizer(tokenizer, options);\n }\n finally {\n await tokenizer.close();\n }\n}\n/**\n * Parse audio from Node file\n * @param filePath - Media file to read meta-data from\n * @param options - Parsing options\n * @returns Metadata\n */\nexport async function parseFile(filePath, options = {}) {\n debug(`parseFile: ${filePath}`);\n const fileTokenizer = await fromFile(filePath);\n const parserFactory = new ParserFactory();\n try {\n const parserLoader = parserFactory.findLoaderForExtension(filePath);\n if (!parserLoader)\n debug('Parser could not be determined by file extension');\n try {\n return await parserFactory.parse(fileTokenizer, parserLoader, options);\n }\n catch (error) {\n if (error instanceof CouldNotDetermineFileTypeError || error instanceof UnsupportedFileTypeError) {\n error.message += `: ${filePath}`;\n }\n throw error;\n }\n }\n finally {\n await fileTokenizer.close();\n }\n}\n","/**\n * Primary entry point, Node.js specific entry point is MusepackParser.ts\n */\nimport { fromWebStream, fromBuffer, fromBlob } from 'strtok3';\nimport { ParserFactory } from './ParserFactory.js';\nimport { APEv2Parser } from './apev2/APEv2Parser.js';\nimport { hasID3v1Header } from './id3v1/ID3v1Parser.js';\nimport { getLyricsHeaderLength } from './lyrics3/Lyrics3.js';\nexport { LyricsContentType, TimestampFormat } from './type.js';\nexport { CouldNotDetermineFileTypeError, UnsupportedFileTypeError } from './ParseError.js';\nexport * from './ParseError.js';\n/**\n * Parse Web API File\n * Requires Blob to be able to stream using a ReadableStreamBYOBReader, only available since Node.js ≥ 20\n * @param blob - Blob to parse\n * @param options - Parsing options\n * @returns Metadata\n */\nexport async function parseBlob(blob, options = {}) {\n const tokenizer = fromBlob(blob);\n try {\n return await parseFromTokenizer(tokenizer, options);\n }\n finally {\n await tokenizer.close();\n }\n}\n/**\n * Parse audio from Web Stream.Readable\n * @param webStream - WebStream to read the audio track from\n * @param options - Parsing options\n * @param fileInfo - File information object or MIME-type string\n * @returns Metadata\n */\nexport async function parseWebStream(webStream, fileInfo, options = {}) {\n const tokenizer = fromWebStream(webStream, { fileInfo: typeof fileInfo === 'string' ? { mimeType: fileInfo } : fileInfo });\n try {\n return await parseFromTokenizer(tokenizer, options);\n }\n finally {\n await tokenizer.close();\n }\n}\n/**\n * Parse audio from memory\n * @param uint8Array - Uint8Array holding audio data\n * @param fileInfo - File information object or MIME-type string\n * @param options - Parsing options\n * @returns Metadata\n * Ref: https://github.com/Borewit/strtok3/blob/e6938c81ff685074d5eb3064a11c0b03ca934c1d/src/index.ts#L15\n */\nexport async function parseBuffer(uint8Array, fileInfo, options = {}) {\n const tokenizer = fromBuffer(uint8Array, { fileInfo: typeof fileInfo === 'string' ? { mimeType: fileInfo } : fileInfo });\n return parseFromTokenizer(tokenizer, options);\n}\n/**\n * Parse audio from ITokenizer source\n * @param tokenizer - Audio source implementing the tokenizer interface\n * @param options - Parsing options\n * @returns Metadata\n */\nexport function parseFromTokenizer(tokenizer, options) {\n const parserFactory = new ParserFactory();\n return parserFactory.parse(tokenizer, undefined, options);\n}\n/**\n * Create a dictionary ordered by their tag id (key)\n * @param nativeTags list of tags\n * @returns tags indexed by id\n */\nexport function orderTags(nativeTags) {\n const tags = {};\n for (const { id, value } of nativeTags) {\n (tags[id] || (tags[id] = [])).push(value);\n }\n return tags;\n}\n/**\n * Convert rating to 1-5 star rating\n * @param rating Normalized rating [0..1] (common.rating[n].rating)\n * @returns Number of stars: 1, 2, 3, 4 or 5 stars\n */\nexport function ratingToStars(rating) {\n return rating === undefined ? 0 : 1 + Math.round(rating * 4);\n}\n/**\n * Select most likely cover image.\n * @param pictures Usually metadata.common.picture\n * @return Cover image, if any, otherwise null\n */\nexport function selectCover(pictures) {\n return pictures ? pictures.reduce((acc, cur) => {\n if (cur.name && cur.name.toLowerCase() in ['front', 'cover', 'cover (front)'])\n return cur;\n return acc;\n }) : null;\n}\nexport async function scanAppendingHeaders(tokenizer, options = {}) {\n let apeOffset = tokenizer.fileInfo.size;\n if (await hasID3v1Header(tokenizer)) {\n apeOffset -= 128;\n const lyricsLen = await getLyricsHeaderLength(tokenizer);\n apeOffset -= lyricsLen;\n }\n options.apeHeader = await APEv2Parser.findApeFooterOffset(tokenizer, apeOffset);\n}\n/**\n * Implementation only available when loaded as Node.js\n * This method will throw an Error, always.\n */\nexport async function parseFile(_filePath, _options = {}) {\n throw new Error('This function require a Node engine. To load Web API File objects use parseBlob instead.');\n}\n/**\n * Implementation only available when loaded as Node.js\n * This method will throw an Error, always.\n */\nexport async function parseStream(_stream, _fileInfo, _options = {}) {\n throw new Error('This function require a Node engine.');\n}\n/**\n * Return a list of supported mime-types\n */\nexport function getSupportedMimeTypes() {\n return new ParserFactory().getSupportedMimeTypes();\n}\n","import { fileTypeFromBuffer } from 'file-type';\nimport ContentType from 'content-type';\nimport { parse as mimeTypeParse } from 'media-typer';\nimport initDebug from 'debug';\nimport { MetadataCollector } from './common/MetadataCollector.js';\nimport { TrackType } from './type.js';\nimport { mpegParserLoader } from './mpeg/MpegLoader.js';\nimport { CouldNotDetermineFileTypeError, UnsupportedFileTypeError } from './ParseError.js';\nimport { apeParserLoader } from './apev2/Apev2Loader.js';\nimport { asfParserLoader } from './asf/AsfLoader.js';\nimport { dsdiffParserLoader } from './dsdiff/DsdiffLoader.js';\nimport { aiffParserLoader } from './aiff/AiffLoader.js';\nimport { dsfParserLoader } from './dsf/DsfLoader.js';\nimport { flacParserLoader } from './flac/FlacLoader.js';\nimport { matroskaParserLoader } from './matroska/MatroskaLoader.js';\nimport { mp4ParserLoader } from './mp4/Mp4Loader.js';\nimport { musepackParserLoader } from './musepack/MusepackLoader.js';\nimport { oggParserLoader } from './ogg/OggLoader.js';\nimport { wavpackParserLoader } from './wavpack/WavPackLoader.js';\nimport { riffParserLoader } from './wav/WaveLoader.js';\nimport { scanAppendingHeaders } from './core.js';\nconst debug = initDebug('music-metadata:parser:factory');\nexport function parseHttpContentType(contentType) {\n const type = ContentType.parse(contentType);\n const mime = mimeTypeParse(type.type);\n return {\n type: mime.type,\n subtype: mime.subtype,\n suffix: mime.suffix,\n parameters: type.parameters\n };\n}\nexport class ParserFactory {\n constructor() {\n this.parsers = [];\n [\n flacParserLoader,\n mpegParserLoader,\n apeParserLoader,\n mp4ParserLoader,\n matroskaParserLoader,\n riffParserLoader,\n oggParserLoader,\n asfParserLoader,\n aiffParserLoader,\n wavpackParserLoader,\n musepackParserLoader,\n dsfParserLoader,\n dsdiffParserLoader\n ].forEach(parser => { this.registerParser(parser); });\n }\n registerParser(parser) {\n this.parsers.push(parser);\n }\n async parse(tokenizer, parserLoader, opts) {\n if (tokenizer.supportsRandomAccess()) {\n debug('tokenizer supports random-access, scanning for appending headers');\n await scanAppendingHeaders(tokenizer, opts);\n }\n else {\n debug('tokenizer does not support random-access, cannot scan for appending headers');\n }\n if (!parserLoader) {\n const buf = new Uint8Array(4100);\n if (tokenizer.fileInfo.mimeType) {\n parserLoader = this.findLoaderForContentType(tokenizer.fileInfo.mimeType);\n }\n if (!parserLoader && tokenizer.fileInfo.path) {\n parserLoader = this.findLoaderForExtension(tokenizer.fileInfo.path);\n }\n if (!parserLoader) {\n // Parser could not be determined on MIME-type or extension\n debug('Guess parser on content...');\n await tokenizer.peekBuffer(buf, { mayBeLess: true });\n const guessedType = await fileTypeFromBuffer(buf, { mpegOffsetTolerance: 10 });\n if (!guessedType || !guessedType.mime) {\n throw new CouldNotDetermineFileTypeError('Failed to determine audio format');\n }\n debug(`Guessed file type is mime=${guessedType.mime}, extension=${guessedType.ext}`);\n parserLoader = this.findLoaderForContentType(guessedType.mime);\n if (!parserLoader) {\n throw new UnsupportedFileTypeError(`Guessed MIME-type not supported: ${guessedType.mime}`);\n }\n }\n }\n // Parser found, execute parser\n debug(`Loading ${parserLoader.parserType} parser...`);\n const metadata = new MetadataCollector(opts);\n const ParserImpl = await parserLoader.load();\n const parser = new ParserImpl(metadata, tokenizer, opts ?? {});\n debug(`Parser ${parserLoader.parserType} loaded`);\n await parser.parse();\n if (metadata.format.trackInfo) {\n if (metadata.format.hasAudio === undefined) {\n metadata.setFormat('hasAudio', !!metadata.format.trackInfo.find(track => track.type === TrackType.audio));\n }\n if (metadata.format.hasVideo === undefined) {\n metadata.setFormat('hasVideo', !!metadata.format.trackInfo.find(track => track.type === TrackType.video));\n }\n }\n return metadata.toCommonMetadata();\n }\n /**\n * @param filePath - Path, filename or extension to audio file\n * @return Parser submodule name\n */\n findLoaderForExtension(filePath) {\n if (!filePath)\n return;\n const extension = getExtension(filePath).toLocaleLowerCase() || filePath;\n return this.parsers.find(parser => parser.extensions.indexOf(extension) !== -1);\n }\n findLoaderForContentType(httpContentType) {\n let mime;\n if (!httpContentType)\n return;\n try {\n mime = parseHttpContentType(httpContentType);\n }\n catch (_err) {\n debug(`Invalid HTTP Content-Type header value: ${httpContentType}`);\n return;\n }\n const subType = mime.subtype.indexOf('x-') === 0 ? mime.subtype.substring(2) : mime.subtype;\n return this.parsers.find(parser => parser.mimeTypes.find(loader => loader.indexOf(`${mime.type}/${subType}`) !== -1));\n }\n getSupportedMimeTypes() {\n const mimeTypeSet = new Set();\n this.parsers.forEach(loader => {\n loader.mimeTypes.forEach(mimeType => {\n mimeTypeSet.add(mimeType);\n mimeTypeSet.add(mimeType.replace('/', '/x-'));\n });\n });\n return Array.from(mimeTypeSet);\n }\n}\nfunction getExtension(fname) {\n const i = fname.lastIndexOf('.');\n return i === -1 ? '' : fname.substring(i);\n}\n","/**\nNode.js specific entry point.\n*/\n\nimport {ReadableStream as WebReadableStream} from 'node:stream/web';\nimport {pipeline, PassThrough, Readable} from 'node:stream';\nimport * as strtok3 from 'strtok3';\nimport {FileTypeParser as DefaultFileTypeParser, reasonableDetectionSizeInBytes} from './core.js';\n\nexport class FileTypeParser extends DefaultFileTypeParser {\n\tasync fromStream(stream) {\n\t\tconst tokenizer = await (stream instanceof WebReadableStream ? strtok3.fromWebStream(stream, this.tokenizerOptions) : strtok3.fromStream(stream, this.tokenizerOptions));\n\t\ttry {\n\t\t\treturn await super.fromTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync fromFile(path) {\n\t\tconst tokenizer = await strtok3.fromFile(path);\n\t\ttry {\n\t\t\treturn await super.fromTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync toDetectionStream(readableStream, options = {}) {\n\t\tif (!(readableStream instanceof Readable)) {\n\t\t\treturn super.toDetectionStream(readableStream, options);\n\t\t}\n\n\t\tconst {sampleSize = reasonableDetectionSizeInBytes} = options;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\treadableStream.on('error', reject);\n\n\t\t\treadableStream.once('readable', () => {\n\t\t\t\t(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Set up output stream\n\t\t\t\t\t\tconst pass = new PassThrough();\n\t\t\t\t\t\tconst outputStream = pipeline ? pipeline(readableStream, pass, () => {}) : readableStream.pipe(pass);\n\n\t\t\t\t\t\t// Read the input stream and detect the filetype\n\t\t\t\t\t\tconst chunk = readableStream.read(sampleSize) ?? readableStream.read() ?? new Uint8Array(0);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tpass.fileType = await this.fromBuffer(chunk);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\t\t\t\tpass.fileType = undefined;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve(outputStream);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport async function fileTypeFromFile(path, options) {\n\treturn (new FileTypeParser(options)).fromFile(path, options);\n}\n\nexport async function fileTypeFromStream(stream, options) {\n\treturn (new FileTypeParser(options)).fromStream(stream);\n}\n\nexport async function fileTypeStream(readableStream, options = {}) {\n\treturn new FileTypeParser(options).toDetectionStream(readableStream, options);\n}\n\nexport {\n\tfileTypeFromTokenizer,\n\tfileTypeFromBuffer,\n\tfileTypeFromBlob,\n\tsupportedMimeTypes,\n\tsupportedExtensions,\n} from './core.js';\n","/**\nPrimary entry point, Node.js specific entry point is index.js\n*/\n\nimport * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {ZipHandler, GzipHandler} from '@tokenizer/inflate';\nimport {getUintBE} from 'uint8array-extras';\nimport {\n\tstringToBytes,\n\ttarHeaderChecksumMatches,\n\tuint32SyncSafeToken,\n} from './util.js';\nimport {extensions, mimeTypes} from './supported.js';\n\nexport const reasonableDetectionSizeInBytes = 4100; // A fair amount of file-types are detectable within this range.\n\nexport async function fileTypeFromStream(stream, options) {\n\treturn new FileTypeParser(options).fromStream(stream);\n}\n\nexport async function fileTypeFromBuffer(input, options) {\n\treturn new FileTypeParser(options).fromBuffer(input);\n}\n\nexport async function fileTypeFromBlob(blob, options) {\n\treturn new FileTypeParser(options).fromBlob(blob);\n}\n\nfunction getFileTypeFromMimeType(mimeType) {\n\tmimeType = mimeType.toLowerCase();\n\tswitch (mimeType) {\n\t\tcase 'application/epub+zip':\n\t\t\treturn {\n\t\t\t\text: 'epub',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.text':\n\t\t\treturn {\n\t\t\t\text: 'odt',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.text-template':\n\t\t\treturn {\n\t\t\t\text: 'ott',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet':\n\t\t\treturn {\n\t\t\t\text: 'ods',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet-template':\n\t\t\treturn {\n\t\t\t\text: 'ots',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.presentation':\n\t\t\treturn {\n\t\t\t\text: 'odp',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.presentation-template':\n\t\t\treturn {\n\t\t\t\text: 'otp',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.graphics':\n\t\t\treturn {\n\t\t\t\text: 'odg',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.oasis.opendocument.graphics-template':\n\t\t\treturn {\n\t\t\t\text: 'otg',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.slideshow':\n\t\t\treturn {\n\t\t\t\text: 'ppsx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\treturn {\n\t\t\t\text: 'xlsx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-excel.sheet.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'xlsm',\n\t\t\t\tmime: 'application/vnd.ms-excel.sheet.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.template':\n\t\t\treturn {\n\t\t\t\text: 'xltx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-excel.template.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'xltm',\n\t\t\t\tmime: 'application/vnd.ms-excel.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.slideshow.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'ppsm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\treturn {\n\t\t\t\text: 'docx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-word.document.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'docm',\n\t\t\t\tmime: 'application/vnd.ms-word.document.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.template':\n\t\t\treturn {\n\t\t\t\text: 'dotx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-word.template.macroenabledtemplate':\n\t\t\treturn {\n\t\t\t\text: 'dotm',\n\t\t\t\tmime: 'application/vnd.ms-word.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.template':\n\t\t\treturn {\n\t\t\t\text: 'potx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.template.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'potm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\treturn {\n\t\t\t\text: 'pptx',\n\t\t\t\tmime: mimeType,\n\t\t\t};\n\t\tcase 'application/vnd.ms-powerpoint.presentation.macroenabled':\n\t\t\treturn {\n\t\t\t\text: 'pptm',\n\t\t\t\tmime: 'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t\t\t};\n\t\tcase 'application/vnd.ms-visio.drawing':\n\t\t\treturn {\n\t\t\t\text: 'vsdx',\n\t\t\t\tmime: 'application/vnd.visio',\n\t\t\t};\n\t\tcase 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml':\n\t\t\treturn {\n\t\t\t\text: '3mf',\n\t\t\t\tmime: 'model/3mf',\n\t\t\t};\n\t\tdefault:\n\t}\n}\n\nfunction _check(buffer, headers, options) {\n\toptions = {\n\t\toffset: 0,\n\t\t...options,\n\t};\n\n\tfor (const [index, header] of headers.entries()) {\n\t\t// If a bitmask is set\n\t\tif (options.mask) {\n\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\tif (header !== (options.mask[index] & buffer[index + options.offset])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (header !== buffer[index + options.offset]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport async function fileTypeFromTokenizer(tokenizer, options) {\n\treturn new FileTypeParser(options).fromTokenizer(tokenizer);\n}\n\nexport async function fileTypeStream(webStream, options) {\n\treturn new FileTypeParser(options).toDetectionStream(webStream, options);\n}\n\nexport class FileTypeParser {\n\tconstructor(options) {\n\t\tthis.options = {\n\t\t\tmpegOffsetTolerance: 0,\n\t\t\t...options,\n\t\t};\n\n\t\tthis.detectors = [...(options?.customDetectors ?? []),\n\t\t\t{id: 'core', detect: this.detectConfident},\n\t\t\t{id: 'core.imprecise', detect: this.detectImprecise}];\n\t\tthis.tokenizerOptions = {\n\t\t\tabortSignal: options?.signal,\n\t\t};\n\t}\n\n\tasync fromTokenizer(tokenizer) {\n\t\tconst initialPosition = tokenizer.position;\n\n\t\t// Iterate through all file-type detectors\n\t\tfor (const detector of this.detectors) {\n\t\t\tconst fileType = await detector.detect(tokenizer);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\n\t\t\tif (initialPosition !== tokenizer.position) {\n\t\t\t\treturn undefined; // Cannot proceed scanning of the tokenizer is at an arbitrary position\n\t\t\t}\n\t\t}\n\t}\n\n\tasync fromBuffer(input) {\n\t\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer)) {\n\t\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t\t}\n\n\t\tconst buffer = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\t\tif (!(buffer?.length > 1)) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.fromTokenizer(strtok3.fromBuffer(buffer, this.tokenizerOptions));\n\t}\n\n\tasync fromBlob(blob) {\n\t\tconst tokenizer = strtok3.fromBlob(blob, this.tokenizerOptions);\n\t\ttry {\n\t\t\treturn await this.fromTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync fromStream(stream) {\n\t\tconst tokenizer = strtok3.fromWebStream(stream, this.tokenizerOptions);\n\t\ttry {\n\t\t\treturn await this.fromTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync toDetectionStream(stream, options) {\n\t\tconst {sampleSize = reasonableDetectionSizeInBytes} = options;\n\t\tlet detectedFileType;\n\t\tlet firstChunk;\n\n\t\tconst reader = stream.getReader({mode: 'byob'});\n\t\ttry {\n\t\t\t// Read the first chunk from the stream\n\t\t\tconst {value: chunk, done} = await reader.read(new Uint8Array(sampleSize));\n\t\t\tfirstChunk = chunk;\n\t\t\tif (!done && chunk) {\n\t\t\t\ttry {\n\t\t\t\t\t// Attempt to detect the file type from the chunk\n\t\t\t\t\tdetectedFileType = await this.fromBuffer(chunk.subarray(0, sampleSize));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\t\t\tthrow error; // Re-throw non-EndOfStreamError\n\t\t\t\t\t}\n\n\t\t\t\t\tdetectedFileType = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirstChunk = chunk;\n\t\t} finally {\n\t\t\treader.releaseLock(); // Ensure the reader is released\n\t\t}\n\n\t\t// Create a new ReadableStream to manage locking issues\n\t\tconst transformStream = new TransformStream({\n\t\t\tasync start(controller) {\n\t\t\t\tcontroller.enqueue(firstChunk); // Enqueue the initial chunk\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\t// Pass through the chunks without modification\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t});\n\n\t\tconst newStream = stream.pipeThrough(transformStream);\n\t\tnewStream.fileType = detectedFileType;\n\n\t\treturn newStream;\n\t}\n\n\tcheck(header, options) {\n\t\treturn _check(this.buffer, header, options);\n\t}\n\n\tcheckString(header, options) {\n\t\treturn this.check(stringToBytes(header, options?.encoding), options);\n\t}\n\n\t// Detections with a high degree of certainty in identifying the correct file type\n\tdetectConfident = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Keep reading until EOF if the file size is unknown.\n\t\tif (tokenizer.fileInfo.size === undefined) {\n\t\t\ttokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;\n\t\t}\n\n\t\tthis.tokenizer = tokenizer;\n\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: 32, mayBeLess: true});\n\n\t\t// -- 2-byte signatures --\n\n\t\tif (this.check([0x42, 0x4D])) {\n\t\t\treturn {\n\t\t\t\text: 'bmp',\n\t\t\t\tmime: 'image/bmp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x0B, 0x77])) {\n\t\t\treturn {\n\t\t\t\text: 'ac3',\n\t\t\t\tmime: 'audio/vnd.dolby.dd-raw',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x78, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'dmg',\n\t\t\t\tmime: 'application/x-apple-diskimage',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4D, 0x5A])) {\n\t\t\treturn {\n\t\t\t\text: 'exe',\n\t\t\t\tmime: 'application/x-msdownload',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x25, 0x21])) {\n\t\t\tawait tokenizer.peekBuffer(this.buffer, {length: 24, mayBeLess: true});\n\n\t\t\tif (\n\t\t\t\tthis.checkString('PS-Adobe-', {offset: 2})\n\t\t\t\t&& this.checkString(' EPSF-', {offset: 14})\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'eps',\n\t\t\t\t\tmime: 'application/eps',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ps',\n\t\t\t\tmime: 'application/postscript',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x1F, 0xA0])\n\t\t\t|| this.check([0x1F, 0x9D])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'Z',\n\t\t\t\tmime: 'application/x-compress',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC7, 0x71])) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x60, 0xEA])) {\n\t\t\treturn {\n\t\t\t\text: 'arj',\n\t\t\t\tmime: 'application/x-arj',\n\t\t\t};\n\t\t}\n\n\t\t// -- 3-byte signatures --\n\n\t\tif (this.check([0xEF, 0xBB, 0xBF])) { // UTF-8-BOM\n\t\t\t// Strip off UTF-8-BOM\n\t\t\tthis.tokenizer.ignore(3);\n\t\t\treturn this.detectConfident(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x47, 0x49, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'gif',\n\t\t\t\tmime: 'image/gif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0xBC])) {\n\t\t\treturn {\n\t\t\t\text: 'jxr',\n\t\t\t\tmime: 'image/vnd.ms-photo',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x1F, 0x8B, 0x8])) {\n\t\t\tconst gzipHandler = new GzipHandler(tokenizer);\n\n\t\t\tconst stream = gzipHandler.inflate();\n\t\t\tlet shouldCancelStream = true;\n\t\t\ttry {\n\t\t\t\tlet compressedFileType;\n\t\t\t\ttry {\n\t\t\t\t\tcompressedFileType = await this.fromStream(stream);\n\t\t\t\t} catch {\n\t\t\t\t\tshouldCancelStream = false;\n\t\t\t\t}\n\n\t\t\t\tif (compressedFileType && compressedFileType.ext === 'tar') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'tar.gz',\n\t\t\t\t\t\tmime: 'application/gzip',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (shouldCancelStream) {\n\t\t\t\t\tawait stream.cancel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'gz',\n\t\t\t\tmime: 'application/gzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x5A, 0x68])) {\n\t\t\treturn {\n\t\t\t\text: 'bz2',\n\t\t\t\tmime: 'application/x-bzip2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ID3')) {\n\t\t\tawait tokenizer.ignore(6); // Skip ID3 header until the header size\n\t\t\tconst id3HeaderLength = await tokenizer.readToken(uint32SyncSafeToken);\n\t\t\tif (tokenizer.position + id3HeaderLength > tokenizer.fileInfo.size) {\n\t\t\t\t// Guess file type based on ID3 header for backward compatibility\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tawait tokenizer.ignore(id3HeaderLength);\n\t\t\treturn this.fromTokenizer(tokenizer); // Skip ID3 header, recursion\n\t\t}\n\n\t\t// Musepack, SV7\n\t\tif (this.checkString('MP+')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\t(this.buffer[0] === 0x43 || this.buffer[0] === 0x46)\n\t\t\t&& this.check([0x57, 0x53], {offset: 1})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'swf',\n\t\t\t\tmime: 'application/x-shockwave-flash',\n\t\t\t};\n\t\t}\n\n\t\t// -- 4-byte signatures --\n\n\t\t// Requires a sample size of 4 bytes\n\t\tif (this.check([0xFF, 0xD8, 0xFF])) {\n\t\t\tif (this.check([0xF7], {offset: 3})) { // JPG7/SOF55, indicating a ISO/IEC 14495 / JPEG-LS file\n\t\t\t\treturn {\n\t\t\t\t\text: 'jls',\n\t\t\t\t\tmime: 'image/jls',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'jpg',\n\t\t\t\tmime: 'image/jpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4F, 0x62, 0x6A, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'avro',\n\t\t\t\tmime: 'application/avro',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FLIF')) {\n\t\t\treturn {\n\t\t\t\text: 'flif',\n\t\t\t\tmime: 'image/flif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('8BPS')) {\n\t\t\treturn {\n\t\t\t\text: 'psd',\n\t\t\t\tmime: 'image/vnd.adobe.photoshop',\n\t\t\t};\n\t\t}\n\n\t\t// Musepack, SV8\n\t\tif (this.checkString('MPCK')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FORM')) {\n\t\t\treturn {\n\t\t\t\text: 'aif',\n\t\t\t\tmime: 'audio/aiff',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('icns', {offset: 0})) {\n\t\t\treturn {\n\t\t\t\text: 'icns',\n\t\t\t\tmime: 'image/icns',\n\t\t\t};\n\t\t}\n\n\t\t// Zip-based file formats\n\t\t// Need to be before the `zip` check\n\t\tif (this.check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature\n\t\t\tlet fileType;\n\t\t\tawait new ZipHandler(tokenizer).unzip(zipHeader => {\n\t\t\t\tswitch (zipHeader.filename) {\n\t\t\t\t\tcase 'META-INF/mozilla.rsa':\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'xpi',\n\t\t\t\t\t\t\tmime: 'application/x-xpinstall',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'META-INF/MANIFEST.MF':\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'jar',\n\t\t\t\t\t\t\tmime: 'application/java-archive',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'mimetype':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\t\tconst mimeType = new TextDecoder('utf-8').decode(fileData).trim();\n\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase '[Content_Types].xml':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\t\tlet xmlContent = new TextDecoder('utf-8').decode(fileData);\n\t\t\t\t\t\t\t\tconst endPos = xmlContent.indexOf('.main+xml\"');\n\t\t\t\t\t\t\t\tif (endPos === -1) {\n\t\t\t\t\t\t\t\t\tconst mimeType = 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml';\n\t\t\t\t\t\t\t\t\tif (xmlContent.includes(`ContentType=\"${mimeType}\"`)) {\n\t\t\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\txmlContent = xmlContent.slice(0, Math.max(0, endPos));\n\t\t\t\t\t\t\t\t\tconst firstPos = xmlContent.lastIndexOf('\"');\n\t\t\t\t\t\t\t\t\tconst mimeType = xmlContent.slice(Math.max(0, firstPos + 1));\n\t\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstop: true,\n\t\t\t\t\t\t};\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (/classes\\d*\\.dex/.test(zipHeader.filename)) {\n\t\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\t\text: 'apk',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.android.package-archive',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn {stop: true};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}).catch(error => {\n\t\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\t\tthrow error; // Re-throw non-EndOfStreamError\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn fileType ?? {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('OggS')) {\n\t\t\t// This is an OGG container\n\t\t\tawait tokenizer.ignore(28);\n\t\t\tconst type = new Uint8Array(8);\n\t\t\tawait tokenizer.readBuffer(type);\n\n\t\t\t// Needs to be before `ogg` check\n\t\t\tif (_check(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'opus',\n\t\t\t\t\tmime: 'audio/ogg; codecs=opus',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' theora' in header.\n\t\t\tif (_check(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogv',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01video' in header.\n\t\t\tif (_check(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogm',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\t\tif (_check(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'oga',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\t\tif (_check(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'spx',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01vorbis' in header\n\t\t\tif (_check(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogg',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\t\treturn {\n\t\t\t\text: 'ogx',\n\t\t\t\tmime: 'application/ogg',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x50, 0x4B])\n\t\t\t&& (this.buffer[2] === 0x3 || this.buffer[2] === 0x5 || this.buffer[2] === 0x7)\n\t\t\t&& (this.buffer[3] === 0x4 || this.buffer[3] === 0x6 || this.buffer[3] === 0x8)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('MThd')) {\n\t\t\treturn {\n\t\t\t\text: 'mid',\n\t\t\t\tmime: 'audio/midi',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOFF')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff',\n\t\t\t\tmime: 'font/woff',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOF2')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff2',\n\t\t\t\tmime: 'font/woff2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xD4, 0xC3, 0xB2, 0xA1]) || this.check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\t\treturn {\n\t\t\t\text: 'pcap',\n\t\t\t\tmime: 'application/vnd.tcpdump.pcap',\n\t\t\t};\n\t\t}\n\n\t\t// Sony DSD Stream File (DSF)\n\t\tif (this.checkString('DSD ')) {\n\t\t\treturn {\n\t\t\t\text: 'dsf',\n\t\t\t\tmime: 'audio/x-dsf', // Non-standard\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('LZIP')) {\n\t\t\treturn {\n\t\t\t\text: 'lz',\n\t\t\t\tmime: 'application/x-lzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('fLaC')) {\n\t\t\treturn {\n\t\t\t\text: 'flac',\n\t\t\t\tmime: 'audio/flac',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x50, 0x47, 0xFB])) {\n\t\t\treturn {\n\t\t\t\text: 'bpg',\n\t\t\t\tmime: 'image/bpg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('wvpk')) {\n\t\t\treturn {\n\t\t\t\text: 'wv',\n\t\t\t\tmime: 'audio/wavpack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('%PDF')) {\n\t\t\t// Assume this is just a normal PDF\n\t\t\treturn {\n\t\t\t\text: 'pdf',\n\t\t\t\tmime: 'application/pdf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x61, 0x73, 0x6D])) {\n\t\t\treturn {\n\t\t\t\text: 'wasm',\n\t\t\t\tmime: 'application/wasm',\n\t\t\t};\n\t\t}\n\n\t\t// TIFF, little-endian type\n\t\tif (this.check([0x49, 0x49])) {\n\t\t\tconst fileType = await this.readTiffHeader(false);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\t// TIFF, big-endian type\n\t\tif (this.check([0x4D, 0x4D])) {\n\t\t\tconst fileType = await this.readTiffHeader(true);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('MAC ')) {\n\t\t\treturn {\n\t\t\t\text: 'ape',\n\t\t\t\tmime: 'audio/ape',\n\t\t\t};\n\t\t}\n\n\t\t// https://github.com/file/file/blob/master/magic/Magdir/matroska\n\t\tif (this.check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML\n\t\t\tasync function readField() {\n\t\t\t\tconst msb = await tokenizer.peekNumber(Token.UINT8);\n\t\t\t\tlet mask = 0x80;\n\t\t\t\tlet ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D\n\n\t\t\t\twhile ((msb & mask) === 0 && mask !== 0) {\n\t\t\t\t\t++ic;\n\t\t\t\t\tmask >>= 1;\n\t\t\t\t}\n\n\t\t\t\tconst id = new Uint8Array(ic + 1);\n\t\t\t\tawait tokenizer.readBuffer(id);\n\t\t\t\treturn id;\n\t\t\t}\n\n\t\t\tasync function readElement() {\n\t\t\t\tconst idField = await readField();\n\t\t\t\tconst lengthField = await readField();\n\n\t\t\t\tlengthField[0] ^= 0x80 >> (lengthField.length - 1);\n\t\t\t\tconst nrLength = Math.min(6, lengthField.length); // JavaScript can max read 6 bytes integer\n\n\t\t\t\tconst idView = new DataView(idField.buffer);\n\t\t\t\tconst lengthView = new DataView(lengthField.buffer, lengthField.length - nrLength, nrLength);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: getUintBE(idView),\n\t\t\t\t\tlen: getUintBE(lengthView),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tasync function readChildren(children) {\n\t\t\t\twhile (children > 0) {\n\t\t\t\t\tconst element = await readElement();\n\t\t\t\t\tif (element.id === 0x42_82) {\n\t\t\t\t\t\tconst rawValue = await tokenizer.readToken(new Token.StringType(element.len));\n\t\t\t\t\t\treturn rawValue.replaceAll(/\\00.*$/g, ''); // Return DocType\n\t\t\t\t\t}\n\n\t\t\t\t\tawait tokenizer.ignore(element.len); // ignore payload\n\t\t\t\t\t--children;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst re = await readElement();\n\t\t\tconst documentType = await readChildren(re.len);\n\n\t\t\tswitch (documentType) {\n\t\t\t\tcase 'webm':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'webm',\n\t\t\t\t\t\tmime: 'video/webm',\n\t\t\t\t\t};\n\n\t\t\t\tcase 'matroska':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mkv',\n\t\t\t\t\t\tmime: 'video/matroska',\n\t\t\t\t\t};\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('SQLi')) {\n\t\t\treturn {\n\t\t\t\text: 'sqlite',\n\t\t\t\tmime: 'application/x-sqlite3',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\t\treturn {\n\t\t\t\text: 'nes',\n\t\t\t\tmime: 'application/x-nintendo-nes-rom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Cr24')) {\n\t\t\treturn {\n\t\t\t\text: 'crx',\n\t\t\t\tmime: 'application/x-google-chrome-extension',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('MSCF')\n\t\t\t|| this.checkString('ISc(')\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'cab',\n\t\t\t\tmime: 'application/vnd.ms-cab-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\t\treturn {\n\t\t\t\text: 'rpm',\n\t\t\t\tmime: 'application/x-rpm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC5, 0xD0, 0xD3, 0xC6])) {\n\t\t\treturn {\n\t\t\t\text: 'eps',\n\t\t\t\tmime: 'application/eps',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x28, 0xB5, 0x2F, 0xFD])) {\n\t\t\treturn {\n\t\t\t\text: 'zst',\n\t\t\t\tmime: 'application/zstd',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x7F, 0x45, 0x4C, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'elf',\n\t\t\t\tmime: 'application/x-elf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x21, 0x42, 0x44, 0x4E])) {\n\t\t\treturn {\n\t\t\t\text: 'pst',\n\t\t\t\tmime: 'application/vnd.ms-outlook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('PAR1') || this.checkString('PARE')) {\n\t\t\treturn {\n\t\t\t\text: 'parquet',\n\t\t\t\tmime: 'application/vnd.apache.parquet',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ttcf')) {\n\t\t\treturn {\n\t\t\t\text: 'ttc',\n\t\t\t\tmime: 'font/collection',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFE, 0xED, 0xFA, 0xCE]) // 32-bit, big-endian\n\t\t\t|| this.check([0xFE, 0xED, 0xFA, 0xCF]) // 64-bit, big-endian\n\t\t\t|| this.check([0xCE, 0xFA, 0xED, 0xFE]) // 32-bit, little-endian\n\t\t\t|| this.check([0xCF, 0xFA, 0xED, 0xFE]) // 64-bit, little-endian\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'macho',\n\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x22, 0x4D, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'lz4',\n\t\t\t\tmime: 'application/x-lz4', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('regf')) {\n\t\t\treturn {\n\t\t\t\text: 'dat',\n\t\t\t\tmime: 'application/x-ft-windows-registry-hive',\n\t\t\t};\n\t\t}\n\n\t\t// SPSS Statistical Data File\n\t\tif (this.checkString('$FL2') || this.checkString('$FL3')) {\n\t\t\treturn {\n\t\t\t\text: 'sav',\n\t\t\t\tmime: 'application/x-spss-sav',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'otf',\n\t\t\t\tmime: 'font/otf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('#!AMR')) {\n\t\t\treturn {\n\t\t\t\text: 'amr',\n\t\t\t\tmime: 'audio/amr',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('{\\\\rtf')) {\n\t\t\treturn {\n\t\t\t\text: 'rtf',\n\t\t\t\tmime: 'application/rtf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x46, 0x4C, 0x56, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'flv',\n\t\t\t\tmime: 'video/x-flv',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('IMPM')) {\n\t\t\treturn {\n\t\t\t\text: 'it',\n\t\t\t\tmime: 'audio/x-it',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('-lh0-', {offset: 2})\n\t\t\t|| this.checkString('-lh1-', {offset: 2})\n\t\t\t|| this.checkString('-lh2-', {offset: 2})\n\t\t\t|| this.checkString('-lh3-', {offset: 2})\n\t\t\t|| this.checkString('-lh4-', {offset: 2})\n\t\t\t|| this.checkString('-lh5-', {offset: 2})\n\t\t\t|| this.checkString('-lh6-', {offset: 2})\n\t\t\t|| this.checkString('-lh7-', {offset: 2})\n\t\t\t|| this.checkString('-lzs-', {offset: 2})\n\t\t\t|| this.checkString('-lz4-', {offset: 2})\n\t\t\t|| this.checkString('-lz5-', {offset: 2})\n\t\t\t|| this.checkString('-lhd-', {offset: 2})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'lzh',\n\t\t\t\tmime: 'application/x-lzh-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// MPEG program stream (PS or MPEG-PS)\n\t\tif (this.check([0x00, 0x00, 0x01, 0xBA])) {\n\t\t\t// MPEG-PS, MPEG-1 Part 1\n\t\t\tif (this.check([0x21], {offset: 4, mask: [0xF1]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .ps, .mpeg\n\t\t\t\t\tmime: 'video/MP1S',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG-PS, MPEG-2 Part 1\n\t\t\tif (this.check([0x44], {offset: 4, mask: [0xC4]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .mpg, .m2p, .vob or .sub\n\t\t\t\t\tmime: 'video/MP2P',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('ITSF')) {\n\t\t\treturn {\n\t\t\t\text: 'chm',\n\t\t\t\tmime: 'application/vnd.ms-htmlhelp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xCA, 0xFE, 0xBA, 0xBE])) {\n\t\t\t// Java bytecode and Mach-O universal binaries have the same magic number.\n\t\t\t// We disambiguate based on the next 4 bytes, as done by `file`.\n\t\t\t// See https://github.com/file/file/blob/master/magic/Magdir/cafebabe\n\t\t\tconst machOArchitectureCount = Token.UINT32_BE.get(this.buffer, 4);\n\t\t\tconst javaClassFileMajorVersion = Token.UINT16_BE.get(this.buffer, 6);\n\n\t\t\tif (machOArchitectureCount > 0 && machOArchitectureCount <= 30) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'macho',\n\t\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (javaClassFileMajorVersion > 30) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'class',\n\t\t\t\t\tmime: 'application/java-vm',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('.RMF')) {\n\t\t\treturn {\n\t\t\t\text: 'rm',\n\t\t\t\tmime: 'application/vnd.rn-realmedia',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.checkString('DRACO')) {\n\t\t\treturn {\n\t\t\t\text: 'drc',\n\t\t\t\tmime: 'application/vnd.google.draco', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\t// -- 6-byte signatures --\n\n\t\tif (this.check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'xz',\n\t\t\t\tmime: 'application/x-xz',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('<?xml ')) {\n\t\t\treturn {\n\t\t\t\text: 'xml',\n\t\t\t\tmime: 'application/xml',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\t\treturn {\n\t\t\t\text: '7z',\n\t\t\t\tmime: 'application/x-7z-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7])\n\t\t\t&& (this.buffer[6] === 0x0 || this.buffer[6] === 0x1)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'rar',\n\t\t\t\tmime: 'application/x-rar-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('solid ')) {\n\t\t\treturn {\n\t\t\t\text: 'stl',\n\t\t\t\tmime: 'model/stl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('AC')) {\n\t\t\tconst version = new Token.StringType(4, 'latin1').get(this.buffer, 2);\n\t\t\tif (version.match('^d*') && version >= 1000 && version <= 1050) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'dwg',\n\t\t\t\t\tmime: 'image/vnd.dwg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('070707')) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\t// -- 7-byte signatures --\n\n\t\tif (this.checkString('BLENDER')) {\n\t\t\treturn {\n\t\t\t\text: 'blend',\n\t\t\t\tmime: 'application/x-blender',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('!<arch>')) {\n\t\t\tawait tokenizer.ignore(8);\n\t\t\tconst string = await tokenizer.readToken(new Token.StringType(13, 'ascii'));\n\t\t\tif (string === 'debian-binary') {\n\t\t\t\treturn {\n\t\t\t\t\text: 'deb',\n\t\t\t\t\tmime: 'application/x-deb',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ar',\n\t\t\t\tmime: 'application/x-unix-archive',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('WEBVTT')\n\t\t\t&&\t(\n\t\t\t\t// One of LF, CR, tab, space, or end of file must follow \"WEBVTT\" per the spec (see `fixture/fixture-vtt-*.vtt` for examples). Note that `\\0` is technically the null character (there is no such thing as an EOF character). However, checking for `\\0` gives us the same result as checking for the end of the stream.\n\t\t\t\t(['\\n', '\\r', '\\t', ' ', '\\0'].some(char7 => this.checkString(char7, {offset: 6}))))\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'vtt',\n\t\t\t\tmime: 'text/vtt',\n\t\t\t};\n\t\t}\n\n\t\t// -- 8-byte signatures --\n\n\t\tif (this.check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\t// APNG format (https://wiki.mozilla.org/APNG_Specification)\n\t\t\t// 1. Find the first IDAT (image data) chunk (49 44 41 54)\n\t\t\t// 2. Check if there is an \"acTL\" chunk before the IDAT one (61 63 54 4C)\n\n\t\t\t// Offset calculated as follows:\n\t\t\t// - 8 bytes: PNG signature\n\t\t\t// - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk\n\n\t\t\tawait tokenizer.ignore(8); // ignore PNG signature\n\n\t\t\tasync function readChunkHeader() {\n\t\t\t\treturn {\n\t\t\t\t\tlength: await tokenizer.readToken(Token.INT32_BE),\n\t\t\t\t\ttype: await tokenizer.readToken(new Token.StringType(4, 'latin1')),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tdo {\n\t\t\t\tconst chunk = await readChunkHeader();\n\t\t\t\tif (chunk.length < 0) {\n\t\t\t\t\treturn; // Invalid chunk length\n\t\t\t\t}\n\n\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\tcase 'IDAT':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'png',\n\t\t\t\t\t\t\tmime: 'image/png',\n\t\t\t\t\t\t};\n\t\t\t\t\tcase 'acTL':\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'apng',\n\t\t\t\t\t\t\tmime: 'image/apng',\n\t\t\t\t\t\t};\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tawait tokenizer.ignore(chunk.length + 4); // Ignore chunk-data + CRC\n\t\t\t\t}\n\t\t\t} while (tokenizer.position + 8 < tokenizer.fileInfo.size);\n\n\t\t\treturn {\n\t\t\t\text: 'png',\n\t\t\t\tmime: 'image/png',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'arrow',\n\t\t\t\tmime: 'application/vnd.apache.arrow.file',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'glb',\n\t\t\t\tmime: 'model/gltf-binary',\n\t\t\t};\n\t\t}\n\n\t\t// `mov` format variants\n\t\tif (\n\t\t\tthis.check([0x66, 0x72, 0x65, 0x65], {offset: 4}) // `free`\n\t\t\t|| this.check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) // `mdat` MJPEG\n\t\t\t|| this.check([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) // `moov`\n\t\t\t|| this.check([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide`\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mov',\n\t\t\t\tmime: 'video/quicktime',\n\t\t\t};\n\t\t}\n\n\t\t// -- 9-byte signatures --\n\n\t\tif (this.check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'orf',\n\t\t\t\tmime: 'image/x-olympus-orf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('gimp xcf ')) {\n\t\t\treturn {\n\t\t\t\text: 'xcf',\n\t\t\t\tmime: 'image/x-xcf',\n\t\t\t};\n\t\t}\n\n\t\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\t\t// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n\t\t// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n\t\t// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n\t\tif (\n\t\t\tthis.checkString('ftyp', {offset: 4})\n\t\t\t&& (this.buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?\n\t\t) {\n\t\t\t// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n\t\t\t// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n\t\t\tconst brandMajor = new Token.StringType(4, 'latin1').get(this.buffer, 8).replace('\\0', ' ').trim();\n\t\t\tswitch (brandMajor) {\n\t\t\t\tcase 'avif':\n\t\t\t\tcase 'avis':\n\t\t\t\t\treturn {ext: 'avif', mime: 'image/avif'};\n\t\t\t\tcase 'mif1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif'};\n\t\t\t\tcase 'msf1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif-sequence'};\n\t\t\t\tcase 'heic':\n\t\t\t\tcase 'heix':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic'};\n\t\t\t\tcase 'hevc':\n\t\t\t\tcase 'hevx':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic-sequence'};\n\t\t\t\tcase 'qt':\n\t\t\t\t\treturn {ext: 'mov', mime: 'video/quicktime'};\n\t\t\t\tcase 'M4V':\n\t\t\t\tcase 'M4VH':\n\t\t\t\tcase 'M4VP':\n\t\t\t\t\treturn {ext: 'm4v', mime: 'video/x-m4v'};\n\t\t\t\tcase 'M4P':\n\t\t\t\t\treturn {ext: 'm4p', mime: 'video/mp4'};\n\t\t\t\tcase 'M4B':\n\t\t\t\t\treturn {ext: 'm4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'M4A':\n\t\t\t\t\treturn {ext: 'm4a', mime: 'audio/x-m4a'};\n\t\t\t\tcase 'F4V':\n\t\t\t\t\treturn {ext: 'f4v', mime: 'video/mp4'};\n\t\t\t\tcase 'F4P':\n\t\t\t\t\treturn {ext: 'f4p', mime: 'video/mp4'};\n\t\t\t\tcase 'F4A':\n\t\t\t\t\treturn {ext: 'f4a', mime: 'audio/mp4'};\n\t\t\t\tcase 'F4B':\n\t\t\t\t\treturn {ext: 'f4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'crx':\n\t\t\t\t\treturn {ext: 'cr3', mime: 'image/x-canon-cr3'};\n\t\t\t\tdefault:\n\t\t\t\t\tif (brandMajor.startsWith('3g')) {\n\t\t\t\t\t\tif (brandMajor.startsWith('3g2')) {\n\t\t\t\t\t\t\treturn {ext: '3g2', mime: 'video/3gpp2'};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {ext: '3gp', mime: 'video/3gpp'};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {ext: 'mp4', mime: 'video/mp4'};\n\t\t\t}\n\t\t}\n\n\t\t// -- 10-byte signatures --\n\n\t\tif (this.checkString('REGEDIT4\\r\\n')) {\n\t\t\treturn {\n\t\t\t\text: 'reg',\n\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t};\n\t\t}\n\n\t\t// -- 12-byte signatures --\n\n\t\t// RIFF file format which might be AVI, WAV, QCP, etc\n\t\tif (this.check([0x52, 0x49, 0x46, 0x46])) {\n\t\t\tif (this.checkString('WEBP', {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webp',\n\t\t\t\t\tmime: 'image/webp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'avi',\n\t\t\t\t\tmime: 'video/vnd.avi',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'wav',\n\t\t\t\t\tmime: 'audio/wav',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// QLCM, QCP file\n\t\t\tif (this.check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'qcp',\n\t\t\t\t\tmime: 'audio/qcelp',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {\n\t\t\treturn {\n\t\t\t\text: 'rw2',\n\t\t\t\tmime: 'image/x-panasonic-rw2',\n\t\t\t};\n\t\t}\n\n\t\t// ASF_Header_Object first 80 bytes\n\t\tif (this.check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t\tasync function readHeader() {\n\t\t\t\tconst guid = new Uint8Array(16);\n\t\t\t\tawait tokenizer.readBuffer(guid);\n\t\t\t\treturn {\n\t\t\t\t\tid: guid,\n\t\t\t\t\tsize: Number(await tokenizer.readToken(Token.UINT64_LE)),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tawait tokenizer.ignore(30);\n\t\t\t// Search for header should be in first 1KB of file.\n\t\t\twhile (tokenizer.position + 24 < tokenizer.fileInfo.size) {\n\t\t\t\tconst header = await readHeader();\n\t\t\t\tlet payload = header.size - 24;\n\t\t\t\tif (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {\n\t\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\t\tconst typeId = new Uint8Array(16);\n\t\t\t\t\tpayload -= await tokenizer.readBuffer(typeId);\n\n\t\t\t\t\tif (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t\t// Found audio:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\t\tmime: 'audio/x-ms-asf',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_check(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t\t// Found video:\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\t\tmime: 'video/x-ms-asf',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tawait tokenizer.ignore(payload);\n\t\t\t}\n\n\t\t\t// Default to ASF generic extension\n\t\t\treturn {\n\t\t\t\text: 'asf',\n\t\t\t\tmime: 'application/vnd.ms-asf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\treturn {\n\t\t\t\text: 'ktx',\n\t\t\t\tmime: 'image/ktx',\n\t\t\t};\n\t\t}\n\n\t\tif ((this.check([0x7E, 0x10, 0x04]) || this.check([0x7E, 0x18, 0x04])) && this.check([0x30, 0x4D, 0x49, 0x45], {offset: 4})) {\n\t\t\treturn {\n\t\t\t\text: 'mie',\n\t\t\t\tmime: 'application/x-mie',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {offset: 2})) {\n\t\t\treturn {\n\t\t\t\text: 'shp',\n\t\t\t\tmime: 'application/x-esri-shape',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0x4F, 0xFF, 0x51])) {\n\t\t\treturn {\n\t\t\t\text: 'j2c',\n\t\t\t\tmime: 'image/j2c',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t\t// JPEG-2000 family\n\n\t\t\tawait tokenizer.ignore(20);\n\t\t\tconst type = await tokenizer.readToken(new Token.StringType(4, 'ascii'));\n\t\t\tswitch (type) {\n\t\t\t\tcase 'jp2 ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jp2',\n\t\t\t\t\t\tmime: 'image/jp2',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpx ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpx',\n\t\t\t\t\t\tmime: 'image/jpx',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpm ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpm',\n\t\t\t\t\t\tmime: 'image/jpm',\n\t\t\t\t\t};\n\t\t\t\tcase 'mjp2':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mj2',\n\t\t\t\t\t\tmime: 'image/mj2',\n\t\t\t\t\t};\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFF, 0x0A])\n\t\t\t|| this.check([0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'jxl',\n\t\t\t\tmime: 'image/jxl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFE, 0xFF])) { // UTF-16-BOM-BE\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding: 'utf-16be'})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some unknown text based format\n\t\t}\n\n\t\tif (this.check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\t\t// Detected Microsoft Compound File Binary File (MS-CFB) Format.\n\t\t\treturn {\n\t\t\t\text: 'cfb',\n\t\t\t\tmime: 'application/x-cfb',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 32 to 256.\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (this.check([0x61, 0x63, 0x73, 0x70], {offset: 36})) {\n\t\t\treturn {\n\t\t\t\text: 'icc',\n\t\t\t\tmime: 'application/vnd.iccprofile',\n\t\t\t};\n\t\t}\n\n\t\t// ACE: requires 14 bytes in the buffer\n\t\tif (this.checkString('**ACE', {offset: 7}) && this.checkString('**', {offset: 12})) {\n\t\t\treturn {\n\t\t\t\text: 'ace',\n\t\t\t\tmime: 'application/x-ace-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// -- 15-byte signatures --\n\n\t\tif (this.checkString('BEGIN:')) {\n\t\t\tif (this.checkString('VCARD', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'vcf',\n\t\t\t\t\tmime: 'text/vcard',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('VCALENDAR', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ics',\n\t\t\t\t\tmime: 'text/calendar',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// `raf` is here just to keep all the raw image detectors together.\n\t\tif (this.checkString('FUJIFILMCCD-RAW')) {\n\t\t\treturn {\n\t\t\t\text: 'raf',\n\t\t\t\tmime: 'image/x-fujifilm-raf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Extended Module:')) {\n\t\t\treturn {\n\t\t\t\text: 'xm',\n\t\t\t\tmime: 'audio/x-xm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Creative Voice File')) {\n\t\t\treturn {\n\t\t\t\text: 'voc',\n\t\t\t\tmime: 'audio/x-voc',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x00, 0x00, 0x00]) && this.buffer.length >= 16) { // Rough & quick check Pickle/ASAR\n\t\t\tconst jsonSize = new DataView(this.buffer.buffer).getUint32(12, true);\n\n\t\t\tif (jsonSize > 12 && this.buffer.length >= jsonSize + 16) {\n\t\t\t\ttry {\n\t\t\t\t\tconst header = new TextDecoder().decode(this.buffer.subarray(16, jsonSize + 16));\n\t\t\t\t\tconst json = JSON.parse(header);\n\t\t\t\t\t// Check if Pickle is ASAR\n\t\t\t\t\tif (json.files) { // Final check, assuring Pickle/ASAR format\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asar',\n\t\t\t\t\t\t\tmime: 'application/x-asar',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\t\treturn {\n\t\t\t\text: 'mxf',\n\t\t\t\tmime: 'application/mxf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('SCRM', {offset: 44})) {\n\t\t\treturn {\n\t\t\t\text: 's3m',\n\t\t\t\tmime: 'audio/x-s3m',\n\t\t\t};\n\t\t}\n\n\t\t// Raw MPEG-2 transport stream (188-byte packets)\n\t\tif (this.check([0x47]) && this.check([0x47], {offset: 188})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\t// Blu-ray Disc Audio-Video (BDAV) MPEG-2 transport stream has 4-byte TP_extra_header before each 188-byte packet\n\t\tif (this.check([0x47], {offset: 4}) && this.check([0x47], {offset: 196})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\t\treturn {\n\t\t\t\text: 'mobi',\n\t\t\t\tmime: 'application/x-mobipocket-ebook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\t\treturn {\n\t\t\t\text: 'dcm',\n\t\t\t\tmime: 'application/dicom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'lnk',\n\t\t\t\tmime: 'application/x.ms.shortcut', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'alias',\n\t\t\t\tmime: 'application/x.apple.alias', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Kaydara FBX Binary \\u0000')) {\n\t\t\treturn {\n\t\t\t\text: 'fbx',\n\t\t\t\tmime: 'application/x.autodesk.fbx', // Invented by us\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x4C, 0x50], {offset: 34})\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x00, 0x01], {offset: 8})\n\t\t\t\t|| this.check([0x01, 0x00, 0x02], {offset: 8})\n\t\t\t\t|| this.check([0x02, 0x00, 0x02], {offset: 8})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'eot',\n\t\t\t\tmime: 'application/vnd.ms-fontobject',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {\n\t\t\treturn {\n\t\t\t\text: 'indd',\n\t\t\t\tmime: 'application/x-indesign',\n\t\t\t};\n\t\t}\n\n\t\t// -- 16-byte signatures --\n\n\t\t// JMP files - check for both Little Endian and Big Endian signatures\n\t\tif (this.check([0xFF, 0xFF, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00])\n\t\t\t|| this.check([0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'jmp',\n\t\t\t\tmime: 'application/x-jmp-data',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 256 to 512\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Requires a buffer size of 512 bytes\n\t\tif ((this.checkString('ustar', {offset: 257}) && (this.checkString('\\0', {offset: 262}) || this.checkString(' ', {offset: 262})))\n\t\t\t|| (this.check([0, 0, 0, 0, 0, 0], {offset: 257}) && tarHeaderChecksumMatches(this.buffer))) {\n\t\t\treturn {\n\t\t\t\text: 'tar',\n\t\t\t\tmime: 'application/x-tar',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0xFE])) { // UTF-16-BOM-LE\n\t\t\tconst encoding = 'utf-16le';\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0xFF, 0x0E], {offset: 2}) && this.checkString('SketchUp Model', {offset: 4, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'skp',\n\t\t\t\t\tmime: 'application/vnd.sketchup.skp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('Windows Registry Editor Version 5.00\\r\\n', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'reg',\n\t\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some text based format\n\t\t}\n\n\t\tif (this.checkString('-----BEGIN PGP MESSAGE-----')) {\n\t\t\treturn {\n\t\t\t\text: 'pgp',\n\t\t\t\tmime: 'application/pgp-encrypted',\n\t\t\t};\n\t\t}\n\t};\n\t// Detections with limited supporting data, resulting in a higher likelihood of false positives\n\tdetectImprecise = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Read initial sample size of 8 bytes\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(8, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (\n\t\t\tthis.check([0x0, 0x0, 0x1, 0xBA])\n\t\t\t|| this.check([0x0, 0x0, 0x1, 0xB3])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mpg',\n\t\t\t\tmime: 'video/mpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ttf',\n\t\t\t\tmime: 'font/ttf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x01, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ico',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x02, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'cur',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\t// Adjust buffer to `mpegOffsetTolerance`\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(2 + this.options.mpegOffsetTolerance, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)\n\t\tif (this.buffer.length >= (2 + this.options.mpegOffsetTolerance)) {\n\t\t\tfor (let depth = 0; depth <= this.options.mpegOffsetTolerance; ++depth) {\n\t\t\t\tconst type = this.scanMpeg(depth);\n\t\t\t\tif (type) {\n\t\t\t\t\treturn type;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tasync readTiffTag(bigEndian) {\n\t\tconst tagId = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tthis.tokenizer.ignore(10);\n\t\tswitch (tagId) {\n\t\t\tcase 50_341:\n\t\t\t\treturn {\n\t\t\t\t\text: 'arw',\n\t\t\t\t\tmime: 'image/x-sony-arw',\n\t\t\t\t};\n\t\t\tcase 50_706:\n\t\t\t\treturn {\n\t\t\t\t\text: 'dng',\n\t\t\t\t\tmime: 'image/x-adobe-dng',\n\t\t\t\t};\n\t\t\tdefault:\n\t\t}\n\t}\n\n\tasync readTiffIFD(bigEndian) {\n\t\tconst numberOfTags = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tfor (let n = 0; n < numberOfTags; ++n) {\n\t\t\tconst fileType = await this.readTiffTag(bigEndian);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync readTiffHeader(bigEndian) {\n\t\tconst version = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 2);\n\t\tconst ifdOffset = (bigEndian ? Token.UINT32_BE : Token.UINT32_LE).get(this.buffer, 4);\n\n\t\tif (version === 42) {\n\t\t\t// TIFF file header\n\t\t\tif (ifdOffset >= 6) {\n\t\t\t\tif (this.checkString('CR', {offset: 8})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'cr2',\n\t\t\t\t\t\tmime: 'image/x-canon-cr2',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (ifdOffset >= 8) {\n\t\t\t\t\tconst someId1 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 8);\n\t\t\t\t\tconst someId2 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 10);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(someId1 === 0x1C && someId2 === 0xFE)\n\t\t\t\t\t\t|| (someId1 === 0x1F && someId2 === 0x0B)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'nef',\n\t\t\t\t\t\t\tmime: 'image/x-nikon-nef',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.tokenizer.ignore(ifdOffset);\n\t\t\tconst fileType = await this.readTiffIFD(bigEndian);\n\t\t\treturn fileType ?? {\n\t\t\t\text: 'tif',\n\t\t\t\tmime: 'image/tiff',\n\t\t\t};\n\t\t}\n\n\t\tif (version === 43) {\t// Big TIFF file header\n\t\t\treturn {\n\t\t\t\text: 'tif',\n\t\t\t\tmime: 'image/tiff',\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\tScan check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE).\n\n\t@param offset - Offset to scan for sync-preamble.\n\t@returns {{ext: string, mime: string}}\n\t*/\n\tscanMpeg(offset) {\n\t\tif (this.check([0xFF, 0xE0], {offset, mask: [0xFF, 0xE0]})) {\n\t\t\tif (this.check([0x10], {offset: offset + 1, mask: [0x16]})) {\n\t\t\t\t// Check for (ADTS) MPEG-2\n\t\t\t\tif (this.check([0x08], {offset: offset + 1, mask: [0x08]})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'aac',\n\t\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Must be (ADTS) MPEG-4\n\t\t\t\treturn {\n\t\t\t\t\text: 'aac',\n\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG 1 or 2 Layer 3 header\n\t\t\t// Check for MPEG layer 3\n\t\t\tif (this.check([0x02], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 2\n\t\t\tif (this.check([0x04], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp2',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 1\n\t\t\tif (this.check([0x06], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp1',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const supportedExtensions = new Set(extensions);\nexport const supportedMimeTypes = new Set(mimeTypes);\n","export { ZipHandler } from './ZipHandler.js';\nexport { GzipHandler } from './GzipHandler.js';\n","import { StringType, UINT32_LE } from 'token-types';\nimport initDebug from 'debug';\nimport { DataDescriptor, EndOfCentralDirectoryRecordToken, FileHeader, LocalFileHeaderToken, Signature } from \"./ZipToken.js\";\nfunction signatureToArray(signature) {\n const signatureBytes = new Uint8Array(UINT32_LE.len);\n UINT32_LE.put(signatureBytes, 0, signature);\n return signatureBytes;\n}\nconst debug = initDebug('tokenizer:inflate');\nconst syncBufferSize = 256 * 1024;\nconst ddSignatureArray = signatureToArray(Signature.DataDescriptor);\nconst eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory);\nexport class ZipHandler {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n this.syncBuffer = new Uint8Array(syncBufferSize);\n }\n async isZip() {\n return await this.peekSignature() === Signature.LocalFileHeader;\n }\n peekSignature() {\n return this.tokenizer.peekToken(UINT32_LE);\n }\n async findEndOfCentralDirectoryLocator() {\n const randomReadTokenizer = this.tokenizer;\n const chunkLength = Math.min(16 * 1024, randomReadTokenizer.fileInfo.size);\n const buffer = this.syncBuffer.subarray(0, chunkLength);\n await this.tokenizer.readBuffer(buffer, { position: randomReadTokenizer.fileInfo.size - chunkLength });\n // Search the buffer from end to beginning for EOCD signature\n // const signature = 0x06054b50;\n for (let i = buffer.length - 4; i >= 0; i--) {\n // Compare 4 bytes directly without calling readUInt32LE\n if (buffer[i] === eocdSignatureBytes[0] &&\n buffer[i + 1] === eocdSignatureBytes[1] &&\n buffer[i + 2] === eocdSignatureBytes[2] &&\n buffer[i + 3] === eocdSignatureBytes[3]) {\n return randomReadTokenizer.fileInfo.size - chunkLength + i;\n }\n }\n return -1;\n }\n async readCentralDirectory() {\n if (!this.tokenizer.supportsRandomAccess()) {\n debug('Cannot reading central-directory without random-read support');\n return;\n }\n debug('Reading central-directory...');\n const pos = this.tokenizer.position;\n const offset = await this.findEndOfCentralDirectoryLocator();\n if (offset > 0) {\n debug('Central-directory 32-bit signature found');\n const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset);\n const files = [];\n this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd);\n for (let n = 0; n < eocdHeader.nrOfEntriesOfSize; ++n) {\n const entry = await this.tokenizer.readToken(FileHeader);\n if (entry.signature !== Signature.CentralFileHeader) {\n throw new Error('Expected Central-File-Header signature');\n }\n entry.filename = await this.tokenizer.readToken(new StringType(entry.filenameLength, 'utf-8'));\n await this.tokenizer.ignore(entry.extraFieldLength);\n await this.tokenizer.ignore(entry.fileCommentLength);\n files.push(entry);\n debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`);\n }\n this.tokenizer.setPosition(pos);\n return files;\n }\n this.tokenizer.setPosition(pos);\n }\n async unzip(fileCb) {\n const entries = await this.readCentralDirectory();\n if (entries) {\n // Use Central Directory to iterate over files\n return this.iterateOverCentralDirectory(entries, fileCb);\n }\n // Scan Zip files for local-file-header\n let stop = false;\n do {\n const zipHeader = await this.readLocalFileHeader();\n if (!zipHeader)\n break;\n const next = fileCb(zipHeader);\n stop = !!next.stop;\n let fileData;\n await this.tokenizer.ignore(zipHeader.extraFieldLength);\n if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) {\n const chunks = [];\n let len = syncBufferSize;\n debug('Compressed-file-size unknown, scanning for next data-descriptor-signature....');\n let nextHeaderIndex = -1;\n while (nextHeaderIndex < 0 && len === syncBufferSize) {\n len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true });\n nextHeaderIndex = indexOf(this.syncBuffer.subarray(0, len), ddSignatureArray);\n const size = nextHeaderIndex >= 0 ? nextHeaderIndex : len;\n if (next.handler) {\n const data = new Uint8Array(size);\n await this.tokenizer.readBuffer(data);\n chunks.push(data);\n }\n else {\n // Move position to the next header if found, skip the whole buffer otherwise\n await this.tokenizer.ignore(size);\n }\n }\n debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`);\n if (next.handler) {\n await this.inflate(zipHeader, mergeArrays(chunks), next.handler);\n }\n }\n else {\n if (next.handler) {\n debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`);\n fileData = new Uint8Array(zipHeader.compressedSize);\n await this.tokenizer.readBuffer(fileData);\n await this.inflate(zipHeader, fileData, next.handler);\n }\n else {\n debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`);\n await this.tokenizer.ignore(zipHeader.compressedSize);\n }\n }\n debug(`Reading data-descriptor at pos=${this.tokenizer.position}`);\n if (zipHeader.dataDescriptor) {\n // await this.tokenizer.ignore(DataDescriptor.len);\n const dataDescriptor = await this.tokenizer.readToken(DataDescriptor);\n if (dataDescriptor.signature !== 0x08074b50) {\n throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - DataDescriptor.len}`);\n }\n }\n } while (!stop);\n }\n async iterateOverCentralDirectory(entries, fileCb) {\n for (const fileHeader of entries) {\n const next = fileCb(fileHeader);\n if (next.handler) {\n this.tokenizer.setPosition(fileHeader.relativeOffsetOfLocalHeader);\n const zipHeader = await this.readLocalFileHeader();\n if (zipHeader) {\n await this.tokenizer.ignore(zipHeader.extraFieldLength);\n const fileData = new Uint8Array(fileHeader.compressedSize);\n await this.tokenizer.readBuffer(fileData);\n await this.inflate(zipHeader, fileData, next.handler);\n }\n }\n if (next.stop)\n break;\n }\n }\n async inflate(zipHeader, fileData, cb) {\n if (zipHeader.compressedMethod === 0) {\n // Stored (uncompressed)\n return cb(fileData);\n }\n if (zipHeader.compressedMethod !== 8) {\n throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`);\n }\n debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`);\n const uncompressedData = await ZipHandler.decompressDeflateRaw(fileData);\n return cb(uncompressedData);\n }\n static async decompressDeflateRaw(data) {\n // Wrap Uint8Array in a ReadableStream without copying\n const input = new ReadableStream({\n start(controller) {\n controller.enqueue(data);\n controller.close();\n }\n });\n const ds = new DecompressionStream(\"deflate-raw\");\n const output = input.pipeThrough(ds);\n try {\n // Collect decompressed bytes from the output stream\n const response = new Response(output);\n const buffer = await response.arrayBuffer();\n return new Uint8Array(buffer);\n }\n catch (err) {\n // Provide ZIP-specific error context\n const message = err instanceof Error\n ? `Failed to deflate ZIP entry: ${err.message}`\n : \"Unknown decompression error in ZIP entry\";\n throw new TypeError(message);\n }\n }\n async readLocalFileHeader() {\n const signature = await this.tokenizer.peekToken(UINT32_LE);\n if (signature === Signature.LocalFileHeader) {\n const header = await this.tokenizer.readToken(LocalFileHeaderToken);\n header.filename = await this.tokenizer.readToken(new StringType(header.filenameLength, 'utf-8'));\n return header;\n }\n if (signature === Signature.CentralFileHeader) {\n return false;\n }\n if (signature === 0xE011CFD0) {\n throw new Error('Encrypted ZIP');\n }\n throw new Error('Unexpected signature');\n }\n}\nfunction indexOf(buffer, portion) {\n const bufferLength = buffer.length;\n const portionLength = portion.length;\n // Return -1 if the portion is longer than the buffer\n if (portionLength > bufferLength)\n return -1;\n // Search for the portion in the buffer\n for (let i = 0; i <= bufferLength - portionLength; i++) {\n let found = true;\n for (let j = 0; j < portionLength; j++) {\n if (buffer[i + j] !== portion[j]) {\n found = false;\n break;\n }\n }\n if (found) {\n return i; // Return the starting offset\n }\n }\n return -1; // Not found\n}\nfunction mergeArrays(chunks) {\n // Concatenate chunks into a single Uint8Array\n const totalLength = chunks.reduce((acc, curr) => acc + curr.length, 0);\n const mergedArray = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n mergedArray.set(chunk, offset);\n offset += chunk.length;\n }\n return mergedArray;\n}\n","/**\n * Ref https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT\n */\nimport { UINT16_LE, UINT32_LE } from \"token-types\";\nexport const Signature = {\n LocalFileHeader: 0x04034b50,\n DataDescriptor: 0x08074b50,\n CentralFileHeader: 0x02014b50,\n EndOfCentralDirectory: 0x06054b50\n};\nexport const DataDescriptor = {\n get(array) {\n return {\n signature: UINT32_LE.get(array, 0),\n compressedSize: UINT32_LE.get(array, 8),\n uncompressedSize: UINT32_LE.get(array, 12),\n };\n }, len: 16\n};\n/**\n * First part of the ZIP Local File Header\n * Offset | Bytes| Description\n * -------|------+-------------------------------------------------------------------\n * 0 | 4 | Signature (0x04034b50)\n * 4 | 2 | Minimum version needed to extract\n * 6 | 2 | Bit flag\n * 8 | 2 | Compression method\n * 10 | 2 | File last modification time (MS-DOS format)\n * 12 | 2 | File last modification date (MS-DOS format)\n * 14 | 4 | CRC-32 of uncompressed data\n * 18 | 4 | Compressed size\n * 22 | 4 | Uncompressed size\n * 26 | 2 | File name length (n)\n * 28 | 2 | Extra field length (m)\n * 30 | n | File name\n * 30 + n | m | Extra field\n */\nexport const LocalFileHeaderToken = {\n get(array) {\n const flags = UINT16_LE.get(array, 6);\n return {\n signature: UINT32_LE.get(array, 0),\n minVersion: UINT16_LE.get(array, 4),\n dataDescriptor: !!(flags & 0x0008),\n compressedMethod: UINT16_LE.get(array, 8),\n compressedSize: UINT32_LE.get(array, 18),\n uncompressedSize: UINT32_LE.get(array, 22),\n filenameLength: UINT16_LE.get(array, 26),\n extraFieldLength: UINT16_LE.get(array, 28),\n filename: null\n };\n }, len: 30\n};\n/**\n * 4.3.16 End of central directory record:\n * end of central dir signature (0x06064b50) 4 bytes\n * number of this disk 2 bytes\n * number of the disk with the start of the central directory 2 bytes\n * total number of entries in the central directory on this disk 2 bytes\n * total number of entries in the size of the central directory 2 bytes\n * sizeOfTheCentralDirectory 4 bytes\n * offset of start of central directory with respect to the starting disk number 4 bytes\n * .ZIP file comment length 2 bytes\n * .ZIP file comment (variable size)\n */\nexport const EndOfCentralDirectoryRecordToken = {\n get(array) {\n return {\n signature: UINT32_LE.get(array, 0),\n nrOfThisDisk: UINT16_LE.get(array, 4),\n nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6),\n nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8),\n nrOfEntriesOfSize: UINT16_LE.get(array, 10),\n sizeOfCd: UINT32_LE.get(array, 12),\n offsetOfStartOfCd: UINT32_LE.get(array, 16),\n zipFileCommentLength: UINT16_LE.get(array, 20),\n };\n }, len: 22\n};\n/**\n * File header:\n * central file header signature 4 bytes 0 (0x02014b50)\n * version made by 2 bytes 4\n * version needed to extract 2 bytes 6\n * general purpose bit flag 2 bytes 8\n * compression method 2 bytes 10\n * last mod file time 2 bytes 12\n * last mod file date 2 bytes 14\n * crc-32 4 bytes 16\n * compressed size 4 bytes 20\n * uncompressed size 4 bytes 24\n * file name length 2 bytes 28\n * extra field length 2 bytes 30\n * file comment length 2 bytes 32\n * disk number start 2 bytes 34\n * internal file attributes 2 bytes 36\n * external file attributes 4 bytes 38\n * relative offset of local header 4 bytes 42\n */\nexport const FileHeader = {\n get(array) {\n const flags = UINT16_LE.get(array, 8);\n return {\n signature: UINT32_LE.get(array, 0),\n minVersion: UINT16_LE.get(array, 6),\n dataDescriptor: !!(flags & 0x0008),\n compressedMethod: UINT16_LE.get(array, 10),\n compressedSize: UINT32_LE.get(array, 20),\n uncompressedSize: UINT32_LE.get(array, 24),\n filenameLength: UINT16_LE.get(array, 28),\n extraFieldLength: UINT16_LE.get(array, 30),\n fileCommentLength: UINT16_LE.get(array, 32),\n relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42),\n filename: null\n };\n }, len: 46\n};\n","export class GzipHandler {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n }\n inflate() {\n const tokenizer = this.tokenizer;\n return new ReadableStream({\n async pull(controller) {\n const buffer = new Uint8Array(1024);\n const size = await tokenizer.readBuffer(buffer, { mayBeLess: true });\n if (size === 0) {\n controller.close();\n return;\n }\n controller.enqueue(buffer.subarray(0, size));\n }\n }).pipeThrough(new DecompressionStream(\"gzip\"));\n }\n}\n","import {StringType} from 'token-types';\n\nexport function stringToBytes(string, encoding) {\n\tif (encoding === 'utf-16le') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push(code & 0xFF, (code >> 8) & 0xFF); // High byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\tif (encoding === 'utf-16be') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push((code >> 8) & 0xFF, code & 0xFF); // Low byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\treturn [...string].map(character => character.charCodeAt(0)); // eslint-disable-line unicorn/prefer-code-point\n}\n\n/**\nChecks whether the TAR checksum is valid.\n\n@param {Uint8Array} arrayBuffer - The TAR header `[offset ... offset + 512]`.\n@param {number} offset - TAR header offset.\n@returns {boolean} `true` if the TAR checksum is valid, otherwise `false`.\n*/\nexport function tarHeaderChecksumMatches(arrayBuffer, offset = 0) {\n\tconst readSum = Number.parseInt(new StringType(6).get(arrayBuffer, 148).replace(/\\0.*$/, '').trim(), 8); // Read sum in header\n\tif (Number.isNaN(readSum)) {\n\t\treturn false;\n\t}\n\n\tlet sum = 8 * 0x20; // Initialize signed bit sum\n\n\tfor (let index = offset; index < offset + 148; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\tfor (let index = offset + 156; index < offset + 512; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\treturn readSum === sum;\n}\n\n/**\nID3 UINT32 sync-safe tokenizer token.\n28 bits (representing up to 256MB) integer, the msb is 0 to avoid \"false syncsignals\".\n*/\nexport const uint32SyncSafeToken = {\n\tget: (buffer, offset) => (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2]) << 7) | ((buffer[offset + 1]) << 14) | ((buffer[offset]) << 21),\n\tlen: 4,\n};\n","export const extensions = [\n\t'jpg',\n\t'png',\n\t'apng',\n\t'gif',\n\t'webp',\n\t'flif',\n\t'xcf',\n\t'cr2',\n\t'cr3',\n\t'orf',\n\t'arw',\n\t'dng',\n\t'nef',\n\t'rw2',\n\t'raf',\n\t'tif',\n\t'bmp',\n\t'icns',\n\t'jxr',\n\t'psd',\n\t'indd',\n\t'zip',\n\t'tar',\n\t'rar',\n\t'gz',\n\t'bz2',\n\t'7z',\n\t'dmg',\n\t'mp4',\n\t'mid',\n\t'mkv',\n\t'webm',\n\t'mov',\n\t'avi',\n\t'mpg',\n\t'mp2',\n\t'mp3',\n\t'm4a',\n\t'oga',\n\t'ogg',\n\t'ogv',\n\t'opus',\n\t'flac',\n\t'wav',\n\t'spx',\n\t'amr',\n\t'pdf',\n\t'epub',\n\t'elf',\n\t'macho',\n\t'exe',\n\t'swf',\n\t'rtf',\n\t'wasm',\n\t'woff',\n\t'woff2',\n\t'eot',\n\t'ttf',\n\t'otf',\n\t'ttc',\n\t'ico',\n\t'flv',\n\t'ps',\n\t'xz',\n\t'sqlite',\n\t'nes',\n\t'crx',\n\t'xpi',\n\t'cab',\n\t'deb',\n\t'ar',\n\t'rpm',\n\t'Z',\n\t'lz',\n\t'cfb',\n\t'mxf',\n\t'mts',\n\t'blend',\n\t'bpg',\n\t'docx',\n\t'pptx',\n\t'xlsx',\n\t'3gp',\n\t'3g2',\n\t'j2c',\n\t'jp2',\n\t'jpm',\n\t'jpx',\n\t'mj2',\n\t'aif',\n\t'qcp',\n\t'odt',\n\t'ods',\n\t'odp',\n\t'xml',\n\t'mobi',\n\t'heic',\n\t'cur',\n\t'ktx',\n\t'ape',\n\t'wv',\n\t'dcm',\n\t'ics',\n\t'glb',\n\t'pcap',\n\t'dsf',\n\t'lnk',\n\t'alias',\n\t'voc',\n\t'ac3',\n\t'm4v',\n\t'm4p',\n\t'm4b',\n\t'f4v',\n\t'f4p',\n\t'f4b',\n\t'f4a',\n\t'mie',\n\t'asf',\n\t'ogm',\n\t'ogx',\n\t'mpc',\n\t'arrow',\n\t'shp',\n\t'aac',\n\t'mp1',\n\t'it',\n\t's3m',\n\t'xm',\n\t'skp',\n\t'avif',\n\t'eps',\n\t'lzh',\n\t'pgp',\n\t'asar',\n\t'stl',\n\t'chm',\n\t'3mf',\n\t'zst',\n\t'jxl',\n\t'vcf',\n\t'jls',\n\t'pst',\n\t'dwg',\n\t'parquet',\n\t'class',\n\t'arj',\n\t'cpio',\n\t'ace',\n\t'avro',\n\t'icc',\n\t'fbx',\n\t'vsdx',\n\t'vtt',\n\t'apk',\n\t'drc',\n\t'lz4',\n\t'potx',\n\t'xltx',\n\t'dotx',\n\t'xltm',\n\t'ott',\n\t'ots',\n\t'otp',\n\t'odg',\n\t'otg',\n\t'xlsm',\n\t'docm',\n\t'dotm',\n\t'potm',\n\t'pptm',\n\t'jar',\n\t'jmp',\n\t'rm',\n\t'sav',\n\t'ppsm',\n\t'ppsx',\n\t'tar.gz',\n\t'reg',\n\t'dat',\n];\n\nexport const mimeTypes = [\n\t'image/jpeg',\n\t'image/png',\n\t'image/gif',\n\t'image/webp',\n\t'image/flif',\n\t'image/x-xcf',\n\t'image/x-canon-cr2',\n\t'image/x-canon-cr3',\n\t'image/tiff',\n\t'image/bmp',\n\t'image/vnd.ms-photo',\n\t'image/vnd.adobe.photoshop',\n\t'application/x-indesign',\n\t'application/epub+zip',\n\t'application/x-xpinstall',\n\t'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text',\n\t'application/vnd.oasis.opendocument.spreadsheet',\n\t'application/vnd.oasis.opendocument.presentation',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n\t'application/zip',\n\t'application/x-tar',\n\t'application/x-rar-compressed',\n\t'application/gzip',\n\t'application/x-bzip2',\n\t'application/x-7z-compressed',\n\t'application/x-apple-diskimage',\n\t'application/vnd.apache.arrow.file',\n\t'video/mp4',\n\t'audio/midi',\n\t'video/matroska',\n\t'video/webm',\n\t'video/quicktime',\n\t'video/vnd.avi',\n\t'audio/wav',\n\t'audio/qcelp',\n\t'audio/x-ms-asf',\n\t'video/x-ms-asf',\n\t'application/vnd.ms-asf',\n\t'video/mpeg',\n\t'video/3gpp',\n\t'audio/mpeg',\n\t'audio/mp4', // RFC 4337\n\t'video/ogg',\n\t'audio/ogg',\n\t'audio/ogg; codecs=opus',\n\t'application/ogg',\n\t'audio/flac',\n\t'audio/ape',\n\t'audio/wavpack',\n\t'audio/amr',\n\t'application/pdf',\n\t'application/x-elf',\n\t'application/x-mach-binary',\n\t'application/x-msdownload',\n\t'application/x-shockwave-flash',\n\t'application/rtf',\n\t'application/wasm',\n\t'font/woff',\n\t'font/woff2',\n\t'application/vnd.ms-fontobject',\n\t'font/ttf',\n\t'font/otf',\n\t'font/collection',\n\t'image/x-icon',\n\t'video/x-flv',\n\t'application/postscript',\n\t'application/eps',\n\t'application/x-xz',\n\t'application/x-sqlite3',\n\t'application/x-nintendo-nes-rom',\n\t'application/x-google-chrome-extension',\n\t'application/vnd.ms-cab-compressed',\n\t'application/x-deb',\n\t'application/x-unix-archive',\n\t'application/x-rpm',\n\t'application/x-compress',\n\t'application/x-lzip',\n\t'application/x-cfb',\n\t'application/x-mie',\n\t'application/mxf',\n\t'video/mp2t',\n\t'application/x-blender',\n\t'image/bpg',\n\t'image/j2c',\n\t'image/jp2',\n\t'image/jpx',\n\t'image/jpm',\n\t'image/mj2',\n\t'audio/aiff',\n\t'application/xml',\n\t'application/x-mobipocket-ebook',\n\t'image/heif',\n\t'image/heif-sequence',\n\t'image/heic',\n\t'image/heic-sequence',\n\t'image/icns',\n\t'image/ktx',\n\t'application/dicom',\n\t'audio/x-musepack',\n\t'text/calendar',\n\t'text/vcard',\n\t'text/vtt',\n\t'model/gltf-binary',\n\t'application/vnd.tcpdump.pcap',\n\t'audio/x-dsf', // Non-standard\n\t'application/x.ms.shortcut', // Invented by us\n\t'application/x.apple.alias', // Invented by us\n\t'audio/x-voc',\n\t'audio/vnd.dolby.dd-raw',\n\t'audio/x-m4a',\n\t'image/apng',\n\t'image/x-olympus-orf',\n\t'image/x-sony-arw',\n\t'image/x-adobe-dng',\n\t'image/x-nikon-nef',\n\t'image/x-panasonic-rw2',\n\t'image/x-fujifilm-raf',\n\t'video/x-m4v',\n\t'video/3gpp2',\n\t'application/x-esri-shape',\n\t'audio/aac',\n\t'audio/x-it',\n\t'audio/x-s3m',\n\t'audio/x-xm',\n\t'video/MP1S',\n\t'video/MP2P',\n\t'application/vnd.sketchup.skp',\n\t'image/avif',\n\t'application/x-lzh-compressed',\n\t'application/pgp-encrypted',\n\t'application/x-asar',\n\t'model/stl',\n\t'application/vnd.ms-htmlhelp',\n\t'model/3mf',\n\t'image/jxl',\n\t'application/zstd',\n\t'image/jls',\n\t'application/vnd.ms-outlook',\n\t'image/vnd.dwg',\n\t'application/vnd.apache.parquet',\n\t'application/java-vm',\n\t'application/x-arj',\n\t'application/x-cpio',\n\t'application/x-ace-compressed',\n\t'application/avro',\n\t'application/vnd.iccprofile',\n\t'application/x.autodesk.fbx', // Invented by us\n\t'application/vnd.visio',\n\t'application/vnd.android.package-archive',\n\t'application/vnd.google.draco', // Invented by us\n\t'application/x-lz4', // Invented by us\n\t'application/vnd.openxmlformats-officedocument.presentationml.template',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n\t'application/vnd.ms-excel.template.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text-template',\n\t'application/vnd.oasis.opendocument.spreadsheet-template',\n\t'application/vnd.oasis.opendocument.presentation-template',\n\t'application/vnd.oasis.opendocument.graphics',\n\t'application/vnd.oasis.opendocument.graphics-template',\n\t'application/vnd.ms-excel.sheet.macroenabled.12',\n\t'application/vnd.ms-word.document.macroenabled.12',\n\t'application/vnd.ms-word.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t'application/java-archive',\n\t'application/vnd.rn-realmedia',\n\t'application/x-spss-sav',\n\t'application/x-ms-regedit',\n\t'application/x-ft-windows-registry-hive',\n\t'application/x-jmp-data',\n];\n","import { TrackTypeValueToKeyMap, } from '../type.js';\nimport initDebug from 'debug';\nimport { isSingleton, isUnique } from './GenericTagTypes.js';\nimport { CombinedTagMapper } from './CombinedTagMapper.js';\nimport { CommonTagMapper } from './GenericTagMapper.js';\nimport { toRatio } from './Util.js';\nimport { fileTypeFromBuffer } from 'file-type';\nimport { parseLyrics } from '../lrc/LyricsParser.js';\nconst debug = initDebug('music-metadata:collector');\nconst TagPriority = ['matroska', 'APEv2', 'vorbis', 'ID3v2.4', 'ID3v2.3', 'ID3v2.2', 'exif', 'asf', 'iTunes', 'AIFF', 'ID3v1'];\n/**\n * Provided to the parser to uodate the metadata result.\n * Responsible for triggering async updates\n */\nexport class MetadataCollector {\n constructor(opts) {\n this.format = {\n tagTypes: [],\n trackInfo: []\n };\n this.native = {};\n this.common = {\n track: { no: null, of: null },\n disk: { no: null, of: null },\n movementIndex: { no: null, of: null }\n };\n this.quality = {\n warnings: []\n };\n /**\n * Keeps track of origin priority for each mapped id\n */\n this.commonOrigin = {};\n /**\n * Maps a tag type to a priority\n */\n this.originPriority = {};\n this.tagMapper = new CombinedTagMapper();\n this.opts = opts;\n let priority = 1;\n for (const tagType of TagPriority) {\n this.originPriority[tagType] = priority++;\n }\n this.originPriority.artificial = 500; // Filled using alternative tags\n this.originPriority.id3v1 = 600; // Consider as the worst because of the field length limit\n }\n /**\n * @returns {boolean} true if one or more tags have been found\n */\n hasAny() {\n return Object.keys(this.native).length > 0;\n }\n addStreamInfo(streamInfo) {\n debug(`streamInfo: type=${streamInfo.type ? TrackTypeValueToKeyMap[streamInfo.type] : '?'}, codec=${streamInfo.codecName}`);\n this.format.trackInfo.push(streamInfo);\n }\n setFormat(key, value) {\n debug(`format: ${key} = ${value}`);\n this.format[key] = value; // as any to override readonly\n if (this.opts?.observer) {\n this.opts.observer({ metadata: this, tag: { type: 'format', id: key, value } });\n }\n }\n setAudioOnly() {\n this.setFormat('hasAudio', true);\n this.setFormat('hasVideo', false);\n }\n async addTag(tagType, tagId, value) {\n debug(`tag ${tagType}.${tagId} = ${value}`);\n if (!this.native[tagType]) {\n this.format.tagTypes.push(tagType);\n this.native[tagType] = [];\n }\n this.native[tagType].push({ id: tagId, value });\n await this.toCommon(tagType, tagId, value);\n }\n addWarning(warning) {\n this.quality.warnings.push({ message: warning });\n }\n async postMap(tagType, tag) {\n // Common tag (alias) found\n // check if we need to do something special with common tag\n // if the event has been aliased then we need to clean it before\n // it is emitted to the user. e.g. genre (20) -> Electronic\n switch (tag.id) {\n case 'artist':\n return this.handleSingularArtistTag(tagType, tag, 'artist', 'artists');\n case 'albumartist':\n return this.handleSingularArtistTag(tagType, tag, 'albumartist', 'albumartists');\n case 'artists':\n return this.handlePluralArtistTag(tagType, tag, 'artist', 'artists');\n case 'albumartists':\n return this.handlePluralArtistTag(tagType, tag, 'albumartist', 'albumartists');\n case 'picture':\n return this.postFixPicture(tag.value).then(picture => {\n if (picture !== null) {\n tag.value = picture;\n this.setGenericTag(tagType, tag);\n }\n });\n case 'totaltracks':\n this.common.track.of = CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'totaldiscs':\n this.common.disk.of = CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'movementTotal':\n this.common.movementIndex.of = CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'track':\n case 'disk':\n case 'movementIndex': {\n const of = this.common[tag.id].of; // store of value, maybe maybe overwritten\n this.common[tag.id] = CommonTagMapper.normalizeTrack(tag.value);\n this.common[tag.id].of = of != null ? of : this.common[tag.id].of;\n return;\n }\n case 'bpm':\n case 'year':\n case 'originalyear':\n tag.value = Number.parseInt(tag.value, 10);\n break;\n case 'date': {\n // ToDo: be more strict on 'YYYY...'\n const year = Number.parseInt(tag.value.substr(0, 4), 10);\n if (!Number.isNaN(year)) {\n this.common.year = year;\n }\n break;\n }\n case 'discogs_label_id':\n case 'discogs_release_id':\n case 'discogs_master_release_id':\n case 'discogs_artist_id':\n case 'discogs_votes':\n tag.value = typeof tag.value === 'string' ? Number.parseInt(tag.value, 10) : tag.value;\n break;\n case 'replaygain_track_gain':\n case 'replaygain_track_peak':\n case 'replaygain_album_gain':\n case 'replaygain_album_peak':\n tag.value = toRatio(tag.value);\n break;\n case 'replaygain_track_minmax':\n tag.value = tag.value.split(',').map(v => Number.parseInt(v, 10));\n break;\n case 'replaygain_undo': {\n const minMix = tag.value.split(',').map(v => Number.parseInt(v, 10));\n tag.value = {\n leftChannel: minMix[0],\n rightChannel: minMix[1]\n };\n break;\n }\n case 'gapless': // iTunes gap-less flag\n case 'compilation':\n case 'podcast':\n case 'showMovement':\n tag.value = tag.value === '1' || tag.value === 1; // boolean\n break;\n case 'isrc': { // Only keep unique values\n const commonTag = this.common[tag.id];\n if (commonTag && commonTag.indexOf(tag.value) !== -1)\n return;\n break;\n }\n case 'comment':\n if (typeof tag.value === 'string') {\n tag.value = { text: tag.value };\n }\n if (tag.value.descriptor === 'iTunPGAP') {\n this.setGenericTag(tagType, { id: 'gapless', value: tag.value.text === '1' });\n }\n break;\n case 'lyrics':\n if (typeof tag.value === 'string') {\n tag.value = parseLyrics(tag.value);\n }\n break;\n default:\n // nothing to do\n }\n if (tag.value !== null) {\n this.setGenericTag(tagType, tag);\n }\n }\n /**\n * Convert native tags to common tags\n * @returns {IAudioMetadata} Native + common tags\n */\n toCommonMetadata() {\n return {\n format: this.format,\n native: this.native,\n quality: this.quality,\n common: this.common\n };\n }\n /**\n * Handle singular artist tags (artist, albumartist) and cross-populate to plural form\n */\n handleSingularArtistTag(tagType, tag, singularId, pluralId) {\n if (this.commonOrigin[singularId] === this.originPriority[tagType]) {\n // Assume the singular field is used as plural (multiple values from same source)\n return this.postMap('artificial', { id: pluralId, value: tag.value });\n }\n if (!this.common[pluralId]) {\n // Fill plural using singular source\n this.setGenericTag('artificial', { id: pluralId, value: tag.value });\n }\n this.setGenericTag(tagType, tag);\n }\n /**\n * Handle plural artist tags (artists, albumartists) and cross-populate to singular form\n */\n handlePluralArtistTag(tagType, tag, singularId, pluralId) {\n if (!this.common[singularId] || this.commonOrigin[singularId] === this.originPriority.artificial) {\n if (!this.common[pluralId] || this.common[pluralId].indexOf(tag.value) === -1) {\n // Fill singular using plural source\n const values = (this.common[pluralId] || []).concat([tag.value]);\n const value = joinArtists(values);\n this.setGenericTag('artificial', { id: singularId, value });\n }\n }\n this.setGenericTag(tagType, tag);\n }\n /**\n * Fix some common issues with picture object\n * @param picture Picture\n */\n async postFixPicture(picture) {\n if (picture.data && picture.data.length > 0) {\n if (!picture.format) {\n const fileType = await fileTypeFromBuffer(Uint8Array.from(picture.data)); // ToDO: remove Buffer\n if (fileType) {\n picture.format = fileType.mime;\n }\n else {\n return null;\n }\n }\n picture.format = picture.format.toLocaleLowerCase();\n switch (picture.format) {\n case 'image/jpg':\n picture.format = 'image/jpeg'; // ToDo: register warning\n }\n return picture;\n }\n this.addWarning(\"Empty picture tag found\");\n return null;\n }\n /**\n * Convert native tag to common tags\n */\n async toCommon(tagType, tagId, value) {\n const tag = { id: tagId, value };\n const genericTag = this.tagMapper.mapTag(tagType, tag, this);\n if (genericTag) {\n await this.postMap(tagType, genericTag);\n }\n }\n /**\n * Set generic tag\n */\n setGenericTag(tagType, tag) {\n debug(`common.${tag.id} = ${tag.value}`);\n const prio0 = this.commonOrigin[tag.id] || 1000;\n const prio1 = this.originPriority[tagType];\n if (isSingleton(tag.id)) {\n if (prio1 <= prio0) {\n this.common[tag.id] = tag.value;\n this.commonOrigin[tag.id] = prio1;\n }\n else {\n return debug(`Ignore native tag (singleton): ${tagType}.${tag.id} = ${tag.value}`);\n }\n }\n else {\n if (prio1 === prio0) {\n if (!isUnique(tag.id) || this.common[tag.id].indexOf(tag.value) === -1) {\n this.common[tag.id].push(tag.value);\n }\n else {\n debug(`Ignore duplicate value: ${tagType}.${tag.id} = ${tag.value}`);\n }\n // no effect? this.commonOrigin[tag.id] = prio1;\n }\n else if (prio1 < prio0) {\n this.common[tag.id] = [tag.value];\n this.commonOrigin[tag.id] = prio1;\n }\n else {\n return debug(`Ignore native tag (list): ${tagType}.${tag.id} = ${tag.value}`);\n }\n }\n if (this.opts?.observer) {\n this.opts.observer({ metadata: this, tag: { type: 'common', id: tag.id, value: tag.value } });\n }\n // ToDo: trigger metadata event\n }\n}\nexport function joinArtists(artists) {\n if (artists.length > 2) {\n return `${artists.slice(0, artists.length - 1).join(', ')} & ${artists[artists.length - 1]}`;\n }\n return artists.join(' & ');\n}\n","const defaultTagInfo = {\n multiple: false,\n};\nconst commonTags = {\n year: defaultTagInfo,\n track: defaultTagInfo,\n disk: defaultTagInfo,\n title: defaultTagInfo,\n artist: defaultTagInfo,\n artists: { multiple: true, unique: true },\n albumartist: defaultTagInfo,\n albumartists: { multiple: true, unique: true },\n album: defaultTagInfo,\n date: defaultTagInfo,\n originaldate: defaultTagInfo,\n originalyear: defaultTagInfo,\n releasedate: defaultTagInfo,\n comment: { multiple: true, unique: false },\n genre: { multiple: true, unique: true },\n picture: { multiple: true, unique: true },\n composer: { multiple: true, unique: true },\n lyrics: { multiple: true, unique: false },\n albumsort: { multiple: false, unique: true },\n titlesort: { multiple: false, unique: true },\n work: { multiple: false, unique: true },\n artistsort: { multiple: false, unique: true },\n albumartistsort: { multiple: false, unique: true },\n composersort: { multiple: false, unique: true },\n lyricist: { multiple: true, unique: true },\n writer: { multiple: true, unique: true },\n conductor: { multiple: true, unique: true },\n remixer: { multiple: true, unique: true },\n arranger: { multiple: true, unique: true },\n engineer: { multiple: true, unique: true },\n producer: { multiple: true, unique: true },\n technician: { multiple: true, unique: true },\n djmixer: { multiple: true, unique: true },\n mixer: { multiple: true, unique: true },\n label: { multiple: true, unique: true },\n grouping: defaultTagInfo,\n subtitle: { multiple: true },\n discsubtitle: defaultTagInfo,\n totaltracks: defaultTagInfo,\n totaldiscs: defaultTagInfo,\n compilation: defaultTagInfo,\n rating: { multiple: true },\n bpm: defaultTagInfo,\n mood: defaultTagInfo,\n media: defaultTagInfo,\n catalognumber: { multiple: true, unique: true },\n tvShow: defaultTagInfo,\n tvShowSort: defaultTagInfo,\n tvSeason: defaultTagInfo,\n tvEpisode: defaultTagInfo,\n tvEpisodeId: defaultTagInfo,\n tvNetwork: defaultTagInfo,\n podcast: defaultTagInfo,\n podcasturl: defaultTagInfo,\n releasestatus: defaultTagInfo,\n releasetype: { multiple: true },\n releasecountry: defaultTagInfo,\n script: defaultTagInfo,\n language: defaultTagInfo,\n copyright: defaultTagInfo,\n license: defaultTagInfo,\n encodedby: defaultTagInfo,\n encodersettings: defaultTagInfo,\n gapless: defaultTagInfo,\n barcode: defaultTagInfo,\n isrc: { multiple: true },\n asin: defaultTagInfo,\n musicbrainz_recordingid: defaultTagInfo,\n musicbrainz_trackid: defaultTagInfo,\n musicbrainz_albumid: defaultTagInfo,\n musicbrainz_artistid: { multiple: true },\n musicbrainz_albumartistid: { multiple: true },\n musicbrainz_releasegroupid: defaultTagInfo,\n musicbrainz_workid: defaultTagInfo,\n musicbrainz_trmid: defaultTagInfo,\n musicbrainz_discid: defaultTagInfo,\n acoustid_id: defaultTagInfo,\n acoustid_fingerprint: defaultTagInfo,\n musicip_puid: defaultTagInfo,\n musicip_fingerprint: defaultTagInfo,\n website: defaultTagInfo,\n 'performer:instrument': { multiple: true, unique: true },\n averageLevel: defaultTagInfo,\n peakLevel: defaultTagInfo,\n notes: { multiple: true, unique: false },\n key: defaultTagInfo,\n originalalbum: defaultTagInfo,\n originalartist: defaultTagInfo,\n discogs_artist_id: { multiple: true, unique: true },\n discogs_release_id: defaultTagInfo,\n discogs_label_id: defaultTagInfo,\n discogs_master_release_id: defaultTagInfo,\n discogs_votes: defaultTagInfo,\n discogs_rating: defaultTagInfo,\n replaygain_track_peak: defaultTagInfo,\n replaygain_track_gain: defaultTagInfo,\n replaygain_album_peak: defaultTagInfo,\n replaygain_album_gain: defaultTagInfo,\n replaygain_track_minmax: defaultTagInfo,\n replaygain_album_minmax: defaultTagInfo,\n replaygain_undo: defaultTagInfo,\n description: { multiple: true },\n longDescription: defaultTagInfo,\n category: { multiple: true },\n hdVideo: defaultTagInfo,\n keywords: { multiple: true },\n movement: defaultTagInfo,\n movementIndex: defaultTagInfo,\n movementTotal: defaultTagInfo,\n podcastId: defaultTagInfo,\n showMovement: defaultTagInfo,\n stik: defaultTagInfo,\n playCounter: defaultTagInfo\n};\nexport const commonTagsKeys = /* @__PURE__ */ Object.keys(commonTags);\n/**\n * @param alias Name of common tag\n * @returns {boolean|*} true if given alias is mapped as a singleton', otherwise false\n */\nexport function isSingleton(alias) {\n return commonTags[alias] && !commonTags[alias].multiple;\n}\n/**\n * @param alias Common (generic) tag\n * @returns {boolean|*} true if given alias is a singleton or explicitly marked as unique\n */\nexport function isUnique(alias) {\n return !commonTags[alias].multiple || commonTags[alias].unique || false;\n}\n","import { ID3v1TagMapper } from '../id3v1/ID3v1TagMap.js';\nimport { ID3v24TagMapper } from '../id3v2/ID3v24TagMapper.js';\nimport { AsfTagMapper } from '../asf/AsfTagMapper.js';\nimport { ID3v22TagMapper } from '../id3v2/ID3v22TagMapper.js';\nimport { APEv2TagMapper } from '../apev2/APEv2TagMapper.js';\nimport { MP4TagMapper } from '../mp4/MP4TagMapper.js';\nimport { VorbisTagMapper } from '../ogg/vorbis/VorbisTagMapper.js';\nimport { RiffInfoTagMapper } from '../riff/RiffInfoTagMap.js';\nimport { MatroskaTagMapper } from '../matroska/MatroskaTagMapper.js';\nimport { AiffTagMapper } from '../aiff/AiffTagMap.js';\nimport { InternalParserError } from '../ParseError.js';\nexport class CombinedTagMapper {\n constructor() {\n this.tagMappers = {};\n [\n new ID3v1TagMapper(),\n new ID3v22TagMapper(),\n new ID3v24TagMapper(),\n new MP4TagMapper(),\n new MP4TagMapper(),\n new VorbisTagMapper(),\n new APEv2TagMapper(),\n new AsfTagMapper(),\n new RiffInfoTagMapper(),\n new MatroskaTagMapper(),\n new AiffTagMapper()\n ].forEach(mapper => {\n this.registerTagMapper(mapper);\n });\n }\n /**\n * Convert native to generic (common) tags\n * @param tagType Originating tag format\n * @param tag Native tag to map to a generic tag id\n * @param warnings\n * @return Generic tag result (output of this function)\n */\n mapTag(tagType, tag, warnings) {\n const tagMapper = this.tagMappers[tagType];\n if (tagMapper) {\n return this.tagMappers[tagType].mapGenericTag(tag, warnings);\n }\n throw new InternalParserError(`No generic tag mapper defined for tag-format: ${tagType}`);\n }\n registerTagMapper(genericTagMapper) {\n for (const tagType of genericTagMapper.tagTypes) {\n this.tagMappers[tagType] = genericTagMapper;\n }\n }\n}\n","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ID3v1 tag mappings\n */\nconst id3v1TagMap = {\n title: 'title',\n artist: 'artist',\n album: 'album',\n year: 'year',\n comment: 'comment',\n track: 'track',\n genre: 'genre'\n};\nexport class ID3v1TagMapper extends CommonTagMapper {\n constructor() {\n super(['ID3v1'], id3v1TagMap);\n }\n}\n","export class CommonTagMapper {\n static toIntOrNull(str) {\n const cleaned = Number.parseInt(str, 10);\n return Number.isNaN(cleaned) ? null : cleaned;\n }\n // TODO: a string of 1of1 would fail to be converted\n // converts 1/10 to no : 1, of : 10\n // or 1 to no : 1, of : 0\n static normalizeTrack(origVal) {\n const split = origVal.toString().split('/');\n return {\n no: Number.parseInt(split[0], 10) || null,\n of: Number.parseInt(split[1], 10) || null\n };\n }\n constructor(tagTypes, tagMap) {\n this.tagTypes = tagTypes;\n this.tagMap = tagMap;\n }\n /**\n * Process and set common tags\n * write common tags to\n * @param tag Native tag\n * @param warnings Register warnings\n * @return common name\n */\n mapGenericTag(tag, warnings) {\n tag = { id: tag.id, value: tag.value }; // clone object\n this.postMap(tag, warnings);\n // Convert native tag event to generic 'alias' tag\n const id = this.getCommonName(tag.id);\n return id ? { id, value: tag.value } : null;\n }\n /**\n * Convert native tag key to common tag key\n * @param tag Native header tag\n * @return common tag name (alias)\n */\n getCommonName(tag) {\n return this.tagMap[tag];\n }\n /**\n * Handle post mapping exceptions / correction\n * @param tag Tag e.g. {\"©alb\", \"Buena Vista Social Club\")\n * @param warnings Used to register warnings\n */\n postMap(_tag, _warnings) {\n return;\n }\n}\nCommonTagMapper.maxRatingScore = 1;\n","import { UINT32_LE } from 'token-types';\nimport { CommonTagMapper } from '../common/GenericTagMapper.js';\nimport { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\nimport { decodeString } from '../common/Util.js';\n/**\n * ID3v2.3/ID3v2.4 tag mappings\n */\nconst id3v24TagMap = {\n // id3v2.3\n TIT2: 'title',\n TPE1: 'artist',\n 'TXXX:Artists': 'artists',\n TPE2: 'albumartist',\n TALB: 'album',\n TDRV: 'date', // [ 'date', 'year' ] ToDo: improve 'year' mapping\n /**\n * Original release year\n */\n TORY: 'originalyear',\n TPOS: 'disk',\n TCON: 'genre',\n APIC: 'picture',\n TCOM: 'composer',\n USLT: 'lyrics',\n TSOA: 'albumsort',\n TSOT: 'titlesort',\n TOAL: 'originalalbum',\n TSOP: 'artistsort',\n TSO2: 'albumartistsort',\n TSOC: 'composersort',\n TEXT: 'lyricist',\n 'TXXX:Writer': 'writer',\n TPE3: 'conductor',\n // 'IPLS:instrument': 'performer:instrument', // ToDo\n TPE4: 'remixer',\n 'IPLS:arranger': 'arranger',\n 'IPLS:engineer': 'engineer',\n 'IPLS:producer': 'producer',\n 'IPLS:DJ-mix': 'djmixer',\n 'IPLS:mix': 'mixer',\n TPUB: 'label',\n TIT1: 'grouping',\n TIT3: 'subtitle',\n TRCK: 'track',\n TCMP: 'compilation',\n POPM: 'rating',\n TBPM: 'bpm',\n TMED: 'media',\n 'TXXX:CATALOGNUMBER': 'catalognumber',\n 'TXXX:MusicBrainz Album Status': 'releasestatus',\n 'TXXX:MusicBrainz Album Type': 'releasetype',\n /**\n * Release country as documented: https://picard.musicbrainz.org/docs/mappings/#cite_note-0\n */\n 'TXXX:MusicBrainz Album Release Country': 'releasecountry',\n /**\n * Release country as implemented // ToDo: report\n */\n 'TXXX:RELEASECOUNTRY': 'releasecountry',\n 'TXXX:SCRIPT': 'script',\n TLAN: 'language',\n TCOP: 'copyright',\n WCOP: 'license',\n TENC: 'encodedby',\n TSSE: 'encodersettings',\n 'TXXX:BARCODE': 'barcode',\n 'TXXX:ISRC': 'isrc',\n TSRC: 'isrc',\n 'TXXX:ASIN': 'asin',\n 'TXXX:originalyear': 'originalyear',\n 'UFID:http://musicbrainz.org': 'musicbrainz_recordingid',\n 'TXXX:MusicBrainz Release Track Id': 'musicbrainz_trackid',\n 'TXXX:MusicBrainz Album Id': 'musicbrainz_albumid',\n 'TXXX:MusicBrainz Artist Id': 'musicbrainz_artistid',\n 'TXXX:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',\n 'TXXX:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',\n 'TXXX:MusicBrainz Work Id': 'musicbrainz_workid',\n 'TXXX:MusicBrainz TRM Id': 'musicbrainz_trmid',\n 'TXXX:MusicBrainz Disc Id': 'musicbrainz_discid',\n 'TXXX:ACOUSTID_ID': 'acoustid_id',\n 'TXXX:Acoustid Id': 'acoustid_id',\n 'TXXX:Acoustid Fingerprint': 'acoustid_fingerprint',\n 'TXXX:MusicIP PUID': 'musicip_puid',\n 'TXXX:MusicMagic Fingerprint': 'musicip_fingerprint',\n WOAR: 'website',\n // id3v2.4\n // ToDo: In same sequence as defined at http://id3.org/id3v2.4.0-frames\n TDRC: 'date', // date YYYY-MM-DD\n TYER: 'year',\n TDOR: 'originaldate',\n // 'TMCL:instrument': 'performer:instrument',\n 'TIPL:arranger': 'arranger',\n 'TIPL:engineer': 'engineer',\n 'TIPL:producer': 'producer',\n 'TIPL:DJ-mix': 'djmixer',\n 'TIPL:mix': 'mixer',\n TMOO: 'mood',\n // additional mappings:\n SYLT: 'lyrics',\n TSST: 'discsubtitle',\n TKEY: 'key',\n COMM: 'comment',\n TOPE: 'originalartist',\n // Windows Media Player\n 'PRIV:AverageLevel': 'averageLevel',\n 'PRIV:PeakLevel': 'peakLevel',\n // Discogs\n 'TXXX:DISCOGS_ARTIST_ID': 'discogs_artist_id',\n 'TXXX:DISCOGS_ARTISTS': 'artists',\n 'TXXX:DISCOGS_ARTIST_NAME': 'artists',\n 'TXXX:DISCOGS_ALBUM_ARTISTS': 'albumartist',\n 'TXXX:DISCOGS_CATALOG': 'catalognumber',\n 'TXXX:DISCOGS_COUNTRY': 'releasecountry',\n 'TXXX:DISCOGS_DATE': 'originaldate',\n 'TXXX:DISCOGS_LABEL': 'label',\n 'TXXX:DISCOGS_LABEL_ID': 'discogs_label_id',\n 'TXXX:DISCOGS_MASTER_RELEASE_ID': 'discogs_master_release_id',\n 'TXXX:DISCOGS_RATING': 'discogs_rating',\n 'TXXX:DISCOGS_RELEASED': 'date',\n 'TXXX:DISCOGS_RELEASE_ID': 'discogs_release_id',\n 'TXXX:DISCOGS_VOTES': 'discogs_votes',\n 'TXXX:CATALOGID': 'catalognumber',\n 'TXXX:STYLE': 'genre',\n 'TXXX:REPLAYGAIN_TRACK_PEAK': 'replaygain_track_peak',\n 'TXXX:REPLAYGAIN_TRACK_GAIN': 'replaygain_track_gain',\n 'TXXX:REPLAYGAIN_ALBUM_PEAK': 'replaygain_album_peak',\n 'TXXX:REPLAYGAIN_ALBUM_GAIN': 'replaygain_album_gain',\n 'TXXX:MP3GAIN_MINMAX': 'replaygain_track_minmax',\n 'TXXX:MP3GAIN_ALBUM_MINMAX': 'replaygain_album_minmax',\n 'TXXX:MP3GAIN_UNDO': 'replaygain_undo',\n MVNM: 'movement',\n MVIN: 'movementIndex',\n PCST: 'podcast',\n TCAT: 'category',\n TDES: 'description',\n TDRL: 'releasedate',\n TGID: 'podcastId',\n TKWD: 'keywords',\n WFED: 'podcasturl',\n GRP1: 'grouping',\n PCNT: 'playCounter',\n};\nexport class ID3v24TagMapper extends CaseInsensitiveTagMap {\n static toRating(popm) {\n return {\n source: popm.email,\n rating: popm.rating > 0 ? (popm.rating - 1) / 254 * CommonTagMapper.maxRatingScore : undefined\n };\n }\n constructor() {\n super(['ID3v2.3', 'ID3v2.4'], id3v24TagMap);\n }\n /**\n * Handle post mapping exceptions / correction\n * @param tag to post map\n * @param warnings Wil be used to register (collect) warnings\n */\n postMap(tag, warnings) {\n switch (tag.id) {\n case 'UFID':\n {\n // decode MusicBrainz Recording Id\n const idTag = tag.value;\n if (idTag.owner_identifier === 'http://musicbrainz.org') {\n tag.id += `:${idTag.owner_identifier}`;\n tag.value = decodeString(idTag.identifier, 'latin1'); // latin1 == iso-8859-1\n }\n }\n break;\n case 'PRIV':\n {\n const customTag = tag.value;\n switch (customTag.owner_identifier) {\n // decode Windows Media Player\n case 'AverageLevel':\n case 'PeakValue':\n tag.id += `:${customTag.owner_identifier}`;\n tag.value = customTag.data.length === 4 ? UINT32_LE.get(customTag.data, 0) : null;\n if (tag.value === null) {\n warnings.addWarning('Failed to parse PRIV:PeakValue');\n }\n break;\n default:\n warnings.addWarning(`Unknown PRIV owner-identifier: ${customTag.data}`);\n }\n }\n break;\n case 'POPM':\n tag.value = ID3v24TagMapper.toRating(tag.value);\n break;\n default:\n break;\n }\n }\n}\n","import { CommonTagMapper } from './GenericTagMapper.js';\nexport class CaseInsensitiveTagMap extends CommonTagMapper {\n constructor(tagTypes, tagMap) {\n const upperCaseMap = {};\n for (const tag of Object.keys(tagMap)) {\n upperCaseMap[tag.toUpperCase()] = tagMap[tag];\n }\n super(tagTypes, upperCaseMap);\n }\n /**\n * @tag Native header tag\n * @return common tag name (alias)\n */\n getCommonName(tag) {\n return this.tagMap[tag.toUpperCase()];\n }\n}\n","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ASF Metadata tag mappings.\n * See http://msdn.microsoft.com/en-us/library/ms867702.aspx\n */\nconst asfTagMap = {\n Title: 'title',\n Author: 'artist',\n 'WM/AlbumArtist': 'albumartist',\n 'WM/AlbumTitle': 'album',\n 'WM/Year': 'date', // changed to 'year' to 'date' based on Picard mappings; ToDo: check me\n 'WM/OriginalReleaseTime': 'originaldate',\n 'WM/OriginalReleaseYear': 'originalyear',\n Description: 'comment',\n 'WM/TrackNumber': 'track',\n 'WM/PartOfSet': 'disk',\n 'WM/Genre': 'genre',\n 'WM/Composer': 'composer',\n 'WM/Lyrics': 'lyrics',\n 'WM/AlbumSortOrder': 'albumsort',\n 'WM/TitleSortOrder': 'titlesort',\n 'WM/ArtistSortOrder': 'artistsort',\n 'WM/AlbumArtistSortOrder': 'albumartistsort',\n 'WM/ComposerSortOrder': 'composersort',\n 'WM/Writer': 'lyricist',\n 'WM/Conductor': 'conductor',\n 'WM/ModifiedBy': 'remixer',\n 'WM/Engineer': 'engineer',\n 'WM/Producer': 'producer',\n 'WM/DJMixer': 'djmixer',\n 'WM/Mixer': 'mixer',\n 'WM/Publisher': 'label',\n 'WM/ContentGroupDescription': 'grouping',\n 'WM/SubTitle': 'subtitle',\n 'WM/SetSubTitle': 'discsubtitle',\n // 'WM/PartOfSet': 'totaldiscs',\n 'WM/IsCompilation': 'compilation',\n 'WM/SharedUserRating': 'rating',\n 'WM/BeatsPerMinute': 'bpm',\n 'WM/Mood': 'mood',\n 'WM/Media': 'media',\n 'WM/CatalogNo': 'catalognumber',\n 'MusicBrainz/Album Status': 'releasestatus',\n 'MusicBrainz/Album Type': 'releasetype',\n 'MusicBrainz/Album Release Country': 'releasecountry',\n 'WM/Script': 'script',\n 'WM/Language': 'language',\n Copyright: 'copyright',\n LICENSE: 'license',\n 'WM/EncodedBy': 'encodedby',\n 'WM/EncodingSettings': 'encodersettings',\n 'WM/Barcode': 'barcode',\n 'WM/ISRC': 'isrc',\n 'MusicBrainz/Track Id': 'musicbrainz_recordingid',\n 'MusicBrainz/Release Track Id': 'musicbrainz_trackid',\n 'MusicBrainz/Album Id': 'musicbrainz_albumid',\n 'MusicBrainz/Artist Id': 'musicbrainz_artistid',\n 'MusicBrainz/Album Artist Id': 'musicbrainz_albumartistid',\n 'MusicBrainz/Release Group Id': 'musicbrainz_releasegroupid',\n 'MusicBrainz/Work Id': 'musicbrainz_workid',\n 'MusicBrainz/TRM Id': 'musicbrainz_trmid',\n 'MusicBrainz/Disc Id': 'musicbrainz_discid',\n 'Acoustid/Id': 'acoustid_id',\n 'Acoustid/Fingerprint': 'acoustid_fingerprint',\n 'MusicIP/PUID': 'musicip_puid',\n 'WM/ARTISTS': 'artists',\n 'WM/InitialKey': 'key',\n ASIN: 'asin',\n 'WM/Work': 'work',\n 'WM/AuthorURL': 'website',\n 'WM/Picture': 'picture'\n};\nexport class AsfTagMapper extends CommonTagMapper {\n static toRating(rating) {\n return {\n rating: Number.parseFloat(rating + 1) / 5\n };\n }\n constructor() {\n super(['asf'], asfTagMap);\n }\n postMap(tag) {\n switch (tag.id) {\n case 'WM/SharedUserRating': {\n const keys = tag.id.split(':');\n tag.value = AsfTagMapper.toRating(tag.value);\n tag.id = keys[0];\n break;\n }\n }\n }\n}\n","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * ID3v2.2 tag mappings\n */\nexport const id3v22TagMap = {\n TT2: 'title',\n TP1: 'artist',\n TP2: 'albumartist',\n TAL: 'album',\n TYE: 'year',\n COM: 'comment',\n TRK: 'track',\n TPA: 'disk',\n TCO: 'genre',\n PIC: 'picture',\n TCM: 'composer',\n TOR: 'originaldate',\n TOT: 'originalalbum',\n TXT: 'lyricist',\n TP3: 'conductor',\n TPB: 'label',\n TT1: 'grouping',\n TT3: 'subtitle',\n TLA: 'language',\n TCR: 'copyright',\n WCP: 'license',\n TEN: 'encodedby',\n TSS: 'encodersettings',\n WAR: 'website',\n PCS: 'podcast',\n TCP: \"compilation\",\n TDR: 'date',\n TS2: 'albumartistsort',\n TSA: 'albumsort',\n TSC: 'composersort',\n TSP: 'artistsort',\n TST: 'titlesort',\n WFD: 'podcasturl',\n TBP: 'bpm',\n GP1: 'grouping'\n};\nexport class ID3v22TagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super(['ID3v2.2'], id3v22TagMap);\n }\n}\n","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * ID3v2.2 tag mappings\n */\nconst apev2TagMap = {\n Title: 'title',\n Artist: 'artist',\n Artists: 'artists',\n 'Album Artist': 'albumartist',\n Album: 'album',\n Year: 'date',\n Originalyear: 'originalyear',\n Originaldate: 'originaldate',\n Releasedate: 'releasedate',\n Comment: 'comment',\n Track: 'track',\n Disc: 'disk',\n DISCNUMBER: 'disk', // ToDo: backwards compatibility', valid tag?\n Genre: 'genre',\n 'Cover Art (Front)': 'picture',\n 'Cover Art (Back)': 'picture',\n Composer: 'composer',\n Lyrics: 'lyrics',\n ALBUMSORT: 'albumsort',\n TITLESORT: 'titlesort',\n WORK: 'work',\n ARTISTSORT: 'artistsort',\n ALBUMARTISTSORT: 'albumartistsort',\n COMPOSERSORT: 'composersort',\n Lyricist: 'lyricist',\n Writer: 'writer',\n Conductor: 'conductor',\n // 'Performer=artist (instrument)': 'performer:instrument',\n MixArtist: 'remixer',\n Arranger: 'arranger',\n Engineer: 'engineer',\n Producer: 'producer',\n DJMixer: 'djmixer',\n Mixer: 'mixer',\n Label: 'label',\n Grouping: 'grouping',\n Subtitle: 'subtitle',\n DiscSubtitle: 'discsubtitle',\n Compilation: 'compilation',\n BPM: 'bpm',\n Mood: 'mood',\n Media: 'media',\n CatalogNumber: 'catalognumber',\n MUSICBRAINZ_ALBUMSTATUS: 'releasestatus',\n MUSICBRAINZ_ALBUMTYPE: 'releasetype',\n RELEASECOUNTRY: 'releasecountry',\n Script: 'script',\n Language: 'language',\n Copyright: 'copyright',\n LICENSE: 'license',\n EncodedBy: 'encodedby',\n EncoderSettings: 'encodersettings',\n Barcode: 'barcode',\n ISRC: 'isrc',\n ASIN: 'asin',\n musicbrainz_trackid: 'musicbrainz_recordingid',\n musicbrainz_releasetrackid: 'musicbrainz_trackid',\n MUSICBRAINZ_ALBUMID: 'musicbrainz_albumid',\n MUSICBRAINZ_ARTISTID: 'musicbrainz_artistid',\n MUSICBRAINZ_ALBUMARTISTID: 'musicbrainz_albumartistid',\n MUSICBRAINZ_RELEASEGROUPID: 'musicbrainz_releasegroupid',\n MUSICBRAINZ_WORKID: 'musicbrainz_workid',\n MUSICBRAINZ_TRMID: 'musicbrainz_trmid',\n MUSICBRAINZ_DISCID: 'musicbrainz_discid',\n Acoustid_Id: 'acoustid_id',\n ACOUSTID_FINGERPRINT: 'acoustid_fingerprint',\n MUSICIP_PUID: 'musicip_puid',\n Weblink: 'website',\n REPLAYGAIN_TRACK_GAIN: 'replaygain_track_gain',\n REPLAYGAIN_TRACK_PEAK: 'replaygain_track_peak',\n MP3GAIN_MINMAX: 'replaygain_track_minmax',\n MP3GAIN_UNDO: 'replaygain_undo'\n};\nexport class APEv2TagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super(['APEv2'], apev2TagMap);\n }\n}\n","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * Ref: https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n */\nconst mp4TagMap = {\n '©nam': 'title',\n '©ART': 'artist',\n aART: 'albumartist',\n /**\n * ToDo: Album artist seems to be stored here while Picard documentation says: aART\n */\n '----:com.apple.iTunes:Band': 'albumartist',\n '©alb': 'album',\n '©day': 'date',\n '©cmt': 'comment',\n '©com': 'comment',\n trkn: 'track',\n disk: 'disk',\n '©gen': 'genre',\n covr: 'picture',\n '©wrt': 'composer',\n '©lyr': 'lyrics',\n soal: 'albumsort',\n sonm: 'titlesort',\n soar: 'artistsort',\n soaa: 'albumartistsort',\n soco: 'composersort',\n '----:com.apple.iTunes:LYRICIST': 'lyricist',\n '----:com.apple.iTunes:CONDUCTOR': 'conductor',\n '----:com.apple.iTunes:REMIXER': 'remixer',\n '----:com.apple.iTunes:ENGINEER': 'engineer',\n '----:com.apple.iTunes:PRODUCER': 'producer',\n '----:com.apple.iTunes:DJMIXER': 'djmixer',\n '----:com.apple.iTunes:MIXER': 'mixer',\n '----:com.apple.iTunes:LABEL': 'label',\n '©grp': 'grouping',\n '----:com.apple.iTunes:SUBTITLE': 'subtitle',\n '----:com.apple.iTunes:DISCSUBTITLE': 'discsubtitle',\n cpil: 'compilation',\n tmpo: 'bpm',\n '----:com.apple.iTunes:MOOD': 'mood',\n '----:com.apple.iTunes:MEDIA': 'media',\n '----:com.apple.iTunes:CATALOGNUMBER': 'catalognumber',\n tvsh: 'tvShow',\n tvsn: 'tvSeason',\n tves: 'tvEpisode',\n sosn: 'tvShowSort',\n tven: 'tvEpisodeId',\n tvnn: 'tvNetwork',\n pcst: 'podcast',\n purl: 'podcasturl',\n '----:com.apple.iTunes:MusicBrainz Album Status': 'releasestatus',\n '----:com.apple.iTunes:MusicBrainz Album Type': 'releasetype',\n '----:com.apple.iTunes:MusicBrainz Album Release Country': 'releasecountry',\n '----:com.apple.iTunes:SCRIPT': 'script',\n '----:com.apple.iTunes:LANGUAGE': 'language',\n cprt: 'copyright',\n '©cpy': 'copyright',\n '----:com.apple.iTunes:LICENSE': 'license',\n '©too': 'encodedby',\n pgap: 'gapless',\n '----:com.apple.iTunes:BARCODE': 'barcode',\n '----:com.apple.iTunes:ISRC': 'isrc',\n '----:com.apple.iTunes:ASIN': 'asin',\n '----:com.apple.iTunes:NOTES': 'comment',\n '----:com.apple.iTunes:MusicBrainz Track Id': 'musicbrainz_recordingid',\n '----:com.apple.iTunes:MusicBrainz Release Track Id': 'musicbrainz_trackid',\n '----:com.apple.iTunes:MusicBrainz Album Id': 'musicbrainz_albumid',\n '----:com.apple.iTunes:MusicBrainz Artist Id': 'musicbrainz_artistid',\n '----:com.apple.iTunes:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',\n '----:com.apple.iTunes:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',\n '----:com.apple.iTunes:MusicBrainz Work Id': 'musicbrainz_workid',\n '----:com.apple.iTunes:MusicBrainz TRM Id': 'musicbrainz_trmid',\n '----:com.apple.iTunes:MusicBrainz Disc Id': 'musicbrainz_discid',\n '----:com.apple.iTunes:Acoustid Id': 'acoustid_id',\n '----:com.apple.iTunes:Acoustid Fingerprint': 'acoustid_fingerprint',\n '----:com.apple.iTunes:MusicIP PUID': 'musicip_puid',\n '----:com.apple.iTunes:fingerprint': 'musicip_fingerprint',\n '----:com.apple.iTunes:replaygain_track_gain': 'replaygain_track_gain',\n '----:com.apple.iTunes:replaygain_track_peak': 'replaygain_track_peak',\n '----:com.apple.iTunes:replaygain_album_gain': 'replaygain_album_gain',\n '----:com.apple.iTunes:replaygain_album_peak': 'replaygain_album_peak',\n '----:com.apple.iTunes:replaygain_track_minmax': 'replaygain_track_minmax',\n '----:com.apple.iTunes:replaygain_album_minmax': 'replaygain_album_minmax',\n '----:com.apple.iTunes:replaygain_undo': 'replaygain_undo',\n // Additional mappings:\n gnre: 'genre', // ToDo: check mapping\n '----:com.apple.iTunes:ALBUMARTISTSORT': 'albumartistsort',\n '----:com.apple.iTunes:ARTISTS': 'artists',\n '----:com.apple.iTunes:ORIGINALDATE': 'originaldate',\n '----:com.apple.iTunes:ORIGINALYEAR': 'originalyear',\n '----:com.apple.iTunes:RELEASEDATE': 'releasedate',\n // '----:com.apple.iTunes:PERFORMER': 'performer'\n desc: 'description',\n ldes: 'longDescription',\n '©mvn': 'movement',\n '©mvi': 'movementIndex',\n '©mvc': 'movementTotal',\n '©wrk': 'work',\n catg: 'category',\n egid: 'podcastId',\n hdvd: 'hdVideo',\n keyw: 'keywords',\n shwm: 'showMovement',\n stik: 'stik',\n rate: 'rating'\n};\nexport const tagType = 'iTunes';\nexport class MP4TagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super([tagType], mp4TagMap);\n }\n postMap(tag, _warnings) {\n switch (tag.id) {\n case 'rate':\n tag.value = {\n source: undefined,\n rating: Number.parseFloat(tag.value) / 100\n };\n break;\n }\n }\n}\n","import { CommonTagMapper } from '../../common/GenericTagMapper.js';\n/**\n * Vorbis tag mappings\n *\n * Mapping from native header format to one or possibly more 'common' entries\n * The common entries aim to read the same information from different media files\n * independent of the underlying format\n */\nconst vorbisTagMap = {\n TITLE: 'title',\n ARTIST: 'artist',\n ARTISTS: 'artists',\n ALBUMARTIST: 'albumartist',\n 'ALBUM ARTIST': 'albumartist',\n ALBUM: 'album',\n DATE: 'date',\n ORIGINALDATE: 'originaldate',\n ORIGINALYEAR: 'originalyear',\n RELEASEDATE: 'releasedate',\n COMMENT: 'comment',\n TRACKNUMBER: 'track',\n DISCNUMBER: 'disk',\n GENRE: 'genre',\n METADATA_BLOCK_PICTURE: 'picture',\n COMPOSER: 'composer',\n LYRICS: 'lyrics',\n ALBUMSORT: 'albumsort',\n TITLESORT: 'titlesort',\n WORK: 'work',\n ARTISTSORT: 'artistsort',\n ALBUMARTISTSORT: 'albumartistsort',\n COMPOSERSORT: 'composersort',\n LYRICIST: 'lyricist',\n WRITER: 'writer',\n CONDUCTOR: 'conductor',\n // 'PERFORMER=artist (instrument)': 'performer:instrument', // ToDo\n REMIXER: 'remixer',\n ARRANGER: 'arranger',\n ENGINEER: 'engineer',\n PRODUCER: 'producer',\n DJMIXER: 'djmixer',\n MIXER: 'mixer',\n LABEL: 'label',\n GROUPING: 'grouping',\n SUBTITLE: 'subtitle',\n DISCSUBTITLE: 'discsubtitle',\n TRACKTOTAL: 'totaltracks',\n DISCTOTAL: 'totaldiscs',\n COMPILATION: 'compilation',\n RATING: 'rating',\n BPM: 'bpm',\n KEY: 'key',\n MOOD: 'mood',\n MEDIA: 'media',\n CATALOGNUMBER: 'catalognumber',\n RELEASESTATUS: 'releasestatus',\n RELEASETYPE: 'releasetype',\n RELEASECOUNTRY: 'releasecountry',\n SCRIPT: 'script',\n LANGUAGE: 'language',\n COPYRIGHT: 'copyright',\n LICENSE: 'license',\n ENCODEDBY: 'encodedby',\n ENCODERSETTINGS: 'encodersettings',\n BARCODE: 'barcode',\n ISRC: 'isrc',\n ASIN: 'asin',\n MUSICBRAINZ_TRACKID: 'musicbrainz_recordingid',\n MUSICBRAINZ_RELEASETRACKID: 'musicbrainz_trackid',\n MUSICBRAINZ_ALBUMID: 'musicbrainz_albumid',\n MUSICBRAINZ_ARTISTID: 'musicbrainz_artistid',\n MUSICBRAINZ_ALBUMARTISTID: 'musicbrainz_albumartistid',\n MUSICBRAINZ_RELEASEGROUPID: 'musicbrainz_releasegroupid',\n MUSICBRAINZ_WORKID: 'musicbrainz_workid',\n MUSICBRAINZ_TRMID: 'musicbrainz_trmid',\n MUSICBRAINZ_DISCID: 'musicbrainz_discid',\n ACOUSTID_ID: 'acoustid_id',\n ACOUSTID_ID_FINGERPRINT: 'acoustid_fingerprint',\n MUSICIP_PUID: 'musicip_puid',\n // 'FINGERPRINT=MusicMagic Fingerprint {fingerprint}': 'musicip_fingerprint', // ToDo\n WEBSITE: 'website',\n NOTES: 'notes',\n TOTALTRACKS: 'totaltracks',\n TOTALDISCS: 'totaldiscs',\n // Discogs\n DISCOGS_ARTIST_ID: 'discogs_artist_id',\n DISCOGS_ARTISTS: 'artists',\n DISCOGS_ARTIST_NAME: 'artists',\n DISCOGS_ALBUM_ARTISTS: 'albumartist',\n DISCOGS_CATALOG: 'catalognumber',\n DISCOGS_COUNTRY: 'releasecountry',\n DISCOGS_DATE: 'originaldate',\n DISCOGS_LABEL: 'label',\n DISCOGS_LABEL_ID: 'discogs_label_id',\n DISCOGS_MASTER_RELEASE_ID: 'discogs_master_release_id',\n DISCOGS_RATING: 'discogs_rating',\n DISCOGS_RELEASED: 'date',\n DISCOGS_RELEASE_ID: 'discogs_release_id',\n DISCOGS_VOTES: 'discogs_votes',\n CATALOGID: 'catalognumber',\n STYLE: 'genre',\n //\n REPLAYGAIN_TRACK_GAIN: 'replaygain_track_gain',\n REPLAYGAIN_TRACK_PEAK: 'replaygain_track_peak',\n REPLAYGAIN_ALBUM_GAIN: 'replaygain_album_gain',\n REPLAYGAIN_ALBUM_PEAK: 'replaygain_album_peak',\n // To Sure if these (REPLAYGAIN_MINMAX, REPLAYGAIN_ALBUM_MINMAX & REPLAYGAIN_UNDO) are used for Vorbis:\n REPLAYGAIN_MINMAX: 'replaygain_track_minmax',\n REPLAYGAIN_ALBUM_MINMAX: 'replaygain_album_minmax',\n REPLAYGAIN_UNDO: 'replaygain_undo'\n};\nexport class VorbisTagMapper extends CommonTagMapper {\n static toRating(email, rating, maxScore) {\n return {\n source: email ? email.toLowerCase() : undefined,\n rating: (Number.parseFloat(rating) / maxScore) * CommonTagMapper.maxRatingScore\n };\n }\n constructor() {\n super(['vorbis'], vorbisTagMap);\n }\n postMap(tag) {\n if (tag.id === 'RATING') {\n // The way Winamp 5.666 assigns rating\n tag.value = VorbisTagMapper.toRating(undefined, tag.value, 100);\n }\n else if (tag.id.indexOf('RATING:') === 0) {\n const keys = tag.id.split(':');\n tag.value = VorbisTagMapper.toRating(keys[1], tag.value, 1);\n tag.id = keys[0];\n }\n }\n}\n","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * RIFF Info Tags; part of the EXIF 2.3\n * Ref: http://owl.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info\n */\nexport const riffInfoTagMap = {\n IART: 'artist', // Artist\n ICRD: 'date', // DateCreated\n INAM: 'title', // Title\n TITL: 'title',\n IPRD: 'album', // Product\n ITRK: 'track',\n IPRT: 'track', // Additional tag for track index\n COMM: 'comment', // Comments\n ICMT: 'comment', // Country\n ICNT: 'releasecountry',\n GNRE: 'genre', // Genre\n IWRI: 'writer', // WrittenBy\n RATE: 'rating',\n YEAR: 'year',\n ISFT: 'encodedby', // Software\n CODE: 'encodedby', // EncodedBy\n TURL: 'website', // URL,\n IGNR: 'genre', // Genre\n IENG: 'engineer', // Engineer\n ITCH: 'technician', // Technician\n IMED: 'media', // Original Media\n IRPD: 'album' // Product, where the file was intended for\n};\nexport class RiffInfoTagMapper extends CommonTagMapper {\n constructor() {\n super(['exif'], riffInfoTagMap);\n }\n}\n","import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * EBML Tag map\n */\nconst ebmlTagMap = {\n 'segment:title': 'title',\n 'album:ARTIST': 'albumartist',\n 'album:ARTISTSORT': 'albumartistsort',\n 'album:TITLE': 'album',\n 'album:DATE_RECORDED': 'originaldate',\n 'album:DATE_RELEASED': 'releasedate',\n 'album:PART_NUMBER': 'disk',\n 'album:TOTAL_PARTS': 'totaltracks',\n 'track:ARTIST': 'artist',\n 'track:ARTISTSORT': 'artistsort',\n 'track:TITLE': 'title',\n 'track:PART_NUMBER': 'track',\n 'track:MUSICBRAINZ_TRACKID': 'musicbrainz_recordingid',\n 'track:MUSICBRAINZ_ALBUMID': 'musicbrainz_albumid',\n 'track:MUSICBRAINZ_ARTISTID': 'musicbrainz_artistid',\n 'track:PUBLISHER': 'label',\n 'track:GENRE': 'genre',\n 'track:ENCODER': 'encodedby',\n 'track:ENCODER_OPTIONS': 'encodersettings',\n 'edition:TOTAL_PARTS': 'totaldiscs',\n picture: 'picture'\n};\nexport class MatroskaTagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super(['matroska'], ebmlTagMap);\n }\n}\n","import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ID3v1 tag mappings\n */\nconst tagMap = {\n NAME: 'title',\n AUTH: 'artist',\n '(c) ': 'copyright',\n ANNO: 'comment'\n};\nexport class AiffTagMapper extends CommonTagMapper {\n constructor() {\n super(['AIFF'], tagMap);\n }\n}\n","import { LyricsContentType, TimestampFormat } from '../type.js';\n// Shared timestamp regex for LRC format\nconst TIMESTAMP_REGEX = /\\[(\\d{2}):(\\d{2})\\.(\\d{2,3})]/;\nexport function parseLyrics(input) {\n if (TIMESTAMP_REGEX.test(input)) {\n return parseLrc(input);\n }\n return toUnsyncedLyrics(input);\n}\nexport function toUnsyncedLyrics(lyrics) {\n return {\n contentType: LyricsContentType.lyrics,\n timeStampFormat: TimestampFormat.notSynchronized,\n text: lyrics.trim(),\n syncText: [],\n };\n}\n/**\n * Parse LRC (Lyrics) formatted text\n * Ref: https://en.wikipedia.org/wiki/LRC_(file_format)\n * @param lrcString\n */\nexport function parseLrc(lrcString) {\n const lines = lrcString.split('\\n');\n const syncText = [];\n for (const line of lines) {\n const match = line.match(TIMESTAMP_REGEX);\n if (match) {\n const minutes = Number.parseInt(match[1], 10);\n const seconds = Number.parseInt(match[2], 10);\n const ms = match[3].length === 3\n ? Number.parseInt(match[3], 10)\n : Number.parseInt(match[3], 10) * 10;\n const timestamp = (minutes * 60 + seconds) * 1000 + ms;\n const text = line.replace(TIMESTAMP_REGEX, '').trim();\n syncText.push({ timestamp, text });\n }\n }\n return {\n contentType: LyricsContentType.lyrics,\n timeStampFormat: TimestampFormat.milliseconds,\n text: syncText.map(line => line.text).join('\\n'),\n syncText,\n };\n}\n","export const mpegParserLoader = {\n parserType: 'mpeg',\n extensions: ['.mp2', '.mp3', '.m2a', '.aac', 'aacp'],\n mimeTypes: ['audio/mpeg', 'audio/mp3', 'audio/aacs', 'audio/aacp'],\n async load() {\n return (await import('./MpegParser.js')).MpegParser;\n }\n};\n","export const apeParserLoader = {\n parserType: 'apev2',\n extensions: ['.ape'],\n mimeTypes: ['audio/ape', 'audio/monkeys-audio'],\n async load() {\n return (await import('./APEv2Parser.js')).APEv2Parser;\n }\n};\n","export const asfParserLoader = {\n parserType: 'asf',\n extensions: ['.asf'],\n mimeTypes: ['audio/ms-wma', 'video/ms-wmv', 'audio/ms-asf', 'video/ms-asf', 'application/vnd.ms-asf'],\n async load() {\n return (await import('./AsfParser.js')).AsfParser;\n }\n};\n","export const dsdiffParserLoader = {\n parserType: 'dsdiff',\n extensions: ['.dff'],\n mimeTypes: ['audio/dsf', 'audio/dsd'],\n async load() {\n return (await import('./DsdiffParser.js')).DsdiffParser;\n }\n};\n","export const aiffParserLoader = {\n parserType: 'aiff',\n extensions: ['.aif', 'aiff', 'aifc'],\n mimeTypes: ['audio/aiff', 'audio/aif', 'audio/aifc', 'application/aiff'],\n async load() {\n return (await import('./AiffParser.js')).AIFFParser;\n }\n};\n","export const dsfParserLoader = {\n parserType: 'dsf',\n extensions: ['.dsf'],\n mimeTypes: ['audio/dsf'],\n async load() {\n return (await import('./DsfParser.js')).DsfParser;\n }\n};\n","export const flacParserLoader = {\n parserType: 'flac',\n extensions: ['.flac'],\n mimeTypes: ['audio/flac'],\n async load() {\n return (await import('./FlacParser.js')).FlacParser;\n }\n};\n","export const matroskaParserLoader = {\n parserType: 'matroska',\n extensions: ['.mka', '.mkv', '.mk3d', '.mks', 'webm'],\n mimeTypes: ['audio/matroska', 'video/matroska', 'audio/webm', 'video/webm'],\n async load() {\n return (await import('./MatroskaParser.js')).MatroskaParser;\n }\n};\n","export const mp4ParserLoader = {\n parserType: 'mp4',\n extensions: ['.mp4', '.m4a', '.m4b', '.m4pa', 'm4v', 'm4r', '3gp', '.mov', '.movie', '.qt'],\n mimeTypes: ['audio/mp4', 'audio/m4a', 'video/m4v', 'video/mp4', 'video/quicktime'],\n async load() {\n return (await import('./MP4Parser.js')).MP4Parser;\n }\n};\n","export const musepackParserLoader = {\n parserType: 'musepack',\n extensions: ['.mpc'],\n mimeTypes: ['audio/musepack'],\n async load() {\n return (await import('./MusepackParser.js')).MusepackParser;\n }\n};\n","export const oggParserLoader = {\n parserType: 'ogg',\n extensions: ['.ogg', '.ogv', '.oga', '.ogm', '.ogx', '.opus', '.spx'],\n mimeTypes: ['audio/ogg', 'audio/opus', 'audio/speex', 'video/ogg'], // RFC 7845, RFC 6716, RFC 5574\n async load() {\n return (await import('./OggParser.js')).OggParser;\n }\n};\n","export const wavpackParserLoader = {\n parserType: 'wavpack',\n extensions: ['.wv', '.wvp'],\n mimeTypes: ['audio/wavpack'],\n async load() {\n return (await import('./WavPackParser.js')).WavPackParser;\n }\n};\n","export const riffParserLoader = {\n parserType: 'riff',\n extensions: ['.wav', 'wave', '.bwf'],\n mimeTypes: ['audio/vnd.wave', 'audio/wav', 'audio/wave'],\n async load() {\n return (await import('./WaveParser.js')).WaveParser;\n }\n};\n","import { textDecode } from '@borewit/text-codec';\nexport const endTag2 = 'LYRICS200';\nexport async function getLyricsHeaderLength(tokenizer) {\n const fileSize = tokenizer.fileInfo.size;\n if (fileSize >= 143) {\n const buf = new Uint8Array(15);\n const position = tokenizer.position;\n await tokenizer.readBuffer(buf, { position: fileSize - 143 });\n tokenizer.setPosition(position); // Restore position\n const txt = textDecode(buf, 'latin1');\n const tag = txt.substring(6);\n if (tag === endTag2) {\n return Number.parseInt(txt.substring(0, 6), 10) + 15;\n }\n }\n return 0;\n}\n","import { HttpClient } from './http-client.js';\nimport * as rangeTokenizer from '@tokenizer/range';\nexport { HttpClient } from './http-client.js';\n/**\n * Create and initialize the HTTP tokenizer\n * @param url URL to resource to stream with tokenizer\n * @param tokenizerConfig Tokenizer configuration options\n * @param httpClientConfig HTTP client configuration options\n * @return Tokenizer\n */\nexport function makeTokenizer(url, tokenizerConfig, httpClientConfig) {\n const httpClient = new HttpClient(url, httpClientConfig);\n return rangeTokenizer.tokenizer(httpClient, tokenizerConfig);\n}\n//# sourceMappingURL=index.js.map","import initDebug from 'debug';\nimport { ResponseInfo } from './response-info.js'; // Add 'fetch' API for node.js\nconst debug = initDebug('streaming-http-token-reader:http-client');\nconst DEFAULT_CONFIG = {\n resolveUrl: false\n};\n/**\n * Simple HTTP-client, which works both in node.js and browser\n */\nexport class HttpClient {\n constructor(url, config) {\n this.url = url;\n this.abortController = new AbortController();\n this.config = DEFAULT_CONFIG;\n Object.assign(this.config, config);\n }\n async getHeadInfo() {\n const response = new ResponseInfo(await fetch(this.url, { method: 'HEAD', signal: this.abortController.signal }));\n if (this.config.resolveUrl)\n this.resolvedUrl = response.response.url;\n return response.toRangeRequestResponse();\n }\n async getResponse(method, range) {\n const headers = new Headers();\n if (range) {\n debug(`_getResponse ${method} ${range[0]}..${range[1]}`);\n headers.set('Range', `bytes=${range[0]}-${range[1]}`);\n }\n else {\n debug(`_getResponse ${method} (range not provided)`);\n }\n const response = new ResponseInfo(await fetch(this.resolvedUrl || this.url, { method, headers, signal: this.abortController.signal }));\n if (response.response.ok) {\n if (this.config.resolveUrl)\n this.resolvedUrl = response.response.url;\n return response.toRangeRequestResponse();\n }\n throw new Error(`Unexpected HTTP response status=${response.response.status}`);\n }\n abort() {\n debug('abort');\n this.abortController.abort();\n }\n}\n//# sourceMappingURL=http-client.js.map","import { parseContentRange as rangeParseContentRange } from '@tokenizer/range';\nexport class ResponseInfo {\n constructor(response) {\n this.response = response;\n }\n getContentLength() {\n const contentLength = this.response.headers.get('Content-Length');\n return contentLength ? Number.parseInt(contentLength, 10) : undefined;\n }\n getAcceptRangesHeaderValue() {\n return this.response.headers.get('Accept-Ranges');\n }\n getContentType() {\n return this.response.headers.get('Content-Type');\n }\n acceptRanges() {\n const value = this.getAcceptRangesHeaderValue();\n return value !== null && value.trim().toLowerCase() === 'bytes';\n }\n getContentRange() {\n const contentRange = this.response.headers.get('Content-Range');\n if (!contentRange) {\n return;\n }\n return rangeParseContentRange(contentRange);\n }\n toRangeRequestResponse() {\n const contentRange = this.getContentRange();\n const size = contentRange ? contentRange.instanceLength : this.getContentLength();\n if (typeof size !== 'number') {\n throw new Error('Could not determine file-size from HTTP response');\n }\n return {\n url: this.response.url,\n size,\n mimeType: this.getContentType() ?? undefined,\n acceptPartialRequests: this.acceptRanges(),\n contentRange,\n arrayBuffer: () => this.response.arrayBuffer().then(res => new Uint8Array(res))\n };\n }\n}\n//# sourceMappingURL=response-info.js.map","import { RangeRequestFactory } from './range-request-factory.js';\nexport { parseContentRange } from './range-request-tokenizer.js';\n/**\n * Construct range-tokenizer from range-request-client and config\n * @param rangeRequestClient - HTTP range request client\n * @param abortController - AbortController\n * @param config - Configuration\n * @return Tokenizer\n */\nexport function tokenizer(rangeRequestClient, config) {\n const factory = new RangeRequestFactory(rangeRequestClient);\n return factory.initTokenizer(config);\n}\n//# sourceMappingURL=index.js.map","import { RangeRequestTokenizer, roundRange } from './range-request-tokenizer.js';\nimport initDebug from 'debug';\nconst debug = initDebug('range-request-reader');\nexport class RangeRequestFactory {\n constructor(rangeRequestClient) {\n this.rangeRequestClient = rangeRequestClient;\n this.config = {\n avoidHeadRequests: false,\n initialChunkSize: 4 * 1024,\n minimumChunkSize: 1024\n };\n }\n async initTokenizer(config) {\n if (config) {\n this.config = { ...this.config, ...config };\n }\n const headRequestInfo = await this.getHeadRequestInfo();\n if (!headRequestInfo.acceptPartialRequests) {\n throw new Error('Server does not accept partial requests');\n }\n return new RangeRequestTokenizer(this.rangeRequestClient, {\n fileInfo: headRequestInfo,\n minimumChunkSize: this.config.minimumChunkSize,\n abortSignal: config?.abortSignal\n });\n }\n /**\n * Get file information, an HTTP-client may implement this doing a HEAD request\n * @return Promise with head-request-info, extending tokenizer file-info.\n */\n getHeadRequestInfo() {\n return this.config.avoidHeadRequests ?\n this.fetchFileInfoWithGetRequest() :\n this.fetchFileInfoWithHeadRequest();\n }\n async fetchFileInfoWithHeadRequest() {\n debug('_fetchSizeWithHeadRequest()');\n if (this.rangeRequestClient.getHeadInfo) {\n const info = await this.rangeRequestClient.getHeadInfo();\n if (info.size) {\n debug(`MIME-type=${info.mimeType}, content-length=${info.size}, accept-partial-requests=${info.acceptPartialRequests}`);\n return info;\n }\n }\n // Content-Length not provided by the server, fallback to\n // GET requests.\n debug('Content-Length not provided by the server, fallback to GET requests');\n return this.fetchFileInfoWithGetRequest();\n }\n async fetchFileInfoWithGetRequest() {\n const range = roundRange([0, this.config.initialChunkSize], this.config.minimumChunkSize);\n const response = await this.rangeRequestClient.getResponse('GET', range);\n debug(`_fetchSizeWithGetRequest response: contentRange=[${response.contentRange?.firstBytePosition}-${response.contentRange?.lastBytePosition}/${response.contentRange?.instanceLength}]`);\n if (!response.contentRange) {\n throw new Error('Failed to resolve content range (file size)');\n }\n return response;\n }\n}\n//# sourceMappingURL=range-request-factory.js.map","import { AbstractTokenizer } from 'strtok3';\nimport { ChunkedFileData } from './chunked-file-data.js';\nimport initDebug from 'debug';\nconst debug = initDebug('range-request-reader');\n/**\n * RangeRequestTokenizer is tokenizer which is an adapter for range-request clients.\n * Typically, HTTP clients implementing the HTTP Range Requests (https://tools.ietf.org/html/rfc7233)\n *\n * Inspired by \"XHR Reader\" written by António Afonso\n * https://github.com/aadsm/jsmediatags/blob/master/src/XhrFileReader.js\n */\nexport class RangeRequestTokenizer extends AbstractTokenizer {\n constructor(rangeRequestClient, options) {\n super({ fileInfo: options.fileInfo });\n this.rangeRequestClient = rangeRequestClient;\n this.options = options;\n this.fileInfo = options.fileInfo;\n if (Number.isNaN(options.minimumChunkSize)) {\n throw new Error('minimumChunkSize must be a number');\n }\n this._fileData = new ChunkedFileData();\n this.options.abortSignal?.addEventListener('abort', () => {\n this.abort();\n });\n }\n setPosition(position) {\n this.position = position;\n }\n /**\n * Read portion from stream\n * @param uint8array - Target `Uint8Array`\n * @param options - Additional read options\n * @returns Promise with number of bytes read\n */\n async readBuffer(uint8array, options) {\n if (options?.position) {\n this.position = options.position;\n }\n const length = await this.peekBuffer(uint8array, options);\n this.position += length;\n return length;\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param uint8array - Target `Uint8Array` to fill with data peek from the tokenizer-stream\n * @param options - Additional read options\n * @returns Promise with number of bytes read\n */\n async peekBuffer(uint8array, options) {\n let length = uint8array.length;\n let offset = 0;\n let position = this.position;\n if (options) {\n if (options.position) {\n position = options.position;\n }\n if (Number.isInteger(options.offset)) {\n offset = options.offset;\n }\n if (options.length) {\n length = options.length;\n }\n else {\n length -= offset;\n }\n }\n if (length === 0) {\n return 0;\n }\n debug(`peekBuffer position=${position} length=${length}`);\n if (!this.fileInfo)\n throw new Error('File-info missing');\n const lastPos = Math.min(this.fileInfo.size - 1, position + length - 1);\n return this.loadRange([position, lastPos]).then(() => {\n this._fileData.readToBuffer(uint8array, offset, position, Math.min(this.fileInfo.size, length));\n return length;\n });\n }\n /**\n * Ignore number of bytes, advances the pointer in under tokenizer-stream.\n * @param length - Number of bytes to skip (ignore)\n * @return actual number of bytes ignored\n */\n async ignore(length) {\n const bytesLeft = this.fileInfo.size - this.position;\n if (length <= bytesLeft) {\n this.position += length;\n return length;\n }\n this.position += bytesLeft;\n return bytesLeft;\n }\n async abort() {\n this.rangeRequestClient.abort();\n }\n supportsRandomAccess() {\n return true;\n }\n async loadRange(range) {\n if (range[0] > (this.fileInfo.size - 1)) {\n throw new Error('End-Of-File');\n }\n debug(`request range ${range[0]}..${range[1]}`);\n debug(`adjusted range ${range[0]}..${range[1]}`);\n if (this._fileData.hasDataRange(range[0], range[1])) {\n debug('Read from cache');\n return;\n }\n // Always download in multiples of CHUNK_SIZE. If we're going to make a\n // request might as well get a chunk that makes sense. The big cost is\n // establishing the connection so getting 10bytes or 1K doesn't really\n // make a difference.\n range = roundRange(range, this.options.minimumChunkSize);\n // Upper range should not be greater than max file size\n range[1] = Math.min(this.fileInfo.size - 1, range[1]);\n debug(`blocked range: ${range[0]}..${range[1]}`);\n return this.rangeRequestClient.getResponse('GET', range).then(response => {\n return response.arrayBuffer().then(data => {\n this._fileData.addData(range[0], data);\n });\n });\n }\n}\nexport function roundRange(range, minimumChunkSize) {\n const length = range[1] - range[0] + 1;\n // const newLength = Math.ceil(length / minimum_chunk_size) * minimum_chunk_size;\n const newLength = Math.max(minimumChunkSize, length);\n return [range[0], range[0] + newLength - 1];\n}\n/**\n * Convert HTTP range header value to IContentRangeType\n * @param contentRange - content range\n */\nexport function parseContentRange(contentRange) {\n if (!contentRange) {\n throw new Error('Content range must be provided');\n }\n debug(`parseContentRange response: contentRange=${contentRange}`);\n const parsedContentRange = contentRange.match(/bytes (\\d+)-(\\d+)\\/(?:(\\d+)|\\*)/i);\n if (!parsedContentRange) {\n throw new Error(`FIXME: Unknown Content-Range syntax: ${contentRange}`);\n }\n return {\n firstBytePosition: Number.parseInt(parsedContentRange[1], 10),\n lastBytePosition: Number.parseInt(parsedContentRange[2], 10),\n instanceLength: parsedContentRange[3] ? Number.parseInt(parsedContentRange[3], 10) : undefined\n };\n}\n//# sourceMappingURL=range-request-tokenizer.js.map","import { stat as fsStat } from 'node:fs/promises';\nimport { fromStream as coreFromStream } from './core.js';\nimport { FileTokenizer } from \"./FileTokenizer.js\";\nexport { FileTokenizer } from './FileTokenizer.js';\nexport * from './core.js';\n/**\n * Construct ReadStreamTokenizer from given Stream.\n * Will set fileSize, if provided given Stream has set the .path property.\n * @param stream - Node.js Stream.Readable\n * @param options - Pass additional file information to the tokenizer\n * @returns Tokenizer\n */\nexport async function fromStream(stream, options) {\n const rst = coreFromStream(stream, options);\n if (stream.path) {\n const stat = await fsStat(stream.path);\n rst.fileInfo.path = stream.path;\n rst.fileInfo.size = stat.size;\n }\n return rst;\n}\nexport const fromFile = FileTokenizer.fromFile;\n","import { StreamReader, WebStreamReader } from 'peek-readable';\nimport { ReadStreamTokenizer } from './ReadStreamTokenizer.js';\nimport { BufferTokenizer } from './BufferTokenizer.js';\nexport { EndOfStreamError } from 'peek-readable';\nexport { AbstractTokenizer } from './AbstractTokenizer.js';\n/**\n * Construct ReadStreamTokenizer from given Stream.\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param stream - Read from Node.js Stream.Readable\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromStream(stream, options) {\n return new ReadStreamTokenizer(new StreamReader(stream), options);\n}\n/**\n * Construct ReadStreamTokenizer from given ReadableStream (WebStream API).\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param webStream - Read from Node.js Stream.Readable (must be a byte stream)\n * @param options - Tokenizer options\n * @returns ReadStreamTokenizer\n */\nexport function fromWebStream(webStream, options) {\n return new ReadStreamTokenizer(new WebStreamReader(webStream), options);\n}\n/**\n * Construct ReadStreamTokenizer from given Buffer.\n * @param uint8Array - Uint8Array to tokenize\n * @param options - Tokenizer options\n * @returns BufferTokenizer\n */\nexport function fromBuffer(uint8Array, options) {\n return new BufferTokenizer(uint8Array, options);\n}\n","export { EndOfStreamError } from './EndOfStreamError.js';\nexport { StreamReader } from './StreamReader.js';\nexport { WebStreamReader } from './WebStreamReader.js';\n","export const defaultMessages = 'End-Of-Stream';\n/**\n * Thrown on read operation of the end of file or stream has been reached\n */\nexport class EndOfStreamError extends Error {\n constructor() {\n super(defaultMessages);\n }\n}\n","import { EndOfStreamError } from './EndOfStreamError.js';\nimport { Deferred } from './Deferred.js';\nimport { AbstractStreamReader } from \"./AbstractStreamReader.js\";\nexport { EndOfStreamError } from './EndOfStreamError.js';\n/**\n * Node.js Readable Stream Reader\n * Ref: https://nodejs.org/api/stream.html#readable-streams\n */\nexport class StreamReader extends AbstractStreamReader {\n constructor(s) {\n super();\n this.s = s;\n /**\n * Deferred used for postponed read request (as not data is yet available to read)\n */\n this.deferred = null;\n if (!s.read || !s.once) {\n throw new Error('Expected an instance of stream.Readable');\n }\n this.s.once('end', () => this.reject(new EndOfStreamError()));\n this.s.once('error', err => this.reject(err));\n this.s.once('close', () => this.reject(new Error('Stream closed')));\n }\n /**\n * Read chunk from stream\n * @param buffer Target Uint8Array (or Buffer) to store data read from stream in\n * @param offset Offset target\n * @param length Number of bytes to read\n * @returns Number of bytes read\n */\n async readFromStream(buffer, offset, length) {\n if (this.endOfStream) {\n return 0;\n }\n const readBuffer = this.s.read(length);\n if (readBuffer) {\n buffer.set(readBuffer, offset);\n return readBuffer.length;\n }\n const request = {\n buffer,\n offset,\n length,\n deferred: new Deferred()\n };\n this.deferred = request.deferred;\n this.s.once('readable', () => {\n this.readDeferred(request);\n });\n return request.deferred.promise;\n }\n /**\n * Process deferred read request\n * @param request Deferred read request\n */\n readDeferred(request) {\n const readBuffer = this.s.read(request.length);\n if (readBuffer) {\n request.buffer.set(readBuffer, request.offset);\n request.deferred.resolve(readBuffer.length);\n this.deferred = null;\n }\n else {\n this.s.once('readable', () => {\n this.readDeferred(request);\n });\n }\n }\n reject(err) {\n this.endOfStream = true;\n if (this.deferred) {\n this.deferred.reject(err);\n this.deferred = null;\n }\n }\n async abort() {\n this.reject(new Error('abort'));\n }\n async close() {\n return this.abort();\n }\n}\n","export class Deferred {\n constructor() {\n this.resolve = () => null;\n this.reject = () => null;\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n}\n","import { EndOfStreamError } from \"./EndOfStreamError.js\";\nexport class AbstractStreamReader {\n constructor() {\n /**\n * Maximum request length on read-stream operation\n */\n this.maxStreamReadSize = 1 * 1024 * 1024;\n this.endOfStream = false;\n /**\n * Store peeked data\n * @type {Array}\n */\n this.peekQueue = [];\n }\n async peek(uint8Array, offset, length) {\n const bytesRead = await this.read(uint8Array, offset, length);\n this.peekQueue.push(uint8Array.subarray(offset, offset + bytesRead)); // Put read data back to peek buffer\n return bytesRead;\n }\n async read(buffer, offset, length) {\n if (length === 0) {\n return 0;\n }\n let bytesRead = this.readFromPeekBuffer(buffer, offset, length);\n bytesRead += await this.readRemainderFromStream(buffer, offset + bytesRead, length - bytesRead);\n if (bytesRead === 0) {\n throw new EndOfStreamError();\n }\n return bytesRead;\n }\n /**\n * Read chunk from stream\n * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\n * @param offset - Offset target\n * @param length - Number of bytes to read\n * @returns Number of bytes read\n */\n readFromPeekBuffer(buffer, offset, length) {\n let remaining = length;\n let bytesRead = 0;\n // consume peeked data first\n while (this.peekQueue.length > 0 && remaining > 0) {\n const peekData = this.peekQueue.pop(); // Front of queue\n if (!peekData)\n throw new Error('peekData should be defined');\n const lenCopy = Math.min(peekData.length, remaining);\n buffer.set(peekData.subarray(0, lenCopy), offset + bytesRead);\n bytesRead += lenCopy;\n remaining -= lenCopy;\n if (lenCopy < peekData.length) {\n // remainder back to queue\n this.peekQueue.push(peekData.subarray(lenCopy));\n }\n }\n return bytesRead;\n }\n async readRemainderFromStream(buffer, offset, initialRemaining) {\n let remaining = initialRemaining;\n let bytesRead = 0;\n // Continue reading from stream if required\n while (remaining > 0 && !this.endOfStream) {\n const reqLen = Math.min(remaining, this.maxStreamReadSize);\n const chunkLen = await this.readFromStream(buffer, offset + bytesRead, reqLen);\n if (chunkLen === 0)\n break;\n bytesRead += chunkLen;\n remaining -= chunkLen;\n }\n return bytesRead;\n }\n}\n","import { EndOfStreamError } from './EndOfStreamError.js';\nexport { EndOfStreamError } from './EndOfStreamError.js';\nimport { AbstractStreamReader } from \"./AbstractStreamReader.js\";\n/**\n * Read from a WebStream\n * Reference: https://nodejs.org/api/webstreams.html#class-readablestreambyobreader\n */\nexport class WebStreamReader extends AbstractStreamReader {\n constructor(stream) {\n super();\n this.reader = stream.getReader({ mode: 'byob' });\n }\n async readFromStream(buffer, offset, length) {\n if (this.endOfStream) {\n throw new EndOfStreamError();\n }\n const result = await this.reader.read(new Uint8Array(length));\n if (result.done) {\n this.endOfStream = result.done;\n }\n if (result.value) {\n buffer.set(result.value, offset);\n return result.value.byteLength;\n }\n return 0;\n }\n abort() {\n return this.reader.cancel(); // Signals a loss of interest in the stream by a consumer\n }\n async close() {\n await this.abort();\n this.reader.releaseLock();\n }\n}\n","import { AbstractTokenizer } from './AbstractTokenizer.js';\nimport { EndOfStreamError } from 'peek-readable';\nconst maxBufferSize = 256000;\nexport class ReadStreamTokenizer extends AbstractTokenizer {\n /**\n * Constructor\n * @param streamReader stream-reader to read from\n * @param options Tokenizer options\n */\n constructor(streamReader, options) {\n super(options);\n this.streamReader = streamReader;\n this.fileInfo = options?.fileInfo ?? {};\n }\n /**\n * Read buffer from tokenizer\n * @param uint8Array - Target Uint8Array to fill with data read from the tokenizer-stream\n * @param options - Read behaviour options\n * @returns Promise with number of bytes read\n */\n async readBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n const skipBytes = normOptions.position - this.position;\n if (skipBytes > 0) {\n await this.ignore(skipBytes);\n return this.readBuffer(uint8Array, options);\n }\n if (skipBytes < 0) {\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n }\n if (normOptions.length === 0) {\n return 0;\n }\n const bytesRead = await this.streamReader.read(uint8Array, normOptions.offset, normOptions.length);\n this.position += bytesRead;\n if ((!options || !options.mayBeLess) && bytesRead < normOptions.length) {\n throw new EndOfStreamError();\n }\n return bytesRead;\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param uint8Array - Uint8Array (or Buffer) to write data to\n * @param options - Read behaviour options\n * @returns Promise with number of bytes peeked\n */\n async peekBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n let bytesRead = 0;\n if (normOptions.position) {\n const skipBytes = normOptions.position - this.position;\n if (skipBytes > 0) {\n const skipBuffer = new Uint8Array(normOptions.length + skipBytes);\n bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: normOptions.mayBeLess });\n uint8Array.set(skipBuffer.subarray(skipBytes), normOptions.offset);\n return bytesRead - skipBytes;\n }\n if (skipBytes < 0) {\n throw new Error('Cannot peek from a negative offset in a stream');\n }\n }\n if (normOptions.length > 0) {\n try {\n bytesRead = await this.streamReader.peek(uint8Array, normOptions.offset, normOptions.length);\n }\n catch (err) {\n if (options?.mayBeLess && err instanceof EndOfStreamError) {\n return 0;\n }\n throw err;\n }\n if ((!normOptions.mayBeLess) && bytesRead < normOptions.length) {\n throw new EndOfStreamError();\n }\n }\n return bytesRead;\n }\n async ignore(length) {\n // debug(`ignore ${this.position}...${this.position + length - 1}`);\n const bufSize = Math.min(maxBufferSize, length);\n const buf = new Uint8Array(bufSize);\n let totBytesRead = 0;\n while (totBytesRead < length) {\n const remaining = length - totBytesRead;\n const bytesRead = await this.readBuffer(buf, { length: Math.min(bufSize, remaining) });\n if (bytesRead < 0) {\n return bytesRead;\n }\n totBytesRead += bytesRead;\n }\n return totBytesRead;\n }\n abort() {\n return this.streamReader.abort();\n }\n supportsRandomAccess() {\n return false;\n }\n}\n","import { EndOfStreamError } from 'peek-readable';\n/**\n * Core tokenizer\n */\nexport class AbstractTokenizer {\n /**\n * Constructor\n * @param options Tokenizer options\n * @protected\n */\n constructor(options) {\n this.numBuffer = new Uint8Array(8);\n /**\n * Tokenizer-stream position\n */\n this.position = 0;\n this.onClose = options?.onClose;\n if (options?.abortSignal) {\n options.abortSignal.addEventListener('abort', () => {\n this.abort();\n });\n }\n }\n /**\n * Read a token from the tokenizer-stream\n * @param token - The token to read\n * @param position - If provided, the desired position in the tokenizer-stream\n * @returns Promise with token data\n */\n async readToken(token, position = this.position) {\n const uint8Array = new Uint8Array(token.len);\n const len = await this.readBuffer(uint8Array, { position });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(uint8Array, 0);\n }\n /**\n * Peek a token from the tokenizer-stream.\n * @param token - Token to peek from the tokenizer-stream.\n * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.\n * @returns Promise with token data\n */\n async peekToken(token, position = this.position) {\n const uint8Array = new Uint8Array(token.len);\n const len = await this.peekBuffer(uint8Array, { position });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(uint8Array, 0);\n }\n /**\n * Read a numeric token from the stream\n * @param token - Numeric token\n * @returns Promise with number\n */\n async readNumber(token) {\n const len = await this.readBuffer(this.numBuffer, { length: token.len });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(this.numBuffer, 0);\n }\n /**\n * Read a numeric token from the stream\n * @param token - Numeric token\n * @returns Promise with number\n */\n async peekNumber(token) {\n const len = await this.peekBuffer(this.numBuffer, { length: token.len });\n if (len < token.len)\n throw new EndOfStreamError();\n return token.get(this.numBuffer, 0);\n }\n /**\n * Ignore number of bytes, advances the pointer in under tokenizer-stream.\n * @param length - Number of bytes to ignore\n * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available\n */\n async ignore(length) {\n if (this.fileInfo.size !== undefined) {\n const bytesLeft = this.fileInfo.size - this.position;\n if (length > bytesLeft) {\n this.position += bytesLeft;\n return bytesLeft;\n }\n }\n this.position += length;\n return length;\n }\n async close() {\n await this.abort();\n await this.onClose?.();\n }\n normalizeOptions(uint8Array, options) {\n if (options && options.position !== undefined && options.position < this.position) {\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n }\n if (options) {\n return {\n mayBeLess: options.mayBeLess === true,\n offset: options.offset ? options.offset : 0,\n length: options.length ? options.length : (uint8Array.length - (options.offset ? options.offset : 0)),\n position: options.position ? options.position : this.position\n };\n }\n return {\n mayBeLess: false,\n offset: 0,\n length: uint8Array.length,\n position: this.position\n };\n }\n abort() {\n return Promise.resolve(); // Ignore abort signal\n }\n}\n","import { EndOfStreamError } from 'peek-readable';\nimport { AbstractTokenizer } from './AbstractTokenizer.js';\nexport class BufferTokenizer extends AbstractTokenizer {\n /**\n * Construct BufferTokenizer\n * @param uint8Array - Uint8Array to tokenize\n * @param options Tokenizer options\n */\n constructor(uint8Array, options) {\n super(options);\n this.uint8Array = uint8Array;\n this.fileInfo = { ...options?.fileInfo ?? {}, ...{ size: uint8Array.length } };\n }\n /**\n * Read buffer from tokenizer\n * @param uint8Array - Uint8Array to tokenize\n * @param options - Read behaviour options\n * @returns {Promise<number>}\n */\n async readBuffer(uint8Array, options) {\n if (options?.position) {\n if (options.position < this.position) {\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\n }\n this.position = options.position;\n }\n const bytesRead = await this.peekBuffer(uint8Array, options);\n this.position += bytesRead;\n return bytesRead;\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param uint8Array\n * @param options - Read behaviour options\n * @returns {Promise<number>}\n */\n async peekBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n const bytes2read = Math.min(this.uint8Array.length - normOptions.position, normOptions.length);\n if ((!normOptions.mayBeLess) && bytes2read < normOptions.length) {\n throw new EndOfStreamError();\n }\n uint8Array.set(this.uint8Array.subarray(normOptions.position, normOptions.position + bytes2read), normOptions.offset);\n return bytes2read;\n }\n close() {\n return super.close();\n }\n supportsRandomAccess() {\n return true;\n }\n setPosition(position) {\n this.position = position;\n }\n}\n","import { AbstractTokenizer } from './AbstractTokenizer.js';\nimport { EndOfStreamError } from 'peek-readable';\nimport { open as fsOpen } from 'node:fs/promises';\nexport class FileTokenizer extends AbstractTokenizer {\n /**\n * Create tokenizer from provided file path\n * @param sourceFilePath File path\n */\n static async fromFile(sourceFilePath) {\n const fileHandle = await fsOpen(sourceFilePath, 'r');\n const stat = await fileHandle.stat();\n return new FileTokenizer(fileHandle, { fileInfo: { path: sourceFilePath, size: stat.size } });\n }\n constructor(fileHandle, options) {\n super(options);\n this.fileHandle = fileHandle;\n this.fileInfo = options.fileInfo;\n }\n /**\n * Read buffer from file\n * @param uint8Array - Uint8Array to write result to\n * @param options - Read behaviour options\n * @returns Promise number of bytes read\n */\n async readBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n this.position = normOptions.position;\n if (normOptions.length === 0)\n return 0;\n const res = await this.fileHandle.read(uint8Array, normOptions.offset, normOptions.length, normOptions.position);\n this.position += res.bytesRead;\n if (res.bytesRead < normOptions.length && (!options || !options.mayBeLess)) {\n throw new EndOfStreamError();\n }\n return res.bytesRead;\n }\n /**\n * Peek buffer from file\n * @param uint8Array - Uint8Array (or Buffer) to write data to\n * @param options - Read behaviour options\n * @returns Promise number of bytes read\n */\n async peekBuffer(uint8Array, options) {\n const normOptions = this.normalizeOptions(uint8Array, options);\n const res = await this.fileHandle.read(uint8Array, normOptions.offset, normOptions.length, normOptions.position);\n if ((!normOptions.mayBeLess) && res.bytesRead < normOptions.length) {\n throw new EndOfStreamError();\n }\n return res.bytesRead;\n }\n async close() {\n await this.fileHandle.close();\n return super.close();\n }\n setPosition(position) {\n this.position = position;\n }\n supportsRandomAccess() {\n return true;\n }\n}\n","const NOT_FOUND = -1;\n/**\n * Keeps track of data chunks (partial downloaded file fragments).\n *\n * Based on \"ChunkedFileData\" written by António Afonso\n * https://github.com/aadsm/jsmediatags/blob/master/src/ChunkedFileData.js\n */\nexport class ChunkedFileData {\n constructor() {\n this._fileData = [];\n }\n /**\n * Adds data to the file storage at a specific offset.\n */\n addData(offset, data) {\n const offsetEnd = offset + data.byteLength - 1;\n const chunkRange = this._getChunkRange(offset, offsetEnd);\n if (chunkRange.startIx === NOT_FOUND) {\n this._fileData.splice(chunkRange.insertIx || 0, 0, {\n offset,\n data\n });\n }\n else {\n // If the data to add collides with existing chunks we prepend and\n // append data from the half colliding chunks to make the collision at\n // 100%. The new data can then replace all the colliding chunkes.\n const firstChunk = this._fileData[chunkRange.startIx];\n const lastChunk = this._fileData[chunkRange.endIx];\n const needsPrepend = offset > firstChunk.offset;\n const needsAppend = offsetEnd < lastChunk.offset + lastChunk.data.byteLength - 1;\n const chunk = {\n offset: Math.min(offset, firstChunk.offset),\n data\n };\n if (needsPrepend) {\n const slicedData = firstChunk.data.slice(0, offset - firstChunk.offset);\n chunk.data = this._concatData(slicedData, data);\n }\n if (needsAppend) {\n // Use the lastChunk because the slice logic is easier to handle.\n const slicedData = chunk.data.slice(0, lastChunk.offset - chunk.offset);\n chunk.data = this._concatData(slicedData, lastChunk.data);\n }\n this._fileData.splice(chunkRange.startIx, chunkRange.endIx - chunkRange.startIx + 1, chunk);\n }\n }\n hasDataRange(offsetStart, offsetEnd) {\n for (let i = 0; i < this._fileData.length; i++) {\n const chunk = this._fileData[i];\n if (offsetEnd < chunk.offset) {\n return false;\n }\n if (offsetStart >= chunk.offset && offsetEnd < chunk.offset + chunk.data.byteLength) {\n return true;\n }\n }\n return false;\n }\n readToBuffer(buffer, offset, position, length) {\n const _pos_offset = position;\n let dataChunk;\n for (let i = 0; i < this._fileData.length; i++) {\n const dataChunkStart = this._fileData[i].offset;\n const dataChunkEnd = dataChunkStart + this._fileData[i].data.byteLength;\n if (_pos_offset >= dataChunkStart && _pos_offset < dataChunkEnd) {\n dataChunk = this._fileData[i];\n const chunkOffset = _pos_offset - dataChunkStart;\n let chunkLength = Math.min(length, dataChunk.data.byteLength - chunkOffset);\n buffer.set(dataChunk.data.subarray(chunkOffset, chunkOffset + chunkLength), offset);\n if (chunkLength < length) {\n chunkLength += this.readToBuffer(buffer, offset + chunkLength, position + chunkLength, length - chunkLength);\n }\n return chunkLength;\n }\n }\n return 0;\n }\n _concatData(buffer1, buffer2) {\n const tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp;\n }\n /**\n * Finds the chunk range that overlaps the [offsetStart-1,offsetEnd+1] range.\n * When a chunk is adjacent to the offset we still consider it part of the\n * range (this is the situation of offsetStart-1 or offsetEnd+1).\n * When no chunks are found `insertIx` denotes the index where the data\n * should be inserted in the data list (startIx == NOT_FOUND and endIX ==\n * NOT_FOUND).\n */\n _getChunkRange(offsetStart, offsetEnd) {\n let startChunkIx = NOT_FOUND;\n let endChunkIx = NOT_FOUND;\n let insertIx = 0;\n // Could use binary search but not expecting that many blocks to exist.\n for (let i = 0; i < this._fileData.length; i++, insertIx = i) {\n const chunkOffsetStart = this._fileData[i].offset;\n const chunkOffsetEnd = chunkOffsetStart + this._fileData[i].data.byteLength;\n if (offsetEnd < chunkOffsetStart - 1) {\n // This offset range doesn't overlap with any chunks.\n break;\n }\n // If it is adjacent we still consider it part of the range because\n // we're going end up with a single block with all contiguous data.\n if (offsetStart <= chunkOffsetEnd + 1 &&\n offsetEnd >= chunkOffsetStart - 1) {\n startChunkIx = i;\n break;\n }\n }\n // No starting chunk was found, meaning that the offset is either before\n // or after the current stored chunks.\n if (startChunkIx === NOT_FOUND) {\n return {\n startIx: NOT_FOUND,\n endIx: NOT_FOUND,\n insertIx\n };\n }\n // Find the ending chunk.\n for (let i = startChunkIx; i < this._fileData.length; i++) {\n const chunkOffsetStart = this._fileData[i].offset;\n const chunkOffsetEnd = chunkOffsetStart + this._fileData[i].data.byteLength;\n if (offsetEnd >= chunkOffsetStart - 1) {\n // Candidate for the end chunk, it doesn't mean it is yet.\n endChunkIx = i;\n }\n if (offsetEnd <= chunkOffsetEnd + 1) {\n break;\n }\n }\n if (endChunkIx === NOT_FOUND) {\n endChunkIx = startChunkIx;\n }\n return {\n startIx: startChunkIx,\n endIx: endChunkIx\n };\n }\n}\n//# sourceMappingURL=chunked-file-data.js.map","import { RangeRequestFactory } from './range-request-factory.js';\nexport { parseContentRange } from './range-request-tokenizer.js';\n/**\n * Construct range-tokenizer from range-request-client and config\n * @param rangeRequestClient - HTTP range request client\n * @param abortController - AbortController\n * @param config - Configuration\n * @return Tokenizer\n */\nexport function tokenizer(rangeRequestClient, config) {\n const factory = new RangeRequestFactory(rangeRequestClient);\n return factory.initTokenizer(config);\n}\n//# sourceMappingURL=index.js.map","import { RangeRequestTokenizer, roundRange } from './range-request-tokenizer.js';\nimport initDebug from 'debug';\nconst debug = initDebug('range-request-reader');\nexport class RangeRequestFactory {\n constructor(rangeRequestClient) {\n this.rangeRequestClient = rangeRequestClient;\n this.config = {\n avoidHeadRequests: false,\n initialChunkSize: 4 * 1024,\n minimumChunkSize: 1024\n };\n }\n async initTokenizer(config) {\n if (config) {\n this.config = { ...this.config, ...config };\n }\n const headRequestInfo = await this.getHeadRequestInfo();\n if (!headRequestInfo.acceptPartialRequests) {\n throw new Error('Server does not accept partial requests');\n }\n return new RangeRequestTokenizer(this.rangeRequestClient, {\n fileInfo: headRequestInfo,\n minimumChunkSize: this.config.minimumChunkSize,\n abortSignal: config?.abortSignal\n });\n }\n /**\n * Get file information, an HTTP-client may implement this doing a HEAD request\n * @return Promise with head-request-info, extending tokenizer file-info.\n */\n getHeadRequestInfo() {\n return this.config.avoidHeadRequests ?\n this.fetchFileInfoWithGetRequest() :\n this.fetchFileInfoWithHeadRequest();\n }\n async fetchFileInfoWithHeadRequest() {\n debug('_fetchSizeWithHeadRequest()');\n if (this.rangeRequestClient.getHeadInfo) {\n const info = await this.rangeRequestClient.getHeadInfo();\n if (info.size) {\n debug(`MIME-type=${info.mimeType}, content-length=${info.size}, accept-partial-requests=${info.acceptPartialRequests}`);\n return info;\n }\n }\n // Content-Length not provided by the server, fallback to\n // GET requests.\n debug('Content-Length not provided by the server, fallback to GET requests');\n return this.fetchFileInfoWithGetRequest();\n }\n async fetchFileInfoWithGetRequest() {\n const range = roundRange([0, this.config.initialChunkSize], this.config.minimumChunkSize);\n const response = await this.rangeRequestClient.getResponse('GET', range);\n debug(`_fetchSizeWithGetRequest response: contentRange=[${response.contentRange?.firstBytePosition}-${response.contentRange?.lastBytePosition}/${response.contentRange?.instanceLength}]`);\n if (!response.contentRange) {\n throw new Error('Failed to resolve content range (file size)');\n }\n return response;\n }\n}\n//# sourceMappingURL=range-request-factory.js.map","import { AbstractTokenizer } from 'strtok3';\nimport { ChunkedFileData } from './chunked-file-data.js';\nimport initDebug from 'debug';\nconst debug = initDebug('range-request-reader');\n/**\n * RangeRequestTokenizer is tokenizer which is an adapter for range-request clients.\n * Typically, HTTP clients implementing the HTTP Range Requests (https://tools.ietf.org/html/rfc7233)\n *\n * Inspired by \"XHR Reader\" written by António Afonso\n * https://github.com/aadsm/jsmediatags/blob/master/src/XhrFileReader.js\n */\nexport class RangeRequestTokenizer extends AbstractTokenizer {\n constructor(rangeRequestClient, options) {\n super({ fileInfo: options.fileInfo });\n this.rangeRequestClient = rangeRequestClient;\n this.options = options;\n this.fileInfo = options.fileInfo;\n if (Number.isNaN(options.minimumChunkSize)) {\n throw new Error('minimumChunkSize must be a number');\n }\n this._fileData = new ChunkedFileData();\n this.options.abortSignal?.addEventListener('abort', () => {\n this.abort();\n });\n }\n setPosition(position) {\n this.position = position;\n }\n /**\n * Read portion from stream\n * @param uint8array - Target `Uint8Array`\n * @param options - Additional read options\n * @returns Promise with number of bytes read\n */\n async readBuffer(uint8array, options) {\n if (options?.position) {\n this.position = options.position;\n }\n const length = await this.peekBuffer(uint8array, options);\n this.position += length;\n return length;\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param uint8array - Target `Uint8Array` to fill with data peek from the tokenizer-stream\n * @param options - Additional read options\n * @returns Promise with number of bytes read\n */\n async peekBuffer(uint8array, options) {\n const offset = 0;\n if (!this.fileInfo)\n throw new Error('File-info missing');\n const size = this.fileInfo.size;\n const position = options?.position !== undefined ? options.position : this.position;\n // requested length\n const requested = options?.length !== undefined ? options.length : (uint8array.length - offset);\n if (requested <= 0)\n return 0;\n const available = size - position;\n // Past EOF\n if (available <= 0) {\n if (options?.mayBeLess)\n return 0;\n throw new RangeError(`peekBuffer position ${position} is beyond EOF ${size}`);\n }\n const length = options?.mayBeLess ? Math.min(requested, available) : requested;\n if (!options?.mayBeLess && length > available) {\n throw new RangeError(`peekBuffer length ${length} exceeds remaining ${available} at position ${position}`);\n }\n const lastPos = position + length - 1;\n await this.loadRange([position, lastPos]);\n this._fileData.readToBuffer(uint8array, offset, position, length);\n return length;\n }\n /**\n * Ignore number of bytes, advances the pointer in under tokenizer-stream.\n * @param length - Number of bytes to skip (ignore)\n * @return actual number of bytes ignored\n */\n async ignore(length) {\n const bytesLeft = this.fileInfo.size - this.position;\n if (length <= bytesLeft) {\n this.position += length;\n return length;\n }\n this.position += bytesLeft;\n return bytesLeft;\n }\n async abort() {\n this.rangeRequestClient.abort();\n }\n supportsRandomAccess() {\n return true;\n }\n async loadRange(range) {\n debug(`request range ${range[0]}..${range[1]}`);\n if (range[0] > (this.fileInfo.size - 1)) {\n throw new Error('End-Of-File');\n }\n debug(`adjusted range ${range[0]}..${range[1]}`);\n if (this._fileData.hasDataRange(range[0], range[1])) {\n debug('Read from cache');\n return;\n }\n // Always download in multiples of CHUNK_SIZE. If we're going to make a\n // request might as well get a chunk that makes sense. The big cost is\n // establishing the connection so getting 10bytes or 1K doesn't really\n // make a difference.\n range = roundRange(range, this.options.minimumChunkSize);\n // Upper range should not be greater than max file size\n range[1] = Math.min(this.fileInfo.size - 1, range[1]);\n debug(`blocked range: ${range[0]}..${range[1]}`);\n return this.rangeRequestClient.getResponse('GET', range).then(response => {\n return response.arrayBuffer().then(data => {\n this._fileData.addData(range[0], data);\n });\n });\n }\n}\nexport function roundRange(range, minimumChunkSize) {\n const length = range[1] - range[0] + 1;\n // const newLength = Math.ceil(length / minimum_chunk_size) * minimum_chunk_size;\n const newLength = Math.max(minimumChunkSize, length);\n return [range[0], range[0] + newLength - 1];\n}\n/**\n * Convert HTTP range header value to IContentRangeType\n * @param contentRange - content range\n */\nexport function parseContentRange(contentRange) {\n if (!contentRange) {\n throw new Error('Content range must be provided');\n }\n debug(`parseContentRange response: contentRange=${contentRange}`);\n const parsedContentRange = contentRange.match(/bytes (\\d+)-(\\d+)\\/(?:(\\d+)|\\*)/i);\n if (!parsedContentRange) {\n throw new Error(`FIXME: Unknown Content-Range syntax: ${contentRange}`);\n }\n return {\n firstBytePosition: Number.parseInt(parsedContentRange[1], 10),\n lastBytePosition: Number.parseInt(parsedContentRange[2], 10),\n instanceLength: parsedContentRange[3] ? Number.parseInt(parsedContentRange[3], 10) : undefined\n };\n}\n//# sourceMappingURL=range-request-tokenizer.js.map","const NOT_FOUND = -1;\n/**\n * Keeps track of data chunks (partial downloaded file fragments).\n *\n * Based on \"ChunkedFileData\" written by António Afonso\n * https://github.com/aadsm/jsmediatags/blob/master/src/ChunkedFileData.js\n */\nexport class ChunkedFileData {\n constructor() {\n this._fileData = [];\n }\n /**\n * Adds data to the file storage at a specific offset.\n */\n addData(offset, data) {\n const offsetEnd = offset + data.byteLength - 1;\n const chunkRange = this._getChunkRange(offset, offsetEnd);\n if (chunkRange.startIx === NOT_FOUND) {\n this._fileData.splice(chunkRange.insertIx || 0, 0, {\n offset,\n data\n });\n }\n else {\n // If the data to add collides with existing chunks we prepend and\n // append data from the half colliding chunks to make the collision at\n // 100%. The new data can then replace all the colliding chunkes.\n const firstChunk = this._fileData[chunkRange.startIx];\n const lastChunk = this._fileData[chunkRange.endIx];\n const needsPrepend = offset > firstChunk.offset;\n const needsAppend = offsetEnd < lastChunk.offset + lastChunk.data.byteLength - 1;\n const chunk = {\n offset: Math.min(offset, firstChunk.offset),\n data\n };\n if (needsPrepend) {\n const slicedData = firstChunk.data.slice(0, offset - firstChunk.offset);\n chunk.data = this._concatData(slicedData, data);\n }\n if (needsAppend) {\n // Use the lastChunk because the slice logic is easier to handle.\n const slicedData = chunk.data.slice(0, lastChunk.offset - chunk.offset);\n chunk.data = this._concatData(slicedData, lastChunk.data);\n }\n this._fileData.splice(chunkRange.startIx, chunkRange.endIx - chunkRange.startIx + 1, chunk);\n }\n }\n hasDataRange(offsetStart, offsetEnd) {\n for (let i = 0; i < this._fileData.length; i++) {\n const chunk = this._fileData[i];\n if (offsetEnd < chunk.offset) {\n return false;\n }\n if (offsetStart >= chunk.offset && offsetEnd < chunk.offset + chunk.data.byteLength) {\n return true;\n }\n }\n return false;\n }\n readToBuffer(buffer, offset, position, length) {\n const _pos_offset = position;\n let dataChunk;\n for (let i = 0; i < this._fileData.length; i++) {\n const dataChunkStart = this._fileData[i].offset;\n const dataChunkEnd = dataChunkStart + this._fileData[i].data.byteLength;\n if (_pos_offset >= dataChunkStart && _pos_offset < dataChunkEnd) {\n dataChunk = this._fileData[i];\n const chunkOffset = _pos_offset - dataChunkStart;\n let chunkLength = Math.min(length, dataChunk.data.byteLength - chunkOffset);\n buffer.set(dataChunk.data.subarray(chunkOffset, chunkOffset + chunkLength), offset);\n if (chunkLength < length) {\n chunkLength += this.readToBuffer(buffer, offset + chunkLength, position + chunkLength, length - chunkLength);\n }\n return chunkLength;\n }\n }\n return 0;\n }\n _concatData(buffer1, buffer2) {\n const tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp;\n }\n /**\n * Finds the chunk range that overlaps the [offsetStart-1,offsetEnd+1] range.\n * When a chunk is adjacent to the offset we still consider it part of the\n * range (this is the situation of offsetStart-1 or offsetEnd+1).\n * When no chunks are found `insertIx` denotes the index where the data\n * should be inserted in the data list (startIx == NOT_FOUND and endIX ==\n * NOT_FOUND).\n */\n _getChunkRange(offsetStart, offsetEnd) {\n let startChunkIx = NOT_FOUND;\n let endChunkIx = NOT_FOUND;\n let insertIx = 0;\n // Could use binary search but not expecting that many blocks to exist.\n for (let i = 0; i < this._fileData.length; i++, insertIx = i) {\n const chunkOffsetStart = this._fileData[i].offset;\n const chunkOffsetEnd = chunkOffsetStart + this._fileData[i].data.byteLength;\n if (offsetEnd < chunkOffsetStart - 1) {\n // This offset range doesn't overlap with any chunks.\n break;\n }\n // If it is adjacent we still consider it part of the range because\n // we're going end up with a single block with all contiguous data.\n if (offsetStart <= chunkOffsetEnd + 1 &&\n offsetEnd >= chunkOffsetStart - 1) {\n startChunkIx = i;\n break;\n }\n }\n // No starting chunk was found, meaning that the offset is either before\n // or after the current stored chunks.\n if (startChunkIx === NOT_FOUND) {\n return {\n startIx: NOT_FOUND,\n endIx: NOT_FOUND,\n insertIx\n };\n }\n // Find the ending chunk.\n for (let i = startChunkIx; i < this._fileData.length; i++) {\n const chunkOffsetStart = this._fileData[i].offset;\n const chunkOffsetEnd = chunkOffsetStart + this._fileData[i].data.byteLength;\n if (offsetEnd >= chunkOffsetStart - 1) {\n // Candidate for the end chunk, it doesn't mean it is yet.\n endChunkIx = i;\n }\n if (offsetEnd <= chunkOffsetEnd + 1) {\n break;\n }\n }\n if (endChunkIx === NOT_FOUND) {\n endChunkIx = startChunkIx;\n }\n return {\n startIx: startChunkIx,\n endIx: endChunkIx\n };\n }\n}\n//# sourceMappingURL=chunked-file-data.js.map"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA,QAAI,eAAe;AACnB,QAAI,cAAc;AAClB,QAAI,eAAe;AAQnB,QAAI,cAAc;AAKlB,QAAI,eAAe;AASnB,QAAI,cAAc;AAOlB,YAAQ,SAAS;AACjB,YAAQ,QAAQA;AAUhB,aAAS,OAAQ,KAAK;AACpB,UAAI,CAAC,OAAO,OAAO,QAAQ,UAAU;AACnC,cAAM,IAAI,UAAU,0BAA0B;AAAA,MAChD;AAEA,UAAI,aAAa,IAAI;AACrB,UAAI,OAAO,IAAI;AAEf,UAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,IAAI,GAAG;AACpC,cAAM,IAAI,UAAU,cAAc;AAAA,MACpC;AAEA,UAAI,SAAS;AAGb,UAAI,cAAc,OAAO,eAAe,UAAU;AAChD,YAAI;AACJ,YAAI,SAAS,OAAO,KAAK,UAAU,EAAE,KAAK;AAE1C,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,kBAAQ,OAAO,CAAC;AAEhB,cAAI,CAAC,aAAa,KAAK,KAAK,GAAG;AAC7B,kBAAM,IAAI,UAAU,wBAAwB;AAAA,UAC9C;AAEA,oBAAU,OAAO,QAAQ,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC1D;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AA/BS;AAyCT,aAASA,OAAO,QAAQ;AACtB,UAAI,CAAC,QAAQ;AACX,cAAM,IAAI,UAAU,6BAA6B;AAAA,MACnD;AAGA,UAAI,SAAS,OAAO,WAAW,WAC3B,eAAe,MAAM,IACrB;AAEJ,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,UAAI,QAAQ,OAAO,QAAQ,GAAG;AAC9B,UAAI,OAAO,UAAU,KACjB,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,IAC5B,OAAO,KAAK;AAEhB,UAAI,CAAC,YAAY,KAAK,IAAI,GAAG;AAC3B,cAAM,IAAI,UAAU,oBAAoB;AAAA,MAC1C;AAEA,UAAI,MAAM,IAAIC,aAAY,KAAK,YAAY,CAAC;AAG5C,UAAI,UAAU,IAAI;AAChB,YAAI;AACJ,YAAI;AACJ,YAAI;AAEJ,qBAAa,YAAY;AAEzB,eAAQ,QAAQ,aAAa,KAAK,MAAM,GAAI;AAC1C,cAAI,MAAM,UAAU,OAAO;AACzB,kBAAM,IAAI,UAAU,0BAA0B;AAAA,UAChD;AAEA,mBAAS,MAAM,CAAC,EAAE;AAClB,gBAAM,MAAM,CAAC,EAAE,YAAY;AAC3B,kBAAQ,MAAM,CAAC;AAEf,cAAI,MAAM,WAAW,CAAC,MAAM,IAAc;AAExC,oBAAQ,MAAM,MAAM,GAAG,EAAE;AAGzB,gBAAI,MAAM,QAAQ,IAAI,MAAM,IAAI;AAC9B,sBAAQ,MAAM,QAAQ,aAAa,IAAI;AAAA,YACzC;AAAA,UACF;AAEA,cAAI,WAAW,GAAG,IAAI;AAAA,QACxB;AAEA,YAAI,UAAU,OAAO,QAAQ;AAC3B,gBAAM,IAAI,UAAU,0BAA0B;AAAA,QAChD;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AA7DS,WAAAD,QAAA;AAuET,aAAS,eAAgB,KAAK;AAC5B,UAAI;AAEJ,UAAI,OAAO,IAAI,cAAc,YAAY;AAEvC,iBAAS,IAAI,UAAU,cAAc;AAAA,MACvC,WAAW,OAAO,IAAI,YAAY,UAAU;AAE1C,iBAAS,IAAI,WAAW,IAAI,QAAQ,cAAc;AAAA,MACpD;AAEA,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,aAAO;AAAA,IACT;AAhBS;AA0BT,aAAS,QAAS,KAAK;AACrB,UAAI,MAAM,OAAO,GAAG;AAGpB,UAAI,aAAa,KAAK,GAAG,GAAG;AAC1B,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,SAAS,KAAK,CAAC,YAAY,KAAK,GAAG,GAAG;AAC5C,cAAM,IAAI,UAAU,yBAAyB;AAAA,MAC/C;AAEA,aAAO,MAAM,IAAI,QAAQ,cAAc,MAAM,IAAI;AAAA,IACnD;AAbS;AAmBT,aAASC,aAAa,MAAM;AAC1B,WAAK,aAAa,uBAAO,OAAO,IAAI;AACpC,WAAK,OAAO;AAAA,IACd;AAHS,WAAAA,cAAA;AAAA;AAAA;;;AC7NT;AAAA;AAAA;AAAA;AAAA;AAwBA,QAAI,sBAAsB;AAC1B,QAAI,mBAAmB;AACvB,QAAI,cAAc;AAMlB,YAAQ,SAAS;AACjB,YAAQ,QAAQC;AAChB,YAAQ,OAAO;AAUf,aAAS,OAAQ,KAAK;AACpB,UAAI,CAAC,OAAO,OAAO,QAAQ,UAAU;AACnC,cAAM,IAAI,UAAU,0BAA0B;AAAA,MAChD;AAEA,UAAI,UAAU,IAAI;AAClB,UAAI,SAAS,IAAI;AACjB,UAAI,OAAO,IAAI;AAEf,UAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,IAAI,GAAG;AACzC,cAAM,IAAI,UAAU,cAAc;AAAA,MACpC;AAEA,UAAI,CAAC,WAAW,CAAC,oBAAoB,KAAK,OAAO,GAAG;AAClD,cAAM,IAAI,UAAU,iBAAiB;AAAA,MACvC;AAGA,UAAI,SAAS,OAAO,MAAM;AAG1B,UAAI,QAAQ;AACV,YAAI,CAAC,iBAAiB,KAAK,MAAM,GAAG;AAClC,gBAAM,IAAI,UAAU,gBAAgB;AAAA,QACtC;AAEA,kBAAU,MAAM;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AA9BS;AAwCT,aAAS,KAAM,QAAQ;AACrB,UAAI,CAAC,QAAQ;AACX,cAAM,IAAI,UAAU,6BAA6B;AAAA,MACnD;AAEA,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,aAAO,YAAY,KAAK,OAAO,YAAY,CAAC;AAAA,IAC9C;AAVS;AAoBT,aAASA,OAAO,QAAQ;AACtB,UAAI,CAAC,QAAQ;AACX,cAAM,IAAI,UAAU,6BAA6B;AAAA,MACnD;AAEA,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,UAAI,QAAQ,YAAY,KAAK,OAAO,YAAY,CAAC;AAEjD,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,UAAU,oBAAoB;AAAA,MAC1C;AAEA,UAAI,OAAO,MAAM,CAAC;AAClB,UAAI,UAAU,MAAM,CAAC;AACrB,UAAI;AAGJ,UAAI,QAAQ,QAAQ,YAAY,GAAG;AACnC,UAAI,UAAU,IAAI;AAChB,iBAAS,QAAQ,OAAO,QAAQ,CAAC;AACjC,kBAAU,QAAQ,OAAO,GAAG,KAAK;AAAA,MACnC;AAEA,aAAO,IAAI,UAAU,MAAM,SAAS,MAAM;AAAA,IAC5C;AA3BS,WAAAA,QAAA;AAkCT,aAAS,UAAW,MAAM,SAAS,QAAQ;AACzC,WAAK,OAAO;AACZ,WAAK,UAAU;AACf,WAAK,SAAS;AAAA,IAChB;AAJS;AAAA;AAAA;;;AC1IT;AAAA;;;ACAA;AAAA;AAIA,IAAAC,gBAAsB;;;ACJtB;AAAA;;;ACAA;AAAA;;;ACAA;AAAA;;;ACAA;AAAA;;;ACAA;AAAA;;;ACAA;AAAA;AACA,mBAAsB;;;ACDtB;AAAA;AAIO,IAAM,YAAY;AAAA,EACrB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,uBAAuB;AAC3B;AACO,IAAM,iBAAiB;AAAA,EAC1B,IAAI,OAAO;AACP,WAAO;AAAA,MACH,WAAW,UAAU,IAAI,OAAO,CAAC;AAAA,MACjC,gBAAgB,UAAU,IAAI,OAAO,CAAC;AAAA,MACtC,kBAAkB,UAAU,IAAI,OAAO,EAAE;AAAA,IAC7C;AAAA,EACJ;AAAA,EAAG,KAAK;AACZ;AAmBO,IAAM,uBAAuB;AAAA,EAChC,IAAI,OAAO;AACP,UAAM,QAAQ,UAAU,IAAI,OAAO,CAAC;AACpC,WAAO;AAAA,MACH,WAAW,UAAU,IAAI,OAAO,CAAC;AAAA,MACjC,YAAY,UAAU,IAAI,OAAO,CAAC;AAAA,MAClC,gBAAgB,CAAC,EAAE,QAAQ;AAAA,MAC3B,kBAAkB,UAAU,IAAI,OAAO,CAAC;AAAA,MACxC,gBAAgB,UAAU,IAAI,OAAO,EAAE;AAAA,MACvC,kBAAkB,UAAU,IAAI,OAAO,EAAE;AAAA,MACzC,gBAAgB,UAAU,IAAI,OAAO,EAAE;AAAA,MACvC,kBAAkB,UAAU,IAAI,OAAO,EAAE;AAAA,MACzC,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EAAG,KAAK;AACZ;AAaO,IAAM,mCAAmC;AAAA,EAC5C,IAAI,OAAO;AACP,WAAO;AAAA,MACH,WAAW,UAAU,IAAI,OAAO,CAAC;AAAA,MACjC,cAAc,UAAU,IAAI,OAAO,CAAC;AAAA,MACpC,0BAA0B,UAAU,IAAI,OAAO,CAAC;AAAA,MAChD,uBAAuB,UAAU,IAAI,OAAO,CAAC;AAAA,MAC7C,mBAAmB,UAAU,IAAI,OAAO,EAAE;AAAA,MAC1C,UAAU,UAAU,IAAI,OAAO,EAAE;AAAA,MACjC,mBAAmB,UAAU,IAAI,OAAO,EAAE;AAAA,MAC1C,sBAAsB,UAAU,IAAI,OAAO,EAAE;AAAA,IACjD;AAAA,EACJ;AAAA,EAAG,KAAK;AACZ;AAqBO,IAAM,aAAa;AAAA,EACtB,IAAI,OAAO;AACP,UAAM,QAAQ,UAAU,IAAI,OAAO,CAAC;AACpC,WAAO;AAAA,MACH,WAAW,UAAU,IAAI,OAAO,CAAC;AAAA,MACjC,YAAY,UAAU,IAAI,OAAO,CAAC;AAAA,MAClC,gBAAgB,CAAC,EAAE,QAAQ;AAAA,MAC3B,kBAAkB,UAAU,IAAI,OAAO,EAAE;AAAA,MACzC,gBAAgB,UAAU,IAAI,OAAO,EAAE;AAAA,MACvC,kBAAkB,UAAU,IAAI,OAAO,EAAE;AAAA,MACzC,gBAAgB,UAAU,IAAI,OAAO,EAAE;AAAA,MACvC,kBAAkB,UAAU,IAAI,OAAO,EAAE;AAAA,MACzC,mBAAmB,UAAU,IAAI,OAAO,EAAE;AAAA,MAC1C,6BAA6B,UAAU,IAAI,OAAO,EAAE;AAAA,MACpD,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EAAG,KAAK;AACZ;;;ADjHA,SAAS,iBAAiB,WAAW;AACjC,QAAM,iBAAiB,IAAI,WAAW,UAAU,GAAG;AACnD,YAAU,IAAI,gBAAgB,GAAG,SAAS;AAC1C,SAAO;AACX;AAJS;AAKT,IAAM,YAAQ,aAAAC,SAAU,mBAAmB;AAC3C,IAAM,iBAAiB,MAAM;AAC7B,IAAM,mBAAmB,iBAAiB,UAAU,cAAc;AAClE,IAAM,qBAAqB,iBAAiB,UAAU,qBAAqB;AACpE,IAAM,aAAN,MAAM,YAAW;AAAA,EAZxB,OAYwB;AAAA;AAAA;AAAA,EACpB,YAAYC,YAAW;AACnB,SAAK,YAAYA;AACjB,SAAK,aAAa,IAAI,WAAW,cAAc;AAAA,EACnD;AAAA,EACA,MAAM,QAAQ;AACV,WAAO,MAAM,KAAK,cAAc,MAAM,UAAU;AAAA,EACpD;AAAA,EACA,gBAAgB;AACZ,WAAO,KAAK,UAAU,UAAU,SAAS;AAAA,EAC7C;AAAA,EACA,MAAM,mCAAmC;AACrC,UAAM,sBAAsB,KAAK;AACjC,UAAM,cAAc,KAAK,IAAI,KAAK,MAAM,oBAAoB,SAAS,IAAI;AACzE,UAAM,SAAS,KAAK,WAAW,SAAS,GAAG,WAAW;AACtD,UAAM,KAAK,UAAU,WAAW,QAAQ,EAAE,UAAU,oBAAoB,SAAS,OAAO,YAAY,CAAC;AAGrG,aAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAEzC,UAAI,OAAO,CAAC,MAAM,mBAAmB,CAAC,KAClC,OAAO,IAAI,CAAC,MAAM,mBAAmB,CAAC,KACtC,OAAO,IAAI,CAAC,MAAM,mBAAmB,CAAC,KACtC,OAAO,IAAI,CAAC,MAAM,mBAAmB,CAAC,GAAG;AACzC,eAAO,oBAAoB,SAAS,OAAO,cAAc;AAAA,MAC7D;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,MAAM,uBAAuB;AACzB,QAAI,CAAC,KAAK,UAAU,qBAAqB,GAAG;AACxC,YAAM,8DAA8D;AACpE;AAAA,IACJ;AACA,UAAM,8BAA8B;AACpC,UAAM,MAAM,KAAK,UAAU;AAC3B,UAAM,SAAS,MAAM,KAAK,iCAAiC;AAC3D,QAAI,SAAS,GAAG;AACZ,YAAM,0CAA0C;AAChD,YAAM,aAAa,MAAM,KAAK,UAAU,UAAU,kCAAkC,MAAM;AAC1F,YAAM,QAAQ,CAAC;AACf,WAAK,UAAU,YAAY,WAAW,iBAAiB;AACvD,eAAS,IAAI,GAAG,IAAI,WAAW,mBAAmB,EAAE,GAAG;AACnD,cAAM,QAAQ,MAAM,KAAK,UAAU,UAAU,UAAU;AACvD,YAAI,MAAM,cAAc,UAAU,mBAAmB;AACjD,gBAAM,IAAI,MAAM,wCAAwC;AAAA,QAC5D;AACA,cAAM,WAAW,MAAM,KAAK,UAAU,UAAU,IAAI,WAAW,MAAM,gBAAgB,OAAO,CAAC;AAC7F,cAAM,KAAK,UAAU,OAAO,MAAM,gBAAgB;AAClD,cAAM,KAAK,UAAU,OAAO,MAAM,iBAAiB;AACnD,cAAM,KAAK,KAAK;AAChB,cAAM,uCAAuC,IAAI,CAAC,IAAI,MAAM,MAAM,cAAc,MAAM,CAAC,EAAE,QAAQ,EAAE;AAAA,MACvG;AACA,WAAK,UAAU,YAAY,GAAG;AAC9B,aAAO;AAAA,IACX;AACA,SAAK,UAAU,YAAY,GAAG;AAAA,EAClC;AAAA,EACA,MAAM,MAAM,QAAQ;AAChB,UAAM,UAAU,MAAM,KAAK,qBAAqB;AAChD,QAAI,SAAS;AAET,aAAO,KAAK,4BAA4B,SAAS,MAAM;AAAA,IAC3D;AAEA,QAAI,OAAO;AACX,OAAG;AACC,YAAM,YAAY,MAAM,KAAK,oBAAoB;AACjD,UAAI,CAAC;AACD;AACJ,YAAM,OAAO,OAAO,SAAS;AAC7B,aAAO,CAAC,CAAC,KAAK;AACd,UAAI;AACJ,YAAM,KAAK,UAAU,OAAO,UAAU,gBAAgB;AACtD,UAAI,UAAU,kBAAkB,UAAU,mBAAmB,GAAG;AAC5D,cAAM,SAAS,CAAC;AAChB,YAAI,MAAM;AACV,cAAM,+EAA+E;AACrF,YAAI,kBAAkB;AACtB,eAAO,kBAAkB,KAAK,QAAQ,gBAAgB;AAClD,gBAAM,MAAM,KAAK,UAAU,WAAW,KAAK,YAAY,EAAE,WAAW,KAAK,CAAC;AAC1E,4BAAkB,QAAQ,KAAK,WAAW,SAAS,GAAG,GAAG,GAAG,gBAAgB;AAC5E,gBAAM,OAAO,mBAAmB,IAAI,kBAAkB;AACtD,cAAI,KAAK,SAAS;AACd,kBAAM,OAAO,IAAI,WAAW,IAAI;AAChC,kBAAM,KAAK,UAAU,WAAW,IAAI;AACpC,mBAAO,KAAK,IAAI;AAAA,UACpB,OACK;AAED,kBAAM,KAAK,UAAU,OAAO,IAAI;AAAA,UACpC;AAAA,QACJ;AACA,cAAM,0CAA0C,KAAK,UAAU,QAAQ,EAAE;AACzE,YAAI,KAAK,SAAS;AACd,gBAAM,KAAK,QAAQ,WAAW,YAAY,MAAM,GAAG,KAAK,OAAO;AAAA,QACnE;AAAA,MACJ,OACK;AACD,YAAI,KAAK,SAAS;AACd,gBAAM,iCAAiC,UAAU,cAAc,QAAQ;AACvE,qBAAW,IAAI,WAAW,UAAU,cAAc;AAClD,gBAAM,KAAK,UAAU,WAAW,QAAQ;AACxC,gBAAM,KAAK,QAAQ,WAAW,UAAU,KAAK,OAAO;AAAA,QACxD,OACK;AACD,gBAAM,kCAAkC,UAAU,cAAc,QAAQ;AACxE,gBAAM,KAAK,UAAU,OAAO,UAAU,cAAc;AAAA,QACxD;AAAA,MACJ;AACA,YAAM,kCAAkC,KAAK,UAAU,QAAQ,EAAE;AACjE,UAAI,UAAU,gBAAgB;AAE1B,cAAM,iBAAiB,MAAM,KAAK,UAAU,UAAU,cAAc;AACpE,YAAI,eAAe,cAAc,WAAY;AACzC,gBAAM,IAAI,MAAM,kDAAkD,KAAK,UAAU,WAAW,eAAe,GAAG,EAAE;AAAA,QACpH;AAAA,MACJ;AAAA,IACJ,SAAS,CAAC;AAAA,EACd;AAAA,EACA,MAAM,4BAA4B,SAAS,QAAQ;AAC/C,eAAW,cAAc,SAAS;AAC9B,YAAM,OAAO,OAAO,UAAU;AAC9B,UAAI,KAAK,SAAS;AACd,aAAK,UAAU,YAAY,WAAW,2BAA2B;AACjE,cAAM,YAAY,MAAM,KAAK,oBAAoB;AACjD,YAAI,WAAW;AACX,gBAAM,KAAK,UAAU,OAAO,UAAU,gBAAgB;AACtD,gBAAM,WAAW,IAAI,WAAW,WAAW,cAAc;AACzD,gBAAM,KAAK,UAAU,WAAW,QAAQ;AACxC,gBAAM,KAAK,QAAQ,WAAW,UAAU,KAAK,OAAO;AAAA,QACxD;AAAA,MACJ;AACA,UAAI,KAAK;AACL;AAAA,IACR;AAAA,EACJ;AAAA,EACA,MAAM,QAAQ,WAAW,UAAU,IAAI;AACnC,QAAI,UAAU,qBAAqB,GAAG;AAElC,aAAO,GAAG,QAAQ;AAAA,IACtB;AACA,QAAI,UAAU,qBAAqB,GAAG;AAClC,YAAM,IAAI,MAAM,uCAAuC,UAAU,gBAAgB,EAAE;AAAA,IACvF;AACA,UAAM,uBAAuB,UAAU,QAAQ,qBAAqB,SAAS,MAAM,EAAE;AACrF,UAAM,mBAAmB,MAAM,YAAW,qBAAqB,QAAQ;AACvE,WAAO,GAAG,gBAAgB;AAAA,EAC9B;AAAA,EACA,aAAa,qBAAqB,MAAM;AAEpC,UAAM,QAAQ,IAAI,eAAe;AAAA,MAC7B,MAAM,YAAY;AACd,mBAAW,QAAQ,IAAI;AACvB,mBAAW,MAAM;AAAA,MACrB;AAAA,IACJ,CAAC;AACD,UAAM,KAAK,IAAI,oBAAoB,aAAa;AAChD,UAAM,SAAS,MAAM,YAAY,EAAE;AACnC,QAAI;AAEA,YAAM,WAAW,IAAI,SAAS,MAAM;AACpC,YAAM,SAAS,MAAM,SAAS,YAAY;AAC1C,aAAO,IAAI,WAAW,MAAM;AAAA,IAChC,SACO,KAAK;AAER,YAAM,UAAU,eAAe,QACzB,gCAAgC,IAAI,OAAO,KAC3C;AACN,YAAM,IAAI,UAAU,OAAO;AAAA,IAC/B;AAAA,EACJ;AAAA,EACA,MAAM,sBAAsB;AACxB,UAAM,YAAY,MAAM,KAAK,UAAU,UAAU,SAAS;AAC1D,QAAI,cAAc,UAAU,iBAAiB;AACzC,YAAM,SAAS,MAAM,KAAK,UAAU,UAAU,oBAAoB;AAClE,aAAO,WAAW,MAAM,KAAK,UAAU,UAAU,IAAI,WAAW,OAAO,gBAAgB,OAAO,CAAC;AAC/F,aAAO;AAAA,IACX;AACA,QAAI,cAAc,UAAU,mBAAmB;AAC3C,aAAO;AAAA,IACX;AACA,QAAI,cAAc,YAAY;AAC1B,YAAM,IAAI,MAAM,eAAe;AAAA,IACnC;AACA,UAAM,IAAI,MAAM,sBAAsB;AAAA,EAC1C;AACJ;AACA,SAAS,QAAQ,QAAQ,SAAS;AAC9B,QAAM,eAAe,OAAO;AAC5B,QAAM,gBAAgB,QAAQ;AAE9B,MAAI,gBAAgB;AAChB,WAAO;AAEX,WAAS,IAAI,GAAG,KAAK,eAAe,eAAe,KAAK;AACpD,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,IAAI,eAAe,KAAK;AACpC,UAAI,OAAO,IAAI,CAAC,MAAM,QAAQ,CAAC,GAAG;AAC9B,gBAAQ;AACR;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,OAAO;AACP,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AApBS;AAqBT,SAAS,YAAY,QAAQ;AAEzB,QAAM,cAAc,OAAO,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,QAAQ,CAAC;AACrE,QAAM,cAAc,IAAI,WAAW,WAAW;AAC9C,MAAI,SAAS;AACb,aAAW,SAAS,QAAQ;AACxB,gBAAY,IAAI,OAAO,MAAM;AAC7B,cAAU,MAAM;AAAA,EACpB;AACA,SAAO;AACX;AAVS;;;AE9NT;AAAA;AAAO,IAAM,cAAN,MAAkB;AAAA,EAAzB,OAAyB;AAAA;AAAA;AAAA,EACrB,YAAYC,YAAW;AACnB,SAAK,YAAYA;AAAA,EACrB;AAAA,EACA,UAAU;AACN,UAAMA,aAAY,KAAK;AACvB,WAAO,IAAI,eAAe;AAAA,MACtB,MAAM,KAAK,YAAY;AACnB,cAAM,SAAS,IAAI,WAAW,IAAI;AAClC,cAAM,OAAO,MAAMA,WAAU,WAAW,QAAQ,EAAE,WAAW,KAAK,CAAC;AACnE,YAAI,SAAS,GAAG;AACZ,qBAAW,MAAM;AACjB;AAAA,QACJ;AACA,mBAAW,QAAQ,OAAO,SAAS,GAAG,IAAI,CAAC;AAAA,MAC/C;AAAA,IACJ,CAAC,EAAE,YAAY,IAAI,oBAAoB,MAAM,CAAC;AAAA,EAClD;AACJ;;;AClBA;AAAA;AAEO,SAAS,cAAc,QAAQ,UAAU;AAC/C,MAAI,aAAa,YAAY;AAC5B,UAAM,QAAQ,CAAC;AACf,aAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS;AACnD,YAAM,OAAO,OAAO,WAAW,KAAK;AACpC,YAAM,KAAK,OAAO,KAAO,QAAQ,IAAK,GAAI;AAAA,IAC3C;AAEA,WAAO;AAAA,EACR;AAEA,MAAI,aAAa,YAAY;AAC5B,UAAM,QAAQ,CAAC;AACf,aAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS;AACnD,YAAM,OAAO,OAAO,WAAW,KAAK;AACpC,YAAM,KAAM,QAAQ,IAAK,KAAM,OAAO,GAAI;AAAA,IAC3C;AAEA,WAAO;AAAA,EACR;AAEA,SAAO,CAAC,GAAG,MAAM,EAAE,IAAI,eAAa,UAAU,WAAW,CAAC,CAAC;AAC5D;AAtBgB;AA+BT,SAAS,yBAAyB,aAAa,SAAS,GAAG;AACjE,QAAM,UAAU,OAAO,SAAS,IAAI,WAAW,CAAC,EAAE,IAAI,aAAa,GAAG,EAAE,QAAQ,SAAS,EAAE,EAAE,KAAK,GAAG,CAAC;AACtG,MAAI,OAAO,MAAM,OAAO,GAAG;AAC1B,WAAO;AAAA,EACR;AAEA,MAAI,MAAM,IAAI;AAEd,WAAS,QAAQ,QAAQ,QAAQ,SAAS,KAAK,SAAS;AACvD,WAAO,YAAY,KAAK;AAAA,EACzB;AAEA,WAAS,QAAQ,SAAS,KAAK,QAAQ,SAAS,KAAK,SAAS;AAC7D,WAAO,YAAY,KAAK;AAAA,EACzB;AAEA,SAAO,YAAY;AACpB;AAjBgB;AAuBT,IAAM,sBAAsB;AAAA,EAClC,KAAK,wBAAC,QAAQ,WAAY,OAAO,SAAS,CAAC,IAAI,MAAU,OAAO,SAAS,CAAC,KAAM,IAAO,OAAO,SAAS,CAAC,KAAM,KAAQ,OAAO,MAAM,KAAM,IAApI;AAAA,EACL,KAAK;AACN;;;AC3DA;AAAA;AAAO,IAAM,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,YAAY;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA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","names":["parse","ContentType","parse","import_debug","initDebug","tokenizer","tokenizer","tokenizer","import_debug","import_debug","tagMap","tagMap","tagType","debug","initDebug","tagType","debug","initDebug","ContentType","mimeTypeParse","tokenizer","tokenizer","tokenizer","tokenizer","tokenizer","debug","initDebug","import_debug","EndOfStreamError","AbstractTokenizer","EndOfStreamError","AbstractTokenizer","EndOfStreamError","fromFile","import_debug","debug","initDebug","debug","import_debug","debug","initDebug","debug","initDebug","ChunkedFileData","import_debug","debug","initDebug","RangeRequestTokenizer","ChunkedFileData","roundRange","import_debug","debug","initDebug","RangeRequestFactory","RangeRequestTokenizer","roundRange","tokenizer","RangeRequestFactory","tokenizer"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-MIYY7OUT.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-MKOANARL.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-MKOANARL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-MKOANARL.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-MKOANARL.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-MTW3CCFK.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-MTW3CCFK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-MTW3CCFK.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-MTW3CCFK.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-N4BF7EWP.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-N4BF7EWP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-N4BF7EWP.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-N4BF7EWP.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-NZ7ODGIJ.js
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-NZ7ODGIJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-NZ7ODGIJ.js.map
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-NZ7ODGIJ.js.map
+612
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-OAG3HI6B.js
··· 1 + import { 2 + e, 3 + i, 4 + p 5 + } from "./chunk-JDKXATSY.js"; 6 + import { 7 + A, 8 + BroadcastableDiffuseElement 9 + } from "./chunk-2V4VRBHO.js"; 10 + import { 11 + computed, 12 + signal, 13 + untracked 14 + } from "./chunk-HNJPKCUJ.js"; 15 + import { 16 + __name, 17 + init_Buffer, 18 + init_process 19 + } from "./chunk-FZQXS3RE.js"; 20 + 21 + // components/engine/audio/element.js 22 + init_Buffer(); 23 + init_process(); 24 + 25 + // ../node_modules/.deno/lit-html@3.3.2/node_modules/lit-html/node/directives/keyed.js 26 + init_Buffer(); 27 + init_process(); 28 + var i2 = e(class extends i { 29 + constructor() { 30 + super(...arguments), this.key = A; 31 + } 32 + render(r, t) { 33 + return this.key = r, t; 34 + } 35 + update(r, [t, e2]) { 36 + return t !== this.key && (p(r), this.key = t), e2; 37 + } 38 + }); 39 + 40 + // components/engine/audio/element.js 41 + var SILENT_MP3 = "data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjM2LjEwMAAAAAAAAAAAAAAA//OEAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAEAAABIADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV6urq6urq6urq6urq6urq6urq6urq6urq6v////////////////////////////////8AAAAATGF2YzU2LjQxAAAAAAAAAAAAAAAAJAAAAAAAAAAAASDs90hvAAAAAAAAAAAAAAAAAAAA//MUZAAAAAGkAAAAAAAAA0gAAAAATEFN//MUZAMAAAGkAAAAAAAAA0gAAAAARTMu//MUZAYAAAGkAAAAAAAAA0gAAAAAOTku//MUZAkAAAGkAAAAAAAAA0gAAAAANVVV"; 42 + var AudioEngine = class extends BroadcastableDiffuseElement { 43 + static { 44 + __name(this, "AudioEngine"); 45 + } 46 + static NAME = "diffuse/engine/audio"; 47 + constructor() { 48 + super(); 49 + this.isPlaying = this.isPlaying.bind(this); 50 + this.state = this.state.bind(this); 51 + } 52 + // SIGNALS 53 + #items = signal( 54 + /** @type {Audio[]} */ 55 + [] 56 + ); 57 + #volume = signal(0.5); 58 + // STATE 59 + items = this.#items.get; 60 + volume = this.#volume.get; 61 + // LIFECYCLE 62 + /** 63 + * @override 64 + */ 65 + connectedCallback() { 66 + if (this.hasAttribute("group")) { 67 + const actions = this.broadcast( 68 + this.identifier, 69 + { 70 + adjustVolume: { strategy: "replicate", fn: this.adjustVolume }, 71 + pause: { strategy: "leaderOnly", fn: this.pause }, 72 + play: { strategy: "leaderOnly", fn: this.play }, 73 + seek: { strategy: "leaderOnly", fn: this.seek }, 74 + supply: { strategy: "replicate", fn: this.supply }, 75 + // State 76 + items: { strategy: "leaderOnly", fn: this.items } 77 + } 78 + ); 79 + if (!actions) return; 80 + this.adjustVolume = actions.adjustVolume; 81 + this.pause = actions.pause; 82 + this.play = actions.play; 83 + this.seek = actions.seek; 84 + this.supply = actions.supply; 85 + this.broadcastingStatus().then(async (status) => { 86 + if (status.leader) return; 87 + this.#items.value = await actions.items(); 88 + }); 89 + } 90 + super.connectedCallback(); 91 + const VOLUME_KEY = `${this.constructor.prototype.constructor.NAME}/${this.group}/volume`; 92 + const volume = localStorage.getItem(VOLUME_KEY); 93 + if (volume != void 0) { 94 + this.#volume.set(parseFloat(volume)); 95 + } 96 + this.effect(() => { 97 + Array.from(this.querySelectorAll("de-audio-item")).forEach( 98 + (node) => { 99 + const item = ( 100 + /** @type {AudioEngineItem} */ 101 + node 102 + ); 103 + if (item.hasAttribute("preload")) return; 104 + const audio = item.querySelector("audio"); 105 + if (audio) audio.volume = this.#volume.value; 106 + } 107 + ); 108 + localStorage.setItem(VOLUME_KEY, this.#volume.value.toString()); 109 + }); 110 + if (!this.broadcasted) return; 111 + this.effect(async () => { 112 + const status = await this.broadcastingStatus(); 113 + untracked(() => { 114 + if (!(status.leader && status.initialLeader === false)) return; 115 + console.log("\u{1F9D9} Leadership acquired"); 116 + this.items().forEach((item) => { 117 + const el = this.#itemElement(item.id); 118 + if (!el) return; 119 + el.removeAttribute("initial-progress"); 120 + if (!el.audio) return; 121 + const progress = el.$state.progress.value; 122 + const canPlay = /* @__PURE__ */ __name(() => { 123 + this.seek({ 124 + audioId: item.id, 125 + percentage: progress 126 + }); 127 + if (el.$state.isPlaying.value) this.play({ audioId: item.id }); 128 + }, "canPlay"); 129 + el.audio.addEventListener("canplay", canPlay, { once: true }); 130 + if (el.audio.readyState === 0) el.audio.load(); 131 + else canPlay(); 132 + }); 133 + }); 134 + }); 135 + } 136 + // ACTIONS 137 + /** 138 + * @type {Actions["adjustVolume"]} 139 + */ 140 + adjustVolume(args) { 141 + if (args.audioId) { 142 + this.#withAudioNode(args.audioId, (audio) => { 143 + audio.volume = args.volume; 144 + }); 145 + } else { 146 + this.#volume.value = args.volume; 147 + } 148 + } 149 + /** 150 + * @type {Actions["pause"]} 151 + */ 152 + pause({ audioId }) { 153 + this.#withAudioNode(audioId, (audio) => audio.pause()); 154 + } 155 + /** 156 + * @type {Actions["play"]} 157 + */ 158 + play({ audioId, volume }) { 159 + this.#withAudioNode(audioId, (audio, item) => { 160 + audio.volume = volume ?? this.volume(); 161 + audio.muted = false; 162 + if (!audio.isConnected) return; 163 + const promise = audio.play() || Promise.resolve(); 164 + item.$state.isPlaying.set(true); 165 + promise.catch((e2) => { 166 + if (!audio.isConnected) { 167 + return; 168 + } 169 + const err = "Couldn't play audio automatically. Please resume playback manually."; 170 + console.error(err, e2); 171 + item.$state.isPlaying.set(false); 172 + }); 173 + }); 174 + } 175 + /** 176 + * @type {Actions["reload"]} 177 + */ 178 + reload(args) { 179 + this.#withAudioNode(args.audioId, (audio, item) => { 180 + if (audio.readyState === 0 || audio.error?.code === 2) { 181 + audio.load(); 182 + if (args.progress !== void 0) { 183 + item.setAttribute( 184 + "initial-progress", 185 + JSON.stringify(args.progress) 186 + ); 187 + } 188 + if (args.play) { 189 + this.play({ audioId: args.audioId, volume: audio.volume }); 190 + } 191 + } 192 + }); 193 + } 194 + /** 195 + * @type {Actions["seek"]} 196 + */ 197 + seek({ audioId, percentage }) { 198 + this.#withAudioNode(audioId, (audio) => { 199 + if (!isNaN(audio.duration)) { 200 + audio.currentTime = audio.duration * percentage; 201 + } 202 + }); 203 + } 204 + /** 205 + * @type {Actions["supply"]} 206 + */ 207 + supply(args) { 208 + const existingMap = new Map(this.#items.value.map((a) => [a.id, a])); 209 + const hasNewIds = args.audio.some((a) => !existingMap.has(a.id)); 210 + const hasPreloadChanges = args.audio.some( 211 + (a) => existingMap.get(a.id)?.isPreload !== a.isPreload 212 + ); 213 + if (hasNewIds || hasPreloadChanges) { 214 + this.#items.value = args.audio; 215 + } 216 + if (args.play) this.play(args.play); 217 + } 218 + // RENDER 219 + /** 220 + * @param {RenderArg} _ 221 + */ 222 + render({ html }) { 223 + const ids = this.items().map((i3) => i3.id); 224 + this.querySelectorAll("de-audio-item").forEach((element) => { 225 + if (ids.includes(element.id)) return; 226 + const source = element.querySelector("source"); 227 + if (source) source.src = SILENT_MP3; 228 + }); 229 + const group = this.group; 230 + const nodes = this.items().map((audio) => { 231 + const ip = audio.progress === void 0 ? "0" : JSON.stringify(audio.progress); 232 + return i2( 233 + audio.id, 234 + html` 235 + <de-audio-item 236 + group="${this.broadcasted ? `${group}/${audio.id}` : A}" 237 + id="${audio.id}" 238 + initial-progress="${ip}" 239 + mime-type="${audio.mimeType ? audio.mimeType : A}" 240 + preload="${audio.isPreload ? `preload` : A}" 241 + url="${audio.url}" 242 + > 243 + <audio 244 + crossorigin="anonymous" 245 + muted="true" 246 + preload="auto" 247 + > 248 + <source 249 + src="${audio.url}" 250 + ${audio.mimeType ? 'type="' + audio.mimeType + '"' : ""} 251 + /> 252 + </audio> 253 + </de-audio-item> 254 + ` 255 + ); 256 + }); 257 + return html` 258 + <section id="audio-nodes"> 259 + ${nodes} 260 + </section> 261 + `; 262 + } 263 + // 🛠️ 264 + /** 265 + * Convenience signal to track if something is, or was, playing. 266 + */ 267 + _isPlaying() { 268 + return computed(() => { 269 + const item = this.items()?.[0]; 270 + if (!item) return false; 271 + const state = this.state(item.id); 272 + if (!state) return false; 273 + return state.isPlaying() || state.hasEnded() || state.progress() === 1; 274 + }); 275 + } 276 + /** 277 + * Get the state of a single audio item. 278 + * 279 + * @param {string} audioId 280 + * @returns {SignalReader<AudioStateReadOnly | undefined>} 281 + */ 282 + _state(audioId) { 283 + return computed(() => { 284 + const _trigger = this.#items.value; 285 + const s = this.#itemElement(audioId)?.state; 286 + return s ? { ...s } : void 0; 287 + }); 288 + } 289 + /** 290 + * Convenience signal to track if something is, or was, playing. 291 + */ 292 + isPlaying() { 293 + return this._isPlaying()(); 294 + } 295 + /** 296 + * Get the state of a single audio item. 297 + * 298 + * @param {string} audioId 299 + * @returns {AudioStateReadOnly | undefined} 300 + */ 301 + state(audioId) { 302 + return this._state(audioId)(); 303 + } 304 + /** 305 + * @param {string} audioId 306 + */ 307 + #itemElement(audioId) { 308 + const node = this.querySelector( 309 + `de-audio-item[id="${audioId}"]:not([preload])` 310 + ); 311 + if (node) { 312 + const item = ( 313 + /** @type {AudioEngineItem} */ 314 + node 315 + ); 316 + return item; 317 + } 318 + } 319 + /** 320 + * @param {string} audioId 321 + * @param {(audio: HTMLAudioElement, item: AudioEngineItem) => void} fn 322 + */ 323 + #withAudioNode(audioId, fn) { 324 + const item = this.#itemElement(audioId); 325 + if (item) fn(item.audio, item); 326 + } 327 + }; 328 + var element_default = AudioEngine; 329 + var AudioEngineItem = class extends BroadcastableDiffuseElement { 330 + static { 331 + __name(this, "AudioEngineItem"); 332 + } 333 + static NAME = "diffuse/engine/audio/item"; 334 + constructor() { 335 + super(); 336 + const ip = this.getAttribute("initial-progress"); 337 + this.$state = { 338 + duration: signal(0), 339 + hasEnded: signal(false), 340 + isPlaying: signal(false), 341 + isPreload: signal(this.hasAttribute("preload")), 342 + loadingState: signal( 343 + /** @type {LoadingState} */ 344 + "loading" 345 + ), 346 + progress: signal(ip ? parseFloat(ip) : 0) 347 + }; 348 + } 349 + // LIFECYCLE 350 + /** 351 + * @override 352 + */ 353 + async connectedCallback() { 354 + const audio = this.audio; 355 + audio.addEventListener("canplay", this.canplayEvent); 356 + audio.addEventListener("durationchange", this.durationchangeEvent); 357 + audio.addEventListener("ended", this.endedEvent); 358 + audio.addEventListener("error", this.errorEvent); 359 + audio.addEventListener("pause", this.pauseEvent); 360 + audio.addEventListener("play", this.playEvent); 361 + audio.addEventListener("suspend", this.suspendEvent); 362 + audio.addEventListener("timeupdate", this.timeupdateEvent); 363 + audio.addEventListener("waiting", this.waitingEvent); 364 + if (this.hasAttribute("group")) { 365 + const actions = this.broadcast( 366 + this.identifier, 367 + { 368 + getDuration: { strategy: "leaderOnly", fn: this.$state.duration.get }, 369 + getHasEnded: { strategy: "leaderOnly", fn: this.$state.hasEnded.get }, 370 + getIsPlaying: { 371 + strategy: "leaderOnly", 372 + fn: this.$state.isPlaying.get 373 + }, 374 + getIsPreload: { 375 + strategy: "leaderOnly", 376 + fn: this.$state.isPreload.get 377 + }, 378 + getLoadingState: { 379 + strategy: "leaderOnly", 380 + fn: this.$state.loadingState.get 381 + }, 382 + getProgress: { strategy: "leaderOnly", fn: this.$state.progress.get }, 383 + // SET 384 + setDuration: { strategy: "replicate", fn: this.$state.duration.set }, 385 + setHasEnded: { strategy: "replicate", fn: this.$state.hasEnded.set }, 386 + setIsPlaying: { 387 + strategy: "replicate", 388 + fn: this.$state.isPlaying.set 389 + }, 390 + setIsPreload: { 391 + strategy: "replicate", 392 + fn: this.$state.isPreload.set 393 + }, 394 + setLoadingState: { 395 + strategy: "replicate", 396 + fn: this.$state.loadingState.set 397 + }, 398 + setProgress: { strategy: "replicate", fn: this.$state.progress.set } 399 + }, 400 + { 401 + // Sync leadership with engine's broadcasting channel 402 + assumeLeadership: (await this.engine?.broadcastingStatus())?.leader 403 + } 404 + ); 405 + if (actions) { 406 + this.$state.duration.set = actions.setDuration; 407 + this.$state.hasEnded.set = actions.setHasEnded; 408 + this.$state.isPlaying.set = actions.setIsPlaying; 409 + this.$state.isPreload.set = actions.setIsPreload; 410 + this.$state.loadingState.set = actions.setLoadingState; 411 + this.$state.progress.set = actions.setProgress; 412 + untracked(async () => { 413 + this.$state.duration.value = await actions.getDuration(); 414 + this.$state.hasEnded.value = await actions.getHasEnded(); 415 + this.$state.isPlaying.value = await actions.getIsPlaying(); 416 + this.$state.isPreload.value = await actions.getIsPreload(); 417 + this.$state.loadingState.value = await actions.getLoadingState(); 418 + this.$state.progress.value = await actions.getProgress(); 419 + }); 420 + } 421 + } 422 + super.connectedCallback(); 423 + } 424 + // STATE 425 + /** 426 + * @type {AudioStateReadOnly} 427 + */ 428 + get state() { 429 + return { 430 + id: this.id, 431 + mimeType: this.getAttribute("mime-type") ?? void 0, 432 + url: this.getAttribute("url") ?? "", 433 + duration: this.$state.duration.get, 434 + hasEnded: this.$state.hasEnded.get, 435 + isPlaying: this.$state.isPlaying.get, 436 + isPreload: this.$state.isPreload.get, 437 + loadingState: this.$state.loadingState.get, 438 + progress: this.$state.progress.get 439 + }; 440 + } 441 + // RELATED ELEMENTS 442 + get audio() { 443 + const el = this.querySelector("audio"); 444 + if (el) return ( 445 + /** @type {HTMLAudioElement} */ 446 + el 447 + ); 448 + else throw new Error("Cannot find child audio element"); 449 + } 450 + get engine() { 451 + const el = this.closest("de-audio"); 452 + if (el) return ( 453 + /** @type {AudioEngine} */ 454 + el 455 + ); 456 + else return null; 457 + } 458 + // EVENTS 459 + /** 460 + * @param {Event} event 461 + */ 462 + canplayEvent(event) { 463 + const audio = ( 464 + /** @type {HTMLAudioElement} */ 465 + event.target 466 + ); 467 + const item = engineItem(audio); 468 + if (item?.hasAttribute("initial-progress") && audio.duration && !isNaN(audio.duration)) { 469 + const progress = JSON.parse( 470 + item.getAttribute("initial-progress") ?? "0" 471 + ); 472 + audio.currentTime = audio.duration * progress; 473 + item.removeAttribute("initial-progress"); 474 + } 475 + finishedLoading(event); 476 + } 477 + /** 478 + * @param {Event} event 479 + */ 480 + durationchangeEvent(event) { 481 + const audio = ( 482 + /** @type {HTMLAudioElement} */ 483 + event.target 484 + ); 485 + if (!isNaN(audio.duration)) { 486 + engineItem(audio)?.$state.duration.set(audio.duration); 487 + } 488 + } 489 + /** 490 + * @param {Event} event 491 + */ 492 + endedEvent(event) { 493 + const audio = ( 494 + /** @type {HTMLAudioElement} */ 495 + event.target 496 + ); 497 + audio.currentTime = 0; 498 + engineItem(audio)?.$state.hasEnded.set(true); 499 + } 500 + /** 501 + * @param {Event} event 502 + */ 503 + errorEvent(event) { 504 + const audio = ( 505 + /** @type {HTMLAudioElement} */ 506 + event.target 507 + ); 508 + const code = audio.error?.code || 0; 509 + engineItem(audio)?.$state.loadingState.set({ error: { code } }); 510 + } 511 + /** 512 + * @param {Event} event 513 + */ 514 + pauseEvent(event) { 515 + const audio = ( 516 + /** @type {HTMLAudioElement} */ 517 + event.target 518 + ); 519 + const item = engineItem(audio); 520 + item?.$state.isPlaying.set(false); 521 + } 522 + /** 523 + * @param {Event} event 524 + */ 525 + playEvent(event) { 526 + const audio = ( 527 + /** @type {HTMLAudioElement} */ 528 + event.target 529 + ); 530 + const item = engineItem(audio); 531 + item?.$state.hasEnded.set(false); 532 + item?.$state.isPlaying.set(true); 533 + if (audio.readyState === 4) finishedLoading(event); 534 + } 535 + /** 536 + * @param {Event} event 537 + */ 538 + suspendEvent(event) { 539 + finishedLoading(event); 540 + } 541 + /** 542 + * @param {Event} event 543 + */ 544 + timeupdateEvent(event) { 545 + const audio = ( 546 + /** @type {HTMLAudioElement} */ 547 + event.target 548 + ); 549 + if (isNaN(audio.duration) || audio.duration === 0) return; 550 + const progress = audio.currentTime / audio.duration; 551 + if (progress === 0) return; 552 + engineItem(audio)?.$state.progress.set(progress); 553 + } 554 + /** 555 + * @param {Event} event 556 + */ 557 + waitingEvent(event) { 558 + initiateLoading(event); 559 + } 560 + }; 561 + function engineItem(audio) { 562 + const c = audio.closest("de-audio-item"); 563 + if (c) return ( 564 + /** @type {AudioEngineItem} */ 565 + c 566 + ); 567 + else return null; 568 + } 569 + __name(engineItem, "engineItem"); 570 + function finishedLoading(event) { 571 + const audio = ( 572 + /** @type {HTMLAudioElement} */ 573 + event.target 574 + ); 575 + engineItem(audio)?.$state.loadingState.set("loaded"); 576 + } 577 + __name(finishedLoading, "finishedLoading"); 578 + function initiateLoading(event) { 579 + const audio = ( 580 + /** @type {HTMLAudioElement} */ 581 + event.target 582 + ); 583 + if (audio.readyState < 4) { 584 + engineItem(audio)?.$state.loadingState.set("loading"); 585 + } 586 + } 587 + __name(initiateLoading, "initiateLoading"); 588 + var CLASS = AudioEngine; 589 + var NAME = "de-audio"; 590 + var NAME_ITEM = "de-audio-item"; 591 + customElements.define(NAME, AudioEngine); 592 + customElements.define(NAME_ITEM, AudioEngineItem); 593 + 594 + export { 595 + i2 as i, 596 + element_default, 597 + AudioEngineItem, 598 + CLASS, 599 + NAME, 600 + NAME_ITEM 601 + }; 602 + /*! Bundled license information: 603 + 604 + lit-html/node/directives/keyed.js: 605 + (** 606 + * @license 607 + * Copyright 2021 Google LLC 608 + * SPDX-License-Identifier: BSD-3-Clause 609 + *) 610 + */ 611 + 612 + //# sourceMappingURL=./chunk-OAG3HI6B.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-OAG3HI6B.js.map
··· 1 + {"version":3,"sources":["/components/engine/audio/element.js","/node_modules/.deno/lit-html@3.3.2/node_modules/lit-html/src/directives/keyed.ts"],"sourcesContent":["import { keyed } from \"lit-html/directives/keyed.js\";\n\nimport { BroadcastableDiffuseElement, nothing } from \"~/common/element.js\";\nimport { computed, signal, untracked } from \"~/common/signal.js\";\n\n/**\n * @import {Actions, Audio, AudioState, AudioStateReadOnly, LoadingState} from \"./types.d.ts\"\n * @import {RenderArg} from \"~/common/element.d.ts\"\n * @import {SignalReader} from \"~/common/signal.d.ts\"\n */\n\n////////////////////////////////////////////\n// CONSTANTS\n////////////////////////////////////////////\nconst SILENT_MP3 =\n \"data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjM2LjEwMAAAAAAAAAAAAAAA//OEAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAEAAABIADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV6urq6urq6urq6urq6urq6urq6urq6urq6v////////////////////////////////8AAAAATGF2YzU2LjQxAAAAAAAAAAAAAAAAJAAAAAAAAAAAASDs90hvAAAAAAAAAAAAAAAAAAAA//MUZAAAAAGkAAAAAAAAA0gAAAAATEFN//MUZAMAAAGkAAAAAAAAA0gAAAAARTMu//MUZAYAAAGkAAAAAAAAA0gAAAAAOTku//MUZAkAAAGkAAAAAAAAA0gAAAAANVVV\";\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * @implements {Actions}\n */\nclass AudioEngine extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/engine/audio\";\n\n constructor() {\n super();\n\n this.isPlaying = this.isPlaying.bind(this);\n this.state = this.state.bind(this);\n }\n\n // SIGNALS\n\n #items = signal(/** @type {Audio[]} */ ([]));\n #volume = signal(0.5);\n\n // STATE\n\n items = this.#items.get;\n volume = this.#volume.get;\n\n // LIFECYCLE\n\n /**\n * @override\n */\n connectedCallback() {\n // Setup broadcasting if part of group\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(\n this.identifier,\n {\n adjustVolume: { strategy: \"replicate\", fn: this.adjustVolume },\n pause: { strategy: \"leaderOnly\", fn: this.pause },\n play: { strategy: \"leaderOnly\", fn: this.play },\n seek: { strategy: \"leaderOnly\", fn: this.seek },\n supply: { strategy: \"replicate\", fn: this.supply },\n\n // State\n items: { strategy: \"leaderOnly\", fn: this.items },\n },\n );\n\n if (!actions) return;\n\n this.adjustVolume = actions.adjustVolume;\n this.pause = actions.pause;\n this.play = actions.play;\n this.seek = actions.seek;\n this.supply = actions.supply;\n\n // Sync items with leader if needed\n this.broadcastingStatus().then(async (status) => {\n if (status.leader) return;\n this.#items.value = await actions.items();\n });\n }\n\n // Super\n super.connectedCallback();\n\n // Get volume from previous session if possible\n const VOLUME_KEY =\n `${this.constructor.prototype.constructor.NAME}/${this.group}/volume`;\n const volume = localStorage.getItem(VOLUME_KEY);\n\n if (volume != undefined) {\n this.#volume.set(parseFloat(volume));\n }\n\n // Monitor volume signal\n this.effect(() => {\n Array.from(this.querySelectorAll(\"de-audio-item\")).forEach(\n (node) => {\n const item = /** @type {AudioEngineItem} */ (node);\n if (item.hasAttribute(\"preload\")) return;\n const audio = item.querySelector(\"audio\");\n if (audio) audio.volume = this.#volume.value;\n },\n );\n\n localStorage.setItem(VOLUME_KEY, this.#volume.value.toString());\n });\n\n // Only broadcasting stuff from here on out\n if (!this.broadcasted) return;\n\n // Manage playback across tabs if needed\n this.effect(async () => {\n const status = await this.broadcastingStatus();\n untracked(() => {\n if (!(status.leader && status.initialLeader === false)) return;\n\n console.log(\"🧙 Leadership acquired\");\n this.items().forEach((item) => {\n const el = this.#itemElement(item.id);\n if (!el) return;\n\n el.removeAttribute(\"initial-progress\");\n\n if (!el.audio) return;\n\n const progress = el.$state.progress.value;\n const canPlay = () => {\n this.seek({\n audioId: item.id,\n percentage: progress,\n });\n\n if (el.$state.isPlaying.value) this.play({ audioId: item.id });\n };\n\n el.audio.addEventListener(\"canplay\", canPlay, { once: true });\n\n if (el.audio.readyState === 0) el.audio.load();\n else canPlay();\n });\n });\n });\n }\n\n // ACTIONS\n\n /**\n * @type {Actions[\"adjustVolume\"]}\n */\n adjustVolume(args) {\n if (args.audioId) {\n this.#withAudioNode(args.audioId, (audio) => {\n audio.volume = args.volume;\n });\n } else {\n this.#volume.value = args.volume;\n }\n }\n\n /**\n * @type {Actions[\"pause\"]}\n */\n pause({ audioId }) {\n this.#withAudioNode(audioId, (audio) => audio.pause());\n }\n\n /**\n * @type {Actions[\"play\"]}\n */\n play({ audioId, volume }) {\n this.#withAudioNode(audioId, (audio, item) => {\n audio.volume = volume ?? this.volume();\n audio.muted = false;\n\n // TODO: Might need this for `data-initial-progress`\n // Does seem to cause trouble when broadcasting\n // (open multiple sessions and play the next audio)\n // if (audio.readyState === 0) audio.load();\n if (!audio.isConnected) return;\n\n const promise = audio.play() || Promise.resolve();\n item.$state.isPlaying.set(true);\n\n promise.catch((e) => {\n if (!audio.isConnected) {\n return; /* The node was removed from the DOM, we can ignore this error */\n }\n const err =\n \"Couldn't play audio automatically. Please resume playback manually.\";\n console.error(err, e);\n item.$state.isPlaying.set(false);\n });\n });\n }\n\n /**\n * @type {Actions[\"reload\"]}\n */\n reload(args) {\n this.#withAudioNode(args.audioId, (audio, item) => {\n if (audio.readyState === 0 || audio.error?.code === 2) {\n audio.load();\n\n if (args.progress !== undefined) {\n item.setAttribute(\n \"initial-progress\",\n JSON.stringify(args.progress),\n );\n }\n\n if (args.play) {\n this.play({ audioId: args.audioId, volume: audio.volume });\n }\n }\n });\n }\n\n /**\n * @type {Actions[\"seek\"]}\n */\n seek({ audioId, percentage }) {\n this.#withAudioNode(audioId, (audio) => {\n if (!isNaN(audio.duration)) {\n audio.currentTime = audio.duration * percentage;\n }\n });\n }\n\n /**\n * @type {Actions[\"supply\"]}\n */\n supply(args) {\n const existingMap = new Map(this.#items.value.map((a) => [a.id, a]));\n\n const hasNewIds = args.audio.some((a) => !existingMap.has(a.id));\n const hasPreloadChanges = args.audio.some(\n (a) => existingMap.get(a.id)?.isPreload !== a.isPreload,\n );\n\n if (hasNewIds || hasPreloadChanges) {\n this.#items.value = args.audio;\n }\n\n if (args.play) this.play(args.play);\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n const ids = this.items().map((i) => i.id);\n\n this.querySelectorAll(\"de-audio-item\").forEach((element) => {\n if (ids.includes(element.id)) return;\n\n const source = element.querySelector(\"source\");\n if (source) source.src = SILENT_MP3;\n });\n\n const group = this.group;\n const nodes = this.items().map((audio) => {\n const ip = audio.progress === undefined\n ? \"0\"\n : JSON.stringify(audio.progress);\n\n return keyed(\n audio.id,\n html`\n <de-audio-item\n group=\"${this.broadcasted ? `${group}/${audio.id}` : nothing}\"\n id=\"${audio.id}\"\n initial-progress=\"${ip}\"\n mime-type=\"${audio.mimeType ? audio.mimeType : nothing}\"\n preload=\"${audio.isPreload ? `preload` : nothing}\"\n url=\"${audio.url}\"\n >\n <audio\n crossorigin=\"anonymous\"\n muted=\"true\"\n preload=\"auto\"\n >\n <source\n src=\"${audio.url}\"\n ${audio.mimeType ? 'type=\"' + audio.mimeType + '\"' : \"\"}\n />\n </audio>\n </de-audio-item>\n `,\n );\n });\n\n return html`\n <section id=\"audio-nodes\">\n ${nodes}\n </section>\n `;\n }\n\n // 🛠️\n\n /**\n * Convenience signal to track if something is, or was, playing.\n */\n _isPlaying() {\n return computed(() => {\n const item = this.items()?.[0];\n if (!item) return false;\n\n const state = this.state(item.id);\n if (!state) return false;\n\n return state.isPlaying() || state.hasEnded() || state.progress() === 1;\n });\n }\n\n /**\n * Get the state of a single audio item.\n *\n * @param {string} audioId\n * @returns {SignalReader<AudioStateReadOnly | undefined>}\n */\n _state(audioId) {\n return computed(() => {\n const _trigger = this.#items.value;\n\n const s = this.#itemElement(audioId)?.state;\n return s ? { ...s } : undefined;\n });\n }\n\n /**\n * Convenience signal to track if something is, or was, playing.\n */\n isPlaying() {\n return this._isPlaying()();\n }\n\n /**\n * Get the state of a single audio item.\n *\n * @param {string} audioId\n * @returns {AudioStateReadOnly | undefined}\n */\n state(audioId) {\n return this._state(audioId)();\n }\n\n /**\n * @param {string} audioId\n */\n #itemElement(audioId) {\n const node = this.querySelector(\n `de-audio-item[id=\"${audioId}\"]:not([preload])`,\n );\n\n if (node) {\n const item = /** @type {AudioEngineItem} */ (node);\n return item;\n }\n }\n\n /**\n * @param {string} audioId\n * @param {(audio: HTMLAudioElement, item: AudioEngineItem) => void} fn\n */\n #withAudioNode(audioId, fn) {\n const item = this.#itemElement(audioId);\n if (item) fn(item.audio, item);\n }\n}\n\nexport default AudioEngine;\n\n////////////////////////////////////////////\n// ITEM ELEMENT\n////////////////////////////////////////////\n\nclass AudioEngineItem extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/engine/audio/item\";\n\n constructor() {\n super();\n\n const ip = this.getAttribute(\"initial-progress\");\n\n /**\n * @type {AudioState}\n */\n this.$state = {\n duration: signal(0),\n hasEnded: signal(false),\n isPlaying: signal(false),\n isPreload: signal(this.hasAttribute(\"preload\")),\n loadingState: signal(/** @type {LoadingState} */ (\"loading\")),\n progress: signal(ip ? parseFloat(ip) : 0),\n };\n }\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n const audio = this.audio;\n\n audio.addEventListener(\"canplay\", this.canplayEvent);\n audio.addEventListener(\"durationchange\", this.durationchangeEvent);\n audio.addEventListener(\"ended\", this.endedEvent);\n audio.addEventListener(\"error\", this.errorEvent);\n audio.addEventListener(\"pause\", this.pauseEvent);\n audio.addEventListener(\"play\", this.playEvent);\n audio.addEventListener(\"suspend\", this.suspendEvent);\n audio.addEventListener(\"timeupdate\", this.timeupdateEvent);\n audio.addEventListener(\"waiting\", this.waitingEvent);\n\n // Setup broadcasting if part of group\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(\n this.identifier,\n {\n getDuration: { strategy: \"leaderOnly\", fn: this.$state.duration.get },\n getHasEnded: { strategy: \"leaderOnly\", fn: this.$state.hasEnded.get },\n getIsPlaying: {\n strategy: \"leaderOnly\",\n fn: this.$state.isPlaying.get,\n },\n getIsPreload: {\n strategy: \"leaderOnly\",\n fn: this.$state.isPreload.get,\n },\n getLoadingState: {\n strategy: \"leaderOnly\",\n fn: this.$state.loadingState.get,\n },\n getProgress: { strategy: \"leaderOnly\", fn: this.$state.progress.get },\n\n // SET\n setDuration: { strategy: \"replicate\", fn: this.$state.duration.set },\n setHasEnded: { strategy: \"replicate\", fn: this.$state.hasEnded.set },\n setIsPlaying: {\n strategy: \"replicate\",\n fn: this.$state.isPlaying.set,\n },\n setIsPreload: {\n strategy: \"replicate\",\n fn: this.$state.isPreload.set,\n },\n setLoadingState: {\n strategy: \"replicate\",\n fn: this.$state.loadingState.set,\n },\n setProgress: { strategy: \"replicate\", fn: this.$state.progress.set },\n },\n {\n // Sync leadership with engine's broadcasting channel\n assumeLeadership: (await this.engine?.broadcastingStatus())?.leader,\n },\n );\n\n if (actions) {\n this.$state.duration.set = actions.setDuration;\n this.$state.hasEnded.set = actions.setHasEnded;\n this.$state.isPlaying.set = actions.setIsPlaying;\n this.$state.isPreload.set = actions.setIsPreload;\n this.$state.loadingState.set = actions.setLoadingState;\n this.$state.progress.set = actions.setProgress;\n\n untracked(async () => {\n this.$state.duration.value = await actions.getDuration();\n this.$state.hasEnded.value = await actions.getHasEnded();\n this.$state.isPlaying.value = await actions.getIsPlaying();\n this.$state.isPreload.value = await actions.getIsPreload();\n this.$state.loadingState.value = await actions.getLoadingState();\n this.$state.progress.value = await actions.getProgress();\n });\n }\n }\n\n // Super\n super.connectedCallback();\n }\n\n // STATE\n\n /**\n * @type {AudioStateReadOnly}\n */\n get state() {\n return {\n id: this.id,\n mimeType: this.getAttribute(\"mime-type\") ?? undefined,\n url: this.getAttribute(\"url\") ?? \"\",\n\n duration: this.$state.duration.get,\n hasEnded: this.$state.hasEnded.get,\n isPlaying: this.$state.isPlaying.get,\n isPreload: this.$state.isPreload.get,\n loadingState: this.$state.loadingState.get,\n progress: this.$state.progress.get,\n };\n }\n\n // RELATED ELEMENTS\n\n get audio() {\n const el = this.querySelector(\"audio\");\n if (el) return /** @type {HTMLAudioElement} */ (el);\n else throw new Error(\"Cannot find child audio element\");\n }\n\n get engine() {\n const el = this.closest(\"de-audio\");\n if (el) return /** @type {AudioEngine} */ (el);\n else return null;\n }\n\n // EVENTS\n\n /**\n * @param {Event} event\n */\n canplayEvent(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n const item = engineItem(audio);\n\n if (\n item?.hasAttribute(\"initial-progress\") &&\n audio.duration &&\n !isNaN(audio.duration)\n ) {\n const progress = JSON.parse(\n item.getAttribute(\"initial-progress\") ?? \"0\",\n );\n audio.currentTime = audio.duration * progress;\n item.removeAttribute(\"initial-progress\");\n }\n\n finishedLoading(event);\n }\n\n /**\n * @param {Event} event\n */\n durationchangeEvent(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n\n if (!isNaN(audio.duration)) {\n engineItem(audio)?.$state.duration.set(audio.duration);\n }\n }\n\n /**\n * @param {Event} event\n */\n endedEvent(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n audio.currentTime = 0;\n\n engineItem(audio)?.$state.hasEnded.set(true);\n }\n\n /**\n * @param {Event} event\n */\n errorEvent(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n const code = audio.error?.code || 0;\n\n engineItem(audio)?.$state.loadingState.set({ error: { code } });\n }\n\n /**\n * @param {Event} event\n */\n pauseEvent(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n const item = engineItem(audio);\n\n item?.$state.isPlaying.set(false);\n }\n\n /**\n * @param {Event} event\n */\n playEvent(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n\n const item = engineItem(audio);\n item?.$state.hasEnded.set(false);\n item?.$state.isPlaying.set(true);\n\n // In case audio was preloaded:\n if (audio.readyState === 4) finishedLoading(event);\n }\n\n /**\n * @param {Event} event\n */\n suspendEvent(event) {\n finishedLoading(event);\n }\n\n /**\n * @param {Event} event\n */\n timeupdateEvent(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n if (isNaN(audio.duration) || audio.duration === 0) return;\n\n const progress = audio.currentTime / audio.duration;\n if (progress === 0) return;\n\n engineItem(audio)?.$state.progress.set(progress);\n }\n\n /**\n * @param {Event} event\n */\n waitingEvent(event) {\n initiateLoading(event);\n }\n}\n\nexport { AudioEngineItem };\n\n////////////////////////////////////////////\n// 🛠️\n////////////////////////////////////////////\n\n/**\n * @param {HTMLAudioElement} audio\n */\nfunction engineItem(audio) {\n const c = audio.closest(\"de-audio-item\");\n if (c) return /** @type {AudioEngineItem} */ (c);\n else return null;\n}\n\n/**\n * @param {Event} event\n */\nfunction finishedLoading(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n engineItem(audio)?.$state.loadingState.set(\"loaded\");\n}\n\n/**\n * @param {Event} event\n */\nfunction initiateLoading(event) {\n const audio = /** @type {HTMLAudioElement} */ (event.target);\n if (audio.readyState < 4) {\n engineItem(audio)?.$state.loadingState.set(\"loading\");\n }\n}\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = AudioEngine;\nexport const NAME = \"de-audio\";\nexport const NAME_ITEM = \"de-audio-item\";\n\ncustomElements.define(NAME, AudioEngine);\ncustomElements.define(NAME_ITEM, AudioEngineItem);\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\nimport {\n directive,\n Directive,\n ChildPart,\n DirectiveParameters,\n DirectiveResult,\n} from '../directive.js';\nimport {setCommittedValue} from '../directive-helpers.js';\n\nclass Keyed<T> extends Directive {\n key: unknown = nothing;\n\n render(k: unknown, v: T): T {\n this.key = k;\n return v;\n }\n\n override update(part: ChildPart, [k, v]: DirectiveParameters<this>) {\n if (k !== this.key) {\n // Clear the part before returning a value. The one-arg form of\n // setCommittedValue sets the value to a sentinel which forces a\n // commit the next render.\n setCommittedValue(part);\n this.key = k;\n }\n return v;\n }\n}\n\ninterface KeyedFunc {\n <V>(k: unknown, v: V): DirectiveResult<typeof Keyed<V>>;\n}\n\n/**\n * Associates a renderable value with a unique key. When the key changes, the\n * previous DOM is removed and disposed before rendering the next value, even\n * if the value - such as a template - is the same.\n *\n * This is useful for forcing re-renders of stateful components, or working\n * with code that expects new data to generate new HTML elements, such as some\n * animation techniques.\n */\nexport const keyed: KeyedFunc = directive(Keyed);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {Keyed};\n"],"mappings":"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","names":["keyed","directive","Directive","constructor","this","key","nothing","k","v","part","setCommittedValue","e","i"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-OAG3HI6B.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-OX3TSJ3X.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-OX3TSJ3X.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-OX3TSJ3X.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-OX3TSJ3X.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-P5RAXXEE.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-P5RAXXEE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-P5RAXXEE.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-P5RAXXEE.js.map
+190
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-QKKQKAE5.js
··· 1 + import { 2 + o 3 + } from "./chunk-2HKIFQJO.js"; 4 + import { 5 + DEFAULT_GROUP, 6 + DiffuseElement 7 + } from "./chunk-2V4VRBHO.js"; 8 + import { 9 + __name, 10 + init_Buffer, 11 + init_process 12 + } from "./chunk-FZQXS3RE.js"; 13 + 14 + // components/orchestrator/output/element.js 15 + init_Buffer(); 16 + init_process(); 17 + var OutputOrchestrator = class extends DiffuseElement { 18 + static { 19 + __name(this, "OutputOrchestrator"); 20 + } 21 + static NAME = "diffuse/orchestrator/output"; 22 + // LIFECYCLE 23 + /** 24 + * @override 25 + */ 26 + async connectedCallback() { 27 + super.connectedCallback(); 28 + let previouslyActivated = /* @__PURE__ */ new Set(); 29 + await customElements.whenDefined(this.outputConfigurator.localName); 30 + this.effect(() => { 31 + const set = this.activated(); 32 + const newlyActicated = set.difference(previouslyActivated); 33 + newlyActicated.forEach((id) => { 34 + switch (id) { 35 + case "do-output__dc-output__local": { 36 + import("./components/output/polymorphic/indexed-db/element.js"); 37 + import("./components/transformer/output/string/json/element.js"); 38 + break; 39 + } 40 + case "do-output__dc-output__atproto": { 41 + import("./components/output/raw/atproto/element.js"); 42 + import("./components/transformer/output/raw/atproto-sync/element.js"); 43 + import("./components/transformer/output/refiner/track-uri-passkey/element.js"); 44 + break; 45 + } 46 + case "do-output__dc-output__s3": { 47 + import("./components/output/bytes/s3/element.js"); 48 + import("./components/transformer/output/bytes/dasl-sync/element.js"); 49 + break; 50 + } 51 + } 52 + }); 53 + previouslyActivated = set; 54 + }); 55 + } 56 + // ELEMENT GETTERS 57 + /** 58 + * @returns {OutputElement} 59 + */ 60 + get output() { 61 + const output = this.root().querySelector("#do-output__output"); 62 + if (!output) throw new Error("Output orchestrator did not render yet."); 63 + return output; 64 + } 65 + /** 66 + * @returns {OutputConfiguratorElement} 67 + */ 68 + get outputConfigurator() { 69 + const outputConfigurator = this.root().querySelector( 70 + "#do-output__dc-output" 71 + ); 72 + if (!outputConfigurator) { 73 + throw new Error("Output orchestrator did not render yet."); 74 + } 75 + return outputConfigurator; 76 + } 77 + // PROXY OUTPUT ACTIONS 78 + get facets() { 79 + return this.output.facets; 80 + } 81 + get playlistItems() { 82 + return this.output.playlistItems; 83 + } 84 + get themes() { 85 + return this.output.themes; 86 + } 87 + get tracks() { 88 + return this.output.tracks; 89 + } 90 + get ready() { 91 + return this.output.ready; 92 + } 93 + // PROXY ADDITIONAL OUTPUT CONFIGURATOR ACTIONS 94 + get activated() { 95 + return this.outputConfigurator.activated; 96 + } 97 + get deselect() { 98 + return this.outputConfigurator.deselect; 99 + } 100 + get options() { 101 + return this.outputConfigurator.options; 102 + } 103 + get select() { 104 + return this.outputConfigurator.select; 105 + } 106 + get selected() { 107 + return this.outputConfigurator.selected; 108 + } 109 + // RENDER 110 + /** 111 + * @param {RenderArg} _ 112 + */ 113 + render({ html }) { 114 + const group = this.group === DEFAULT_GROUP ? void 0 : this.group; 115 + return html` 116 + <dop-indexed-db 117 + id="do-output__dop-indexed-db__json" 118 + namespace="json" 119 + group="${o(group)}" 120 + ></dop-indexed-db> 121 + 122 + <!-- ⚙️ S3 --> 123 + <dob-s3 id="do-output__dob-s3" group="${o(group)}"></dob-s3> 124 + 125 + <!-- ⚙️ ATPROTO --> 126 + <dtor-atproto-sync 127 + id="do-output__dtor-atproto-sync" 128 + namespace="atproto" 129 + output-selector="#do-output__dor-atproto" 130 + group="${o(group)}" 131 + ></dtor-atproto-sync> 132 + 133 + <dor-atproto 134 + id="do-output__dor-atproto" 135 + group="${o(group)}" 136 + ></dor-atproto> 137 + 138 + <!-- OUTPUT CONFIGURATOR --> 139 + <dc-output 140 + id="do-output__dc-output" 141 + default="do-output__dc-output__local" 142 + group="${o(group)}" 143 + > 144 + <!-- local --> 145 + <dtos-json 146 + id="do-output__dc-output__local" 147 + output-selector="#do-output__dop-indexed-db__json" 148 + label="Local" 149 + ></dtos-json> 150 + 151 + <!-- atproto --> 152 + <dtor-track-uri-passkey 153 + id="do-output__dc-output__atproto" 154 + namespace="atproto" 155 + output-selector="#do-output__dtor-atproto-sync" 156 + group="${o(group)}" 157 + label="AT Protocol" 158 + > 159 + </dtor-track-uri-passkey> 160 + 161 + <!-- s3 --> 162 + <dtob-dasl-sync 163 + id="do-output__dc-output__s3" 164 + namespace="s3" 165 + output-selector="#do-output__dob-s3" 166 + group="${o(group)}" 167 + label="S3" 168 + ></dtob-dasl-sync> 169 + </dc-output> 170 + 171 + <!-- ENTRY ⬆️ --> 172 + <dtor-default 173 + id="do-output__output" 174 + output-selector="#do-output__dc-output" 175 + ></dtor-default> 176 + `; 177 + } 178 + }; 179 + var element_default = OutputOrchestrator; 180 + var CLASS = OutputOrchestrator; 181 + var NAME = "do-output"; 182 + customElements.define(NAME, CLASS); 183 + 184 + export { 185 + element_default, 186 + CLASS, 187 + NAME 188 + }; 189 + 190 + //# sourceMappingURL=./chunk-QKKQKAE5.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-QKKQKAE5.js.map
··· 1 + {"version":3,"sources":["/components/orchestrator/output/element.js"],"sourcesContent":["import { ifDefined } from \"lit-html/directives/if-defined.js\";\nimport { DEFAULT_GROUP, DiffuseElement } from \"~/common/element.js\";\n\nimport \"~/components/configurator/output/element.js\";\nimport \"~/components/transformer/output/refiner/default/element.js\";\n\n/**\n * @import {RenderArg} from \"~/common/element.d.ts\"\n * @import {OutputElement} from \"~/components/output/types.d.ts\"\n * @import {OutputConfiguratorElement} from \"~/components/configurator/output/types.d.ts\"\n */\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * A default setup for managing output.\n *\n * @implements {OutputConfiguratorElement}\n */\nclass OutputOrchestrator extends DiffuseElement {\n static NAME = \"diffuse/orchestrator/output\";\n\n // LIFECYCLE\n\n /**\n * @override\n */\n async connectedCallback() {\n super.connectedCallback();\n\n /** @type {Set<string>} */\n let previouslyActivated = new Set();\n\n await customElements.whenDefined(this.outputConfigurator.localName);\n\n this.effect(() => {\n const set = this.activated();\n const newlyActicated = set.difference(previouslyActivated);\n\n newlyActicated.forEach((id) => {\n switch (id) {\n case \"do-output__dc-output__local\": {\n import(\"~/components/output/polymorphic/indexed-db/element.js\");\n import(\"~/components/transformer/output/string/json/element.js\");\n break;\n }\n case \"do-output__dc-output__atproto\": {\n import(\"~/components/output/raw/atproto/element.js\");\n import(\n \"~/components/transformer/output/raw/atproto-sync/element.js\"\n );\n import(\n \"~/components/transformer/output/refiner/track-uri-passkey/element.js\"\n );\n break;\n }\n case \"do-output__dc-output__s3\": {\n import(\"~/components/output/bytes/s3/element.js\");\n import(\n \"~/components/transformer/output/bytes/dasl-sync/element.js\"\n );\n break;\n }\n }\n });\n\n previouslyActivated = set;\n });\n }\n\n // ELEMENT GETTERS\n\n /**\n * @returns {OutputElement}\n */\n get output() {\n /** @type {OutputElement | null} */\n const output = this.root().querySelector(\"#do-output__output\");\n\n if (!output) throw new Error(\"Output orchestrator did not render yet.\");\n return output;\n }\n\n /**\n * @returns {OutputConfiguratorElement}\n */\n get outputConfigurator() {\n /** @type {OutputConfiguratorElement | null} */\n const outputConfigurator = this.root().querySelector(\n \"#do-output__dc-output\",\n );\n\n if (!outputConfigurator) {\n throw new Error(\"Output orchestrator did not render yet.\");\n }\n\n return outputConfigurator;\n }\n\n // PROXY OUTPUT ACTIONS\n\n get facets() {\n return this.output.facets;\n }\n\n get playlistItems() {\n return this.output.playlistItems;\n }\n\n get themes() {\n return this.output.themes;\n }\n\n get tracks() {\n return this.output.tracks;\n }\n\n get ready() {\n return this.output.ready;\n }\n\n // PROXY ADDITIONAL OUTPUT CONFIGURATOR ACTIONS\n\n get activated() {\n return this.outputConfigurator.activated;\n }\n\n get deselect() {\n return this.outputConfigurator.deselect;\n }\n\n get options() {\n return this.outputConfigurator.options;\n }\n\n get select() {\n return this.outputConfigurator.select;\n }\n\n get selected() {\n return this.outputConfigurator.selected;\n }\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n const group = this.group === DEFAULT_GROUP ? undefined : this.group;\n\n return html`\n <dop-indexed-db\n id=\"do-output__dop-indexed-db__json\"\n namespace=\"json\"\n group=\"${ifDefined(group)}\"\n ></dop-indexed-db>\n\n <!-- ⚙️ S3 -->\n <dob-s3 id=\"do-output__dob-s3\" group=\"${ifDefined(group)}\"></dob-s3>\n\n <!-- ⚙️ ATPROTO -->\n <dtor-atproto-sync\n id=\"do-output__dtor-atproto-sync\"\n namespace=\"atproto\"\n output-selector=\"#do-output__dor-atproto\"\n group=\"${ifDefined(group)}\"\n ></dtor-atproto-sync>\n\n <dor-atproto\n id=\"do-output__dor-atproto\"\n group=\"${ifDefined(group)}\"\n ></dor-atproto>\n\n <!-- OUTPUT CONFIGURATOR -->\n <dc-output\n id=\"do-output__dc-output\"\n default=\"do-output__dc-output__local\"\n group=\"${ifDefined(group)}\"\n >\n <!-- local -->\n <dtos-json\n id=\"do-output__dc-output__local\"\n output-selector=\"#do-output__dop-indexed-db__json\"\n label=\"Local\"\n ></dtos-json>\n\n <!-- atproto -->\n <dtor-track-uri-passkey\n id=\"do-output__dc-output__atproto\"\n namespace=\"atproto\"\n output-selector=\"#do-output__dtor-atproto-sync\"\n group=\"${ifDefined(group)}\"\n label=\"AT Protocol\"\n >\n </dtor-track-uri-passkey>\n\n <!-- s3 -->\n <dtob-dasl-sync\n id=\"do-output__dc-output__s3\"\n namespace=\"s3\"\n output-selector=\"#do-output__dob-s3\"\n group=\"${ifDefined(group)}\"\n label=\"S3\"\n ></dtob-dasl-sync>\n </dc-output>\n\n <!-- ENTRY ⬆️ -->\n <dtor-default\n id=\"do-output__output\"\n output-selector=\"#do-output__dc-output\"\n ></dtor-default>\n `;\n }\n}\n\nexport default OutputOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = OutputOrchestrator;\nexport const NAME = \"do-output\";\n\ncustomElements.define(NAME, CLASS);\n"],"mappings":"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","names":[],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-QKKQKAE5.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-RDDO7Q3D.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-RDDO7Q3D.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-RDDO7Q3D.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-RDDO7Q3D.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-SGR5ST3A.js
··· 1 + ../bafybeif36x7yy3gignoyekheplnhh4og5l5z3nrvviouxgiy36iimz3vai/chunk-SGR5ST3A.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-SGR5ST3A.js.map
··· 1 + ../bafybeif36x7yy3gignoyekheplnhh4og5l5z3nrvviouxgiy36iimz3vai/chunk-SGR5ST3A.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-SIA54BLL.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-SIA54BLL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-SIA54BLL.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-SIA54BLL.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-SVYFDHZC.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-SVYFDHZC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-SVYFDHZC.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-SVYFDHZC.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-T2ADV37I.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-T2ADV37I.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-T2ADV37I.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-T2ADV37I.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TCJ7NSHN.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TCJ7NSHN.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TCJ7NSHN.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TCJ7NSHN.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TMGAIVLV.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TMGAIVLV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TMGAIVLV.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TMGAIVLV.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TMIJ7SWF.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TMIJ7SWF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TMIJ7SWF.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TMIJ7SWF.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TP5GZFTO.js
··· 1 + ../bafybeicokklzc7qrdyz7qaho5jskzgdhzi7o2ihwvbbalw6c5p75fsyfie/chunk-TP5GZFTO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TP5GZFTO.js.map
··· 1 + ../bafybeicokklzc7qrdyz7qaho5jskzgdhzi7o2ihwvbbalw6c5p75fsyfie/chunk-TP5GZFTO.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TRIYIVJH.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TRIYIVJH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TRIYIVJH.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TRIYIVJH.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TS4JJWFE.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TS4JJWFE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-TS4JJWFE.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-TS4JJWFE.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-U4HLMEDD.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-U4HLMEDD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-U4HLMEDD.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-U4HLMEDD.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-VCRMPF2R.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-VCRMPF2R.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-VCRMPF2R.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-VCRMPF2R.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-VOFM65C2.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-VOFM65C2.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-VOFM65C2.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-VOFM65C2.js.map
+99
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-VQR5VNUL.js
··· 1 + import { 2 + BroadcastableDiffuseElement 3 + } from "./chunk-2V4VRBHO.js"; 4 + import { 5 + signal 6 + } from "./chunk-HNJPKCUJ.js"; 7 + import { 8 + __name, 9 + init_Buffer, 10 + init_process 11 + } from "./chunk-FZQXS3RE.js"; 12 + 13 + // components/engine/scope/element.js 14 + init_Buffer(); 15 + init_process(); 16 + var ScopeEngine = class extends BroadcastableDiffuseElement { 17 + static { 18 + __name(this, "ScopeEngine"); 19 + } 20 + static NAME = "diffuse/engine/scope"; 21 + // SIGNALS 22 + #playlist = signal( 23 + /** @type {string | undefined} */ 24 + void 0 25 + ); 26 + #searchTerm = signal( 27 + /** @type {string | undefined} */ 28 + void 0 29 + ); 30 + #sortBy = signal( 31 + /** @type {string[]} */ 32 + [] 33 + ); 34 + playlist = this.#playlist.get; 35 + searchTerm = this.#searchTerm.get; 36 + sortBy = this.#sortBy.get; 37 + // LIFECYCLE 38 + /** 39 + * @override 40 + */ 41 + connectedCallback() { 42 + if (this.hasAttribute("group")) { 43 + const actions = this.broadcast(this.identifier, { 44 + setPlaylist: { strategy: "replicate", fn: this.setPlaylist }, 45 + setSearchTerm: { strategy: "replicate", fn: this.setSearchTerm }, 46 + setSortBy: { strategy: "replicate", fn: this.setSortBy } 47 + }); 48 + if (actions) { 49 + this.setPlaylist = actions.setPlaylist; 50 + this.setSearchTerm = actions.setSearchTerm; 51 + this.setSortBy = actions.setSortBy; 52 + } 53 + } 54 + super.connectedCallback(); 55 + const storagePrefix = `${this.constructor.prototype.constructor.NAME}/${this.group}`; 56 + this.#playlist.value = localStorage.getItem(`${storagePrefix}/playlistId`) ?? void 0; 57 + this.#searchTerm.value = localStorage.getItem(`${storagePrefix}/searchTerm`) ?? void 0; 58 + this.#sortBy.value = JSON.parse( 59 + localStorage.getItem(`${storagePrefix}/sortBy`) ?? "[]" 60 + ); 61 + this.effect(() => { 62 + const key = `${storagePrefix}/playlistId`; 63 + const val = this.#playlist.value; 64 + if (val) localStorage.setItem(key, val); 65 + else localStorage.removeItem(key); 66 + }); 67 + this.effect(() => { 68 + const key = `${storagePrefix}/searchTerm`; 69 + const val = this.#searchTerm.value; 70 + if (val) localStorage.setItem(key, val); 71 + else localStorage.removeItem(key); 72 + }); 73 + this.effect(() => { 74 + const key = `${storagePrefix}/sortBy`; 75 + const val = this.#sortBy.value; 76 + if (val.length) localStorage.setItem(key, JSON.stringify(val)); 77 + else localStorage.removeItem(key); 78 + }); 79 + } 80 + // ACTIONS 81 + /** @param {string | undefined} val */ 82 + setPlaylist = /* @__PURE__ */ __name(async (val) => this.#playlist.value = val, "setPlaylist"); 83 + /** @param {string | undefined} val */ 84 + setSearchTerm = /* @__PURE__ */ __name(async (val) => this.#searchTerm.value = val, "setSearchTerm"); 85 + /** @param {string[]} val */ 86 + setSortBy = /* @__PURE__ */ __name(async (val) => this.#sortBy.value = val, "setSortBy"); 87 + }; 88 + var element_default = ScopeEngine; 89 + var CLASS = ScopeEngine; 90 + var NAME = "de-scope"; 91 + customElements.define(NAME, CLASS); 92 + 93 + export { 94 + element_default, 95 + CLASS, 96 + NAME 97 + }; 98 + 99 + //# sourceMappingURL=./chunk-VQR5VNUL.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-VQR5VNUL.js.map
··· 1 + {"version":3,"sources":["/components/engine/scope/element.js"],"sourcesContent":["import { BroadcastableDiffuseElement } from \"~/common/element.js\";\nimport { signal } from \"~/common/signal.js\";\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\nclass ScopeEngine extends BroadcastableDiffuseElement {\n static NAME = \"diffuse/engine/scope\";\n\n // SIGNALS\n\n #playlist = signal(/** @type {string | undefined} */ (undefined));\n #searchTerm = signal(/** @type {string | undefined} */ (undefined));\n #sortBy = signal(/** @type {string[]} */ ([]));\n\n playlist = this.#playlist.get;\n searchTerm = this.#searchTerm.get;\n sortBy = this.#sortBy.get;\n\n // LIFECYCLE\n\n /**\n * @override\n */\n connectedCallback() {\n // Broadcast if needed\n if (this.hasAttribute(\"group\")) {\n const actions = this.broadcast(this.identifier, {\n setPlaylist: { strategy: \"replicate\", fn: this.setPlaylist },\n setSearchTerm: { strategy: \"replicate\", fn: this.setSearchTerm },\n setSortBy: { strategy: \"replicate\", fn: this.setSortBy },\n });\n\n if (actions) {\n this.setPlaylist = actions.setPlaylist;\n this.setSearchTerm = actions.setSearchTerm;\n this.setSortBy = actions.setSortBy;\n }\n }\n\n // Super\n super.connectedCallback();\n\n // Signals\n const storagePrefix =\n `${this.constructor.prototype.constructor.NAME}/${this.group}`;\n\n this.#playlist.value =\n localStorage.getItem(`${storagePrefix}/playlistId`) ?? undefined;\n this.#searchTerm.value =\n localStorage.getItem(`${storagePrefix}/searchTerm`) ?? undefined;\n this.#sortBy.value = JSON.parse(\n localStorage.getItem(`${storagePrefix}/sortBy`) ?? \"[]\",\n );\n\n // Effects\n this.effect(() => {\n const key = `${storagePrefix}/playlistId`;\n const val = this.#playlist.value;\n\n if (val) localStorage.setItem(key, val);\n else localStorage.removeItem(key);\n });\n\n this.effect(() => {\n const key = `${storagePrefix}/searchTerm`;\n const val = this.#searchTerm.value;\n\n if (val) localStorage.setItem(key, val);\n else localStorage.removeItem(key);\n });\n\n this.effect(() => {\n const key = `${storagePrefix}/sortBy`;\n const val = this.#sortBy.value;\n\n if (val.length) localStorage.setItem(key, JSON.stringify(val));\n else localStorage.removeItem(key);\n });\n }\n\n // ACTIONS\n\n /** @param {string | undefined} val */\n setPlaylist = async (val) => this.#playlist.value = val;\n\n /** @param {string | undefined} val */\n setSearchTerm = async (val) => this.#searchTerm.value = val;\n\n /** @param {string[]} val */\n setSortBy = async (val) => this.#sortBy.value = val;\n}\n\nexport default ScopeEngine;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = ScopeEngine;\nexport const NAME = \"de-scope\";\n\ncustomElements.define(NAME, CLASS);\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;AAOA,IAAM,cAAN,cAA0B,4BAA4B;AAAA,EAPtD,OAOsD;AAAA;AAAA;AAAA,EACpD,OAAO,OAAO;AAAA;AAAA,EAId,YAAY;AAAA;AAAA,IAA0C;AAAA,EAAU;AAAA,EAChE,cAAc;AAAA;AAAA,IAA0C;AAAA,EAAU;AAAA,EAClE,UAAU;AAAA;AAAA,IAAgC,CAAC;AAAA,EAAE;AAAA,EAE7C,WAAW,KAAK,UAAU;AAAA,EAC1B,aAAa,KAAK,YAAY;AAAA,EAC9B,SAAS,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAOtB,oBAAoB;AAElB,QAAI,KAAK,aAAa,OAAO,GAAG;AAC9B,YAAM,UAAU,KAAK,UAAU,KAAK,YAAY;AAAA,QAC9C,aAAa,EAAE,UAAU,aAAa,IAAI,KAAK,YAAY;AAAA,QAC3D,eAAe,EAAE,UAAU,aAAa,IAAI,KAAK,cAAc;AAAA,QAC/D,WAAW,EAAE,UAAU,aAAa,IAAI,KAAK,UAAU;AAAA,MACzD,CAAC;AAED,UAAI,SAAS;AACX,aAAK,cAAc,QAAQ;AAC3B,aAAK,gBAAgB,QAAQ;AAC7B,aAAK,YAAY,QAAQ;AAAA,MAC3B;AAAA,IACF;AAGA,UAAM,kBAAkB;AAGxB,UAAM,gBACJ,GAAG,KAAK,YAAY,UAAU,YAAY,IAAI,IAAI,KAAK,KAAK;AAE9D,SAAK,UAAU,QACb,aAAa,QAAQ,GAAG,aAAa,aAAa,KAAK;AACzD,SAAK,YAAY,QACf,aAAa,QAAQ,GAAG,aAAa,aAAa,KAAK;AACzD,SAAK,QAAQ,QAAQ,KAAK;AAAA,MACxB,aAAa,QAAQ,GAAG,aAAa,SAAS,KAAK;AAAA,IACrD;AAGA,SAAK,OAAO,MAAM;AAChB,YAAM,MAAM,GAAG,aAAa;AAC5B,YAAM,MAAM,KAAK,UAAU;AAE3B,UAAI,IAAK,cAAa,QAAQ,KAAK,GAAG;AAAA,UACjC,cAAa,WAAW,GAAG;AAAA,IAClC,CAAC;AAED,SAAK,OAAO,MAAM;AAChB,YAAM,MAAM,GAAG,aAAa;AAC5B,YAAM,MAAM,KAAK,YAAY;AAE7B,UAAI,IAAK,cAAa,QAAQ,KAAK,GAAG;AAAA,UACjC,cAAa,WAAW,GAAG;AAAA,IAClC,CAAC;AAED,SAAK,OAAO,MAAM;AAChB,YAAM,MAAM,GAAG,aAAa;AAC5B,YAAM,MAAM,KAAK,QAAQ;AAEzB,UAAI,IAAI,OAAQ,cAAa,QAAQ,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,UACxD,cAAa,WAAW,GAAG;AAAA,IAClC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA,EAKA,cAAc,8BAAO,QAAQ,KAAK,UAAU,QAAQ,KAAtC;AAAA;AAAA,EAGd,gBAAgB,8BAAO,QAAQ,KAAK,YAAY,QAAQ,KAAxC;AAAA;AAAA,EAGhB,YAAY,8BAAO,QAAQ,KAAK,QAAQ,QAAQ,KAApC;AACd;AAEA,IAAO,kBAAQ;AAMR,IAAM,QAAQ;AACd,IAAM,OAAO;AAEpB,eAAe,OAAO,MAAM,KAAK;","names":[],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-VQR5VNUL.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-W3PYKUKS.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-W3PYKUKS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-W3PYKUKS.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-W3PYKUKS.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-WN6GL63Q.js
··· 1 + ../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/chunk-WN6GL63Q.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-WN6GL63Q.js.map
··· 1 + ../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/chunk-WN6GL63Q.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-X2U7TZQT.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-X2U7TZQT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-X2U7TZQT.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-X2U7TZQT.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-XKXQMVTB.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-XKXQMVTB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-XKXQMVTB.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-XKXQMVTB.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-XMHD7DTB.js
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-XMHD7DTB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-XMHD7DTB.js.map
··· 1 + ../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/chunk-XMHD7DTB.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-Y4UF3TDF.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-Y4UF3TDF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-Y4UF3TDF.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-Y4UF3TDF.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-YBUNVPVS.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-YBUNVPVS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-YBUNVPVS.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-YBUNVPVS.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-YEYOLW6N.js
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-YEYOLW6N.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-YEYOLW6N.js.map
··· 1 + ../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/chunk-YEYOLW6N.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-Z2SJTSR2.js
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-Z2SJTSR2.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-Z2SJTSR2.js.map
··· 1 + ../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/chunk-Z2SJTSR2.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZDMTYKI5.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ZDMTYKI5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZDMTYKI5.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ZDMTYKI5.js.map
+404
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZOIYKCCT.js
··· 1 + import { 2 + gather 3 + } from "./chunk-IYNRCNPM.js"; 4 + import { 5 + DiffuseElement, 6 + query, 7 + whenElementsDefined 8 + } from "./chunk-2V4VRBHO.js"; 9 + import { 10 + computed, 11 + signal, 12 + untracked 13 + } from "./chunk-HNJPKCUJ.js"; 14 + import { 15 + __name, 16 + init_Buffer, 17 + init_process 18 + } from "./chunk-FZQXS3RE.js"; 19 + 20 + // themes/webamp/browser/element.js 21 + init_Buffer(); 22 + init_process(); 23 + var ROW_HEIGHT = 14; 24 + var OVERSCAN = 20; 25 + var SORT_OPTIONS = [ 26 + { label: "Default", value: [] }, 27 + { label: "Added to collection", value: ["createdAt"] }, 28 + { label: "Title", value: ["tags.title"] }, 29 + { label: "Album", value: ["tags.album", "tags.disc.no", "tags.track.no"] }, 30 + { 31 + label: "Artist", 32 + value: ["tags.artist", "tags.album", "tags.disc.no", "tags.track.no"] 33 + }, 34 + { label: "Year", value: ["tags.year"] }, 35 + { label: "Date", value: ["tags.date"] } 36 + ]; 37 + var Browser = class extends DiffuseElement { 38 + static { 39 + __name(this, "Browser"); 40 + } 41 + constructor() { 42 + super(); 43 + this.attachShadow({ mode: "open" }); 44 + } 45 + // SIGNALS 46 + $output = signal( 47 + /** @type {OutputElement | undefined} */ 48 + void 0 49 + ); 50 + $provider = signal( 51 + /** @type {DiffuseElement & { tracks: SignalReader<Track[]> } | undefined} */ 52 + void 0 53 + ); 54 + $queue = signal( 55 + /** @type {import("~/components/engine/queue/element.js").CLASS | undefined} */ 56 + void 0 57 + ); 58 + $scope = signal( 59 + /** @type {import("~/components/engine/scope/element.js").CLASS | undefined} */ 60 + void 0 61 + ); 62 + $highlightedTrack = signal( 63 + /** @type {string | null} */ 64 + null 65 + ); 66 + $groupedPlaylists = computed(() => { 67 + const items = this.$output.value?.playlistItems.collection(); 68 + if (!items?.length) return []; 69 + const playlistMap = gather(items); 70 + const all = [...playlistMap.values()].sort( 71 + (a, b) => a.name.localeCompare(b.name) 72 + ); 73 + const ordered = all.filter((p) => !p.unordered); 74 + const unordered = all.filter((p) => p.unordered); 75 + return [ 76 + { label: "Ordered", playlists: ordered }, 77 + { label: "Unordered", playlists: unordered } 78 + ].filter((g) => g.playlists.length > 0); 79 + }); 80 + // STATE 81 + #scrollTop = 0; 82 + #viewportHeight = 0; 83 + #renderedStartIndex = -1; 84 + #renderedEndIndex = -1; 85 + /** @type {ResizeObserver | undefined} */ 86 + #resizeObserver; 87 + // LIFECYCLE 88 + /** 89 + * @override 90 + */ 91 + connectedCallback() { 92 + super.connectedCallback(); 93 + const output = query(this, "output-selector"); 94 + const provider = query(this, "tracks-selector"); 95 + const queue = query(this, "queue-engine-selector"); 96 + const scope = query(this, "scope-engine-selector"); 97 + whenElementsDefined({ output, provider, queue, scope }).then(() => { 98 + this.$output.value = output; 99 + this.$provider.value = provider; 100 + this.$queue.value = queue; 101 + this.$scope.value = scope; 102 + }); 103 + this.effect(() => { 104 + const _results = this.$provider.value?.tracks(); 105 + untracked(() => { 106 + const panel = this.root().querySelector(".sunken-panel"); 107 + if (panel) { 108 + panel.scrollTo(0, 0); 109 + this.#scrollTop = 0; 110 + } 111 + }); 112 + }); 113 + this.#setupScrollTracking(); 114 + this.effect(() => { 115 + const playlist = this.$scope.value?.playlist(); 116 + const select = this.root().querySelector("#playlist-select"); 117 + if (select) { 118 + select.value = playlist ?? ""; 119 + } 120 + }); 121 + this.effect(() => { 122 + const sortBy = this.$scope.value?.sortBy(); 123 + const select = this.root().querySelector("#sort-by-select"); 124 + if (select) { 125 + select.value = JSON.stringify( 126 + sortBy ?? [] 127 + ); 128 + } 129 + }); 130 + } 131 + /** 132 + * @override 133 + */ 134 + disconnectedCallback() { 135 + super.disconnectedCallback(); 136 + this.#resizeObserver?.disconnect(); 137 + } 138 + // SCROLL 139 + #setupScrollTracking() { 140 + requestAnimationFrame(() => { 141 + const panel = this.root().querySelector(".sunken-panel"); 142 + if (!panel) return; 143 + panel.addEventListener( 144 + "scroll", 145 + () => { 146 + this.#scrollTop = panel.scrollTop; 147 + this.#renderIfWindowChanged(panel); 148 + }, 149 + { passive: true } 150 + ); 151 + this.#resizeObserver = new ResizeObserver((entries) => { 152 + this.#viewportHeight = entries[0].contentRect.height; 153 + this.#renderIfWindowChanged(panel); 154 + }); 155 + this.#resizeObserver.observe(panel); 156 + }); 157 + } 158 + #computeWindow() { 159 + const startIndex = Math.max( 160 + 0, 161 + Math.floor(this.#scrollTop / ROW_HEIGHT) - OVERSCAN 162 + ); 163 + const visibleCount = Math.ceil(this.#viewportHeight / ROW_HEIGHT) + 2 * OVERSCAN; 164 + return { startIndex, endIndex: startIndex + visibleCount }; 165 + } 166 + /** 167 + * @param {Element} panel 168 + */ 169 + #renderIfWindowChanged(panel) { 170 + const { startIndex, endIndex } = this.#computeWindow(); 171 + if (startIndex === this.#renderedStartIndex && endIndex === this.#renderedEndIndex) { 172 + return; 173 + } 174 + const scrollTop = panel.scrollTop; 175 + this.forceRender(); 176 + panel.scrollTop = scrollTop; 177 + } 178 + // EVENTS 179 + /** 180 + * @param {Track} track 181 + */ 182 + playTrack(track) { 183 + this.$queue.value?.add({ 184 + inFront: true, 185 + trackIds: [track.id] 186 + }); 187 + this.$queue.value?.shift(); 188 + } 189 + setSearchTerm = /* @__PURE__ */ __name(() => { 190 + const input = this.root().querySelector("#search-input"); 191 + const term = input?.value?.trim(); 192 + this.$scope.value?.setSearchTerm(term); 193 + }, "setSearchTerm"); 194 + /** 195 + * @param {Event} event 196 + */ 197 + setSelectedPlaylist = /* @__PURE__ */ __name((event) => { 198 + const value = ( 199 + /** @type {HTMLSelectElement} */ 200 + event.currentTarget.value 201 + ); 202 + this.$scope.value?.setPlaylist(value === "" ? void 0 : value); 203 + }, "setSelectedPlaylist"); 204 + /** 205 + * @param {Event} event 206 + */ 207 + setSortBy = /* @__PURE__ */ __name((event) => { 208 + const value = ( 209 + /** @type {HTMLSelectElement} */ 210 + event.currentTarget.value 211 + ); 212 + this.$scope.value?.setSortBy(JSON.parse(value)); 213 + }, "setSortBy"); 214 + // RENDER 215 + /** 216 + * @param {RenderArg} _ 217 + */ 218 + render({ html }) { 219 + const highlighted = this.$highlightedTrack.value; 220 + const isLoading = this.$output.value?.tracks?.state() !== "loaded"; 221 + const tracks = this.$provider.value?.tracks() ?? []; 222 + const playlist = this.$scope.value?.playlist(); 223 + const searchTerm = this.$scope.value?.searchTerm() ?? ""; 224 + const sortByJson = JSON.stringify(this.$scope.value?.sortBy() ?? []); 225 + const totalTracks = tracks.length; 226 + const { startIndex, endIndex: rawEnd } = this.#computeWindow(); 227 + const endIndex = Math.min(totalTracks, rawEnd); 228 + this.#renderedStartIndex = startIndex; 229 + this.#renderedEndIndex = endIndex; 230 + const visibleTracks = tracks.slice(startIndex, endIndex); 231 + const totalHeight = totalTracks * ROW_HEIGHT; 232 + const topPad = startIndex * ROW_HEIGHT; 233 + return html` 234 + <link rel="stylesheet" href="vendor/98.css" /> 235 + 236 + <style> 237 + @import "./themes/webamp/98-vars.css"; 238 + 239 + :host { 240 + display: flex; 241 + flex-direction: column; 242 + height: 100%; 243 + } 244 + 245 + /*********************************** 246 + * SEARCH 247 + ***********************************/ 248 + 249 + search { 250 + margin-bottom: var(--grouped-button-spacing); 251 + } 252 + 253 + search input { 254 + color: inherit; 255 + flex: 1; 256 + } 257 + 258 + search select { 259 + color: inherit; 260 + max-width: 33%; 261 + } 262 + 263 + /*********************************** 264 + * TABLE 265 + ***********************************/ 266 + 267 + .sunken-panel { 268 + flex: 1; 269 + min-height: 80px; 270 + } 271 + 272 + :host([resizable]) .sunken-panel { 273 + resize: both; 274 + } 275 + 276 + .virtual-header { 277 + position: sticky; 278 + top: 0; 279 + z-index: 1; 280 + } 281 + 282 + table { 283 + color: var(--text-color); 284 + table-layout: fixed; 285 + width: 100%; 286 + } 287 + 288 + table th { 289 + width: 30%; 290 + 291 + &:first-child { 292 + width: 40%; 293 + } 294 + } 295 + 296 + .virtual-scroll table { 297 + will-change: transform; 298 + } 299 + 300 + table tbody tr { 301 + cursor: pointer; 302 + } 303 + 304 + table td { 305 + overflow: hidden; 306 + text-overflow: ellipsis; 307 + } 308 + </style> 309 + 310 + <search class="field-row"> 311 + <label for="search-input">Search:</label> 312 + <input 313 + id="search-input" 314 + type="search" 315 + @change="${this.setSearchTerm}" 316 + .value="${searchTerm}" 317 + /> 318 + <label for="playlist-select">Playlist:</label> 319 + <select id="playlist-select" @change="${this.setSelectedPlaylist}"> 320 + <option value="" ?selected="${!playlist || playlist === ``}">All tracks</option> 321 + ${this.$groupedPlaylists().map( 322 + (group) => html` 323 + <optgroup label="${group.label}"> 324 + ${group.playlists.map( 325 + (p) => html` 326 + <option 327 + value="${p.name}" 328 + ?selected="${p.name === playlist}" 329 + > 330 + ${p.name} 331 + </option> 332 + ` 333 + )} 334 + </optgroup> 335 + ` 336 + )} 337 + </select> 338 + <label for="sort-by-select">Sort by:</label> 339 + <select id="sort-by-select" @change="${this.setSortBy}"> 340 + ${SORT_OPTIONS.map((opt) => { 341 + const json = JSON.stringify(opt.value); 342 + return html` 343 + <option value="${json}" ?selected="${sortByJson === json}">${opt.label}</option> 344 + `; 345 + })} 346 + </select> 347 + </search> 348 + 349 + <div class="sunken-panel"> 350 + <table class="virtual-header"> 351 + <thead> 352 + <tr> 353 + <th>Title</th> 354 + <th>Artist</th> 355 + <th>Album</th> 356 + </tr> 357 + </thead> 358 + </table> 359 + <div class="virtual-scroll" style="height:${totalHeight}px"> 360 + <table style="transform: translateY(${topPad}px)"> 361 + <colgroup> 362 + <col style="width:40%"> 363 + <col style="width:30%"> 364 + <col style="width:30%"> 365 + </colgroup> 366 + <tbody> 367 + ${isLoading ? html` 368 + <tr> 369 + <td>Loading ...</td> 370 + <td></td> 371 + <td></td> 372 + </tr> 373 + ` : visibleTracks.map( 374 + (track) => html` 375 + <tr 376 + class="${highlighted === track.id ? `highlighted` : ``}" 377 + @click="${() => this.$highlightedTrack.value = track.id}" 378 + @dblclick="${() => this.playTrack(track)}" 379 + > 380 + <td>${track.tags?.title}</td> 381 + <td>${track.tags?.artist}</td> 382 + <td>${track.tags?.album}</td> 383 + </tr> 384 + ` 385 + )} 386 + </tbody> 387 + </table> 388 + </div> 389 + </div> 390 + `; 391 + } 392 + }; 393 + var element_default = Browser; 394 + var CLASS = Browser; 395 + var NAME = "dtw-browser"; 396 + customElements.define(NAME, CLASS); 397 + 398 + export { 399 + element_default, 400 + CLASS, 401 + NAME 402 + }; 403 + 404 + //# sourceMappingURL=./chunk-ZOIYKCCT.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZOIYKCCT.js.map
··· 1 + {"version":3,"sources":["/themes/webamp/browser/element.js"],"sourcesContent":["import {\n DiffuseElement,\n query,\n whenElementsDefined,\n} from \"~/common/element.js\";\nimport { computed, signal, untracked } from \"~/common/signal.js\";\nimport * as Playlist from \"~/common/playlist.js\";\n\n/**\n * @import {RenderArg} from \"~/common/element.d.ts\"\n * @import {SignalReader} from \"~/common/signal.d.ts\";\n * @import {Track} from \"~/definitions/types.d.ts\"\n * @import {OutputElement} from \"~/components/output/types.d.ts\"\n */\n\nconst ROW_HEIGHT = 14;\nconst OVERSCAN = 20;\n\nconst SORT_OPTIONS = [\n { label: \"Default\", value: [] },\n { label: \"Added to collection\", value: [\"createdAt\"] },\n { label: \"Title\", value: [\"tags.title\"] },\n { label: \"Album\", value: [\"tags.album\", \"tags.disc.no\", \"tags.track.no\"] },\n {\n label: \"Artist\",\n value: [\"tags.artist\", \"tags.album\", \"tags.disc.no\", \"tags.track.no\"],\n },\n { label: \"Year\", value: [\"tags.year\"] },\n { label: \"Date\", value: [\"tags.date\"] },\n];\n\nclass Browser extends DiffuseElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n }\n\n // SIGNALS\n\n $output = signal(\n /** @type {OutputElement | undefined} */ (undefined),\n );\n\n $provider = signal(\n /** @type {DiffuseElement & { tracks: SignalReader<Track[]> } | undefined} */ (undefined),\n );\n\n $queue = signal(\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS | undefined} */ (undefined),\n );\n\n $scope = signal(\n /** @type {import(\"~/components/engine/scope/element.js\").CLASS | undefined} */ (undefined),\n );\n\n $highlightedTrack = signal(/** @type {string | null} */ (null));\n\n $groupedPlaylists = computed(() => {\n const items = this.$output.value?.playlistItems.collection();\n if (!items?.length) return [];\n\n // Group items by playlist name\n /** @type {Map<string, { name: string, unordered: boolean }>} */\n const playlistMap = Playlist.gather(items);\n\n const all = [...playlistMap.values()].sort((a, b) =>\n a.name.localeCompare(b.name)\n );\n\n const ordered = all.filter((p) => !p.unordered);\n const unordered = all.filter((p) => p.unordered);\n\n return [\n { label: \"Ordered\", playlists: ordered },\n { label: \"Unordered\", playlists: unordered },\n ].filter((g) => g.playlists.length > 0);\n });\n\n // STATE\n\n #scrollTop = 0;\n #viewportHeight = 0;\n #renderedStartIndex = -1;\n #renderedEndIndex = -1;\n\n /** @type {ResizeObserver | undefined} */\n #resizeObserver;\n\n // LIFECYCLE\n\n /**\n * @override\n */\n connectedCallback() {\n super.connectedCallback();\n\n /** @type {OutputElement} */\n const output = query(this, \"output-selector\");\n\n /** @type {DiffuseElement & { tracks: SignalReader<Track[]> }} */\n const provider = query(this, \"tracks-selector\");\n\n /** @type {import(\"~/components/engine/queue/element.js\").CLASS} */\n const queue = query(this, \"queue-engine-selector\");\n\n /** @type {import(\"~/components/engine/scope/element.js\").CLASS} */\n const scope = query(this, \"scope-engine-selector\");\n\n // Wait for the above dependencies to be defined, then render again.\n whenElementsDefined({ output, provider, queue, scope }).then(() => {\n this.$output.value = output;\n this.$provider.value = provider;\n this.$queue.value = queue;\n this.$scope.value = scope;\n });\n\n // Effects\n this.effect(() => {\n const _results = this.$provider.value?.tracks();\n\n untracked(() => {\n const panel = this.root().querySelector(\".sunken-panel\");\n if (panel) {\n panel.scrollTo(0, 0);\n this.#scrollTop = 0;\n }\n });\n });\n\n // Scroll & resize tracking (set up once after first render)\n this.#setupScrollTracking();\n\n this.effect(() => {\n const playlist = this.$scope.value?.playlist();\n const select = this.root().querySelector(\"#playlist-select\");\n\n if (select) {\n /** @type {HTMLSelectElement} */ (select).value = playlist ?? \"\";\n }\n });\n\n this.effect(() => {\n const sortBy = this.$scope.value?.sortBy();\n const select = this.root().querySelector(\"#sort-by-select\");\n\n if (select) {\n /** @type {HTMLSelectElement} */ (select).value = JSON.stringify(\n sortBy ?? [],\n );\n }\n });\n }\n\n /**\n * @override\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#resizeObserver?.disconnect();\n }\n\n // SCROLL\n\n #setupScrollTracking() {\n requestAnimationFrame(() => {\n const panel = this.root().querySelector(\".sunken-panel\");\n if (!panel) return;\n\n panel.addEventListener(\n \"scroll\",\n () => {\n this.#scrollTop = panel.scrollTop;\n this.#renderIfWindowChanged(panel);\n },\n { passive: true },\n );\n\n this.#resizeObserver = new ResizeObserver((entries) => {\n this.#viewportHeight = entries[0].contentRect.height;\n this.#renderIfWindowChanged(panel);\n });\n\n this.#resizeObserver.observe(panel);\n });\n }\n\n #computeWindow() {\n const startIndex = Math.max(\n 0,\n Math.floor(this.#scrollTop / ROW_HEIGHT) - OVERSCAN,\n );\n const visibleCount = Math.ceil(this.#viewportHeight / ROW_HEIGHT) +\n 2 * OVERSCAN;\n\n return { startIndex, endIndex: startIndex + visibleCount };\n }\n\n /**\n * @param {Element} panel\n */\n #renderIfWindowChanged(panel) {\n const { startIndex, endIndex } = this.#computeWindow();\n\n if (\n startIndex === this.#renderedStartIndex &&\n endIndex === this.#renderedEndIndex\n ) {\n return;\n }\n\n const scrollTop = panel.scrollTop;\n this.forceRender();\n panel.scrollTop = scrollTop;\n }\n\n // EVENTS\n\n /**\n * @param {Track} track\n */\n playTrack(track) {\n this.$queue.value?.add({\n inFront: true,\n trackIds: [track.id],\n });\n\n this.$queue.value?.shift();\n }\n\n setSearchTerm = () => {\n /** @type {HTMLInputElement | null} */\n const input = this.root().querySelector(\"#search-input\");\n const term = input?.value?.trim();\n\n this.$scope.value?.setSearchTerm(term);\n };\n\n /**\n * @param {Event} event\n */\n setSelectedPlaylist = (event) => {\n const value = /** @type {HTMLSelectElement} */ (event.currentTarget).value;\n\n this.$scope.value?.setPlaylist(value === \"\" ? undefined : value);\n };\n\n /**\n * @param {Event} event\n */\n setSortBy = (event) => {\n const value = /** @type {HTMLSelectElement} */ (event.currentTarget).value;\n\n this.$scope.value?.setSortBy(JSON.parse(value));\n };\n\n // RENDER\n\n /**\n * @param {RenderArg} _\n */\n render({ html }) {\n const highlighted = this.$highlightedTrack.value;\n const isLoading = this.$output.value?.tracks?.state() !== \"loaded\";\n const tracks = this.$provider.value?.tracks() ?? [];\n const playlist = this.$scope.value?.playlist();\n const searchTerm = this.$scope.value?.searchTerm() ?? \"\";\n const sortByJson = JSON.stringify(this.$scope.value?.sortBy() ?? []);\n\n // Virtual list\n const totalTracks = tracks.length;\n const { startIndex, endIndex: rawEnd } = this.#computeWindow();\n const endIndex = Math.min(totalTracks, rawEnd);\n\n this.#renderedStartIndex = startIndex;\n this.#renderedEndIndex = endIndex;\n\n const visibleTracks = tracks.slice(startIndex, endIndex);\n const totalHeight = totalTracks * ROW_HEIGHT;\n const topPad = startIndex * ROW_HEIGHT;\n\n return html`\n <link rel=\"stylesheet\" href=\"vendor/98.css\" />\n\n <style>\n @import \"./themes/webamp/98-vars.css\";\n\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n /***********************************\n * SEARCH\n ***********************************/\n\n search {\n margin-bottom: var(--grouped-button-spacing);\n }\n\n search input {\n color: inherit;\n flex: 1;\n }\n\n search select {\n color: inherit;\n max-width: 33%;\n }\n\n /***********************************\n * TABLE\n ***********************************/\n\n .sunken-panel {\n flex: 1;\n min-height: 80px;\n }\n\n :host([resizable]) .sunken-panel {\n resize: both;\n }\n\n .virtual-header {\n position: sticky;\n top: 0;\n z-index: 1;\n }\n\n table {\n color: var(--text-color);\n table-layout: fixed;\n width: 100%;\n }\n\n table th {\n width: 30%;\n\n &:first-child {\n width: 40%;\n }\n }\n\n .virtual-scroll table {\n will-change: transform;\n }\n\n table tbody tr {\n cursor: pointer;\n }\n\n table td {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n </style>\n\n <search class=\"field-row\">\n <label for=\"search-input\">Search:</label>\n <input\n id=\"search-input\"\n type=\"search\"\n @change=\"${this\n .setSearchTerm}\"\n .value=\"${searchTerm}\"\n />\n <label for=\"playlist-select\">Playlist:</label>\n <select id=\"playlist-select\" @change=\"${this.setSelectedPlaylist}\">\n <option value=\"\" ?selected=\"${!playlist ||\n playlist === ``}\">All tracks</option>\n ${this.$groupedPlaylists().map((group) =>\n html`\n <optgroup label=\"${group.label}\">\n ${group.playlists.map((p) =>\n html`\n <option\n value=\"${p.name}\"\n ?selected=\"${p.name === playlist}\"\n >\n ${p.name}\n </option>\n `\n )}\n </optgroup>\n `\n )}\n </select>\n <label for=\"sort-by-select\">Sort by:</label>\n <select id=\"sort-by-select\" @change=\"${this.setSortBy}\">\n ${SORT_OPTIONS.map((opt) => {\n const json = JSON.stringify(opt.value);\n return html`\n <option value=\"${json}\" ?selected=\"${sortByJson === json}\">${opt\n .label}</option>\n `;\n })}\n </select>\n </search>\n\n <div class=\"sunken-panel\">\n <table class=\"virtual-header\">\n <thead>\n <tr>\n <th>Title</th>\n <th>Artist</th>\n <th>Album</th>\n </tr>\n </thead>\n </table>\n <div class=\"virtual-scroll\" style=\"height:${totalHeight}px\">\n <table style=\"transform: translateY(${topPad}px)\">\n <colgroup>\n <col style=\"width:40%\">\n <col style=\"width:30%\">\n <col style=\"width:30%\">\n </colgroup>\n <tbody>\n ${isLoading\n ? html`\n <tr>\n <td>Loading ...</td>\n <td></td>\n <td></td>\n </tr>\n `\n : visibleTracks.map((track) =>\n html`\n <tr\n class=\"${highlighted === track.id ? `highlighted` : ``}\"\n @click=\"${() => this.$highlightedTrack.value = track.id}\"\n @dblclick=\"${() => this.playTrack(track)}\"\n >\n <td>${track.tags?.title}</td>\n <td>${track.tags?.artist}</td>\n <td>${track.tags?.album}</td>\n </tr>\n `\n )}\n </tbody>\n </table>\n </div>\n </div>\n `;\n }\n}\n\nexport default Browser;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = Browser;\nexport const NAME = \"dtw-browser\";\n\ncustomElements.define(NAME, CLASS);\n"],"mappings":"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","names":[],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/chunk-ZOIYKCCT.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZQZJJU3T.js
··· 1 + ../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/chunk-ZQZJJU3T.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZQZJJU3T.js.map
··· 1 + ../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/chunk-ZQZJJU3T.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZROTLYIH.js
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ZROTLYIH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/chunk-ZROTLYIH.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/chunk-ZROTLYIH.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/cid.js
··· 1 + ../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/cid.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/cid.js.map
··· 1 + ../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/cid.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/compare.js
··· 1 + ../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/common/compare.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/compare.js.map
··· 1 + ../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/common/compare.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/element.js
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/element.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/element.js.map
+64
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/facets/foundation.js
··· 1 + import { 2 + GROUP, 3 + config, 4 + findExistingOrAdd, 5 + foundation_default 6 + } from "../../chunk-FIX46GRA.js"; 7 + import "../../chunk-VOFM65C2.js"; 8 + import "../../chunk-HDE6FJCN.js"; 9 + import "../../chunk-ZROTLYIH.js"; 10 + import "../../chunk-2SPFBYRD.js"; 11 + import "../../chunk-K4XAE7PE.js"; 12 + import "../../chunk-XKXQMVTB.js"; 13 + import "../../chunk-ABL7GBBM.js"; 14 + import "../../chunk-TMIJ7SWF.js"; 15 + import "../../chunk-QKKQKAE5.js"; 16 + import "../../chunk-2HKIFQJO.js"; 17 + import "../../chunk-IKAIRC6G.js"; 18 + import "../../chunk-2PHQN23Z.js"; 19 + import "../../chunk-ENDOZK4Q.js"; 20 + import "../../chunk-FQ7GPRG2.js"; 21 + import "../../chunk-TMGAIVLV.js"; 22 + import "../../chunk-U4HLMEDD.js"; 23 + import "../../chunk-Y4UF3TDF.js"; 24 + import "../../chunk-HN4F5JEZ.js"; 25 + import "../../chunk-X2U7TZQT.js"; 26 + import "../../chunk-AGWC42GJ.js"; 27 + import "../../chunk-TRIYIVJH.js"; 28 + import "../../chunk-I3VKG3ZJ.js"; 29 + import "../../chunk-D6OAWBEV.js"; 30 + import "../../chunk-ZDMTYKI5.js"; 31 + import "../../chunk-6DRHTH2U.js"; 32 + import "../../chunk-JR4EW3HT.js"; 33 + import "../../chunk-BDBXPVO6.js"; 34 + import "../../chunk-JBHW662S.js"; 35 + import "../../chunk-H7PU7XY7.js"; 36 + import "../../chunk-VCRMPF2R.js"; 37 + import "../../chunk-YBUNVPVS.js"; 38 + import "../../chunk-OAG3HI6B.js"; 39 + import "../../chunk-JDKXATSY.js"; 40 + import "../../chunk-TS4JJWFE.js"; 41 + import "../../chunk-3L563ZA4.js"; 42 + import "../../chunk-VQR5VNUL.js"; 43 + import "../../chunk-EEUCFWD4.js"; 44 + import "../../chunk-IYNRCNPM.js"; 45 + import "../../chunk-3USAPKOY.js"; 46 + import "../../chunk-HMBZONBJ.js"; 47 + import "../../chunk-7U5QHBAZ.js"; 48 + import "../../chunk-2V4VRBHO.js"; 49 + import "../../chunk-G56PUJUJ.js"; 50 + import "../../chunk-BKRD2ZIW.js"; 51 + import "../../chunk-SGR5ST3A.js"; 52 + import "../../chunk-6DKPDMFE.js"; 53 + import "../../chunk-TP5GZFTO.js"; 54 + import "../../chunk-ZQZJJU3T.js"; 55 + import "../../chunk-HNJPKCUJ.js"; 56 + import "../../chunk-FZQXS3RE.js"; 57 + export { 58 + GROUP, 59 + config, 60 + foundation_default as default, 61 + findExistingOrAdd 62 + }; 63 + 64 + //# sourceMappingURL=./foundation.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/facets/foundation.js.map
··· 1 + ../../../bafybeibpmqpxuvey34kzaxj3yyprwbkgvhbuz3xpxb74jpk7nxgxu2yr74/common/facets/foundation.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/facets/utils.js
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/facets/utils.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/facets/utils.js.map
··· 1 + ../../../bafybeibpmqpxuvey34kzaxj3yyprwbkgvhbuz3xpxb74jpk7nxgxu2yr74/common/facets/utils.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/loader.js
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/loader.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/loader.js.map
··· 1 + ../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/common/loader.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/output.js
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/output.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/output.js.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/output.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/playlist.js
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/playlist.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/playlist.js.map
··· 1 + ../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/playlist.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/signal.js
··· 1 + ../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/common/signal.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/signal.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/signal.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/themes/utils.js
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/themes/utils.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/themes/utils.js.map
··· 1 + ../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/common/themes/utils.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/track.js
··· 1 + ../../bafybeidjafrs7ninvfei7lpwwdxcb6iddo52q2twtmznramlolmp6mi5ai/common/track.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/track.js.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/track.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/utils.js
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/utils.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/utils.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/utils.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/webawesome/detect-dark.js
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/webawesome/detect-dark.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/webawesome/detect-dark.js.map
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/common/webawesome/detect-dark.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/worker.js
··· 1 + ../../bafybeif36x7yy3gignoyekheplnhh4og5l5z3nrvviouxgiy36iimz3vai/common/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/worker.js.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/common/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/worker/rpc-channel.js
··· 1 + ../../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/common/worker/rpc-channel.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/common/worker/rpc-channel.js.map
··· 1 + ../../../bafybeidql7hdkrjfygjungtaqteq4sjgcxcjpndgmjqp7yt4rjqzrdfvja/common/worker/rpc-channel.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/configurator/input/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/configurator/input/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/configurator/input/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/configurator/input/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/configurator/input/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/configurator/input/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/configurator/input/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/configurator/input/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/configurator/output/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/configurator/output/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/configurator/output/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/configurator/output/element.js.map
+24
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/audio/element.js
··· 1 + import { 2 + AudioEngineItem, 3 + CLASS, 4 + NAME, 5 + NAME_ITEM, 6 + element_default 7 + } from "../../../chunk-OAG3HI6B.js"; 8 + import "../../../chunk-JDKXATSY.js"; 9 + import "../../../chunk-2V4VRBHO.js"; 10 + import "../../../chunk-G56PUJUJ.js"; 11 + import "../../../chunk-6DKPDMFE.js"; 12 + import "../../../chunk-TP5GZFTO.js"; 13 + import "../../../chunk-ZQZJJU3T.js"; 14 + import "../../../chunk-HNJPKCUJ.js"; 15 + import "../../../chunk-FZQXS3RE.js"; 16 + export { 17 + AudioEngineItem, 18 + CLASS, 19 + NAME, 20 + NAME_ITEM, 21 + element_default as default 22 + }; 23 + 24 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/audio/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/engine/audio/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/queue/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/engine/queue/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/queue/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/engine/queue/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/queue/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/engine/queue/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/queue/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/engine/queue/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/repeat-shuffle/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/engine/repeat-shuffle/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/repeat-shuffle/element.js.map
··· 1 + ../../../../bafybeia4lo67fqia3emjf54vzbrvfyao6fwndoc4rnqpav4yezowfg4j6e/components/engine/repeat-shuffle/element.js.map
+19
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/scope/element.js
··· 1 + import { 2 + CLASS, 3 + NAME, 4 + element_default 5 + } from "../../../chunk-VQR5VNUL.js"; 6 + import "../../../chunk-2V4VRBHO.js"; 7 + import "../../../chunk-G56PUJUJ.js"; 8 + import "../../../chunk-6DKPDMFE.js"; 9 + import "../../../chunk-TP5GZFTO.js"; 10 + import "../../../chunk-ZQZJJU3T.js"; 11 + import "../../../chunk-HNJPKCUJ.js"; 12 + import "../../../chunk-FZQXS3RE.js"; 13 + export { 14 + CLASS, 15 + NAME, 16 + element_default as default 17 + }; 18 + 19 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/engine/scope/element.js.map
··· 1 + ../../../../bafybeihr4brahqptxmxcdksktdfgs4hyl64odwx524vqmmitjvmn57sklq/components/engine/scope/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/common.js
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/common.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/common.js.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/common.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/https/common.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/common.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/constants.js
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/constants.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/https/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/element.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/https/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/https/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/https/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/https/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/common.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/local/common.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/common.js.map
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/constants.js
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/constants.js.map
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/local/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/element.js.map
··· 1 + ../../../../bafybeiftqofdq4smwmja7bhcconzsevvy3hqxq2mhyujfz4r5zdx4cb5ma/components/input/local/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/local/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/local/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/local/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/class.js
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/opensubsonic/class.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/class.js.map
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/components/input/opensubsonic/class.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/common.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/opensubsonic/common.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/opensubsonic/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/constants.js
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/input/opensubsonic/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/opensubsonic/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/opensubsonic/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/opensubsonic/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/opensubsonic/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/opensubsonic/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/opensubsonic/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/common.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/s3/common.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/s3/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/constants.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/s3/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/s3/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/s3/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/input/s3/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/s3/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/input/s3/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/input/s3/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/auto-queue/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/auto-queue/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/auto-queue/element.js.map
··· 1 + ../../../../bafybeia4lo67fqia3emjf54vzbrvfyao6fwndoc4rnqpav4yezowfg4j6e/components/orchestrator/auto-queue/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/favourites/common.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/favourites/common.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/favourites/common.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/orchestrator/favourites/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/favourites/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/favourites/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/favourites/element.js.map
··· 1 + ../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/orchestrator/favourites/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/favourites/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/favourites/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/favourites/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/favourites/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/input/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/input/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/input/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/orchestrator/input/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/media-session/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/media-session/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/media-session/element.js.map
··· 1 + ../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/orchestrator/media-session/element.js.map
+55
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/offline/element.js
··· 1 + import { 2 + DiffuseElement 3 + } from "../../../chunk-2V4VRBHO.js"; 4 + import "../../../chunk-G56PUJUJ.js"; 5 + import "../../../chunk-6DKPDMFE.js"; 6 + import "../../../chunk-TP5GZFTO.js"; 7 + import "../../../chunk-ZQZJJU3T.js"; 8 + import "../../../chunk-HNJPKCUJ.js"; 9 + import { 10 + __name, 11 + init_Buffer, 12 + init_process 13 + } from "../../../chunk-FZQXS3RE.js"; 14 + 15 + // components/orchestrator/offline/element.js 16 + init_Buffer(); 17 + init_process(); 18 + var OfflineOrchestrator = class extends DiffuseElement { 19 + static { 20 + __name(this, "OfflineOrchestrator"); 21 + } 22 + static NAME = "diffuse/orchestrator/offline"; 23 + // LIFECYCLE 24 + /** @override */ 25 + async connectedCallback() { 26 + super.connectedCallback(); 27 + if (!("serviceWorker" in navigator)) return; 28 + const cacheName = this.getAttribute("cache-name") ?? "diffuse-offline"; 29 + const scope = this.getAttribute("scope") ?? document.baseURI ?? "./"; 30 + const src = this.getAttribute("src"); 31 + const swUrl = new URL( 32 + src ?? import.meta.resolve("../../../service-worker-offline.js") 33 + ); 34 + swUrl.searchParams.set("cache-name", cacheName); 35 + try { 36 + await navigator.serviceWorker.register(swUrl.href, { 37 + type: "module", 38 + scope 39 + }); 40 + } catch (error) { 41 + console.warn("[do-offline] Failed to register service worker:", error); 42 + } 43 + } 44 + }; 45 + var element_default = OfflineOrchestrator; 46 + var CLASS = OfflineOrchestrator; 47 + var NAME = "do-offline"; 48 + customElements.define(NAME, OfflineOrchestrator); 49 + export { 50 + CLASS, 51 + NAME, 52 + element_default as default 53 + }; 54 + 55 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/offline/element.js.map
··· 1 + {"version":3,"sources":["/element.js"],"sourcesContent":["import { DiffuseElement } from \"~/common/element.js\";\n\n////////////////////////////////////////////\n// ELEMENT\n////////////////////////////////////////////\n\n/**\n * Registers a service worker that makes the page available offline.\n *\n * All resources fetched by the page are cached as they load.\n * While online, requests always go to the network (the cache is bypassed),\n * and successful responses are stored for later. While offline, the cache\n * is used as a fallback.\n *\n * Attributes:\n * cache-name Name of the cache to use (default: \"diffuse-offline\")\n * scope Service worker scope (default: document.baseURI ?? \"./\")\n * src URL of the service worker script (default: built-in service-worker.js)\n * Must be served from a path within the requested scope, or the server\n * must include a `Service-Worker-Allowed: /` response header.\n */\nclass OfflineOrchestrator extends DiffuseElement {\n static NAME = \"diffuse/orchestrator/offline\";\n\n // LIFECYCLE\n\n /** @override */\n async connectedCallback() {\n super.connectedCallback();\n\n if (!(\"serviceWorker\" in navigator)) return;\n\n const cacheName = this.getAttribute(\"cache-name\") ?? \"diffuse-offline\";\n const scope = this.getAttribute(\"scope\") ?? document.baseURI ?? \"./\";\n const src = this.getAttribute(\"src\");\n\n const swUrl = new URL(\n src ?? import.meta.resolve(\"../../../service-worker-offline.js\"),\n );\n\n swUrl.searchParams.set(\"cache-name\", cacheName);\n\n try {\n await navigator.serviceWorker.register(swUrl.href, {\n type: \"module\",\n scope,\n });\n } catch (error) {\n console.warn(\"[do-offline] Failed to register service worker:\", error);\n }\n }\n}\n\nexport default OfflineOrchestrator;\n\n////////////////////////////////////////////\n// REGISTER\n////////////////////////////////////////////\n\nexport const CLASS = OfflineOrchestrator;\nexport const NAME = \"do-offline\";\n\ncustomElements.define(NAME, OfflineOrchestrator);\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAqBA,IAAM,sBAAN,cAAkC,eAAe;AAAA,EArBjD,OAqBiD;AAAA;AAAA;AAAA,EAC/C,OAAO,OAAO;AAAA;AAAA;AAAA,EAKd,MAAM,oBAAoB;AACxB,UAAM,kBAAkB;AAExB,QAAI,EAAE,mBAAmB,WAAY;AAErC,UAAM,YAAY,KAAK,aAAa,YAAY,KAAK;AACrD,UAAM,QAAQ,KAAK,aAAa,OAAO,KAAK,SAAS,WAAW;AAChE,UAAM,MAAM,KAAK,aAAa,KAAK;AAEnC,UAAM,QAAQ,IAAI;AAAA,MAChB,OAAO,YAAY,QAAQ,oCAAoC;AAAA,IACjE;AAEA,UAAM,aAAa,IAAI,cAAc,SAAS;AAE9C,QAAI;AACF,YAAM,UAAU,cAAc,SAAS,MAAM,MAAM;AAAA,QACjD,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAO;AACd,cAAQ,KAAK,mDAAmD,KAAK;AAAA,IACvE;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ;AAMR,IAAM,QAAQ;AACd,IAAM,OAAO;AAEpB,eAAe,OAAO,MAAM,mBAAmB;","names":[],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/components/orchestrator/offline/element.js.map"}
+23
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/output/element.js
··· 1 + import { 2 + CLASS, 3 + NAME, 4 + element_default 5 + } from "../../../chunk-QKKQKAE5.js"; 6 + import "../../../chunk-2HKIFQJO.js"; 7 + import "../../../chunk-IKAIRC6G.js"; 8 + import "../../../chunk-2PHQN23Z.js"; 9 + import "../../../chunk-YBUNVPVS.js"; 10 + import "../../../chunk-2V4VRBHO.js"; 11 + import "../../../chunk-G56PUJUJ.js"; 12 + import "../../../chunk-6DKPDMFE.js"; 13 + import "../../../chunk-TP5GZFTO.js"; 14 + import "../../../chunk-ZQZJJU3T.js"; 15 + import "../../../chunk-HNJPKCUJ.js"; 16 + import "../../../chunk-FZQXS3RE.js"; 17 + export { 18 + CLASS, 19 + NAME, 20 + element_default as default 21 + }; 22 + 23 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/output/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/orchestrator/output/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/process-tracks/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/process-tracks/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/process-tracks/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/orchestrator/process-tracks/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/process-tracks/worker.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/process-tracks/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/process-tracks/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/process-tracks/worker.js.map
+19
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/queue-audio/element.js
··· 1 + import { 2 + CLASS, 3 + NAME, 4 + element_default 5 + } from "../../../chunk-FQ7GPRG2.js"; 6 + import "../../../chunk-2V4VRBHO.js"; 7 + import "../../../chunk-G56PUJUJ.js"; 8 + import "../../../chunk-6DKPDMFE.js"; 9 + import "../../../chunk-TP5GZFTO.js"; 10 + import "../../../chunk-ZQZJJU3T.js"; 11 + import "../../../chunk-HNJPKCUJ.js"; 12 + import "../../../chunk-FZQXS3RE.js"; 13 + export { 14 + CLASS, 15 + NAME, 16 + element_default as default 17 + }; 18 + 19 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/queue-audio/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/orchestrator/queue-audio/element.js.map
+22
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/scoped-tracks/element.js
··· 1 + import { 2 + CLASS, 3 + NAME, 4 + element_default 5 + } from "../../../chunk-2SPFBYRD.js"; 6 + import "../../../chunk-IYNRCNPM.js"; 7 + import "../../../chunk-3USAPKOY.js"; 8 + import "../../../chunk-HMBZONBJ.js"; 9 + import "../../../chunk-2V4VRBHO.js"; 10 + import "../../../chunk-G56PUJUJ.js"; 11 + import "../../../chunk-6DKPDMFE.js"; 12 + import "../../../chunk-TP5GZFTO.js"; 13 + import "../../../chunk-ZQZJJU3T.js"; 14 + import "../../../chunk-HNJPKCUJ.js"; 15 + import "../../../chunk-FZQXS3RE.js"; 16 + export { 17 + CLASS, 18 + NAME, 19 + element_default as default 20 + }; 21 + 22 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/scoped-tracks/element.js.map
··· 1 + ../../../../bafybeihr4brahqptxmxcdksktdfgs4hyl64odwx524vqmmitjvmn57sklq/components/orchestrator/scoped-tracks/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/sources/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/orchestrator/sources/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/orchestrator/sources/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/orchestrator/sources/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/bytes/s3/constants.js
··· 1 + ../../../../../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/components/output/bytes/s3/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/bytes/s3/constants.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/bytes/s3/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/bytes/s3/element.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/output/bytes/s3/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/bytes/s3/element.js.map
··· 1 + ../../../../../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/components/output/bytes/s3/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/bytes/s3/worker.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/output/bytes/s3/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/bytes/s3/worker.js.map
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/output/bytes/s3/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/common.js
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/output/common.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/common.js.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/polymorphic/indexed-db/constants.js
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/polymorphic/indexed-db/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/polymorphic/indexed-db/constants.js.map
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/polymorphic/indexed-db/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/polymorphic/indexed-db/element.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/output/polymorphic/indexed-db/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/polymorphic/indexed-db/element.js.map
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/output/polymorphic/indexed-db/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/raw/atproto/element.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/output/raw/atproto/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/raw/atproto/element.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/raw/atproto/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/raw/atproto/oauth.js
··· 1 + ../../../../../bafybeicp5hi5rw4vffqlbmyqqaxhmxzx4ilejru3cq4esycpeyuuhen5ha/components/output/raw/atproto/oauth.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/output/raw/atproto/oauth.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/output/raw/atproto/oauth.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/artwork/constants.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/processor/artwork/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/artwork/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/artwork/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/artwork/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/processor/artwork/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/artwork/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/artwork/element.js.map
+178
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/artwork/worker.js
··· 1 + import { 2 + musicMetadataTags 3 + } from "../../../chunk-MIYY7OUT.js"; 4 + import "../../../chunk-7SBFGDAO.js"; 5 + import "../../../chunk-7BHFTEJL.js"; 6 + import "../../../chunk-SVYFDHZC.js"; 7 + import "../../../chunk-3IXJYTB6.js"; 8 + import "../../../chunk-J67JY2AB.js"; 9 + import "../../../chunk-YEYOLW6N.js"; 10 + import "../../../chunk-CMU4QLMC.js"; 11 + import "../../../chunk-F27JDJI2.js"; 12 + import { 13 + IDB_ARTWORK_PREFIX 14 + } from "../../../chunk-B4JTLSHZ.js"; 15 + import { 16 + get, 17 + set 18 + } from "../../../chunk-JBHW662S.js"; 19 + import "../../../chunk-3USAPKOY.js"; 20 + import "../../../chunk-HMBZONBJ.js"; 21 + import "../../../chunk-SGR5ST3A.js"; 22 + import { 23 + ostiary, 24 + rpc 25 + } from "../../../chunk-6DKPDMFE.js"; 26 + import "../../../chunk-TP5GZFTO.js"; 27 + import "../../../chunk-ZQZJJU3T.js"; 28 + import { 29 + __name, 30 + init_Buffer, 31 + init_process 32 + } from "../../../chunk-FZQXS3RE.js"; 33 + 34 + // components/processor/artwork/worker.js 35 + init_Buffer(); 36 + init_process(); 37 + var queue = []; 38 + async function artwork(request) { 39 + const art = await processRequest(request); 40 + return art; 41 + } 42 + __name(artwork, "artwork"); 43 + function supply(items) { 44 + const exe = !queue[0]; 45 + queue = [...queue, ...items]; 46 + if (exe) shiftQueue(); 47 + } 48 + __name(supply, "supply"); 49 + ostiary((context) => { 50 + rpc(context, { 51 + artwork, 52 + supply 53 + }); 54 + }); 55 + function escapeLucene(str) { 56 + return [].map.call(str, (char) => { 57 + if (char === "+" || char === "-" || char === "&" || char === "|" || char === "!" || char === "(" || char === ")" || char === "{" || char === "}" || char === "[" || char === "]" || char === "^" || char === '"' || char === "~" || char === "*" || char === "?" || char === ":" || char === "\\" || char === "/") { 58 + return "\\" + char; 59 + } else return char; 60 + }).join(""); 61 + } 62 + __name(escapeLucene, "escapeLucene"); 63 + async function lastFm(req) { 64 + if (!navigator.onLine) return []; 65 + const query = req.tags?.artist; 66 + return await fetch( 67 + `https://ws.audioscrobbler.com/2.0/?method=album.search&album=${query}&api_key=4f0fe85b67baef8bb7d008a8754a95e5&format=json` 68 + ).then((r) => r.json()).then((r) => lastFmCover(r.results.albummatches.album)).catch((err) => { 69 + console.error(err); 70 + return []; 71 + }); 72 + } 73 + __name(lastFm, "lastFm"); 74 + async function lastFmCover(remainingMatches) { 75 + const album = remainingMatches[0]; 76 + const url = album ? album.image[album.image.length - 1]["#text"] : null; 77 + return url && url !== "" ? await fetch(url).then((r) => r.blob()).then(async (b) => [ 78 + { 79 + bytes: await b.arrayBuffer().then((buf) => new Uint8Array(buf)), 80 + mime: b.type 81 + } 82 + ]).catch((err) => { 83 + return lastFmCover(remainingMatches.slice(1)); 84 + }) : album ? lastFmCover(remainingMatches.slice(1)) : []; 85 + } 86 + __name(lastFmCover, "lastFmCover"); 87 + async function musicBrainz(req) { 88 + const artist = req.tags?.artist; 89 + const album = req.tags?.album; 90 + if (!navigator.onLine) return []; 91 + if (!album && !artist) return []; 92 + const query = `release:"${escapeLucene(album || "")}"` + (req.variousArtists ? `` : ` AND artistname:"${escapeLucene(artist || "")}"`); 93 + const encodedQuery = encodeURIComponent(query); 94 + return await fetch( 95 + `https://musicbrainz.org/ws/2/release/?query=${encodedQuery}&fmt=json` 96 + ).then((r) => r.json()).then((r) => { 97 + if (r.releases.length === 0 && !req.variousArtists) { 98 + return musicBrainz({ ...req, variousArtists: true }); 99 + } else { 100 + return musicBrainzCover(r.releases, req); 101 + } 102 + }).catch((err) => { 103 + return []; 104 + }); 105 + } 106 + __name(musicBrainz, "musicBrainz"); 107 + async function musicBrainzCover(remainingReleases, req) { 108 + const release = remainingReleases[0]; 109 + if (!release) return []; 110 + const credit = release?.["artist-credit"]?.[0]?.name; 111 + if (req.variousArtists && credit !== "Various Artists" && credit !== req.tags?.artist) return []; 112 + return await fetch( 113 + `https://coverartarchive.org/release/${release.id}/front-1200` 114 + ).then((r) => r.blob()).then(async (b) => { 115 + if (b.type.startsWith("image/")) { 116 + return [{ 117 + bytes: await b.arrayBuffer().then((buf) => new Uint8Array(buf)), 118 + mime: b.type 119 + }]; 120 + } else { 121 + return musicBrainzCover(remainingReleases.slice(1), req); 122 + } 123 + }).catch((err) => { 124 + console.error(err); 125 + return musicBrainzCover(remainingReleases.slice(1), req); 126 + }); 127 + } 128 + __name(musicBrainzCover, "musicBrainzCover"); 129 + async function processRequest(req) { 130 + const cache = await get(`${IDB_ARTWORK_PREFIX}/${req.cacheId}`); 131 + if (cache && Array.isArray(cache) && cache.length) return cache; 132 + if (req.tags?.artist?.toUpperCase() === "VA") { 133 + req.variousArtists = true; 134 + } 135 + let art = []; 136 + const meta = await musicMetadataTags({ ...req, includeArtwork: true }).catch( 137 + /** @param {Error} err */ 138 + (err) => { 139 + console.error("music-metadata error", err); 140 + const extraction = {}; 141 + return extraction; 142 + } 143 + ); 144 + if (!req.tags && meta.tags) req.tags = meta.tags; 145 + const fromMeta = meta.artwork?.map( 146 + /** 147 + * @param {IPicture} a 148 + */ 149 + (a) => { 150 + return { bytes: a.data, mime: a.format }; 151 + } 152 + ) || []; 153 + art.push(...fromMeta); 154 + if (art.length === 0) { 155 + const fromMusicBrainz = await musicBrainz(req); 156 + art.push(...fromMusicBrainz); 157 + } 158 + if (art.length === 0) { 159 + const fromLastFm = await lastFm(req); 160 + art.push(...fromLastFm); 161 + } 162 + await set(`${IDB_ARTWORK_PREFIX}/${req.cacheId}`, art); 163 + return art; 164 + } 165 + __name(processRequest, "processRequest"); 166 + async function shiftQueue() { 167 + const next = queue.shift(); 168 + if (!next) return; 169 + await processRequest(next); 170 + await shiftQueue(); 171 + } 172 + __name(shiftQueue, "shiftQueue"); 173 + export { 174 + artwork, 175 + supply 176 + }; 177 + 178 + //# sourceMappingURL=./worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/artwork/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/processor/artwork/worker.js.map
+20
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/metadata/common.js
··· 1 + import { 2 + musicMetadataTags 3 + } from "../../../chunk-MIYY7OUT.js"; 4 + import "../../../chunk-7SBFGDAO.js"; 5 + import "../../../chunk-7BHFTEJL.js"; 6 + import "../../../chunk-SVYFDHZC.js"; 7 + import "../../../chunk-3IXJYTB6.js"; 8 + import "../../../chunk-J67JY2AB.js"; 9 + import "../../../chunk-YEYOLW6N.js"; 10 + import "../../../chunk-CMU4QLMC.js"; 11 + import "../../../chunk-F27JDJI2.js"; 12 + import "../../../chunk-3USAPKOY.js"; 13 + import "../../../chunk-HMBZONBJ.js"; 14 + import "../../../chunk-SGR5ST3A.js"; 15 + import "../../../chunk-FZQXS3RE.js"; 16 + export { 17 + musicMetadataTags 18 + }; 19 + 20 + //# sourceMappingURL=./common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/metadata/common.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/metadata/common.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/metadata/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/processor/metadata/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/metadata/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/metadata/element.js.map
+52
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/metadata/worker.js
··· 1 + import { 2 + musicMetadataTags 3 + } from "../../../chunk-MIYY7OUT.js"; 4 + import "../../../chunk-7SBFGDAO.js"; 5 + import "../../../chunk-7BHFTEJL.js"; 6 + import "../../../chunk-SVYFDHZC.js"; 7 + import "../../../chunk-3IXJYTB6.js"; 8 + import "../../../chunk-J67JY2AB.js"; 9 + import "../../../chunk-YEYOLW6N.js"; 10 + import "../../../chunk-CMU4QLMC.js"; 11 + import "../../../chunk-F27JDJI2.js"; 12 + import "../../../chunk-3USAPKOY.js"; 13 + import "../../../chunk-HMBZONBJ.js"; 14 + import "../../../chunk-SGR5ST3A.js"; 15 + import { 16 + ostiary, 17 + rpc 18 + } from "../../../chunk-6DKPDMFE.js"; 19 + import "../../../chunk-TP5GZFTO.js"; 20 + import "../../../chunk-ZQZJJU3T.js"; 21 + import { 22 + __name, 23 + init_Buffer, 24 + init_process 25 + } from "../../../chunk-FZQXS3RE.js"; 26 + 27 + // components/processor/metadata/worker.js 28 + init_Buffer(); 29 + init_process(); 30 + async function supply(args) { 31 + return await musicMetadataTags(args).catch( 32 + /** 33 + * @param {Error} err 34 + * @returns {Extraction} 35 + */ 36 + (err) => { 37 + console.warn("Metadata processor error:", err, args); 38 + return {}; 39 + } 40 + ); 41 + } 42 + __name(supply, "supply"); 43 + ostiary((context) => { 44 + rpc(context, { 45 + supply 46 + }); 47 + }); 48 + export { 49 + supply 50 + }; 51 + 52 + //# sourceMappingURL=./worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/metadata/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/processor/metadata/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/search/constants.js
··· 1 + ../../../../bafybeicokklzc7qrdyz7qaho5jskzgdhzi7o2ihwvbbalw6c5p75fsyfie/components/processor/search/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/search/constants.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/search/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/search/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/processor/search/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/search/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/processor/search/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/search/worker.js
··· 1 + ../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/processor/search/worker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/processor/search/worker.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/processor/search/worker.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/base.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/base.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/base.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/base.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/automerge/constants.js
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/bytes/automerge/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/automerge/constants.js.map
··· 1 + ../../../../../../bafybeieo3vdz7hmuriods6ueueg5yt6xctzjqrmqdasqr4plalwojiwvou/components/transformer/output/bytes/automerge/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/automerge/element.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/bytes/automerge/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/automerge/element.js.map
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/bytes/automerge/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/automerge/utils.js
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/bytes/automerge/utils.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/automerge/utils.js.map
··· 1 + ../../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/components/transformer/output/bytes/automerge/utils.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/dasl-sync/constants.js
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/bytes/dasl-sync/constants.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/dasl-sync/constants.js.map
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/bytes/dasl-sync/constants.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/dasl-sync/element.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/bytes/dasl-sync/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/dasl-sync/element.js.map
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/bytes/dasl-sync/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/json/element.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/bytes/json/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/bytes/json/element.js.map
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/bytes/json/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/raw/atproto-sync/element.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/raw/atproto-sync/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/raw/atproto-sync/element.js.map
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/raw/atproto-sync/element.js.map
+20
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/refiner/default/element.js
··· 1 + import { 2 + CLASS, 3 + NAME, 4 + element_default 5 + } from "../../../../../chunk-IKAIRC6G.js"; 6 + import "../../../../../chunk-2PHQN23Z.js"; 7 + import "../../../../../chunk-2V4VRBHO.js"; 8 + import "../../../../../chunk-G56PUJUJ.js"; 9 + import "../../../../../chunk-6DKPDMFE.js"; 10 + import "../../../../../chunk-TP5GZFTO.js"; 11 + import "../../../../../chunk-ZQZJJU3T.js"; 12 + import "../../../../../chunk-HNJPKCUJ.js"; 13 + import "../../../../../chunk-FZQXS3RE.js"; 14 + export { 15 + CLASS, 16 + NAME, 17 + element_default as default 18 + }; 19 + 20 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/refiner/default/element.js.map
··· 1 + ../../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/components/transformer/output/refiner/default/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/refiner/track-uri-passkey/element.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/refiner/track-uri-passkey/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/refiner/track-uri-passkey/element.js.map
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/refiner/track-uri-passkey/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/refiner/track-uri-passkey/passkey.js
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/refiner/track-uri-passkey/passkey.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/refiner/track-uri-passkey/passkey.js.map
··· 1 + ../../../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/components/transformer/output/refiner/track-uri-passkey/passkey.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/string/json/element.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/string/json/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/components/transformer/output/string/json/element.js.map
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/components/transformer/output/string/json/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/index.ts
··· 1 + ../../bafybeicp5hi5rw4vffqlbmyqqaxhmxzx4ilejru3cq4esycpeyuuhen5ha/definitions/index.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/collaboration.json
··· 1 + ../../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/definitions/output/collaboration.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/facet.json
··· 1 + ../../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/definitions/output/facet.json
+50
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/playlistItem.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.diffuse.output.playlistItem", 4 + "defs": { 5 + "main": { 6 + "type": "record", 7 + "record": { 8 + "type": "object", 9 + "required": ["id", "criteria", "playlist"], 10 + "properties": { 11 + "id": { "type": "string" }, 12 + "createdAt": { "type": "string", "format": "datetime" }, 13 + "criteria": { 14 + "type": "array", 15 + "description": "Criteria for matching this item against a set of tracks", 16 + "items": { "type": "ref", "ref": "#criterion" } 17 + }, 18 + "ephemeral": { "type": "boolean" }, 19 + "playlist": { "type": "string", "description": "The name of the playlist" }, 20 + "positionedAfter": { 21 + "type": "string", 22 + "description": "Id of the item that this item should be positioned after" 23 + }, 24 + "updatedAt": { "type": "string", "format": "datetime" } 25 + } 26 + } 27 + }, 28 + "criterion": { 29 + "type": "object", 30 + "required": ["field", "value"], 31 + "properties": { 32 + "amount": { "type": "integer", "minimum": 0 }, 33 + "field": { "type": "string" }, 34 + "mode": { "type": "string", "knownValues": ["include", "exclude"], "default": "include" }, 35 + "transformations": { 36 + "type": "array", 37 + "items": { "type": "ref", "ref": "#transformation" } 38 + }, 39 + "value": { 40 + "type": "unknown", 41 + "description": "Value that should be matched belonging to the given field" 42 + } 43 + } 44 + }, 45 + "transformation": { 46 + "type": "string", 47 + "description": "Transformation to apply to the field value before comparison. This transformation is method to call on the value. For example, `toString`" 48 + } 49 + } 50 + }
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/playlistItemBundle.json
··· 1 + ../../../bafybeibq4aqaavbn3syjebgs5wopycz56xxk2lchx5cpxxrr244i2n2ray/definitions/output/playlistItemBundle.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/theme.json
··· 1 + ../../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/definitions/output/theme.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/track.json
··· 1 + ../../../bafybeibuoq45hezn7mr3y6f4xuwibelfe5wregg2fwu7laxs4uxot4alrq/definitions/output/track.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/definitions/output/trackBundle.json
··· 1 + ../../../bafybeidei3ezzvkd2q7yaojc2wlog532cduo5sy2cmeb565bvmb6sfo4bu/definitions/output/trackBundle.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/examples/generate-playlist.html
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/facets/examples/generate-playlist.html
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/examples/now-playing.html
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/facets/examples/now-playing.html
+698
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="styles/base.css" /> 27 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 28 + <link rel="stylesheet" href="vendor/@phosphor-icons/bold/style.css" /> 29 + <link rel="stylesheet" href="vendor/@phosphor-icons/fill/style.css" /> 30 + </head> 31 + <body> 32 + <header> 33 + <div> 34 + <div> 35 + <a class="diffuse-logo" href="./" style="display: inline-block;"> 36 + <svg viewBox="0 0 902 134" width="160"> 37 + <title>Diffuse</title> 38 + <use 39 + xlink:href="images/diffuse-current.svg#diffuse" 40 + href="images/diffuse-current.svg#diffuse"></use> 41 + </svg> 42 + 43 + </a> 44 + </div> 45 + <p class="construct dither-mask" style="margin-top: 0; max-width: none;"> 46 + Facets 47 + </p> 48 + <p> 49 + Facets are various interface components each loaded in their own web page. Every used component is configured so that it operates in broadcast mode, making all the pages communicate with each other. 50 + </p> 51 + 52 + <ul class="table-of-contents"> 53 + <li><a href="facets/#collection">Your collection</a></li> 54 + <li><a href="facets/#featured">Featured</a></li> 55 + <li><a href="facets/#usage">Usage</a></li> 56 + <li><a href="facets/#built-in">Built-in</a></li> 57 + <li><a href="facets/#community">Community</a></li> 58 + <li><a href="facets/#build">Build</a></li> 59 + <li><a href="facets/#foundation">Foundation</a></li> 60 + <li><a href="facets/#examples">Examples</a></li> 61 + <li><a href="facets/#notes">Notes</a></li> 62 + </ul> 63 + </div> 64 + <div class="dither-mask filler"></div> 65 + </header> 66 + <main> 67 + <!-- YOUR COLLECTION --> 68 + <section> 69 + <h2 id="collection">Your collection</h2> 70 + <div id="list"> 71 + <div class="with-icon" style="font-size: var(--fs-sm);"> 72 + <i class="ph-bold ph-spinner-gap"></i> 73 + Loading items 74 + </div> 75 + </div> 76 + </section> 77 + 78 + <!-- FEATURED + USAGE --> 79 + <div class="columns"> 80 + <section class="flex"> 81 + <h2 id="featured">Featured</h2> 82 + 83 + <ol style="list-style: none; padding-left: 0;"> 84 + <li> 85 + <p> 86 + <i class="ph-fill ph-plus"></i> 87 + <strong><a href="facets/l/?path=themes%2Fwebamp%2Fconfigurators%2Finput%2Ffacet.html">Add</a></strong> audio from various places on the web and your device. 88 + </p> 89 + </li> 90 + <li> 91 + <p> 92 + <i class="ph-fill ph-queue"></i> 93 + <strong><a href="facets/l/?path=themes%2Fwebamp%2Fbrowser%2Ffacet.html">Browse</a></strong> your collection to put something into the queue. 94 + </p> 95 + </li> 96 + <li> 97 + <p> 98 + <i class="ph-fill ph-queue"></i> 99 + <strong><a href="facets/l/?path=facets%2Ftools%2Fauto-queue.html">Automate</a></strong> adding items to the queue, for infinite playback or listening to a playlist. 100 + </p> 101 + </li> 102 + <li> 103 + <p> 104 + <i class="ph-fill ph-music-note"></i> 105 + <strong><a href="facets/l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet.html">Play</a></strong> queued songs. 106 + </p> 107 + </li> 108 + <li> 109 + <p> 110 + <i class="ph-fill ph-person"></i> 111 + <strong><a href="facets/l/?path=themes%2Fwebamp%2Fconfigurators%2Foutput%2Ffacet.html">Manage</a></strong> your user data, sync with your other devices or other people. 112 + </p> 113 + </li> 114 + </ol> 115 + </section> 116 + 117 + <section class="flex"> 118 + <h2 id="usage">Usage</h2> 119 + <p> 120 + To use these facets, simply open whichever ones provide the functionality that you're looking for at a given moment. You can browse existing ones here and create one below. 121 + </p> 122 + <p> 123 + For example, say you want to play music; two options would be: (1) <a href="facets/l/?path=themes%2Fwebamp%2Fbrowser%2Ffacet.html">browse</a> for a specific song and add it to the queue, or (2) <a href="facets/l/?path=facets%2Ftools%2Fauto-queue.html">automatically</a> add a bunch of shuffled songs to the queue. Next, you need a way to play the items you added to the queue. That's where a <a href="facets/l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet.html">controller</a> could be used. 124 + </p> 125 + <p> 126 + <em>You might ask, why can't I do all of this in just one window? That's what <a href="themes/">themes</a> are for, if you need something more streamlined. If you however want a customised experience, or prefer certain interfaces for certain things, that's what facets are for.</em> 127 + </p> 128 + <p> 129 + <small><i class="ph-fill ph-info"></i> Every facet has access to your audio collection and your user data, along with any other shared state.</small> 130 + </p> 131 + </section> 132 + </div> 133 + 134 + <!-- BUILT-IN + COMMUNITY --> 135 + <div class="columns"> 136 + <section class="flex"> 137 + <h2 id="built-in">Built-in</h2> 138 + 139 + <ul> 140 + <li data-uri="diffuse://themes/blur/artwork-controller/facet.html" data-name="Blur / Artwork controller"> 141 + <div style="position: relative;"> 142 + <a href="facets/l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet.html"> 143 + Blur / Artwork controller 144 + </a> 145 + <button 146 + class="button--fixed button--transparent" 147 + popovertarget="facet-menu-builtin-0" 148 + style="anchor-name: --facet-anchor-builtin-0; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 149 + > 150 + <i class="ph-fill ph-dots-three-circle"></i> 151 + </button> 152 + </div> 153 + <div class="list-description"> 154 + Audio playback controller with an artwork display. 155 + </div> 156 + 157 + <!-- Dropdown Menu --> 158 + <div 159 + id="facet-menu-builtin-0" 160 + class="dropdown" 161 + style="position-anchor: --facet-anchor-builtin-0" 162 + popover 163 + > 164 + <a href="facets/l/?path=themes%2Fblur%2Fartwork-controller%2Ffacet.html"> 165 + <span class="with-icon"> 166 + <i class="ph-fill ph-globe"></i> Open 167 + </span> 168 + </a> 169 + <a rel="save"> 170 + <span class="with-icon"> 171 + <i class="ph-fill ph-download"></i> Save 172 + </span> 173 + </a> 174 + <a rel="fork"> 175 + <span class="with-icon"> 176 + <i class="ph-fill ph-cursor-text"></i> Edit 177 + </span> 178 + </a> 179 + </div> 180 + </li> 181 + <li data-uri="diffuse://facets/tools/auto-queue.html" data-name="Tools / Automatic Queue"> 182 + <div style="position: relative;"> 183 + <a href="facets/l/?path=facets%2Ftools%2Fauto-queue.html"> 184 + Tools / Automatic Queue 185 + </a> 186 + <button 187 + class="button--fixed button--transparent" 188 + popovertarget="facet-menu-builtin-1" 189 + style="anchor-name: --facet-anchor-builtin-1; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 190 + > 191 + <i class="ph-fill ph-dots-three-circle"></i> 192 + </button> 193 + </div> 194 + <div class="list-description"> 195 + Everything you need to automatically put tracks into the queue. 196 + </div> 197 + 198 + <!-- Dropdown Menu --> 199 + <div 200 + id="facet-menu-builtin-1" 201 + class="dropdown" 202 + style="position-anchor: --facet-anchor-builtin-1" 203 + popover 204 + > 205 + <a href="facets/l/?path=facets%2Ftools%2Fauto-queue.html"> 206 + <span class="with-icon"> 207 + <i class="ph-fill ph-globe"></i> Open 208 + </span> 209 + </a> 210 + <a rel="save"> 211 + <span class="with-icon"> 212 + <i class="ph-fill ph-download"></i> Save 213 + </span> 214 + </a> 215 + <a rel="fork"> 216 + <span class="with-icon"> 217 + <i class="ph-fill ph-cursor-text"></i> Edit 218 + </span> 219 + </a> 220 + </div> 221 + </li> 222 + <li data-uri="diffuse://facets/tools/export-import.html" data-name="Tools / Export & Import"> 223 + <div style="position: relative;"> 224 + <a href="facets/l/?path=facets%2Ftools%2Fexport-import.html"> 225 + Tools / Export & Import 226 + </a> 227 + <button 228 + class="button--fixed button--transparent" 229 + popovertarget="facet-menu-builtin-2" 230 + style="anchor-name: --facet-anchor-builtin-2; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 231 + > 232 + <i class="ph-fill ph-dots-three-circle"></i> 233 + </button> 234 + </div> 235 + <div class="list-description"> 236 + Export all data as a JSON snapshot, or restore from a previously exported file. 237 + </div> 238 + 239 + <!-- Dropdown Menu --> 240 + <div 241 + id="facet-menu-builtin-2" 242 + class="dropdown" 243 + style="position-anchor: --facet-anchor-builtin-2" 244 + popover 245 + > 246 + <a href="facets/l/?path=facets%2Ftools%2Fexport-import.html"> 247 + <span class="with-icon"> 248 + <i class="ph-fill ph-globe"></i> Open 249 + </span> 250 + </a> 251 + <a rel="save"> 252 + <span class="with-icon"> 253 + <i class="ph-fill ph-download"></i> Save 254 + </span> 255 + </a> 256 + <a rel="fork"> 257 + <span class="with-icon"> 258 + <i class="ph-fill ph-cursor-text"></i> Edit 259 + </span> 260 + </a> 261 + </div> 262 + </li> 263 + <li data-uri="diffuse://facets/tools/split-view.html" data-name="Tools / Split View"> 264 + <div style="position: relative;"> 265 + <a href="facets/l/?path=facets%2Ftools%2Fsplit-view.html"> 266 + Tools / Split View 267 + </a> 268 + <button 269 + class="button--fixed button--transparent" 270 + popovertarget="facet-menu-builtin-3" 271 + style="anchor-name: --facet-anchor-builtin-3; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 272 + > 273 + <i class="ph-fill ph-dots-three-circle"></i> 274 + </button> 275 + </div> 276 + <div class="list-description"> 277 + Arrange multiple facets side-by-side in a resizable split-panel layout. 278 + </div> 279 + 280 + <!-- Dropdown Menu --> 281 + <div 282 + id="facet-menu-builtin-3" 283 + class="dropdown" 284 + style="position-anchor: --facet-anchor-builtin-3" 285 + popover 286 + > 287 + <a href="facets/l/?path=facets%2Ftools%2Fsplit-view.html"> 288 + <span class="with-icon"> 289 + <i class="ph-fill ph-globe"></i> Open 290 + </span> 291 + </a> 292 + <a rel="save"> 293 + <span class="with-icon"> 294 + <i class="ph-fill ph-download"></i> Save 295 + </span> 296 + </a> 297 + <a rel="fork"> 298 + <span class="with-icon"> 299 + <i class="ph-fill ph-cursor-text"></i> Edit 300 + </span> 301 + </a> 302 + </div> 303 + </li> 304 + <li data-uri="diffuse://facets/tools/v3-import.html" data-name="Tools / V3.x Import"> 305 + <div style="position: relative;"> 306 + <a href="facets/l/?path=facets%2Ftools%2Fv3-import.html"> 307 + Tools / V3.x Import 308 + </a> 309 + <button 310 + class="button--fixed button--transparent" 311 + popovertarget="facet-menu-builtin-4" 312 + style="anchor-name: --facet-anchor-builtin-4; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 313 + > 314 + <i class="ph-fill ph-dots-three-circle"></i> 315 + </button> 316 + </div> 317 + <div class="list-description"> 318 + Import data from Diffuse v3. 319 + </div> 320 + 321 + <!-- Dropdown Menu --> 322 + <div 323 + id="facet-menu-builtin-4" 324 + class="dropdown" 325 + style="position-anchor: --facet-anchor-builtin-4" 326 + popover 327 + > 328 + <a href="facets/l/?path=facets%2Ftools%2Fv3-import.html"> 329 + <span class="with-icon"> 330 + <i class="ph-fill ph-globe"></i> Open 331 + </span> 332 + </a> 333 + <a rel="save"> 334 + <span class="with-icon"> 335 + <i class="ph-fill ph-download"></i> Save 336 + </span> 337 + </a> 338 + <a rel="fork"> 339 + <span class="with-icon"> 340 + <i class="ph-fill ph-cursor-text"></i> Edit 341 + </span> 342 + </a> 343 + </div> 344 + </li> 345 + <li data-uri="diffuse://themes/webamp/browser/facet.html" data-name="Webamp / Browser"> 346 + <div style="position: relative;"> 347 + <a href="facets/l/?path=themes%2Fwebamp%2Fbrowser%2Ffacet.html"> 348 + Webamp / Browser 349 + </a> 350 + <button 351 + class="button--fixed button--transparent" 352 + popovertarget="facet-menu-builtin-5" 353 + style="anchor-name: --facet-anchor-builtin-5; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 354 + > 355 + <i class="ph-fill ph-dots-three-circle"></i> 356 + </button> 357 + </div> 358 + <div class="list-description"> 359 + Collection browser + search in a retro, win98, look. 360 + </div> 361 + 362 + <!-- Dropdown Menu --> 363 + <div 364 + id="facet-menu-builtin-5" 365 + class="dropdown" 366 + style="position-anchor: --facet-anchor-builtin-5" 367 + popover 368 + > 369 + <a href="facets/l/?path=themes%2Fwebamp%2Fbrowser%2Ffacet.html"> 370 + <span class="with-icon"> 371 + <i class="ph-fill ph-globe"></i> Open 372 + </span> 373 + </a> 374 + <a rel="save"> 375 + <span class="with-icon"> 376 + <i class="ph-fill ph-download"></i> Save 377 + </span> 378 + </a> 379 + <a rel="fork"> 380 + <span class="with-icon"> 381 + <i class="ph-fill ph-cursor-text"></i> Edit 382 + </span> 383 + </a> 384 + </div> 385 + </li> 386 + <li data-uri="diffuse://themes/webamp/configurators/input/facet.html" data-name="Webamp / Input Configurator"> 387 + <div style="position: relative;"> 388 + <a href="facets/l/?path=themes%2Fwebamp%2Fconfigurators%2Finput%2Ffacet.html"> 389 + Webamp / Input Configurator 390 + </a> 391 + <button 392 + class="button--fixed button--transparent" 393 + popovertarget="facet-menu-builtin-6" 394 + style="anchor-name: --facet-anchor-builtin-6; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 395 + > 396 + <i class="ph-fill ph-dots-three-circle"></i> 397 + </button> 398 + </div> 399 + <div class="list-description"> 400 + Windows 98 styled input configurator where you can add music sources. 401 + </div> 402 + 403 + <!-- Dropdown Menu --> 404 + <div 405 + id="facet-menu-builtin-6" 406 + class="dropdown" 407 + style="position-anchor: --facet-anchor-builtin-6" 408 + popover 409 + > 410 + <a href="facets/l/?path=themes%2Fwebamp%2Fconfigurators%2Finput%2Ffacet.html"> 411 + <span class="with-icon"> 412 + <i class="ph-fill ph-globe"></i> Open 413 + </span> 414 + </a> 415 + <a rel="save"> 416 + <span class="with-icon"> 417 + <i class="ph-fill ph-download"></i> Save 418 + </span> 419 + </a> 420 + <a rel="fork"> 421 + <span class="with-icon"> 422 + <i class="ph-fill ph-cursor-text"></i> Edit 423 + </span> 424 + </a> 425 + </div> 426 + </li> 427 + <li data-uri="diffuse://themes/webamp/configurators/output/facet.html" data-name="Webamp / Output Configurator"> 428 + <div style="position: relative;"> 429 + <a href="facets/l/?path=themes%2Fwebamp%2Fconfigurators%2Foutput%2Ffacet.html"> 430 + Webamp / Output Configurator 431 + </a> 432 + <button 433 + class="button--fixed button--transparent" 434 + popovertarget="facet-menu-builtin-7" 435 + style="anchor-name: --facet-anchor-builtin-7; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 436 + > 437 + <i class="ph-fill ph-dots-three-circle"></i> 438 + </button> 439 + </div> 440 + <div class="list-description"> 441 + Windows 98 styled output configurator where you can manage your data storage. 442 + </div> 443 + 444 + <!-- Dropdown Menu --> 445 + <div 446 + id="facet-menu-builtin-7" 447 + class="dropdown" 448 + style="position-anchor: --facet-anchor-builtin-7" 449 + popover 450 + > 451 + <a href="facets/l/?path=themes%2Fwebamp%2Fconfigurators%2Foutput%2Ffacet.html"> 452 + <span class="with-icon"> 453 + <i class="ph-fill ph-globe"></i> Open 454 + </span> 455 + </a> 456 + <a rel="save"> 457 + <span class="with-icon"> 458 + <i class="ph-fill ph-download"></i> Save 459 + </span> 460 + </a> 461 + <a rel="fork"> 462 + <span class="with-icon"> 463 + <i class="ph-fill ph-cursor-text"></i> Edit 464 + </span> 465 + </a> 466 + </div> 467 + </li> 468 + </ul> 469 + 470 + </section> 471 + 472 + <section class="flex"> 473 + <h2 id="community">Community</h2> 474 + <p> 475 + Check out some facets from the community and load them here. 476 + </p> 477 + <p> 478 + <small><i class="ph-fill ph-info"></i> Nothing here yet, too early.</small> 479 + </p> 480 + </section> 481 + </div> 482 + 483 + <!-- / --> 484 + <div class="dither-mask filler" style="height: var(--space-2xl); margin-top: var(--space-2xl);"></div> 485 + 486 + <!-- BUILD --> 487 + <section> 488 + <h2 id="build">Build</h2> 489 + 490 + <form id="build-form" class="columns"> 491 + <div class="flex"> 492 + <p style="margin-top: 0"> 493 + If you know a bit of HTML & Javascript, you can write your own or plug in some code you found elsewhere: 494 + </p> 495 + 496 + <div id="html-input-container" class="code-editor monospace-font"> 497 + </div> 498 + </div> 499 + 500 + <div class="flex"> 501 + <p style="margin-top: 0"> 502 + Your code here builds on the <a href="facets/#foundation">foundation</a> listed below, it'll be injected into a <code>&lt;div id="container"&gt;</code> element in the body. 503 + </p> 504 + <p> 505 + <input id="name-input" type="text" placeholder="Name" name="name" required /> 506 + </p> 507 + <p> 508 + <textarea id="description-input" placeholder="Description" name="description" rows="2"></textarea> 509 + </p> 510 + <p> 511 + <span class="button-row"> 512 + <button name="save">Save</button> 513 + <button name="save+open">Save &amp; Open</button> 514 + </span> 515 + </p> 516 + </div> 517 + </form> 518 + </section> 519 + 520 + <!-- FOUNDATION --> 521 + <div class="columns"> 522 + <section class="flex"> 523 + <h2 id="foundation">Foundation</h2> 524 + 525 + <p> 526 + Diffuse comes with a foundation that preconfigures all elements so you don't have to set them up yourself, along with a combination of elements for certain features. It internally tracks the DOM addition of the custom elements, so no need to worry about setting up an element multiple times. 527 + </p> 528 + <p> 529 + <small><i class="ph-fill ph-info"></i> Refer to the <a href="#elements">elements index</a> to find out what each element does.</small> 530 + </p> 531 + <div class="code-block"> 532 + <code>import foundation from "common/facets/foundation.js" 533 + 534 + foundation.engine.audio() 535 + foundation.engine.queue() 536 + foundation.engine.repeatShuffle() 537 + foundation.engine.scope() 538 + 539 + foundation.orchestrator.autoQueue() 540 + foundation.orchestrator.favourites() 541 + foundation.orchestrator.input() 542 + foundation.orchestrator.output() 543 + foundation.orchestrator.queueAudio() 544 + foundation.orchestrator.processTracks() 545 + foundation.orchestrator.scopedTracks() 546 + foundation.orchestrator.sources() 547 + 548 + foundation.processor.artwork() 549 + foundation.processor.metadata() 550 + foundation.processor.search()</code> 551 + </div> 552 + 553 + <p> 554 + <small>Features:</small> 555 + </p> 556 + <ul style="margin-bottom: 0;"> 557 + <li> 558 + <span>Fill the queue automatically <small>(infinite play)</small></span> 559 + <div class="list-description"> 560 + <code>foundation.features.fillQueueAutomatically()</code> 561 + </div> 562 + </li> 563 + <li> 564 + <span>Play audio from the queue</span> 565 + <div class="list-description"> 566 + <code>foundation.features.playAudioFromQueue()</code> 567 + </div> 568 + </li> 569 + <li> 570 + <span>Process inputs <small>(into tracks, etc)</small></span> 571 + <div class="list-description"> 572 + <code>foundation.features.processInputs()</code> 573 + </div> 574 + </li> 575 + <li> 576 + <span>Search through your collection</span> 577 + <div class="list-description" style="margin-bottom: 0;"> 578 + <code>foundation.features.searchThroughCollection()</code> 579 + </div> 580 + </li> 581 + </ul> 582 + </section> 583 + 584 + <section class="flex"> 585 + <h2 id="examples">Examples</h2> 586 + 587 + <p> 588 + Some simple examples to help you understand how to build your own facet. Fork them to load them into the code editor below (or save → edit). 589 + </p> 590 + 591 + <ul> 592 + <li data-uri="diffuse://facets/examples/now-playing.html" data-name="Now playing"> 593 + <div style="position: relative;"> 594 + <a href="facets/l/?path=facets%2Fexamples%2Fnow-playing.html"> 595 + Now playing 596 + </a> 597 + <button 598 + class="button--fixed button--transparent" 599 + popovertarget="facet-menu-examples-0" 600 + style="anchor-name: --facet-anchor-examples-0; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 601 + > 602 + <i class="ph-fill ph-dots-three-circle"></i> 603 + </button> 604 + </div> 605 + <div class="list-description"> 606 + Shows what's currently set to &quot;now playing&quot; in the queue, along with a button to shift the queue to the next track. 607 + </div> 608 + 609 + <!-- Dropdown Menu --> 610 + <div 611 + id="facet-menu-examples-0" 612 + class="dropdown" 613 + style="position-anchor: --facet-anchor-examples-0" 614 + popover 615 + > 616 + <a href="facets/l/?path=facets%2Fexamples%2Fnow-playing.html"> 617 + <span class="with-icon"> 618 + <i class="ph-fill ph-globe"></i> Open 619 + </span> 620 + </a> 621 + <a rel="save"> 622 + <span class="with-icon"> 623 + <i class="ph-fill ph-download"></i> Save 624 + </span> 625 + </a> 626 + <a rel="fork"> 627 + <span class="with-icon"> 628 + <i class="ph-fill ph-cursor-text"></i> Edit 629 + </span> 630 + </a> 631 + </div> 632 + </li> 633 + <li data-uri="diffuse://facets/examples/generate-playlist.html" data-name="Generate playlist"> 634 + <div style="position: relative;"> 635 + <a href="facets/l/?path=facets%2Fexamples%2Fgenerate-playlist.html"> 636 + Generate playlist 637 + </a> 638 + <button 639 + class="button--fixed button--transparent" 640 + popovertarget="facet-menu-examples-1" 641 + style="anchor-name: --facet-anchor-examples-1; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 642 + > 643 + <i class="ph-fill ph-dots-three-circle"></i> 644 + </button> 645 + </div> 646 + <div class="list-description"> 647 + Make a list of what previously played in the queue. 648 + </div> 649 + 650 + <!-- Dropdown Menu --> 651 + <div 652 + id="facet-menu-examples-1" 653 + class="dropdown" 654 + style="position-anchor: --facet-anchor-examples-1" 655 + popover 656 + > 657 + <a href="facets/l/?path=facets%2Fexamples%2Fgenerate-playlist.html"> 658 + <span class="with-icon"> 659 + <i class="ph-fill ph-globe"></i> Open 660 + </span> 661 + </a> 662 + <a rel="save"> 663 + <span class="with-icon"> 664 + <i class="ph-fill ph-download"></i> Save 665 + </span> 666 + </a> 667 + <a rel="fork"> 668 + <span class="with-icon"> 669 + <i class="ph-fill ph-cursor-text"></i> Edit 670 + </span> 671 + </a> 672 + </div> 673 + </li> 674 + </ul> 675 + 676 + 677 + <h2 id="notes">Notes</h2> 678 + <p> 679 + While you have the ability to do whatever you want in a custom facet, the existing facets are designed to work a certain way; so here's some things to keep in mind: 680 + </p> 681 + <ul> 682 + <li><span>In most cases you'll want to call <code>foundation.features.processInputs()</code> so that your audio files and streams actually show up.</span></li> 683 + <li><span>Most elements are configured in broadcast mode so they communicate across tabs. There are a few exceptions such as inputs, where we prefer parallelisation.</span></li> 684 + <li><span>You can use facets in combination with themes by adding the elements used in the theme to a group and then passing in the group name as a URL query parameter (eg. <code>group=facets</code>)</span></li> 685 + </ul> 686 + </section> 687 + </div> 688 + </main> 689 + 690 + 691 + <!-- Make every touched URL available offline --> 692 + <do-offline></do-offline> 693 + <script src="components/orchestrator/offline/element.js" type="module"></script> 694 + 695 + <!-- Scripts --> 696 + <script src="facets/index.js" type="module"></script> 697 + </body> 698 + </html>
+1639
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/index.js
··· 1 + import { 2 + EditorView, 3 + autocompletion, 4 + basicSetup, 5 + css, 6 + html, 7 + javascript 8 + } from "../chunk-OX3TSJ3X.js"; 9 + import { 10 + foundation_default 11 + } from "../chunk-FIX46GRA.js"; 12 + import "../chunk-VOFM65C2.js"; 13 + import "../chunk-HDE6FJCN.js"; 14 + import "../chunk-ZROTLYIH.js"; 15 + import "../chunk-2SPFBYRD.js"; 16 + import "../chunk-K4XAE7PE.js"; 17 + import "../chunk-XKXQMVTB.js"; 18 + import "../chunk-ABL7GBBM.js"; 19 + import "../chunk-TMIJ7SWF.js"; 20 + import "../chunk-QKKQKAE5.js"; 21 + import "../chunk-2HKIFQJO.js"; 22 + import "../chunk-IKAIRC6G.js"; 23 + import "../chunk-2PHQN23Z.js"; 24 + import "../chunk-ENDOZK4Q.js"; 25 + import "../chunk-FQ7GPRG2.js"; 26 + import "../chunk-TMGAIVLV.js"; 27 + import "../chunk-U4HLMEDD.js"; 28 + import "../chunk-Y4UF3TDF.js"; 29 + import "../chunk-HN4F5JEZ.js"; 30 + import "../chunk-X2U7TZQT.js"; 31 + import "../chunk-AGWC42GJ.js"; 32 + import "../chunk-TRIYIVJH.js"; 33 + import "../chunk-I3VKG3ZJ.js"; 34 + import "../chunk-D6OAWBEV.js"; 35 + import "../chunk-ZDMTYKI5.js"; 36 + import "../chunk-6DRHTH2U.js"; 37 + import "../chunk-JR4EW3HT.js"; 38 + import "../chunk-BDBXPVO6.js"; 39 + import "../chunk-JBHW662S.js"; 40 + import "../chunk-H7PU7XY7.js"; 41 + import "../chunk-VCRMPF2R.js"; 42 + import "../chunk-YBUNVPVS.js"; 43 + import { 44 + i as i2 45 + } from "../chunk-OAG3HI6B.js"; 46 + import { 47 + e, 48 + i, 49 + t 50 + } from "../chunk-JDKXATSY.js"; 51 + import "../chunk-TS4JJWFE.js"; 52 + import "../chunk-3L563ZA4.js"; 53 + import "../chunk-VQR5VNUL.js"; 54 + import "../chunk-EEUCFWD4.js"; 55 + import "../chunk-IYNRCNPM.js"; 56 + import "../chunk-3USAPKOY.js"; 57 + import "../chunk-HMBZONBJ.js"; 58 + import "../chunk-7U5QHBAZ.js"; 59 + import { 60 + A, 61 + B, 62 + E, 63 + T 64 + } from "../chunk-2V4VRBHO.js"; 65 + import "../chunk-G56PUJUJ.js"; 66 + import { 67 + facetFromURI 68 + } from "../chunk-I6QTRLUQ.js"; 69 + import { 70 + loadURI 71 + } from "../chunk-JUFQHHNP.js"; 72 + import "../chunk-WN6GL63Q.js"; 73 + import "../chunk-CRZ7HJJ4.js"; 74 + import "../chunk-242LG3VP.js"; 75 + import { 76 + now 77 + } from "../chunk-BKRD2ZIW.js"; 78 + import "../chunk-SGR5ST3A.js"; 79 + import { 80 + create 81 + } from "../chunk-4YB6QUPN.js"; 82 + import "../chunk-6DKPDMFE.js"; 83 + import "../chunk-TP5GZFTO.js"; 84 + import "../chunk-ZQZJJU3T.js"; 85 + import { 86 + effect, 87 + signal 88 + } from "../chunk-HNJPKCUJ.js"; 89 + import { 90 + __name, 91 + init_Buffer, 92 + init_process 93 + } from "../chunk-FZQXS3RE.js"; 94 + 95 + // facets/index.js 96 + init_Buffer(); 97 + init_process(); 98 + 99 + // ../node_modules/.deno/marked@17.0.3/node_modules/marked/lib/marked.esm.js 100 + init_Buffer(); 101 + init_process(); 102 + function M() { 103 + return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null }; 104 + } 105 + __name(M, "M"); 106 + var T2 = M(); 107 + function H(u3) { 108 + T2 = u3; 109 + } 110 + __name(H, "H"); 111 + var _ = { exec: /* @__PURE__ */ __name(() => null, "exec") }; 112 + function k(u3, e3 = "") { 113 + let t2 = typeof u3 == "string" ? u3 : u3.source, n = { replace: /* @__PURE__ */ __name((r, i3) => { 114 + let s = typeof i3 == "string" ? i3 : i3.source; 115 + return s = s.replace(m.caret, "$1"), t2 = t2.replace(r, s), n; 116 + }, "replace"), getRegex: /* @__PURE__ */ __name(() => new RegExp(t2, e3), "getRegex") }; 117 + return n; 118 + } 119 + __name(k, "k"); 120 + var Re = (() => { 121 + try { 122 + return !!new RegExp("(?<=1)(?<!1)"); 123 + } catch { 124 + return false; 125 + } 126 + })(); 127 + var m = { codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm, outputLinkReplace: /\\([\[\]])/g, indentCodeCompensation: /^(\s+)(?:```)/, beginningSpace: /^\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\n/g, tabCharGlobal: /\t/g, multipleSpaceGlobal: /\s+/g, blankLine: /^[ \t]*$/, doubleBlankLine: /\n[ \t]*\n[ \t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] +\S/, listReplaceTask: /^\[[ xX]\] +/, listTaskCheckbox: /\[[ xX]\]/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, unescapeTest: /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: /* @__PURE__ */ __name((u3) => new RegExp(`^( {0,3}${u3})((?:[ ][^\\n]*)?(?:\\n|$))`), "listItemRegex"), nextBulletRegex: /* @__PURE__ */ __name((u3) => new RegExp(`^ {0,${Math.min(3, u3 - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`), "nextBulletRegex"), hrRegex: /* @__PURE__ */ __name((u3) => new RegExp(`^ {0,${Math.min(3, u3 - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), "hrRegex"), fencesBeginRegex: /* @__PURE__ */ __name((u3) => new RegExp(`^ {0,${Math.min(3, u3 - 1)}}(?:\`\`\`|~~~)`), "fencesBeginRegex"), headingBeginRegex: /* @__PURE__ */ __name((u3) => new RegExp(`^ {0,${Math.min(3, u3 - 1)}}#`), "headingBeginRegex"), htmlBeginRegex: /* @__PURE__ */ __name((u3) => new RegExp(`^ {0,${Math.min(3, u3 - 1)}}<(?:[a-z].*>|!--)`, "i"), "htmlBeginRegex"), blockquoteBeginRegex: /* @__PURE__ */ __name((u3) => new RegExp(`^ {0,${Math.min(3, u3 - 1)}}>`), "blockquoteBeginRegex") }; 128 + var Te = /^(?:[ \t]*(?:\n|$))+/; 129 + var Oe = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; 130 + var we = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; 131 + var I = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; 132 + var ye = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; 133 + var N = / {0,3}(?:[*+-]|\d{1,9}[.)])/; 134 + var re = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/; 135 + var se = k(re).replace(/bull/g, N).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex(); 136 + var Pe = k(re).replace(/bull/g, N).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(); 137 + var Q = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; 138 + var Se = /^[^\n]+/; 139 + var F = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/; 140 + var $e = k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", F).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(); 141 + var _e = k(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, N).getRegex(); 142 + var q = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul"; 143 + var j = /<!--(?:-?>|[\s\S]*?(?:-->|$))/; 144 + var Le = k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", j).replace("tag", q).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(); 145 + var ie = k(Q).replace("hr", I).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", q).getRegex(); 146 + var Me = k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", ie).getRegex(); 147 + var U = { blockquote: Me, code: Oe, def: $e, fences: we, heading: ye, hr: I, html: Le, lheading: se, list: _e, newline: Te, paragraph: ie, table: _, text: Se }; 148 + var te = k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", I).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", q).getRegex(); 149 + var ze = { ...U, lheading: Pe, table: te, paragraph: k(Q).replace("hr", I).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", te).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", q).getRegex() }; 150 + var Ce = { ...U, html: k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", j).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: _, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: k(Q).replace("hr", I).replace("heading", ` *#{1,6} *[^ 151 + ]`).replace("lheading", se).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() }; 152 + var Ae = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; 153 + var Ie = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; 154 + var oe = /^( {2,}|\\)\n(?!\s*$)/; 155 + var Ee = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/; 156 + var v = /[\p{P}\p{S}]/u; 157 + var K = /[\s\p{P}\p{S}]/u; 158 + var ae = /[^\s\p{P}\p{S}]/u; 159 + var Be = k(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, K).getRegex(); 160 + var le = /(?!~)[\p{P}\p{S}]/u; 161 + var De = /(?!~)[\s\p{P}\p{S}]/u; 162 + var qe = /(?:[^\s\p{P}\p{S}]|~)/u; 163 + var ue = /(?![*_])[\p{P}\p{S}]/u; 164 + var ve = /(?![*_])[\s\p{P}\p{S}]/u; 165 + var Ge = /(?:[^\s\p{P}\p{S}]|[*_])/u; 166 + var He = k(/link|precode-code|html/, "g").replace("link", /\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", Re ? "(?<!`)()" : "(^^|[^`])").replace("code", /(?<b>`+)[^`]+\k<b>(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex(); 167 + var pe = /^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/; 168 + var Ze = k(pe, "u").replace(/punct/g, v).getRegex(); 169 + var Ne = k(pe, "u").replace(/punct/g, le).getRegex(); 170 + var ce = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)"; 171 + var Qe = k(ce, "gu").replace(/notPunctSpace/g, ae).replace(/punctSpace/g, K).replace(/punct/g, v).getRegex(); 172 + var Fe = k(ce, "gu").replace(/notPunctSpace/g, qe).replace(/punctSpace/g, De).replace(/punct/g, le).getRegex(); 173 + var je = k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, ae).replace(/punctSpace/g, K).replace(/punct/g, v).getRegex(); 174 + var Ue = k(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, ue).getRegex(); 175 + var Ke = "^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)"; 176 + var We = k(Ke, "gu").replace(/notPunctSpace/g, Ge).replace(/punctSpace/g, ve).replace(/punct/g, ue).getRegex(); 177 + var Xe = k(/\\(punct)/, "gu").replace(/punct/g, v).getRegex(); 178 + var Je = k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(); 179 + var Ve = k(j).replace("(?:-->|$)", "-->").getRegex(); 180 + var Ye = k("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", Ve).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(); 181 + var D = /(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/; 182 + var et = k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label", D).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(); 183 + var he = k(/^!?\[(label)\]\[(ref)\]/).replace("label", D).replace("ref", F).getRegex(); 184 + var ke = k(/^!?\[(ref)\](?:\[\])?/).replace("ref", F).getRegex(); 185 + var tt = k("reflink|nolink(?!\\()", "g").replace("reflink", he).replace("nolink", ke).getRegex(); 186 + var ne = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/; 187 + var W = { _backpedal: _, anyPunctuation: Xe, autolink: Je, blockSkip: He, br: oe, code: Ie, del: _, delLDelim: _, delRDelim: _, emStrongLDelim: Ze, emStrongRDelimAst: Qe, emStrongRDelimUnd: je, escape: Ae, link: et, nolink: ke, punctuation: Be, reflink: he, reflinkSearch: tt, tag: Ye, text: Ee, url: _ }; 188 + var nt = { ...W, link: k(/^!?\[(label)\]\((.*?)\)/).replace("label", D).getRegex(), reflink: k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", D).getRegex() }; 189 + var Z = { ...W, emStrongRDelimAst: Fe, emStrongLDelim: Ne, delLDelim: Ue, delRDelim: We, url: k(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", ne).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: k(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol", ne).getRegex() }; 190 + var rt = { ...Z, br: k(oe).replace("{2,}", "*").getRegex(), text: k(Z.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() }; 191 + var E2 = { normal: U, gfm: ze, pedantic: Ce }; 192 + var z = { normal: W, gfm: Z, breaks: rt, pedantic: nt }; 193 + var st = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }; 194 + var de = /* @__PURE__ */ __name((u3) => st[u3], "de"); 195 + function O(u3, e3) { 196 + if (e3) { 197 + if (m.escapeTest.test(u3)) return u3.replace(m.escapeReplace, de); 198 + } else if (m.escapeTestNoEncode.test(u3)) return u3.replace(m.escapeReplaceNoEncode, de); 199 + return u3; 200 + } 201 + __name(O, "O"); 202 + function X(u3) { 203 + try { 204 + u3 = encodeURI(u3).replace(m.percentDecode, "%"); 205 + } catch { 206 + return null; 207 + } 208 + return u3; 209 + } 210 + __name(X, "X"); 211 + function J(u3, e3) { 212 + let t2 = u3.replace(m.findPipe, (i3, s, a) => { 213 + let o2 = false, l = s; 214 + for (; --l >= 0 && a[l] === "\\"; ) o2 = !o2; 215 + return o2 ? "|" : " |"; 216 + }), n = t2.split(m.splitPipe), r = 0; 217 + if (n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), e3) if (n.length > e3) n.splice(e3); 218 + else for (; n.length < e3; ) n.push(""); 219 + for (; r < n.length; r++) n[r] = n[r].trim().replace(m.slashPipe, "|"); 220 + return n; 221 + } 222 + __name(J, "J"); 223 + function C(u3, e3, t2) { 224 + let n = u3.length; 225 + if (n === 0) return ""; 226 + let r = 0; 227 + for (; r < n; ) { 228 + let i3 = u3.charAt(n - r - 1); 229 + if (i3 === e3 && !t2) r++; 230 + else if (i3 !== e3 && t2) r++; 231 + else break; 232 + } 233 + return u3.slice(0, n - r); 234 + } 235 + __name(C, "C"); 236 + function ge(u3, e3) { 237 + if (u3.indexOf(e3[1]) === -1) return -1; 238 + let t2 = 0; 239 + for (let n = 0; n < u3.length; n++) if (u3[n] === "\\") n++; 240 + else if (u3[n] === e3[0]) t2++; 241 + else if (u3[n] === e3[1] && (t2--, t2 < 0)) return n; 242 + return t2 > 0 ? -2 : -1; 243 + } 244 + __name(ge, "ge"); 245 + function fe(u3, e3 = 0) { 246 + let t2 = e3, n = ""; 247 + for (let r of u3) if (r === " ") { 248 + let i3 = 4 - t2 % 4; 249 + n += " ".repeat(i3), t2 += i3; 250 + } else n += r, t2++; 251 + return n; 252 + } 253 + __name(fe, "fe"); 254 + function me(u3, e3, t2, n, r) { 255 + let i3 = e3.href, s = e3.title || null, a = u3[1].replace(r.other.outputLinkReplace, "$1"); 256 + n.state.inLink = true; 257 + let o2 = { type: u3[0].charAt(0) === "!" ? "image" : "link", raw: t2, href: i3, title: s, text: a, tokens: n.inlineTokens(a) }; 258 + return n.state.inLink = false, o2; 259 + } 260 + __name(me, "me"); 261 + function it(u3, e3, t2) { 262 + let n = u3.match(t2.other.indentCodeCompensation); 263 + if (n === null) return e3; 264 + let r = n[1]; 265 + return e3.split(` 266 + `).map((i3) => { 267 + let s = i3.match(t2.other.beginningSpace); 268 + if (s === null) return i3; 269 + let [a] = s; 270 + return a.length >= r.length ? i3.slice(r.length) : i3; 271 + }).join(` 272 + `); 273 + } 274 + __name(it, "it"); 275 + var w = class { 276 + static { 277 + __name(this, "w"); 278 + } 279 + options; 280 + rules; 281 + lexer; 282 + constructor(e3) { 283 + this.options = e3 || T2; 284 + } 285 + space(e3) { 286 + let t2 = this.rules.block.newline.exec(e3); 287 + if (t2 && t2[0].length > 0) return { type: "space", raw: t2[0] }; 288 + } 289 + code(e3) { 290 + let t2 = this.rules.block.code.exec(e3); 291 + if (t2) { 292 + let n = t2[0].replace(this.rules.other.codeRemoveIndent, ""); 293 + return { type: "code", raw: t2[0], codeBlockStyle: "indented", text: this.options.pedantic ? n : C(n, ` 294 + `) }; 295 + } 296 + } 297 + fences(e3) { 298 + let t2 = this.rules.block.fences.exec(e3); 299 + if (t2) { 300 + let n = t2[0], r = it(n, t2[3] || "", this.rules); 301 + return { type: "code", raw: n, lang: t2[2] ? t2[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t2[2], text: r }; 302 + } 303 + } 304 + heading(e3) { 305 + let t2 = this.rules.block.heading.exec(e3); 306 + if (t2) { 307 + let n = t2[2].trim(); 308 + if (this.rules.other.endingHash.test(n)) { 309 + let r = C(n, "#"); 310 + (this.options.pedantic || !r || this.rules.other.endingSpaceChar.test(r)) && (n = r.trim()); 311 + } 312 + return { type: "heading", raw: t2[0], depth: t2[1].length, text: n, tokens: this.lexer.inline(n) }; 313 + } 314 + } 315 + hr(e3) { 316 + let t2 = this.rules.block.hr.exec(e3); 317 + if (t2) return { type: "hr", raw: C(t2[0], ` 318 + `) }; 319 + } 320 + blockquote(e3) { 321 + let t2 = this.rules.block.blockquote.exec(e3); 322 + if (t2) { 323 + let n = C(t2[0], ` 324 + `).split(` 325 + `), r = "", i3 = "", s = []; 326 + for (; n.length > 0; ) { 327 + let a = false, o2 = [], l; 328 + for (l = 0; l < n.length; l++) if (this.rules.other.blockquoteStart.test(n[l])) o2.push(n[l]), a = true; 329 + else if (!a) o2.push(n[l]); 330 + else break; 331 + n = n.slice(l); 332 + let p = o2.join(` 333 + `), c = p.replace(this.rules.other.blockquoteSetextReplace, ` 334 + $1`).replace(this.rules.other.blockquoteSetextReplace2, ""); 335 + r = r ? `${r} 336 + ${p}` : p, i3 = i3 ? `${i3} 337 + ${c}` : c; 338 + let d = this.lexer.state.top; 339 + if (this.lexer.state.top = true, this.lexer.blockTokens(c, s, true), this.lexer.state.top = d, n.length === 0) break; 340 + let h = s.at(-1); 341 + if (h?.type === "code") break; 342 + if (h?.type === "blockquote") { 343 + let R = h, f = R.raw + ` 344 + ` + n.join(` 345 + `), S = this.blockquote(f); 346 + s[s.length - 1] = S, r = r.substring(0, r.length - R.raw.length) + S.raw, i3 = i3.substring(0, i3.length - R.text.length) + S.text; 347 + break; 348 + } else if (h?.type === "list") { 349 + let R = h, f = R.raw + ` 350 + ` + n.join(` 351 + `), S = this.list(f); 352 + s[s.length - 1] = S, r = r.substring(0, r.length - h.raw.length) + S.raw, i3 = i3.substring(0, i3.length - R.raw.length) + S.raw, n = f.substring(s.at(-1).raw.length).split(` 353 + `); 354 + continue; 355 + } 356 + } 357 + return { type: "blockquote", raw: r, tokens: s, text: i3 }; 358 + } 359 + } 360 + list(e3) { 361 + let t2 = this.rules.block.list.exec(e3); 362 + if (t2) { 363 + let n = t2[1].trim(), r = n.length > 1, i3 = { type: "list", raw: "", ordered: r, start: r ? +n.slice(0, -1) : "", loose: false, items: [] }; 364 + n = r ? `\\d{1,9}\\${n.slice(-1)}` : `\\${n}`, this.options.pedantic && (n = r ? n : "[*+-]"); 365 + let s = this.rules.other.listItemRegex(n), a = false; 366 + for (; e3; ) { 367 + let l = false, p = "", c = ""; 368 + if (!(t2 = s.exec(e3)) || this.rules.block.hr.test(e3)) break; 369 + p = t2[0], e3 = e3.substring(p.length); 370 + let d = fe(t2[2].split(` 371 + `, 1)[0], t2[1].length), h = e3.split(` 372 + `, 1)[0], R = !d.trim(), f = 0; 373 + if (this.options.pedantic ? (f = 2, c = d.trimStart()) : R ? f = t2[1].length + 1 : (f = d.search(this.rules.other.nonSpaceChar), f = f > 4 ? 1 : f, c = d.slice(f), f += t2[1].length), R && this.rules.other.blankLine.test(h) && (p += h + ` 374 + `, e3 = e3.substring(h.length + 1), l = true), !l) { 375 + let S = this.rules.other.nextBulletRegex(f), V = this.rules.other.hrRegex(f), Y = this.rules.other.fencesBeginRegex(f), ee = this.rules.other.headingBeginRegex(f), xe = this.rules.other.htmlBeginRegex(f), be = this.rules.other.blockquoteBeginRegex(f); 376 + for (; e3; ) { 377 + let G = e3.split(` 378 + `, 1)[0], A2; 379 + if (h = G, this.options.pedantic ? (h = h.replace(this.rules.other.listReplaceNesting, " "), A2 = h) : A2 = h.replace(this.rules.other.tabCharGlobal, " "), Y.test(h) || ee.test(h) || xe.test(h) || be.test(h) || S.test(h) || V.test(h)) break; 380 + if (A2.search(this.rules.other.nonSpaceChar) >= f || !h.trim()) c += ` 381 + ` + A2.slice(f); 382 + else { 383 + if (R || d.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || Y.test(d) || ee.test(d) || V.test(d)) break; 384 + c += ` 385 + ` + h; 386 + } 387 + R = !h.trim(), p += G + ` 388 + `, e3 = e3.substring(G.length + 1), d = A2.slice(f); 389 + } 390 + } 391 + i3.loose || (a ? i3.loose = true : this.rules.other.doubleBlankLine.test(p) && (a = true)), i3.items.push({ type: "list_item", raw: p, task: !!this.options.gfm && this.rules.other.listIsTask.test(c), loose: false, text: c, tokens: [] }), i3.raw += p; 392 + } 393 + let o2 = i3.items.at(-1); 394 + if (o2) o2.raw = o2.raw.trimEnd(), o2.text = o2.text.trimEnd(); 395 + else return; 396 + i3.raw = i3.raw.trimEnd(); 397 + for (let l of i3.items) { 398 + if (this.lexer.state.top = false, l.tokens = this.lexer.blockTokens(l.text, []), l.task) { 399 + if (l.text = l.text.replace(this.rules.other.listReplaceTask, ""), l.tokens[0]?.type === "text" || l.tokens[0]?.type === "paragraph") { 400 + l.tokens[0].raw = l.tokens[0].raw.replace(this.rules.other.listReplaceTask, ""), l.tokens[0].text = l.tokens[0].text.replace(this.rules.other.listReplaceTask, ""); 401 + for (let c = this.lexer.inlineQueue.length - 1; c >= 0; c--) if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)) { 402 + this.lexer.inlineQueue[c].src = this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask, ""); 403 + break; 404 + } 405 + } 406 + let p = this.rules.other.listTaskCheckbox.exec(l.raw); 407 + if (p) { 408 + let c = { type: "checkbox", raw: p[0] + " ", checked: p[0] !== "[ ]" }; 409 + l.checked = c.checked, i3.loose ? l.tokens[0] && ["paragraph", "text"].includes(l.tokens[0].type) && "tokens" in l.tokens[0] && l.tokens[0].tokens ? (l.tokens[0].raw = c.raw + l.tokens[0].raw, l.tokens[0].text = c.raw + l.tokens[0].text, l.tokens[0].tokens.unshift(c)) : l.tokens.unshift({ type: "paragraph", raw: c.raw, text: c.raw, tokens: [c] }) : l.tokens.unshift(c); 410 + } 411 + } 412 + if (!i3.loose) { 413 + let p = l.tokens.filter((d) => d.type === "space"), c = p.length > 0 && p.some((d) => this.rules.other.anyLine.test(d.raw)); 414 + i3.loose = c; 415 + } 416 + } 417 + if (i3.loose) for (let l of i3.items) { 418 + l.loose = true; 419 + for (let p of l.tokens) p.type === "text" && (p.type = "paragraph"); 420 + } 421 + return i3; 422 + } 423 + } 424 + html(e3) { 425 + let t2 = this.rules.block.html.exec(e3); 426 + if (t2) return { type: "html", block: true, raw: t2[0], pre: t2[1] === "pre" || t2[1] === "script" || t2[1] === "style", text: t2[0] }; 427 + } 428 + def(e3) { 429 + let t2 = this.rules.block.def.exec(e3); 430 + if (t2) { 431 + let n = t2[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, " "), r = t2[2] ? t2[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", i3 = t2[3] ? t2[3].substring(1, t2[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t2[3]; 432 + return { type: "def", tag: n, raw: t2[0], href: r, title: i3 }; 433 + } 434 + } 435 + table(e3) { 436 + let t2 = this.rules.block.table.exec(e3); 437 + if (!t2 || !this.rules.other.tableDelimiter.test(t2[2])) return; 438 + let n = J(t2[1]), r = t2[2].replace(this.rules.other.tableAlignChars, "").split("|"), i3 = t2[3]?.trim() ? t2[3].replace(this.rules.other.tableRowBlankLine, "").split(` 439 + `) : [], s = { type: "table", raw: t2[0], header: [], align: [], rows: [] }; 440 + if (n.length === r.length) { 441 + for (let a of r) this.rules.other.tableAlignRight.test(a) ? s.align.push("right") : this.rules.other.tableAlignCenter.test(a) ? s.align.push("center") : this.rules.other.tableAlignLeft.test(a) ? s.align.push("left") : s.align.push(null); 442 + for (let a = 0; a < n.length; a++) s.header.push({ text: n[a], tokens: this.lexer.inline(n[a]), header: true, align: s.align[a] }); 443 + for (let a of i3) s.rows.push(J(a, s.header.length).map((o2, l) => ({ text: o2, tokens: this.lexer.inline(o2), header: false, align: s.align[l] }))); 444 + return s; 445 + } 446 + } 447 + lheading(e3) { 448 + let t2 = this.rules.block.lheading.exec(e3); 449 + if (t2) return { type: "heading", raw: t2[0], depth: t2[2].charAt(0) === "=" ? 1 : 2, text: t2[1], tokens: this.lexer.inline(t2[1]) }; 450 + } 451 + paragraph(e3) { 452 + let t2 = this.rules.block.paragraph.exec(e3); 453 + if (t2) { 454 + let n = t2[1].charAt(t2[1].length - 1) === ` 455 + ` ? t2[1].slice(0, -1) : t2[1]; 456 + return { type: "paragraph", raw: t2[0], text: n, tokens: this.lexer.inline(n) }; 457 + } 458 + } 459 + text(e3) { 460 + let t2 = this.rules.block.text.exec(e3); 461 + if (t2) return { type: "text", raw: t2[0], text: t2[0], tokens: this.lexer.inline(t2[0]) }; 462 + } 463 + escape(e3) { 464 + let t2 = this.rules.inline.escape.exec(e3); 465 + if (t2) return { type: "escape", raw: t2[0], text: t2[1] }; 466 + } 467 + tag(e3) { 468 + let t2 = this.rules.inline.tag.exec(e3); 469 + if (t2) return !this.lexer.state.inLink && this.rules.other.startATag.test(t2[0]) ? this.lexer.state.inLink = true : this.lexer.state.inLink && this.rules.other.endATag.test(t2[0]) && (this.lexer.state.inLink = false), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(t2[0]) ? this.lexer.state.inRawBlock = true : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(t2[0]) && (this.lexer.state.inRawBlock = false), { type: "html", raw: t2[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: false, text: t2[0] }; 470 + } 471 + link(e3) { 472 + let t2 = this.rules.inline.link.exec(e3); 473 + if (t2) { 474 + let n = t2[2].trim(); 475 + if (!this.options.pedantic && this.rules.other.startAngleBracket.test(n)) { 476 + if (!this.rules.other.endAngleBracket.test(n)) return; 477 + let s = C(n.slice(0, -1), "\\"); 478 + if ((n.length - s.length) % 2 === 0) return; 479 + } else { 480 + let s = ge(t2[2], "()"); 481 + if (s === -2) return; 482 + if (s > -1) { 483 + let o2 = (t2[0].indexOf("!") === 0 ? 5 : 4) + t2[1].length + s; 484 + t2[2] = t2[2].substring(0, s), t2[0] = t2[0].substring(0, o2).trim(), t2[3] = ""; 485 + } 486 + } 487 + let r = t2[2], i3 = ""; 488 + if (this.options.pedantic) { 489 + let s = this.rules.other.pedanticHrefTitle.exec(r); 490 + s && (r = s[1], i3 = s[3]); 491 + } else i3 = t2[3] ? t2[3].slice(1, -1) : ""; 492 + return r = r.trim(), this.rules.other.startAngleBracket.test(r) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(n) ? r = r.slice(1) : r = r.slice(1, -1)), me(t2, { href: r && r.replace(this.rules.inline.anyPunctuation, "$1"), title: i3 && i3.replace(this.rules.inline.anyPunctuation, "$1") }, t2[0], this.lexer, this.rules); 493 + } 494 + } 495 + reflink(e3, t2) { 496 + let n; 497 + if ((n = this.rules.inline.reflink.exec(e3)) || (n = this.rules.inline.nolink.exec(e3))) { 498 + let r = (n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, " "), i3 = t2[r.toLowerCase()]; 499 + if (!i3) { 500 + let s = n[0].charAt(0); 501 + return { type: "text", raw: s, text: s }; 502 + } 503 + return me(n, i3, n[0], this.lexer, this.rules); 504 + } 505 + } 506 + emStrong(e3, t2, n = "") { 507 + let r = this.rules.inline.emStrongLDelim.exec(e3); 508 + if (!r || r[3] && n.match(this.rules.other.unicodeAlphaNumeric)) return; 509 + if (!(r[1] || r[2] || "") || !n || this.rules.inline.punctuation.exec(n)) { 510 + let s = [...r[0]].length - 1, a, o2, l = s, p = 0, c = r[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; 511 + for (c.lastIndex = 0, t2 = t2.slice(-1 * e3.length + s); (r = c.exec(t2)) != null; ) { 512 + if (a = r[1] || r[2] || r[3] || r[4] || r[5] || r[6], !a) continue; 513 + if (o2 = [...a].length, r[3] || r[4]) { 514 + l += o2; 515 + continue; 516 + } else if ((r[5] || r[6]) && s % 3 && !((s + o2) % 3)) { 517 + p += o2; 518 + continue; 519 + } 520 + if (l -= o2, l > 0) continue; 521 + o2 = Math.min(o2, o2 + l + p); 522 + let d = [...r[0]][0].length, h = e3.slice(0, s + r.index + d + o2); 523 + if (Math.min(s, o2) % 2) { 524 + let f = h.slice(1, -1); 525 + return { type: "em", raw: h, text: f, tokens: this.lexer.inlineTokens(f) }; 526 + } 527 + let R = h.slice(2, -2); 528 + return { type: "strong", raw: h, text: R, tokens: this.lexer.inlineTokens(R) }; 529 + } 530 + } 531 + } 532 + codespan(e3) { 533 + let t2 = this.rules.inline.code.exec(e3); 534 + if (t2) { 535 + let n = t2[2].replace(this.rules.other.newLineCharGlobal, " "), r = this.rules.other.nonSpaceChar.test(n), i3 = this.rules.other.startingSpaceChar.test(n) && this.rules.other.endingSpaceChar.test(n); 536 + return r && i3 && (n = n.substring(1, n.length - 1)), { type: "codespan", raw: t2[0], text: n }; 537 + } 538 + } 539 + br(e3) { 540 + let t2 = this.rules.inline.br.exec(e3); 541 + if (t2) return { type: "br", raw: t2[0] }; 542 + } 543 + del(e3, t2, n = "") { 544 + let r = this.rules.inline.delLDelim.exec(e3); 545 + if (!r) return; 546 + if (!(r[1] || "") || !n || this.rules.inline.punctuation.exec(n)) { 547 + let s = [...r[0]].length - 1, a, o2, l = s, p = this.rules.inline.delRDelim; 548 + for (p.lastIndex = 0, t2 = t2.slice(-1 * e3.length + s); (r = p.exec(t2)) != null; ) { 549 + if (a = r[1] || r[2] || r[3] || r[4] || r[5] || r[6], !a || (o2 = [...a].length, o2 !== s)) continue; 550 + if (r[3] || r[4]) { 551 + l += o2; 552 + continue; 553 + } 554 + if (l -= o2, l > 0) continue; 555 + o2 = Math.min(o2, o2 + l); 556 + let c = [...r[0]][0].length, d = e3.slice(0, s + r.index + c + o2), h = d.slice(s, -s); 557 + return { type: "del", raw: d, text: h, tokens: this.lexer.inlineTokens(h) }; 558 + } 559 + } 560 + } 561 + autolink(e3) { 562 + let t2 = this.rules.inline.autolink.exec(e3); 563 + if (t2) { 564 + let n, r; 565 + return t2[2] === "@" ? (n = t2[1], r = "mailto:" + n) : (n = t2[1], r = n), { type: "link", raw: t2[0], text: n, href: r, tokens: [{ type: "text", raw: n, text: n }] }; 566 + } 567 + } 568 + url(e3) { 569 + let t2; 570 + if (t2 = this.rules.inline.url.exec(e3)) { 571 + let n, r; 572 + if (t2[2] === "@") n = t2[0], r = "mailto:" + n; 573 + else { 574 + let i3; 575 + do 576 + i3 = t2[0], t2[0] = this.rules.inline._backpedal.exec(t2[0])?.[0] ?? ""; 577 + while (i3 !== t2[0]); 578 + n = t2[0], t2[1] === "www." ? r = "http://" + t2[0] : r = t2[0]; 579 + } 580 + return { type: "link", raw: t2[0], text: n, href: r, tokens: [{ type: "text", raw: n, text: n }] }; 581 + } 582 + } 583 + inlineText(e3) { 584 + let t2 = this.rules.inline.text.exec(e3); 585 + if (t2) { 586 + let n = this.lexer.state.inRawBlock; 587 + return { type: "text", raw: t2[0], text: t2[0], escaped: n }; 588 + } 589 + } 590 + }; 591 + var x = class u { 592 + static { 593 + __name(this, "u"); 594 + } 595 + tokens; 596 + options; 597 + state; 598 + inlineQueue; 599 + tokenizer; 600 + constructor(e3) { 601 + this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e3 || T2, this.options.tokenizer = this.options.tokenizer || new w(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, top: true }; 602 + let t2 = { other: m, block: E2.normal, inline: z.normal }; 603 + this.options.pedantic ? (t2.block = E2.pedantic, t2.inline = z.pedantic) : this.options.gfm && (t2.block = E2.gfm, this.options.breaks ? t2.inline = z.breaks : t2.inline = z.gfm), this.tokenizer.rules = t2; 604 + } 605 + static get rules() { 606 + return { block: E2, inline: z }; 607 + } 608 + static lex(e3, t2) { 609 + return new u(t2).lex(e3); 610 + } 611 + static lexInline(e3, t2) { 612 + return new u(t2).inlineTokens(e3); 613 + } 614 + lex(e3) { 615 + e3 = e3.replace(m.carriageReturn, ` 616 + `), this.blockTokens(e3, this.tokens); 617 + for (let t2 = 0; t2 < this.inlineQueue.length; t2++) { 618 + let n = this.inlineQueue[t2]; 619 + this.inlineTokens(n.src, n.tokens); 620 + } 621 + return this.inlineQueue = [], this.tokens; 622 + } 623 + blockTokens(e3, t2 = [], n = false) { 624 + for (this.options.pedantic && (e3 = e3.replace(m.tabCharGlobal, " ").replace(m.spaceLine, "")); e3; ) { 625 + let r; 626 + if (this.options.extensions?.block?.some((s) => (r = s.call({ lexer: this }, e3, t2)) ? (e3 = e3.substring(r.raw.length), t2.push(r), true) : false)) continue; 627 + if (r = this.tokenizer.space(e3)) { 628 + e3 = e3.substring(r.raw.length); 629 + let s = t2.at(-1); 630 + r.raw.length === 1 && s !== void 0 ? s.raw += ` 631 + ` : t2.push(r); 632 + continue; 633 + } 634 + if (r = this.tokenizer.code(e3)) { 635 + e3 = e3.substring(r.raw.length); 636 + let s = t2.at(-1); 637 + s?.type === "paragraph" || s?.type === "text" ? (s.raw += (s.raw.endsWith(` 638 + `) ? "" : ` 639 + `) + r.raw, s.text += ` 640 + ` + r.text, this.inlineQueue.at(-1).src = s.text) : t2.push(r); 641 + continue; 642 + } 643 + if (r = this.tokenizer.fences(e3)) { 644 + e3 = e3.substring(r.raw.length), t2.push(r); 645 + continue; 646 + } 647 + if (r = this.tokenizer.heading(e3)) { 648 + e3 = e3.substring(r.raw.length), t2.push(r); 649 + continue; 650 + } 651 + if (r = this.tokenizer.hr(e3)) { 652 + e3 = e3.substring(r.raw.length), t2.push(r); 653 + continue; 654 + } 655 + if (r = this.tokenizer.blockquote(e3)) { 656 + e3 = e3.substring(r.raw.length), t2.push(r); 657 + continue; 658 + } 659 + if (r = this.tokenizer.list(e3)) { 660 + e3 = e3.substring(r.raw.length), t2.push(r); 661 + continue; 662 + } 663 + if (r = this.tokenizer.html(e3)) { 664 + e3 = e3.substring(r.raw.length), t2.push(r); 665 + continue; 666 + } 667 + if (r = this.tokenizer.def(e3)) { 668 + e3 = e3.substring(r.raw.length); 669 + let s = t2.at(-1); 670 + s?.type === "paragraph" || s?.type === "text" ? (s.raw += (s.raw.endsWith(` 671 + `) ? "" : ` 672 + `) + r.raw, s.text += ` 673 + ` + r.raw, this.inlineQueue.at(-1).src = s.text) : this.tokens.links[r.tag] || (this.tokens.links[r.tag] = { href: r.href, title: r.title }, t2.push(r)); 674 + continue; 675 + } 676 + if (r = this.tokenizer.table(e3)) { 677 + e3 = e3.substring(r.raw.length), t2.push(r); 678 + continue; 679 + } 680 + if (r = this.tokenizer.lheading(e3)) { 681 + e3 = e3.substring(r.raw.length), t2.push(r); 682 + continue; 683 + } 684 + let i3 = e3; 685 + if (this.options.extensions?.startBlock) { 686 + let s = 1 / 0, a = e3.slice(1), o2; 687 + this.options.extensions.startBlock.forEach((l) => { 688 + o2 = l.call({ lexer: this }, a), typeof o2 == "number" && o2 >= 0 && (s = Math.min(s, o2)); 689 + }), s < 1 / 0 && s >= 0 && (i3 = e3.substring(0, s + 1)); 690 + } 691 + if (this.state.top && (r = this.tokenizer.paragraph(i3))) { 692 + let s = t2.at(-1); 693 + n && s?.type === "paragraph" ? (s.raw += (s.raw.endsWith(` 694 + `) ? "" : ` 695 + `) + r.raw, s.text += ` 696 + ` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t2.push(r), n = i3.length !== e3.length, e3 = e3.substring(r.raw.length); 697 + continue; 698 + } 699 + if (r = this.tokenizer.text(e3)) { 700 + e3 = e3.substring(r.raw.length); 701 + let s = t2.at(-1); 702 + s?.type === "text" ? (s.raw += (s.raw.endsWith(` 703 + `) ? "" : ` 704 + `) + r.raw, s.text += ` 705 + ` + r.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t2.push(r); 706 + continue; 707 + } 708 + if (e3) { 709 + let s = "Infinite loop on byte: " + e3.charCodeAt(0); 710 + if (this.options.silent) { 711 + console.error(s); 712 + break; 713 + } else throw new Error(s); 714 + } 715 + } 716 + return this.state.top = true, t2; 717 + } 718 + inline(e3, t2 = []) { 719 + return this.inlineQueue.push({ src: e3, tokens: t2 }), t2; 720 + } 721 + inlineTokens(e3, t2 = []) { 722 + let n = e3, r = null; 723 + if (this.tokens.links) { 724 + let o2 = Object.keys(this.tokens.links); 725 + if (o2.length > 0) for (; (r = this.tokenizer.rules.inline.reflinkSearch.exec(n)) != null; ) o2.includes(r[0].slice(r[0].lastIndexOf("[") + 1, -1)) && (n = n.slice(0, r.index) + "[" + "a".repeat(r[0].length - 2) + "]" + n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex)); 726 + } 727 + for (; (r = this.tokenizer.rules.inline.anyPunctuation.exec(n)) != null; ) n = n.slice(0, r.index) + "++" + n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); 728 + let i3; 729 + for (; (r = this.tokenizer.rules.inline.blockSkip.exec(n)) != null; ) i3 = r[2] ? r[2].length : 0, n = n.slice(0, r.index + i3) + "[" + "a".repeat(r[0].length - i3 - 2) + "]" + n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); 730 + n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n; 731 + let s = false, a = ""; 732 + for (; e3; ) { 733 + s || (a = ""), s = false; 734 + let o2; 735 + if (this.options.extensions?.inline?.some((p) => (o2 = p.call({ lexer: this }, e3, t2)) ? (e3 = e3.substring(o2.raw.length), t2.push(o2), true) : false)) continue; 736 + if (o2 = this.tokenizer.escape(e3)) { 737 + e3 = e3.substring(o2.raw.length), t2.push(o2); 738 + continue; 739 + } 740 + if (o2 = this.tokenizer.tag(e3)) { 741 + e3 = e3.substring(o2.raw.length), t2.push(o2); 742 + continue; 743 + } 744 + if (o2 = this.tokenizer.link(e3)) { 745 + e3 = e3.substring(o2.raw.length), t2.push(o2); 746 + continue; 747 + } 748 + if (o2 = this.tokenizer.reflink(e3, this.tokens.links)) { 749 + e3 = e3.substring(o2.raw.length); 750 + let p = t2.at(-1); 751 + o2.type === "text" && p?.type === "text" ? (p.raw += o2.raw, p.text += o2.text) : t2.push(o2); 752 + continue; 753 + } 754 + if (o2 = this.tokenizer.emStrong(e3, n, a)) { 755 + e3 = e3.substring(o2.raw.length), t2.push(o2); 756 + continue; 757 + } 758 + if (o2 = this.tokenizer.codespan(e3)) { 759 + e3 = e3.substring(o2.raw.length), t2.push(o2); 760 + continue; 761 + } 762 + if (o2 = this.tokenizer.br(e3)) { 763 + e3 = e3.substring(o2.raw.length), t2.push(o2); 764 + continue; 765 + } 766 + if (o2 = this.tokenizer.del(e3, n, a)) { 767 + e3 = e3.substring(o2.raw.length), t2.push(o2); 768 + continue; 769 + } 770 + if (o2 = this.tokenizer.autolink(e3)) { 771 + e3 = e3.substring(o2.raw.length), t2.push(o2); 772 + continue; 773 + } 774 + if (!this.state.inLink && (o2 = this.tokenizer.url(e3))) { 775 + e3 = e3.substring(o2.raw.length), t2.push(o2); 776 + continue; 777 + } 778 + let l = e3; 779 + if (this.options.extensions?.startInline) { 780 + let p = 1 / 0, c = e3.slice(1), d; 781 + this.options.extensions.startInline.forEach((h) => { 782 + d = h.call({ lexer: this }, c), typeof d == "number" && d >= 0 && (p = Math.min(p, d)); 783 + }), p < 1 / 0 && p >= 0 && (l = e3.substring(0, p + 1)); 784 + } 785 + if (o2 = this.tokenizer.inlineText(l)) { 786 + e3 = e3.substring(o2.raw.length), o2.raw.slice(-1) !== "_" && (a = o2.raw.slice(-1)), s = true; 787 + let p = t2.at(-1); 788 + p?.type === "text" ? (p.raw += o2.raw, p.text += o2.text) : t2.push(o2); 789 + continue; 790 + } 791 + if (e3) { 792 + let p = "Infinite loop on byte: " + e3.charCodeAt(0); 793 + if (this.options.silent) { 794 + console.error(p); 795 + break; 796 + } else throw new Error(p); 797 + } 798 + } 799 + return t2; 800 + } 801 + }; 802 + var y = class { 803 + static { 804 + __name(this, "y"); 805 + } 806 + options; 807 + parser; 808 + constructor(e3) { 809 + this.options = e3 || T2; 810 + } 811 + space(e3) { 812 + return ""; 813 + } 814 + code({ text: e3, lang: t2, escaped: n }) { 815 + let r = (t2 || "").match(m.notSpaceStart)?.[0], i3 = e3.replace(m.endingNewline, "") + ` 816 + `; 817 + return r ? '<pre><code class="language-' + O(r) + '">' + (n ? i3 : O(i3, true)) + `</code></pre> 818 + ` : "<pre><code>" + (n ? i3 : O(i3, true)) + `</code></pre> 819 + `; 820 + } 821 + blockquote({ tokens: e3 }) { 822 + return `<blockquote> 823 + ${this.parser.parse(e3)}</blockquote> 824 + `; 825 + } 826 + html({ text: e3 }) { 827 + return e3; 828 + } 829 + def(e3) { 830 + return ""; 831 + } 832 + heading({ tokens: e3, depth: t2 }) { 833 + return `<h${t2}>${this.parser.parseInline(e3)}</h${t2}> 834 + `; 835 + } 836 + hr(e3) { 837 + return `<hr> 838 + `; 839 + } 840 + list(e3) { 841 + let t2 = e3.ordered, n = e3.start, r = ""; 842 + for (let a = 0; a < e3.items.length; a++) { 843 + let o2 = e3.items[a]; 844 + r += this.listitem(o2); 845 + } 846 + let i3 = t2 ? "ol" : "ul", s = t2 && n !== 1 ? ' start="' + n + '"' : ""; 847 + return "<" + i3 + s + `> 848 + ` + r + "</" + i3 + `> 849 + `; 850 + } 851 + listitem(e3) { 852 + return `<li>${this.parser.parse(e3.tokens)}</li> 853 + `; 854 + } 855 + checkbox({ checked: e3 }) { 856 + return "<input " + (e3 ? 'checked="" ' : "") + 'disabled="" type="checkbox"> '; 857 + } 858 + paragraph({ tokens: e3 }) { 859 + return `<p>${this.parser.parseInline(e3)}</p> 860 + `; 861 + } 862 + table(e3) { 863 + let t2 = "", n = ""; 864 + for (let i3 = 0; i3 < e3.header.length; i3++) n += this.tablecell(e3.header[i3]); 865 + t2 += this.tablerow({ text: n }); 866 + let r = ""; 867 + for (let i3 = 0; i3 < e3.rows.length; i3++) { 868 + let s = e3.rows[i3]; 869 + n = ""; 870 + for (let a = 0; a < s.length; a++) n += this.tablecell(s[a]); 871 + r += this.tablerow({ text: n }); 872 + } 873 + return r && (r = `<tbody>${r}</tbody>`), `<table> 874 + <thead> 875 + ` + t2 + `</thead> 876 + ` + r + `</table> 877 + `; 878 + } 879 + tablerow({ text: e3 }) { 880 + return `<tr> 881 + ${e3}</tr> 882 + `; 883 + } 884 + tablecell(e3) { 885 + let t2 = this.parser.parseInline(e3.tokens), n = e3.header ? "th" : "td"; 886 + return (e3.align ? `<${n} align="${e3.align}">` : `<${n}>`) + t2 + `</${n}> 887 + `; 888 + } 889 + strong({ tokens: e3 }) { 890 + return `<strong>${this.parser.parseInline(e3)}</strong>`; 891 + } 892 + em({ tokens: e3 }) { 893 + return `<em>${this.parser.parseInline(e3)}</em>`; 894 + } 895 + codespan({ text: e3 }) { 896 + return `<code>${O(e3, true)}</code>`; 897 + } 898 + br(e3) { 899 + return "<br>"; 900 + } 901 + del({ tokens: e3 }) { 902 + return `<del>${this.parser.parseInline(e3)}</del>`; 903 + } 904 + link({ href: e3, title: t2, tokens: n }) { 905 + let r = this.parser.parseInline(n), i3 = X(e3); 906 + if (i3 === null) return r; 907 + e3 = i3; 908 + let s = '<a href="' + e3 + '"'; 909 + return t2 && (s += ' title="' + O(t2) + '"'), s += ">" + r + "</a>", s; 910 + } 911 + image({ href: e3, title: t2, text: n, tokens: r }) { 912 + r && (n = this.parser.parseInline(r, this.parser.textRenderer)); 913 + let i3 = X(e3); 914 + if (i3 === null) return O(n); 915 + e3 = i3; 916 + let s = `<img src="${e3}" alt="${O(n)}"`; 917 + return t2 && (s += ` title="${O(t2)}"`), s += ">", s; 918 + } 919 + text(e3) { 920 + return "tokens" in e3 && e3.tokens ? this.parser.parseInline(e3.tokens) : "escaped" in e3 && e3.escaped ? e3.text : O(e3.text); 921 + } 922 + }; 923 + var $ = class { 924 + static { 925 + __name(this, "$"); 926 + } 927 + strong({ text: e3 }) { 928 + return e3; 929 + } 930 + em({ text: e3 }) { 931 + return e3; 932 + } 933 + codespan({ text: e3 }) { 934 + return e3; 935 + } 936 + del({ text: e3 }) { 937 + return e3; 938 + } 939 + html({ text: e3 }) { 940 + return e3; 941 + } 942 + text({ text: e3 }) { 943 + return e3; 944 + } 945 + link({ text: e3 }) { 946 + return "" + e3; 947 + } 948 + image({ text: e3 }) { 949 + return "" + e3; 950 + } 951 + br() { 952 + return ""; 953 + } 954 + checkbox({ raw: e3 }) { 955 + return e3; 956 + } 957 + }; 958 + var b = class u2 { 959 + static { 960 + __name(this, "u"); 961 + } 962 + options; 963 + renderer; 964 + textRenderer; 965 + constructor(e3) { 966 + this.options = e3 || T2, this.options.renderer = this.options.renderer || new y(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new $(); 967 + } 968 + static parse(e3, t2) { 969 + return new u2(t2).parse(e3); 970 + } 971 + static parseInline(e3, t2) { 972 + return new u2(t2).parseInline(e3); 973 + } 974 + parse(e3) { 975 + let t2 = ""; 976 + for (let n = 0; n < e3.length; n++) { 977 + let r = e3[n]; 978 + if (this.options.extensions?.renderers?.[r.type]) { 979 + let s = r, a = this.options.extensions.renderers[s.type].call({ parser: this }, s); 980 + if (a !== false || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "def", "paragraph", "text"].includes(s.type)) { 981 + t2 += a || ""; 982 + continue; 983 + } 984 + } 985 + let i3 = r; 986 + switch (i3.type) { 987 + case "space": { 988 + t2 += this.renderer.space(i3); 989 + break; 990 + } 991 + case "hr": { 992 + t2 += this.renderer.hr(i3); 993 + break; 994 + } 995 + case "heading": { 996 + t2 += this.renderer.heading(i3); 997 + break; 998 + } 999 + case "code": { 1000 + t2 += this.renderer.code(i3); 1001 + break; 1002 + } 1003 + case "table": { 1004 + t2 += this.renderer.table(i3); 1005 + break; 1006 + } 1007 + case "blockquote": { 1008 + t2 += this.renderer.blockquote(i3); 1009 + break; 1010 + } 1011 + case "list": { 1012 + t2 += this.renderer.list(i3); 1013 + break; 1014 + } 1015 + case "checkbox": { 1016 + t2 += this.renderer.checkbox(i3); 1017 + break; 1018 + } 1019 + case "html": { 1020 + t2 += this.renderer.html(i3); 1021 + break; 1022 + } 1023 + case "def": { 1024 + t2 += this.renderer.def(i3); 1025 + break; 1026 + } 1027 + case "paragraph": { 1028 + t2 += this.renderer.paragraph(i3); 1029 + break; 1030 + } 1031 + case "text": { 1032 + t2 += this.renderer.text(i3); 1033 + break; 1034 + } 1035 + default: { 1036 + let s = 'Token with "' + i3.type + '" type was not found.'; 1037 + if (this.options.silent) return console.error(s), ""; 1038 + throw new Error(s); 1039 + } 1040 + } 1041 + } 1042 + return t2; 1043 + } 1044 + parseInline(e3, t2 = this.renderer) { 1045 + let n = ""; 1046 + for (let r = 0; r < e3.length; r++) { 1047 + let i3 = e3[r]; 1048 + if (this.options.extensions?.renderers?.[i3.type]) { 1049 + let a = this.options.extensions.renderers[i3.type].call({ parser: this }, i3); 1050 + if (a !== false || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(i3.type)) { 1051 + n += a || ""; 1052 + continue; 1053 + } 1054 + } 1055 + let s = i3; 1056 + switch (s.type) { 1057 + case "escape": { 1058 + n += t2.text(s); 1059 + break; 1060 + } 1061 + case "html": { 1062 + n += t2.html(s); 1063 + break; 1064 + } 1065 + case "link": { 1066 + n += t2.link(s); 1067 + break; 1068 + } 1069 + case "image": { 1070 + n += t2.image(s); 1071 + break; 1072 + } 1073 + case "checkbox": { 1074 + n += t2.checkbox(s); 1075 + break; 1076 + } 1077 + case "strong": { 1078 + n += t2.strong(s); 1079 + break; 1080 + } 1081 + case "em": { 1082 + n += t2.em(s); 1083 + break; 1084 + } 1085 + case "codespan": { 1086 + n += t2.codespan(s); 1087 + break; 1088 + } 1089 + case "br": { 1090 + n += t2.br(s); 1091 + break; 1092 + } 1093 + case "del": { 1094 + n += t2.del(s); 1095 + break; 1096 + } 1097 + case "text": { 1098 + n += t2.text(s); 1099 + break; 1100 + } 1101 + default: { 1102 + let a = 'Token with "' + s.type + '" type was not found.'; 1103 + if (this.options.silent) return console.error(a), ""; 1104 + throw new Error(a); 1105 + } 1106 + } 1107 + } 1108 + return n; 1109 + } 1110 + }; 1111 + var P = class { 1112 + static { 1113 + __name(this, "P"); 1114 + } 1115 + options; 1116 + block; 1117 + constructor(e3) { 1118 + this.options = e3 || T2; 1119 + } 1120 + static passThroughHooks = /* @__PURE__ */ new Set(["preprocess", "postprocess", "processAllTokens", "emStrongMask"]); 1121 + static passThroughHooksRespectAsync = /* @__PURE__ */ new Set(["preprocess", "postprocess", "processAllTokens"]); 1122 + preprocess(e3) { 1123 + return e3; 1124 + } 1125 + postprocess(e3) { 1126 + return e3; 1127 + } 1128 + processAllTokens(e3) { 1129 + return e3; 1130 + } 1131 + emStrongMask(e3) { 1132 + return e3; 1133 + } 1134 + provideLexer() { 1135 + return this.block ? x.lex : x.lexInline; 1136 + } 1137 + provideParser() { 1138 + return this.block ? b.parse : b.parseInline; 1139 + } 1140 + }; 1141 + var B2 = class { 1142 + static { 1143 + __name(this, "B"); 1144 + } 1145 + defaults = M(); 1146 + options = this.setOptions; 1147 + parse = this.parseMarkdown(true); 1148 + parseInline = this.parseMarkdown(false); 1149 + Parser = b; 1150 + Renderer = y; 1151 + TextRenderer = $; 1152 + Lexer = x; 1153 + Tokenizer = w; 1154 + Hooks = P; 1155 + constructor(...e3) { 1156 + this.use(...e3); 1157 + } 1158 + walkTokens(e3, t2) { 1159 + let n = []; 1160 + for (let r of e3) switch (n = n.concat(t2.call(this, r)), r.type) { 1161 + case "table": { 1162 + let i3 = r; 1163 + for (let s of i3.header) n = n.concat(this.walkTokens(s.tokens, t2)); 1164 + for (let s of i3.rows) for (let a of s) n = n.concat(this.walkTokens(a.tokens, t2)); 1165 + break; 1166 + } 1167 + case "list": { 1168 + let i3 = r; 1169 + n = n.concat(this.walkTokens(i3.items, t2)); 1170 + break; 1171 + } 1172 + default: { 1173 + let i3 = r; 1174 + this.defaults.extensions?.childTokens?.[i3.type] ? this.defaults.extensions.childTokens[i3.type].forEach((s) => { 1175 + let a = i3[s].flat(1 / 0); 1176 + n = n.concat(this.walkTokens(a, t2)); 1177 + }) : i3.tokens && (n = n.concat(this.walkTokens(i3.tokens, t2))); 1178 + } 1179 + } 1180 + return n; 1181 + } 1182 + use(...e3) { 1183 + let t2 = this.defaults.extensions || { renderers: {}, childTokens: {} }; 1184 + return e3.forEach((n) => { 1185 + let r = { ...n }; 1186 + if (r.async = this.defaults.async || r.async || false, n.extensions && (n.extensions.forEach((i3) => { 1187 + if (!i3.name) throw new Error("extension name required"); 1188 + if ("renderer" in i3) { 1189 + let s = t2.renderers[i3.name]; 1190 + s ? t2.renderers[i3.name] = function(...a) { 1191 + let o2 = i3.renderer.apply(this, a); 1192 + return o2 === false && (o2 = s.apply(this, a)), o2; 1193 + } : t2.renderers[i3.name] = i3.renderer; 1194 + } 1195 + if ("tokenizer" in i3) { 1196 + if (!i3.level || i3.level !== "block" && i3.level !== "inline") throw new Error("extension level must be 'block' or 'inline'"); 1197 + let s = t2[i3.level]; 1198 + s ? s.unshift(i3.tokenizer) : t2[i3.level] = [i3.tokenizer], i3.start && (i3.level === "block" ? t2.startBlock ? t2.startBlock.push(i3.start) : t2.startBlock = [i3.start] : i3.level === "inline" && (t2.startInline ? t2.startInline.push(i3.start) : t2.startInline = [i3.start])); 1199 + } 1200 + "childTokens" in i3 && i3.childTokens && (t2.childTokens[i3.name] = i3.childTokens); 1201 + }), r.extensions = t2), n.renderer) { 1202 + let i3 = this.defaults.renderer || new y(this.defaults); 1203 + for (let s in n.renderer) { 1204 + if (!(s in i3)) throw new Error(`renderer '${s}' does not exist`); 1205 + if (["options", "parser"].includes(s)) continue; 1206 + let a = s, o2 = n.renderer[a], l = i3[a]; 1207 + i3[a] = (...p) => { 1208 + let c = o2.apply(i3, p); 1209 + return c === false && (c = l.apply(i3, p)), c || ""; 1210 + }; 1211 + } 1212 + r.renderer = i3; 1213 + } 1214 + if (n.tokenizer) { 1215 + let i3 = this.defaults.tokenizer || new w(this.defaults); 1216 + for (let s in n.tokenizer) { 1217 + if (!(s in i3)) throw new Error(`tokenizer '${s}' does not exist`); 1218 + if (["options", "rules", "lexer"].includes(s)) continue; 1219 + let a = s, o2 = n.tokenizer[a], l = i3[a]; 1220 + i3[a] = (...p) => { 1221 + let c = o2.apply(i3, p); 1222 + return c === false && (c = l.apply(i3, p)), c; 1223 + }; 1224 + } 1225 + r.tokenizer = i3; 1226 + } 1227 + if (n.hooks) { 1228 + let i3 = this.defaults.hooks || new P(); 1229 + for (let s in n.hooks) { 1230 + if (!(s in i3)) throw new Error(`hook '${s}' does not exist`); 1231 + if (["options", "block"].includes(s)) continue; 1232 + let a = s, o2 = n.hooks[a], l = i3[a]; 1233 + P.passThroughHooks.has(s) ? i3[a] = (p) => { 1234 + if (this.defaults.async && P.passThroughHooksRespectAsync.has(s)) return (async () => { 1235 + let d = await o2.call(i3, p); 1236 + return l.call(i3, d); 1237 + })(); 1238 + let c = o2.call(i3, p); 1239 + return l.call(i3, c); 1240 + } : i3[a] = (...p) => { 1241 + if (this.defaults.async) return (async () => { 1242 + let d = await o2.apply(i3, p); 1243 + return d === false && (d = await l.apply(i3, p)), d; 1244 + })(); 1245 + let c = o2.apply(i3, p); 1246 + return c === false && (c = l.apply(i3, p)), c; 1247 + }; 1248 + } 1249 + r.hooks = i3; 1250 + } 1251 + if (n.walkTokens) { 1252 + let i3 = this.defaults.walkTokens, s = n.walkTokens; 1253 + r.walkTokens = function(a) { 1254 + let o2 = []; 1255 + return o2.push(s.call(this, a)), i3 && (o2 = o2.concat(i3.call(this, a))), o2; 1256 + }; 1257 + } 1258 + this.defaults = { ...this.defaults, ...r }; 1259 + }), this; 1260 + } 1261 + setOptions(e3) { 1262 + return this.defaults = { ...this.defaults, ...e3 }, this; 1263 + } 1264 + lexer(e3, t2) { 1265 + return x.lex(e3, t2 ?? this.defaults); 1266 + } 1267 + parser(e3, t2) { 1268 + return b.parse(e3, t2 ?? this.defaults); 1269 + } 1270 + parseMarkdown(e3) { 1271 + return (n, r) => { 1272 + let i3 = { ...r }, s = { ...this.defaults, ...i3 }, a = this.onError(!!s.silent, !!s.async); 1273 + if (this.defaults.async === true && i3.async === false) return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.")); 1274 + if (typeof n > "u" || n === null) return a(new Error("marked(): input parameter is undefined or null")); 1275 + if (typeof n != "string") return a(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n) + ", string expected")); 1276 + if (s.hooks && (s.hooks.options = s, s.hooks.block = e3), s.async) return (async () => { 1277 + let o2 = s.hooks ? await s.hooks.preprocess(n) : n, p = await (s.hooks ? await s.hooks.provideLexer() : e3 ? x.lex : x.lexInline)(o2, s), c = s.hooks ? await s.hooks.processAllTokens(p) : p; 1278 + s.walkTokens && await Promise.all(this.walkTokens(c, s.walkTokens)); 1279 + let h = await (s.hooks ? await s.hooks.provideParser() : e3 ? b.parse : b.parseInline)(c, s); 1280 + return s.hooks ? await s.hooks.postprocess(h) : h; 1281 + })().catch(a); 1282 + try { 1283 + s.hooks && (n = s.hooks.preprocess(n)); 1284 + let l = (s.hooks ? s.hooks.provideLexer() : e3 ? x.lex : x.lexInline)(n, s); 1285 + s.hooks && (l = s.hooks.processAllTokens(l)), s.walkTokens && this.walkTokens(l, s.walkTokens); 1286 + let c = (s.hooks ? s.hooks.provideParser() : e3 ? b.parse : b.parseInline)(l, s); 1287 + return s.hooks && (c = s.hooks.postprocess(c)), c; 1288 + } catch (o2) { 1289 + return a(o2); 1290 + } 1291 + }; 1292 + } 1293 + onError(e3, t2) { 1294 + return (n) => { 1295 + if (n.message += ` 1296 + Please report this to https://github.com/markedjs/marked.`, e3) { 1297 + let r = "<p>An error occurred:</p><pre>" + O(n.message + "", true) + "</pre>"; 1298 + return t2 ? Promise.resolve(r) : r; 1299 + } 1300 + if (t2) return Promise.reject(n); 1301 + throw n; 1302 + }; 1303 + } 1304 + }; 1305 + var L = new B2(); 1306 + function g(u3, e3) { 1307 + return L.parse(u3, e3); 1308 + } 1309 + __name(g, "g"); 1310 + g.options = g.setOptions = function(u3) { 1311 + return L.setOptions(u3), g.defaults = L.defaults, H(g.defaults), g; 1312 + }; 1313 + g.getDefaults = M; 1314 + g.defaults = T2; 1315 + g.use = function(...u3) { 1316 + return L.use(...u3), g.defaults = L.defaults, H(g.defaults), g; 1317 + }; 1318 + g.walkTokens = function(u3, e3) { 1319 + return L.walkTokens(u3, e3); 1320 + }; 1321 + g.parseInline = L.parseInline; 1322 + g.Parser = b; 1323 + g.parser = b.parse; 1324 + g.Renderer = y; 1325 + g.TextRenderer = $; 1326 + g.Lexer = x; 1327 + g.lexer = x.lex; 1328 + g.Tokenizer = w; 1329 + g.Hooks = P; 1330 + g.parse = g; 1331 + var Ut = g.options; 1332 + var Kt = g.setOptions; 1333 + var Wt = g.use; 1334 + var Xt = g.walkTokens; 1335 + var Jt = g.parseInline; 1336 + var Yt = b.parse; 1337 + var en = x.lex; 1338 + 1339 + // ../node_modules/.deno/lit-html@3.3.2/node_modules/lit-html/node/directives/unsafe-html.js 1340 + init_Buffer(); 1341 + init_process(); 1342 + var e2 = class extends i { 1343 + static { 1344 + __name(this, "e"); 1345 + } 1346 + constructor(i3) { 1347 + if (super(i3), this.it = A, i3.type !== t.CHILD) throw Error(this.constructor.directiveName + "() can only be used in child bindings"); 1348 + } 1349 + render(r) { 1350 + if (r === A || null == r) return this._t = void 0, this.it = r; 1351 + if (r === E) return r; 1352 + if ("string" != typeof r) throw Error(this.constructor.directiveName + "() called with a non-string value"); 1353 + if (r === this.it) return this._t; 1354 + this.it = r; 1355 + const s = [r]; 1356 + return s.raw = s, this._t = { _$litType$: this.constructor.resultType, strings: s, values: [] }; 1357 + } 1358 + }; 1359 + e2.directiveName = "unsafeHTML", e2.resultType = 1; 1360 + var o = e(e2); 1361 + 1362 + // facets/index.js 1363 + document.body.addEventListener( 1364 + "click", 1365 + /** 1366 + * @param {MouseEvent} event 1367 + */ 1368 + async (event) => { 1369 + const target = ( 1370 + /** @type {HTMLElement} */ 1371 + event.target 1372 + ); 1373 + const rel = target.getAttribute("rel"); 1374 + if (!rel) return; 1375 + const uri = target.closest("li")?.getAttribute("data-uri"); 1376 + if (!uri) return; 1377 + const name = target.closest("li")?.getAttribute("data-name"); 1378 + if (!name) return; 1379 + switch (rel) { 1380 + case "fork": { 1381 + const facet = await facetFromURI({ name, uri }, { fetchHTML: true }); 1382 + editFacet(facet); 1383 + document.querySelector("#build")?.scrollIntoView(); 1384 + break; 1385 + } 1386 + case "save": { 1387 + const facet = await facetFromURI({ name, uri }, { fetchHTML: false }); 1388 + const out = foundation_default.orchestrator.output(); 1389 + out.facets.save([ 1390 + ...out.facets.collection(), 1391 + facet 1392 + ]); 1393 + break; 1394 + } 1395 + } 1396 + } 1397 + ); 1398 + var listEl = document.querySelector("#list"); 1399 + if (!listEl) throw new Error("List element not found"); 1400 + var output = foundation_default.orchestrator.output(); 1401 + listEl.innerHTML = ""; 1402 + effect(() => { 1403 + const col = output.facets.collection().sort((a, b2) => { 1404 + return a.name.toLocaleLowerCase().localeCompare(b2.name.toLocaleLowerCase()); 1405 + }); 1406 + const state = output.facets.state(); 1407 + const h = col.length && state === "loaded" ? T` 1408 + <ul> 1409 + ${col.map( 1410 + (c) => i2( 1411 + c.id, 1412 + T` 1413 + <li> 1414 + <div style="position: relative;"> 1415 + <a href="facets/l/?id=${c.id}"> 1416 + ${c.name} 1417 + </a> 1418 + <button 1419 + class="button--fixed button--transparent" 1420 + popovertarget="facet-menu-col-${c.id}" 1421 + style="anchor-name: --facet-anchor-col-${c.id}; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 1422 + > 1423 + <i class="ph-fill ph-dots-three-circle"></i> 1424 + </button> 1425 + </div> 1426 + <div class="list-description"> 1427 + <div> 1428 + ${c.description?.trim().length ? o( 1429 + g.parse(c.description, { async: false }) 1430 + ) : A} 1431 + </div> 1432 + <div> 1433 + ${c.uri && !c.html ? T` 1434 + <span class="with-icon"> 1435 + <i class="ph-fill ph-binoculars"></i> 1436 + <span>Tracking the original <a href="${c.uri}">URI</a></span> 1437 + </span> 1438 + ` : T` 1439 + <span class="with-icon"> 1440 + <i class="ph-fill ph-code"></i> 1441 + <span>Custom code</span> 1442 + </span> 1443 + `} 1444 + </div> 1445 + </div> 1446 + 1447 + <!-- Dropdown Menu --> 1448 + <div 1449 + id="facet-menu-col-${c.id}" 1450 + class="dropdown" 1451 + style="position-anchor: --facet-anchor-col-${c.id}" 1452 + popover 1453 + > 1454 + <a href="facets/l/?id=${c.id}"> 1455 + <span class="with-icon"> 1456 + <i class="ph-fill ph-globe"></i> Open 1457 + </span> 1458 + </a> 1459 + <a @click="${() => editFacet(c)}"> 1460 + <span class="with-icon"> 1461 + <i class="ph-fill ph-cursor-text"></i> Edit 1462 + </span> 1463 + </a> 1464 + <a @click="${deleteFacet({ id: c.id })}"> 1465 + <span class="with-icon"> 1466 + <i class="ph-fill ph-eraser"></i> Delete 1467 + </span> 1468 + </a> 1469 + </div> 1470 + </li> 1471 + ` 1472 + ) 1473 + )} 1474 + </ul> 1475 + ` : state === "loaded" ? emptyFacetsList : T` 1476 + <div class="with-icon" style="font-size: var(--fs-sm);"> 1477 + <i class="ph-bold ph-spinner-gap"></i> 1478 + Loading items 1479 + </div> 1480 + `; 1481 + B(h, listEl); 1482 + }); 1483 + var emptyFacetsList = T` 1484 + <p style="margin-bottom: 0;"> 1485 + <i class="ph-fill ph-info"></i> You have not saved any facets yet. 1486 + </p> 1487 + `; 1488 + function deleteFacet({ id }) { 1489 + return () => { 1490 + const c = confirm("Are you sure you want to delete this facet?"); 1491 + if (!c) return; 1492 + output.facets.save( 1493 + output.facets.collection().filter((c2) => !(c2.id === id)) 1494 + ); 1495 + }; 1496 + } 1497 + __name(deleteFacet, "deleteFacet"); 1498 + var $editingFacet = signal( 1499 + /** @type {Facet | null} */ 1500 + null 1501 + ); 1502 + var editorContainer = document.body.querySelector("#html-input-container"); 1503 + if (!editorContainer) throw new Error("Editor container not found"); 1504 + var editor = new EditorView({ 1505 + parent: editorContainer, 1506 + doc: ` 1507 + <main> 1508 + <h1 id="now-playing"> 1509 + Waiting on tracks &amp; queue to load ... 1510 + </h1> 1511 + </main> 1512 + 1513 + <style> 1514 + @import "./styles/base.css"; 1515 + @import "./styles/diffuse/page.css"; 1516 + </style> 1517 + 1518 + <script type="module"> 1519 + import foundation from "@diffuse/foundation"; 1520 + import { effect } from "./common/signal.js"; 1521 + 1522 + const components = foundation.features.fillQueueAutomatically(); 1523 + const myHtmlElement = document.querySelector("#now-playing"); 1524 + 1525 + effect(() => { 1526 + const now = components.engine.queue.now(); 1527 + const currentlyPlaying = now ? components.orchestrator.output.tracks.collection().find(t => t.id === now.id) : undefined; 1528 + if (currentlyPlaying && myHtmlElement) { 1529 + myHtmlElement.innerText = \`\${currentlyPlaying.tags.artist} - \${currentlyPlaying.tags.title}\`; 1530 + } 1531 + }) 1532 + <\/script> 1533 + `.trim(), 1534 + extensions: [ 1535 + basicSetup, 1536 + html(), 1537 + css(), 1538 + javascript(), 1539 + autocompletion() 1540 + ] 1541 + }); 1542 + document.querySelector("#build-form")?.addEventListener( 1543 + "submit", 1544 + onBuildSubmit 1545 + ); 1546 + async function onBuildSubmit(event) { 1547 + event.preventDefault(); 1548 + const nameEl = ( 1549 + /** @type {HTMLInputElement | null} */ 1550 + document.querySelector( 1551 + "#name-input" 1552 + ) 1553 + ); 1554 + const descriptionEl = ( 1555 + /** @type {HTMLTextAreaElement | null} */ 1556 + document.querySelector("#description-input") 1557 + ); 1558 + const html2 = editor.state.doc.toString(); 1559 + const cid = await create(85, new TextEncoder().encode(html2)); 1560 + const name = nameEl?.value ?? "nameless"; 1561 + const description = descriptionEl?.value ?? ""; 1562 + const facet = $editingFacet.value ? { 1563 + ...$editingFacet.value, 1564 + cid, 1565 + description, 1566 + html: html2, 1567 + name 1568 + } : { 1569 + $type: "sh.diffuse.output.facet", 1570 + id: now(), 1571 + cid, 1572 + description, 1573 + html: html2, 1574 + name 1575 + }; 1576 + switch ( 1577 + /** @type {any} */ 1578 + event.submitter.name 1579 + ) { 1580 + case "save": 1581 + await saveFacet(facet); 1582 + break; 1583 + case "save+open": 1584 + await saveFacet(facet); 1585 + globalThis.open(`./facets/l/?id=${facet.id}`, "blank"); 1586 + break; 1587 + } 1588 + } 1589 + __name(onBuildSubmit, "onBuildSubmit"); 1590 + async function editFacet(ogFacet) { 1591 + const facet = { ...ogFacet }; 1592 + const nameEl = ( 1593 + /** @type {HTMLInputElement | null} */ 1594 + document.querySelector( 1595 + "#name-input" 1596 + ) 1597 + ); 1598 + const descriptionEl = ( 1599 + /** @type {HTMLTextAreaElement | null} */ 1600 + document.querySelector("#description-input") 1601 + ); 1602 + if (!nameEl) return; 1603 + document.querySelector("#build")?.scrollIntoView(); 1604 + if (!facet.html && facet.uri) { 1605 + const html2 = await loadURI(facet.uri); 1606 + const cid = await create(85, new TextEncoder().encode(html2)); 1607 + facet.html = html2; 1608 + facet.cid = cid; 1609 + } 1610 + $editingFacet.value = facet; 1611 + nameEl.value = facet.name; 1612 + if (descriptionEl) { 1613 + descriptionEl.value = facet.description ?? ""; 1614 + } 1615 + editor.dispatch({ 1616 + changes: { from: 0, to: editor.state.doc.length, insert: facet.html } 1617 + }); 1618 + } 1619 + __name(editFacet, "editFacet"); 1620 + async function saveFacet(facet) { 1621 + const col = output.facets.collection(); 1622 + const colWithoutId = col.filter((c) => c.id !== facet.id); 1623 + await output.facets.save([...colWithoutId, { 1624 + ...facet, 1625 + updatedAt: (/* @__PURE__ */ new Date()).toISOString() 1626 + }]); 1627 + } 1628 + __name(saveFacet, "saveFacet"); 1629 + /*! Bundled license information: 1630 + 1631 + lit-html/node/directives/unsafe-html.js: 1632 + (** 1633 + * @license 1634 + * Copyright 2017 Google LLC 1635 + * SPDX-License-Identifier: BSD-3-Clause 1636 + *) 1637 + */ 1638 + 1639 + //# sourceMappingURL=./index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/index.js.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/facets/index.js.map
+59
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/l/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="vendor/@phosphor-icons/fill/style.css" /> 27 + <link rel="stylesheet" href="styles/base.css" /> 28 + <link rel="stylesheet" href="styles/loader.css" /> 29 + </head> 30 + <body> 31 + <div id="container"> 32 + <div class="diffuse"> 33 + <div id="diffuse-loader" class="flex"> 34 + <i class="ph-fill ph-music-notes animate-bounce"></i> 35 + </div> 36 + </div> 37 + </div> 38 + 39 + <script type="importmap"> 40 + { 41 + "imports": { 42 + "~/": "./", 43 + 44 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 45 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 46 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/" 47 + } 48 + } 49 + </script> 50 + 51 + 52 + <!-- Make every touched URL available offline --> 53 + <do-offline></do-offline> 54 + <script src="components/orchestrator/offline/element.js" type="module"></script> 55 + 56 + <!-- Scripts --> 57 + <script src="facets/l/index.js" type="module"></script> 58 + </body> 59 + </html>
+89
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/l/index.js
··· 1 + import { 2 + foundation_default 3 + } from "../../chunk-FIX46GRA.js"; 4 + import "../../chunk-VOFM65C2.js"; 5 + import "../../chunk-HDE6FJCN.js"; 6 + import "../../chunk-ZROTLYIH.js"; 7 + import "../../chunk-2SPFBYRD.js"; 8 + import "../../chunk-K4XAE7PE.js"; 9 + import "../../chunk-XKXQMVTB.js"; 10 + import "../../chunk-ABL7GBBM.js"; 11 + import "../../chunk-TMIJ7SWF.js"; 12 + import "../../chunk-QKKQKAE5.js"; 13 + import "../../chunk-2HKIFQJO.js"; 14 + import "../../chunk-IKAIRC6G.js"; 15 + import "../../chunk-2PHQN23Z.js"; 16 + import "../../chunk-ENDOZK4Q.js"; 17 + import "../../chunk-FQ7GPRG2.js"; 18 + import "../../chunk-TMGAIVLV.js"; 19 + import "../../chunk-U4HLMEDD.js"; 20 + import "../../chunk-Y4UF3TDF.js"; 21 + import "../../chunk-HN4F5JEZ.js"; 22 + import "../../chunk-X2U7TZQT.js"; 23 + import "../../chunk-AGWC42GJ.js"; 24 + import "../../chunk-TRIYIVJH.js"; 25 + import "../../chunk-I3VKG3ZJ.js"; 26 + import "../../chunk-D6OAWBEV.js"; 27 + import "../../chunk-ZDMTYKI5.js"; 28 + import "../../chunk-6DRHTH2U.js"; 29 + import "../../chunk-JR4EW3HT.js"; 30 + import "../../chunk-BDBXPVO6.js"; 31 + import "../../chunk-JBHW662S.js"; 32 + import "../../chunk-H7PU7XY7.js"; 33 + import "../../chunk-VCRMPF2R.js"; 34 + import "../../chunk-YBUNVPVS.js"; 35 + import "../../chunk-OAG3HI6B.js"; 36 + import "../../chunk-JDKXATSY.js"; 37 + import "../../chunk-TS4JJWFE.js"; 38 + import "../../chunk-3L563ZA4.js"; 39 + import "../../chunk-VQR5VNUL.js"; 40 + import "../../chunk-EEUCFWD4.js"; 41 + import "../../chunk-IYNRCNPM.js"; 42 + import "../../chunk-3USAPKOY.js"; 43 + import "../../chunk-HMBZONBJ.js"; 44 + import "../../chunk-7U5QHBAZ.js"; 45 + import "../../chunk-2V4VRBHO.js"; 46 + import "../../chunk-G56PUJUJ.js"; 47 + import { 48 + createLoader 49 + } from "../../chunk-JUFQHHNP.js"; 50 + import "../../chunk-WN6GL63Q.js"; 51 + import "../../chunk-CRZ7HJJ4.js"; 52 + import "../../chunk-242LG3VP.js"; 53 + import "../../chunk-BKRD2ZIW.js"; 54 + import "../../chunk-SGR5ST3A.js"; 55 + import "../../chunk-4YB6QUPN.js"; 56 + import "../../chunk-6DKPDMFE.js"; 57 + import "../../chunk-TP5GZFTO.js"; 58 + import "../../chunk-ZQZJJU3T.js"; 59 + import "../../chunk-HNJPKCUJ.js"; 60 + import { 61 + __name, 62 + init_Buffer, 63 + init_process 64 + } from "../../chunk-FZQXS3RE.js"; 65 + 66 + // facets/l/index.js 67 + init_Buffer(); 68 + init_process(); 69 + createLoader({ 70 + $type: "sh.diffuse.output.facet", 71 + label: "Facet", 72 + source: /* @__PURE__ */ __name(() => { 73 + const output = foundation_default.orchestrator.output(); 74 + return output.facets; 75 + }, "source"), 76 + render(facet) { 77 + const container = ( 78 + /** @type {HTMLDivElement} */ 79 + document.querySelector("#container") 80 + ); 81 + const range = document.createRange(); 82 + range.selectNode(container); 83 + const documentFragment = range.createContextualFragment(facet.html ?? ""); 84 + container.innerHTML = ""; 85 + container.append(documentFragment); 86 + } 87 + }); 88 + 89 + //# sourceMappingURL=./index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/l/index.js.map
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/facets/l/index.js.map
+191
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/tools/auto-queue.html
··· 1 + <main> 2 + <div class="panel"> 3 + <div class="row"> 4 + <button id="repeat" title="Toggle repeat"> 5 + <span class="with-icon"><i class="ph-bold ph-repeat"></i> Repeat</span> 6 + </button> 7 + <button id="shuffle" title="Toggle shuffle"> 8 + <span class="with-icon"><i class="ph-bold ph-shuffle"></i> Shuffle</span> 9 + </button> 10 + </div> 11 + <hr /> 12 + <div class="row"> 13 + <label class="with-icon" for="playlist"> 14 + <i class="ph-bold ph-playlist"></i> 15 + <select id="playlist"> 16 + <option value="">All tracks</option> 17 + </select> 18 + </label> 19 + </div> 20 + <div class="row"> 21 + <label class="with-icon" for="search"> 22 + <i class="ph-bold ph-magnifying-glass"></i> 23 + <input id="search" type="search" placeholder="Search" /> 24 + </label> 25 + </div> 26 + <div class="row"> 27 + <label class="with-icon" for="sort-by"> 28 + <i class="ph-bold ph-arrows-down-up"></i> 29 + <select id="sort-by"> 30 + <option value="[]">Default order</option> 31 + <option value='["createdAt"]'>Added to collection</option> 32 + <option value='["tags.title"]'>Title</option> 33 + <option value='["tags.album","tags.disc.no","tags.track.no"]'>Album</option> 34 + <option value='["tags.artist","tags.album","tags.disc.no","tags.track.no"]'>Artist</option> 35 + <option value='["tags.year"]'>Year</option> 36 + <option value='["tags.date"]'>Date</option> 37 + </select> 38 + </label> 39 + </div> 40 + </div> 41 + </main> 42 + 43 + <style> 44 + @import "./styles/base.css"; 45 + @import "./styles/wireframe/ui.css"; 46 + @import "./vendor/@phosphor-icons/bold/style.css"; 47 + 48 + body { 49 + display: flex; 50 + align-items: center; 51 + justify-content: center; 52 + height: 100dvh; 53 + } 54 + 55 + main { 56 + padding: var(--space-md); 57 + } 58 + 59 + label { 60 + flex: 1; 61 + letter-spacing: var(--leading-relaxed); 62 + text-transform: uppercase; 63 + } 64 + 65 + label input, 66 + label select { 67 + flex: 1; 68 + } 69 + 70 + .row button { 71 + flex: 1; 72 + } 73 + </style> 74 + 75 + <script type="module"> 76 + import foundation from "~/common/facets/foundation.js"; 77 + import { effect } from "~/common/signal.js"; 78 + import * as Playlist from "~/common/playlist.js"; 79 + 80 + const ACTIVE_CLASS = "button--active"; 81 + 82 + // Setup 83 + foundation.features.fillQueueAutomatically(); 84 + foundation.features.processInputs(); 85 + 86 + const repeatShuffle = foundation.engine.repeatShuffle(); 87 + const scope = foundation.engine.scope(); 88 + const output = foundation.orchestrator.output(); 89 + 90 + // Elements 91 + const repeatBtn = 92 + /** @type {HTMLButtonElement} */ (document.querySelector("#repeat")); 93 + const shuffleBtn = 94 + /** @type {HTMLButtonElement} */ (document.querySelector("#shuffle")); 95 + const searchInput = 96 + /** @type {HTMLInputElement} */ (document.querySelector("#search")); 97 + const playlistSelect = 98 + /** @type {HTMLSelectElement} */ (document.querySelector("#playlist")); 99 + const sortBySelect = 100 + /** @type {HTMLSelectElement} */ (document.querySelector("#sort-by")); 101 + 102 + // Repeat & Shuffle state 103 + effect(() => { 104 + repeatBtn.classList.toggle(ACTIVE_CLASS, repeatShuffle.repeat()); 105 + }); 106 + 107 + effect(() => { 108 + shuffleBtn.classList.toggle(ACTIVE_CLASS, repeatShuffle.shuffle()); 109 + }); 110 + 111 + // Actions 112 + repeatBtn.onclick = () => { 113 + repeatShuffle.setRepeat(!repeatShuffle.repeat()); 114 + }; 115 + 116 + shuffleBtn.onclick = () => { 117 + repeatShuffle.setShuffle(!repeatShuffle.shuffle()); 118 + }; 119 + 120 + // Search state 121 + effect(() => { 122 + searchInput.value = scope.searchTerm() ?? ""; 123 + }); 124 + 125 + searchInput.oninput = () => { 126 + scope.setSearchTerm(searchInput.value.trim() || undefined); 127 + }; 128 + 129 + // Playlist state 130 + effect(() => { 131 + const items = output.playlistItems.collection(); 132 + const currentPlaylist = scope.playlist(); 133 + 134 + // Group items by playlist name 135 + const playlistMap = Playlist.gather(items); 136 + const all = [...playlistMap.values()].sort((a, b) => 137 + a.name.localeCompare(b.name) 138 + ); 139 + 140 + const ordered = all.filter((p) => !p.unordered); 141 + const unordered = all.filter((p) => p.unordered); 142 + 143 + playlistSelect.innerHTML = `<option value="">All tracks</option>`; 144 + 145 + for ( 146 + const [label, group] of [ 147 + ["Ordered", ordered], 148 + ["Unordered", unordered], 149 + ] 150 + ) { 151 + if (group.length === 0) continue; 152 + 153 + const optgroup = document.createElement("optgroup"); 154 + optgroup.label = /** @type {string} */ (label); 155 + 156 + for (const playlist of group) { 157 + if (typeof playlist === "string") continue; 158 + const option = document.createElement("option"); 159 + 160 + option.value = playlist.name; 161 + option.textContent = playlist.name; 162 + option.selected = playlist.name === currentPlaylist; 163 + 164 + optgroup.appendChild(option); 165 + } 166 + 167 + playlistSelect.appendChild(optgroup); 168 + } 169 + }); 170 + 171 + playlistSelect.onchange = () => { 172 + scope.setPlaylist( 173 + playlistSelect.value.length ? playlistSelect.value : undefined, 174 + ); 175 + }; 176 + 177 + // Sort by state 178 + effect(() => { 179 + const current = JSON.stringify(scope.sortBy()); 180 + for (const option of sortBySelect.options) { 181 + if (JSON.stringify(JSON.parse(option.value)) === current) { 182 + sortBySelect.value = option.value; 183 + break; 184 + } 185 + } 186 + }); 187 + 188 + sortBySelect.onchange = () => { 189 + scope.setSortBy(JSON.parse(sortBySelect.value)); 190 + }; 191 + </script>
+271
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/tools/export-import.html
··· 1 + <main> 2 + <div class="panel"> 3 + <p> 4 + Export all Diffuse data to a JSON snapshot, or restore from a previously 5 + exported file. Importing replaces all data in that category. 6 + </p> 7 + <hr /> 8 + <div class="row"> 9 + <button id="export" disabled> 10 + <span class="with-icon"><i class="ph-bold ph-download-simple"></i> Export all data</span> 11 + </button> 12 + </div> 13 + <hr /> 14 + <div class="row"> 15 + <label class="with-icon" for="file"> 16 + <i class="ph-bold ph-upload"></i> 17 + <input id="file" type="file" accept=".json,application/json" /> 18 + </label> 19 + </div> 20 + <hr /> 21 + <div class="row"> 22 + <button id="import-tracks" disabled> 23 + <span class="with-icon"><i class="ph-bold ph-music-note"></i> Import tracks</span> 24 + </button> 25 + </div> 26 + <div class="row"> 27 + <button id="import-playlists" disabled> 28 + <span class="with-icon"><i class="ph-bold ph-playlist"></i> Import playlists</span> 29 + </button> 30 + </div> 31 + <div class="row"> 32 + <button id="import-facets" disabled> 33 + <span class="with-icon"><i class="ph-bold ph-squares-four"></i> Import facets</span> 34 + </button> 35 + </div> 36 + <div class="row"> 37 + <button id="import-themes" disabled> 38 + <span class="with-icon"><i class="ph-bold ph-palette"></i> Import themes</span> 39 + </button> 40 + </div> 41 + <div id="status" class="status" hidden></div> 42 + </div> 43 + </main> 44 + 45 + <style> 46 + @import "./styles/base.css"; 47 + @import "./styles/wireframe/ui.css"; 48 + @import "./vendor/@phosphor-icons/bold/style.css"; 49 + 50 + body { 51 + display: flex; 52 + align-items: center; 53 + justify-content: center; 54 + height: 100dvh; 55 + } 56 + 57 + main { 58 + padding: var(--space-md); 59 + } 60 + 61 + p { 62 + line-height: var(--leading-relaxed); 63 + max-width: 42ch; 64 + } 65 + 66 + label { 67 + flex: 1; 68 + } 69 + 70 + input[type="file"] { 71 + flex: 1; 72 + } 73 + 74 + .status { 75 + margin-top: var(--space-sm); 76 + font-size: var(--text-sm); 77 + } 78 + 79 + .status--success { 80 + color: var(--accent); 81 + 82 + @media (prefers-color-scheme: dark) { 83 + color: var(--accent-twist-4); 84 + } 85 + } 86 + 87 + .status--error { 88 + color: var(--accent-twist-5); 89 + 90 + @media (prefers-color-scheme: dark) { 91 + color: var(--accent-twist-3); 92 + } 93 + } 94 + </style> 95 + 96 + <script type="module"> 97 + import * as Output from "~/common/output.js"; 98 + import foundation from "~/common/facets/foundation.js"; 99 + import { effect } from "~/common/signal.js"; 100 + 101 + // Setup 102 + const output = foundation.orchestrator.output(); 103 + 104 + // Elements 105 + const exportBtn = 106 + /** @type {HTMLButtonElement} */ (document.querySelector("#export")); 107 + const fileInput = 108 + /** @type {HTMLInputElement} */ (document.querySelector("#file")); 109 + const importTracksBtn = 110 + /** @type {HTMLButtonElement} */ (document.querySelector("#import-tracks")); 111 + const importPlaylistsBtn = 112 + /** @type {HTMLButtonElement} */ (document.querySelector( 113 + "#import-playlists", 114 + )); 115 + const importFacetsBtn = 116 + /** @type {HTMLButtonElement} */ (document.querySelector("#import-facets")); 117 + const importThemesBtn = 118 + /** @type {HTMLButtonElement} */ (document.querySelector("#import-themes")); 119 + const statusEl = /** @type {HTMLElement} */ (document.querySelector("#status")); 120 + 121 + /** @type {Record<string, any> | null} */ 122 + let json = null; 123 + 124 + /** 125 + * Show a status message. 126 + * @param {string} message 127 + * @param {"success" | "error"} type 128 + */ 129 + function showStatus(message, type) { 130 + statusEl.textContent = message; 131 + statusEl.className = `status status--${type}`; 132 + statusEl.hidden = false; 133 + } 134 + 135 + // Enable export button once output is ready 136 + effect(() => { 137 + exportBtn.disabled = !output.ready(); 138 + }); 139 + 140 + // Export all data as a JSON snapshot 141 + exportBtn.onclick = async () => { 142 + await Output.waitUntilLoaded(output.facets); 143 + await Output.waitUntilLoaded(output.playlistItems); 144 + await Output.waitUntilLoaded(output.themes); 145 + await Output.waitUntilLoaded(output.tracks); 146 + 147 + const data = { 148 + exportedAt: new Date().toISOString(), 149 + tracks: output.tracks.collection() ?? [], 150 + playlistItems: output.playlistItems.collection() ?? [], 151 + facets: output.facets.collection() ?? [], 152 + themes: output.themes.collection() ?? [], 153 + }; 154 + 155 + const blob = new Blob([JSON.stringify(data, null, 2)], { 156 + type: "application/json", 157 + }); 158 + 159 + const url = URL.createObjectURL(blob); 160 + const a = document.createElement("a"); 161 + a.href = url; 162 + a.download = `diffuse-${new Date().toISOString().slice(0, 10)}.json`; 163 + document.body.append(a); 164 + a.click(); 165 + a.remove(); 166 + 167 + URL.revokeObjectURL(url); 168 + }; 169 + 170 + // Parse file on selection 171 + fileInput.onchange = async () => { 172 + const file = fileInput.files?.[0]; 173 + 174 + json = null; 175 + statusEl.hidden = true; 176 + importTracksBtn.disabled = true; 177 + importPlaylistsBtn.disabled = true; 178 + importFacetsBtn.disabled = true; 179 + importThemesBtn.disabled = true; 180 + 181 + if (!file) return; 182 + 183 + try { 184 + json = JSON.parse(await file.text()); 185 + } catch (err) { 186 + console.error("Failed to parse JSON:", err); 187 + showStatus( 188 + `Failed to parse JSON: ${/** @type {Error} */ (err).message}`, 189 + "error", 190 + ); 191 + return; 192 + } 193 + 194 + if (Array.isArray(json?.tracks) && json.tracks.length > 0) { 195 + importTracksBtn.disabled = false; 196 + } 197 + 198 + if (Array.isArray(json?.playlistItems) && json.playlistItems.length > 0) { 199 + importPlaylistsBtn.disabled = false; 200 + } 201 + 202 + if (Array.isArray(json?.facets) && json.facets.length > 0) { 203 + importFacetsBtn.disabled = false; 204 + } 205 + 206 + if (Array.isArray(json?.themes) && json.themes.length > 0) { 207 + importThemesBtn.disabled = false; 208 + } 209 + }; 210 + 211 + // Import tracks 212 + importTracksBtn.onclick = async () => { 213 + /** @type {any[]} */ 214 + const tracks = json?.tracks; 215 + if (!Array.isArray(tracks) || tracks.length === 0) return; 216 + 217 + try { 218 + await output.tracks.save(tracks); 219 + showStatus(`Imported ${tracks.length} track(s).`, "success"); 220 + } catch (err) { 221 + console.error("Import failed:", err); 222 + showStatus(`Import failed: ${/** @type {Error} */ (err).message}`, "error"); 223 + } 224 + }; 225 + 226 + // Import playlists 227 + importPlaylistsBtn.onclick = async () => { 228 + /** @type {any[]} */ 229 + const playlistItems = json?.playlistItems; 230 + if (!Array.isArray(playlistItems) || playlistItems.length === 0) return; 231 + 232 + try { 233 + await output.playlistItems.save(playlistItems); 234 + const playlistCount = new Set(playlistItems.map((p) => p.playlist)).size; 235 + showStatus(`Imported ${playlistCount} playlist(s).`, "success"); 236 + } catch (err) { 237 + console.error("Import failed:", err); 238 + showStatus(`Import failed: ${/** @type {Error} */ (err).message}`, "error"); 239 + } 240 + }; 241 + 242 + // Import facets 243 + importFacetsBtn.onclick = async () => { 244 + /** @type {any[]} */ 245 + const facets = json?.facets; 246 + if (!Array.isArray(facets) || facets.length === 0) return; 247 + 248 + try { 249 + await output.facets.save(facets); 250 + showStatus(`Imported ${facets.length} facet(s).`, "success"); 251 + } catch (err) { 252 + console.error("Import failed:", err); 253 + showStatus(`Import failed: ${/** @type {Error} */ (err).message}`, "error"); 254 + } 255 + }; 256 + 257 + // Import themes 258 + importThemesBtn.onclick = async () => { 259 + /** @type {any[]} */ 260 + const themes = json?.themes; 261 + if (!Array.isArray(themes) || themes.length === 0) return; 262 + 263 + try { 264 + await output.themes.save(themes); 265 + showStatus(`Imported ${themes.length} theme(s).`, "success"); 266 + } catch (err) { 267 + console.error("Import failed:", err); 268 + showStatus(`Import failed: ${/** @type {Error} */ (err).message}`, "error"); 269 + } 270 + }; 271 + </script>
+598
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/tools/split-view.html
··· 1 + <link rel="stylesheet" href="vendor/@awesome.me/webawesome/styles/themes/default.css" /> 2 + <link rel="stylesheet" href="vendor/@awesome.me/webawesome/styles/utilities/layout.css" /> 3 + <link rel="stylesheet" href="vendor/@awesome.me/webawesome/styles/utilities/gap.css" /> 4 + 5 + <div> 6 + <main id="layout"></main> 7 + 8 + <div id="edit-bar"> 9 + <wa-button 10 + id="edit-toggle" 11 + appearance="filled" 12 + variant="neutral" 13 + size="small" 14 + pill 15 + aria-label="Edit layout" 16 + > 17 + <wa-icon id="edit-icon" name="border-all"></wa-icon> 18 + </wa-button> 19 + <wa-button 20 + id="save-copy-btn" 21 + appearance="filled" 22 + variant="neutral" 23 + size="small" 24 + pill 25 + aria-label="Save simplified copy" 26 + style="display: none" 27 + > 28 + <wa-icon id="save-copy-icon" name="floppy-disk"></wa-icon> 29 + </wa-button> 30 + </div> 31 + 32 + <wa-dialog id="facet-picker" label="Choose a facet" style="--width: 360px"> 33 + <div class="wa-stack wa-gap-s"> 34 + <wa-select id="facet-select" placeholder="Built-in facets…"> 35 + <wa-option value="themes/blur/artwork-controller/facet.html" 36 + >Blur / Artwork controller</wa-option 37 + > 38 + <wa-option value="facets/tools/auto-queue.html">Tools / Automatic Queue</wa-option> 39 + <wa-option value="facets/tools/v3-import.html">Tools / V3.x Import</wa-option> 40 + <wa-option value="themes/webamp/browser/facet.html">Webamp / Browser</wa-option> 41 + <wa-option value="themes/webamp/configurators/input/facet.html" 42 + >Webamp / Input Configurator</wa-option 43 + > 44 + <wa-option value="themes/webamp/configurators/output/facet.html" 45 + >Webamp / Output Configurator</wa-option 46 + > 47 + </wa-select> 48 + <wa-input 49 + id="custom-path" 50 + placeholder="facets/tools/auto-queue.html" 51 + style="flex: 1" 52 + ></wa-input> 53 + <wa-button id="custom-confirm" variant="neutral" appearance="filled" pill>Load</wa-button> 54 + </div> 55 + </wa-dialog> 56 + </div> 57 + 58 + <style> 59 + body { 60 + margin: 0; 61 + height: 100dvh; 62 + overflow: hidden; 63 + } 64 + 65 + #layout, 66 + #layout > * { 67 + height: 100%; 68 + } 69 + 70 + wa-button { 71 + max-width: 300px; 72 + } 73 + 74 + wa-button::part(base), 75 + wa-input::part(base), 76 + wa-select::part(combobox) { 77 + border-width: 2px; 78 + } 79 + 80 + wa-split-panel { 81 + height: 100%; 82 + } 83 + 84 + [slot="start"], 85 + [slot="end"] { 86 + height: 100%; 87 + } 88 + 89 + .pane { 90 + position: relative; 91 + height: 100%; 92 + display: flex; 93 + flex-direction: column; 94 + } 95 + 96 + .pane iframe { 97 + flex: 1; 98 + border: none; 99 + width: 100%; 100 + } 101 + 102 + .dragging iframe { 103 + pointer-events: none; 104 + } 105 + 106 + .pane-overlay { 107 + position: absolute; 108 + inset: 0; 109 + display: none; 110 + flex-direction: column; 111 + align-items: center; 112 + justify-content: center; 113 + gap: var(--wa-space-xs); 114 + background: color-mix(in srgb, var(--wa-color-surface-default) 85%, transparent); 115 + backdrop-filter: blur(4px); 116 + z-index: 10; 117 + padding: var(--wa-space-m); 118 + } 119 + 120 + .pane--empty .pane-overlay { 121 + display: flex; 122 + } 123 + 124 + .edit-mode .pane:not(.pane--empty) .pane-overlay { 125 + display: flex; 126 + } 127 + 128 + .pane-name { 129 + font-size: var(--wa-font-size-xs); 130 + color: var(--wa-color-text-quiet); 131 + margin-bottom: var(--wa-space-2xs); 132 + text-align: center; 133 + } 134 + 135 + #edit-bar { 136 + position: fixed; 137 + top: var(--wa-space-xs); 138 + left: var(--wa-space-xs); 139 + z-index: 100; 140 + display: flex; 141 + flex-direction: column; 142 + gap: var(--wa-space-2xs); 143 + } 144 + 145 + #facet-select { 146 + width: 100%; 147 + } 148 + </style> 149 + 150 + <script type="module"> 151 + import "@awesome.me/webawesome/dist/components/split-panel/split-panel.js"; 152 + import "@awesome.me/webawesome/dist/components/dialog/dialog.js"; 153 + import "@awesome.me/webawesome/dist/components/button/button.js"; 154 + import "@awesome.me/webawesome/dist/components/input/input.js"; 155 + import "@awesome.me/webawesome/dist/components/icon/icon.js"; 156 + import "@awesome.me/webawesome/dist/components/select/select.js"; 157 + import "@awesome.me/webawesome/dist/components/option/option.js"; 158 + 159 + import "~/common/webawesome/detect-dark.js"; 160 + import foundation from "~/common/facets/foundation.js"; 161 + import * as Output from "~/common/output.js"; 162 + 163 + /** 164 + * @import { default as WaSplitPanel } from "@awesome.me/webawesome/dist/components/split-panel/split-panel.js" 165 + * @import { default as WaDialog } from "@awesome.me/webawesome/dist/components/dialog/dialog.js" 166 + * @import { default as WaInput } from "@awesome.me/webawesome/dist/components/input/input.js" 167 + * @import { default as WaIcon } from "@awesome.me/webawesome/dist/components/icon/icon.js" 168 + * @import { default as WaSelect } from "@awesome.me/webawesome/dist/components/select/select.js" 169 + */ 170 + 171 + /** 172 + * @typedef {{ type: "pane", facet: string | null }} PaneNode 173 + * @typedef {{ type: "split", orientation: "horizontal" | "vertical", position: number, start: Node, end: Node }} SplitNode 174 + * @typedef {PaneNode | SplitNode} Node 175 + */ 176 + 177 + const STORAGE_KEY = "diffuse/facets/tools/split-view/builder/layout"; 178 + 179 + // ─── State ─────────────────────────────────────────────────────────────────── 180 + 181 + /** @type {Node} */ 182 + let state = loadState(); 183 + 184 + let editMode = false; 185 + 186 + /** @type {string | null} */ 187 + let pendingPaneId = null; 188 + 189 + /** @returns {Node} */ 190 + function loadState() { 191 + try { 192 + return /** @type {Node} */ (JSON.parse( 193 + localStorage.getItem(STORAGE_KEY) ?? "null", 194 + )) ?? defaultState(); 195 + } catch { 196 + return defaultState(); 197 + } 198 + } 199 + 200 + function saveState() { 201 + localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); 202 + } 203 + 204 + /** @returns {PaneNode} */ 205 + function defaultState() { 206 + return { type: "pane", facet: null }; 207 + } 208 + 209 + // ─── Tree helpers ───────────────────────────────────────────────────────────── 210 + // Nodes are identified by a dot-separated path: "root", "root.start", "root.end.start" 211 + 212 + /** 213 + * @param {string} path 214 + * @returns {Node} 215 + */ 216 + function getNode(path) { 217 + if (path === "root") return state; 218 + const parts = path.replace(/^root\./, "").split("."); 219 + /** @type {any} */ 220 + let node = state; 221 + for (const part of parts) node = node[part]; 222 + return /** @type {Node} */ (node); 223 + } 224 + 225 + /** 226 + * @param {string} path 227 + * @param {Node} newNode 228 + */ 229 + function replaceNode(path, newNode) { 230 + if (path === "root") { 231 + state = newNode; 232 + return; 233 + } 234 + const parts = path.split("."); 235 + const parentPath = parts.slice(0, -1).join("."); 236 + const childKey = parts[parts.length - 1]; 237 + const parent = /** @type {any} */ (getNode(parentPath)); 238 + parent[childKey] = newNode; 239 + } 240 + 241 + // ─── Mutations ──────────────────────────────────────────────────────────────── 242 + 243 + /** 244 + * @param {string} nodePath 245 + * @param {"horizontal" | "vertical"} orientation 246 + */ 247 + function splitPane(nodePath, orientation) { 248 + const existing = getNode(nodePath); 249 + replaceNode(nodePath, { 250 + type: "split", 251 + orientation, 252 + position: 50, 253 + start: existing, 254 + end: { type: "pane", facet: null }, 255 + }); 256 + saveState(); 257 + render(); 258 + } 259 + 260 + /** @param {string} nodePath */ 261 + function removePane(nodePath) { 262 + if (nodePath === "root") return; 263 + const parts = nodePath.split("."); 264 + const parentPath = parts.slice(0, -1).join("."); 265 + const childKey = parts[parts.length - 1]; 266 + const siblingKey = childKey === "start" ? "end" : "start"; 267 + const parent = /** @type {any} */ (getNode(parentPath)); 268 + const sibling = /** @type {Node} */ (parent[siblingKey]); 269 + replaceNode(parentPath, sibling); 270 + saveState(); 271 + render(); 272 + } 273 + 274 + /** 275 + * @param {string} nodePath 276 + * @param {string} facetPath 277 + */ 278 + function setFacet(nodePath, facetPath) { 279 + const pane = /** @type {PaneNode} */ (getNode(nodePath)); 280 + pane.facet = facetPath; 281 + saveState(); 282 + render(); 283 + } 284 + 285 + // ─── Rendering ──────────────────────────────────────────────────────────────── 286 + 287 + const layout = /** @type {HTMLElement} */ (document.querySelector("#layout")); 288 + 289 + function render() { 290 + layout.innerHTML = ""; 291 + layout.appendChild(renderNode(state, "root", true)); 292 + layout.classList.toggle("edit-mode", editMode); 293 + } 294 + 295 + /** 296 + * @param {Node} node 297 + * @param {string} path 298 + * @param {boolean} isRoot 299 + * @returns {HTMLElement} 300 + */ 301 + function renderNode(node, path, isRoot) { 302 + if (node.type === "split") { 303 + const panel = 304 + /** @type {WaSplitPanel} */ (document.createElement("wa-split-panel")); 305 + panel.position = node.position; 306 + if (node.orientation === "vertical") panel.orientation = "vertical"; 307 + 308 + const startSlot = document.createElement("div"); 309 + startSlot.slot = "start"; 310 + startSlot.appendChild(renderNode(node.start, path + ".start", false)); 311 + 312 + const endSlot = document.createElement("div"); 313 + endSlot.slot = "end"; 314 + endSlot.appendChild(renderNode(node.end, path + ".end", false)); 315 + 316 + panel.appendChild(startSlot); 317 + panel.appendChild(endSlot); 318 + 319 + panel.addEventListener("wa-reposition", () => { 320 + const splitNode = /** @type {SplitNode} */ (getNode(path)); 321 + splitNode.position = panel.position; 322 + saveState(); 323 + }); 324 + 325 + return panel; 326 + } 327 + 328 + // Pane 329 + const pane = document.createElement("div"); 330 + pane.className = "pane" + (node.facet ? "" : " pane--empty"); 331 + 332 + if (node.facet) { 333 + const iframe = document.createElement("iframe"); 334 + const uri = node.facet.includes("://") 335 + ? node.facet 336 + : `diffuse://${node.facet}`; 337 + iframe.src = "facets/l/?uri=" + encodeURIComponent(uri); 338 + iframe.allow = "autoplay"; 339 + pane.appendChild(iframe); 340 + } 341 + 342 + const overlay = document.createElement("div"); 343 + overlay.className = "pane-overlay"; 344 + 345 + if (node.facet) { 346 + const title = 347 + document.querySelector(`#facet-select wa-option[value="${node.facet}"]`) 348 + ?.textContent?.trim() ?? node.facet; 349 + const label = document.createElement("div"); 350 + label.className = "pane-name"; 351 + label.style.fontWeight = "700"; 352 + label.textContent = title; 353 + overlay.appendChild(label); 354 + } 355 + 356 + overlay.appendChild( 357 + makeWaButton( 358 + node.facet ? "Change facet" : "+ Add facet", 359 + "neutral", 360 + "filled", 361 + () => openPicker(path), 362 + ), 363 + ); 364 + overlay.appendChild( 365 + makeWaButton( 366 + "Split left / right", 367 + "neutral", 368 + "outlined", 369 + () => splitPane(path, "horizontal"), 370 + ), 371 + ); 372 + overlay.appendChild( 373 + makeWaButton( 374 + "Split top / bottom", 375 + "neutral", 376 + "outlined", 377 + () => splitPane(path, "vertical"), 378 + ), 379 + ); 380 + 381 + if (!isRoot) { 382 + overlay.appendChild( 383 + makeWaButton("Remove", "danger", "outlined", () => removePane(path)), 384 + ); 385 + } 386 + 387 + pane.appendChild(overlay); 388 + return pane; 389 + } 390 + 391 + /** 392 + * @param {string} text 393 + * @param {string} variant 394 + * @param {string} appearance 395 + * @param {() => void} onClick 396 + * @returns {HTMLElement} 397 + */ 398 + function makeWaButton(text, variant, appearance, onClick) { 399 + const btn = document.createElement("wa-button"); 400 + btn.setAttribute("variant", variant); 401 + btn.setAttribute("appearance", appearance); 402 + btn.setAttribute("size", "small"); 403 + btn.style.width = "100%"; 404 + btn.textContent = text; 405 + btn.addEventListener("click", (e) => { 406 + e.stopPropagation(); 407 + onClick(); 408 + }); 409 + return btn; 410 + } 411 + 412 + // ─── Divider drag: disable iframe pointer events while dragging ─────────────── 413 + 414 + document.addEventListener("mousedown", (e) => { 415 + const isDivider = e.composedPath().some( 416 + (el) => el instanceof Element && el.getAttribute("part") === "divider", 417 + ); 418 + if (isDivider) layout.classList.add("dragging"); 419 + }, { capture: true }); 420 + 421 + document.addEventListener("mouseup", () => { 422 + layout.classList.remove("dragging"); 423 + }); 424 + 425 + // ─── Edit mode ──────────────────────────────────────────────────────────────── 426 + 427 + const editToggle = 428 + /** @type {HTMLElement} */ (document.querySelector("#edit-toggle")); 429 + const editIcon = /** @type {WaIcon} */ (document.querySelector("#edit-icon")); 430 + const saveCopyBtn = 431 + /** @type {HTMLElement} */ (document.querySelector("#save-copy-btn")); 432 + const saveCopyIcon = 433 + /** @type {WaIcon} */ (document.querySelector("#save-copy-icon")); 434 + 435 + editToggle.addEventListener("click", () => { 436 + editMode = !editMode; 437 + editToggle.setAttribute("aria-label", editMode ? "Done" : "Edit layout"); 438 + editIcon.name = editMode ? "xmark" : "border-all"; 439 + layout.classList.toggle("edit-mode", editMode); 440 + saveCopyBtn.style.display = editMode ? "" : "none"; 441 + }); 442 + 443 + saveCopyBtn.addEventListener("click", async () => { 444 + await saveSimplifiedCopy(); 445 + saveCopyIcon.name = "check"; 446 + setTimeout(() => { 447 + saveCopyIcon.name = "floppy-disk"; 448 + }, 2000); 449 + }); 450 + 451 + // ─── Facet picker ───────────────────────────────────────────────────────────── 452 + 453 + const pickerDialog = 454 + /** @type {WaDialog} */ (document.querySelector("#facet-picker")); 455 + const facetSelect = 456 + /** @type {WaSelect} */ (document.querySelector("#facet-select")); 457 + const customPath = 458 + /** @type {WaInput} */ (document.querySelector("#custom-path")); 459 + const customConfirm = 460 + /** @type {HTMLElement} */ (document.querySelector("#custom-confirm")); 461 + 462 + customConfirm.addEventListener("click", () => { 463 + const val = customPath.value?.trim() || /** @type {string} */ 464 + (facetSelect.value) || ""; 465 + if (val && pendingPaneId !== null) setFacet(pendingPaneId, val); 466 + pendingPaneId = null; 467 + pickerDialog.open = false; 468 + }); 469 + 470 + pickerDialog.addEventListener("wa-hide", (e) => { 471 + if (e.target === pickerDialog) pendingPaneId = null; 472 + }); 473 + 474 + /** @param {string} nodePath */ 475 + function openPicker(nodePath) { 476 + pendingPaneId = nodePath; 477 + facetSelect.value = null; 478 + customPath.value = ""; 479 + pickerDialog.open = true; 480 + } 481 + 482 + // ─── Save simplified copy ───────────────────────────────────────────────────── 483 + 484 + /** 485 + * @param {Node} node 486 + * @param {string} indent 487 + * @returns {string} 488 + */ 489 + function generateNodeHTML(node, indent = "") { 490 + const inner = indent + " "; 491 + 492 + if (node.type === "split") { 493 + const orientationAttr = node.orientation === "vertical" 494 + ? ' orientation="vertical"' 495 + : ""; 496 + return `${indent}<wa-split-panel position="${node.position}"${orientationAttr}> 497 + ${inner}<div slot="start"> 498 + ${generateNodeHTML(node.start, inner + " ")} 499 + ${inner}</div> 500 + ${inner}<div slot="end"> 501 + ${generateNodeHTML(node.end, inner + " ")} 502 + ${inner}</div> 503 + ${indent}</wa-split-panel>`; 504 + } 505 + 506 + if (node.facet) { 507 + const uri = node.facet.includes("://") 508 + ? node.facet 509 + : `diffuse://${node.facet}`; 510 + const src = "facets/l/?uri=" + encodeURIComponent(uri); 511 + return `${indent}<div class="pane"> 512 + ${inner}<iframe src="${src}" allow="autoplay"></iframe> 513 + ${indent}</div>`; 514 + } 515 + 516 + return `${indent}<div class="pane"></div>`; 517 + } 518 + 519 + /** 520 + * @param {string} id 521 + */ 522 + function generateSimplifiedHTML(id) { 523 + const scriptClose = "</" + "script>"; 524 + return `\ 525 + <link rel="stylesheet" href="vendor/@awesome.me/webawesome/styles/themes/default.css" /> 526 + 527 + <style> 528 + body { margin: 0; height: 100dvh; overflow: hidden; } 529 + #layout, #layout > * { height: 100%; } 530 + wa-split-panel { height: 100%; } 531 + [slot="start"], [slot="end"] { height: 100%; } 532 + .pane { height: 100%; } 533 + .pane iframe { border: none; width: 100%; height: 100%; } 534 + .dragging iframe { pointer-events: none; } 535 + </style> 536 + 537 + <div id="layout"> 538 + ${generateNodeHTML(state, " ")} 539 + </div> 540 + 541 + <script type="module"> 542 + import "@awesome.me/webawesome/dist/components/split-panel/split-panel.js"; 543 + import "~/common/webawesome/detect-dark.js"; 544 + 545 + const layout = document.querySelector("#layout"); 546 + 547 + document.addEventListener("mousedown", (e) => { 548 + const isDivider = e.composedPath().some( 549 + (el) => el instanceof Element && el.getAttribute("part") === "divider", 550 + ); 551 + if (isDivider) layout.classList.add("dragging"); 552 + }, { capture: true }); 553 + 554 + document.addEventListener("mouseup", () => { 555 + layout.classList.remove("dragging"); 556 + }); 557 + 558 + const POSITIONS_KEY = "diffuse/facets/tools/split-view/${id}/positions"; 559 + const savedPositions = (() => { 560 + try { return JSON.parse(localStorage.getItem(POSITIONS_KEY) ?? "{}"); } 561 + catch { return {}; } 562 + })(); 563 + 564 + document.querySelectorAll("wa-split-panel").forEach((panel, i) => { 565 + if (savedPositions[i] !== undefined) panel.position = savedPositions[i]; 566 + panel.addEventListener("wa-reposition", () => { 567 + savedPositions[i] = panel.position; 568 + localStorage.setItem(POSITIONS_KEY, JSON.stringify(savedPositions)); 569 + }); 570 + }); 571 + ${scriptClose}`; 572 + } 573 + 574 + async function saveSimplifiedCopy() { 575 + const output = foundation.orchestrator.output(); 576 + await Output.waitUntilLoaded(output.facets); 577 + 578 + const id = crypto.randomUUID(); 579 + const html = generateSimplifiedHTML(id); 580 + const now = new Date().toISOString(); 581 + 582 + await output.facets.save([ 583 + ...output.facets.collection(), 584 + { 585 + $type: "sh.diffuse.output.facet", 586 + id, 587 + name: "Split View", 588 + html, 589 + createdAt: now, 590 + updatedAt: now, 591 + }, 592 + ]); 593 + } 594 + 595 + // ─── Init ───────────────────────────────────────────────────────────────────── 596 + 597 + render(); 598 + </script>
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/facets/tools/v3-import.html
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/facets/tools/v3-import.html
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/favicon-16x16.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon-16x16.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/favicon-32x32.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon-32x32.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/favicon.ico
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/favicon.ico
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/fonts/98.css/ms_sans_serif.woff2
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/fonts/98.css/ms_sans_serif_bold.woff2
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif_bold.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/fonts/CommitMonoVariable.woff2
··· 1 + ../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/fonts/CommitMonoVariable.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/fonts/InterVariable-Italic.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/fonts/InterVariable-Italic.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/fonts/InterVariable.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/fonts/InterVariable.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/1.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/1.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/10.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/10.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/11.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/11.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/12.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/12.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/13.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/13.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/14.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/14.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/15.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/15.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/16.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/16.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/17.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/17.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/18.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/18.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/19.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/19.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/2.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/2.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/20.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/20.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/21.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/21.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/22.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/22.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/23.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/23.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/24.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/24.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/25.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/25.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/26.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/26.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/27.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/27.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/28.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/28.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/29.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/29.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/3.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/3.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/30.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/30.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/4.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/4.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/5.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/5.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/6.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/6.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/7.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/7.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/8.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/8.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/9.jpg
··· 1 + ../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/9.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/1.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/1.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/10.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/10.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/11.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/11.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/12.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/12.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/13.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/13.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/14.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/14.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/15.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/15.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/16.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/16.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/17.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/17.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/18.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/18.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/19.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/19.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/2.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/2.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/20.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/20.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/21.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/21.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/22.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/22.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/23.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/23.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/24.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/24.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/25.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/25.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/26.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/26.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/27.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/27.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/28.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/28.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/29.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/29.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/3.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/3.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/30.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/30.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/4.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/4.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/5.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/5.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/6.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/6.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/7.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/7.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/8.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/8.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/background/thumbnails/9.jpg
··· 1 + ../../../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/Background/Thumbnails/9.jpg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/diffuse-current.svg
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/diffuse-current.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/diffuse-dark.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-dark.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/diffuse-grey.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-grey.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/diffuse-light.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse-light.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/diffuse__icon-dark.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-dark.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/diffuse__icon-grey.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-grey.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/diffuse__icon-light.svg
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/diffuse__icon-light.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icon-square-ws.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon-square-ws.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icon-square.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon-square.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icon.png
··· 1 + ../../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/images/icon.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/catalog-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/catalog-1.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/cd_audio_cd_a-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/cd_audio_cd_a-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-2.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/cd_audio_cd_a-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/cd_audio_cd_a-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_audio_cd_a-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/cd_drive-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_drive-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/cd_drive_purple-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/cd_drive_purple-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/channels-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/channels-2.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/check-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/check-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/computer_sound-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/computer_sound-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/computer_user_pencil-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/computer_user_pencil-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/connected_world-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/connected_world-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_admin_tools-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_admin_tools-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_admin_tools-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_admin_tools-5.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_channels-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_channels-2.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_channels-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_channels-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_closed-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_closed-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_closed-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_closed-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_control_panel-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_control_panel-2.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_control_panel-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_control_panel-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_explorer-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_explorer-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_explorer-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_explorer-5.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_favorites-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_favorites-2.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_favorites-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_favorites-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_net_web-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_net_web-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_net_web-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_net_web-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_network_conn-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_network_conn-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_network_conn-5.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_network_conn-5.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_open_file_mydocs_2k-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_open_file_mydocs_2k-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/directory_open_file_mydocs_2k-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/directory_open_file_mydocs_2k-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/gears-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/gears-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/globe_map-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/globe_map-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/help_book_big-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/help_book_big-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/installer-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/installer-3.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/installer_generic_old-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/installer_generic_old-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/keys-5.png
··· 1 + ../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/images/icons/windows_98/keys-5.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/loudspeaker_wave-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/loudspeaker_wave-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/magnifying_glass-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/magnifying_glass-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/magnifying_glass_4-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/magnifying_glass_4-1.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/media_player-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/media_player-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/media_player_stream_no.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/media_player_stream_no.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/ms_dos-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/ms_dos-1.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/msg_error-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_error-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/msg_information-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_information-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/msg_question-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_question-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/msg_warning-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/msg_warning-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/multimedia-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/multimedia-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/network_drive_world-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/network_drive_world-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/no-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/no-1.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/restrict-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/restrict-1.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/search_computer-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_computer-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/search_server-1.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_server-1.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/search_web-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/search_web-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/settings_gear-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/settings_gear-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/settings_gear-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/settings_gear-2.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/tip.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/tip.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/utopia_smiley.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/utopia_smiley.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/winamp2-32x32.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/winamp2-32x32.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/windows-0.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/windows-0.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/world-2.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world-2.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/world-4.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world-4.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/images/icons/windows_98/world_network_directories-3.png
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/images/icons/windows_98/world_network_directories-3.png
+565
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="./" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="styles/base.css" /> 27 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 28 + <link rel="stylesheet" href="vendor/@phosphor-icons/bold/style.css" /> 29 + <link rel="stylesheet" href="vendor/@phosphor-icons/fill/style.css" /> 30 + </head> 31 + <body> 32 + <header> 33 + <div> 34 + <h1 class="diffuse-logo"> 35 + <svg viewBox="0 0 902 134" width="160"> 36 + <title>Diffuse</title> 37 + <use 38 + xlink:href="images/diffuse-current.svg#diffuse" 39 + href="images/diffuse-current.svg#diffuse"></use> 40 + </svg> 41 + 42 + <span id="status"> 43 + <a href="/latest/" title="Upgrade to latest" class="animate-spin"> 44 + <i class="ph-bold ph-spinner"></i> 45 + </a> 46 + <a href="/chronicle/" title="Browse versions of Diffuse"> 47 + <i class="ph-fill ph-star-four"></i> 48 + </a> 49 + </span> 50 + </h1> 51 + <p class="construct dither-mask"> 52 + Your audio<br />your data<br />your rules 53 + </p> 54 + <p> 55 + Diffuse is a collection of components and software that make it possible to listen to audio from various sources on your devices and the web, and to create the ideal digital audio listening experience for you. 56 + </p> 57 + <p style="align-items: center; display: flex; gap: var(--space-2xs); opacity: 0.55;"> 58 + <i class="ph-fill ph-crane"></i> 59 + <strong style="font-weight: 700;">WORK IN PROGRESS</strong> 60 + </p> 61 + <ul class="table-of-contents"> 62 + <li><a href="#usage">Usage</a></li> 63 + <li><a href="#themes">Themes</a></li> 64 + <li><a href="#facets">Facets</a></li> 65 + <li><a href="#agency">Agency</a></li> 66 + <li><a href="#elements">Elements</a></li> 67 + <li><a href="#definitions">Definitions</a></li> 68 + </ul> 69 + <p> 70 + <small>Built by <a href="https://tokono.ma">tokono.ma</a></small> 71 + </p> 72 + </div> 73 + <div class="dither-mask filler"></div> 74 + </header> 75 + <main> 76 + <!-- USAGE --> 77 + <section> 78 + <h2 id="usage">Usage</h2> 79 + 80 + <div class="columns"> 81 + <div class="element"> 82 + <p> 83 + The easiest way to start is by exploring the software. If you prefer a traditional pre&shy;packaged application approach, you can check out <a href="themes/">themes</a>. Themes can look and function entirely different from each other, so make sure to explore! 84 + </p> 85 + 86 + <p> 87 + Alternatively, there's <a href="facets/">facets</a> which allows you to use any component from any theme interchange&shy;ably, among pieces that are not in themes; each in a separate browser tab. Each tab talks to each other, so you can for example browse audio in one tab and play it in another. 88 + </p> 89 + </div> 90 + 91 + <div class="element"> 92 + <p> 93 + <strong style="color: var(--accent); font-weight: 700;">Diffuse is not your typical streaming service though, you have to add sources of audio.</strong> To start you can try out the demo by clicking the button below, or, go to a <a href="themes/">theme</a> or <a href="facets/">facet</a> that lets you add your audio input. 94 + </p> 95 + 96 + <p> 97 + <button id="add-sample-content"> 98 + <span>Add sample content</span> 99 + </button> 100 + </p> 101 + </div> 102 + </div> 103 + </section> 104 + 105 + <!-- THEMES & FACETS --> 106 + <div class="columns"> 107 + <section> 108 + <h2 id="themes">Themes</h2> 109 + 110 + <p> 111 + Themes are element compositions and provide a traditional browser web application way of 112 + using them. In other words, pretty much the whole thing, besides your data, lives inside a single browser tab. 113 + </p> 114 + 115 + <p> 116 + <a class="button button--alt" href="themes/">Explore</a> 117 + </p> 118 + </section> 119 + 120 + <section> 121 + <h2 id="facets">Facets</h2> 122 + 123 + <p> 124 + Facets are various interface components each loaded in their own web page. Every used component is configured so that it operates in broadcast mode, making all the pages communicate with each other. 125 + </p> 126 + 127 + <p> 128 + <a class="button button--alt" href="facets/">Explore</a> 129 + </p> 130 + </section> 131 + </div> 132 + 133 + <!-- AGENCY --> 134 + <section> 135 + <h2 id="agency">Agency</h2> 136 + 137 + <p> 138 + The goal is for every user, no matter their experience, to have agency over their data and their software. One can start with making small changes and gradually progress to making big changes. 139 + </p> 140 + 141 + <p> 142 + You can store your user-data in various places, and easily export, import and sync it. 143 + </p> 144 + 145 + <h3>Take control</h3> 146 + 147 + <ul class="columns"> 148 + <div class="element"> 149 + <!-- 1 --> 150 + <li> 151 + <p> 152 + <i class="ph-fill ph-storefront"></i> <strong>Level 1</strong>: Pick your restaurant, food comes in all shapes and sizes. The equivalent of choosing a Diffuse <a href="themes/">theme</a>. 153 + </p> 154 + </li> 155 + <!-- 2 --> 156 + <li> 157 + <p> 158 + <i class="ph-fill ph-basket"></i> <strong>Level 2</strong>: Take out food from various places, eg. cheese shop + bakery. You choose how you combine the foods and from where you order them. That's <a href="facets/">facets</a>. 159 + </p> 160 + </li> 161 + <!-- 3 --> 162 + <li> 163 + <p> 164 + <i class="ph-fill ph-pepper"></i> <strong>Level 3</strong>: Now that you know which food is good and how to make combinations, you might make a slight customization, add a little something of your own (eg. add some spice). However, you're not quite confident enough which spice to pick, so you hire some help. 165 + </p> 166 + <p> 167 + This can be done using the <a href="facets/#builder">facets builder</a> which allows you to build on top of a familiar preconfigured foundation and load custom facets. People might share their own, or maybe you use an LLM to generate something for you (eg. an album art gallery). 168 + </p> 169 + </li> 170 + <!-- 4 --> 171 + <li> 172 + <p> 173 + <i class="ph-fill ph-knife"></i> <strong>Level 4</strong>: You learned a bit from watching and talking to the help you hired, so you decide to take things in your own hands. 174 + </p> 175 + <p> 176 + You continue to use the <a href="facets/#builder">facets builder</a> but learn a bit of <a href="https://htmlforpeople.com">HTML</a>, <a href="https://javascript.info">Javascript</a> and <a href="https://htmlforpeople.com/css-basics/">CSS</a>; so you're able to write your own facet. 177 + </p> 178 + </li> 179 + </div> 180 + <div class="element"> 181 + <!-- 5 --> 182 + <li> 183 + <p> 184 + <i class="ph-fill ph-cooking-pot"></i> <strong>Level 5</strong>: At this point you're confident enough to make a meal from scratch. You can start very simple, eg. just throwing a steak in the pan with some butter and some salt to it. Then later add some baked potatoes and go from there. 185 + </p> 186 + <p> 187 + A similar tool comes into play here, the <a href="themes/#builder">themes builder</a>. Same concept as the facets builder, but now you need to specify the foundation yourself. You can use the <a href="#elements">elements</a> listed below to do so. The code for these is available from this website or through the <a href="https://jsr.io/@toko/diffuse">Javascript package</a>. 188 + </p> 189 + </li> 190 + <!-- 6 --> 191 + <li> 192 + <p> 193 + <i class="ph-fill ph-storefront"></i> <strong>Level 6</strong>: You open your own restaurant. 194 + </p> 195 + <p> 196 + You can host the theme you made on any web server, it's only HTML after all. Only difference is that you'll have to create the entire HTML tree, not just the body element, as is the case with the theme builder. 197 + </p> 198 + </li> 199 + <!-- 7 --> 200 + <li> 201 + <p> 202 + <i class="ph-fill ph-chef-hat"></i> <strong>Level 7</strong>: You got promoted to master chef. Time to open your own restaurant chain. 203 + </p> 204 + <p> 205 + You can self-host Diffuse, it's <a href="https://tangled.org/tokono.ma/diffuse/blob/v4/">open-source</a>! Or you present your own collection of elements. 206 + </p> 207 + </li> 208 + </div> 209 + </ul> 210 + </section> 211 + 212 + <!-- ELEMENTS --> 213 + <section> 214 + <h2 id="elements">Elements</h2> 215 + 216 + <p> 217 + The (web) components of the system. These custom elements are then recombined into an entire music player experience, or whatever you want to build. 218 + </p> 219 + 220 + <p> 221 + Consume these using the facets <a href="facets/#builder">builder</a>, the Javascript <a href="https://jsr.io/@toko/diffuse">package</a>, or the linked Javascript files down below. 222 + </p> 223 + 224 + <div class="columns"> 225 + <div class="element"> 226 + <h3>Configurators</h3> 227 + 228 + <p> 229 + <em> 230 + Elements that serve as an intermediate in order to make a particular kind of element configurable. In other words, these allow for an element to be swapped out with another that takes the same set of the actions and data output. 231 + </em> 232 + </p> 233 + 234 + <ul> 235 + <li> 236 + <a href="components/configurator/input/element.js">Input</a> 237 + <div class="list-description">Allows for multiple inputs to be used at once.</div> 238 + </li> 239 + <li> 240 + <a href="components/configurator/output/element.js">Output</a> 241 + <div class="list-description">Enables the user to configure a specific output. If no default output is set, it creates a temporary session by storing everything in memory.</div> 242 + </li> 243 + <li> 244 + <span class="todo">[todo]</span> 245 + <span>Scrobbles</span> 246 + <div class="list-description">Configure multiple scrobblers (music trackers).</div> 247 + </li> 248 + </ul> 249 + 250 + </div> 251 + 252 + 253 + <div class="element"> 254 + <h3>Engines</h3> 255 + 256 + <p> 257 + <em> 258 + Elements with each a singular purpose and don't have any UI. There are specialised UI and orchestrator elements that control these. 259 + </em> 260 + </p> 261 + 262 + <ul> 263 + <li> 264 + <a href="components/engine/audio/element.js">Audio</a> 265 + <div class="list-description">Plays audio through audio elements.</div> 266 + </li> 267 + <li> 268 + <a href="components/engine/queue/element.js">Queue</a> 269 + <div class="list-description">A queue for tracks.</div> 270 + </li> 271 + <li> 272 + <a href="components/engine/repeat-shuffle/element.js">Repeat & Shuffle</a> 273 + <div class="list-description">Signals synced with local storage (classified by group) that decide if audio should be repeated and if the queue should be shuffled when filling it.</div> 274 + </li> 275 + <li> 276 + <a href="components/engine/scope/element.js">Scope</a> 277 + <div class="list-description">Signals that could influence the scope of a set of tracks.</div> 278 + </li> 279 + </ul> 280 + 281 + </div> 282 + 283 + 284 + <div class="element"> 285 + <h3>Input</h3> 286 + 287 + <p> 288 + <em> 289 + Inputs are sources of audio tracks. Each track is an entry in the list of possible items to play. These can be files or streams, static or dynamic. 290 + </em> 291 + </p> 292 + 293 + <ul> 294 + <li> 295 + <a href="components/input/https/element.js">HTTPS</a> 296 + <div class="list-description">HTTPS URLs to audio files or streams.</div> 297 + </li> 298 + <li> 299 + <span class="todo">[todo]</span> 300 + <span>HTTPS (JSON)</span> 301 + <div class="list-description">Generate tracks based on HTTPS servers that provide JSON (directory) listings.</div> 302 + </li> 303 + <li> 304 + <a href="components/input/local/element.js">Local</a> 305 + <div class="list-description">Audio files or directories from your local device, using the browser's File System Access API.</div> 306 + </li> 307 + <li> 308 + <a href="components/input/opensubsonic/element.js">Opensubsonic</a> 309 + <div class="list-description">Add any (open)subsonic server.</div> 310 + </li> 311 + <li> 312 + <a href="components/input/s3/element.js">S3</a> 313 + <div class="list-description">AWS S3 and services that provide the same surface API such as Cloudflare R2.</div> 314 + </li> 315 + <li> 316 + <span class="todo">[todo]</span> 317 + <span>WebDAV</span> 318 + <div class="list-description">Add any WebDAV server.</div> 319 + </li> 320 + </ul> 321 + 322 + </div> 323 + 324 + 325 + <div class="element"> 326 + <h3>Orchestrators</h3> 327 + 328 + <p> 329 + <em> 330 + These too are element compositions. However, unlike themes, these are purely logical. Mostly exist in order to construct sensible defaults to use across themes and other compositions. 331 + </em> 332 + </p> 333 + 334 + <ul> 335 + <li> 336 + <a href="components/orchestrator/auto-queue/element.js">Automatic queue</a> 337 + <div class="list-description">Fill the queue automatically with non-manual items (shuffled or regular, based on repeat-shuffle engine).</div> 338 + </li> 339 + <li> 340 + <a href="components/orchestrator/favourites/element.js">Favourites</a> 341 + <div class="list-description">Mark tracks as favourites. Automatically creates an unordered 'Favourites' playlist.</div> 342 + </li> 343 + <li> 344 + <a href="components/orchestrator/input/element.js">Input</a> 345 + <div class="list-description"><strong>A default input configuration.</strong> Contains all the inputs provided here.</div> 346 + </li> 347 + <li> 348 + <a href="components/orchestrator/media-session/element.js">Media Session</a> 349 + <div class="list-description">Keeps the browser/os media session in sync with queue and audio state. Adds handlers for previous, next, seek to, etc.</div> 350 + </li> 351 + <li> 352 + <a href="components/orchestrator/output/element.js">Output</a> 353 + <div class="list-description"><strong>A default output configuration.</strong> Contains all the outputs provided here along with the relevant transformers.</div> 354 + </li> 355 + <li> 356 + <a href="components/orchestrator/process-tracks/element.js">Process inputs into tracks</a> 357 + <div class="list-description">Whenever the cached tracks are initially loaded through the passed output element it will list tracks by using the passed input element. Afterwards it loops over all tracks and checks if metadata needs to be fetched. If anything has changed, it'll pass the results to the output element.</div> 358 + </li> 359 + <li> 360 + <a href="components/orchestrator/queue-audio/element.js">Queue ⭤ Audio</a> 361 + <div class="list-description">Connects the given queue engine to the given audio engine.</div> 362 + </li> 363 + <li> 364 + <a href="components/orchestrator/sources/element.js">Sources</a> 365 + <div class="list-description">Monitor tracks from the given output to form a list of sources based on the input's sources return value.</div> 366 + </li> 367 + <li> 368 + <a href="components/orchestrator/scoped-tracks/element.js">Scoped Tracks</a> 369 + <div class="list-description">Supplies the tracks from the given output to the given search processor whenever the tracks collection changes. Additionally it can perform a search and other ways to reduce the scope of tracks based on the given scope engine. Provides a <code>tracks</code> signal similar to <code>output.tracks.collection</code></div> 370 + </li> 371 + </ul> 372 + 373 + </div> 374 + 375 + 376 + <div class="element"> 377 + <h3>Output</h3> 378 + 379 + <p> 380 + <em> 381 + Output is application-derived data such as playlists. These elements can receive such data and keep it around. These are categorised by the type of data they ingest, or many types in the case of polymorphic. Optionally use transformers to convert output into the expected format. 382 + </em> 383 + </p> 384 + 385 + <ul> 386 + <li> 387 + <a href="components/output/polymorphic/indexed-db/element.js">Polymorphic / IndexedDB</a> 388 + <div class="list-description">Stores output into the local indexedDB. Supports any type of data that indexedDB supports.</div> 389 + </li> 390 + <li> 391 + <a href="components/output/bytes/s3/element.js">Bytes / S3</a> 392 + <div class="list-description">Store output data on AWS S3 or compatible services such as Cloudflare R2.</div> 393 + </li> 394 + <li> 395 + <a href="components/output/raw/atproto/element.js">Raw / AT Protocol</a> 396 + <div class="list-description">Store your user data on the storage associated with your ATProtocol identity. Data is lexicon shaped by default so this element takes in that data directly without any transformations.</div> 397 + </li> 398 + </ul> 399 + 400 + </div> 401 + 402 + 403 + <div class="element"> 404 + <h3>Processors</h3> 405 + 406 + <p> 407 + <em> 408 + These elements work with the output generated by the input elements to add more data to them, or process them in some other way. 409 + </em> 410 + </p> 411 + 412 + <ul> 413 + <li> 414 + <a href="components/processor/artwork/element.js">Artwork</a> 415 + <div class="list-description">Fetches cover art for a given set of tracks, stored locally in indexedDB. Checks the audio metadata first, then MusicBrainz and uses Last.fm as the fallback.</div> 416 + </li> 417 + <li> 418 + <a href="components/processor/metadata/element.js">Metadata</a> 419 + <div class="list-description">Fetch audio metadata for a given set of tracks, adding to the <code>Track</code> object.</div> 420 + </li> 421 + <li> 422 + <a href="components/processor/search/element.js">Search</a> 423 + <div class="list-description">Provides a way to search through a collection of tracks, powered by orama.js</div> 424 + </li> 425 + </ul> 426 + 427 + </div> 428 + 429 + 430 + <div class="element"> 431 + <h3>Supplements</h3> 432 + 433 + <p> 434 + <em> 435 + Additional elements, such as scrobblers. 436 + </em> 437 + </p> 438 + 439 + <ul> 440 + <li> 441 + <span class="todo">[todo]</span> 442 + <span>Last.fm scrobbler</span> 443 + </li> 444 + <li> 445 + <span class="todo">[todo]</span> 446 + <span>ListenBrainz scrobbler</span> 447 + </li> 448 + <li> 449 + <span class="todo">[todo]</span> 450 + <span>Rocksky scrobbler</span> 451 + </li> 452 + <li> 453 + <span class="todo">[todo]</span> 454 + <span>Teal.fm scrobbler</span> 455 + </li> 456 + </ul> 457 + 458 + </div> 459 + 460 + 461 + <div class="element"> 462 + <h3>Transformers</h3> 463 + 464 + <p> 465 + <em> 466 + Transform data from one format or schema into another. See schema section below for more information. Just as configurators, these are intermediates and require to have the same set of actions as the element it targets. 467 + </em> 468 + </p> 469 + 470 + <ul> 471 + <li> 472 + <span class="todo">[todo]</span> 473 + <span>Output / Bytes / Automerge</span> 474 + <div class="list-description">Translate data to and from an Automerge CRDT.</div> 475 + </li> 476 + <li> 477 + <span class="todo">[todo]</span> 478 + <span>Output / Bytes / Cambria lenses</span> 479 + <div class="list-description">Uses the Cambria library to seamlessly translate between data schemas so that no data migration is needed.</div> 480 + </li> 481 + <li> 482 + <a href="components/transformer/output/bytes/dasl-sync/element.js">Output / Bytes / DASL Sync</a> 483 + <div class="list-description">Syncs data between local and remote using CID-based diffing and performs union merges with tombstone tracking when both sides have diverged.</div> 484 + </li> 485 + <li> 486 + <a href="components/transformer/output/bytes/json/element.js">Output / Bytes / JSON</a> 487 + <div class="list-description">Raw data schema output ⇄ JSON Uint8Array.</div> 488 + </li> 489 + <li> 490 + <a href="components/transformer/output/raw/atproto-sync/element.js">Output / Raw / AT Protocol Sync</a> 491 + <div class="list-description">Wraps an AT Protocol output with a local IndexedDB cache. Uses the repo revision to skip unnecessary fetches and performs union merges with tombstone tracking when both local and remote have diverged.</div> 492 + </li> 493 + <li> 494 + <a href="components/transformer/output/refiner/default/element.js">Output / Refiner / Default</a> 495 + <div class="list-description">The task of a refiner transformer is to remove the output state that is not meant to be saved to storage. For example, ephemeral tracks; this transformer will keep them in memory, but they will not be present in the output. <strong>Ideally this is part of every theme, but you may swap it out with another transformer that might provide better defaults.</strong></div> 496 + </li> 497 + <li> 498 + <a href="components/transformer/output/refiner/track-uri-passkey/element.js">Output / Refiner / Track URI Passkey</a> 499 + <div class="list-description">Encrypts track URIs using a passkey-derived PRF key. On read, decrypts <code>encrypted://</code> URIs transparently; on write, re-encrypts all URIs before passing downstream. Tracks that cannot be decrypted are held separately and excluded from the visible collection.</div> 500 + </li> 501 + <li> 502 + <a href="components/transformer/output/string/json/element.js">Output / String / JSON</a> 503 + <div class="list-description">Raw data schema output ⇄ JSON UTF8 string.</div> 504 + </li> 505 + </ul> 506 + 507 + </div> 508 + 509 + </div> 510 + </section> 511 + 512 + <!-- DEFINITIONS --> 513 + <section> 514 + <h2 id="definitions">Definitions</h2> 515 + 516 + <p>All of the elements here are built with these data definitions in mind. That said, you can mix elements that use different definitions; you just have to put a transformer between them in order to translate between them, if needed.</p> 517 + 518 + <ul> 519 + <li> 520 + <a href="definitions/output/collaboration.json">Output / Collaboration</a> 521 + <div class="list-description">Represents a collaboration between multiple collaborators on a subject, such as a playlist.</div> 522 + </li> 523 + <li> 524 + <a href="definitions/output/facet.json">Output / Facet</a> 525 + <div class="list-description">Facet pointer or HTML snippet.</div> 526 + </li> 527 + <li> 528 + <a href="definitions/output/playlistItem.json">Output / Playlist Item</a> 529 + <div class="list-description">Represents a single item in a playlist. Tracks are matched based on the given criteria. A playlist is formed by grouping items by their playlist property.</div> 530 + </li> 531 + <li> 532 + <a href="definitions/output/playlistItemBundle.json">Output / Playlist Item Bundle</a> 533 + <div class="list-description">A bundle of playlist items.</div> 534 + </li> 535 + <li> 536 + <span class="todo">[todo]</span> 537 + <span>Output / Progress</span> 538 + <div class="list-description">Used to track progress of (long) audio playback.</div> 539 + </li> 540 + <li> 541 + <a href="definitions/output/theme.json">Output / Theme</a> 542 + <div class="list-description">Theme pointer or HTML snippet.</div> 543 + </li> 544 + <li> 545 + <a href="definitions/output/track.json">Output / Track</a> 546 + <div class="list-description">Represents audio that can be played, or a placeholder for a source of tracks. Contains a URI that will resolve to the audio.</div> 547 + </li> 548 + <li> 549 + <a href="definitions/output/trackBundle.json">Output / Track Bundle</a> 550 + <div class="list-description">A bundle of tracks.</div> 551 + </li> 552 + </ul> 553 + 554 + </section> 555 + </main> 556 + 557 + 558 + <!-- Make every touched URL available offline --> 559 + <do-offline></do-offline> 560 + <script src="components/orchestrator/offline/element.js" type="module"></script> 561 + 562 + <!-- Scripts --> 563 + <script src="index.js" type="module"></script> 564 + </body> 565 + </html>
+142
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/index.js
··· 1 + import { 2 + waitUntilLoaded 3 + } from "./chunk-SIA54BLL.js"; 4 + import { 5 + GROUP 6 + } from "./chunk-FIX46GRA.js"; 7 + import { 8 + element_default as element_default4 9 + } from "./chunk-VOFM65C2.js"; 10 + import "./chunk-HDE6FJCN.js"; 11 + import "./chunk-ZROTLYIH.js"; 12 + import "./chunk-2SPFBYRD.js"; 13 + import "./chunk-K4XAE7PE.js"; 14 + import "./chunk-XKXQMVTB.js"; 15 + import "./chunk-ABL7GBBM.js"; 16 + import "./chunk-TMIJ7SWF.js"; 17 + import { 18 + element_default as element_default3 19 + } from "./chunk-QKKQKAE5.js"; 20 + import "./chunk-2HKIFQJO.js"; 21 + import "./chunk-IKAIRC6G.js"; 22 + import "./chunk-2PHQN23Z.js"; 23 + import { 24 + element_default as element_default5 25 + } from "./chunk-ENDOZK4Q.js"; 26 + import "./chunk-FQ7GPRG2.js"; 27 + import "./chunk-TMGAIVLV.js"; 28 + import "./chunk-U4HLMEDD.js"; 29 + import "./chunk-Y4UF3TDF.js"; 30 + import "./chunk-HN4F5JEZ.js"; 31 + import "./chunk-X2U7TZQT.js"; 32 + import "./chunk-AGWC42GJ.js"; 33 + import "./chunk-TRIYIVJH.js"; 34 + import "./chunk-I3VKG3ZJ.js"; 35 + import "./chunk-D6OAWBEV.js"; 36 + import "./chunk-ZDMTYKI5.js"; 37 + import "./chunk-6DRHTH2U.js"; 38 + import { 39 + element_default as element_default2 40 + } from "./chunk-JR4EW3HT.js"; 41 + import "./chunk-BDBXPVO6.js"; 42 + import "./chunk-JBHW662S.js"; 43 + import "./chunk-H7PU7XY7.js"; 44 + import "./chunk-VCRMPF2R.js"; 45 + import "./chunk-YBUNVPVS.js"; 46 + import "./chunk-OAG3HI6B.js"; 47 + import "./chunk-JDKXATSY.js"; 48 + import "./chunk-TS4JJWFE.js"; 49 + import "./chunk-3L563ZA4.js"; 50 + import "./chunk-VQR5VNUL.js"; 51 + import "./chunk-EEUCFWD4.js"; 52 + import "./chunk-IYNRCNPM.js"; 53 + import "./chunk-3USAPKOY.js"; 54 + import "./chunk-HMBZONBJ.js"; 55 + import { 56 + element_default 57 + } from "./chunk-7U5QHBAZ.js"; 58 + import "./chunk-2V4VRBHO.js"; 59 + import "./chunk-G56PUJUJ.js"; 60 + import "./chunk-BKRD2ZIW.js"; 61 + import "./chunk-SGR5ST3A.js"; 62 + import "./chunk-6DKPDMFE.js"; 63 + import "./chunk-TP5GZFTO.js"; 64 + import "./chunk-ZQZJJU3T.js"; 65 + import "./chunk-HNJPKCUJ.js"; 66 + import { 67 + __name, 68 + init_Buffer, 69 + init_process 70 + } from "./chunk-FZQXS3RE.js"; 71 + 72 + // index.js 73 + init_Buffer(); 74 + init_process(); 75 + var s3 = new element_default2(); 76 + var input = new element_default(); 77 + input.setAttribute("group", GROUP); 78 + input.append(s3); 79 + var output = new element_default3(); 80 + output.setAttribute("group", GROUP); 81 + var metadataProcessor = new element_default4(); 82 + metadataProcessor.setAttribute("group", GROUP); 83 + document.body.append(input, output, metadataProcessor); 84 + var pto = new element_default5(); 85 + pto.setAttribute("group", GROUP); 86 + pto.setAttribute("input-selector", input.selector); 87 + pto.setAttribute("output-selector", output.selector); 88 + pto.setAttribute("metadata-processor-selector", metadataProcessor.selector); 89 + document.body.append(pto); 90 + var addDemoBtn = document.querySelector("#add-sample-content"); 91 + async function addSampleContent() { 92 + if (!addDemoBtn) return; 93 + addDemoBtn.setAttribute("disabled", ""); 94 + addDemoBtn.innerHTML = `<span> 95 + <i class="ph-fill ph-hourglass-medium"></i> 96 + Adding source 97 + </span>`; 98 + const demo = await s3.demo(); 99 + await waitUntilLoaded(output.tracks); 100 + addDemoBtn.innerHTML = `<span> 101 + <i class="ph-fill ph-hourglass-medium"></i> 102 + Processing source 103 + </span>`; 104 + await output.tracks.save([...output.tracks.collection(), demo.track]); 105 + await pto.process(); 106 + addDemoBtn.innerHTML = `<span> 107 + <i class="ph-fill ph-check-fat"></i> Added 108 + </span>`; 109 + } 110 + __name(addSampleContent, "addSampleContent"); 111 + addDemoBtn?.addEventListener("click", addSampleContent); 112 + if (document.location.hostname.endsWith("diffuse.sh")) { 113 + document.querySelectorAll("#status").forEach(async (status) => { 114 + const versionOrCid = document.location.pathname.slice(1).split("/")[0]?.toLowerCase() ?? ""; 115 + const usesCid = versionOrCid.startsWith("bafy"); 116 + const { default: artifacts } = await import(`${document.location.origin}/artifacts.json`, { with: { type: "json" } }); 117 + const lastArtifact = Object.values(artifacts).reverse()[0]; 118 + const isLatest = usesCid ? versionOrCid === lastArtifact.cid : versionOrCid === lastArtifact.version; 119 + status.querySelectorAll(".ph-spinner").forEach((icon) => { 120 + icon.parentElement?.classList.add("hidden"); 121 + setTimeout(() => { 122 + icon.parentElement?.classList.remove("animate-spin"); 123 + icon.classList.remove("ph-spinner"); 124 + icon.classList.add("ph-arrow-fat-lines-up"); 125 + }, 500); 126 + }); 127 + status.querySelectorAll(`[href="/latest/"]`).forEach((a) => { 128 + if (usesCid) a.setAttribute("href", "/latest/hash/"); 129 + if (!isLatest) { 130 + setTimeout(() => { 131 + a.classList.remove("hidden"); 132 + }, 750); 133 + } 134 + }); 135 + }); 136 + } else { 137 + document.querySelectorAll("#status").forEach((status) => { 138 + status.remove(); 139 + }); 140 + } 141 + 142 + //# sourceMappingURL=./index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/index.js.map
··· 1 + ../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/mstile-150x150.png
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/mstile-150x150.png
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/node_crypto-QYMDOTAM.js
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/node_crypto-QYMDOTAM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/node_crypto-QYMDOTAM.js.map
··· 1 + ../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/node_crypto-QYMDOTAM.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/oauth-client-metadata.json
··· 1 + ../bafybeicp5hi5rw4vffqlbmyqqaxhmxzx4ilejru3cq4esycpeyuuhen5ha/oauth-client-metadata.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/oauth-client-metadata.tunnel.json
··· 1 + ../bafybeicp5hi5rw4vffqlbmyqqaxhmxzx4ilejru3cq4esycpeyuuhen5ha/oauth-client-metadata.tunnel.json
+37
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/oauth/callback/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + </head> 27 + <body> 28 + 29 + 30 + <!-- Make every touched URL available offline --> 31 + <do-offline></do-offline> 32 + <script src="components/orchestrator/offline/element.js" type="module"></script> 33 + 34 + <!-- Scripts --> 35 + <script src="oauth/callback/index.js" type="module"></script> 36 + </body> 37 + </html>
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/oauth/callback/index.js
··· 1 + ../../../bafybeifzg2vr4j7pvtjsr5jbyswboxepndwv4tzkqwzc72k4xck7oaozii/oauth/callback/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/oauth/callback/index.js.map
··· 1 + ../../../bafybeifzg2vr4j7pvtjsr5jbyswboxepndwv4tzkqwzc72k4xck7oaozii/oauth/callback/index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/safari-pinned-tab.svg
··· 1 + ../bafybeickgtv5nqyo2wizj323e6jy4mlcrmchzyfsgjgngl5kbzv6coqhk4/safari-pinned-tab.svg
+99
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/service-worker-offline.js
··· 1 + import { 2 + create 3 + } from "./chunk-4YB6QUPN.js"; 4 + import { 5 + __name, 6 + init_Buffer, 7 + init_process 8 + } from "./chunk-FZQXS3RE.js"; 9 + 10 + // service-worker-offline.js 11 + init_Buffer(); 12 + init_process(); 13 + var MEDIA_CONTENT_TYPE = /^(audio|video)\//; 14 + var RAW_CODEC = 85; 15 + var { searchParams } = new URL(location.href); 16 + var CACHE_NAME = searchParams.get("cache-name") ?? "diffuse-offline"; 17 + var thyself = ( 18 + /** @type {ServiceWorkerGlobalScope & typeof globalThis} */ 19 + /** @type {unknown} */ 20 + self 21 + ); 22 + self.addEventListener("install", () => { 23 + thyself.skipWaiting(); 24 + }); 25 + self.addEventListener("activate", (event) => { 26 + event.waitUntil(thyself.clients.claim()); 27 + }); 28 + self.addEventListener("fetch", (_event) => { 29 + const event = ( 30 + /** @type {FetchEvent} */ 31 + _event 32 + ); 33 + const { request } = event; 34 + if (request.method !== "GET") return; 35 + if (!request.url.startsWith("http")) return; 36 + event.respondWith(handleFetch(request)); 37 + }); 38 + function cidUrl(cid) { 39 + return `https://diffuse.offline.worker/${cid}`; 40 + } 41 + __name(cidUrl, "cidUrl"); 42 + async function openCaches() { 43 + const [index, content] = await Promise.all([ 44 + caches.open(CACHE_NAME + ":index"), 45 + caches.open(CACHE_NAME + ":content") 46 + ]); 47 + return { index, content }; 48 + } 49 + __name(openCaches, "openCaches"); 50 + async function store(request, response) { 51 + const bytes = new Uint8Array(await response.clone().arrayBuffer()); 52 + const cid = await create(RAW_CODEC, bytes); 53 + const cidKey = cidUrl(cid); 54 + const caches2 = await openCaches(); 55 + if (!await caches2.content.match(cidKey)) { 56 + await caches2.content.put(new Request(cidKey), response); 57 + } 58 + await caches2.index.put( 59 + new Request(request.url), 60 + new Response(cid, { headers: { "content-type": "text/plain" } }) 61 + ); 62 + } 63 + __name(store, "store"); 64 + async function lookup(request) { 65 + const caches2 = await openCaches(); 66 + const indexEntry = await caches2.index.match(request); 67 + if (!indexEntry) return void 0; 68 + const cid = await indexEntry.text(); 69 + return caches2.content.match(cidUrl(cid)); 70 + } 71 + __name(lookup, "lookup"); 72 + async function handleFetch(request) { 73 + if (navigator.onLine) { 74 + try { 75 + return await fetchAndStore(request); 76 + } catch { 77 + } 78 + } 79 + const cached = await lookup(request); 80 + if (cached) return cached; 81 + return new Response(null, { 82 + status: 503, 83 + statusText: "Unavailable asset, not cached" 84 + }); 85 + } 86 + __name(handleFetch, "handleFetch"); 87 + async function fetchAndStore(request) { 88 + const response = await fetch(request); 89 + if (response.status === 206) return response; 90 + const contentType = response.headers.get("content-type") ?? ""; 91 + if (MEDIA_CONTENT_TYPE.test(contentType)) return response; 92 + if (response.status === 200 || response.type === "opaque") { 93 + store(request, response.clone()); 94 + } 95 + return response; 96 + } 97 + __name(fetchAndStore, "fetchAndStore"); 98 + 99 + //# sourceMappingURL=./service-worker-offline.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/service-worker-offline.js.map
··· 1 + {"version":3,"sources":["/service-worker-offline.js"],"sourcesContent":["/// <reference no-default-lib=\"true\" />\n/// <reference lib=\"webworker\" />\n\nimport { create as createCid } from \"./common/cid.js\";\n\n/** Media content types to ignore */\nconst MEDIA_CONTENT_TYPE = /^(audio|video)\\//;\n\n/** Multicodec code for raw binary content. */\nconst RAW_CODEC = 0x55;\n\nconst { searchParams } = new URL(location.href);\nconst CACHE_NAME = searchParams.get(\"cache-name\") ?? \"diffuse-offline\";\n\nconst thyself =\n /** @type {ServiceWorkerGlobalScope & typeof globalThis} */ (/** @type {unknown} */ (self));\n\n////////////////////////////////////////////\n// INSTALL\n////////////////////////////////////////////\n\nself.addEventListener(\"install\", () => {\n // Activate immediately without waiting for existing clients to close.\n thyself.skipWaiting();\n});\n\n////////////////////////////////////////////\n// ACTIVATE\n////////////////////////////////////////////\n\nself.addEventListener(\"activate\", (event) => {\n // Take control of all open clients right away.\n /** @type {ExtendableEvent} */ (event).waitUntil(thyself.clients.claim());\n});\n\n////////////////////////////////////////////\n// FETCH\n////////////////////////////////////////////\n\nself.addEventListener(\"fetch\", (_event) => {\n const event = /** @type {FetchEvent} */ (_event);\n const { request } = event;\n\n // Only intercept GET requests over http(s).\n if (request.method !== \"GET\") return;\n if (!request.url.startsWith(\"http\")) return;\n\n event.respondWith(handleFetch(request));\n});\n\n////////////////////////////////////////////\n// CACHE (content-addressed)\n////////////////////////////////////////////\n\n/**\n * @param {string} cid\n */\nfunction cidUrl(cid) {\n return `https://diffuse.offline.worker/${cid}`;\n}\n\n/**\n * Opens the two caches used for content-addressed storage.\n *\n * - `<name>:index` maps original request URL → CID string (text/plain)\n * - `<name>:content` maps `https://diffuse.offline.worker/<cid>` → full response (deduplicated)\n */\nasync function openCaches() {\n const [index, content] = await Promise.all([\n caches.open(CACHE_NAME + \":index\"),\n caches.open(CACHE_NAME + \":content\"),\n ]);\n return { index, content };\n}\n\n/**\n * Computes the CID of `response`'s body and writes it into the two-level cache.\n * The same content is stored only once, regardless of how many URLs reference it.\n *\n * @param {Request} request\n * @param {Response} response - a clone; its body is fully consumed here\n */\nasync function store(request, response) {\n const bytes = new Uint8Array(await response.clone().arrayBuffer());\n const cid = await createCid(RAW_CODEC, bytes);\n const cidKey = cidUrl(cid);\n\n const caches = await openCaches();\n\n // Only store the content if we haven't seen this CID before\n if (!(await caches.content.match(cidKey))) {\n await caches.content.put(new Request(cidKey), response);\n }\n\n // Update the URL → CID map\n await caches.index.put(\n new Request(request.url),\n new Response(cid, { headers: { \"content-type\": \"text/plain\" } }),\n );\n}\n\n/**\n * Resolves the cached response for a request via the URL → CID index.\n *\n * @param {Request} request\n * @returns {Promise<Response | undefined>}\n */\nasync function lookup(request) {\n const caches = await openCaches();\n\n const indexEntry = await caches.index.match(request);\n if (!indexEntry) return undefined;\n\n const cid = await indexEntry.text();\n return caches.content.match(cidUrl(cid));\n}\n\n////////////////////////////////////////////\n// HANDLER\n////////////////////////////////////////////\n\n/**\n * Network-first strategy with content-addressed caching.\n *\n * Online → fetch from network, store response by CID, return it.\n * Offline → resolve the URL through the index, serve by CID from the content cache.\n *\n * Partial responses (206) are passed through without caching so that\n * range requests for audio streaming work as normal.\n *\n * @param {Request} request\n * @returns {Promise<Response>}\n */\nasync function handleFetch(request) {\n // When we know we're offline, skip the network entirely.\n if (navigator.onLine) {\n try {\n return await fetchAndStore(request);\n } catch {}\n }\n\n const cached = await lookup(request);\n if (cached) return cached;\n\n return new Response(null, {\n status: 503,\n statusText: \"Unavailable asset, not cached\",\n });\n}\n\n/**\n * @param {Request} request\n */\nasync function fetchAndStore(request) {\n const response = await fetch(request);\n\n // Partial content (range requests) — return as-is, do not cache.\n if (response.status === 206) return response;\n\n // Skip caching audio/video.\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (MEDIA_CONTENT_TYPE.test(contentType)) return response;\n\n // Cache full successful responses, including opaque cross-origin ones.\n if (response.status === 200 || response.type === \"opaque\") {\n store(request, response.clone());\n }\n\n return response;\n}\n"],"mappings":";;;;;;;;;;AAAA;AAAA;AAMA,IAAM,qBAAqB;AAG3B,IAAM,YAAY;AAElB,IAAM,EAAE,aAAa,IAAI,IAAI,IAAI,SAAS,IAAI;AAC9C,IAAM,aAAa,aAAa,IAAI,YAAY,KAAK;AAErD,IAAM;AAAA;AAAA;AAAA,EACiF;AAAA;AAMvF,KAAK,iBAAiB,WAAW,MAAM;AAErC,UAAQ,YAAY;AACtB,CAAC;AAMD,KAAK,iBAAiB,YAAY,CAAC,UAAU;AAEZ,EAAC,MAAO,UAAU,QAAQ,QAAQ,MAAM,CAAC;AAC1E,CAAC;AAMD,KAAK,iBAAiB,SAAS,CAAC,WAAW;AACzC,QAAM;AAAA;AAAA,IAAmC;AAAA;AACzC,QAAM,EAAE,QAAQ,IAAI;AAGpB,MAAI,QAAQ,WAAW,MAAO;AAC9B,MAAI,CAAC,QAAQ,IAAI,WAAW,MAAM,EAAG;AAErC,QAAM,YAAY,YAAY,OAAO,CAAC;AACxC,CAAC;AASD,SAAS,OAAO,KAAK;AACnB,SAAO,kCAAkC,GAAG;AAC9C;AAFS;AAUT,eAAe,aAAa;AAC1B,QAAM,CAAC,OAAO,OAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,IACzC,OAAO,KAAK,aAAa,QAAQ;AAAA,IACjC,OAAO,KAAK,aAAa,UAAU;AAAA,EACrC,CAAC;AACD,SAAO,EAAE,OAAO,QAAQ;AAC1B;AANe;AAef,eAAe,MAAM,SAAS,UAAU;AACtC,QAAM,QAAQ,IAAI,WAAW,MAAM,SAAS,MAAM,EAAE,YAAY,CAAC;AACjE,QAAM,MAAM,MAAM,OAAU,WAAW,KAAK;AAC5C,QAAM,SAAS,OAAO,GAAG;AAEzB,QAAMA,UAAS,MAAM,WAAW;AAGhC,MAAI,CAAE,MAAMA,QAAO,QAAQ,MAAM,MAAM,GAAI;AACzC,UAAMA,QAAO,QAAQ,IAAI,IAAI,QAAQ,MAAM,GAAG,QAAQ;AAAA,EACxD;AAGA,QAAMA,QAAO,MAAM;AAAA,IACjB,IAAI,QAAQ,QAAQ,GAAG;AAAA,IACvB,IAAI,SAAS,KAAK,EAAE,SAAS,EAAE,gBAAgB,aAAa,EAAE,CAAC;AAAA,EACjE;AACF;AAjBe;AAyBf,eAAe,OAAO,SAAS;AAC7B,QAAMA,UAAS,MAAM,WAAW;AAEhC,QAAM,aAAa,MAAMA,QAAO,MAAM,MAAM,OAAO;AACnD,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,MAAM,MAAM,WAAW,KAAK;AAClC,SAAOA,QAAO,QAAQ,MAAM,OAAO,GAAG,CAAC;AACzC;AARe;AA0Bf,eAAe,YAAY,SAAS;AAElC,MAAI,UAAU,QAAQ;AACpB,QAAI;AACF,aAAO,MAAM,cAAc,OAAO;AAAA,IACpC,QAAQ;AAAA,IAAC;AAAA,EACX;AAEA,QAAM,SAAS,MAAM,OAAO,OAAO;AACnC,MAAI,OAAQ,QAAO;AAEnB,SAAO,IAAI,SAAS,MAAM;AAAA,IACxB,QAAQ;AAAA,IACR,YAAY;AAAA,EACd,CAAC;AACH;AAfe;AAoBf,eAAe,cAAc,SAAS;AACpC,QAAM,WAAW,MAAM,MAAM,OAAO;AAGpC,MAAI,SAAS,WAAW,IAAK,QAAO;AAGpC,QAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,KAAK;AAC5D,MAAI,mBAAmB,KAAK,WAAW,EAAG,QAAO;AAGjD,MAAI,SAAS,WAAW,OAAO,SAAS,SAAS,UAAU;AACzD,UAAM,SAAS,SAAS,MAAM,CAAC;AAAA,EACjC;AAEA,SAAO;AACT;AAhBe;","names":["caches"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse","file":"/service-worker-offline.js.map"}
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/animations.css
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/animations.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/animations.css.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/animations.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/base.css
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/styles/base.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/base.css.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/styles/base.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/diffuse/colors.css
··· 1 + ../../../bafybeiftdd7dlfoayxlckoz7nnnoun5ggr2p2biwnbnfn3zflg2drlkmca/styles/diffuse/colors.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/diffuse/colors.css.map
··· 1 + ../../../bafybeiftdd7dlfoayxlckoz7nnnoun5ggr2p2biwnbnfn3zflg2drlkmca/styles/diffuse/colors.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/diffuse/fonts.css
··· 1 + ../../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/styles/diffuse/fonts.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/diffuse/fonts.css.map
··· 1 + ../../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/styles/diffuse/fonts.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/diffuse/page.css
··· 1 + ../../../bafybeicokklzc7qrdyz7qaho5jskzgdhzi7o2ihwvbbalw6c5p75fsyfie/styles/diffuse/page.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/diffuse/page.css.map
··· 1 + ../../../bafybeicokklzc7qrdyz7qaho5jskzgdhzi7o2ihwvbbalw6c5p75fsyfie/styles/diffuse/page.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/font-faces.css
··· 1 + ../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/styles/font-faces.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/font-faces.css.map
··· 1 + ../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/styles/font-faces.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/loader.css
··· 1 + ../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/styles/loader.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/loader.css.map
··· 1 + ../../bafybeiairw5zug6xd6xosgopcoyu3ieg4kiiesvqeszsk2xvipvsoxasvy/styles/loader.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/reset.css
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/reset.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/reset.css.map
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/reset.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/variables.css
··· 1 + ../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/styles/variables.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/variables.css.map
··· 1 + ../../bafybeiezh4rgv7gk73o5dalfyilv5nfopezyvshtj5j7hrn23r4n27k7da/styles/variables.css.map
+166
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/wireframe/ui.css
··· 1 + body { 2 + background-color: var(--bg-color); 3 + color: var(--text-color); 4 + } 5 + 6 + .panel { 7 + border: 2px solid var(--form-color); 8 + border-radius: var(--radius-md); 9 + display: flex; 10 + flex-direction: column; 11 + gap: var(--space-sm); 12 + padding: var(--space-sm); 13 + } 14 + 15 + /** 16 + * Buttons 17 + */ 18 + 19 + button, 20 + .button { 21 + background: transparent; 22 + border: 2px solid var(--form-color); 23 + border-radius: var(--radius-md); 24 + color: currentColor; 25 + cursor: pointer; 26 + display: inline-block; 27 + font-size: var(--fs-xs); 28 + font-family: inherit; 29 + font-weight: 500; 30 + letter-spacing: var(--leading-relaxed); 31 + line-height: 1; 32 + padding: var(--space-xs) var(--space-sm); 33 + text-transform: uppercase; 34 + 35 + & * { 36 + pointer-events: none; 37 + } 38 + 39 + &[disabled] { 40 + cursor: not-allowed; 41 + opacity: 0.4; 42 + } 43 + 44 + &.button--accent { 45 + border-color: var(--accent); 46 + color: var(--accent); 47 + } 48 + 49 + &.button--active { 50 + background-color: var(--accent); 51 + border-color: var(--accent); 52 + color: var(--bg-color); 53 + } 54 + 55 + & > .with-icon { 56 + padding-top: 1px; 57 + } 58 + } 59 + 60 + a.button { 61 + text-decoration: none; 62 + } 63 + 64 + .button-row { 65 + display: inline-flex; 66 + gap: var(--space-2xs); 67 + } 68 + 69 + /** 70 + * Forms 71 + */ 72 + 73 + input, 74 + textarea { 75 + background: transparent; 76 + border: 2px solid var(--form-color); 77 + border-radius: var(--radius-md); 78 + color: inherit; 79 + font-size: var(--fs-sm); 80 + padding: var(--space-2xs); 81 + transition-duration: 250ms; 82 + transition-property: border-color; 83 + width: 100%; 84 + 85 + &:focus { 86 + border-color: var(--accent); 87 + outline: none; 88 + } 89 + } 90 + 91 + textarea { 92 + height: var(--container-xs); 93 + padding: var(--space-xs); 94 + resize: none; 95 + } 96 + 97 + select { 98 + appearance: none; 99 + background: transparent; 100 + border: 2px solid var(--form-color); 101 + border-radius: var(--radius-md); 102 + color: inherit; 103 + font-family: inherit; 104 + font-size: var(--fs-sm); 105 + padding: var(--space-2xs) var(--space-xs); 106 + transition-duration: 250ms; 107 + transition-property: border-color; 108 + 109 + &:focus { 110 + border-color: var(--accent); 111 + outline: none; 112 + } 113 + 114 + option, 115 + optgroup { 116 + color: black; 117 + } 118 + } 119 + 120 + /** 121 + * Misc 122 + */ 123 + 124 + .with-icon { 125 + align-items: center; 126 + display: inline-flex; 127 + gap: var(--space-2xs); 128 + } 129 + 130 + /** 131 + * Separators 132 + */ 133 + 134 + hr, 135 + .separator { 136 + border: 0; 137 + border-top: 2px solid var(--form-color); 138 + } 139 + 140 + .row { 141 + display: flex; 142 + flex-wrap: wrap; 143 + gap: var(--space-xs); 144 + } 145 + 146 + /** 147 + * Tables 148 + */ 149 + 150 + table { 151 + border-collapse: collapse; 152 + width: 100%; 153 + } 154 + 155 + th, 156 + td { 157 + border: 2px solid var(--form-color); 158 + padding: var(--space-2xs) var(--space-xs); 159 + text-align: left; 160 + } 161 + 162 + th { 163 + font-weight: 600; 164 + } 165 + 166 + /*# sourceMappingURL=./ui.css.map */
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/styles/wireframe/ui.css.map
··· 1 + {"version":3,"sources":["/src/styles/wireframe/ui.css"],"names":[],"mappings":"AAAA;EACE,iCAAiC;EACjC,wBAAwB;AAC1B;;AAEA;EACE,mCAAmC;EACnC,+BAA+B;EAC/B,aAAa;EACb,sBAAsB;EACtB,oBAAoB;EACpB,wBAAwB;AAC1B;;AAEA;;EAEE;;AAEF;;EAEE,uBAAuB;EACvB,mCAAmC;EACnC,+BAA+B;EAC/B,mBAAmB;EACnB,eAAe;EACf,qBAAqB;EACrB,uBAAuB;EACvB,oBAAoB;EACpB,gBAAgB;EAChB,sCAAsC;EACtC,cAAc;EACd,wCAAwC;EACxC,yBAAyB;;EAEzB;IACE,oBAAoB;EACtB;;EAEA;IACE,mBAAmB;IACnB,YAAY;EACd;;EAEA;IACE,2BAA2B;IAC3B,oBAAoB;EACtB;;EAEA;IACE,+BAA+B;IAC/B,2BAA2B;IAC3B,sBAAsB;EACxB;;EAEA;IACE,gBAAgB;EAClB;AACF;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,oBAAoB;EACpB,qBAAqB;AACvB;;AAEA;;EAEE;;AAEF;;EAEE,uBAAuB;EACvB,mCAAmC;EACnC,+BAA+B;EAC/B,cAAc;EACd,uBAAuB;EACvB,yBAAyB;EACzB,0BAA0B;EAC1B,iCAAiC;EACjC,WAAW;;EAEX;IACE,2BAA2B;IAC3B,aAAa;EACf;AACF;;AAEA;EACE,2BAA2B;EAC3B,wBAAwB;EACxB,YAAY;AACd;;AAEA;EACE,gBAAgB;EAChB,uBAAuB;EACvB,mCAAmC;EACnC,+BAA+B;EAC/B,cAAc;EACd,oBAAoB;EACpB,uBAAuB;EACvB,yCAAyC;EACzC,0BAA0B;EAC1B,iCAAiC;;EAEjC;IACE,2BAA2B;IAC3B,aAAa;EACf;;EAEA;;IAEE,YAAY;EACd;AACF;;AAEA;;EAEE;;AAEF;EACE,mBAAmB;EACnB,oBAAoB;EACpB,qBAAqB;AACvB;;AAEA;;EAEE;;AAEF;;EAEE,SAAS;EACT,uCAAuC;AACzC;;AAEA;EACE,aAAa;EACb,eAAe;EACf,oBAAoB;AACtB;;AAEA;;EAEE;;AAEF;EACE,yBAAyB;EACzB,WAAW;AACb;;AAEA;;EAEE,mCAAmC;EACnC,yCAAyC;EACzC,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;AAClB","file":"/styles/wireframe/ui.css.map","sourcesContent":["body {\n background-color: var(--bg-color);\n color: var(--text-color);\n}\n\n.panel {\n border: 2px solid var(--form-color);\n border-radius: var(--radius-md);\n display: flex;\n flex-direction: column;\n gap: var(--space-sm);\n padding: var(--space-sm);\n}\n\n/**\n * Buttons\n */\n\nbutton,\n.button {\n background: transparent;\n border: 2px solid var(--form-color);\n border-radius: var(--radius-md);\n color: currentColor;\n cursor: pointer;\n display: inline-block;\n font-size: var(--fs-xs);\n font-family: inherit;\n font-weight: 500;\n letter-spacing: var(--leading-relaxed);\n line-height: 1;\n padding: var(--space-xs) var(--space-sm);\n text-transform: uppercase;\n\n & * {\n pointer-events: none;\n }\n\n &[disabled] {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n &.button--accent {\n border-color: var(--accent);\n color: var(--accent);\n }\n\n &.button--active {\n background-color: var(--accent);\n border-color: var(--accent);\n color: var(--bg-color);\n }\n\n & > .with-icon {\n padding-top: 1px;\n }\n}\n\na.button {\n text-decoration: none;\n}\n\n.button-row {\n display: inline-flex;\n gap: var(--space-2xs);\n}\n\n/**\n * Forms\n */\n\ninput,\ntextarea {\n background: transparent;\n border: 2px solid var(--form-color);\n border-radius: var(--radius-md);\n color: inherit;\n font-size: var(--fs-sm);\n padding: var(--space-2xs);\n transition-duration: 250ms;\n transition-property: border-color;\n width: 100%;\n\n &:focus {\n border-color: var(--accent);\n outline: none;\n }\n}\n\ntextarea {\n height: var(--container-xs);\n padding: var(--space-xs);\n resize: none;\n}\n\nselect {\n appearance: none;\n background: transparent;\n border: 2px solid var(--form-color);\n border-radius: var(--radius-md);\n color: inherit;\n font-family: inherit;\n font-size: var(--fs-sm);\n padding: var(--space-2xs) var(--space-xs);\n transition-duration: 250ms;\n transition-property: border-color;\n\n &:focus {\n border-color: var(--accent);\n outline: none;\n }\n\n option,\n optgroup {\n color: black;\n }\n}\n\n/**\n * Misc\n */\n\n.with-icon {\n align-items: center;\n display: inline-flex;\n gap: var(--space-2xs);\n}\n\n/**\n * Separators\n */\n\nhr,\n.separator {\n border: 0;\n border-top: 2px solid var(--form-color);\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-xs);\n}\n\n/**\n * Tables\n */\n\ntable {\n border-collapse: collapse;\n width: 100%;\n}\n\nth,\ntd {\n border: 2px solid var(--form-color);\n padding: var(--space-2xs) var(--space-xs);\n text-align: left;\n}\n\nth {\n font-weight: 600;\n}\n"],"sourceRoot":"file:///var/home/toko/Code/tokono.ma/diffuse-artifacts/diffuse"}
+45
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/testing/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="styles/base.css" /> 27 + </head> 28 + <body> 29 + <script type="importmap"> 30 + { 31 + "imports": { 32 + "~/components/": "./components/", 33 + "@testing/": "./testing/" 34 + } 35 + } 36 + </script> 37 + 38 + 39 + <!-- Make every touched URL available offline --> 40 + <do-offline></do-offline> 41 + <script src="components/orchestrator/offline/element.js" type="module"></script> 42 + 43 + <!-- Scripts --> 44 + </body> 45 + </html>
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/testing/output.js
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/testing/output.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/testing/output.js.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/testing/output.js.map
+39
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/testing/output/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="styles/base.css" /> 27 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 28 + </head> 29 + <body> 30 + 31 + 32 + <!-- Make every touched URL available offline --> 33 + <do-offline></do-offline> 34 + <script src="components/orchestrator/offline/element.js" type="module"></script> 35 + 36 + <!-- Scripts --> 37 + <script src="testing/output.js" type="module"></script> 38 + </body> 39 + </html>
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/testing/sample/tracks.js
··· 1 + ../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/testing/sample/tracks.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/testing/sample/tracks.js.map
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/testing/sample/tracks.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/artwork-controller/element.css
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/blur/artwork-controller/element.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/artwork-controller/element.css.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/blur/artwork-controller/element.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/artwork-controller/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/blur/artwork-controller/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/artwork-controller/element.js.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/blur/artwork-controller/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/artwork-controller/facet.html
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/blur/artwork-controller/facet.html
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/index.css
··· 1 + ../../../bafybeihr4brahqptxmxcdksktdfgs4hyl64odwx524vqmmitjvmn57sklq/themes/blur/index.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/index.css.map
··· 1 + ../../../bafybeihr4brahqptxmxcdksktdfgs4hyl64odwx524vqmmitjvmn57sklq/themes/blur/index.css.map
+72
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="../../styles/base.css" /> 27 + <link rel="stylesheet" href="index.css" /> 28 + </head> 29 + <body> 30 + <!-- UI --> 31 + <main> 32 + </main> 33 + 34 + <!-- Engines --> 35 + <de-audio group="shared"></de-audio> 36 + <de-queue group="shared"></de-queue> 37 + 38 + <!-- Input & Processors --> 39 + <dp-metadata></dp-metadata> 40 + 41 + <di-opensubsonic id="input"></di-opensubsonic> 42 + 43 + <!-- Orchestrators --> 44 + <do-output id="output"></do-output> 45 + 46 + <do-process-tracks 47 + input-selector="#input" 48 + metadata-processor-selector="dp-metadata" 49 + output-selector="#output" 50 + ></do-process-tracks> 51 + 52 + <do-queue-audio 53 + input-selector="#input" 54 + audio-engine-selector="de-audio" 55 + queue-engine-selector="de-queue" 56 + ></do-queue-audio> 57 + 58 + <do-queue-tracks 59 + input-selector="#input" 60 + output-selector="#output" 61 + queue-engine-selector="de-queue" 62 + ></do-queue-tracks> 63 + 64 + 65 + <!-- Make every touched URL available offline --> 66 + <do-offline></do-offline> 67 + <script src="components/orchestrator/offline/element.js" type="module"></script> 68 + 69 + <!-- Scripts --> 70 + <script src="index.js" type="module"></script> 71 + </body> 72 + </html>
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/index.js
··· 1 + ../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/themes/blur/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/index.js.map
··· 1 + ../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/themes/blur/index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/variables.css
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/blur/variables.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/blur/variables.css.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/blur/variables.css.map
+159
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="styles/base.css" /> 27 + <link rel="stylesheet" href="styles/diffuse/page.css" /> 28 + <link rel="stylesheet" href="vendor/@phosphor-icons/bold/style.css" /> 29 + <link rel="stylesheet" href="vendor/@phosphor-icons/fill/style.css" /> 30 + </head> 31 + <body> 32 + <header> 33 + <div> 34 + <div> 35 + <a class="diffuse-logo" href="./" style="display: inline-block;"> 36 + <svg viewBox="0 0 902 134" width="160"> 37 + <title>Diffuse</title> 38 + <use 39 + xlink:href="images/diffuse-current.svg#diffuse" 40 + href="images/diffuse-current.svg#diffuse"></use> 41 + </svg> 42 + 43 + </a> 44 + </div> 45 + 46 + <p class="construct dither-mask" style="margin-top: 0"> 47 + Themes 48 + </p> 49 + 50 + <p> 51 + Themes are element compositions and provide a traditional browser web application way of 52 + using them. In other words, pretty much the whole thing, besides your data, lives inside a single browser tab. 53 + </p> 54 + 55 + <p> 56 + <small> 57 + <strong><i class="ph-fill ph-info"></i></strong> 58 + Each theme is unique, not just a skin; each one might have a totally different feature set. 59 + </small> 60 + </p> 61 + 62 + <ul class="table-of-contents"> 63 + <li><a href="themes/#built-in">Built-in</a></li> 64 + <li><a href="themes/#community">Community</a></li> 65 + <li><a href="themes/#collection">Your collection</a></li> 66 + <li><a href="themes/#build">Build</a></li> 67 + </ul> 68 + </div> 69 + <div class="dither-mask filler"></div> 70 + </header> 71 + <main> 72 + <!-- BUILT-IN --> 73 + <div class="columns"> 74 + <section class="flex"> 75 + <h2 id="built-in">Built-in</h2> 76 + 77 + <ul> 78 + <li> 79 + <span class="todo">[todo]</span> 80 + <span>Blur</span> 81 + <div class="list-description"><strong>A theme with an Apple-inspired playback view.</strong> Features two audio players instead of the usual one.</div> 82 + </li> 83 + <li> 84 + <a href="themes/webamp/">Webamp</a> 85 + <div class="list-description"><strong>Winamp 2 + Windows 98</strong>. Uses Webamp as the audio player connected to various Diffuse elements. Also features a desktop-like Windows 98 environment in which you can open &quot;programs&quot; that control the used Diffuse elements.</div> 86 + </li> 87 + </ul> 88 + 89 + </section> 90 + 91 + <section class="flex"> 92 + <h2 id="community">Community</h2> 93 + <p> 94 + Check out some themes from the community and load them here. 95 + </p> 96 + <p> 97 + <small><i class="ph-fill ph-info"></i> Nothing here yet, too early.</small> 98 + </p> 99 + </section> 100 + </div> 101 + 102 + <!-- YOUR COLLECTION --> 103 + <div class="columns"> 104 + <section class="flex"> 105 + <h2 id="collection">Your collection</h2> 106 + <div id="list"> 107 + <div class="with-icon" style="font-size: var(--fs-sm);"> 108 + <i class="ph-bold ph-spinner-gap"></i> 109 + Loading items 110 + </div> 111 + </div> 112 + </section> 113 + 114 + <section class="flex"></section> 115 + </div> 116 + 117 + <!-- / --> 118 + <div class="dither-mask filler" style="height: var(--space-2xl); margin-top: var(--space-2xl);"></div> 119 + 120 + <!-- BUILD --> 121 + <section> 122 + <h2 id="build">Build</h2> 123 + 124 + <form id="build-form" class="columns"> 125 + <div class="flex"> 126 + <p style="margin-top: 0"> 127 + If you know a bit of HTML & Javascript, you can write your own or plug in some code you found elsewhere: 128 + </p> 129 + 130 + <div id="html-input-container" class="code-editor monospace-font"> 131 + </div> 132 + </div> 133 + 134 + <div class="flex"> 135 + <p style="margin-top: 0"> 136 + Your code here will be loaded in a dedicated page, it'll be injected into a <code>&lt;iframe&gt;</code> element in the body. You have access to the elements listed on the <a href="./#elements">index page</a> and the facets <a href="facets/#foundation">foundation</a>. 137 + </p> 138 + <input id="name-input" type="text" placeholder="Name" name="name" required /> 139 + <p> 140 + <span class="button-row"> 141 + <button name="save">Save</button> 142 + <button name="save+open">Save &amp; Open</button> 143 + </span> 144 + </p> 145 + </div> 146 + </form> 147 + </section> 148 + 149 + </main> 150 + 151 + 152 + <!-- Make every touched URL available offline --> 153 + <do-offline></do-offline> 154 + <script src="components/orchestrator/offline/element.js" type="module"></script> 155 + 156 + <!-- Scripts --> 157 + <script src="themes/index.js" type="module"></script> 158 + </body> 159 + </html>
+310
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/index.js
··· 1 + import { 2 + EditorView, 3 + autocompletion, 4 + basicSetup, 5 + css, 6 + html, 7 + javascript 8 + } from "../chunk-OX3TSJ3X.js"; 9 + import { 10 + foundation_default 11 + } from "../chunk-FIX46GRA.js"; 12 + import "../chunk-VOFM65C2.js"; 13 + import "../chunk-HDE6FJCN.js"; 14 + import "../chunk-ZROTLYIH.js"; 15 + import "../chunk-2SPFBYRD.js"; 16 + import "../chunk-K4XAE7PE.js"; 17 + import "../chunk-XKXQMVTB.js"; 18 + import "../chunk-ABL7GBBM.js"; 19 + import "../chunk-TMIJ7SWF.js"; 20 + import "../chunk-QKKQKAE5.js"; 21 + import "../chunk-2HKIFQJO.js"; 22 + import "../chunk-IKAIRC6G.js"; 23 + import "../chunk-2PHQN23Z.js"; 24 + import "../chunk-ENDOZK4Q.js"; 25 + import "../chunk-FQ7GPRG2.js"; 26 + import "../chunk-TMGAIVLV.js"; 27 + import "../chunk-U4HLMEDD.js"; 28 + import "../chunk-Y4UF3TDF.js"; 29 + import "../chunk-HN4F5JEZ.js"; 30 + import "../chunk-X2U7TZQT.js"; 31 + import "../chunk-AGWC42GJ.js"; 32 + import "../chunk-TRIYIVJH.js"; 33 + import "../chunk-I3VKG3ZJ.js"; 34 + import "../chunk-D6OAWBEV.js"; 35 + import "../chunk-ZDMTYKI5.js"; 36 + import "../chunk-6DRHTH2U.js"; 37 + import "../chunk-JR4EW3HT.js"; 38 + import "../chunk-BDBXPVO6.js"; 39 + import "../chunk-JBHW662S.js"; 40 + import "../chunk-H7PU7XY7.js"; 41 + import "../chunk-VCRMPF2R.js"; 42 + import "../chunk-YBUNVPVS.js"; 43 + import { 44 + i 45 + } from "../chunk-OAG3HI6B.js"; 46 + import "../chunk-JDKXATSY.js"; 47 + import "../chunk-TS4JJWFE.js"; 48 + import "../chunk-3L563ZA4.js"; 49 + import "../chunk-VQR5VNUL.js"; 50 + import "../chunk-EEUCFWD4.js"; 51 + import "../chunk-IYNRCNPM.js"; 52 + import "../chunk-3USAPKOY.js"; 53 + import "../chunk-HMBZONBJ.js"; 54 + import "../chunk-7U5QHBAZ.js"; 55 + import { 56 + B, 57 + T 58 + } from "../chunk-2V4VRBHO.js"; 59 + import "../chunk-G56PUJUJ.js"; 60 + import { 61 + themeFromURI 62 + } from "../chunk-2BPPIBER.js"; 63 + import { 64 + loadURI 65 + } from "../chunk-JUFQHHNP.js"; 66 + import "../chunk-WN6GL63Q.js"; 67 + import "../chunk-CRZ7HJJ4.js"; 68 + import "../chunk-242LG3VP.js"; 69 + import { 70 + now 71 + } from "../chunk-BKRD2ZIW.js"; 72 + import "../chunk-SGR5ST3A.js"; 73 + import { 74 + create 75 + } from "../chunk-4YB6QUPN.js"; 76 + import "../chunk-6DKPDMFE.js"; 77 + import "../chunk-TP5GZFTO.js"; 78 + import "../chunk-ZQZJJU3T.js"; 79 + import { 80 + effect, 81 + signal 82 + } from "../chunk-HNJPKCUJ.js"; 83 + import { 84 + __name, 85 + init_Buffer, 86 + init_process 87 + } from "../chunk-FZQXS3RE.js"; 88 + 89 + // themes/index.js 90 + init_Buffer(); 91 + init_process(); 92 + document.body.addEventListener( 93 + "click", 94 + /** 95 + * @param {MouseEvent} event 96 + */ 97 + async (event) => { 98 + const target = ( 99 + /** @type {HTMLElement} */ 100 + event.target 101 + ); 102 + const rel = target.getAttribute("rel"); 103 + if (!rel) return; 104 + const uri = target.closest("li")?.getAttribute("data-uri"); 105 + if (!uri) return; 106 + const name = target.closest("li")?.getAttribute("data-name"); 107 + if (!name) return; 108 + switch (rel) { 109 + case "fork": { 110 + const theme = await themeFromURI({ name, uri }, { fetchHTML: true }); 111 + editTheme(theme); 112 + document.querySelector("#build")?.scrollIntoView(); 113 + break; 114 + } 115 + case "save": { 116 + const theme = await themeFromURI({ name, uri }, { fetchHTML: false }); 117 + const out = foundation_default.orchestrator.output(); 118 + out.themes.save([ 119 + ...out.themes.collection(), 120 + theme 121 + ]); 122 + break; 123 + } 124 + } 125 + } 126 + ); 127 + var listEl = document.querySelector("#list"); 128 + if (!listEl) throw new Error("List element not found"); 129 + listEl.innerHTML = ""; 130 + var output = foundation_default.orchestrator.output(); 131 + effect(() => { 132 + const col = output.themes.collection().sort((a, b) => { 133 + return a.name.toLocaleLowerCase().localeCompare(b.name.toLocaleLowerCase()); 134 + }); 135 + const state = output.themes.state(); 136 + const h = col.length && state === "loaded" ? T` 137 + <ul> 138 + ${col.map( 139 + (c) => i( 140 + c.id, 141 + T` 142 + <li> 143 + <div style="position: relative;"> 144 + <a href="themes/l/?id=${c.id}"> 145 + ${c.name} 146 + </a> 147 + <button 148 + class="button--fixed button--transparent" 149 + popovertarget="theme-menu-col-${c.id}" 150 + style="anchor-name: --theme-anchor-col-${c.id}; position: absolute; right: 0; top: 50%; transform: translateY(-50%);" 151 + > 152 + <i class="ph-fill ph-dots-three-circle"></i> 153 + </button> 154 + </div> 155 + <div class="list-description"> 156 + ${c.uri && !c.html ? T` 157 + <span class="with-icon"> 158 + <i class="ph-fill ph-binoculars"></i> 159 + <span>Tracking the original <a href="${c.uri}">URI</a></span> 160 + </span> 161 + ` : T` 162 + <span class="with-icon"> 163 + <i class="ph-fill ph-code"></i> 164 + <span>Custom code</span> 165 + </span> 166 + `} 167 + </div> 168 + 169 + <!-- Dropdown Menu --> 170 + <div 171 + id="theme-menu-col-${c.id}" 172 + class="dropdown" 173 + style="position-anchor: --theme-anchor-col-${c.id}" 174 + popover 175 + > 176 + <a href="themes/l/?id=${c.id}"> 177 + <span class="with-icon"> 178 + <i class="ph-fill ph-globe"></i> Open 179 + </span> 180 + </a> 181 + <a @click="${() => editTheme(c)}"> 182 + <span class="with-icon"> 183 + <i class="ph-fill ph-cursor-text"></i> Edit 184 + </span> 185 + </a> 186 + <a @click="${deleteTheme({ id: c.id })}"> 187 + <span class="with-icon"> 188 + <i class="ph-fill ph-eraser"></i> Delete 189 + </span> 190 + </a> 191 + </div> 192 + </li> 193 + ` 194 + ) 195 + )} 196 + </ul> 197 + ` : state === "loaded" ? emptyThemesList : T` 198 + <div class="with-icon" style="font-size: var(--fs-sm);"> 199 + <i class="ph-bold ph-spinner-gap"></i> 200 + Loading items 201 + </div> 202 + `; 203 + B(h, listEl); 204 + }); 205 + var emptyThemesList = T` 206 + <p style="margin-bottom: 0;"> 207 + <i class="ph-fill ph-info"></i> You have not saved any themes yet. 208 + </p> 209 + `; 210 + function deleteTheme({ id }) { 211 + return () => { 212 + const c = confirm("Are you sure you want to delete this theme?"); 213 + if (!c) return; 214 + output.themes.save( 215 + output.themes.collection().filter((c2) => !(c2.id === id)) 216 + ); 217 + }; 218 + } 219 + __name(deleteTheme, "deleteTheme"); 220 + var $editingTheme = signal( 221 + /** @type {Theme | null} */ 222 + null 223 + ); 224 + var editorContainer = document.body.querySelector("#html-input-container"); 225 + if (!editorContainer) throw new Error("Editor container not found"); 226 + var editor = new EditorView({ 227 + parent: editorContainer, 228 + doc: ``.trim(), 229 + extensions: [ 230 + basicSetup, 231 + html(), 232 + css(), 233 + javascript(), 234 + autocompletion() 235 + ] 236 + }); 237 + document.querySelector("#build-form")?.addEventListener( 238 + "submit", 239 + onBuildSubmit 240 + ); 241 + async function onBuildSubmit(event) { 242 + event.preventDefault(); 243 + const nameEl = ( 244 + /** @type {HTMLInputElement | null} */ 245 + document.querySelector( 246 + "#name-input" 247 + ) 248 + ); 249 + const html2 = editor.state.doc.toString(); 250 + const cid = await create(85, new TextEncoder().encode(html2)); 251 + const name = nameEl?.value ?? "nameless"; 252 + const theme = $editingTheme.value ? { 253 + ...$editingTheme.value, 254 + cid, 255 + html: html2, 256 + name 257 + } : { 258 + $type: "sh.diffuse.output.theme", 259 + id: now(), 260 + cid, 261 + html: html2, 262 + name 263 + }; 264 + switch ( 265 + /** @type {any} */ 266 + event.submitter.name 267 + ) { 268 + case "save": 269 + await saveTheme(theme); 270 + break; 271 + case "save+open": 272 + await saveTheme(theme); 273 + globalThis.open(`./themes/l/?id=${theme.id}`, "blank"); 274 + break; 275 + } 276 + } 277 + __name(onBuildSubmit, "onBuildSubmit"); 278 + async function editTheme(ogTheme) { 279 + const theme = { ...ogTheme }; 280 + const nameEl = ( 281 + /** @type {HTMLInputElement | null} */ 282 + document.querySelector( 283 + "#name-input" 284 + ) 285 + ); 286 + if (!nameEl) return; 287 + if (!theme.html && theme.uri) { 288 + const html2 = await loadURI(theme.uri); 289 + const cid = await create(85, new TextEncoder().encode(html2)); 290 + theme.html = html2; 291 + theme.cid = cid; 292 + } 293 + $editingTheme.value = theme; 294 + nameEl.value = theme.name; 295 + editor.dispatch({ 296 + changes: { from: 0, to: editor.state.doc.length, insert: theme.html } 297 + }); 298 + } 299 + __name(editTheme, "editTheme"); 300 + async function saveTheme(theme) { 301 + const col = output.themes.collection(); 302 + const colWithoutId = col.filter((c) => c.id !== theme.id); 303 + await output.themes.save([...colWithoutId, { 304 + ...theme, 305 + updatedAt: (/* @__PURE__ */ new Date()).toISOString() 306 + }]); 307 + } 308 + __name(saveTheme, "saveTheme"); 309 + 310 + //# sourceMappingURL=./index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/index.js.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/l/index.css
··· 1 + ../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/themes/l/index.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/l/index.css.map
··· 1 + ../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/themes/l/index.css.map
+60
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/l/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="vendor/@phosphor-icons/fill/style.css" /> 27 + <link rel="stylesheet" href="styles/base.css" /> 28 + <link rel="stylesheet" href="styles/loader.css" /> 29 + <link rel="stylesheet" href="themes/l/index.css" /> 30 + </head> 31 + <body> 32 + <div id="container"> 33 + <div class="diffuse"> 34 + <div id="diffuse-loader" class="flex"> 35 + <i class="ph-fill ph-music-notes animate-bounce"></i> 36 + </div> 37 + </div> 38 + </div> 39 + 40 + <script type="importmap"> 41 + { 42 + "imports": { 43 + "~/": "./", 44 + 45 + "@atcute/tid": "./vendor/@atcute/tid/index.js", 46 + "@awesome.me/webawesome/dist/": "./vendor/@awesome.me/webawesome/", 47 + "@awesome.me/webawesome/dist-cdn/": "./vendor/@awesome.me/webawesome/" 48 + } 49 + } 50 + </script> 51 + 52 + 53 + <!-- Make every touched URL available offline --> 54 + <do-offline></do-offline> 55 + <script src="components/orchestrator/offline/element.js" type="module"></script> 56 + 57 + <!-- Scripts --> 58 + <script src="themes/l/index.js" type="module"></script> 59 + </body> 60 + </html>
+84
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/l/index.js
··· 1 + import { 2 + foundation_default 3 + } from "../../chunk-FIX46GRA.js"; 4 + import "../../chunk-VOFM65C2.js"; 5 + import "../../chunk-HDE6FJCN.js"; 6 + import "../../chunk-ZROTLYIH.js"; 7 + import "../../chunk-2SPFBYRD.js"; 8 + import "../../chunk-K4XAE7PE.js"; 9 + import "../../chunk-XKXQMVTB.js"; 10 + import "../../chunk-ABL7GBBM.js"; 11 + import "../../chunk-TMIJ7SWF.js"; 12 + import "../../chunk-QKKQKAE5.js"; 13 + import "../../chunk-2HKIFQJO.js"; 14 + import "../../chunk-IKAIRC6G.js"; 15 + import "../../chunk-2PHQN23Z.js"; 16 + import "../../chunk-ENDOZK4Q.js"; 17 + import "../../chunk-FQ7GPRG2.js"; 18 + import "../../chunk-TMGAIVLV.js"; 19 + import "../../chunk-U4HLMEDD.js"; 20 + import "../../chunk-Y4UF3TDF.js"; 21 + import "../../chunk-HN4F5JEZ.js"; 22 + import "../../chunk-X2U7TZQT.js"; 23 + import "../../chunk-AGWC42GJ.js"; 24 + import "../../chunk-TRIYIVJH.js"; 25 + import "../../chunk-I3VKG3ZJ.js"; 26 + import "../../chunk-D6OAWBEV.js"; 27 + import "../../chunk-ZDMTYKI5.js"; 28 + import "../../chunk-6DRHTH2U.js"; 29 + import "../../chunk-JR4EW3HT.js"; 30 + import "../../chunk-BDBXPVO6.js"; 31 + import "../../chunk-JBHW662S.js"; 32 + import "../../chunk-H7PU7XY7.js"; 33 + import "../../chunk-VCRMPF2R.js"; 34 + import "../../chunk-YBUNVPVS.js"; 35 + import "../../chunk-OAG3HI6B.js"; 36 + import "../../chunk-JDKXATSY.js"; 37 + import "../../chunk-TS4JJWFE.js"; 38 + import "../../chunk-3L563ZA4.js"; 39 + import "../../chunk-VQR5VNUL.js"; 40 + import "../../chunk-EEUCFWD4.js"; 41 + import "../../chunk-IYNRCNPM.js"; 42 + import "../../chunk-3USAPKOY.js"; 43 + import "../../chunk-HMBZONBJ.js"; 44 + import "../../chunk-7U5QHBAZ.js"; 45 + import "../../chunk-2V4VRBHO.js"; 46 + import "../../chunk-G56PUJUJ.js"; 47 + import { 48 + createLoader 49 + } from "../../chunk-JUFQHHNP.js"; 50 + import "../../chunk-WN6GL63Q.js"; 51 + import "../../chunk-CRZ7HJJ4.js"; 52 + import "../../chunk-242LG3VP.js"; 53 + import "../../chunk-BKRD2ZIW.js"; 54 + import "../../chunk-SGR5ST3A.js"; 55 + import "../../chunk-4YB6QUPN.js"; 56 + import "../../chunk-6DKPDMFE.js"; 57 + import "../../chunk-TP5GZFTO.js"; 58 + import "../../chunk-ZQZJJU3T.js"; 59 + import "../../chunk-HNJPKCUJ.js"; 60 + import { 61 + __name, 62 + init_Buffer, 63 + init_process 64 + } from "../../chunk-FZQXS3RE.js"; 65 + 66 + // themes/l/index.js 67 + init_Buffer(); 68 + init_process(); 69 + createLoader({ 70 + $type: "sh.diffuse.output.theme", 71 + label: "Theme", 72 + source: /* @__PURE__ */ __name(() => { 73 + const output = foundation_default.orchestrator.output(); 74 + return output.themes; 75 + }, "source"), 76 + render(theme) { 77 + const iframe = document.createElement("iframe"); 78 + iframe.srcdoc = theme.html ?? ""; 79 + document.body.innerHTML = ""; 80 + document.body.append(iframe); 81 + } 82 + }); 83 + 84 + //# sourceMappingURL=./index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/l/index.js.map
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/l/index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/98-extra.css
··· 1 + ../../../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/themes/webamp/98-extra.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/98-extra.css.map
··· 1 + ../../../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/themes/webamp/98-extra.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/98-vars.css
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/98-vars.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/98-vars.css.map
··· 1 + ../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/98-vars.css.map
+22
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/browser/element.js
··· 1 + import { 2 + CLASS, 3 + NAME, 4 + element_default 5 + } from "../../../chunk-ZOIYKCCT.js"; 6 + import "../../../chunk-IYNRCNPM.js"; 7 + import "../../../chunk-3USAPKOY.js"; 8 + import "../../../chunk-HMBZONBJ.js"; 9 + import "../../../chunk-2V4VRBHO.js"; 10 + import "../../../chunk-G56PUJUJ.js"; 11 + import "../../../chunk-6DKPDMFE.js"; 12 + import "../../../chunk-TP5GZFTO.js"; 13 + import "../../../chunk-ZQZJJU3T.js"; 14 + import "../../../chunk-HNJPKCUJ.js"; 15 + import "../../../chunk-FZQXS3RE.js"; 16 + export { 17 + CLASS, 18 + NAME, 19 + element_default as default 20 + }; 21 + 22 + //# sourceMappingURL=./element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/browser/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/browser/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/browser/facet.html
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/browser/facet.html
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/common/ui.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/common/ui.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/common/ui.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/common/ui.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/configurators/input/element.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/configurators/input/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/configurators/input/element.js.map
··· 1 + ../../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/configurators/input/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/configurators/input/facet.html
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/configurators/input/facet.html
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/configurators/output/element.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/configurators/output/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/configurators/output/element.js.map
··· 1 + ../../../../../bafybeidalhvzpez6rklon4cuqrh44f47s6iw34tgqzocr5c3mdhxbkwtsu/themes/webamp/configurators/output/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/configurators/output/facet.html
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/configurators/output/facet.html
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/facet.css
··· 1 + ../../../bafybeibuoq45hezn7mr3y6f4xuwibelfe5wregg2fwu7laxs4uxot4alrq/themes/webamp/facet.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/facet.css.map
··· 1 + ../../../bafybeibuoq45hezn7mr3y6f4xuwibelfe5wregg2fwu7laxs4uxot4alrq/themes/webamp/facet.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/fonts.css
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/fonts.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/fonts.css.map
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/fonts.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/index.css
··· 1 + ../../../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/themes/webamp/index.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/index.css.map
··· 1 + ../../../bafybeify7k4tyvqdlraa7y7zga5wrnzetljpvtvgy2fkwui4wz4beq4fzy/themes/webamp/index.css.map
+223
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/index.html
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + 5 + <meta name="color-scheme" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 + 8 + <meta name="media-controllable" /> 9 + <meta name="mobile-web-app-capable" content="yes" /> 10 + 11 + <title>Diffuse</title> 12 + 13 + <!-- Base --> 14 + <base href="../../" /> 15 + 16 + <!-- Favicons & Mobile --> 17 + <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> 18 + <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> 19 + <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" /> 20 + <!-- TODO: <link rel="manifest" href="site.webmanifest" />--> 21 + <link rel="mask-icon" href="safari-pinned-tab.svg" color="#8a90a9" /> 22 + <meta name="msapplication-TileColor" content="#8a90a9" /> 23 + <meta name="theme-color" content="#8a90a9" /> 24 + 25 + <!-- Styles --> 26 + <link rel="stylesheet" href="themes/webamp/fonts.css" /> 27 + <link rel="stylesheet" href="themes/webamp/index.css" /> 28 + </head> 29 + <body> 30 + <!-- 31 + 32 + ################################### 33 + # UI 34 + ################################### 35 + 36 + --> 37 + <main> 38 + <!-- 🪟 --> 39 + <section class="windows"> 40 + <style> 41 + dtw-window-manager > * { 42 + left: 12px; 43 + position: absolute; 44 + top: 12px; 45 + z-index: 999; 46 + 47 + /* Waiting on https://developer.mozilla.org/en-US/docs/Web/CSS/sibling-index#browser_compatibility */ 48 + &:nth-child(1) { 49 + left: 24px; 50 + top: 24px; 51 + } 52 + 53 + &:nth-child(2) { 54 + left: 36px; 55 + top: 36px; 56 + } 57 + 58 + &:nth-child(3) { 59 + left: 48px; 60 + top: 48px; 61 + } 62 + 63 + &:nth-child(4) { 64 + left: 60px; 65 + top: 60px; 66 + } 67 + 68 + &:nth-child(5) { 69 + left: 72px; 70 + top: 72px; 71 + } 72 + 73 + &:nth-child(6) { 74 + left: 84px; 75 + top: 84px; 76 + } 77 + 78 + &:nth-child(7) { 79 + left: 96px; 80 + top: 96px; 81 + } 82 + 83 + &:nth-child(8) { 84 + left: 108px; 85 + top: 108px; 86 + } 87 + 88 + &:nth-child(9) { 89 + left: 120px; 90 + top: 120px; 91 + } 92 + } 93 + </style> 94 + 95 + <dtw-window-manager> 96 + <!-- INPUT --> 97 + <dtw-window id="input-window"> 98 + <span slot="title-icon"><img src="images/icons/windows_98/cd_audio_cd_a-0.png" height="14" /></span> 99 + <span slot="title">Manage audio inputs</span> 100 + 101 + <dtw-input-config 102 + input-selector="#input" 103 + output-selector="#output" 104 + sources-orchestrator-selector="do-sources" 105 + process-tracks-orchestrator-selector="do-process-tracks" 106 + ></dtw-input-config> 107 + </dtw-window> 108 + 109 + <!-- OUTPUT --> 110 + <dtw-window id="output-window"> 111 + <span slot="title-icon"><img src="images/icons/windows_98/computer_user_pencil-0.png" height="14" /></span> 112 + <span slot="title">Manage user data</span> 113 + 114 + <dtw-output-config 115 + output-selector="#output" 116 + ></dtw-output-config> 117 + </dtw-window> 118 + 119 + <!-- BROWSER --> 120 + <dtw-window id="browser-window" window-style="height: 380px; width: 560px;"> 121 + <span slot="title-icon"><img src="images/icons/windows_98/directory_explorer-4.png" height="14" /></span> 122 + <span slot="title">Browse collection</span> 123 + 124 + <dtw-browser 125 + output-selector="#output" 126 + queue-engine-selector="de-queue" 127 + scope-engine-selector="de-scope" 128 + tracks-selector="do-scoped-tracks" 129 + ></dtw-browser> 130 + </dtw-window> 131 + </dtw-window-manager> 132 + </section> 133 + 134 + <!-- 🛋️ --> 135 + <section class="desktop"> 136 + <!-- WINAMP --> 137 + <a class="button desktop__item" id="desktop-winamp"> 138 + <img src="images/icons/windows_98/winamp2-32x32.png" height="32" /> 139 + <label>Winamp</label> 140 + </a> 141 + 142 + <!-- INPUT --> 143 + <a class="button desktop__item"> 144 + <img src="images/icons/windows_98/cd_audio_cd_a-4.png" height="32" /> 145 + <label for="input-window">Manage audio inputs</label> 146 + </a> 147 + 148 + <!-- OUTPUT --> 149 + <a class="button desktop__item"> 150 + <img src="images/icons/windows_98/computer_user_pencil-0.png" height="32" /> 151 + <label for="output-window">Manage user data</label> 152 + </a> 153 + 154 + <!-- BROWSE --> 155 + <a class="button desktop__item"> 156 + <img src="images/icons/windows_98/directory_explorer-5.png" height="32" /> 157 + <label for="browser-window">Browse collection</label> 158 + </a> 159 + 160 + <!-- INSERT --> 161 + <a class="button desktop__item" id="desktop-batch"> 162 + <img src="images/icons/windows_98/multimedia-4.png" height="32" /> 163 + <label>Add shuffled batch</label> 164 + </a> 165 + </section> 166 + 167 + <!-- ⚡️ --> 168 + <dtw-webamp></dtw-webamp> 169 + </main> 170 + 171 + <!-- 172 + 173 + ################################### 174 + # COMPONENTS 175 + ################################### 176 + 177 + --> 178 + <de-queue></de-queue> 179 + <de-scope></de-scope> 180 + 181 + <!-- Processors --> 182 + <dp-metadata></dp-metadata> 183 + <dp-search></dp-search> 184 + 185 + <!-- Orchestrators --> 186 + <do-input id="input"></do-input> 187 + <do-output id="output"></do-output> 188 + 189 + <do-process-tracks 190 + input-selector="#input" 191 + metadata-processor-selector="dp-metadata" 192 + output-selector="#output" 193 + 194 + process-when-ready 195 + ></do-process-tracks> 196 + 197 + <do-scoped-tracks 198 + input-selector="#input" 199 + output-selector="#output" 200 + scope-engine-selector="de-scope" 201 + search-processor-selector="dp-search" 202 + ></do-scoped-tracks> 203 + 204 + <do-sources 205 + input-selector="#input" 206 + output-selector="#output" 207 + ></do-sources> 208 + 209 + <!-- 210 + 211 + SCRIPTS 212 + 213 + --> 214 + <script src="themes/webamp/index.js" type="module"></script> 215 + 216 + 217 + <!-- Make every touched URL available offline --> 218 + <do-offline></do-offline> 219 + <script src="components/orchestrator/offline/element.js" type="module"></script> 220 + 221 + <!-- Scripts --> 222 + </body> 223 + </html>
+194
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/index.js
··· 1 + import "../../chunk-K2DJHH2G.js"; 2 + import { 3 + element_default 4 + } from "../../chunk-3EVAK2AC.js"; 5 + import { 6 + element_default as element_default2 7 + } from "../../chunk-P5RAXXEE.js"; 8 + import "../../chunk-N4BF7EWP.js"; 9 + import "../../chunk-ZOIYKCCT.js"; 10 + import "../../chunk-W3PYKUKS.js"; 11 + import "../../chunk-K7SSDEZF.js"; 12 + import "../../chunk-IZ2NFQMF.js"; 13 + import "../../chunk-6WKBRQHS.js"; 14 + import "../../chunk-TCJ7NSHN.js"; 15 + import "../../chunk-HWZ43NE5.js"; 16 + import "../../chunk-4QN6X76O.js"; 17 + import "../../chunk-77ZY4GQV.js"; 18 + import "../../chunk-NZ7ODGIJ.js"; 19 + import "../../chunk-MTW3CCFK.js"; 20 + import "../../chunk-VOFM65C2.js"; 21 + import { 22 + element_exports as element_exports3 23 + } from "../../chunk-HDE6FJCN.js"; 24 + import { 25 + element_exports as element_exports4 26 + } from "../../chunk-2SPFBYRD.js"; 27 + import "../../chunk-TMIJ7SWF.js"; 28 + import "../../chunk-QKKQKAE5.js"; 29 + import "../../chunk-2HKIFQJO.js"; 30 + import "../../chunk-IKAIRC6G.js"; 31 + import "../../chunk-2PHQN23Z.js"; 32 + import "../../chunk-ENDOZK4Q.js"; 33 + import "../../chunk-TMGAIVLV.js"; 34 + import "../../chunk-Y4UF3TDF.js"; 35 + import "../../chunk-HN4F5JEZ.js"; 36 + import "../../chunk-X2U7TZQT.js"; 37 + import "../../chunk-AGWC42GJ.js"; 38 + import "../../chunk-TRIYIVJH.js"; 39 + import "../../chunk-I3VKG3ZJ.js"; 40 + import "../../chunk-D6OAWBEV.js"; 41 + import "../../chunk-ZDMTYKI5.js"; 42 + import "../../chunk-6DRHTH2U.js"; 43 + import "../../chunk-JR4EW3HT.js"; 44 + import "../../chunk-BDBXPVO6.js"; 45 + import "../../chunk-JBHW662S.js"; 46 + import "../../chunk-H7PU7XY7.js"; 47 + import "../../chunk-VCRMPF2R.js"; 48 + import "../../chunk-YBUNVPVS.js"; 49 + import { 50 + element_exports 51 + } from "../../chunk-TS4JJWFE.js"; 52 + import "../../chunk-VQR5VNUL.js"; 53 + import "../../chunk-EEUCFWD4.js"; 54 + import "../../chunk-IYNRCNPM.js"; 55 + import "../../chunk-3USAPKOY.js"; 56 + import "../../chunk-HMBZONBJ.js"; 57 + import { 58 + element_exports as element_exports2 59 + } from "../../chunk-7U5QHBAZ.js"; 60 + import { 61 + component 62 + } from "../../chunk-2V4VRBHO.js"; 63 + import "../../chunk-G56PUJUJ.js"; 64 + import "../../chunk-WN6GL63Q.js"; 65 + import "../../chunk-CRZ7HJJ4.js"; 66 + import "../../chunk-242LG3VP.js"; 67 + import "../../chunk-BKRD2ZIW.js"; 68 + import "../../chunk-SGR5ST3A.js"; 69 + import "../../chunk-6DKPDMFE.js"; 70 + import "../../chunk-TP5GZFTO.js"; 71 + import "../../chunk-ZQZJJU3T.js"; 72 + import "../../chunk-JZMTETBD.js"; 73 + import "../../chunk-H3WG7GN4.js"; 74 + import { 75 + effect, 76 + untracked 77 + } from "../../chunk-HNJPKCUJ.js"; 78 + import { 79 + __name, 80 + init_Buffer, 81 + init_process 82 + } from "../../chunk-FZQXS3RE.js"; 83 + 84 + // themes/webamp/index.js 85 + init_Buffer(); 86 + init_process(); 87 + var input = component(element_exports2); 88 + var queue = component(element_exports); 89 + var search = component(element_exports3); 90 + var scopedTracks = component(element_exports4); 91 + var output = document.querySelector("#output"); 92 + if (!output) throw new Error("Missing output element"); 93 + globalThis.queue = queue; 94 + globalThis.output = output; 95 + var index = {}; 96 + var initiatedPlaylist = false; 97 + var ampElement = document.querySelector("dtw-webamp"); 98 + if (ampElement instanceof element_default === false) { 99 + throw new Error("Missing webamp element"); 100 + } 101 + var amp = ampElement.amp; 102 + var loadFromUrl = amp.media.loadFromUrl.bind(amp.media); 103 + async function loadOverride(uri, autoPlay) { 104 + if (uri.startsWith("blob:")) { 105 + return await loadFromUrl(uri, autoPlay); 106 + } 107 + const resp = await input.resolve({ method: "GET", uri }); 108 + if (!resp) throw new Error("Failed to resolve URI"); 109 + if (resp && "stream" in resp) { 110 + throw new Error("Webamp does not support playing streams."); 111 + } 112 + return await loadFromUrl(resp.url, autoPlay); 113 + } 114 + __name(loadOverride, "loadOverride"); 115 + amp.media.loadFromUrl = loadOverride.bind(amp.media); 116 + effect(() => { 117 + const past = untracked(() => queue.past()); 118 + const now = untracked(() => queue.now()); 119 + const future = queue.future(); 120 + const list = [...past, ...now ? [now] : [], ...future]; 121 + const newIdx = {}; 122 + list.forEach((item) => { 123 + newIdx[item.id] = (newIdx[item.id] ?? 0) + 1; 124 + }); 125 + const tracksToAdd = []; 126 + Object.entries(newIdx).forEach(([id, n]) => { 127 + const x = index[id] ?? 0; 128 + if (n > x) { 129 + const track = output.tracks.collection().find((t) => t.id === id); 130 + if (track) tracksToAdd.push(track); 131 + index[id] = x + 1; 132 + } 133 + }); 134 + tracksToAdd.forEach((t) => ampElement.addTrack(t)); 135 + if (!initiatedPlaylist && tracksToAdd.length) { 136 + initiatedPlaylist = true; 137 + amp.store.dispatch({ type: "BUFFER_TRACK", id: 0 }); 138 + } 139 + }); 140 + effect(() => { 141 + const tracks = scopedTracks.tracks(); 142 + queue.supply({ trackIds: tracks.map((t) => t.id) }); 143 + }); 144 + var tracksPromise = Promise.withResolvers(); 145 + effect(() => { 146 + const state = output.tracks.state(); 147 + if (state !== "loaded") return; 148 + const fingerprintSearch = search.supplyFingerprint(); 149 + if (fingerprintSearch === void 0) return; 150 + const fingerprintQueue = queue.supplyFingerprint(); 151 + if (fingerprintQueue === void 0) return; 152 + tracksPromise.resolve("loaded"); 153 + }); 154 + document.body.querySelectorAll(".desktop__item").forEach((element) => { 155 + if (element instanceof HTMLElement) { 156 + element.addEventListener("dblclick", () => { 157 + const f = element.querySelector("label")?.getAttribute("for"); 158 + if (f) return windowManager()?.toggleWindow(f); 159 + }); 160 + } 161 + }); 162 + document.body.querySelector("#desktop-batch")?.addEventListener( 163 + "dblclick", 164 + () => { 165 + tracksPromise.promise.then(() => { 166 + addBatch(); 167 + }); 168 + } 169 + ); 170 + var winampIsShown = true; 171 + document.body.querySelector("#desktop-winamp")?.addEventListener( 172 + "dblclick", 173 + () => { 174 + if (winampIsShown) { 175 + amp.close(); 176 + } else { 177 + amp.reopen(); 178 + winampIsShown = true; 179 + } 180 + } 181 + ); 182 + amp.onClose(() => winampIsShown = false); 183 + async function addBatch() { 184 + await queue.fill({ augment: true, amount: 50, shuffled: true }); 185 + } 186 + __name(addBatch, "addBatch"); 187 + function windowManager() { 188 + const w = document.body.querySelector("dtw-window-manager"); 189 + if (w instanceof element_default2) return w; 190 + return null; 191 + } 192 + __name(windowManager, "windowManager"); 193 + 194 + //# sourceMappingURL=./index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/index.js.map
··· 1 + ../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/webamp/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/webamp/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/webamp/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/webamp/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/window-manager/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/window-manager/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/window-manager/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/window-manager/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/window/element.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/themes/webamp/window/element.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/themes/webamp/window/element.js.map
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/themes/webamp/window/element.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/98.css
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/98.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/98.css.map
··· 1 + ../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/98.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@atcute/tid/index.js
··· 1 + ../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/vendor/@atcute/tid/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@atcute/tid/index.js.map
··· 1 + ../../../../bafybeiccyxrk34dahmyu7ub2ex2bdlcnofekso7iosiroyrhjakww64cae/vendor/@atcute/tid/index.js.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.25NQ7Q57.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.25NQ7Q57.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.26QE47KB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2BBCZ7GN.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2BBCZ7GN.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2BXLTQVW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2HSHEUB6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2HSHEUB6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2JWRV665.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2JWRV665.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2KZDHIGH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2KZDHIGH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2LCUCOAP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2LCUCOAP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2LXKNNNE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2NUK34XG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2NUK34XG.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2PWIIYRH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2PWIIYRH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.2UDUPMFW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.346V4PTX.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.3H5OWQDF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3H5OWQDF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.3MDVKIIQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3MDVKIIQ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3MSWQ3RG.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3NKIHICW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3V4ARLUJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.3XPJKXEA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.4VUDAETG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.4VUDAETG.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.4VXUYGRW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.4ZAKP7NY.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.5AVTITY5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.5FSQSRSR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.5FSQSRSR.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.5NRKMWLO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.5NRKMWLO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.62KZ4YOB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.62KZ4YOB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.66QW7PWS.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.66QW7PWS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6SNQOYNK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.6UQY2C27.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6UQY2C27.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.6VEKZVAI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6VEKZVAI.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.6WFYAIVE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.72AZ7SCK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.72AZ7SCK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.72YUFMAC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.72YUFMAC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.7OBLIRXR.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.A2G3SYVO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.A2G3SYVO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.A44A3672.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.A44A3672.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AG44H7MD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.AIIMJL75.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AIIMJL75.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AJDO4JA4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.AKICZTGN.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AKICZTGN.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.AKOWF4ZD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AKOWF4ZD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.AOX3RYAQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AOX3RYAQ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ARBKHQNT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ARBKHQNT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.AUTN6TWE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.AUTN6TWE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.B32RACHV.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.B32RACHV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BAAZIHFA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BAAZIHFA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BJHGYDMM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BJHGYDMM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BKE5EYM3.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BLRTWXO3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BLRTWXO3.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BMO76VKZ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BQNDCXAL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BSKJS5U5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BSKJS5U5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BTYSXFJ5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BTYSXFJ5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BUNKSODU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BUNKSODU.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BWMOC6SD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BWMOC6SD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.BY7IUJEG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.BY7IUJEG.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.C3ZJVF3S.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.C3ZJVF3S.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.CAMEY652.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CAMEY652.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.CDXMMGZY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CDXMMGZY.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.CG4KLMJQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CG4KLMJQ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CNH6RYYS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.CW5DDRTW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CW5DDRTW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.CWYYWAAA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.CWYYWAAA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.D4V77JPH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.D4V77JPH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DBPHFSMB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DBPHFSMB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DCHBDRUH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DCHBDRUH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DNBJR3U4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DOFHHKB4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DONAJOQD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DONAJOQD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DP5YIFD7.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DURXDL7O.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DURXDL7O.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DV2WJL5A.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DV2WJL5A.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DYC2JLVH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DYC2JLVH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.DZ47ZCIS.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.DZ47ZCIS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.EAVEURZ5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.EAVEURZ5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ECLIN2M6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ECLIN2M6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.EF25YJJE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.EQJ4PNT4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.EQJ4PNT4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ETV3C26B.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ETV3C26B.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.F25QOBDY.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.F5JLNOSF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.F5JLNOSF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.FD7L7V65.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.FD7L7V65.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.FDYDBGOC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.FYKN76UA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.GG7W42ID.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GG7W42ID.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.GIRDX7RB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GIRDX7RB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GRV2ULZ4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.GUXG4CKE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GUXG4CKE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.GVILWJFT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GVILWJFT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.GXPDMFEM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.GXPDMFEM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H23DVATU.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.H47ZJTCF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H47ZJTCF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.H7CTQZNN.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H7CTQZNN.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.H7TA73OO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.HM2RWPZU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HM2RWPZU.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.HNVTUW2Z.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HNVTUW2Z.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPOJN4W7.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.HPULLNVR.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.I3SFSSFT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.I3SFSSFT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.I4KXAHPX.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.IFKYGXYM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IFKYGXYM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IIHGIRPB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.IOFCXB3R.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IOFCXB3R.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.IPCT7SLS.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IPCT7SLS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.IVRNYRHD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IVRNYRHD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.IYXV6LE3.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.JC4JBNX3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.JC4JBNX3.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.JRPGUCID.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.JTOY5KP3.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.K3MD3SUU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.K3MD3SUU.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.K6QMUIHP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.K6QMUIHP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.K75R3VRS.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.K75R3VRS.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.K7SJ7WUU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.K7SJ7WUU.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KA6GRMME.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KA6GRMME.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KESSODMC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KFLR46FT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KFLR46FT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KGL7NGDT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KGL7NGDT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KPDUEXEV.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KPDUEXEV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KPN3YZ6U.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KPY3CJ6V.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KWDPKKFO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KWHEQ3K5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KWHEQ3K5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KYWX63OI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KYWX63OI.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KZDMLIJ2.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KZDMLIJ2.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KZZR6Z6I.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.L5Q33PCB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.L5Q33PCB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.L7RSOZRF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.L7RSOZRF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LCFSCRUJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LH72HXK6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.LNNYA4UM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LNNYA4UM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LRYJ2M5H.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.LSVOIGSE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LSVOIGSE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.LUTWAHOL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LUTWAHOL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.LXRVZKE2.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.LXRVZKE2.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.M6X44AZB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.M6X44AZB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MAHGF7JK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MCI7HEDP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MCI7HEDP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ME4EMJ3I.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ME4EMJ3I.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MELUIIBM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MELUIIBM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MEYJNQF4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MK6TNU4C.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MK6TNU4C.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MN256RSG.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MP7RQ7QA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MP7RQ7QA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MQLU5KE6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MQODJ75V.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MXHGJIUP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MXSQDH24.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MXSQDH24.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.MYPDM7WA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.MYPDM7WA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.N2TXQSKF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.N44OYDII.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.N44OYDII.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.NAWUPCZT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.NAWUPCZT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.NI4E5AMR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.NI4E5AMR.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.NY2PQ35L.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.O6IZ4I7T.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.O6YZRY24.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.O6ZS2FIL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.O6ZS2FIL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.OH2UNY4J.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OH2UNY4J.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.OH4OM7UU.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OH4OM7UU.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.OJH6FSGP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OJH6FSGP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.OKESVKII.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OKESVKII.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.OPBEAHZI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OPBEAHZI.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.OWXHWWWF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OWXHWWWF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.OWZCZ3EB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.OWZCZ3EB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.PAJE4RE4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PAJE4RE4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.PF3AC2NQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PF3AC2NQ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.PFTNDM65.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PFTNDM65.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PX3HMKF7.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.PY7HTVLK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PY7HTVLK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.PYD5CSTK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PYD5CSTK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.PZAN6FPN.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.Q3YWBEHA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Q3YWBEHA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.Q5HZI5OW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Q5HZI5OW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Q6XMGFWJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.QBOVPQEC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.QBOVPQEC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.QI43M6UM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.QI43M6UM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.QRWQT2VJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.QT4ZYZGO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.QT4ZYZGO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.R5SOBZIE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.R5SOBZIE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.R5YSLWK6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.R5YSLWK6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.R7QX4M6R.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.RJGC6DJA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.RJGC6DJA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.RMZ7BVDM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.RRT67VDB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.RRT67VDB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.S5VJ3TFP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.S5VJ3TFP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.S654RC7X.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.S654RC7X.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SDDRXMOC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.SHT3MQ5Q.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SHT3MQ5Q.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SKLR37OM.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.SP3X4OEE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SP3X4OEE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.SUZGY3IK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.T2SCNAGE.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.T2SCNAGE.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.T3OVPJUT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.TEHF5VRQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.TEHF5VRQ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.TYX6NY5I.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.TYX6NY5I.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.U36KZLSQ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UF4WDITO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UGUGWXGF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.URPN46Y6.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.URPN46Y6.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UVLZVEH2.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.UXT4AOIC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UXT4AOIC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UYB2BRKW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.UYSP6LYB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.UYSP6LYB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.V7RA7XDI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.V7RA7XDI.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VBZJJHXB.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VBZJJHXB.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VC3BPUZJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VDAAVLZ2.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VDAAVLZ2.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VF4ZOXJC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VF4ZOXJC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VGNJ5XDR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VGNJ5XDR.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VMTD7ON5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VMTD7ON5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.VQZ46MYI.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.VWU24OZA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.KBS6YHTA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.W5OKWIPP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.W5OKWIPP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WAPTDIMR.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WC6WDUJZ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WC6WDUJZ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WDIIGUNP.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WEV24KRT.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WEV24KRT.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WFLFJMX4.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WFLFJMX4.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WGFDW2LC.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WKAU3BGK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WKAU3BGK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.WYNTFJHW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.X55YNZ3B.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.XU6OCJGL.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XU6OCJGL.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XW6BKGGI.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XW6K5DFW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.XZPLJ4VW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.Y65RXSFF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Y65RXSFF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YBFCQDTA.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YCJIAMBW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YCJIAMBW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YDQCS2HK.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YJN7BRJ5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YJN7BRJ5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YL2ZGXQR.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YL2ZGXQR.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YNMVF3IV.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YNMVF3IV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YUGOWKNW.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YUGOWKNW.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YX642665.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YX642665.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.YY6Y7UJD.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.Z73FKN6X.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZAEBENIO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZAEBENIO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZF24ZBWO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZF24ZBWO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZKBU46IH.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZKBU46IH.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZS453GQJ.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZS453GQJ.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZSEFTQAO.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZT4OZS6F.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZWQCGLB5.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZXCSK6ZV.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZXCSK6ZV.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/chunk.ZZYTHMDF.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/chunk.ZZYTHMDF.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.WXLS2235.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/chunks/qr-creator.es6.min.WXLS2235.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animated-image/animated-image.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animated-image/animated-image.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animated-image/animated-image.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animated-image/animated-image.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animated-image/animated-image.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animation/animation.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animation.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animation/animation.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animation.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animation/animation.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animation/animation.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animation.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animation/animations.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animations.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/animation/animations.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/animation/animations.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/avatar/avatar.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/avatar/avatar.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/badge/badge.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/badge/badge.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/badge/badge.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/badge/badge.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/badge/badge.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/badge/badge.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/badge/badge.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb-item/breadcrumb-item.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/breadcrumb/breadcrumb.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button-group/button-group.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button-group/button-group.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button-group/button-group.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button-group/button-group.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button/button.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button/button.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button/button.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button/button.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button/button.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/button/button.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/button/button.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/callout/callout.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/callout/callout.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/callout/callout.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/callout/callout.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/callout/callout.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/callout/callout.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/callout/callout.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/card/card.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/card/card.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/card/card.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/card/card.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/card/card.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/card/card.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/card/card.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel-item/carousel-item.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/autoplay-controller.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/carousel.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/carousel.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/carousel/scroll-controller.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/checkbox/checkbox.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/checkbox/checkbox.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/checkbox/checkbox.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/checkbox/checkbox.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/color-picker/color-picker.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/color-picker/color-picker.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/comparison/comparison.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/comparison/comparison.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/copy-button/copy-button.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/copy-button/copy-button.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/details/details.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/details/details.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/details/details.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/details/details.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/details/details.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/details/details.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/details/details.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dialog/dialog.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dialog/dialog.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dialog/dialog.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dialog/dialog.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/divider/divider.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/divider/divider.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/divider/divider.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/divider/divider.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/divider/divider.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/divider/divider.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/divider/divider.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/drawer/drawer.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/drawer/drawer.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/drawer/drawer.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/drawer/drawer.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dropdown-item/dropdown-item.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dropdown/dropdown.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown/dropdown.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dropdown/dropdown.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/dropdown/dropdown.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-bytes/format-bytes.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/format-date/format-date.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-date/format-date.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/format-date/format-date.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-date/format-date.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/format-number/format-number.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-number/format-number.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/format-number/format-number.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/format-number/format-number.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/icon.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/icon.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/icon.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/icon.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/icon.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/icon.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/icon.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/library.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/library.default.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.default.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/library.default.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.default.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/library.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/library.system.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.system.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/icon/library.system.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/icon/library.system.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/include/include.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/include.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/include/include.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/include.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/include/include.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/include/include.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/include.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/include/request.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/request.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/include/request.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/include/request.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/input/input.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/input/input.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/input/input.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/input/input.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/input/input.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/input/input.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/input/input.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/intersection-observer/intersection-observer.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/mutation-observer/mutation-observer.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/number-input/number-input.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/number-input/number-input.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/option/option.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/option/option.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/option/option.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/option/option.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/option/option.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/option/option.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/option/option.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popover/popover.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popover/popover.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popover/popover.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popover/popover.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popover/popover.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popover/popover.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popover/popover.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popup/popup.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popup/popup.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popup/popup.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popup/popup.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popup/popup.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/popup/popup.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/popup/popup.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-bar/progress-bar.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/progress-ring/progress-ring.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/qr-code/qr-code.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/qr-code/qr-code.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/qr-code/qr-code.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/qr-code/qr-code.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/qr-code/qr-code.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio-group/radio-group.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio-group/radio-group.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio/radio.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio/radio.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio/radio.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio/radio.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio/radio.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/radio/radio.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/radio/radio.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/rating/rating.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/rating/rating.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/rating/rating.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/rating/rating.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/rating/rating.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/rating/rating.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/rating/rating.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/relative-time/relative-time.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/relative-time/relative-time.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/relative-time/relative-time.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/resize-observer/resize-observer.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/scroller/scroller.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/scroller/scroller.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/select/select.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/select/select.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/select/select.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/select/select.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/select/select.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/select/select.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/select/select.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/skeleton/skeleton.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/skeleton/skeleton.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/slider/slider.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/slider/slider.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/slider/slider.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/slider/slider.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/slider/slider.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/slider/slider.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/slider/slider.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/spinner/spinner.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/spinner/spinner.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/split-panel/split-panel.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/split-panel/split-panel.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/split-panel/split-panel.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/split-panel/split-panel.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/split-panel/split-panel.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/switch/switch.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/switch/switch.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/switch/switch.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/switch/switch.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/switch/switch.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/switch/switch.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/switch/switch.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-group/tab-group.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-group/tab-group.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-group/tab-group.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-group/tab-group.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab-panel/tab-panel.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab/tab.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab/tab.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab/tab.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab/tab.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab/tab.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tab/tab.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tab/tab.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tag/tag.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tag/tag.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tag/tag.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tag/tag.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tag/tag.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tag/tag.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tag/tag.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/textarea/textarea.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/textarea/textarea.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tooltip/tooltip.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tooltip/tooltip.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tooltip/tooltip.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tooltip/tooltip.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree-item/tree-item.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree-item/tree-item.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree/tree.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree/tree.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree/tree.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree/tree.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree/tree.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/tree/tree.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/tree/tree.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/components/zoomable-frame/zoomable-frame.styles.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/custom-elements-jsx.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/custom-elements.json
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/custom-elements.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-collapse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-collapse.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-collapse.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-collapse.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-expand.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-expand.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-expand.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-expand.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-hide.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-hide.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-hide.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-show.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/after-show.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/after-show.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/cancel.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/cancel.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/cancel.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/cancel.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/clear.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/clear.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/clear.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/clear.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/collapse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/collapse.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/collapse.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/collapse.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/copy.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/copy.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/copy.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/copy.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/error.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/error.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/error.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/error.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/events.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/events.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/events.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/events.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/expand.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/expand.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/expand.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/expand.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/finish.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/finish.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/finish.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/finish.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hide.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/hide.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hide.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/hover.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hover.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/hover.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/hover.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/include-error.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/include-error.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/include-error.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/include-error.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/intersect.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/intersect.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/intersect.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/intersect.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/invalid.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/invalid.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/invalid.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/invalid.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/lazy-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-change.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/lazy-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-change.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/lazy-load.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-load.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/lazy-load.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/lazy-load.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/load.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/load.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/load.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/load.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/mutation.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/mutation.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/mutation.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/mutation.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/remove.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/remove.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/remove.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/remove.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/reposition.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/reposition.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/reposition.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/reposition.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/resize.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/resize.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/resize.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/resize.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/select.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/select.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/select.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/select.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/selection-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/selection-change.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/selection-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/selection-change.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/show.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/show.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/show.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/slide-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/slide-change.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/slide-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/slide-change.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/start.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/start.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/start.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/start.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/tab-hide.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-hide.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/tab-hide.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-hide.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/tab-show.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-show.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/tab-show.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/tab-show.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/video-change.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/video-change.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/events/video-change.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/events/video-change.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/active-elements.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/active-elements.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/animate.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/animate.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/computed-style.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/computed-style.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/debounce.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/debounce.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/default-value.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/default-value.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/drag.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/drag.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/event.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/event.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/get-text.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/get-text.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/math.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/math.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/offset.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/offset.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/parse.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/parse.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/scroll.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/scroll.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/scrollend-polyfill.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/slot.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/slot.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/submit-on-enter.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/test/data-testid-helpers.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/data-testid-helpers.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/test/element-visible-overflow.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/element-visible-overflow.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/test/fixture.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/fixture.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/test/form-control-base-tests.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/form-control-base-tests.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/pointer-utilities.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/test/wait-for-scrolling.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/test/wait-for-scrolling.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/validators/custom-error-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/custom-error-validator.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/mirror-validator.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/required-validator.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/validators/slider-validator.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/watch.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/watch.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/webawesome-element.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/internal/webawesome-form-associated-element.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/internal/webawesome-form-associated-element.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/llms.txt
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/llms.txt
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/animated-image/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animated-image/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/animated-image/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animated-image/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/animation/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animation/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/animation/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/animation/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/avatar/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/avatar/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/avatar/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/avatar/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/badge/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/badge/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/badge/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/badge/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb-item/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/breadcrumb/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/breadcrumb/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/button-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/button-group/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/button-group/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/button-group/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/button/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/button/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/button/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/button/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/callout/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/callout/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/callout/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/callout/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/card/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/card/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/card/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/card/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel-item/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/carousel-item/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel-item/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/carousel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/carousel/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/carousel/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/checkbox/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/checkbox/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/checkbox/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/checkbox/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/color-picker/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/color-picker/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/color-picker/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/color-picker/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/comparison/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/comparison/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/comparison/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/comparison/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/copy-button/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/copy-button/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/copy-button/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/copy-button/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/details/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/details/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/details/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/details/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/dialog/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dialog/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/dialog/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dialog/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/divider/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/divider/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/divider/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/divider/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/drawer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/drawer/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/drawer/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/drawer/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown-item/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/dropdown-item/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown-item/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/dropdown/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/dropdown/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/dropdown/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-bytes/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/format-bytes/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-bytes/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/format-date/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-date/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/format-date/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-date/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/format-number/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-number/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/format-number/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/format-number/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/icon/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/icon/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/icon/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/icon/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/include/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/include/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/include/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/include/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/index.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/index.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/input/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/input/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/input/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/input/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/intersection-observer/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/intersection-observer/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/intersection-observer/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/mutation-observer/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/mutation-observer/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/mutation-observer/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/number-input/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/number-input/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/number-input/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/number-input/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/option/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/option/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/option/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/option/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/popover/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/popover/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/popover/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/popover/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/popup/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/popup/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/popup/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/popup/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-bar/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/progress-bar/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-bar/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-ring/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/progress-ring/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/progress-ring/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/qr-code/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/qr-code/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/qr-code/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/qr-code/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/radio-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio-group/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/radio-group/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio-group/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/radio/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/radio/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/radio/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/rating/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/rating/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/rating/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/rating/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/relative-time/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/relative-time/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/relative-time/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/relative-time/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/resize-observer/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/resize-observer/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/resize-observer/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/scroller/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/scroller/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/scroller/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/scroller/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/select/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/select/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/select/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/select/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/skeleton/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/skeleton/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/skeleton/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/skeleton/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/slider/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/slider/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/slider/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/slider/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/spinner/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/spinner/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/spinner/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/spinner/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/split-panel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/split-panel/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/split-panel/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/split-panel/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/switch/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/switch/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/switch/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/switch/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tab-group/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-group/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tab-group/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-group/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-panel/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tab-panel/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab-panel/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tab/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tab/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tab/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tag/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tag/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tag/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tag/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/textarea/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/textarea/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/textarea/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/textarea/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tooltip/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tooltip/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tooltip/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tooltip/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tree-item/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree-item/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tree-item/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree-item/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tree/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/tree/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/tree/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/zoomable-frame/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/react/zoomable-frame/index.js
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/react/zoomable-frame/index.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/SKILL.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animated-image.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animated-image.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/animation.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/avatar.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/badge.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb-item.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb-item.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/breadcrumb.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button-group.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/button.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/callout.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/card.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel-item.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel-item.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/carousel.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/checkbox.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/color-picker.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/comparison.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/copy-button.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/details.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dialog.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/divider.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/drawer.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown-item.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown-item.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/dropdown.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-bytes.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-bytes.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-date.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-date.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-number.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/format-number.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/icon.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/include.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/input.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/intersection-observer.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/intersection-observer.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/mutation-observer.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/number-input.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/option.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popover.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/popup.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-bar.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-bar.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/progress-ring.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/qr-code.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/qr-code.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio-group.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/radio.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/rating.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/relative-time.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/relative-time.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/resize-observer.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/resize-observer.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/scroller.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/select.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/skeleton.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/slider.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/spinner.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/split-panel.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/split-panel.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/switch.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-group.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-panel.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab-panel.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tab.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tag.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/textarea.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tooltip.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree-item.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree-item.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/tree.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/components/zoomable-frame.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/customizing.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/form-controls.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/angular.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/react.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/svelte.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/frameworks/vue.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/installation.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/localization.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/support.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/support.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/themes.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/borders.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/color.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/component-groups.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/component-groups.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/focus.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/shadows.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/space.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/transitions.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/tokens/typography.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/usage.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/color.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/fouce.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/layout.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/native.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/rounding.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/text.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/visually-hidden.md
··· 1 + ../../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/skills/webawesome/references/utilities/visually-hidden.md
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/palettes/base.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/base.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/palettes/bright.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/bright.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/palettes/default.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/default.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/palettes/shoelace.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/variants.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/variants/brand.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/brand.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/variants/danger.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/danger.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/variants/neutral.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/neutral.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/variants/success.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/success.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/color/variants/warning.css
··· 1 + ../../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/color/variants/warning.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/host.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/host.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/host.styles.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/size.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/size.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/size.styles.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/variants.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/variants.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/variants.styles.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/form-control.styles.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/component/visually-hidden.styles.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/layers.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/layers.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/native.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/native.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/themes/awesome.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/themes/awesome.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/themes/default.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/themes/default.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/themes/shoelace.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/themes/shoelace.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/align-items.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/align-items.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/border-radius.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/border-radius.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/flex-wrap.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/fouce.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/fouce.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/gap.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/gap.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/justify-content.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/justify-content.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/layout.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/layout.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/placeholder.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/placeholder.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/scroll-lock.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/size.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/size.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/text.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/text.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/variants.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/variants.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/utilities/visually-hidden.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/styles/webawesome.css
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/styles/webawesome.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/ar.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/ar.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/cs.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/cs.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/cs.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/da.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/da.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/da.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/de-ch.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/de-ch.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/de-ch.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/de.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/de.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/de.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/en-gb.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/en-gb.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/en-gb.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/en.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/en.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/en.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/es.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/es.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/es.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/fa.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/fa.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/fa.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/fi.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/fi.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/fi.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/fr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/fr.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/fr.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/he.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/he.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/he.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/hi.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/hi.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/hi.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/hr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/hr.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/hr.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/hu.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/hu.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/hu.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/id.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/id.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/id.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/it.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/it.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/it.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/ja.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/ja.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ja.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/kk.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/kk.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/kk.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/nb.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/nb.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/nb.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/nl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/nl.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/nl.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/nn.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/nn.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/nn.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/pl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/pl.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/pl.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/pt.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/pt.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/pt.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/ru.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/ru.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ru.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/sl.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/sl.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/sl.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/sv.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/sv.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/sv.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/tr.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/tr.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/tr.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/uk.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/uk.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/uk.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/zh-cn.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/zh-cn.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/zh-cn.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/zh-tw.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/ar.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/translations/zh-tw.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/translations/zh-tw.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/types/svelte/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/types/svelte/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/types/vue/index.d.ts
··· 1 + ../../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/types/vue/index.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/animation.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/animation.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/animation.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/animation.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/autoloader.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/autoloader.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/autoloader.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/autoloader.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/base-path.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/base-path.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/base-path.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/base-path.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/defined.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/defined.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/defined.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/defined.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/form.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/form.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/form.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/form.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/localize.d.ts
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/localize.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/utilities/localize.js
··· 1 + ../../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/utilities/localize.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/vscode.html-custom-data.json
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/vscode.html-custom-data.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/web-types.json
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/web-types.json
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/webawesome.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/webawesome.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/webawesome.loader.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.loader.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/webawesome.loader.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.loader.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.ssr-loader.d.ts
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@awesome.me/webawesome/webawesome.ssr-loader.js
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@awesome.me/webawesome/webawesome.ssr-loader.js
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/bold/Phosphor-Bold.svg
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/bold/Phosphor-Bold.ttf
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.ttf
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/bold/Phosphor-Bold.woff
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.woff
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/bold/Phosphor-Bold.woff2
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/Phosphor-Bold.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/bold/style.css
··· 1 + ../../../../bafybeidxl54c4ymomv6kytxqps6b5di34hgltpvyomx52g65lplv6dosxy/styles/vendor/phosphor/bold/style.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/bold/style.css.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@phosphor-icons/bold/style.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/fill/Phosphor-Fill.svg
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.svg
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/fill/Phosphor-Fill.ttf
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.ttf
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/fill/Phosphor-Fill.woff
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.woff
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/fill/Phosphor-Fill.woff2
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/Phosphor-Fill.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/fill/style.css
··· 1 + ../../../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/phosphor/fill/style.css
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/@phosphor-icons/fill/style.css.map
··· 1 + ../../../../bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq/vendor/@phosphor-icons/fill/style.css.map
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/ms_sans_serif.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif.woff2
+1
artifacts/bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4/vendor/ms_sans_serif_bold.woff2
··· 1 + ../../bafybeib3wlfzxqunhpofk5mpfpyoqpd42bsj43o3vzxnpjbahimyjjyq54/styles/vendor/ms_sans_serif_bold.woff2
+2 -2
artifacts/versions.json
··· 5 5 "version": "3.5.0" 6 6 }, 7 7 "4.0.0-alpha": { 8 - "cid": "bafybeiemvoaof6rmqiqyuyxagswcabu6jwbe37wss44g6pmrs2zhwiyvvq", 9 - "createdAt": "2026-03-03T22:44:01.440Z", 8 + "cid": "bafybeig7o7zaronlwqkbyf4vi4jj3jdvoan3bpfhhgdyigpaa3rd4rplp4", 9 + "createdAt": "2026-03-05T14:44:04.005Z", 10 10 "version": "4.0.0-alpha" 11 11 } 12 12 }