muzical-ui 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +7 -1
  3. package/.next/standalone/.next/build-manifest.json +6 -6
  4. package/.next/standalone/.next/prerender-manifest.json +75 -3
  5. package/.next/standalone/.next/required-server-files.json +3 -0
  6. package/.next/standalone/.next/routes-manifest.json +36 -0
  7. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
  8. package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
  18. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.rsc +24 -18
  23. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +24 -18
  24. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  25. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -7
  26. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  28. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  29. package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/app-paths-manifest.json +3 -0
  30. package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/build-manifest.json +9 -0
  31. package/.next/standalone/.next/server/app/api/lastfm/track-similar/route/server-reference-manifest.json +4 -0
  32. package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js +6 -0
  33. package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js.map +5 -0
  34. package/.next/standalone/.next/server/app/api/lastfm/track-similar/route.js.nft.json +1 -0
  35. package/.next/standalone/.next/server/app/api/lastfm/track-similar/route_client-reference-manifest.js +3 -0
  36. package/.next/standalone/.next/server/app/api/youtube/resolve/route/app-paths-manifest.json +3 -0
  37. package/.next/standalone/.next/server/app/api/youtube/resolve/route/build-manifest.json +9 -0
  38. package/.next/standalone/.next/server/app/api/youtube/resolve/route/server-reference-manifest.json +4 -0
  39. package/.next/standalone/.next/server/app/api/youtube/resolve/route.js +6 -0
  40. package/.next/standalone/.next/server/app/api/youtube/resolve/route.js.map +5 -0
  41. package/.next/standalone/.next/server/app/api/youtube/resolve/route.js.nft.json +1 -0
  42. package/.next/standalone/.next/server/app/api/youtube/resolve/route_client-reference-manifest.js +3 -0
  43. package/.next/standalone/.next/server/app/api/youtube/search/route/app-paths-manifest.json +3 -0
  44. package/.next/standalone/.next/server/app/api/youtube/search/route/build-manifest.json +9 -0
  45. package/.next/standalone/.next/server/app/api/youtube/search/route/server-reference-manifest.json +4 -0
  46. package/.next/standalone/.next/server/app/api/youtube/search/route.js +6 -0
  47. package/.next/standalone/.next/server/app/api/youtube/search/route.js.map +5 -0
  48. package/.next/standalone/.next/server/app/api/youtube/search/route.js.nft.json +1 -0
  49. package/.next/standalone/.next/server/app/api/youtube/search/route_client-reference-manifest.js +3 -0
  50. package/.next/standalone/.next/server/app/favicon.ico/route.js +2 -1
  51. package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/index.html +1 -1
  53. package/.next/standalone/.next/server/app/index.rsc +20 -17
  54. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  55. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +20 -17
  56. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  57. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -7
  58. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  59. package/.next/standalone/.next/server/app/musicbrainz/page/build-manifest.json +3 -3
  60. package/.next/standalone/.next/server/app/musicbrainz/page.js +4 -4
  61. package/.next/standalone/.next/server/app/musicbrainz/page.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/musicbrainz/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/musicbrainz.html +1 -1
  64. package/.next/standalone/.next/server/app/musicbrainz.rsc +22 -19
  65. package/.next/standalone/.next/server/app/musicbrainz.segments/_full.segment.rsc +22 -19
  66. package/.next/standalone/.next/server/app/musicbrainz.segments/_head.segment.rsc +4 -4
  67. package/.next/standalone/.next/server/app/musicbrainz.segments/_index.segment.rsc +10 -7
  68. package/.next/standalone/.next/server/app/musicbrainz.segments/_tree.segment.rsc +2 -2
  69. package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz/__PAGE__.segment.rsc +2 -2
  70. package/.next/standalone/.next/server/app/musicbrainz.segments/musicbrainz.segment.rsc +3 -3
  71. package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
  72. package/.next/standalone/.next/server/app/page.js +2 -2
  73. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/settings/browse/page/app-paths-manifest.json +3 -0
  76. package/.next/standalone/.next/server/app/settings/browse/page/build-manifest.json +17 -0
  77. package/.next/standalone/.next/server/app/settings/browse/page/next-font-manifest.json +11 -0
  78. package/.next/standalone/.next/server/app/settings/browse/page/react-loadable-manifest.json +1 -0
  79. package/.next/standalone/.next/server/app/settings/browse/page/server-reference-manifest.json +4 -0
  80. package/.next/standalone/.next/server/app/settings/browse/page.js +15 -0
  81. package/.next/standalone/.next/server/app/settings/browse/page.js.map +5 -0
  82. package/.next/standalone/.next/server/app/settings/browse/page.js.nft.json +1 -0
  83. package/.next/standalone/.next/server/app/settings/browse/page_client-reference-manifest.js +3 -0
  84. package/.next/standalone/.next/server/app/settings/browse.html +1 -0
  85. package/.next/standalone/.next/server/app/settings/browse.meta +16 -0
  86. package/.next/standalone/.next/server/app/settings/browse.rsc +29 -0
  87. package/.next/standalone/.next/server/app/settings/browse.segments/_full.segment.rsc +29 -0
  88. package/.next/standalone/.next/server/app/settings/browse.segments/_head.segment.rsc +6 -0
  89. package/.next/standalone/.next/server/app/settings/browse.segments/_index.segment.rsc +11 -0
  90. package/.next/standalone/.next/server/app/settings/browse.segments/_tree.segment.rsc +4 -0
  91. package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse/__PAGE__.segment.rsc +6 -0
  92. package/.next/standalone/.next/server/app/settings/browse.segments/settings/browse.segment.rsc +5 -0
  93. package/.next/standalone/.next/server/app/settings/browse.segments/settings.segment.rsc +5 -0
  94. package/.next/standalone/.next/server/app/settings/display/page/build-manifest.json +3 -3
  95. package/.next/standalone/.next/server/app/settings/display/page.js +2 -2
  96. package/.next/standalone/.next/server/app/settings/display/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/settings/display/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/settings/display.html +1 -1
  99. package/.next/standalone/.next/server/app/settings/display.rsc +26 -20
  100. package/.next/standalone/.next/server/app/settings/display.segments/_full.segment.rsc +26 -20
  101. package/.next/standalone/.next/server/app/settings/display.segments/_head.segment.rsc +4 -4
  102. package/.next/standalone/.next/server/app/settings/display.segments/_index.segment.rsc +10 -7
  103. package/.next/standalone/.next/server/app/settings/display.segments/_tree.segment.rsc +2 -2
  104. package/.next/standalone/.next/server/app/settings/display.segments/settings/display/__PAGE__.segment.rsc +3 -3
  105. package/.next/standalone/.next/server/app/settings/display.segments/settings/display.segment.rsc +3 -3
  106. package/.next/standalone/.next/server/app/settings/display.segments/settings.segment.rsc +4 -4
  107. package/.next/standalone/.next/server/app/settings/lastfm/page/app-paths-manifest.json +3 -0
  108. package/.next/standalone/.next/server/app/settings/lastfm/page/build-manifest.json +17 -0
  109. package/.next/standalone/.next/server/app/settings/lastfm/page/next-font-manifest.json +11 -0
  110. package/.next/standalone/.next/server/app/settings/lastfm/page/react-loadable-manifest.json +1 -0
  111. package/.next/standalone/.next/server/app/settings/lastfm/page/server-reference-manifest.json +4 -0
  112. package/.next/standalone/.next/server/app/settings/lastfm/page.js +15 -0
  113. package/.next/standalone/.next/server/app/settings/lastfm/page.js.map +5 -0
  114. package/.next/standalone/.next/server/app/settings/lastfm/page.js.nft.json +1 -0
  115. package/.next/standalone/.next/server/app/settings/lastfm/page_client-reference-manifest.js +3 -0
  116. package/.next/standalone/.next/server/app/settings/lastfm.html +1 -0
  117. package/.next/standalone/.next/server/app/settings/lastfm.meta +16 -0
  118. package/.next/standalone/.next/server/app/settings/lastfm.rsc +29 -0
  119. package/.next/standalone/.next/server/app/settings/lastfm.segments/_full.segment.rsc +29 -0
  120. package/.next/standalone/.next/server/app/settings/lastfm.segments/_head.segment.rsc +6 -0
  121. package/.next/standalone/.next/server/app/settings/lastfm.segments/_index.segment.rsc +11 -0
  122. package/.next/standalone/.next/server/app/settings/lastfm.segments/_tree.segment.rsc +4 -0
  123. package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm/__PAGE__.segment.rsc +6 -0
  124. package/.next/standalone/.next/server/app/settings/lastfm.segments/settings/lastfm.segment.rsc +5 -0
  125. package/.next/standalone/.next/server/app/settings/lastfm.segments/settings.segment.rsc +5 -0
  126. package/.next/standalone/.next/server/app/settings/library/page/build-manifest.json +3 -3
  127. package/.next/standalone/.next/server/app/settings/library/page.js +2 -2
  128. package/.next/standalone/.next/server/app/settings/library/page.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/settings/library/page_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/settings/library.html +1 -1
  131. package/.next/standalone/.next/server/app/settings/library.rsc +26 -20
  132. package/.next/standalone/.next/server/app/settings/library.segments/_full.segment.rsc +26 -20
  133. package/.next/standalone/.next/server/app/settings/library.segments/_head.segment.rsc +4 -4
  134. package/.next/standalone/.next/server/app/settings/library.segments/_index.segment.rsc +10 -7
  135. package/.next/standalone/.next/server/app/settings/library.segments/_tree.segment.rsc +2 -2
  136. package/.next/standalone/.next/server/app/settings/library.segments/settings/library/__PAGE__.segment.rsc +3 -3
  137. package/.next/standalone/.next/server/app/settings/library.segments/settings/library.segment.rsc +3 -3
  138. package/.next/standalone/.next/server/app/settings/library.segments/settings.segment.rsc +4 -4
  139. package/.next/standalone/.next/server/app/settings/page/build-manifest.json +3 -3
  140. package/.next/standalone/.next/server/app/settings/page.js +2 -2
  141. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/settings/playback/page/build-manifest.json +3 -3
  144. package/.next/standalone/.next/server/app/settings/playback/page.js +2 -2
  145. package/.next/standalone/.next/server/app/settings/playback/page.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/settings/playback/page_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/settings/playback.html +1 -1
  148. package/.next/standalone/.next/server/app/settings/playback.rsc +26 -20
  149. package/.next/standalone/.next/server/app/settings/playback.segments/_full.segment.rsc +26 -20
  150. package/.next/standalone/.next/server/app/settings/playback.segments/_head.segment.rsc +4 -4
  151. package/.next/standalone/.next/server/app/settings/playback.segments/_index.segment.rsc +10 -7
  152. package/.next/standalone/.next/server/app/settings/playback.segments/_tree.segment.rsc +2 -2
  153. package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback/__PAGE__.segment.rsc +3 -3
  154. package/.next/standalone/.next/server/app/settings/playback.segments/settings/playback.segment.rsc +3 -3
  155. package/.next/standalone/.next/server/app/settings/playback.segments/settings.segment.rsc +4 -4
  156. package/.next/standalone/.next/server/app/settings/youtube/page/build-manifest.json +3 -3
  157. package/.next/standalone/.next/server/app/settings/youtube/page.js +2 -2
  158. package/.next/standalone/.next/server/app/settings/youtube/page.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/settings/youtube/page_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/settings/youtube.html +1 -1
  161. package/.next/standalone/.next/server/app/settings/youtube.rsc +26 -20
  162. package/.next/standalone/.next/server/app/settings/youtube.segments/_full.segment.rsc +26 -20
  163. package/.next/standalone/.next/server/app/settings/youtube.segments/_head.segment.rsc +4 -4
  164. package/.next/standalone/.next/server/app/settings/youtube.segments/_index.segment.rsc +10 -7
  165. package/.next/standalone/.next/server/app/settings/youtube.segments/_tree.segment.rsc +2 -2
  166. package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube/__PAGE__.segment.rsc +3 -3
  167. package/.next/standalone/.next/server/app/settings/youtube.segments/settings/youtube.segment.rsc +3 -3
  168. package/.next/standalone/.next/server/app/settings/youtube.segments/settings.segment.rsc +4 -4
  169. package/.next/standalone/.next/server/app/settings.html +1 -1
  170. package/.next/standalone/.next/server/app/settings.rsc +21 -18
  171. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +21 -18
  172. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  173. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +10 -7
  174. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  175. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +3 -3
  176. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +4 -4
  177. package/.next/standalone/.next/server/app/youtube/page/app-paths-manifest.json +3 -0
  178. package/.next/standalone/.next/server/app/youtube/page/build-manifest.json +17 -0
  179. package/.next/standalone/.next/server/app/youtube/page/next-font-manifest.json +11 -0
  180. package/.next/standalone/.next/server/app/youtube/page/react-loadable-manifest.json +1 -0
  181. package/.next/standalone/.next/server/app/youtube/page/server-reference-manifest.json +4 -0
  182. package/.next/standalone/.next/server/app/youtube/page.js +15 -0
  183. package/.next/standalone/.next/server/app/youtube/page.js.map +5 -0
  184. package/.next/standalone/.next/server/app/youtube/page.js.nft.json +1 -0
  185. package/.next/standalone/.next/server/app/youtube/page_client-reference-manifest.js +3 -0
  186. package/.next/standalone/.next/server/app/youtube.html +1 -0
  187. package/.next/standalone/.next/server/app/youtube.meta +17 -0
  188. package/.next/standalone/.next/server/app/youtube.rsc +25 -0
  189. package/.next/standalone/.next/server/app/youtube.segments/_full.segment.rsc +25 -0
  190. package/.next/standalone/.next/server/app/youtube.segments/_head.segment.rsc +6 -0
  191. package/.next/standalone/.next/server/app/youtube.segments/_index.segment.rsc +11 -0
  192. package/.next/standalone/.next/server/app/youtube.segments/_tree.segment.rsc +4 -0
  193. package/.next/standalone/.next/server/app/youtube.segments/youtube/__PAGE__.segment.rsc +6 -0
  194. package/.next/standalone/.next/server/app/youtube.segments/youtube.segment.rsc +5 -0
  195. package/.next/standalone/.next/server/app-paths-manifest.json +7 -1
  196. package/.next/standalone/.next/server/chunks/0z~i_next_dist_esm_build_templates_app-route_0mm3io..js +3 -0
  197. package/.next/standalone/.next/server/chunks/[root-of-the-server]__04rmaa_._.js +3 -0
  198. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0iga-fk._.js +13 -0
  199. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0syodc9._.js +3 -0
  200. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yh0qgz._.js +3 -0
  201. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_lastfm_track-similar_route_actions_0o0aksj.js +3 -0
  202. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_resolve_route_actions_00u-beh.js +3 -0
  203. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_youtube_search_route_actions_11oame5.js +3 -0
  204. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0952jxx._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0epj5a8._.js +1 -1
  206. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0lxnb~i._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0mpaeoj._.js +1 -1
  208. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0vvxdoi._.js +1 -1
  209. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0xiet5m._.js +1 -1
  210. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_0xr.otg._.js +1 -1
  211. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_apev2_APEv2Parser_0baa0n9.js +1 -1
  212. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_id3v2_048_t.z._.js +1 -1
  213. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_matroska_MatroskaParser_129r4d4.js +1 -1
  214. package/.next/standalone/.next/server/chunks/ssr/0a6e_music-metadata_lib_mpeg_MpegParser_02l3ght.js +1 -1
  215. package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_02m-902._.js +1 -1
  216. package/.next/standalone/.next/server/chunks/ssr/{_0v8tsu.._.js → 0z~i_next_dist_0y7_gi1._.js} +2 -2
  217. package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_05w__hq.js +4 -0
  218. package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0rtq_vg.js +4 -0
  219. package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_esm_build_templates_app-page_0zexs35.js +4 -0
  220. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.kc4tr._.js +3 -0
  221. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__03-3mbr._.js +1 -1
  222. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__044c9~u._.js +3 -0
  223. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0v30c9w._.js → [root-of-the-server]__05f62me._.js} +2 -2
  224. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hiy0el._.js +3 -0
  225. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0wgbp9t._.js → [root-of-the-server]__0jowkig._.js} +2 -2
  226. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0lkpda-._.js +3 -0
  227. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0sn2..k._.js +3 -0
  228. package/.next/standalone/.next/server/chunks/ssr/_014lxrc._.js +3 -0
  229. package/.next/standalone/.next/server/chunks/ssr/_06it0sh._.js +2 -2
  230. package/.next/standalone/.next/server/chunks/ssr/_0b8qx~m._.js +1 -1
  231. package/.next/standalone/.next/server/chunks/ssr/_0~cb-t9._.js +3 -0
  232. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_browse_page_actions_0_gn~yf.js +3 -0
  233. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_lastfm_page_actions_002qs5v.js +3 -0
  234. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_youtube_page_actions_12geo5h.js +3 -0
  235. package/.next/standalone/.next/server/chunks/ssr/components_00y4y-o._.js +1 -1
  236. package/.next/standalone/.next/server/chunks/ssr/components_0c.t1du._.js +1 -1
  237. package/.next/standalone/.next/server/chunks/ssr/components_0dp4-uk._.js +3 -0
  238. package/.next/standalone/.next/server/chunks/ssr/components_LastfmSettingsPanel_tsx_0tqjys8._.js +3 -0
  239. package/.next/standalone/.next/server/chunks/ssr/components_LibrarySettingsPanel_tsx_0krc7dk._.js +3 -0
  240. package/.next/standalone/.next/server/chunks/ssr/components_MusicPlayer_tsx_06~82ey._.js +1 -1
  241. package/.next/standalone/.next/server/chunks/ssr/components_SettingsOverview_tsx_0axvc~a._.js +1 -1
  242. package/.next/standalone/.next/server/chunks/ssr/components_SettingsSwitchRow_tsx_0rn035g._.js +3 -0
  243. package/.next/standalone/.next/server/chunks/ssr/lib_0mppqs2._.js +3 -0
  244. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0bx6yug._.js +3 -0
  245. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0f~0-nb._.js +1 -1
  246. package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
  247. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  248. package/.next/standalone/.next/server/next-font-manifest.json +12 -0
  249. package/.next/standalone/.next/server/pages/404.html +1 -1
  250. package/.next/standalone/.next/server/pages/500.html +1 -1
  251. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  253. package/.next/standalone/.next/static/chunks/00bzw__-m1fpe.js +1 -0
  254. package/.next/standalone/.next/static/chunks/00ffr5pv82u34.js +1 -0
  255. package/.next/standalone/.next/static/chunks/03f3hyhv4x63v.js +1 -0
  256. package/.next/standalone/.next/static/chunks/04-q~k1s4h2o9.js +31 -0
  257. package/.next/standalone/.next/static/chunks/0638t8cqzkdfe.js +1 -0
  258. package/.next/standalone/.next/static/chunks/073k~no118gmz.js +1 -0
  259. package/.next/standalone/.next/static/chunks/0c5m3gpe71ppi.js +1 -0
  260. package/.next/standalone/.next/static/chunks/0dusa1wc1mnfl.js +1 -0
  261. package/.next/standalone/.next/static/chunks/0me.0ghc7bi2f.js +1 -0
  262. package/.next/standalone/.next/static/chunks/0ps~ft3qx-shn.css +3 -0
  263. package/.next/standalone/.next/static/chunks/0ty~h16-~8eka.js +1 -0
  264. package/.next/standalone/.next/static/chunks/0w~k0r.qfm0zf.js +1 -0
  265. package/.next/standalone/.next/static/chunks/0xj5z58rgukgs.js +1 -0
  266. package/.next/standalone/.next/static/chunks/109xoml1ptc8~.js +1 -0
  267. package/.next/standalone/.next/static/chunks/14z_1xu7t6lay.js +2 -0
  268. package/.next/standalone/.next/static/chunks/{turbopack-0g-.7kit-b4.8.js → turbopack-0ctpbjx-g6dyl.js} +1 -1
  269. package/.next/standalone/package.json +9 -8
  270. package/.next/standalone/server.js +1 -1
  271. package/package.json +9 -8
  272. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~e2g3i._.js +0 -13
  273. package/.next/standalone/.next/server/chunks/ssr/0z~i_next_dist_0z0kx9a._.js +0 -3
  274. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00e_fc7._.js +0 -3
  275. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_8f2hf._.js +0 -3
  276. package/.next/standalone/.next/server/chunks/ssr/_09vx.ql._.js +0 -3
  277. package/.next/standalone/.next/server/chunks/ssr/components_0-e3h_v._.js +0 -3
  278. package/.next/standalone/.next/server/chunks/ssr/components_YouTubeSettingsPanel_tsx_0t6pw~9._.js +0 -3
  279. package/.next/standalone/.next/server/chunks/ssr/lib_library_favorite-keys_ts_0mlju9x._.js +0 -3
  280. package/.next/standalone/.next/static/chunks/06c2c_.-4ag08.css +0 -3
  281. package/.next/standalone/.next/static/chunks/0_fmjohj6n9ax.js +0 -1
  282. package/.next/standalone/.next/static/chunks/0cx3-_9jp9j1a.js +0 -1
  283. package/.next/standalone/.next/static/chunks/0d05.rh-.aulc.js +0 -1
  284. package/.next/standalone/.next/static/chunks/0f.f4qs1oecxo.js +0 -1
  285. package/.next/standalone/.next/static/chunks/0gs~olgu8~txo.js +0 -1
  286. package/.next/standalone/.next/static/chunks/0lse6x.rhc0i5.js +0 -1
  287. package/.next/standalone/.next/static/chunks/0nh7t0mlv.533.js +0 -2
  288. package/.next/standalone/.next/static/chunks/0wvzb~7kpzo6n.js +0 -1
  289. package/.next/standalone/.next/static/chunks/0y-bftn0gphdn.js +0 -1
  290. package/.next/standalone/.next/static/chunks/10l3mqv783cbv.js +0 -1
  291. package/.next/standalone/.next/static/chunks/118x8mar90jp8.js +0 -1
  292. package/.next/standalone/.next/static/chunks/148g6~qgt.qca.js +0 -31
  293. /package/.next/standalone/.next/static/{eETzs0f08QWh-CTCZlnTr → 6R8dLcmFAc7AeUCNbCJAA}/_buildManifest.js +0 -0
  294. /package/.next/standalone/.next/static/{eETzs0f08QWh-CTCZlnTr → 6R8dLcmFAc7AeUCNbCJAA}/_clientMiddlewareManifest.js +0 -0
  295. /package/.next/standalone/.next/static/{eETzs0f08QWh-CTCZlnTr → 6R8dLcmFAc7AeUCNbCJAA}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,32537,(e,t,r)=>{"use strict";var i=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,a=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,n=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,s=/\\([\u000b\u0020-\u00ff])/g,o=/([\\"])/g,l=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function c(e){this.parameters=Object.create(null),this.type=e}r.format=function(e){if(!e||"object"!=typeof e)throw TypeError("argument obj is required");var t=e.parameters,r=e.type;if(!r||!l.test(r))throw TypeError("invalid type");var i=r;if(t&&"object"==typeof t)for(var s,c=Object.keys(t).sort(),u=0;u<c.length;u++){if(s=c[u],!n.test(s))throw TypeError("invalid parameter name");i+="; "+s+"="+function(e){var t=String(e);if(n.test(t))return t;if(t.length>0&&!a.test(t))throw TypeError("invalid parameter value");return'"'+t.replace(o,"\\$1")+'"'}(t[s])}return i},r.parse=function(e){if(!e)throw TypeError("argument string is required");var t,r,a,n="object"==typeof e?function(e){var t;if("function"==typeof e.getHeader?t=e.getHeader("content-type"):"object"==typeof e.headers&&(t=e.headers&&e.headers["content-type"]),"string"!=typeof t)throw TypeError("content-type header is missing from object");return t}(e):e;if("string"!=typeof n)throw TypeError("argument string is required to be a string");var o=n.indexOf(";"),u=-1!==o?n.slice(0,o).trim():n.trim();if(!l.test(u))throw TypeError("invalid media type");var m=new c(u.toLowerCase());if(-1!==o){for(i.lastIndex=o;r=i.exec(n);){if(r.index!==o)throw TypeError("invalid parameter format");o+=r[0].length,t=r[1].toLowerCase(),34===(a=r[2]).charCodeAt(0)&&-1!==(a=a.slice(1,-1)).indexOf("\\")&&(a=a.replace(s,"$1")),m.parameters[t]=a}if(o!==n.length)throw TypeError("invalid parameter format")}return m}},82087,(e,t,r)=>{"use strict";var i=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,a=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,n=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;function s(e,t,r){this.type=e,this.subtype=t,this.suffix=r}r.format=function(e){if(!e||"object"!=typeof e)throw TypeError("argument obj is required");var t=e.subtype,r=e.suffix,n=e.type;if(!n||!a.test(n))throw TypeError("invalid type");if(!t||!i.test(t))throw TypeError("invalid subtype");var s=n+"/"+t;if(r){if(!a.test(r))throw TypeError("invalid suffix");s+="+"+r}return s},r.parse=function(e){if(!e)throw TypeError("argument string is required");if("string"!=typeof e)throw TypeError("argument string is required to be a string");var t,r=n.exec(e.toLowerCase());if(!r)throw TypeError("invalid media type");var i=r[1],a=r[2],o=a.lastIndexOf("+");return -1!==o&&(t=a.substr(o+1),a=a.substr(0,o)),new s(i,a,t)},r.test=function(e){if(!e)throw TypeError("argument string is required");if("string"!=typeof e)throw TypeError("argument string is required to be a string");return n.test(e.toLowerCase())}},70487,75397,21589,30164,66951,99513,97891,4728,91768,73973,38602,34713,74061,75878,81193,71569,56784,95772,8998,32022,63080,45461,e=>{"use strict";e.s(["LibraryProvider",()=>rf,"useLibrary",()=>rp],70487);var t=e.i(54710),r=e.i(34416);function i(e){return`${e.source}\u0000${e.query.trim().toLowerCase()}`}let a="muzical.recentBrowseSearches";function n(e){try{window.localStorage.setItem(a,JSON.stringify(e))}catch{}}e.s(["DEFAULT_BROWSE_VIEW_STORAGE_KEY",0,"muzical.defaultBrowseView","RECENT_BROWSE_SEARCHES_LIMIT",0,12,"RECENT_BROWSE_SEARCHES_STORAGE_KEY",0,a],75397);let s="muzical-library",o="libraryRoots",l="libraryCatalog",c=[".mp3",".flac",".m4a",".aac",".ogg",".opus",".wav",".webm",".aiff",".aif",".alac",".wma"];e.s(["LIBRARY_AUDIO_EXTENSIONS",0,c,"LIBRARY_CATALOG_STORE_NAME",0,l,"LIBRARY_DB_NAME",0,s,"LIBRARY_DB_VERSION",0,3,"LIBRARY_STORE_NAME",0,o],21589);let u="catalog",m="favorites";function d(e,t,r){if(!e.objectStoreNames.contains(l))return Promise.reject(Error(`Missing object store ${l}`));let i={key:u,rootIds:[...t].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})),tracks:[...r],savedAt:Date.now()};return new Promise((t,r)=>{let a=e.transaction(l,"readwrite"),n=a.objectStore(l).put(i);n.onerror=()=>{r(n.error??Error("IndexedDB catalog put failed"))},a.oncomplete=()=>{t()},a.onerror=()=>{r(a.error??Error("IndexedDB catalog transaction failed"))}})}let f=()=>({key:m,songIds:[],artistNames:[],albumKeys:[]});function p(e){if(e instanceof DOMException){if("AbortError"===e.name)return"";if("SecurityError"===e.name||"NotAllowedError"===e.name||e.message.includes("not allowed by the user agent")||e.message.includes("The request is not allowed"))return"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost."}if(e instanceof Error){let t=e.message;return t.includes("not allowed by the user agent")||t.includes("The request is not allowed")?"Folder access is blocked in this context. Open the app in Chrome or Edge in a normal window (not an embedded preview), and use https:// or http://localhost.":t}return"Could not access the folder."}let h=new Set(c);function g(e,t){let r=e.lastIndexOf(".");if(r<0)return e;let i=e.slice(r).toLowerCase();return(t??h).has(i)?e.slice(0,r):e}function b(e){let t=e.library;if(!t)return null;let{fileLastModified:r,fileSize:i}=t;return"number"==typeof r&&Number.isFinite(r)&&"number"==typeof i&&Number.isFinite(i)&&!(i<0)?{fileLastModified:r,fileSize:i}:null}e.s(["parseBlob",()=>eJ,"scanAppendingHeaders",()=>e0],30164);var y=e.i(52333),x=e.i(81995),k=e.i(67396),T=e.i(93432);let w={get:e=>({signature:x.UINT32_LE.get(e,0),compressedSize:x.UINT32_LE.get(e,8),uncompressedSize:x.UINT32_LE.get(e,12)}),len:16},S={get(e){let t=x.UINT16_LE.get(e,6);return{signature:x.UINT32_LE.get(e,0),minVersion:x.UINT16_LE.get(e,4),dataDescriptor:!!(8&t),compressedMethod:x.UINT16_LE.get(e,8),compressedSize:x.UINT32_LE.get(e,18),uncompressedSize:x.UINT32_LE.get(e,22),filenameLength:x.UINT16_LE.get(e,26),extraFieldLength:x.UINT16_LE.get(e,28),filename:null}},len:30},I={get:e=>({signature:x.UINT32_LE.get(e,0),nrOfThisDisk:x.UINT16_LE.get(e,4),nrOfThisDiskWithTheStart:x.UINT16_LE.get(e,6),nrOfEntriesOnThisDisk:x.UINT16_LE.get(e,8),nrOfEntriesOfSize:x.UINT16_LE.get(e,10),sizeOfCd:x.UINT32_LE.get(e,12),offsetOfStartOfCd:x.UINT32_LE.get(e,16),zipFileCommentLength:x.UINT16_LE.get(e,20)}),len:22},v={get(e){let t=x.UINT16_LE.get(e,8);return{signature:x.UINT32_LE.get(e,0),minVersion:x.UINT16_LE.get(e,6),dataDescriptor:!!(8&t),compressedMethod:x.UINT16_LE.get(e,10),compressedSize:x.UINT32_LE.get(e,20),uncompressedSize:x.UINT32_LE.get(e,24),filenameLength:x.UINT16_LE.get(e,28),extraFieldLength:x.UINT16_LE.get(e,30),fileCommentLength:x.UINT16_LE.get(e,32),relativeOffsetOfLocalHeader:x.UINT32_LE.get(e,42),filename:null}},len:46};function E(e){let t=new Uint8Array(x.UINT32_LE.len);return x.UINT32_LE.put(t,0,e),t}let A=(0,T.default)("tokenizer:inflate"),_=E(0x8074b50),z=E(0x6054b50);class C{constructor(e){this.tokenizer=e,this.syncBuffer=new Uint8Array(262144)}async isZip(){return await this.peekSignature()===0x4034b50}peekSignature(){return this.tokenizer.peekToken(x.UINT32_LE)}async findEndOfCentralDirectoryLocator(){let e=this.tokenizer,t=Math.min(16384,e.fileInfo.size),r=this.syncBuffer.subarray(0,t);await this.tokenizer.readBuffer(r,{position:e.fileInfo.size-t});for(let i=r.length-4;i>=0;i--)if(r[i]===z[0]&&r[i+1]===z[1]&&r[i+2]===z[2]&&r[i+3]===z[3])return e.fileInfo.size-t+i;return -1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess())return void A("Cannot reading central-directory without random-read support");A("Reading central-directory...");let e=this.tokenizer.position,t=await this.findEndOfCentralDirectoryLocator();if(t>0){A("Central-directory 32-bit signature found");let r=await this.tokenizer.readToken(I,t),i=[];this.tokenizer.setPosition(r.offsetOfStartOfCd);for(let e=0;e<r.nrOfEntriesOfSize;++e){let t=await this.tokenizer.readToken(v);if(0x2014b50!==t.signature)throw Error("Expected Central-File-Header signature");t.filename=await this.tokenizer.readToken(new x.StringType(t.filenameLength,"utf-8")),await this.tokenizer.ignore(t.extraFieldLength),await this.tokenizer.ignore(t.fileCommentLength),i.push(t),A(`Add central-directory file-entry: n=${e+1}/${i.length}: filename=${i[e].filename}`)}return this.tokenizer.setPosition(e),i}this.tokenizer.setPosition(e)}async unzip(e){let t=await this.readCentralDirectory();if(t)return this.iterateOverCentralDirectory(t,e);let r=!1;do{let t,i=await this.readLocalFileHeader();if(!i)break;let a=e(i);if(r=!!a.stop,await this.tokenizer.ignore(i.extraFieldLength),i.dataDescriptor&&0===i.compressedSize){let e=[],t=262144;A("Compressed-file-size unknown, scanning for next data-descriptor-signature....");let r=-1;for(;r<0&&262144===t;){t=await this.tokenizer.peekBuffer(this.syncBuffer,{mayBeLess:!0});let i=(r=function(e,t){let r=e.length,i=t.length;if(i>r)return -1;for(let a=0;a<=r-i;a++){let r=!0;for(let n=0;n<i;n++)if(e[a+n]!==t[n]){r=!1;break}if(r)return a}return -1}(this.syncBuffer.subarray(0,t),_))>=0?r:t;if(a.handler){let t=new Uint8Array(i);await this.tokenizer.readBuffer(t),e.push(t)}else await this.tokenizer.ignore(i)}A(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),a.handler&&await this.inflate(i,function(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),r=0;for(let i of e)t.set(i,r),r+=i.length;return t}(e),a.handler)}else a.handler?(A(`Reading compressed-file-data: ${i.compressedSize} bytes`),t=new Uint8Array(i.compressedSize),await this.tokenizer.readBuffer(t),await this.inflate(i,t,a.handler)):(A(`Ignoring compressed-file-data: ${i.compressedSize} bytes`),await this.tokenizer.ignore(i.compressedSize));if(A(`Reading data-descriptor at pos=${this.tokenizer.position}`),i.dataDescriptor&&0x8074b50!==(await this.tokenizer.readToken(w)).signature)throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-w.len}`)}while(!r)}async iterateOverCentralDirectory(e,t){for(let r of e){let e=t(r);if(e.handler){this.tokenizer.setPosition(r.relativeOffsetOfLocalHeader);let t=await this.readLocalFileHeader();if(t){await this.tokenizer.ignore(t.extraFieldLength);let i=new Uint8Array(r.compressedSize);await this.tokenizer.readBuffer(i),await this.inflate(t,i,e.handler)}}if(e.stop)break}}async inflate(e,t,r){if(0===e.compressedMethod)return r(t);if(8!==e.compressedMethod)throw Error(`Unsupported ZIP compression method: ${e.compressedMethod}`);return A(`Decompress filename=${e.filename}, compressed-size=${t.length}`),r(await C.decompressDeflateRaw(t))}static async decompressDeflateRaw(e){let t=new ReadableStream({start(t){t.enqueue(e),t.close()}}),r=new DecompressionStream("deflate-raw"),i=t.pipeThrough(r);try{let e=new Response(i),t=await e.arrayBuffer();return new Uint8Array(t)}catch(e){throw TypeError(e instanceof Error?`Failed to deflate ZIP entry: ${e.message}`:"Unknown decompression error in ZIP entry")}}async readLocalFileHeader(){let e=await this.tokenizer.peekToken(x.UINT32_LE);if(0x4034b50===e){let e=await this.tokenizer.readToken(S);return e.filename=await this.tokenizer.readToken(new x.StringType(e.filenameLength,"utf-8")),e}if(0x2014b50===e)return!1;if(0xe011cfd0===e)throw Error("Encrypted ZIP");throw Error("Unexpected signature")}}class N{constructor(e){this.tokenizer=e}inflate(){let e=this.tokenizer;return new ReadableStream({async pull(t){let r=new Uint8Array(1024),i=await e.readBuffer(r,{mayBeLess:!0});0===i?t.close():t.enqueue(r.subarray(0,i))}}).pipeThrough(new DecompressionStream("gzip"))}}var M=e.i(44397);let R={get:(e,t)=>127&e[t+3]|e[t+2]<<7|e[t+1]<<14|e[t]<<21,len:4},L=0x80000000-1,P=new Set(["Unexpected signature","Encrypted ZIP","Expected Central-File-Header signature"]),D=["ZIP entry count exceeds ","Unsupported ZIP compression method:","ZIP entry compressed data exceeds ","ZIP entry decompressed data exceeds ","Expected data-descriptor-signature at position "],O=new Set(["Z_BUF_ERROR","Z_DATA_ERROR","ERR_INVALID_STATE"]);class U extends Error{}function B(e,t,r){if(!Number.isFinite(e)||e<0||e>t)throw new U(`${r} has invalid size ${e} (maximum ${t} bytes)`);return e}async function j(e,t,{maximumLength:r=0x1000000,reason:i="skip"}={}){let a=B(t,r,i);await e.ignore(a)}async function F(e,t,r,{maximumLength:i=t.length,reason:a="read"}={}){let n=B(r?.length??t.length,i,a);return e.readBuffer(t,{...r,length:n})}async function X(e,{maximumLength:t=1048576}={}){let r=new ReadableStream({start(t){t.enqueue(e),t.close()}}).pipeThrough(new DecompressionStream("deflate-raw")).getReader(),i=[],a=0;try{for(;;){let{done:e,value:n}=await r.read();if(e)break;if((a+=n.length)>t)throw await r.cancel(),Error(`ZIP entry decompressed data exceeds ${t} bytes`);i.push(n)}}finally{r.releaseLock()}let n=new Uint8Array(a),s=0;for(let e of i)n.set(e,s),s+=e.length;return n}async function $(e,{shouldBuffer:t,maximumLength:r=1048576}={}){let{syncBuffer:i}=e,{length:a}=i,n=[],s=0;for(;;){let o=await e.tokenizer.peekBuffer(i,{mayBeLess:!0}),l=function(e,t){if(e.length<16)return -1;let r=e.length-16;for(let i=0;i<=r;i++)if(0x8074b50===x.UINT32_LE.get(e,i)&&x.UINT32_LE.get(e,i+8)===t+i)return i;return -1}(i.subarray(0,o),s),c=l>=0?0:o===a?Math.min(15,o-1):0,u=l>=0?l:o-c;if(0===u)break;if((s+=u)>r)throw Error(`ZIP entry compressed data exceeds ${r} bytes`);if(t){let t=new Uint8Array(u);await e.tokenizer.readBuffer(t),n.push(t)}else await e.tokenizer.ignore(u);if(l>=0)break}if(V(e.tokenizer)||(e.knownSizeDescriptorScannedBytes+=s),t){let e=new Uint8Array(s),t=0;for(let r of n)e.set(r,t),t+=r.length;return e}}async function G(e,t,{shouldBuffer:r,maximumDescriptorLength:i=1048576}={}){var a;let n;if(t.dataDescriptor&&0===t.compressedSize)return $(e,{shouldBuffer:r,maximumLength:i});if(!r)return void await j(e.tokenizer,t.compressedSize,{maximumLength:V(e.tokenizer)?1048576:e.tokenizer.fileInfo.size,reason:"ZIP entry compressed data"});let s=Math.min(Number.isFinite(n=(a=e.tokenizer).fileInfo.size)?Math.max(0,n-a.position):Number.MAX_SAFE_INTEGER,L);if(!Number.isFinite(t.compressedSize)||t.compressedSize<0||t.compressedSize>s)throw Error(`ZIP entry compressed data exceeds ${s} bytes`);let o=new Uint8Array(t.compressedSize);return await e.tokenizer.readBuffer(o),o}async function W(e,t){return new Q(t).fromBuffer(e)}function q(e){switch(e=e.toLowerCase()){case"application/epub+zip":return{ext:"epub",mime:e};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:e};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:e};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:e};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:e};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:e};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:e};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:e};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:e};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:e};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:e};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:e};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:e};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:e};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:e};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:e};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"}}}function Y(e,t,r){for(let[i,a]of(r={offset:0,...r},t.entries()))if(r.mask){if(a!==(r.mask[i]&e[i+r.offset]))return!1}else if(a!==e[i+r.offset])return!1;return!0}function V(e){let t=e.fileInfo.size;return!Number.isFinite(t)||t===Number.MAX_SAFE_INTEGER}function Z(e,t,r){return V(e)&&e.position-t>r}function K(e,t=1048576){for(let r of[e.compressedSize,e.uncompressedSize])if(!Number.isFinite(r)||r<0||r>t)return!1;return!0}function H(e){if(e.hasContentTypesEntry&&!e.hasUnparseableContentTypes&&!e.isParsingContentTypes&&!e.hasParsedContentTypesEntry){if(e.hasWordDirectory)return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(e.hasPresentationDirectory)return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(e.hasSpreadsheetDirectory)return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};if(e.hasThreeDimensionalModelEntry)return{ext:"3mf",mime:"model/3mf"}}}C.prototype.inflate=async function(e,t,r){if(0===e.compressedMethod)return r(t);if(8!==e.compressedMethod)throw Error(`Unsupported ZIP compression method: ${e.compressedMethod}`);return r(await X(t,{maximumLength:1048576}))},C.prototype.unzip=async function(e){let t=!1,r=0,i=this.tokenizer.position;this.knownSizeDescriptorScannedBytes=0;do{if(Z(this.tokenizer,i,0x1000000))throw new U("ZIP stream probing exceeds 16777216 bytes");let a=await this.readLocalFileHeader();if(!a)break;if(++r>1024)throw Error("ZIP entry count exceeds 1024");let n=e(a);t=!!n.stop,await this.tokenizer.ignore(a.extraFieldLength);let s=await G(this,a,{shouldBuffer:!!n.handler,maximumDescriptorLength:Math.min(1048576,V(this.tokenizer)?Math.max(0,0x1000000-(this.tokenizer.position-i)):Math.max(0,1048576-this.knownSizeDescriptorScannedBytes))});if(n.handler&&await this.inflate(a,s,n.handler),a.dataDescriptor){let e=new Uint8Array(16);if(await this.tokenizer.readBuffer(e),0x8074b50!==x.UINT32_LE.get(e,0))throw Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-e.length}`)}if(Z(this.tokenizer,i,0x1000000))throw new U("ZIP stream probing exceeds 16777216 bytes")}while(!t)};class Q{constructor(e){const t=function(e){return Number.isFinite(e)?Math.max(0,Math.min(4098,Math.trunc(e))):0}(e?.mpegOffsetTolerance);this.options={...e,mpegOffsetTolerance:t},this.detectors=[...this.options.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:this.options.signal},this.gzipProbeDepth=0}getTokenizerOptions(){return{...this.tokenizerOptions}}createTokenizerFromWebStream(e){return function(e){let t=e?.streamReader;if(t?.constructor?.name!=="WebStreamByobReader")return e;let{reader:r}=t,i=async()=>{await r.cancel(),r.releaseLock()};return t.close=i,t.abort=async()=>{t.interrupted=!0,await i()},e}(y.fromWebStream(e,this.getTokenizerOptions()))}async parseTokenizer(e,t=0){this.detectionReentryCount=t;let r=e.position;for(let t of this.detectors){let i;try{i=await t.detect(e)}catch(e){if(e instanceof k.EndOfStreamError||e instanceof U)return;throw e}if(i)return i;if(r!==e.position)return}}async fromTokenizer(e){try{return await this.parseTokenizer(e)}finally{await e.close()}}async fromBuffer(e){if(!(e instanceof Uint8Array||e instanceof ArrayBuffer))throw TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof e}\``);let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t?.length>1)return this.fromTokenizer(y.fromBuffer(t,this.getTokenizerOptions()))}async fromBlob(e){this.options.signal?.throwIfAborted();let t=y.fromBlob(e,this.getTokenizerOptions());return this.fromTokenizer(t)}async fromStream(e){this.options.signal?.throwIfAborted();let t=this.createTokenizerFromWebStream(e);return this.fromTokenizer(t)}async toDetectionStream(e,t){var r,i,a;let n,s,o=Number.isFinite(r=t?.sampleSize??4100)?Math.max(1,Math.trunc(r)):4100,l=e.getReader({mode:"byob"});try{let{value:e,done:t}=await (i=new Uint8Array(o),a=this.options.signal,void 0===a?l.read(i):(a.throwIfAborted(),new Promise((e,t)=>{let r=()=>{a.removeEventListener("abort",n)},n=()=>{let e=a.reason;r(),(async()=>{try{await l.cancel(e)}catch{}})(),t(e)};a.addEventListener("abort",n,{once:!0}),(async()=>{try{let t=await l.read(i);r(),e(t)}catch(e){r(),t(e)}})()})));if(s=e,!t&&e)try{n=await this.fromBuffer(e.subarray(0,o))}catch(e){if(!(e instanceof k.EndOfStreamError))throw e;n=void 0}s=e}finally{l.releaseLock()}let c=new TransformStream({async start(e){e.enqueue(s)},transform(e,t){t.enqueue(e)}}),u=e.pipeThrough(c);return u.fileType=n,u}async detectGzip(e){let t,r,i,a,n,s,o,l,c;if(this.gzipProbeDepth>=1)return{ext:"gz",mime:"application/gzip"};let u=(n=new N(e).inflate().getReader(),s=0,o=!1,l=!1,c=async e=>{o||l||(l=!0,await n.cancel(e))},new ReadableStream({async pull(e){if(s>=0x1000000){e.close(),await c();return}let{done:t,value:r}=await n.read();if(t||!r){o=!0,e.close();return}let i=0x1000000-s;if(r.length>i){e.enqueue(r.subarray(0,i)),s+=i,e.close(),await c();return}e.enqueue(r),s+=r.length},async cancel(e){await c(e)}})),m=V(e);if(m){let e=new AbortController;t=setTimeout(()=>{e.abort(new DOMException("Operation timed out after 100 ms","TimeoutError"))},100),r=void 0===this.options.signal?e.signal:AbortSignal.any([this.options.signal,e.signal]),(i=new Q({...this.options,signal:r})).gzipProbeDepth=this.gzipProbeDepth+1}else this.gzipProbeDepth++;try{a=await (i??this).fromStream(u)}catch(e){if(e?.name==="AbortError"&&r?.reason?.name!=="TimeoutError")throw e}finally{clearTimeout(t),!m&&this.gzipProbeDepth--}return a?.ext==="tar"?{ext:"tar.gz",mime:"application/gzip"}:{ext:"gz",mime:"application/gzip"}}check(e,t){return Y(this.buffer,e,t)}checkString(e,t){return this.check(function(e,t){if("utf-16le"===t){let t=[];for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t.push(255&i,i>>8&255)}return t}if("utf-16be"===t){let t=[];for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t.push(i>>8&255,255&i)}return t}return[...e].map(e=>e.charCodeAt(0))}(e,t?.encoding),t)}detectConfident=async e=>{if(this.buffer=new Uint8Array(4100),void 0===e.fileInfo.size&&(e.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=e,V(e)&&(await e.peekBuffer(this.buffer,{length:3,mayBeLess:!0}),this.check([31,139,8])))return this.detectGzip(e);if(await e.peekBuffer(this.buffer,{length:32,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return(await e.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14}))?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191])){if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,await this.tokenizer.ignore(3),this.detectConfident(e)}if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return this.detectGzip(e);if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await j(e,6,{maximumLength:6,reason:"ID3 header prefix"});let t=await e.readToken(R),r=V(e);if(!Number.isFinite(t)||t<0||r&&(t>0x1000000||e.position+t>0x1000000))return;if(e.position+t>e.fileInfo.size){if(r)return;return{ext:"mp3",mime:"audio/mpeg"}}try{await j(e,t,{maximumLength:r?0x1000000:e.fileInfo.size,reason:"ID3 payload"})}catch(e){if(e instanceof k.EndOfStreamError)return;throw e}if(this.detectionReentryCount>=256)return;return this.detectionReentryCount++,this.parseTokenizer(e,this.detectionReentryCount)}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((67===this.buffer[0]||70===this.buffer[0])&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let t,r={hasContentTypesEntry:!1,hasParsedContentTypesEntry:!1,isParsingContentTypes:!1,hasUnparseableContentTypes:!1,hasWordDirectory:!1,hasPresentationDirectory:!1,hasSpreadsheetDirectory:!1,hasThreeDimensionalModelEntry:!1};try{await new C(e).unzip(e=>{var i;(i=e.filename).startsWith("word/")&&(r.hasWordDirectory=!0),i.startsWith("ppt/")&&(r.hasPresentationDirectory=!0),i.startsWith("xl/")&&(r.hasSpreadsheetDirectory=!0),i.startsWith("3D/")&&i.endsWith(".model")&&(r.hasThreeDimensionalModelEntry=!0);let a="[Content_Types].xml"===e.filename,n=H(r);if(!a&&n)return t=n,{stop:!0};switch(e.filename){case"META-INF/mozilla.rsa":return t={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return t={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":if(!K(e,1048576))return{};return{async handler(e){let r=new TextDecoder("utf-8").decode(e).trim();t=q(r)},stop:!0};case"[Content_Types].xml":if(r.hasContentTypesEntry=!0,!K(e,1048576))return r.hasUnparseableContentTypes=!0,{};return r.isParsingContentTypes=!0,{async handler(e){let i=new TextDecoder("utf-8").decode(e),a=function(e){let t=e.indexOf('.main+xml"');if(-1===t){let t="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";return e.includes(`ContentType="${t}"`)?t:void 0}let r=e.slice(0,t),i=r.lastIndexOf('"');return r.slice(i+1)}(i);a&&(t=q(a)),r.hasParsedContentTypesEntry=!0,r.isParsingContentTypes=!1},stop:!0};default:if(/classes\d*\.dex/.test(e.filename))return t={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0};return{}}})}catch(e){if(!function(e){if(e instanceof k.EndOfStreamError||e instanceof U)return!0;if(!(e instanceof Error))return!1;if(P.has(e.message)||O.has(e.code))return!0;for(let t of D)if(e.message.startsWith(t))return!0;return!1}(e))throw e;r.isParsingContentTypes&&(r.isParsingContentTypes=!1,r.hasUnparseableContentTypes=!0)}return t??H(r)??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await e.ignore(28);let t=new Uint8Array(8);return(await e.readBuffer(t),Y(t,[79,112,117,115,72,101,97,100]))?{ext:"opus",mime:"audio/ogg; codecs=opus"}:Y(t,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:Y(t,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:Y(t,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:Y(t,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:Y(t,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(3===this.buffer[2]||5===this.buffer[2]||7===this.buffer[2])&&(4===this.buffer[3]||6===this.buffer[3]||8===this.buffer[3]))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF"))return{ext:"pdf",mime:"application/pdf"};if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let e=await this.readTiffHeader(!1);if(e)return e}if(this.check([77,77])){let e=await this.readTiffHeader(!0);if(e)return e}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function t(){let t=await e.peekNumber(x.UINT8),r=128,i=0;for(;(t&r)==0&&0!==r;)++i,r>>=1;let a=new Uint8Array(i+1);return await F(e,a,void 0,{maximumLength:a.length,reason:"EBML field"}),a}async function r(){let e=await t(),r=await t();r[0]^=128>>r.length-1;let i=Math.min(6,r.length),a=new DataView(e.buffer),n=new DataView(r.buffer,r.length-i,i);return{id:(0,M.getUintBE)(a),len:(0,M.getUintBE)(n)}}async function i(t){let i=0;for(;t>0;){if(++i>256||Z(e,n,0x1000000))return;let a=e.position,s=await r();if(17026===s.id){if(s.len>64)return;let t=B(s.len,64,"EBML DocType");return(await e.readToken(new x.StringType(t))).replaceAll(/\00.*$/g,"")}if(V(e)&&(!Number.isFinite(s.len)||s.len<0||s.len>1048576)||(await j(e,s.len,{maximumLength:V(e)?1048576:e.fileInfo.size,reason:"EBML payload"}),--t,e.position<=a))return}}let a=await r(),n=e.position;switch(await i(a.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1")||this.checkString("PARE"))return{ext:"parquet",mime:"application/vnd.apache.parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};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]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.checkString("regf"))return{ext:"dat",mime:"application/x-ft-windows-registry-hive"};if(this.checkString("$FL2")||this.checkString("$FL3"))return{ext:"sav",mime:"application/x-spss-sav"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};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}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190])){let e=x.UINT32_BE.get(this.buffer,4),t=x.UINT16_BE.get(this.buffer,6);if(e>0&&e<=30)return{ext:"macho",mime:"application/x-mach-binary"};if(t>30)return{ext:"class",mime:"application/java-vm"}}if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("<?xml "))return{ext:"xml",mime:"application/xml"};if(this.check([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(this.check([82,97,114,33,26,7])&&(0===this.buffer[6]||1===this.buffer[6]))return{ext:"rar",mime:"application/x-rar-compressed"};if(this.checkString("solid "))return{ext:"stl",mime:"model/stl"};if(this.checkString("AC")){let e=new x.StringType(4,"latin1").get(this.buffer,2);if(e.match("^d*")&&e>=1e3&&e<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!<arch>"))return(await e.ignore(8),"debian-binary"===await e.readToken(new x.StringType(13,"ascii")))?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&["\n","\r"," "," ","\0"].some(e=>this.checkString(e,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){let t={ext:"png",mime:"image/png"},r={ext:"apng",mime:"image/apng"};async function a(){return{length:await e.readToken(x.INT32_BE),type:await e.readToken(new x.StringType(4,"latin1"))}}await e.ignore(8);let i=V(e),n=e.position,s=0,o=!1;do{if(++s>512||Z(e,n,0x1000000))break;let l=e.position,c=await a();if(c.length<0)return;if("IHDR"===c.type){if(13!==c.length)return;o=!0}switch(c.type){case"IDAT":return t;case"acTL":return r;default:if(!o&&"CgBI"!==c.type)return;if(i&&c.length>1048576)return o&&(32&c.type.codePointAt(0))!=0?t:void 0;try{await j(e,c.length+4,{maximumLength:i?1048580:e.fileInfo.size,reason:"PNG chunk payload"})}catch(e){if(!i&&(e instanceof U||e instanceof k.EndOfStreamError))return t;throw e}}if(e.position<=l)break}while(e.position+8<e.fileInfo.size)return t}if(this.check([65,82,82,79,87,49,0,0]))return{ext:"arrow",mime:"application/vnd.apache.arrow.file"};if(this.check([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};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}))return{ext:"mov",mime:"video/quicktime"};if(this.check([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(this.checkString("gimp xcf "))return{ext:"xcf",mime:"image/x-xcf"};if(this.checkString("ftyp",{offset:4})&&(96&this.buffer[8])!=0){let e=new x.StringType(4,"latin1").get(this.buffer,8).replace("\0"," ").trim();switch(e){case"avif":case"avis":return{ext:"avif",mime:"image/avif"};case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt":return{ext:"mov",mime:"video/quicktime"};case"M4V":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P":return{ext:"m4p",mime:"video/mp4"};case"M4B":return{ext:"m4b",mime:"audio/mp4"};case"M4A":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V":return{ext:"f4v",mime:"video/mp4"};case"F4P":return{ext:"f4p",mime:"video/mp4"};case"F4A":return{ext:"f4a",mime:"audio/mp4"};case"F4B":return{ext:"f4b",mime:"audio/mp4"};case"crx":return{ext:"cr3",mime:"image/x-canon-cr3"};default:if(e.startsWith("3g")){if(e.startsWith("3g2"))return{ext:"3g2",mime:"video/3gpp2"};return{ext:"3gp",mime:"video/3gpp"}}return{ext:"mp4",mime:"video/mp4"}}}if(this.checkString("REGEDIT4\r\n"))return{ext:"reg",mime:"application/x-ms-regedit"};if(this.check([82,73,70,70])){if(this.checkString("WEBP",{offset:8}))return{ext:"webp",mime:"image/webp"};if(this.check([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(this.check([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/wav"};if(this.check([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(this.check([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:"rw2",mime:"image/x-panasonic-rw2"};if(this.check([48,38,178,117,142,102,207,17,166,217])){let t=!1;try{async function n(){let t=new Uint8Array(16);return await F(e,t,void 0,{maximumLength:t.length,reason:"ASF header GUID"}),{id:t,size:Number(await e.readToken(x.UINT64_LE))}}await j(e,30,{maximumLength:30,reason:"ASF header prelude"});let r=V(e),i=e.position,a=0;for(;e.position+24<e.fileInfo.size&&!(++a>512||Z(e,i,0x1000000));){let i=e.position,a=await n(),s=a.size-24;if(!Number.isFinite(s)||s<0){t=!0;break}if(Y(a.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let t=new Uint8Array(16);if(s-=await F(e,t,void 0,{maximumLength:t.length,reason:"ASF stream type GUID"}),Y(t,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(Y(t,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}if(r&&s>1048576||(await j(e,s,{maximumLength:r?1048576:e.fileInfo.size,reason:"ASF header payload"}),e.position<=i)){t=!0;break}}}catch(r){if(r instanceof k.EndOfStreamError||r instanceof U)V(e)&&(t=!0);else throw r}if(t)return;return{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await e.ignore(20),await e.readToken(new x.StringType(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.checkString("<?xml ",{offset:2,encoding:"utf-16be"})?{ext:"xml",mime:"application/xml"}:void 0;if(this.check([208,207,17,224,161,177,26,225]))return{ext:"cfb",mime:"application/x-cfb"};if(await e.peekBuffer(this.buffer,{length:Math.min(256,e.fileInfo.size),mayBeLess:!0}),this.check([97,99,115,112],{offset:36}))return{ext:"icc",mime:"application/vnd.iccprofile"};if(this.checkString("**ACE",{offset:7})&&this.checkString("**",{offset:12}))return{ext:"ace",mime:"application/x-ace-compressed"};if(this.checkString("BEGIN:")){if(this.checkString("VCARD",{offset:6}))return{ext:"vcf",mime:"text/vcard"};if(this.checkString("VCALENDAR",{offset:6}))return{ext:"ics",mime:"text/calendar"}}if(this.checkString("FUJIFILMCCD-RAW"))return{ext:"raf",mime:"image/x-fujifilm-raf"};if(this.checkString("Extended Module:"))return{ext:"xm",mime:"audio/x-xm"};if(this.checkString("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(this.check([4,0,0,0])&&this.buffer.length>=16){let e=new DataView(this.buffer.buffer).getUint32(12,!0);if(e>12&&this.buffer.length>=e+16)try{let t=new TextDecoder().decode(this.buffer.subarray(16,e+16));if(JSON.parse(t).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188})||this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};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})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};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]))return{ext:"jmp",mime:"application/x-jmp-data"};if(await e.peekBuffer(this.buffer,{length:Math.min(512,e.fileInfo.size),mayBeLess:!0}),this.checkString("ustar",{offset:257})&&(this.checkString("\0",{offset:262})||this.checkString(" ",{offset:262}))||this.check([0,0,0,0,0,0],{offset:257})&&function(e,t=0){let r=Number.parseInt(new x.StringType(6).get(e,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(r))return!1;let i=256;for(let r=t;r<t+148;r++)i+=e[r];for(let r=t+156;r<t+512;r++)i+=e[r];return r===i}(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254])){let e="utf-16le";return this.checkString("<?xml ",{offset:2,encoding:e})?{ext:"xml",mime:"application/xml"}:this.check([255,14],{offset:2})&&this.checkString("SketchUp Model",{offset:4,encoding:e})?{ext:"skp",mime:"application/vnd.sketchup.skp"}:this.checkString("Windows Registry Editor Version 5.00\r\n",{offset:2,encoding:e})?{ext:"reg",mime:"application/x-ms-regedit"}:void 0}if(this.checkString("-----BEGIN PGP MESSAGE-----"))return{ext:"pgp",mime:"application/pgp-encrypted"}};detectImprecise=async e=>{var t;this.buffer=new Uint8Array(4100);let r=Number.isFinite(t=e.fileInfo.size)?Math.max(0,t):Number.MAX_SAFE_INTEGER;if(await e.peekBuffer(this.buffer,{length:Math.min(8,r),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(await e.peekBuffer(this.buffer,{length:Math.min(2+this.options.mpegOffsetTolerance,r),mayBeLess:!0}),this.buffer.length>=2+this.options.mpegOffsetTolerance)for(let e=0;e<=this.options.mpegOffsetTolerance;++e){let t=this.scanMpeg(e);if(t)return t}};async readTiffTag(e){let t=await this.tokenizer.readToken(e?x.UINT16_BE:x.UINT16_LE);switch(await this.tokenizer.ignore(10),t){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"}}}async readTiffIFD(e){let t=await this.tokenizer.readToken(e?x.UINT16_BE:x.UINT16_LE);if(!(t>512)&&(!V(this.tokenizer)||!(2+12*t>0x1000000)))for(let r=0;r<t;++r){let t=await this.readTiffTag(e);if(t)return t}}async readTiffHeader(e){let t={ext:"tif",mime:"image/tiff"},r=(e?x.UINT16_BE:x.UINT16_LE).get(this.buffer,2),i=(e?x.UINT32_BE:x.UINT32_LE).get(this.buffer,4);if(42===r){let r;if(i>=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(i>=8){let t=(e?x.UINT16_BE:x.UINT16_LE).get(this.buffer,8),r=(e?x.UINT16_BE:x.UINT16_LE).get(this.buffer,10);if(28===t&&254===r||31===t&&11===r)return{ext:"nef",mime:"image/x-nikon-nef"}}}if(V(this.tokenizer)&&i>1048576)return t;let a=V(this.tokenizer)?0x1000000:this.tokenizer.fileInfo.size;try{await j(this.tokenizer,i,{maximumLength:a,reason:"TIFF IFD offset"})}catch(e){if(e instanceof k.EndOfStreamError)return;throw e}try{r=await this.readTiffIFD(e)}catch(e){if(e instanceof k.EndOfStreamError)return;throw e}return r??t}if(43===r)return t}scanMpeg(e){if(this.check([255,224],{offset:e,mask:[255,224]})){if(this.check([16],{offset:e+1,mask:[22]}))return this.check([8],{offset:e+1,mask:[8]}),{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:e+1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:e+1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:e+1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}}}var J=e.i(32537),ee=e.i(82087),et=e.i(9922);let er={multiple:!1},ei={year:er,track:er,disk:er,title:er,artist:er,artists:{multiple:!0,unique:!0},albumartist:er,albumartists:{multiple:!0,unique:!0},album:er,date:er,originaldate:er,originalyear:er,releasedate:er,comment:{multiple:!0,unique:!1},genre:{multiple:!0,unique:!0},picture:{multiple:!0,unique:!0},composer:{multiple:!0,unique:!0},lyrics:{multiple:!0,unique:!1},albumsort:{multiple:!1,unique:!0},titlesort:{multiple:!1,unique:!0},work:{multiple:!1,unique:!0},artistsort:{multiple:!1,unique:!0},albumartistsort:{multiple:!1,unique:!0},composersort:{multiple:!1,unique:!0},lyricist:{multiple:!0,unique:!0},writer:{multiple:!0,unique:!0},conductor:{multiple:!0,unique:!0},remixer:{multiple:!0,unique:!0},arranger:{multiple:!0,unique:!0},engineer:{multiple:!0,unique:!0},producer:{multiple:!0,unique:!0},technician:{multiple:!0,unique:!0},djmixer:{multiple:!0,unique:!0},mixer:{multiple:!0,unique:!0},label:{multiple:!0,unique:!0},grouping:er,subtitle:{multiple:!0},discsubtitle:er,totaltracks:er,totaldiscs:er,compilation:er,rating:{multiple:!0},bpm:er,mood:er,media:er,catalognumber:{multiple:!0,unique:!0},tvShow:er,tvShowSort:er,tvSeason:er,tvEpisode:er,tvEpisodeId:er,tvNetwork:er,podcast:er,podcasturl:er,releasestatus:er,releasetype:{multiple:!0},releasecountry:er,script:er,language:er,copyright:er,license:er,encodedby:er,encodersettings:er,gapless:er,barcode:er,isrc:{multiple:!0},asin:er,musicbrainz_recordingid:er,musicbrainz_trackid:er,musicbrainz_albumid:er,musicbrainz_artistid:{multiple:!0},musicbrainz_albumartistid:{multiple:!0},musicbrainz_releasegroupid:er,musicbrainz_workid:er,musicbrainz_trmid:er,musicbrainz_discid:er,acoustid_id:er,acoustid_fingerprint:er,musicip_puid:er,musicip_fingerprint:er,website:er,"performer:instrument":{multiple:!0,unique:!0},averageLevel:er,peakLevel:er,notes:{multiple:!0,unique:!1},key:er,originalalbum:er,originalartist:er,discogs_artist_id:{multiple:!0,unique:!0},discogs_release_id:er,discogs_label_id:er,discogs_master_release_id:er,discogs_votes:er,discogs_rating:er,replaygain_track_peak:er,replaygain_track_gain:er,replaygain_album_peak:er,replaygain_album_gain:er,replaygain_track_minmax:er,replaygain_album_minmax:er,replaygain_undo:er,description:{multiple:!0},longDescription:er,category:{multiple:!0},hdVideo:er,keywords:{multiple:!0},movement:er,movementIndex:er,movementTotal:er,podcastId:er,showMovement:er,stik:er,playCounter:er};class ea{static toIntOrNull(e){let t=Number.parseInt(e,10);return Number.isNaN(t)?null:t}static normalizeTrack(e){let t=e.toString().split("/");return{no:Number.parseInt(t[0],10)||null,of:Number.parseInt(t[1],10)||null}}constructor(e,t){this.tagTypes=e,this.tagMap=t}mapGenericTag(e,t){e={id:e.id,value:e.value},this.postMap(e,t);let r=this.getCommonName(e.id);return r?{id:r,value:e.value}:null}getCommonName(e){return this.tagMap[e]}postMap(e,t){}}ea.maxRatingScore=1;let en={title:"title",artist:"artist",album:"album",year:"year",comment:"comment",track:"track",genre:"genre"};class es extends ea{constructor(){super(["ID3v1"],en)}}class eo extends ea{constructor(e,t){const r={};for(const e of Object.keys(t))r[e.toUpperCase()]=t[e];super(e,r)}getCommonName(e){return this.tagMap[e.toUpperCase()]}}var el=e.i(94569);let ec={TIT2:"title",TPE1:"artist","TXXX:Artists":"artists",TPE2:"albumartist",TALB:"album",TDRV:"date",TORY:"originalyear",TPOS:"disk",TCON:"genre",APIC:"picture",TCOM:"composer",USLT:"lyrics",TSOA:"albumsort",TSOT:"titlesort",TOAL:"originalalbum",TSOP:"artistsort",TSO2:"albumartistsort",TSOC:"composersort",TEXT:"lyricist","TXXX:Writer":"writer",TPE3:"conductor",TPE4:"remixer","IPLS:arranger":"arranger","IPLS:engineer":"engineer","IPLS:producer":"producer","IPLS:DJ-mix":"djmixer","IPLS:mix":"mixer",TPUB:"label",TIT1:"grouping",TIT3:"subtitle",TRCK:"track",TCMP:"compilation",POPM:"rating",TBPM:"bpm",TMED:"media","TXXX:CATALOGNUMBER":"catalognumber","TXXX:MusicBrainz Album Status":"releasestatus","TXXX:MusicBrainz Album Type":"releasetype","TXXX:MusicBrainz Album Release Country":"releasecountry","TXXX:RELEASECOUNTRY":"releasecountry","TXXX:SCRIPT":"script",TLAN:"language",TCOP:"copyright",WCOP:"license",TENC:"encodedby",TSSE:"encodersettings","TXXX:BARCODE":"barcode","TXXX:ISRC":"isrc",TSRC:"isrc","TXXX:ASIN":"asin","TXXX:originalyear":"originalyear","UFID:http://musicbrainz.org":"musicbrainz_recordingid","TXXX:MusicBrainz Release Track Id":"musicbrainz_trackid","TXXX:MusicBrainz Album Id":"musicbrainz_albumid","TXXX:MusicBrainz Artist Id":"musicbrainz_artistid","TXXX:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","TXXX:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","TXXX:MusicBrainz Work Id":"musicbrainz_workid","TXXX:MusicBrainz TRM Id":"musicbrainz_trmid","TXXX:MusicBrainz Disc Id":"musicbrainz_discid","TXXX:ACOUSTID_ID":"acoustid_id","TXXX:Acoustid Id":"acoustid_id","TXXX:Acoustid Fingerprint":"acoustid_fingerprint","TXXX:MusicIP PUID":"musicip_puid","TXXX:MusicMagic Fingerprint":"musicip_fingerprint",WOAR:"website",TDRC:"date",TYER:"year",TDOR:"originaldate","TIPL:arranger":"arranger","TIPL:engineer":"engineer","TIPL:producer":"producer","TIPL:DJ-mix":"djmixer","TIPL:mix":"mixer",TMOO:"mood",SYLT:"lyrics",TSST:"discsubtitle",TKEY:"key",COMM:"comment",TOPE:"originalartist","PRIV:AverageLevel":"averageLevel","PRIV:PeakLevel":"peakLevel","TXXX:DISCOGS_ARTIST_ID":"discogs_artist_id","TXXX:DISCOGS_ARTISTS":"artists","TXXX:DISCOGS_ARTIST_NAME":"artists","TXXX:DISCOGS_ALBUM_ARTISTS":"albumartist","TXXX:DISCOGS_CATALOG":"catalognumber","TXXX:DISCOGS_COUNTRY":"releasecountry","TXXX:DISCOGS_DATE":"originaldate","TXXX:DISCOGS_LABEL":"label","TXXX:DISCOGS_LABEL_ID":"discogs_label_id","TXXX:DISCOGS_MASTER_RELEASE_ID":"discogs_master_release_id","TXXX:DISCOGS_RATING":"discogs_rating","TXXX:DISCOGS_RELEASED":"date","TXXX:DISCOGS_RELEASE_ID":"discogs_release_id","TXXX:DISCOGS_VOTES":"discogs_votes","TXXX:CATALOGID":"catalognumber","TXXX:STYLE":"genre","TXXX:REPLAYGAIN_TRACK_PEAK":"replaygain_track_peak","TXXX:REPLAYGAIN_TRACK_GAIN":"replaygain_track_gain","TXXX:REPLAYGAIN_ALBUM_PEAK":"replaygain_album_peak","TXXX:REPLAYGAIN_ALBUM_GAIN":"replaygain_album_gain","TXXX:MP3GAIN_MINMAX":"replaygain_track_minmax","TXXX:MP3GAIN_ALBUM_MINMAX":"replaygain_album_minmax","TXXX:MP3GAIN_UNDO":"replaygain_undo",MVNM:"movement",MVIN:"movementIndex",PCST:"podcast",TCAT:"category",TDES:"description",TDRL:"releasedate",TGID:"podcastId",TKWD:"keywords",WFED:"podcasturl",GRP1:"grouping",PCNT:"playCounter"};class eu extends eo{static toRating(e){return{source:e.email,rating:e.rating>0?(e.rating-1)/254*ea.maxRatingScore:void 0}}constructor(){super(["ID3v2.3","ID3v2.4"],ec)}postMap(e,t){switch(e.id){case"UFID":{let t=e.value;"http://musicbrainz.org"===t.owner_identifier&&(e.id+=`:${t.owner_identifier}`,e.value=(0,el.decodeString)(t.identifier,"latin1"))}break;case"PRIV":{let r=e.value;switch(r.owner_identifier){case"AverageLevel":case"PeakValue":e.id+=`:${r.owner_identifier}`,e.value=4===r.data.length?x.UINT32_LE.get(r.data,0):null,null===e.value&&t.addWarning("Failed to parse PRIV:PeakValue");break;default:t.addWarning(`Unknown PRIV owner-identifier: ${r.data}`)}}break;case"POPM":e.value=eu.toRating(e.value)}}}let em={Title:"title",Author:"artist","WM/AlbumArtist":"albumartist","WM/AlbumTitle":"album","WM/Year":"date","WM/OriginalReleaseTime":"originaldate","WM/OriginalReleaseYear":"originalyear",Description:"comment","WM/TrackNumber":"track","WM/PartOfSet":"disk","WM/Genre":"genre","WM/Composer":"composer","WM/Lyrics":"lyrics","WM/AlbumSortOrder":"albumsort","WM/TitleSortOrder":"titlesort","WM/ArtistSortOrder":"artistsort","WM/AlbumArtistSortOrder":"albumartistsort","WM/ComposerSortOrder":"composersort","WM/Writer":"lyricist","WM/Conductor":"conductor","WM/ModifiedBy":"remixer","WM/Engineer":"engineer","WM/Producer":"producer","WM/DJMixer":"djmixer","WM/Mixer":"mixer","WM/Publisher":"label","WM/ContentGroupDescription":"grouping","WM/SubTitle":"subtitle","WM/SetSubTitle":"discsubtitle","WM/IsCompilation":"compilation","WM/SharedUserRating":"rating","WM/BeatsPerMinute":"bpm","WM/Mood":"mood","WM/Media":"media","WM/CatalogNo":"catalognumber","MusicBrainz/Album Status":"releasestatus","MusicBrainz/Album Type":"releasetype","MusicBrainz/Album Release Country":"releasecountry","WM/Script":"script","WM/Language":"language",Copyright:"copyright",LICENSE:"license","WM/EncodedBy":"encodedby","WM/EncodingSettings":"encodersettings","WM/Barcode":"barcode","WM/ISRC":"isrc","MusicBrainz/Track Id":"musicbrainz_recordingid","MusicBrainz/Release Track Id":"musicbrainz_trackid","MusicBrainz/Album Id":"musicbrainz_albumid","MusicBrainz/Artist Id":"musicbrainz_artistid","MusicBrainz/Album Artist Id":"musicbrainz_albumartistid","MusicBrainz/Release Group Id":"musicbrainz_releasegroupid","MusicBrainz/Work Id":"musicbrainz_workid","MusicBrainz/TRM Id":"musicbrainz_trmid","MusicBrainz/Disc Id":"musicbrainz_discid","Acoustid/Id":"acoustid_id","Acoustid/Fingerprint":"acoustid_fingerprint","MusicIP/PUID":"musicip_puid","WM/ARTISTS":"artists","WM/InitialKey":"key",ASIN:"asin","WM/Work":"work","WM/AuthorURL":"website","WM/Picture":"picture"};class ed extends ea{static toRating(e){return{rating:Number.parseFloat(e+1)/5}}constructor(){super(["asf"],em)}postMap(e){if("WM/SharedUserRating"===e.id){let t=e.id.split(":");e.value=ed.toRating(e.value),e.id=t[0]}}}let ef={TT2:"title",TP1:"artist",TP2:"albumartist",TAL:"album",TYE:"year",COM:"comment",TRK:"track",TPA:"disk",TCO:"genre",PIC:"picture",TCM:"composer",TOR:"originaldate",TOT:"originalalbum",TXT:"lyricist",TP3:"conductor",TPB:"label",TT1:"grouping",TT3:"subtitle",TLA:"language",TCR:"copyright",WCP:"license",TEN:"encodedby",TSS:"encodersettings",WAR:"website",PCS:"podcast",TCP:"compilation",TDR:"date",TS2:"albumartistsort",TSA:"albumsort",TSC:"composersort",TSP:"artistsort",TST:"titlesort",WFD:"podcasturl",TBP:"bpm",GP1:"grouping"};class ep extends eo{constructor(){super(["ID3v2.2"],ef)}}let eh={Title:"title",Artist:"artist",Artists:"artists","Album Artist":"albumartist",Album:"album",Year:"date",Originalyear:"originalyear",Originaldate:"originaldate",Releasedate:"releasedate",Comment:"comment",Track:"track",Disc:"disk",DISCNUMBER:"disk",Genre:"genre","Cover Art (Front)":"picture","Cover Art (Back)":"picture",Composer:"composer",Lyrics:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",Lyricist:"lyricist",Writer:"writer",Conductor:"conductor",MixArtist:"remixer",Arranger:"arranger",Engineer:"engineer",Producer:"producer",DJMixer:"djmixer",Mixer:"mixer",Label:"label",Grouping:"grouping",Subtitle:"subtitle",DiscSubtitle:"discsubtitle",Compilation:"compilation",BPM:"bpm",Mood:"mood",Media:"media",CatalogNumber:"catalognumber",MUSICBRAINZ_ALBUMSTATUS:"releasestatus",MUSICBRAINZ_ALBUMTYPE:"releasetype",RELEASECOUNTRY:"releasecountry",Script:"script",Language:"language",Copyright:"copyright",LICENSE:"license",EncodedBy:"encodedby",EncoderSettings:"encodersettings",Barcode:"barcode",ISRC:"isrc",ASIN:"asin",musicbrainz_trackid:"musicbrainz_recordingid",musicbrainz_releasetrackid:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",Acoustid_Id:"acoustid_id",ACOUSTID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",Weblink:"website",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",MP3GAIN_MINMAX:"replaygain_track_minmax",MP3GAIN_UNDO:"replaygain_undo"};class eg extends eo{constructor(){super(["APEv2"],eh)}}let eb={"©nam":"title","©ART":"artist",aART:"albumartist","----:com.apple.iTunes:Band":"albumartist","©alb":"album","©day":"date","©cmt":"comment","©com":"comment",trkn:"track",disk:"disk","©gen":"genre",covr:"picture","©wrt":"composer","©lyr":"lyrics",soal:"albumsort",sonm:"titlesort",soar:"artistsort",soaa:"albumartistsort",soco:"composersort","----:com.apple.iTunes:LYRICIST":"lyricist","----:com.apple.iTunes:CONDUCTOR":"conductor","----:com.apple.iTunes:REMIXER":"remixer","----:com.apple.iTunes:ENGINEER":"engineer","----:com.apple.iTunes:PRODUCER":"producer","----:com.apple.iTunes:DJMIXER":"djmixer","----:com.apple.iTunes:MIXER":"mixer","----:com.apple.iTunes:LABEL":"label","©grp":"grouping","----:com.apple.iTunes:SUBTITLE":"subtitle","----:com.apple.iTunes:DISCSUBTITLE":"discsubtitle",cpil:"compilation",tmpo:"bpm","----:com.apple.iTunes:MOOD":"mood","----:com.apple.iTunes:MEDIA":"media","----:com.apple.iTunes:CATALOGNUMBER":"catalognumber",tvsh:"tvShow",tvsn:"tvSeason",tves:"tvEpisode",sosn:"tvShowSort",tven:"tvEpisodeId",tvnn:"tvNetwork",pcst:"podcast",purl:"podcasturl","----:com.apple.iTunes:MusicBrainz Album Status":"releasestatus","----:com.apple.iTunes:MusicBrainz Album Type":"releasetype","----:com.apple.iTunes:MusicBrainz Album Release Country":"releasecountry","----:com.apple.iTunes:SCRIPT":"script","----:com.apple.iTunes:LANGUAGE":"language",cprt:"copyright","©cpy":"copyright","----:com.apple.iTunes:LICENSE":"license","©too":"encodedby",pgap:"gapless","----:com.apple.iTunes:BARCODE":"barcode","----:com.apple.iTunes:ISRC":"isrc","----:com.apple.iTunes:ASIN":"asin","----:com.apple.iTunes:NOTES":"comment","----:com.apple.iTunes:MusicBrainz Track Id":"musicbrainz_recordingid","----:com.apple.iTunes:MusicBrainz Release Track Id":"musicbrainz_trackid","----:com.apple.iTunes:MusicBrainz Album Id":"musicbrainz_albumid","----:com.apple.iTunes:MusicBrainz Artist Id":"musicbrainz_artistid","----:com.apple.iTunes:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","----:com.apple.iTunes:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","----:com.apple.iTunes:MusicBrainz Work Id":"musicbrainz_workid","----:com.apple.iTunes:MusicBrainz TRM Id":"musicbrainz_trmid","----:com.apple.iTunes:MusicBrainz Disc Id":"musicbrainz_discid","----:com.apple.iTunes:Acoustid Id":"acoustid_id","----:com.apple.iTunes:Acoustid Fingerprint":"acoustid_fingerprint","----:com.apple.iTunes:MusicIP PUID":"musicip_puid","----:com.apple.iTunes:fingerprint":"musicip_fingerprint","----:com.apple.iTunes:replaygain_track_gain":"replaygain_track_gain","----:com.apple.iTunes:replaygain_track_peak":"replaygain_track_peak","----:com.apple.iTunes:replaygain_album_gain":"replaygain_album_gain","----:com.apple.iTunes:replaygain_album_peak":"replaygain_album_peak","----:com.apple.iTunes:replaygain_track_minmax":"replaygain_track_minmax","----:com.apple.iTunes:replaygain_album_minmax":"replaygain_album_minmax","----:com.apple.iTunes:replaygain_undo":"replaygain_undo",gnre:"genre","----:com.apple.iTunes:ALBUMARTISTSORT":"albumartistsort","----:com.apple.iTunes:ARTISTS":"artists","----:com.apple.iTunes:ORIGINALDATE":"originaldate","----:com.apple.iTunes:ORIGINALYEAR":"originalyear","----:com.apple.iTunes:RELEASEDATE":"releasedate",desc:"description",ldes:"longDescription","©mvn":"movement","©mvi":"movementIndex","©mvc":"movementTotal","©wrk":"work",catg:"category",egid:"podcastId",hdvd:"hdVideo",keyw:"keywords",shwm:"showMovement",stik:"stik",rate:"rating"};class ey extends eo{constructor(){super(["iTunes"],eb)}postMap(e,t){"rate"===e.id&&(e.value={source:void 0,rating:Number.parseFloat(e.value)/100})}}let ex={TITLE:"title",ARTIST:"artist",ARTISTS:"artists",ALBUMARTIST:"albumartist","ALBUM ARTIST":"albumartist",ALBUM:"album",DATE:"date",ORIGINALDATE:"originaldate",ORIGINALYEAR:"originalyear",RELEASEDATE:"releasedate",COMMENT:"comment",TRACKNUMBER:"track",DISCNUMBER:"disk",GENRE:"genre",METADATA_BLOCK_PICTURE:"picture",COMPOSER:"composer",LYRICS:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",LYRICIST:"lyricist",WRITER:"writer",CONDUCTOR:"conductor",REMIXER:"remixer",ARRANGER:"arranger",ENGINEER:"engineer",PRODUCER:"producer",DJMIXER:"djmixer",MIXER:"mixer",LABEL:"label",GROUPING:"grouping",SUBTITLE:"subtitle",DISCSUBTITLE:"discsubtitle",TRACKTOTAL:"totaltracks",DISCTOTAL:"totaldiscs",COMPILATION:"compilation",RATING:"rating",BPM:"bpm",KEY:"key",MOOD:"mood",MEDIA:"media",CATALOGNUMBER:"catalognumber",RELEASESTATUS:"releasestatus",RELEASETYPE:"releasetype",RELEASECOUNTRY:"releasecountry",SCRIPT:"script",LANGUAGE:"language",COPYRIGHT:"copyright",LICENSE:"license",ENCODEDBY:"encodedby",ENCODERSETTINGS:"encodersettings",BARCODE:"barcode",ISRC:"isrc",ASIN:"asin",MUSICBRAINZ_TRACKID:"musicbrainz_recordingid",MUSICBRAINZ_RELEASETRACKID:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",ACOUSTID_ID:"acoustid_id",ACOUSTID_ID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",WEBSITE:"website",NOTES:"notes",TOTALTRACKS:"totaltracks",TOTALDISCS:"totaldiscs",DISCOGS_ARTIST_ID:"discogs_artist_id",DISCOGS_ARTISTS:"artists",DISCOGS_ARTIST_NAME:"artists",DISCOGS_ALBUM_ARTISTS:"albumartist",DISCOGS_CATALOG:"catalognumber",DISCOGS_COUNTRY:"releasecountry",DISCOGS_DATE:"originaldate",DISCOGS_LABEL:"label",DISCOGS_LABEL_ID:"discogs_label_id",DISCOGS_MASTER_RELEASE_ID:"discogs_master_release_id",DISCOGS_RATING:"discogs_rating",DISCOGS_RELEASED:"date",DISCOGS_RELEASE_ID:"discogs_release_id",DISCOGS_VOTES:"discogs_votes",CATALOGID:"catalognumber",STYLE:"genre",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",REPLAYGAIN_ALBUM_GAIN:"replaygain_album_gain",REPLAYGAIN_ALBUM_PEAK:"replaygain_album_peak",REPLAYGAIN_MINMAX:"replaygain_track_minmax",REPLAYGAIN_ALBUM_MINMAX:"replaygain_album_minmax",REPLAYGAIN_UNDO:"replaygain_undo"};class ek extends ea{static toRating(e,t,r){return{source:e?e.toLowerCase():void 0,rating:Number.parseFloat(t)/r*ea.maxRatingScore}}constructor(){super(["vorbis"],ex)}postMap(e){if("RATING"===e.id)e.value=ek.toRating(void 0,e.value,100);else if(0===e.id.indexOf("RATING:")){let t=e.id.split(":");e.value=ek.toRating(t[1],e.value,1),e.id=t[0]}}}let eT={IART:"artist",ICRD:"date",INAM:"title",TITL:"title",IPRD:"album",ITRK:"track",IPRT:"track",COMM:"comment",ICMT:"comment",ICNT:"releasecountry",GNRE:"genre",IWRI:"writer",RATE:"rating",YEAR:"year",ISFT:"encodedby",CODE:"encodedby",TURL:"website",IGNR:"genre",IENG:"engineer",ITCH:"technician",IMED:"media",IRPD:"album"};class ew extends ea{constructor(){super(["exif"],eT)}}let eS={"segment:title":"title","album:ARTIST":"albumartist","album:ARTISTSORT":"albumartistsort","album:TITLE":"album","album:DATE_RECORDED":"originaldate","album:DATE_RELEASED":"releasedate","album:PART_NUMBER":"disk","album:TOTAL_PARTS":"totaltracks","track:ARTIST":"artist","track:ARTISTSORT":"artistsort","track:TITLE":"title","track:PART_NUMBER":"track","track:MUSICBRAINZ_TRACKID":"musicbrainz_recordingid","track:MUSICBRAINZ_ALBUMID":"musicbrainz_albumid","track:MUSICBRAINZ_ARTISTID":"musicbrainz_artistid","track:PUBLISHER":"label","track:GENRE":"genre","track:ENCODER":"encodedby","track:ENCODER_OPTIONS":"encodersettings","edition:TOTAL_PARTS":"totaldiscs",picture:"picture"};class eI extends eo{constructor(){super(["matroska"],eS)}}let ev={NAME:"title",AUTH:"artist","(c) ":"copyright",ANNO:"comment"};class eE extends ea{constructor(){super(["AIFF"],ev)}}var eA=e.i(56382);class e_{constructor(){this.tagMappers={},[new es,new ep,new eu,new ey,new ey,new ek,new eg,new ed,new ew,new eI,new eE].forEach(e=>{this.registerTagMapper(e)})}mapTag(e,t,r){if(this.tagMappers[e])return this.tagMappers[e].mapGenericTag(t,r);throw new eA.InternalParserError(`No generic tag mapper defined for tag-format: ${e}`)}registerTagMapper(e){for(let t of e.tagTypes)this.tagMappers[t]=e}}var ez=e.i(47587);let eC=/\[(\d{2}):(\d{2})\.(\d{2,3})]/,eN=(0,T.default)("music-metadata:collector"),eM=["matroska","APEv2","vorbis","ID3v2.4","ID3v2.3","ID3v2.2","exif","asf","iTunes","AIFF","ID3v1"];class eR{constructor(e){this.format={tagTypes:[],trackInfo:[]},this.native={},this.common={track:{no:null,of:null},disk:{no:null,of:null},movementIndex:{no:null,of:null}},this.quality={warnings:[]},this.commonOrigin={},this.originPriority={},this.tagMapper=new e_,this.opts=e;let t=1;for(const e of eM)this.originPriority[e]=t++;this.originPriority.artificial=500,this.originPriority.id3v1=600}hasAny(){return Object.keys(this.native).length>0}addStreamInfo(e){eN(`streamInfo: type=${e.type?et.TrackTypeValueToKeyMap[e.type]:"?"}, codec=${e.codecName}`),this.format.trackInfo.push(e)}setFormat(e,t){eN(`format: ${e} = ${t}`),this.format[e]=t,this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"format",id:e,value:t}})}setAudioOnly(){this.setFormat("hasAudio",!0),this.setFormat("hasVideo",!1)}async addTag(e,t,r){eN(`tag ${e}.${t} = ${r}`),this.native[e]||(this.format.tagTypes.push(e),this.native[e]=[]),this.native[e].push({id:t,value:r}),await this.toCommon(e,t,r)}addWarning(e){this.quality.warnings.push({message:e})}async postMap(e,t){switch(t.id){case"artist":return this.handleSingularArtistTag(e,t,"artist","artists");case"albumartist":return this.handleSingularArtistTag(e,t,"albumartist","albumartists");case"artists":return this.handlePluralArtistTag(e,t,"artist","artists");case"albumartists":return this.handlePluralArtistTag(e,t,"albumartist","albumartists");case"picture":return this.postFixPicture(t.value).then(r=>{null!==r&&(t.value=r,this.setGenericTag(e,t))});case"totaltracks":this.common.track.of=ea.toIntOrNull(t.value);return;case"totaldiscs":this.common.disk.of=ea.toIntOrNull(t.value);return;case"movementTotal":this.common.movementIndex.of=ea.toIntOrNull(t.value);return;case"track":case"disk":case"movementIndex":{let e=this.common[t.id].of;this.common[t.id]=ea.normalizeTrack(t.value),this.common[t.id].of=null!=e?e:this.common[t.id].of;return}case"bpm":case"year":case"originalyear":t.value=Number.parseInt(t.value,10);break;case"date":{let e=Number.parseInt(t.value.substr(0,4),10);Number.isNaN(e)||(this.common.year=e);break}case"discogs_label_id":case"discogs_release_id":case"discogs_master_release_id":case"discogs_artist_id":case"discogs_votes":t.value="string"==typeof t.value?Number.parseInt(t.value,10):t.value;break;case"replaygain_track_gain":case"replaygain_track_peak":case"replaygain_album_gain":case"replaygain_album_peak":t.value=(0,el.toRatio)(t.value);break;case"replaygain_track_minmax":t.value=t.value.split(",").map(e=>Number.parseInt(e,10));break;case"replaygain_undo":{let e=t.value.split(",").map(e=>Number.parseInt(e,10));t.value={leftChannel:e[0],rightChannel:e[1]};break}case"gapless":case"compilation":case"podcast":case"showMovement":t.value="1"===t.value||1===t.value;break;case"isrc":{let e=this.common[t.id];if(e&&-1!==e.indexOf(t.value))return;break}case"comment":"string"==typeof t.value&&(t.value={text:t.value}),"iTunPGAP"===t.value.descriptor&&this.setGenericTag(e,{id:"gapless",value:"1"===t.value.text});break;case"lyrics":var r,i;"string"==typeof t.value&&(r=t.value,t.value=eC.test(r)?function(e){let t=e.split("\n"),r=[];for(let e of t){let t=e.match(eC);if(t){let i=(60*Number.parseInt(t[1],10)+Number.parseInt(t[2],10))*1e3+(3===t[3].length?Number.parseInt(t[3],10):10*Number.parseInt(t[3],10)),a=e.replace(eC,"").trim();r.push({timestamp:i,text:a})}}return{contentType:ez.LyricsContentType.lyrics,timeStampFormat:ez.TimestampFormat.milliseconds,text:r.map(e=>e.text).join("\n"),syncText:r}}(r):(i=r,{contentType:ez.LyricsContentType.lyrics,timeStampFormat:ez.TimestampFormat.notSynchronized,text:i.trim(),syncText:[]}))}null!==t.value&&this.setGenericTag(e,t)}toCommonMetadata(){return{format:this.format,native:this.native,quality:this.quality,common:this.common}}handleSingularArtistTag(e,t,r,i){if(this.commonOrigin[r]===this.originPriority[e])return this.postMap("artificial",{id:i,value:t.value});this.common[i]||this.setGenericTag("artificial",{id:i,value:t.value}),this.setGenericTag(e,t)}handlePluralArtistTag(e,t,r,i){if((!this.common[r]||this.commonOrigin[r]===this.originPriority.artificial)&&(!this.common[i]||-1===this.common[i].indexOf(t.value))){var a;let e=(a=(this.common[i]||[]).concat([t.value])).length>2?`${a.slice(0,a.length-1).join(", ")} & ${a[a.length-1]}`:a.join(" & ");this.setGenericTag("artificial",{id:r,value:e})}this.setGenericTag(e,t)}async postFixPicture(e){if(e.data&&e.data.length>0){if(!e.format){let t=await W(Uint8Array.from(e.data));if(!t)return null;e.format=t.mime}return e.format=e.format.toLocaleLowerCase(),"image/jpg"===e.format&&(e.format="image/jpeg"),e}return this.addWarning("Empty picture tag found"),null}async toCommon(e,t,r){let i=this.tagMapper.mapTag(e,{id:t,value:r},this);i&&await this.postMap(e,i)}setGenericTag(e,t){var r,i;eN(`common.${t.id} = ${t.value}`);let a=this.commonOrigin[t.id]||1e3,n=this.originPriority[e];if(ei[r=t.id]&&!ei[r].multiple)if(!(n<=a))return eN(`Ignore native tag (singleton): ${e}.${t.id} = ${t.value}`);else this.common[t.id]=t.value,this.commonOrigin[t.id]=n;else if(n===a)(!ei[i=t.id].multiple||ei[i].unique)&&-1!==this.common[t.id].indexOf(t.value)?eN(`Ignore duplicate value: ${e}.${t.id} = ${t.value}`):this.common[t.id].push(t.value);else{if(!(n<a))return eN(`Ignore native tag (list): ${e}.${t.id} = ${t.value}`);this.common[t.id]=[t.value],this.commonOrigin[t.id]=n}this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"common",id:t.id,value:t.value}})}}let eL={parserType:"mpeg",extensions:[".mp2",".mp3",".m2a",".aac","aacp"],mimeTypes:["audio/mpeg","audio/mp3","audio/aacs","audio/aacp"],load:async()=>(await e.A(4856)).MpegParser},eP={parserType:"apev2",extensions:[".ape"],mimeTypes:["audio/ape","audio/monkeys-audio"],load:async()=>(await e.A(96166)).APEv2Parser},eD={parserType:"asf",extensions:[".asf",".wma",".wmv"],mimeTypes:["audio/ms-wma","video/ms-wmv","audio/ms-asf","video/ms-asf","application/vnd.ms-asf"],load:async()=>(await e.A(97971)).AsfParser},eO={parserType:"dsdiff",extensions:[".dff"],mimeTypes:["audio/dsf","audio/dsd"],load:async()=>(await e.A(99054)).DsdiffParser},eU={parserType:"aiff",extensions:[".aif","aiff","aifc"],mimeTypes:["audio/aiff","audio/aif","audio/aifc","application/aiff"],load:async()=>(await e.A(55758)).AIFFParser},eB={parserType:"dsf",extensions:[".dsf"],mimeTypes:["audio/dsf"],load:async()=>(await e.A(70308)).DsfParser},ej={parserType:"flac",extensions:[".flac"],mimeTypes:["audio/flac"],load:async()=>(await e.A(43602)).FlacParser},eF={parserType:"matroska",extensions:[".mka",".mkv",".mk3d",".mks","webm"],mimeTypes:["audio/matroska","video/matroska","audio/webm","video/webm"],load:async()=>(await e.A(56043)).MatroskaParser},eX={parserType:"mp4",extensions:[".mp4",".m4a",".m4b",".m4pa","m4v","m4r","3gp",".mov",".movie",".qt"],mimeTypes:["audio/mp4","audio/m4a","video/m4v","video/mp4","video/quicktime"],load:async()=>(await e.A(41636)).MP4Parser},e$={parserType:"musepack",extensions:[".mpc"],mimeTypes:["audio/musepack"],load:async()=>(await e.A(95346)).MusepackParser},eG={parserType:"ogg",extensions:[".ogg",".ogv",".oga",".ogm",".ogx",".opus",".spx"],mimeTypes:["audio/ogg","audio/opus","audio/speex","video/ogg"],load:async()=>(await e.A(74814)).OggParser},eW={parserType:"wavpack",extensions:[".wv",".wvp"],mimeTypes:["audio/wavpack"],load:async()=>(await e.A(77549)).WavPackParser},eq={parserType:"riff",extensions:[".wav","wave",".bwf"],mimeTypes:["audio/vnd.wave","audio/wav","audio/wave"],load:async()=>(await e.A(99248)).WaveParser},eY=(0,T.default)("music-metadata:parser:factory");class eV{constructor(){this.parsers=[],[ej,eL,eP,eX,eF,eq,eG,eD,eU,eW,e$,eB,eO].forEach(e=>{this.registerParser(e)})}registerParser(e){this.parsers.push(e)}async parse(e,t,r){if(e.supportsRandomAccess()?(eY("tokenizer supports random-access, scanning for appending headers"),await e0(e,r)):eY("tokenizer does not support random-access, cannot scan for appending headers"),!t){let r=new Uint8Array(4100);if(e.fileInfo.mimeType&&(t=this.findLoaderForContentType(e.fileInfo.mimeType)),!t&&e.fileInfo.path&&(t=this.findLoaderForExtension(e.fileInfo.path)),!t){eY("Guess parser on content..."),await e.peekBuffer(r,{mayBeLess:!0});let i=await W(r,{mpegOffsetTolerance:10});if(!i||!i.mime)throw new eA.CouldNotDetermineFileTypeError("Failed to determine audio format");if(eY(`Guessed file type is mime=${i.mime}, extension=${i.ext}`),!(t=this.findLoaderForContentType(i.mime)))throw new eA.UnsupportedFileTypeError(`Guessed MIME-type not supported: ${i.mime}`)}}eY(`Loading ${t.parserType} parser...`);let i=new eR(r),a=new(await t.load())(i,e,r??{});return eY(`Parser ${t.parserType} loaded`),await a.parse(),i.format.trackInfo&&(void 0===i.format.hasAudio&&i.setFormat("hasAudio",!!i.format.trackInfo.find(e=>e.type===et.TrackType.audio)),void 0===i.format.hasVideo&&i.setFormat("hasVideo",!!i.format.trackInfo.find(e=>e.type===et.TrackType.video))),i.toCommonMetadata()}findLoaderForExtension(e){var t;let r;if(!e)return;let i=(-1===(r=(t=e).lastIndexOf("."))?"":t.substring(r)).toLocaleLowerCase()||e;return this.parsers.find(e=>-1!==e.extensions.indexOf(i))}findLoaderForContentType(e){let t;if(!e)return;try{let r,i;r=J.default.parse(e),t={type:(i=(0,ee.parse)(r.type)).type,subtype:i.subtype,suffix:i.suffix,parameters:r.parameters}}catch(t){eY(`Invalid HTTP Content-Type header value: ${e}`);return}let r=0===t.subtype.indexOf("x-")?t.subtype.substring(2):t.subtype;return this.parsers.find(e=>e.mimeTypes.find(e=>-1!==e.indexOf(`${t.type}/${r}`)))}getSupportedMimeTypes(){let e=new Set;return this.parsers.forEach(t=>{t.mimeTypes.forEach(t=>{e.add(t),e.add(t.replace("/","/x-"))})}),Array.from(e)}}var eZ=e.i(63848),eK=e.i(1664),eH=e.i(34454);async function eQ(e){let t=e.fileInfo.size;if(t>=143){let r=new Uint8Array(15),i=e.position;await e.readBuffer(r,{position:t-143}),e.setPosition(i);let a=(0,eH.textDecode)(r,"latin1");if("LYRICS200"===a.substring(6))return Number.parseInt(a.substring(0,6),10)+15}return 0}async function eJ(e,t={}){let r=(0,y.fromBlob)(e);try{var i,a;return await (i=r,a=t,new eV().parse(i,void 0,a))}finally{await r.close()}}async function e0(e,t={}){let r=e.fileInfo.size;await (0,eK.hasID3v1Header)(e)&&(r-=128,r-=await eQ(e)),t.apeHeader=await eZ.APEv2Parser.findApeFooterOffset(e,r)}async function e1(e){try{let t=await eJ(e,{duration:!0}),r=t.common.title?.trim()??"",i=t.common.artist?.trim()||t.common.artists?.[0]?.trim()||t.common.albumartist?.trim()||t.common.albumartists?.[0]?.trim()||"",a=t.common.album?.trim()??"",n=t.format.duration,s="number"==typeof n&&Number.isFinite(n)?Math.round(n):0;return{title:r,artist:i,album:a,durationSec:s}}catch{return null}}async function e2(e,t,r,i,a,n,s,o){if(!(n.maxScanDepth>0)||!(a>=n.maxScanDepth))for await(let[l,c]of r.entries()){let r=i?`${i}/${l}`:l;if("directory"===c.kind){if(n.followSymlinks&&s.has(r))continue;let i=n.followSymlinks?new Set(s):s;n.followSymlinks&&i.add(r),await e2(e,t,c,r,a+1,n,i,o)}else"file"===c.kind&&function(e,t){let r=e.lastIndexOf(".");if(r<0)return!1;let i=e.slice(r).toLowerCase();return(t??h).has(i)}(l,n.enabledExtensions)&&o.push({rootId:e,rootDisplayName:t,relativePath:r,handle:c})}}function e4(e){let t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function e3(e,t){let r=e.split("/").filter(Boolean);return r.length>1?r[r.length-2]??t:t}async function e8(e,t,r,i){let a=`lib:${e.rootId}:${e.relativePath}`,n=r.get(a),s=n?b(n):null,o=i?performance.now():0,l=(t,r)=>{var a;let n,s;return i&&(a={relativePath:e.relativePath,rootDisplayName:e.rootDisplayName,durationMs:performance.now()-o,outcome:t},n=`${a.rootDisplayName}/${a.relativePath}`,s="cached"===a.outcome?"cached":"parsed"===a.outcome?"parsed":"error",console.info(`[muzical scan] ${n} — ${a.durationMs.toFixed(1)} ms (${s})`)),r};try{let r=await e.handle.getFile();if(n&&s&&r.lastModified===s.fileLastModified&&r.size===s.fileSize)return l("cached",n);let i=e4(e.relativePath),o=g(i,t),c=e3(e.relativePath,e.rootDisplayName),u=await e1(r),m={id:a,title:u?.title?u.title:o,artist:u?.artist?u.artist:"Unknown artist",album:u?.album?u.album:c,durationSec:u?.durationSec&&u.durationSec>0?u.durationSec:0,audioUrl:null,library:{rootId:e.rootId,relativePath:e.relativePath}};return l("parsed",m.library?{...m,library:{...m.library,fileLastModified:r.lastModified,fileSize:r.size}}:m)}catch{let r,i;return l("error",(r=g(e4(e.relativePath),t),i=e3(e.relativePath,e.rootDisplayName),{id:`lib:${e.rootId}:${e.relativePath}`,title:r,artist:"Unknown artist",album:i,durationSec:0,audioUrl:null,library:{rootId:e.rootId,relativePath:e.relativePath}}))}}async function e7(e,t,r,i,a){if(0===e.length)return[];let n=Array(e.length),s=0,o=0,l=0,c=e.length,u=()=>{a?.({filesDone:o,filesTotal:c,filesSkipped:l})};u();let m=async()=>{for(;;){let a=s++;if(a>=e.length)break;let c=e[a],m=`lib:${c.rootId}:${c.relativePath}`,d=r.has(m);n[a]=await e8(c,t,r,i),d&&n[a]===r.get(m)&&(l+=1),o+=1,u()}},d=Math.min(8,e.length);return await Promise.all(Array.from({length:d},()=>m())),n}async function e5(e,t,r,i,a,n,s){s?.({phase:"walk"});let o=[];await e2(e,t,r,"",0,i,new Set,o);let l=function(e){let t=new Map;for(let r of e)r.library&&b(r)&&t.set(r.id,r);return t}(a.filter(t=>t.library?.rootId===e));return s?.({phase:"metadata",filesDone:0,filesTotal:o.length,filesSkipped:0}),n&&o.length>0&&console.info(`[muzical scan] ${t}: reading metadata for ${o.length} file${1===o.length?"":"s"}…`),e7(o,i.enabledExtensions,l,n,e=>{s?.({phase:"metadata",...e})})}async function e6(e,t,r,i,a,n){let s=[],o=0,l=null,c=e.filter(e=>t.has(e.id)),u=c.length,m=a?performance.now():0;a&&u>0&&console.info(`[muzical scan] Starting scan of ${u} root${1===u?"":"s"}…`);for(let e=0;e<c.length;e++){let m=c[e],d=t.get(m.id);if(!d)continue;let f=t=>{n?.({rootIndex:e,rootCount:u,rootName:m.name,phase:t.phase,filesDone:t.filesDone,filesTotal:t.filesTotal,filesSkipped:t.filesSkipped})};f({phase:"walk"});try{let e=await e5(m.id,m.name,d,r,i,a,e=>{"walk"===e.phase?f({phase:"walk"}):f({phase:"metadata",filesDone:e.filesDone,filesTotal:e.filesTotal,filesSkipped:e.filesSkipped})});s.push(...e)}catch(e){o+=1,l||(l=e instanceof DOMException?`${e.name}: ${e.message}`:e instanceof Error?e.message:String(e))}}if(s.sort((e,t)=>{let r=e.library?.rootId??"",i=t.library?.rootId??"",a=r.localeCompare(i,void 0,{sensitivity:"base"});if(0!==a)return a;let n=e.library?.relativePath??e.title,s=t.library?.relativePath??t.title;return n.localeCompare(s,void 0,{sensitivity:"base"})}),a){let e=performance.now()-m;console.info(`[muzical scan] Finished: ${s.length} track${1===s.length?"":"s"} in ${e.toFixed(0)} ms`)}return{tracks:s,failedRootCount:o,firstError:l}}function e9(e){return!e.library&&(!!("musicbrainz"===e.source||"youtube"===e.source||e.id.startsWith("musicbrainz:")||e.id.startsWith("youtube:"))||!!e.youtubeQuery?.trim())}function te(e){return e?.trim()||"Unknown artist"}function tt(e,t){return`${e}\u0000${t}`}function tr(e,t){return e.filter(e=>tt(e.album,e.artist)===t)}function ti(e,t){let r=t.trim();return r?e.filter(e=>te(e.artist)===r):[]}function ta(e,t){let r=t.artist.trim()||e.artist,i=t.album.trim()||e.album,a={...e,artist:r,album:i};return e.youtubeQuery?.trim()&&(a.youtubeQuery=`${e.title} ${r}`.trim(),a.youtubeVideoId=void 0),a}function tn(e,t){let r=t.artist.trim()||e.artist,i={...e,artist:r};return e.youtubeQuery?.trim()&&(i.youtubeQuery=`${e.title} ${r}`.trim(),i.youtubeVideoId=void 0),i}function ts(e,t){let r=t.title.trim()||e.title,i=t.artist.trim()||e.artist,a=t.album.trim()||e.album,n={...e,title:r,artist:i,album:a};return e.youtubeQuery?.trim()&&(n.youtubeQuery=`${r} ${i}`.trim(),n.youtubeVideoId=void 0),n}async function to(e,t){let r={mode:"readwrite"};try{let i=await e.queryPermission?.(r);if("granted"===i)return!0;if(!t)return!1;let a=await e.requestPermission?.(r);return"granted"===a}catch{return!1}}async function tl(e,t){let r=e.library;if(!r)return null;let i=t.get(r.rootId);if(!i)return null;let a=r.relativePath.split("/").filter(Boolean);if(0===a.length)return null;let n=i;for(let e=0;e<a.length-1;e++){let t=a[e];if(!t)return null;n=await n.getDirectoryHandle(t)}let s=a[a.length-1];return s?n.getFileHandle(s):null}function tc(e){let t=e.name.toLowerCase();if(t.endsWith(".mp3"))return"mp3";if(t.endsWith(".flac"))return"flac";let r=e.type.toLowerCase();return"audio/mpeg"===r||"audio/mp3"===r?"mp3":"audio/flac"===r||"audio/x-flac"===r?"flac":null}function tu(e){return String(e).split("").map(e=>e.charCodeAt(0))}function tm(e){return new Uint8Array(tu(e))}function td(e){let t=new ArrayBuffer(2*e.length),r=new Uint8Array(t);return new Uint16Array(t).set(tu(e)),r}function tf(e){return[e>>>24&255,e>>>16&255,e>>>8&255,255&e]}e.s(["default",0,e9],66951);e.s(["albumCompositeKey",0,tt,"artistDisplayName",0,te],99513),e.s(["default",0,tr],97891),e.s(["default",0,ti],4728),e.s(["default",0,ta],91768),e.s(["default",0,tn],73973);class tp{_setIntegerFrame(e,t){let r=parseInt(t,10);this.frames.push({name:e,value:r,size:11+r.toString().length})}_setStringFrame(e,t){let r=t.toString(),i=13+2*r.length;"TDAT"===e&&(i=11+r.length),this.frames.push({name:e,value:r,size:i})}_setPictureFrame(e,t,r,i){var a,n,s;let o=function(e){if(!e||!e.length)return null;if(255===e[0]&&216===e[1]&&255===e[2])return"image/jpeg";if(137===e[0]&&80===e[1]&&78===e[2]&&71===e[3])return"image/png";if(71===e[0]&&73===e[1]&&70===e[2])return"image/gif";if(87===e[8]&&69===e[9]&&66===e[10]&&80===e[11])return"image/webp";let t=73===e[0]&&73===e[1]&&42===e[2]&&0===e[3],r=77===e[0]&&77===e[1]&&0===e[2]&&42===e[3];return t||r?"image/tiff":66===e[0]&&77===e[1]?"image/bmp":0===e[0]&&0===e[1]&&1===e[2]&&0===e[3]?"image/x-icon":null}(new Uint8Array(t)),l=r.toString();if(!o)throw Error("Unknown picture MIME type");r||(i=!1),this.frames.push({name:"APIC",value:t,pictureType:e,mimeType:o,useUnicodeEncoding:i,description:l,size:(a=t.byteLength,n=o.length,s=l.length,11+n+1+1+(i?2+2*(s+1):s+1)+a)})}_setLyricsFrame(e,t,r){let i=e.split("").map(e=>e.charCodeAt(0)),a=t.toString(),n=r.toString();this.frames.push({name:"USLT",value:n,language:i,description:a,size:16+2*a.length+2+2+2*n.length})}_setCommentFrame(e,t,r){let i=e.split("").map(e=>e.charCodeAt(0)),a=t.toString(),n=r.toString();this.frames.push({name:"COMM",value:n,language:i,description:a,size:16+2*a.length+2+2+2*n.length})}_setPrivateFrame(e,t){let r=e.toString();this.frames.push({name:"PRIV",value:t,id:r,size:10+r.length+1+t.byteLength})}_setUserStringFrame(e,t){let r=e.toString(),i=t.toString();this.frames.push({name:"TXXX",description:r,value:i,size:13+2*r.length+2+2+2*i.length})}_setUrlLinkFrame(e,t){let r=t.toString();this.frames.push({name:e,value:r,size:10+r.length})}_setPairedTextFrame(e,t){let r;this.frames.push({name:e,value:t,size:(r=0,t.forEach(e=>{r+=2+2*e[0].length+2+2+2*e[1].length+2}),11+r)})}_setSynchronisedLyricsFrame(e,t,r,i,a){var n;let s,o=a.toString(),l=i.split("").map(e=>e.charCodeAt(0));this.frames.push({name:"SYLT",value:t,language:l,description:o,type:e,timestampFormat:r,size:(n=o.length,s=0,t.forEach(e=>{s+=2+2*e[0].length+2+4}),18+2*n+2+s)})}constructor(e){if(!e||"object"!=typeof e||!("byteLength"in e))throw Error("First argument should be an instance of ArrayBuffer or Buffer");this.arrayBuffer=e,this.padding=4096,this.frames=[],this.url=""}setFrame(e,t){switch(e){case"TPE1":case"TCOM":case"TCON":{if(!Array.isArray(t))throw Error(`${e} frame value should be an array of strings`);let r="TCON"===e?";":"/",i=t.join(r);this._setStringFrame(e,i);break}case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TMED":case"TPUB":case"TCOP":case"TKEY":case"TEXT":case"TDAT":case"TCMP":case"TSSE":case"TSRC":this._setStringFrame(e,t);break;case"TBPM":case"TLEN":case"TYER":this._setIntegerFrame(e,t);break;case"USLT":if(t.language=t.language||"eng","object"!=typeof t||!("description"in t)||!("lyrics"in t))throw Error("USLT frame value should be an object with keys description and lyrics");if(t.language&&!t.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setLyricsFrame(t.language,t.description,t.lyrics);break;case"APIC":if("object"!=typeof t||!("type"in t)||!("data"in t)||!("description"in t))throw Error("APIC frame value should be an object with keys type, data and description");if(t.type<0||t.type>20)throw Error("Incorrect APIC frame picture type");this._setPictureFrame(t.type,t.data,t.description,!!t.useUnicodeEncoding);break;case"TXXX":if("object"!=typeof t||!("description"in t)||!("value"in t))throw Error("TXXX frame value should be an object with keys description and value");this._setUserStringFrame(t.description,t.value);break;case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":this._setUrlLinkFrame(e,t);break;case"COMM":if(t.language=t.language||"eng","object"!=typeof t||!("description"in t)||!("text"in t))throw Error("COMM frame value should be an object with keys description and text");if(t.language&&!t.language.match(/[a-z]{3}/i))throw Error("Language must be coded following the ISO 639-2 standards");this._setCommentFrame(t.language,t.description,t.text);break;case"PRIV":if("object"!=typeof t||!("id"in t)||!("data"in t))throw Error("PRIV frame value should be an object with keys id and data");this._setPrivateFrame(t.id,t.data);break;case"IPLS":if(!Array.isArray(t)||!Array.isArray(t[0]))throw Error("IPLS frame value should be an array of pairs");this._setPairedTextFrame(e,t);break;case"SYLT":if("object"!=typeof t||!("type"in t)||!("text"in t)||!("timestampFormat"in t))throw Error("SYLT frame value should be an object with keys type, text and timestampFormat");if(!Array.isArray(t.text)||!Array.isArray(t.text[0]))throw Error("SYLT frame text value should be an array of pairs");if(t.type<0||t.type>6)throw Error("Incorrect SYLT frame content type");if(t.timestampFormat<1||t.timestampFormat>2)throw Error("Incorrect SYLT frame time stamp format");t.language=t.language||"eng",t.description=t.description||"",this._setSynchronisedLyricsFrame(t.type,t.text,t.timestampFormat,t.language,t.description);break;default:throw Error(`Unsupported frame ${e}`)}return this}removeTag(){var e;if(this.arrayBuffer.byteLength<10)return;let t=new Uint8Array(this.arrayBuffer),r=t[3],i=((e=[t[6],t[7],t[8],t[9]])[0]<<21)+(e[1]<<14)+(e[2]<<7)+e[3]+10;73!==t[0]||68!==t[1]||51!==t[2]||r<2||r>4||(this.arrayBuffer=new Uint8Array(t.subarray(i)).buffer)}addTag(){var e;this.removeTag();let t=[255,254],r=10+this.frames.reduce((e,t)=>e+t.size,0)+this.padding,i=new ArrayBuffer(this.arrayBuffer.byteLength+r),a=new Uint8Array(i),n=0,s=[];return s=[73,68,51,3],a.set(s,n),n+=s.length,n++,n++,s=[(e=r-10)>>>21&127,e>>>14&127,e>>>7&127,127&e],a.set(s,n),n+=s.length,this.frames.forEach(e=>{switch(s=tm(e.name),a.set(s,n),n+=s.length,s=tf(e.size-10),a.set(s,n),n+=s.length,n+=2,e.name){case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":s=tm(e.value),a.set(s,n),n+=s.length;break;case"TPE1":case"TCOM":case"TCON":case"TLAN":case"TIT1":case"TIT2":case"TIT3":case"TALB":case"TPE2":case"TPE3":case"TPE4":case"TRCK":case"TPOS":case"TKEY":case"TMED":case"TPUB":case"TCOP":case"TEXT":case"TSSE":case"TSRC":s=[1].concat(t),a.set(s,n),n+=s.length,s=td(e.value),a.set(s,n),n+=s.length;break;case"TXXX":case"USLT":case"COMM":s=[1],"USLT"!==e.name&&"COMM"!==e.name||(s=s.concat(e.language)),s=s.concat(t),a.set(s,n),n+=s.length,s=td(e.description),a.set(s,n),n+=s.length,s=[0,0].concat(t),a.set(s,n),n+=s.length,s=td(e.value),a.set(s,n),n+=s.length;break;case"TBPM":case"TLEN":case"TDAT":case"TYER":n++,s=tm(e.value),a.set(s,n),n+=s.length;break;case"PRIV":s=tm(e.id),a.set(s,n),n+=s.length,n++,a.set(new Uint8Array(e.value),n),n+=e.value.byteLength;break;case"APIC":s=[+!!e.useUnicodeEncoding],a.set(s,n),n+=s.length,s=tm(e.mimeType),a.set(s,n),n+=s.length,s=[0,e.pictureType],a.set(s,n),n+=s.length,e.useUnicodeEncoding?(s=[].concat(t),a.set(s,n),n+=s.length,s=td(e.description),a.set(s,n),n+=s.length,n+=2):(s=tm(e.description),a.set(s,n),n+=s.length,n++),a.set(new Uint8Array(e.value),n),n+=e.value.byteLength;break;case"IPLS":s=[1],a.set(s,n),n+=s.length,e.value.forEach(e=>{s=[].concat(t),a.set(s,n),n+=s.length,s=td(e[0].toString()),a.set(s,n),n+=s.length,s=[0,0].concat(t),a.set(s,n),n+=s.length,s=td(e[1].toString()),a.set(s,n),n+=s.length,s=[0,0],a.set(s,n),n+=s.length});break;case"SYLT":s=[1].concat(e.language).concat(e.timestampFormat).concat(e.type),a.set(s,n),n+=s.length,s=[].concat(t),a.set(s,n),n+=s.length,s=td(e.description),a.set(s,n),n+=s.length,n+=2,e.value.forEach(e=>{s=[].concat(t),a.set(s,n),n+=s.length,s=td(e[0].toString()),a.set(s,n),n+=s.length,s=[0,0],a.set(s,n),n+=s.length,s=tf(e[1]),a.set(s,n),n+=s.length})}}),n+=this.padding,a.set(new Uint8Array(this.arrayBuffer),n),this.arrayBuffer=i,i}getBlob(){return new Blob([this.arrayBuffer],{type:"audio/mpeg"})}getURL(){return this.url||(this.url=URL.createObjectURL(this.getBlob())),this.url}revokeURL(){URL.revokeObjectURL(this.url)}}async function th(e,t){var r;let i,a;if("mp3"!==tc(e))throw Error("Unsupported file format");return r=await e.arrayBuffer(),(i=new tp(r)).setFrame("TIT2",t.title.trim()),i.setFrame("TPE1",[t.artist.trim()]),(a=t.album.trim())&&i.setFrame("TALB",a),i.addTag()}async function tg(e,t,r,i){let a;if(!e.library)return{ok:!1,reason:"Only local library files can be tagged on disk."};let n=r.get(e.library.rootId);if(!n)return{ok:!1,reason:"Library folder is not available. Try rescanning."};if(!await to(n,i))return{ok:!1,reason:"Write permission is required. Re-add the library folder or allow write access when prompted."};let s=await tl(e,r);if(!s)return{ok:!1,reason:"Could not open the audio file."};let o=await s.getFile();if(!tc(o))return{ok:!1,reason:"Tag writing is supported for MP3 files only."};try{a=await th(o,t)}catch{return{ok:!1,reason:"Failed to update embedded tags in this file."}}try{let e=await s.createWritable();await e.write(a),await e.close()}catch{return{ok:!1,reason:"Could not save tags to the file."}}return{ok:!0}}async function tb(e,t,r){let i=0,a=0,n=null;for(let s of e){if(!s.library)continue;let e=await tg(s,{title:s.title,artist:s.artist,album:s.album},t,r&&0===i&&0===a);e.ok?i+=1:(a+=1,n||(n=e.reason))}return{ok:0===a,writtenCount:i,failedCount:a,reason:n}}function ty(e,t){let r=new Map;for(let t of e)r.set(t.id,t);for(let e of t)e9(e)&&(r.has(e.id)||r.set(e.id,e));return[...r.values()]}function tx(e){return e.library?{...e,source:e.source??"library"}:"youtube"===e.source||e.id.startsWith("youtube:")?{...e,source:"youtube",library:void 0}:"musicbrainz"===e.source||e.id.startsWith("musicbrainz:")?{...e,source:"musicbrainz",library:void 0}:e.youtubeQuery?.trim()?{...e,source:e.source??"musicbrainz",library:void 0}:{...e,library:void 0}}function tk(e){if(!e||"object"!=typeof e||"string"!=typeof e.id||!e.id.trim()||"string"!=typeof e.title||"string"!=typeof e.artist||"string"!=typeof e.album)return null;let t="number"==typeof e.durationSec&&Number.isFinite(e.durationSec)&&e.durationSec>=0?e.durationSec:0,r="library"===e.source||"musicbrainz"===e.source||"youtube"===e.source?e.source:void 0,i="string"==typeof e.audioUrl?e.audioUrl:null===e.audioUrl?null:void 0,a="string"==typeof e.youtubeQuery?e.youtubeQuery:void 0,n="string"==typeof e.youtubeVideoId?e.youtubeVideoId:void 0,s=function(e){if(e&&"object"==typeof e&&"string"==typeof e.rootId&&"string"==typeof e.relativePath)return{rootId:e.rootId,relativePath:e.relativePath}}(e.library);return{id:e.id.trim(),title:e.title,artist:e.artist,album:e.album,durationSec:t,audioUrl:i,youtubeQuery:a,youtubeVideoId:n,source:r,library:s}}async function tT(e,t){let r=e.library;if(!r)return null;let i=t.get(r.rootId);if(!i)return null;let a=r.relativePath.split("/").filter(Boolean);if(0===a.length)return null;let n=i;for(let e=0;e<a.length-1;e++){let t=a[e];if(!t)return null;n=await n.getDirectoryHandle(t)}let s=a[a.length-1];return s?(await n.getFileHandle(s)).getFile():null}function tw(e){let{progress:r,onDismiss:i}=e;return r?(0,t.jsxs)("div",{role:"status","aria-live":"polite","aria-busy":r.percent<100,className:"pointer-events-auto fixed bottom-4 right-4 z-50 w-[min(100vw-2rem,22rem)] rounded-xl border border-zinc-200/90 bg-white/95 p-4 pr-10 shadow-lg shadow-zinc-900/10 backdrop-blur-sm dark:border-zinc-700/80 dark:bg-zinc-900/95 dark:shadow-black/40",children:[(0,t.jsx)("button",{type:"button",onClick:i,className:"absolute right-2 top-2 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200","aria-label":"Dismiss notification",children:(0,t.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:(0,t.jsx)("path",{d:"M6 6l12 12M18 6L6 18",strokeLinecap:"round"})})}),(0,t.jsx)("p",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:r.percent>=100?"Library scan complete":"Scanning library"}),(0,t.jsx)("p",{className:"mt-1 truncate text-xs text-zinc-600 dark:text-zinc-400",children:r.label}),(0,t.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":r.percent,"aria-label":"Library scan progress",className:"mt-3 h-1.5 overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-accent-500 transition-[width] duration-200 ease-out dark:bg-accent-400",style:{width:`${r.percent}%`}})}),(0,t.jsxs)("p",{className:"mt-2 text-right text-[11px] tabular-nums text-zinc-500 dark:text-zinc-500",children:[r.percent,"%",r.filesTotal>0?(0,t.jsxs)("span",{className:"text-zinc-400",children:[" ","· ",r.filesDone,"/",r.filesTotal," files"]}):null]})]}):null}var tS=e.i(45958);function tI(e){return(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:[(0,t.jsx)("circle",{cx:"5",cy:"12",r:"1.75"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,t.jsx)("circle",{cx:"19",cy:"12",r:"1.75"})]})}function tv(e){let[i,a]=(0,r.useState)(!1),n=(0,r.useRef)(null),s=(0,r.useId)(),o=e.triggerLabel??"Track actions";return(0,r.useEffect)(()=>{if(!i)return;let e=e=>{let t=e.target;t instanceof Node&&(n.current?.contains(t)||a(!1))},t=e=>{"Escape"===e.key&&a(!1)};return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[i]),(0,t.jsxs)("div",{ref:n,className:"relative shrink-0",children:[(0,t.jsx)("button",{type:"button","aria-haspopup":"menu","aria-expanded":i,"aria-controls":s,"aria-label":o,onClick:()=>a(e=>!e),className:"flex h-8 w-8 cursor-pointer items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-200/80 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:(0,t.jsx)(tI,{className:"h-4 w-4"})}),i?(0,t.jsx)("div",{id:s,role:"menu",className:"absolute top-full right-0 z-30 mt-1 min-w-[11rem] overflow-hidden rounded-lg border border-zinc-200 bg-white py-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900",children:e.items.map(e=>(0,t.jsx)("button",{type:"button",role:"menuitem",disabled:e.disabled,onClick:()=>{e.disabled||(e.onSelect(),a(!1))},className:"block w-full cursor-pointer px-3 py-2 text-left text-xs font-medium text-zinc-800 transition hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-40 dark:text-zinc-200 dark:hover:bg-zinc-800",children:e.label},e.id))}):null]})}function tE(e){let t=Math.max(0,Math.floor(e)),r=Math.floor(t/60);return`${r}:${(t%60).toString().padStart(2,"0")}`}function tA(e){let t=[{id:"details",label:"View details",onSelect:()=>e.onViewDetails(e.track)}];return e.onViewRelatedSongs&&t.push({id:"related",label:"Related songs",onSelect:()=>e.onViewRelatedSongs(e.track)}),e.onRemoveFromLibrary?t.push({id:"remove",label:"Remove from library",onSelect:e.onRemoveFromLibrary}):e.onSave&&t.push({id:"save",label:e.alreadySaved?"In library":"Add to library",disabled:e.alreadySaved,onSelect:e.onSave}),t}function t_(e){let{openTrackDetails:r,openRelatedSongs:i,removeFromLibrary:a}=rp(),n=e.compact?"px-1.5 py-1.5":"px-2 py-2",s=e.compact?"gap-1.5":"gap-2",o=e.subtitle??`${e.track.artist} \xb7 ${e.track.album}`;return(0,t.jsxs)("div",{className:`flex items-center ${s} rounded-lg ${n} hover:bg-zinc-100 dark:hover:bg-zinc-800/80`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-sm font-medium text-zinc-900 dark:text-zinc-100",children:e.track.title}),(0,t.jsx)("p",{className:"truncate text-xs text-zinc-500",children:o})]}),(0,t.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-zinc-500",children:e.track.durationSec>0?tE(e.track.durationSec):"—"}),(0,t.jsx)(tv,{triggerLabel:`Actions for ${e.track.title}`,items:tA({track:e.track,onViewDetails:r,onViewRelatedSongs:i,onSave:e.alreadySaved?void 0:()=>e.onSave(e.track),onRemoveFromLibrary:e.alreadySaved?()=>a(e.track):void 0})}),(0,t.jsx)("button",{type:"button",onClick:()=>e.onQueue(e.track),className:"shrink-0 cursor-pointer rounded-full bg-accent-500/15 px-2.5 py-1 text-xs font-medium text-accent-800 ring-1 ring-accent-500/25 transition hover:bg-accent-500/25 dark:text-accent-300 dark:ring-accent-500/40",children:"Add"})]})}e.s(["default",()=>t_],75878),e.s(["default",0,tv],38602),e.s(["formatDuration",0,tE],34713),e.s(["default",0,tA],74061);var tz=e.i(75353);async function tC(e,t){let r=e.artist.trim(),i=e.track.trim(),a=e.mbid?.trim();if(!a&&(!r||!i))return[];let n=(0,tz.default)();if(!n)throw Error("Add a Last.fm API key in Settings → Last.fm");let s=new URL("/api/lastfm/track-similar",window.location.origin);s.searchParams.set("artist",r),s.searchParams.set("track",i),a&&s.searchParams.set("mbid",a),void 0!==e.limit&&s.searchParams.set("limit",String(e.limit));let o=await fetch(s,{signal:t,headers:{"X-Muzical-Lastfm-Api-Key":n}}),l=await o.json().catch(()=>({}));if(!o.ok)throw console.error("[Last.fm] proxy request failed",{status:o.status,statusText:o.statusText,proxyUrl:s.toString(),body:l}),Error(l.error?.trim()||`Last.fm request failed (${o.status})`);if(Array.isArray(l.tracks))return l.tracks;if("number"==typeof l.error&&l.error>0)throw Error(l.message?.trim()||`Last.fm error ${l.error}`);let c=l.similartracks?.track;if(!c)return[];let u=Array.isArray(c)?c:[c],m=[];for(let e of u){let t=function(e){var t;let r=e.name?.trim(),i="string"==typeof(t=e.artist)?t.trim():t&&"object"==typeof t?(t.name?.trim()||t["#text"]?.trim())??"":"";if(!r||!i)return null;let a=e.mbid?.trim();return{name:r,artistName:i,mbid:a&&a.length>0?a:void 0,match:function(e){if(void 0===e)return;let t=Number.parseFloat(e);return Number.isFinite(t)?t:void 0}(e.match),url:e.url?.trim()||void 0,durationSec:function(e){if(void 0===e)return;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}(e.duration)}}(e);t&&m.push(t)}return m}function tN(e){let t=e.name.trim()||"Unknown title",r=e.artistName.trim()||"Unknown artist",i=e.mbid?.trim();return{id:i&&i.length>0?`musicbrainz:${i}`:`lastfm:${encodeURIComponent(r)}\u0000${encodeURIComponent(t)}`,title:t,artist:r,album:"Unknown album",durationSec:e.durationSec??0,youtubeQuery:`${t} ${r}`.trim(),source:i?"musicbrainz":void 0}}function tM(e){let{seedTrack:i,onClose:a}=e,{libraryTracks:n,addToQueue:s,addToLibrary:o,compactLists:l}=rp(),c=(0,r.useId)(),u=(0,r.useRef)(null),[m,d]=(0,r.useState)(!1),[f,p]=(0,r.useState)(null),[h,g]=(0,r.useState)([]),b=(0,r.useMemo)(()=>new Set(n.map(e=>e.id)),[n]);(0,r.useEffect)(()=>{if(!i)return;if(!(0,tz.default)()){d(!1),p(null),g([]);return}let e=new AbortController;d(!0),p(null),g([]);let t=function(e){let t="musicbrainz:";if(!e.startsWith(t))return null;let r=e.slice(t.length).trim();return r.length>0?r:null}(i.id);return tC({artist:i.artist,track:i.title,mbid:t??void 0,limit:25},e.signal).then(e=>{g(e.map(tN))}).catch(t=>{e.signal.aborted||p(t instanceof Error?t.message:"Failed to load related songs")}).finally(()=>{e.signal.aborted||d(!1)}),()=>e.abort()},[i]),(0,r.useEffect)(()=>{if(!i)return;let e=e=>{"Escape"===e.key&&a()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[i,a]);let y=(0,r.useCallback)(()=>{0!==h.length&&s(h)},[s,h]);if(!i)return null;let x=(0,tz.default)().length>0;return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:e=>{e.target===e.currentTarget&&a()},children:(0,t.jsxs)("div",{ref:u,role:"dialog","aria-modal":"true","aria-labelledby":c,className:"flex max-h-[min(85vh,36rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h2",{id:c,className:"text-base font-semibold text-zinc-900 dark:text-zinc-50",children:"Related songs"}),(0,t.jsxs)("p",{className:"mt-0.5 truncate text-sm text-zinc-600 dark:text-zinc-400",children:[i.title," · ",i.artist]}),(0,t.jsx)("p",{className:"mt-1 text-xs text-zinc-500",children:"Via Last.fm listening similarity"})]}),(0,t.jsx)("button",{type:"button",onClick:a,className:"shrink-0 rounded-full px-2 py-1 text-sm font-medium text-zinc-600 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,t.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 py-3",children:[x?null:(0,t.jsxs)("p",{className:"px-2 py-4 text-sm text-zinc-600 dark:text-zinc-400",children:["Add a Last.fm API key in"," ",(0,t.jsx)(tS.default,{href:"/settings/lastfm",className:"font-medium text-accent-700 underline-offset-2 hover:underline dark:text-accent-400",onClick:a,children:"Settings → Last.fm"}),"."]}),m?(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"Loading related songs…"}):null,f?(0,t.jsx)("p",{className:"px-2 py-4 text-sm text-red-600 dark:text-red-400",children:f}):null,m||f||!x||0!==h.length?null:(0,t.jsx)("p",{className:"px-2 py-6 text-center text-sm text-zinc-500",children:"No similar tracks found."}),!m&&h.length>0?(0,t.jsx)("ul",{className:"space-y-0.5",children:h.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)(t_,{track:e,compact:l,alreadySaved:b.has(e.id)||e9(e),onQueue:s,onSave:o})},e.id))}):null]}),h.length>0?(0,t.jsx)("div",{className:"border-t border-zinc-200 px-4 py-3 dark:border-zinc-800",children:(0,t.jsxs)("button",{type:"button",onClick:y,className:"w-full rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400",children:["Add all to queue (",h.length,")"]})}):null]})})}let tR="mt-1 block w-full rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 outline-none ring-accent-500/0 transition focus:border-accent-400 focus:ring-2 focus:ring-accent-500/20 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-100";function tL(e){return{title:e.title,artist:e.artist,album:e.album}}function tP(e){let{track:i,canWriteToFile:a,saving:n,saveError:s,onSave:o}=e,[l,c]=(0,r.useState)(()=>tL(i)),[u,m]=(0,r.useState)(()=>tL(i));(0,r.useEffect)(()=>{let e=tL(i);c(e),m(e)},[i.id,i.title,i.artist,i.album]);let d=l.title!==u.title||l.artist!==u.artist||l.album!==u.album,f=d&&""!==l.title.trim()&&""!==l.artist.trim(),p=(0,r.useCallback)(()=>{c(u)},[u]),h=(0,r.useCallback)(async e=>{if(e.preventDefault(),!f||n)return;let t=ts(i,l),r={title:t.title,artist:t.artist,album:t.album};await o(r),m(r),c(r)},[f,l,o,n,i]);return(0,t.jsxs)("form",{onSubmit:h,className:"space-y-3",children:[(0,t.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"Metadata"}),(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Title"}),(0,t.jsx)("input",{type:"text",value:l.title,onChange:e=>c(t=>({...t,title:e.target.value})),className:tR,autoComplete:"off",required:!0})]}),(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Artist"}),(0,t.jsx)("input",{type:"text",value:l.artist,onChange:e=>c(t=>({...t,artist:e.target.value})),className:tR,autoComplete:"off",required:!0})]}),(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-zinc-500",children:"Album"}),(0,t.jsx)("input",{type:"text",value:l.album,onChange:e=>c(t=>({...t,album:e.target.value})),className:tR,autoComplete:"off"})]}),a?(0,t.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving also writes ID3 tags to MP3 files when the library folder allows write access."}):null,i.youtubeQuery?.trim()?(0,t.jsx)("p",{className:"text-xs text-zinc-500",children:"Saving updates the YouTube search query and clears any resolved video id for this track."}):null,s?(0,t.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",role:"alert",children:s}):null,(0,t.jsxs)("div",{className:"flex flex-wrap gap-2 pt-1",children:[(0,t.jsx)("button",{type:"submit",disabled:!f||n,className:"rounded-full bg-accent-500 px-4 py-2 text-sm font-medium text-zinc-950 transition hover:bg-accent-400 disabled:cursor-not-allowed disabled:opacity-50",children:n?"Saving…":"Save"}),(0,t.jsx)("button",{type:"button",disabled:!d||n,onClick:p,className:"rounded-full border border-zinc-300 bg-white px-4 py-2 text-sm font-medium text-zinc-800 transition hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700",children:"Revert"})]})]})}function tD(e){if(!Number.isFinite(e)||e<0)return"—";if(e<1024)return`${e} B`;let t=["KB","MB","GB","TB"],r=e/1024,i=0;for(;r>=1024&&i<t.length-1;)r/=1024,i+=1;return`${r<10?r.toFixed(1):Math.round(r).toString()} ${t[i]}`}function tO(e,t,r,i=!1){if(null==r)return;let a="number"==typeof r?String(r):r.trim();a&&e.push({label:t,value:a,mono:i})}async function tU(e){let t=[];tO(t,"File name",e.name,!0),tO(t,"MIME type",e.type||"—"),t.push({label:"File size",value:tD(e.size)}),t.push({label:"Last modified",value:new Date(e.lastModified).toLocaleString()});try{let{format:r,common:i}=await eJ(e,{duration:!0});r.container&&tO(t,"Container",r.container),r.codec&&tO(t,"Codec",r.codec),"number"==typeof r.bitrate&&r.bitrate>0&&tO(t,"Bitrate",`${Math.round(r.bitrate/1e3)} kbps`),"number"==typeof r.sampleRate&&r.sampleRate>0&&tO(t,"Sample rate",`${r.sampleRate} Hz`),"number"==typeof r.numberOfChannels&&tO(t,"Channels",r.numberOfChannels),"number"==typeof r.bitsPerSample&&r.bitsPerSample>0&&tO(t,"Bits per sample",r.bitsPerSample),tO(t,"Tag title",i.title),tO(t,"Tag artist",i.artist??i.artists?.join(", ")),tO(t,"Tag album artist",i.albumartist??i.albumartists?.join(", ")),tO(t,"Tag album",i.album),"number"==typeof i.year&&tO(t,"Tag year",i.year),i.genre?.length&&tO(t,"Tag genre",i.genre.join(", ")),"number"==typeof i.track?.no&&tO(t,"Tag track #",i.track.no),"number"==typeof i.disk?.no&&tO(t,"Tag disc #",i.disk.no),tO(t,"Tag composer",Array.isArray(i.composer)?i.composer.join(", "):i.composer),tO(t,"Tag comment",i.comment?.join(" · "))}catch{tO(t,"Embedded tags","Could not read metadata from this file")}return t}function tB(e,t,r,i=!1){let a=r?.trim();a&&e.push({label:t,value:a,mono:i})}function tj(e){return 0===e.rows.length?null:(0,t.jsxs)("section",{children:[(0,t.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:e.title}),(0,t.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:e.rows.map(r=>(0,t.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,t.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:r.label}),(0,t.jsx)("dd",{className:["text-sm break-words text-zinc-900 dark:text-zinc-100",r.mono?"font-mono text-xs":""].join(" "),children:r.value})]},`${e.title}-${r.label}`))})]})}function tF(e){let{track:i,onClose:a}=e,{roots:n,resolveFileForTrack:s,saveTrackMetadata:o}=rp(),l=(0,r.useId)(),c=(0,r.useRef)(null),[u,m]=(0,r.useState)([]),[d,f]=(0,r.useState)(!1),[p,h]=(0,r.useState)(null),[g,b]=(0,r.useState)(!1),[y,x]=(0,r.useState)(null),k=(0,r.useMemo)(()=>{var e;let t;return i?(e={omitEditableTags:!0},t=[],e?.omitEditableTags||(tB(t,"Title",i.title),tB(t,"Artist",i.artist),tB(t,"Album",i.album)),i.durationSec>0&&t.push({label:"Duration",value:tE(i.durationSec)}),tB(t,"Source",i.library?"Local library file":"youtube"===i.source||i.id.startsWith("youtube:")?"YouTube":"musicbrainz"===i.source||i.id.startsWith("musicbrainz:")?"MusicBrainz":i.youtubeVideoId?.trim()?"YouTube":i.youtubeQuery?.trim()?"YouTube (search)":"library"===i.source?"Local library":"Unknown"),tB(t,"Track ID",i.id,!0),i.library&&(tB(t,"Library folder",n.find(e=>e.id===i.library?.rootId)?.name??i.library.rootId),tB(t,"Relative path",i.library.relativePath,!0),"number"==typeof i.library.fileSize&&Number.isFinite(i.library.fileSize)&&t.push({label:"File size (at scan)",value:tD(i.library.fileSize)}),"number"==typeof i.library.fileLastModified&&Number.isFinite(i.library.fileLastModified)&&t.push({label:"Modified (at scan)",value:new Date(i.library.fileLastModified).toLocaleString()})),tB(t,"YouTube query",i.youtubeQuery,!0),tB(t,"YouTube video ID",i.youtubeVideoId,!0),t):[]},[i,n]),T=(0,r.useCallback)(async e=>{if(!i)return;b(!0),x(null);let t=await o(i.id,e);(b(!1),t.ok)?i.library&&s(i).then(async e=>{e&&m(await tU(e))}):x(t.reason)},[s,o,i]);return((0,r.useEffect)(()=>{if(!i?.library)return;let e=!1,t=requestAnimationFrame(()=>{e||(f(!0),h(null),m([]))});return s(i).then(async t=>{if(e)return;if(!t)return void h("Could not open the file. Try rescanning the library folder.");let r=await tU(t);e||m(r)}).catch(()=>{e||h("Failed to read file metadata.")}).finally(()=>{e||f(!1)}),()=>{e=!0,cancelAnimationFrame(t)}},[i,s]),(0,r.useEffect)(()=>{if(i?.library)return;let e=requestAnimationFrame(()=>{m([]),f(!1),h(null)});return()=>cancelAnimationFrame(e)},[i?.library,i?.id]),(0,r.useEffect)(()=>{if(!i)return;let e=e=>{"Escape"===e.key&&a()};return document.addEventListener("keydown",e),c.current?.focus(),()=>document.removeEventListener("keydown",e)},[i,a]),i)?(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center bg-zinc-900/50 p-4 sm:items-center",role:"presentation",onClick:a,children:(0,t.jsxs)("div",{ref:c,role:"dialog","aria-modal":"true","aria-labelledby":l,tabIndex:-1,className:"flex max-h-[min(85vh,40rem)] w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-950",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("header",{className:"flex shrink-0 items-start justify-between gap-3 border-b border-zinc-200 px-4 py-3 dark:border-zinc-800",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h2",{id:l,className:"truncate text-base font-semibold text-zinc-900 dark:text-zinc-100",children:i.title}),(0,t.jsxs)("p",{className:"truncate text-sm text-zinc-500",children:[i.artist," · ",i.album]})]}),(0,t.jsx)("button",{type:"button",onClick:a,className:"shrink-0 cursor-pointer rounded-lg px-2 py-1 text-sm font-medium text-zinc-600 transition hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"Close"})]}),(0,t.jsxs)("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto overscroll-contain px-4 py-4",children:[(0,t.jsx)(tP,{track:i,canWriteToFile:!!i.library,saving:g,saveError:y,onSave:T}),(0,t.jsx)(tj,{title:"Details",rows:k}),i.library?(0,t.jsxs)("section",{children:[(0,t.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider text-zinc-500",children:"File & embedded metadata"}),d?(0,t.jsx)("p",{className:"mt-2 text-sm text-zinc-500",children:"Reading file…"}):null,p?(0,t.jsx)("p",{className:"mt-2 text-sm text-red-600 dark:text-red-400",role:"alert",children:p}):null,d||p||!(u.length>0)?null:(0,t.jsx)("dl",{className:"mt-2 divide-y divide-zinc-100 rounded-lg border border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800",children:u.map(e=>(0,t.jsxs)("div",{className:"grid gap-0.5 px-3 py-2 sm:grid-cols-[7rem_1fr] sm:gap-3",children:[(0,t.jsx)("dt",{className:"text-xs font-medium text-zinc-500",children:e.label}),(0,t.jsx)("dd",{className:["text-sm text-zinc-900 break-words dark:text-zinc-100",e.mono?"font-mono text-xs":""].join(" "),children:e.value})]},`file-${e.label}`))})]}):null]})]})}):null}function tX(){return{maxScanDepth:0,followSymlinks:!1,enabledExtensions:[...c]}}e.s(["default",0,tX],81193);let t$="muzical.libraryScanPreferences",tG=new Set(c);function tW(){let e=tX();try{let t=window.localStorage.getItem(t$);if(!t)return e;let r=JSON.parse(t);if(!r||"object"!=typeof r)return e;let i="number"==typeof r.maxScanDepth&&Number.isFinite(r.maxScanDepth)&&r.maxScanDepth>=0?Math.floor(r.maxScanDepth):e.maxScanDepth,a=!0===r.followSymlinks,n=e.enabledExtensions;if(Array.isArray(r.enabledExtensions)){let e=r.enabledExtensions.filter(e=>"string"==typeof e&&tG.has(e.toLowerCase()));e.length>0&&(n=[...new Set(e.map(e=>e.toLowerCase()))])}return{maxScanDepth:i,followSymlinks:a,enabledExtensions:n}}catch{return e}}let tq="muzical.playbackSnapshot";function tY(e){try{window.localStorage.setItem(tq,JSON.stringify(e))}catch{}}function tV(){return{trackIds:[],tracks:[],activeTrackId:null,positionSec:0}}function tZ(e){let t=new Set,r=[];for(let i of e){let e=i.youtubeQuery?.trim();!(!e||i.youtubeVideoId?.trim())&&(t.has(i.id)||(t.add(i.id),r.push({trackId:i.id,query:e})))}return r}e.s(["default",0,tZ],71569);var tK=e.i(62445);async function tH(e,t){let r=e.trim();if(!r)return null;let i=new URL("/api/youtube/resolve",window.location.origin);i.searchParams.set("q",r);let a=await fetch(i.toString(),{signal:t});if(!a.ok)return null;let n=await a.json();return n.videoId?.trim()||null}var tQ=e.i(65079);function tJ(e){let t=e.toLowerCase();return t.includes("quota")||t.includes("quotaexceeded")}function t0(){(0,tK.setYoutubeDataApiBlockedInternal)(!0)}e.s(["default",0,tJ],56784),e.s(["default",0,t0],95772),e.s(["YOUTUBE_DATA_API_MIN_INTERVAL_MS",0,900,"YOUTUBE_SEARCH_CACHE_TTL_MS",0,3e5,"YOUTUBE_SEARCH_DEBOUNCE_MS",0,500,"YOUTUBE_SEARCH_PAGE_SIZE",0,20],8998);let t1=0,t2=Promise.resolve();async function t4(){t2=t2.then(async()=>{let e=Math.max(0,900-(Date.now()-t1));e>0&&await new Promise(t=>setTimeout(t,e)),t1=Date.now()}),await t2}e.s(["default",0,t4],32022);let t3=new Map;function t8(e){let t=e.trim().toLowerCase();return t?t3.get(t)??null:null}async function t7(e,t,r){let i=e.trim(),a=t.trim();if(!i||!a||(0,tK.default)())return null;let n=t8(i);if(n)return n;let s=new URL("https://www.googleapis.com/youtube/v3/search");s.searchParams.set("part","snippet"),s.searchParams.set("type","video"),s.searchParams.set("maxResults","5"),s.searchParams.set("videoEmbeddable","true"),s.searchParams.set("q",i),s.searchParams.set("key",a),await t4();let o=await fetch(s,{signal:r}),l=await o.json();if(!o.ok){let e=l.error?.message?.trim()??"";return(l.error?.errors?.some(e=>"quotaExceeded"===e.reason)||tJ(e))&&t0(),null}for(let e of l.items??[]){let t=e.id?.videoId?.trim();if(t)return!function(e,t){let r=e.trim().toLowerCase(),i=t.trim();r&&i&&t3.set(r,i)}(i,t),t}return null}async function t5(e,t){let r=e.trim();if(!r)return null;let i=t8(r);if(i)return i;let a=(0,tQ.default)().trim();if(a&&!(0,tK.default)()){let e=await t7(r,a,t);if(e)return e}return tH(r,t)}async function t6(e,t,r={}){if(0===e.length||(0,tK.default)())return;let i="number"==typeof r.maxConcurrent&&r.maxConcurrent>0?Math.floor(r.maxConcurrent):2,a=r.signal,n=0,s=async()=>{for(;n<e.length;){if(a?.aborted)return;let r=n;n+=1;let i=e[r];if((0,tK.default)())return;let s=null;try{s=await t5(i.query,a)}catch{continue}!(a?.aborted||(0,tK.default)())&&s&&t(i.trackId,s)}},o=Array.from({length:Math.min(i,e.length)},()=>s());await Promise.all(o)}e.s(["default",0,t5],63080),e.s(["default",0,t6],45461);var t9=e.i(40911);let re=(0,r.createContext)(null),rt="muzical.recentlyPlayedTrackIds",rr="muzical.compactLists",ri="muzical.autoRescanOnStartup",ra="muzical.logLibraryScanTiming",rn="muzical.rememberLastQueue";function rs(e){try{let t=window.localStorage.getItem(e);if(!t)return!1;let r=JSON.parse(t);return!0===r}catch{return!1}}function ro(e,t){try{let r=window.localStorage.getItem(e);if(null===r)return t;let i=JSON.parse(r);return!0===i}catch{return t}}function rl(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch{}}function rc(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),[...r].sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"}))}let ru="Use Rescan all in Settings → Library, or remove and add the folders again so the browser can access your music.";async function rm(e){if(0===e.size)return!1;let t={mode:"read"};for(let r of e.values())try{let e=await r.queryPermission?.(t);if("granted"!==e)return!1}catch{return!1}return!0}async function rd(e,t){let r={mode:"read"};for(let i of e.values())try{let e=await i.queryPermission?.(r);if("granted"===e||!t)continue;await i.requestPermission?.(r)}catch{}}function rf(e){let{preferences:c}=(0,t9.useYoutubePreferences)(),h=(0,r.useRef)(null),g=(0,r.useRef)(!1),b=(0,r.useRef)(new Map),y=(0,r.useRef)([]),x=(0,r.useRef)([]),k=(0,r.useRef)(null),T=(0,r.useRef)(null),w=(0,r.useRef)(!1),S=(0,r.useRef)(!1),I=(0,r.useRef)(tW()),v=(0,r.useRef)(!1),E=(0,r.useRef)(!1),A=(0,r.useRef)(!1),_=(0,r.useRef)({activeQueueId:null,positionSec:0}),z=(0,r.useRef)(null),[C,N]=(0,r.useState)([]),[M,R]=(0,r.useState)([]),[L,P]=(0,r.useState)([]),[D,O]=(0,r.useState)([]),[U,B]=(0,r.useState)([]),[j,F]=(0,r.useState)([]),[X,$]=(0,r.useState)([]),[G,W]=(0,r.useState)([]),[q,Y]=(0,r.useState)(!1),[V,Z]=(0,r.useState)(!0),[K,H]=(0,r.useState)(!1),[Q,J]=(0,r.useState)(tW),[ee,et]=(0,r.useState)(!1),[er,ei]=(0,r.useState)(null),[ea,en]=(0,r.useState)(null),[es,eo]=(0,r.useState)(!1),[el,ec]=(0,r.useState)(!1),[eu,em]=(0,r.useState)(!1),[ed,ef]=(0,r.useState)(null),[ep,eh]=(0,r.useState)(null),[eg,eb]=(0,r.useState)(!1),[ey,ex]=(0,r.useState)(null),[ek,eT]=(0,r.useState)(null),[ew,eS]=(0,r.useState)(!1),[eI,ev]=(0,r.useState)(0),eE=(0,r.useRef)(0),eA=(0,r.useCallback)(e=>{let t=Math.max(0,Math.floor(e));0!==t&&(eE.current+=t,ev(eE.current),eS(!0))},[]),e_=(0,r.useCallback)(e=>{let t=Math.max(0,Math.floor(e));eE.current=Math.max(0,eE.current-t),ev(eE.current),0===eE.current&&eS(!1)},[]);(0,r.useEffect)(()=>{Promise.resolve().then(()=>{eb("showDirectoryPicker"in window)})},[]),(0,r.useEffect)(()=>{Promise.resolve().then(()=>{$((function(e){try{let t=window.localStorage.getItem(e);if(!t)return[];let r=JSON.parse(t);if(!Array.isArray(r))return[];return r.filter(e=>"string"==typeof e)}catch{return[]}})(rt).slice(0,24))})},[]),(0,r.useEffect)(()=>{queueMicrotask(()=>{W((function(){try{let e=window.localStorage.getItem(a);if(!e)return[];let t=JSON.parse(e);if(!Array.isArray(t))return[];let r=[];for(let e of t){let t=function(e){var t;if("object"!=typeof e||null===e||"library"!==(t=e.source)&&"musicbrainz"!==t&&"youtube"!==t||"string"!=typeof e.query)return null;let r=e.query.trim();return r?{source:e.source,query:r}:null}(e);t&&r.push(t)}return r}catch{return[]}})().slice(0,12)),S.current=!0})},[]),(0,r.useEffect)(()=>{Promise.resolve().then(()=>{Y(rs(rr))})},[]),(0,r.useEffect)(()=>{Promise.resolve().then(()=>{Z(ro(ri,!0))})},[]),(0,r.useEffect)(()=>{Promise.resolve().then(()=>{let e=rs(ra);H(e),v.current=e})},[]),(0,r.useEffect)(()=>{Promise.resolve().then(()=>{let e=tW();I.current=e,J(e)})},[]),(0,r.useEffect)(()=>{Promise.resolve().then(()=>{let e=rs(rn);E.current=e,et(e)})},[]),(0,r.useEffect)(()=>{var e=X.slice(0,24);try{window.localStorage.setItem(rt,JSON.stringify(e))}catch{}},[X]),(0,r.useEffect)(()=>{S.current&&n(G.slice(0,12))},[G]),(0,r.useEffect)(()=>{x.current=U},[U]),(0,r.useEffect)(()=>()=>{k.current&&(clearTimeout(k.current),k.current=null),T.current&&(clearTimeout(T.current),T.current=null),z.current&&(clearTimeout(z.current),z.current=null)},[]);let ez=(0,r.useCallback)(()=>{if(!E.current)return;if(z.current&&(clearTimeout(z.current),z.current=null),0===j.length)return void tY(tV());let e=_.current.activeQueueId,t=e?j.find(t=>t.queueId===e):j[0];tY({trackIds:j.map(e=>e.track.id),tracks:j.map(e=>e.track),activeTrackId:t?.track.id??null,positionSec:_.current.positionSec})},[j]),eC=(0,r.useCallback)(()=>{!E.current||A.current&&(z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{z.current=null,ez()},400))},[ez]),eN=(0,r.useCallback)(e=>{if(!A.current){if(A.current=!0,E.current){let t=function(){try{let e,t=window.localStorage.getItem(tq);if(!t)return null;let r=JSON.parse(t);if(!r||"object"!=typeof r||!Array.isArray(r.trackIds))return null;let i=r.trackIds.filter(e=>"string"==typeof e&&e.length>0);if(Array.isArray(r.tracks)){let t=[];for(let e of r.tracks){let r=tk(e);r&&t.push(r)}t.length>0&&(e=t)}let a="string"==typeof r.activeTrackId?r.activeTrackId:null,n="number"==typeof r.positionSec&&Number.isFinite(r.positionSec)&&r.positionSec>=0?r.positionSec:0;return{trackIds:i,tracks:e,activeTrackId:a,positionSec:n}}catch{return null}}();if(t&&t.trackIds.length>0){let r=function(e,t){let r=new Map;for(let t of e)r.set(t.id,t);let i=[];if(t.tracks&&t.tracks.length>0)for(let e of t.tracks)i.push(r.get(e.id)??e);else for(let e of t.trackIds){let t=r.get(e);t&&i.push(t)}let a=i.map(e=>({queueId:crypto.randomUUID(),track:e})),n=null;if(t.activeTrackId){let e=a.find(e=>e.track.id===t.activeTrackId);n=e?.queueId??a[0]?.queueId??null}else n=a[0]?.queueId??null;return{queue:a,activeQueueId:n,positionSec:t.positionSec}}(e,t);if(r.queue.length>0){let e=!1;F(t=>t.length>0?t:(e=!0,r.queue)),e&&(_.current={activeQueueId:r.activeQueueId,positionSec:r.positionSec},ei({activeQueueId:r.activeQueueId,positionSec:r.positionSec}))}}}ec(!0)}},[]);(0,r.useEffect)(()=>{if(!A.current)return;let e=new Map(U.map(e=>[e.id,e]));F(t=>t.map(t=>{let r=e.get(t.track.id);return r?{...t,track:r}:t}))},[U]),(0,r.useEffect)(()=>{eC()},[j,eC]),(0,r.useEffect)(()=>{!es||A.current||eN(U)},[es,U,eN]),(0,r.useEffect)(()=>{let e=()=>{ez()};return window.addEventListener("pagehide",e),()=>{window.removeEventListener("pagehide",e)}},[ez]);let eM=(0,r.useCallback)(()=>{k.current&&(clearTimeout(k.current),k.current=null);let e=h.current;e&&d(e,y.current.map(e=>e.id),x.current).catch(()=>{})},[]),eR=(0,r.useCallback)(()=>{k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{k.current=null,eM()},450)},[eM]);(0,r.useEffect)(()=>{let e=()=>{eM()};return window.addEventListener("pagehide",e),()=>{window.removeEventListener("pagehide",e)}},[eM]);let eL=(0,r.useCallback)(()=>{T.current&&(clearTimeout(T.current),T.current=null)},[]),eP=(0,r.useCallback)(()=>{eL(),T.current=setTimeout(()=>{T.current=null,ef(null)},4e3)},[eL]),eD=(0,r.useCallback)(()=>{eL(),ef(null)},[eL]),eO=(0,r.useCallback)(e=>{ef({percent:function(e){if(e.rootCount<=0)return 0;let t=100/e.rootCount,r=e.rootIndex*t;if("walk"===e.phase)r+=.12*t;else{let i=e.filesTotal??0,a=e.filesDone??0;r+=t*(.12+.88*(i>0?Math.min(1,a/i):0))}return Math.min(100,Math.round(r))}(e),label:function(e){let t=e.rootCount>1?`[${e.rootIndex+1}/${e.rootCount}] `:"";if("walk"===e.phase)return`${t}Listing files in ${e.rootName}…`;let r=e.filesTotal??0,i=e.filesDone??0,a=e.filesSkipped??0;return r>0?a>0?`${t}Reading tags (${i}/${r}, ${a} unchanged) \xb7 ${e.rootName}`:`${t}Reading tags (${i}/${r}) \xb7 ${e.rootName}`:`${t}Reading tags \xb7 ${e.rootName}`}(e),rootName:e.rootName,filesDone:e.filesDone??0,filesTotal:e.filesTotal??0})},[]),eU=(0,r.useCallback)(async e=>{if(g.current)return null;g.current=!0;let t=y.current,r=b.current;eL(),em(!0),eh(null),ef({percent:0,label:"Starting library scan…",rootName:null,filesDone:0,filesTotal:0});try{var i;t.length>0&&await rd(r,e);let a={maxScanDepth:(i=I.current).maxScanDepth,followSymlinks:i.followSymlinks,enabledExtensions:new Set(i.enabledExtensions)},n=await e6(t,r,a,x.current,v.current,eO);return ef({percent:100,label:n.tracks.length>0?`Found ${n.tracks.length} track${1===n.tracks.length?"":"s"}`:"Scan complete",rootName:null,filesDone:n.tracks.length,filesTotal:n.tracks.length}),eP(),n}catch(e){return ef(null),eh(e instanceof Error?e.message:"Scan failed"),null}finally{g.current=!1,em(!1)}},[eO,eL,eP]),eB=(0,r.useCallback)(async(e=!1)=>{let t=await eU(e);if(!t)return;let r=y.current,{tracks:i,failedRootCount:a,firstError:n}=t,s=ty(i,x.current);B(s);let o=h.current;if(o)try{await d(o,r.map(e=>e.id),s)}catch{}e&&a>0&&0===i.length&&r.length>0&&eh(n?`${n} ${ru}`:ru)},[eU]),ej=(0,r.useCallback)((e,t)=>{if(!Number.isFinite(t)||t<=0)return;let r=r=>r.id===e&&r.durationSec<=0?{...r,durationSec:t}:r;B(e=>e.map(r)),F(e=>e.map(e=>({...e,track:r(e.track)}))),eR()},[eR]),eF=(0,r.useCallback)((e,t)=>{let r=e.trim();if(!r)return;let i=e=>e.id===r?t(e):e;B(e=>e.map(i)),F(e=>e.map(e=>({...e,track:i(e.track)}))),ex(e=>e?.id===r?t(e):e),eR()},[eR]),eX=(0,r.useCallback)(async(e,t)=>{let r=e.trim();if(!r)return{ok:!1,reason:"Invalid track."};let i=x.current.find(e=>e.id===r);if(!i)return{ok:!1,reason:"Track not found."};let a=ts(i,t);return(eF(r,()=>a),a.library)?tg(a,{title:a.title,artist:a.artist,album:a.album},b.current,!0):{ok:!0}},[eF]),e$=(0,r.useCallback)(async e=>tb(e,b.current,!0),[]),eG=(0,r.useCallback)((e,t)=>{let r=e.trim();if(!r)return null;let i=t.artist.trim();if(!i)return null;let a=t.album.trim(),n=e=>tt(e.album,e.artist)===r,s=tr(x.current,r);if(0===s.length)return null;let o=tt(a||s[0].album,i),l=e=>n(e)?ta(e,{artist:i,album:a}):e;return B(e=>e.map(l)),F(e=>e.map(e=>({...e,track:l(e.track)}))),ex(e=>e&&n(e)?l(e):e),P(e=>{if(!e.includes(r))return e;let t=e.filter(e=>e!==r);return t.includes(o)?t:[...t,o]}),eR(),o},[eR]),eW=(0,r.useCallback)((e,t)=>{let r=e.trim(),i=t.artist.trim();if(!r||!i)return null;let a=e=>te(e.artist)===r;if(0===ti(x.current,r).length)return null;let n=e=>a(e)?tn(e,{artist:i}):e;return B(e=>e.map(n)),F(e=>e.map(e=>({...e,track:n(e.track)}))),ex(e=>e&&a(e)?n(e):e),R(e=>{if(!e.includes(r))return e;let t=e.filter(e=>e!==r);return t.includes(i)?t:[...t,i]}),P(e=>{let t=!1,a=e.map(e=>{let a=e.split("\0"),n=a[0]??"";return te(a[1]??"")!==r?e:(t=!0,tt(n,i))});return t?[...new Set(a)]:e}),eR(),i},[eR]);(0,r.useEffect)(()=>{if(!c.prefetchQueueVideoIds||(0,tK.default)())return;let e=c.prefetchQueueMaxTracks,t=tZ(j.map(e=>e.track)).slice(0,e);if(0===t.length)return;let r=new AbortController,i=t.length;return eA(i),t6(t,(e,t)=>{eF(e,e=>({...e,youtubeVideoId:t}))},{signal:r.signal}).finally(()=>{e_(i)}),()=>{r.abort()}},[j,eF,c.prefetchQueueVideoIds,c.prefetchQueueMaxTracks,eA,e_]);let eq=(0,r.useCallback)(e=>{let t=(Array.isArray(e)?e:[e]).map(e=>({queueId:crypto.randomUUID(),track:e}));F(e=>[...e,...t])},[]),eY=(0,r.useCallback)(e=>{let t=Array.isArray(e)?[...e]:[e];if(0===t.length)return;let r=t.map(e=>({queueId:crypto.randomUUID(),track:e})),i=r[0].queueId;_.current={activeQueueId:i,positionSec:0},F(r),en({activeQueueId:i}),E.current&&(z.current&&(clearTimeout(z.current),z.current=null),tY({trackIds:t.map(e=>e.id),tracks:t,activeTrackId:t[0].id,positionSec:0}))},[]),eV=(0,r.useCallback)(()=>{en(null)},[]),eZ=(0,r.useCallback)(e=>{let t=(Array.isArray(e)?e:[e]).map(tx);0!==t.length&&(B(e=>{let r=new Map(e.map(e=>[e.id,e])),i=!1;for(let e of t){let t=r.get(e.id);if(t){r.set(e.id,{...t,...e,youtubeVideoId:e.youtubeVideoId??t.youtubeVideoId}),i=!0;continue}r.set(e.id,e),i=!0}return i?[...r.values()]:e}),eR())},[eR]),eK=(0,r.useCallback)(e=>{let t=new Set((Array.isArray(e)?e:[e]).map(e=>e.id).filter(Boolean));0!==t.size&&(B(e=>e.filter(e=>!t.has(e.id))),N(e=>e.filter(e=>!t.has(e))),F(e=>e.filter(e=>!t.has(e.track.id))),eR())},[eR]),eH=(0,r.useCallback)(e=>{let t=e.trim();if(!t)return;let r=tr(x.current,t);0!==r.length&&(P(e=>e.filter(e=>e!==t)),eK(r))},[eK]),eQ=(0,r.useCallback)(e=>{let t=e.trim();if(!t)return;let r=ti(x.current,t);0!==r.length&&(R(e=>e.filter(e=>e!==t)),eK(r))},[eK]),eJ=(0,r.useCallback)(()=>{let e=x.current,t=new Set(e.filter(e9).map(e=>e.id));0!==t.size&&(B(e.filter(e=>!e9(e))),N(e=>e.filter(e=>!t.has(e))),F(e=>e.filter(e=>!t.has(e.track.id))),eR())},[eR]),e0=(0,r.useCallback)(e=>{F(t=>t.filter(t=>t.queueId!==e))},[]),e1=(0,r.useCallback)(()=>{_.current={activeQueueId:null,positionSec:0},F([]),E.current&&(z.current&&(clearTimeout(z.current),z.current=null),tY(tV()))},[]),e2=(0,r.useCallback)((e,t)=>{if(!Number.isFinite(e)||!Number.isFinite(t))return;let r=Math.trunc(e),i=Math.trunc(t);F(e=>{if(r<0||i<0||r>=e.length||i>=e.length||r===i)return e;let t=[...e],[a]=t.splice(r,1);return t.splice(i,0,a),t})},[]),e4=(0,r.useCallback)(e=>{let t=e.trim();t&&$(e=>[t,...e.filter(e=>e!==t)].slice(0,24))},[]),e3=(0,r.useCallback)((e,t)=>{let r=t.trim();!r||"library"===e&&r.length<2||"musicbrainz"===e&&r.length<3||"youtube"===e&&r.length<2||W(t=>{let a=function(e,t){let r=t.query.trim();if(!r)return[...e];let a={source:t.source,query:r},n=i(a);return[a,...e.filter(e=>i(e)!==n)].slice(0,12)}(t,{source:e,query:r});return S.current&&n(a),a})},[]),e8=(0,r.useCallback)(()=>{W([]),n([])},[]),e7=(0,r.useCallback)(e=>{Y(e),rl(rr,e)},[]),e5=(0,r.useCallback)(e=>{Z(e),rl(ri,e)},[]),to=(0,r.useCallback)(e=>{v.current=e,H(e),rl(ra,e)},[]),tl=(0,r.useCallback)(e=>{ex(e)},[]),tc=(0,r.useCallback)(()=>{ex(null)},[]),tu=(0,r.useCallback)(e=>{eT(e)},[]),tm=(0,r.useCallback)(()=>{eT(null)},[]),td=(0,r.useCallback)(e=>{I.current=e,J(e);try{window.localStorage.setItem(t$,JSON.stringify(e))}catch{}},[]),tf=(0,r.useCallback)(e=>{E.current=e,et(e),rl(rn,e),e?ez():tY(tV())},[ez]),tp=(0,r.useCallback)(()=>{ei(null)},[]),th=(0,r.useCallback)((e,t)=>{_.current={activeQueueId:e,positionSec:t},eC()},[eC]),tS=(0,r.useCallback)(e=>tT(e,b.current),[]),tI=(0,r.useMemo)(()=>new Set(C),[C]),tv=(0,r.useMemo)(()=>new Set(M),[M]),tE=(0,r.useMemo)(()=>new Set(L),[L]),tA=(0,r.useCallback)(e=>tI.has(e),[tI]),t_=(0,r.useCallback)(e=>tv.has(e),[tv]),tz=(0,r.useCallback)(e=>tE.has(e),[tE]),tC=(0,r.useCallback)(e=>{N(t=>rc(t,e))},[]),tN=(0,r.useCallback)(e=>{R(t=>rc(t,e))},[]),tR=(0,r.useCallback)(e=>{P(t=>rc(t,e))},[]),tL=(0,r.useCallback)(e=>{tC(e.id)},[tC]),tP=(0,r.useCallback)(e=>{N([...e.songIds]),R([...e.artistNames]),P([...e.albumKeys])},[]);(0,r.useEffect)(()=>{if(!w.current)return;let e=h.current;e&&(function(e,t){if(!e.objectStoreNames.contains(l))return Promise.reject(Error(`Missing object store ${l}`));let r={key:m,songIds:[...t.songIds],artistNames:[...t.artistNames],albumKeys:[...t.albumKeys]};return new Promise((t,i)=>{let a=e.transaction(l,"readwrite"),n=a.objectStore(l).put(r);n.onerror=()=>{i(n.error??Error("IndexedDB favorites put failed"))},a.oncomplete=()=>{t()},a.onerror=()=>{i(a.error??Error("IndexedDB favorites transaction failed"))}})})(e,{songIds:C,artistNames:M,albumKeys:L}).catch(()=>{})},[C,M,L]);let tD=(0,r.useCallback)(async e=>{try{let t=crypto.randomUUID(),r=Date.now(),i={id:t,name:e.name,addedAt:r,handle:e},a=h.current;if(!a)return void eh("Library database is not ready yet.");await new Promise((e,t)=>{let r=a.transaction(o,"readwrite"),n=r.objectStore(o).put(i);n.onerror=()=>{t(n.error??Error("IndexedDB put failed"))},r.oncomplete=()=>{e()},r.onerror=()=>{t(r.error??Error("IndexedDB transaction failed"))}}),b.current.set(t,e);let n=[...y.current,{id:t,name:e.name,addedAt:r}];y.current=n,O(n),await eB(!0)}catch(e){eh(p(e))}},[eB]),tO=(0,r.useCallback)(()=>{let e;if(!window.isSecureContext)return void eh("Folder access needs a secure context. Use https:// or open the app at http://localhost.");if(!eg)return void eh("This browser does not support folder selection. Use a Chromium-based desktop browser.");if(!h.current)return void eh("Library database is not ready yet.");eh(null);try{e=window.showDirectoryPicker({mode:"readwrite"})}catch(t){let e=p(t);e&&eh(e);return}e.then(e=>tD(e)).catch(e=>{if(e instanceof DOMException&&"AbortError"===e.name)return;let t=p(e);t&&eh(t)})},[eg,tD]),tU=(0,r.useCallback)(async e=>{let t=h.current;if(t)try{await new Promise((r,i)=>{let a=t.transaction(o,"readwrite"),n=a.objectStore(o).delete(e);n.onerror=()=>{i(n.error??Error("IndexedDB delete failed"))},a.oncomplete=()=>{r()},a.onerror=()=>{i(a.error??Error("IndexedDB transaction failed"))}}),b.current.delete(e);let r=y.current.filter(t=>t.id!==e);y.current=r,O(r),await eB(!0)}catch(e){eh(e instanceof Error?e.message:"Could not remove library folder")}},[eB]),tB=(0,r.useCallback)(async()=>{await eB(!0)},[eB]);(0,r.useEffect)(()=>{let e=!1;return(async()=>{let t=[];try{var r;let i=await new Promise((e,t)=>{let r=indexedDB.open(s,3);r.onerror=()=>{t(r.error??Error("IndexedDB open failed"))},r.onsuccess=()=>{e(r.result)},r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(o)||e.createObjectStore(o,{keyPath:"id"}),e.objectStoreNames.contains(l)||e.createObjectStore(l,{keyPath:"key"})}});if(e)return void i.close();h.current=i;try{let t=await (!i.objectStoreNames.contains(l)?Promise.resolve(f()):new Promise((e,t)=>{let r=i.transaction(l,"readonly").objectStore(l).get(m);r.onerror=()=>{t(r.error??Error("IndexedDB favorites get failed"))},r.onsuccess=()=>{let t=r.result;t&&t.key===m&&Array.isArray(t.songIds)&&Array.isArray(t.artistNames)&&Array.isArray(t.albumKeys)?e({key:m,songIds:[...t.songIds],artistNames:[...t.artistNames],albumKeys:[...t.albumKeys]}):e(f())}}));e||(N(t.songIds),R(t.artistNames),P(t.albumKeys))}catch{e||(N([]),R([]),P([]))}e||(w.current=!0),navigator.storage?.persist?.();let a=await new Promise((e,t)=>{let r=i.transaction(o,"readonly").objectStore(o).getAll();r.onerror=()=>{t(r.error??Error("IndexedDB getAll failed"))},r.onsuccess=()=>{e(r.result)}});if(e)return;let n=new Map,c=[];for(let e of a)n.set(e.id,e.handle),c.push({id:e.id,name:e.name,addedAt:e.addedAt});if(e)return;b.current=n,y.current=c,O(c),t=[];let p=!1,g=[];try{let a=await (!i.objectStoreNames.contains(l)?Promise.resolve(null):new Promise((e,t)=>{let r=i.transaction(l,"readonly").objectStore(l).get(u);r.onerror=()=>{t(r.error??Error("IndexedDB catalog get failed"))},r.onsuccess=()=>{let t=r.result;t&&t.key===u&&Array.isArray(t.rootIds)&&Array.isArray(t.tracks)?e(t):e(null)}}));if(!e&&a){let e=function(e){let t=[],r=new Set;for(let i of e){let e=tk(i);!e||r.has(e.id)||(r.add(e.id),t.push(e))}return t}(a.tracks);(g=e.filter(e9),c.length>0&&(r=a.rootIds,c.length===r.length&&[...c].map(e=>e.id).sort((e,t)=>e.localeCompare(t,void 0,{sensitivity:"base"})).every((e,t)=>e===r[t])))?(t=e,B(t),p=!0):g.length>0&&(t=g,B(g),p=!0)}}catch{}if(e)return;let k=c.length>0&&await rm(n),T=ro(ri,!0);if(e)return;if(k&&T&&!e){let r=await eU(!1);if(e||!r)return;let{tracks:a,firstError:n,failedRootCount:s}=r;if(0===a.length&&c.length>0&&s>0)if(p)eh(null);else{t=ty(a,g),B(t);try{await d(i,c.map(e=>e.id),t)}catch{}eh(n?`${n} ${ru}`:ru)}else{t=ty(a,x.current),B(t);try{await d(i,c.map(e=>e.id),t)}catch{}}}}catch(t){e||eh(t instanceof Error?t.message:"Could not load library")}finally{e||(A.current||eN(t),eo(!0))}})(),()=>{e=!0}},[eU,eN]);let tj=(0,r.useMemo)(()=>({roots:D,libraryTracks:U,queue:j,recentlyPlayedTrackIds:X,recentBrowseSearches:G,compactLists:q,autoRescanOnStartup:V,logLibraryScanTiming:K,scanPreferences:Q,rememberLastQueue:ee,playbackRestore:er,playNowRequest:ea,isQueueReady:el,isScanning:eu,youtubePrefetchActive:ew,youtubePrefetchVideoCount:eI,beginYoutubePrefetch:eA,endYoutubePrefetch:e_,scanError:ep,hasDirectoryPicker:eg,addLibraryFolder:tO,removeLibraryFolder:tU,rescanAll:tB,addToQueue:eq,playNow:eY,addToLibrary:eZ,removeFromLibrary:eK,removeAlbumFromLibrary:eH,removeArtistFromLibrary:eQ,removeAllMusicBrainzFromLibrary:eJ,removeFromQueue:e0,clearQueue:e1,recordRecentlyPlayedTrack:e4,recordRecentBrowseSearch:e3,clearRecentBrowseSearches:e8,setCompactLists:e7,setAutoRescanOnStartup:e5,setLogLibraryScanTiming:to,setScanPreferences:td,setRememberLastQueue:tf,consumePlaybackRestore:tp,consumePlayNowRequest:eV,reportPlayback:th,reorderQueueItems:e2,resolveFileForTrack:tS,bumpTrackDuration:ej,patchTrackById:eF,saveTrackMetadata:eX,writeLibraryTracksToFiles:e$,patchAlbumMetadataByKey:eG,patchArtistMetadataByKey:eW,favoriteSongIds:C,favoriteArtistNames:M,favoriteAlbumKeys:L,isFavoriteSong:tA,isFavoriteArtist:t_,isFavoriteAlbum:tz,toggleFavoriteSong:tC,toggleFavoriteArtist:tN,toggleFavoriteAlbum:tR,toggleFavoriteTrack:tL,importFavorites:tP,detailsTrack:ey,openTrackDetails:tl,closeTrackDetails:tc,relatedSongsSeedTrack:ek,openRelatedSongs:tu,closeRelatedSongs:tm}),[D,U,j,X,G,q,V,K,Q,ee,er,ea,el,eu,ew,eI,eA,e_,ep,eg,tO,tU,tB,eq,eY,eZ,eK,eH,eQ,eJ,e0,e1,e4,e3,e8,e7,e5,to,td,tf,tp,eV,th,e2,tS,ej,eF,eX,e$,eG,eW,C,M,L,tA,t_,tz,tC,tN,tR,tL,tP,ey,tl,tc,ek,tu,tm]);return(0,t.jsxs)(re.Provider,{value:tj,children:[e.children,(0,t.jsx)(tw,{progress:ed,onDismiss:eD}),(0,t.jsx)(tF,{track:ey,onClose:tc}),(0,t.jsx)(tM,{seedTrack:ek,onClose:tm})]})}function rp(){let e=(0,r.useContext)(re);if(!e)throw Error("useLibrary must be used within LibraryProvider");return e}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,47795,e=>{"use strict";let r=[{href:"/settings",label:"Overview",description:"Summary and links to all settings sections."},{href:"/settings/library",label:"Library",description:"Scan folders, favorites export, rescan on startup, and configured directories."},{href:"/settings/youtube",label:"YouTube",description:"Data API key, queue video prefetch, and related YouTube options."},{href:"/settings/lastfm",label:"Last.fm",description:"API key for related song discovery via track.getSimilar."},{href:"/settings/playback",label:"Playback",description:"Queue restore, repeat, shuffle, speed, volume, seek steps, and auto-advance."},{href:"/settings/browse",label:"Browse",description:"Default Library, MusicBrainz, or YouTube tab when Muzical opens."},{href:"/settings/display",label:"Display",description:"List density and other visual preferences in the player."}],i=r.filter(e=>"/settings"!==e.href);e.s(["SETTINGS_NAV_ITEMS",0,r,"SETTINGS_SECTION_ITEMS",0,i])},71060,(e,r,i)=>{r.exports=e.r(2052)},62474,e=>{"use strict";var r=e.i(54710),i=e.i(80492);function t(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,r.jsx)("path",{d:"M12 7a5 5 0 1 0 0 10 5 5 0 0 0 0-10zM2 13h2v-2H2v2zm18 0h2v-2h-2v2zM11 2v2h2V2h-2zm0 18v2h2v-2h-2zM4.22 19.78l1.42-1.42-1.42-1.42-1.42 1.42 1.42 1.42zm12.72-1.42 1.42 1.42 1.42-1.42-1.42-1.42-1.42 1.42zM19.78 4.22l-1.42 1.42 1.42 1.42 1.42-1.42-1.42-1.42zM7.05 5.64 5.64 4.22 4.22 5.64l1.42 1.42 1.41-1.42z"})})}function s(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,className:e.className,children:(0,r.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})})}e.s(["default",0,function(){let{scheme:e,toggleScheme:n}=(0,i.useTheme)(),a="dark"===e;return(0,r.jsx)("button",{type:"button",onClick:n,"aria-label":a?"Switch to light theme":"Switch to dark theme",className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-full border border-zinc-200 bg-white text-zinc-600 shadow-sm transition hover:border-zinc-300 hover:bg-zinc-50 hover:text-zinc-900 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-300 dark:shadow-none dark:hover:border-zinc-500 dark:hover:bg-zinc-700 dark:hover:text-zinc-50",children:a?(0,r.jsx)(t,{className:"h-[18px] w-[18px]"}):(0,r.jsx)(s,{className:"h-[18px] w-[18px]"})})}])},85876,e=>{"use strict";var r=e.i(54710),i=e.i(45958),t=e.i(71060),s=e.i(47795);function n(){let e=(0,t.usePathname)();return(0,r.jsx)("nav",{"aria-label":"Settings sections",children:(0,r.jsx)("ul",{className:"overflow-hidden rounded-lg border border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900/40 sm:border-0 sm:bg-transparent sm:dark:bg-transparent",children:s.SETTINGS_NAV_ITEMS.map((t,s)=>{let n="/settings"===t.href?"/settings"===e:e===t.href||e.startsWith(`${t.href}/`);return(0,r.jsx)("li",{className:s>0?"border-t border-zinc-200 dark:border-zinc-800 sm:border-t-0":void 0,children:(0,r.jsx)(i.default,{href:t.href,"aria-current":n?"page":void 0,className:`block px-2.5 py-1.5 text-xs font-medium transition sm:rounded-lg sm:px-2 sm:py-1.5 ${n?"bg-accent-500/15 text-accent-900 dark:bg-accent-500/20 dark:text-accent-200":"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800/80 dark:hover:text-zinc-100"}`,children:t.label})},t.href)})})})}var a=e.i(62474);e.s(["default",0,function(e){return(0,r.jsxs)("div",{className:"flex h-full min-h-0 flex-1 flex-col overflow-hidden bg-zinc-100 text-zinc-900 dark:bg-zinc-950 dark:text-zinc-100",children:[(0,r.jsxs)("header",{className:"flex shrink-0 items-center justify-between gap-4 border-b border-zinc-200 bg-white/90 px-6 py-4 backdrop-blur-sm dark:border-zinc-800/80 dark:bg-zinc-950/90",children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,r.jsx)(i.default,{href:"/",className:"shrink-0 rounded-lg border border-zinc-200 bg-zinc-50 px-3 py-1.5 text-xs font-medium text-zinc-700 transition hover:bg-zinc-100 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800",children:"← Player"}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("h1",{className:"truncate text-sm font-semibold tracking-tight",children:"Settings"}),(0,r.jsx)("p",{className:"truncate text-xs text-zinc-500",children:"Configure Muzical on this device."})]})]}),(0,r.jsx)(a.default,{})]}),(0,r.jsxs)("div",{className:"flex min-h-0 w-full flex-1 overflow-hidden",children:[(0,r.jsx)("aside",{className:"hidden w-36 shrink-0 border-r border-zinc-200 px-3 py-6 dark:border-zinc-800/80 sm:block",children:(0,r.jsx)(n,{})}),(0,r.jsxs)("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto overscroll-contain",children:[(0,r.jsx)("div",{className:"mb-4 px-4 pt-4 sm:hidden",children:(0,r.jsx)(n,{})}),(0,r.jsx)("div",{className:"px-4 pb-6 pt-1 sm:px-6 sm:pb-8 sm:pt-6",children:e.children})]})]})]})}],85876)}]);