@archipelagolab/lobi 1.0.1 → 1.0.5

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 (1164) hide show
  1. package/dist/APEv2Parser-6EMKXRZS.js +15 -0
  2. package/dist/APEv2Parser-6EMKXRZS.js.map +7 -0
  3. package/dist/AiffParser-E6XWRTXM.js +194 -0
  4. package/dist/AiffParser-E6XWRTXM.js.map +7 -0
  5. package/dist/AsfParser-WSOH2JQY.js +620 -0
  6. package/dist/AsfParser-WSOH2JQY.js.map +7 -0
  7. package/dist/DsdiffParser-EUWJ4YAR.js +192 -0
  8. package/dist/DsdiffParser-EUWJ4YAR.js.map +7 -0
  9. package/dist/DsfParser-R6TPBJIY.js +114 -0
  10. package/dist/DsfParser-R6TPBJIY.js.map +7 -0
  11. package/dist/FlacParser-VDASGZ3E.js +16 -0
  12. package/dist/FlacParser-VDASGZ3E.js.map +7 -0
  13. package/dist/MP4Parser-64RGJLUM.js +1145 -0
  14. package/dist/MP4Parser-64RGJLUM.js.map +7 -0
  15. package/dist/MatroskaParser-O6RXAKYA.js +662 -0
  16. package/dist/MatroskaParser-O6RXAKYA.js.map +7 -0
  17. package/dist/MpegParser-B6NX6DS3.js +652 -0
  18. package/dist/MpegParser-B6NX6DS3.js.map +7 -0
  19. package/dist/MusepackParser-WUBT63DS.js +331 -0
  20. package/dist/MusepackParser-WUBT63DS.js.map +7 -0
  21. package/dist/OggParser-ZY6E5C2P.js +448 -0
  22. package/dist/OggParser-ZY6E5C2P.js.map +7 -0
  23. package/dist/WavPackParser-5KTCSQEU.js +209 -0
  24. package/dist/WavPackParser-5KTCSQEU.js.map +7 -0
  25. package/dist/WaveParser-RZSHVQPZ.js +300 -0
  26. package/dist/WaveParser-RZSHVQPZ.js.map +7 -0
  27. package/dist/auth-presence.js +46 -0
  28. package/dist/auth-presence.js.map +7 -0
  29. package/dist/channel-plugin-api.js +79 -0
  30. package/dist/channel-plugin-api.js.map +7 -0
  31. package/dist/chunk-22WAAZ6I.js +114 -0
  32. package/dist/chunk-22WAAZ6I.js.map +7 -0
  33. package/dist/chunk-2A6HEFSO.js +676 -0
  34. package/dist/chunk-2A6HEFSO.js.map +7 -0
  35. package/dist/chunk-2KGHUHKU.js +169 -0
  36. package/dist/chunk-2KGHUHKU.js.map +7 -0
  37. package/dist/chunk-2NEQI4K6.js +171 -0
  38. package/dist/chunk-2NEQI4K6.js.map +7 -0
  39. package/dist/chunk-2OSJ3MTW.js +175 -0
  40. package/dist/chunk-2OSJ3MTW.js.map +7 -0
  41. package/dist/chunk-2Q626TDO.js +27 -0
  42. package/dist/chunk-2Q626TDO.js.map +7 -0
  43. package/dist/chunk-2U6OZ7N2.js +155 -0
  44. package/dist/chunk-2U6OZ7N2.js.map +7 -0
  45. package/dist/chunk-2Z4IOUDZ.js +129 -0
  46. package/dist/chunk-2Z4IOUDZ.js.map +7 -0
  47. package/dist/chunk-2ZEPAW7U.js +154 -0
  48. package/dist/chunk-2ZEPAW7U.js.map +7 -0
  49. package/dist/chunk-2ZI6JK5O.js +63 -0
  50. package/dist/chunk-2ZI6JK5O.js.map +7 -0
  51. package/dist/chunk-34UY6D6X.js +36 -0
  52. package/dist/chunk-34UY6D6X.js.map +7 -0
  53. package/dist/chunk-3JD6JSJD.js +111 -0
  54. package/dist/chunk-3JD6JSJD.js.map +7 -0
  55. package/dist/chunk-3TOEIHG5.js +314 -0
  56. package/dist/chunk-3TOEIHG5.js.map +7 -0
  57. package/dist/chunk-3TRKKAVT.js +130 -0
  58. package/dist/chunk-3TRKKAVT.js.map +7 -0
  59. package/dist/chunk-3UFTTK7C.js +418 -0
  60. package/dist/chunk-3UFTTK7C.js.map +7 -0
  61. package/dist/chunk-3XO6AAIC.js +25 -0
  62. package/dist/chunk-3XO6AAIC.js.map +7 -0
  63. package/dist/chunk-427SAQME.js +321 -0
  64. package/dist/chunk-427SAQME.js.map +7 -0
  65. package/dist/chunk-4JVNTZAI.js +80 -0
  66. package/dist/chunk-4JVNTZAI.js.map +7 -0
  67. package/dist/chunk-4O3BEYYM.js +187 -0
  68. package/dist/chunk-4O3BEYYM.js.map +7 -0
  69. package/dist/chunk-4Z2N4GW6.js +247 -0
  70. package/dist/chunk-4Z2N4GW6.js.map +7 -0
  71. package/dist/chunk-56HN4SH6.js +46 -0
  72. package/dist/chunk-56HN4SH6.js.map +7 -0
  73. package/dist/chunk-5APBBTGW.js +7 -0
  74. package/dist/chunk-5APBBTGW.js.map +7 -0
  75. package/dist/chunk-5LNGMBWW.js +93 -0
  76. package/dist/chunk-5LNGMBWW.js.map +7 -0
  77. package/dist/chunk-5XFQSYZ4.js +52 -0
  78. package/dist/chunk-5XFQSYZ4.js.map +7 -0
  79. package/dist/chunk-62N5N4AC.js +241 -0
  80. package/dist/chunk-62N5N4AC.js.map +7 -0
  81. package/dist/chunk-6HX3DEXK.js +178 -0
  82. package/dist/chunk-6HX3DEXK.js.map +7 -0
  83. package/dist/chunk-6NO5VEVV.js +18 -0
  84. package/dist/chunk-6NO5VEVV.js.map +7 -0
  85. package/dist/chunk-6PZGDVLR.js +465 -0
  86. package/dist/chunk-6PZGDVLR.js.map +7 -0
  87. package/dist/chunk-6SOGH3TW.js +163 -0
  88. package/dist/chunk-6SOGH3TW.js.map +7 -0
  89. package/dist/chunk-72TGY3LX.js +104 -0
  90. package/dist/chunk-72TGY3LX.js.map +7 -0
  91. package/dist/chunk-76IE55K7.js +392 -0
  92. package/dist/chunk-76IE55K7.js.map +7 -0
  93. package/dist/chunk-7F3242AO.js +86 -0
  94. package/dist/chunk-7F3242AO.js.map +7 -0
  95. package/dist/chunk-7FLQSTPG.js +57 -0
  96. package/dist/chunk-7FLQSTPG.js.map +7 -0
  97. package/dist/chunk-7MP46JBP.js +177 -0
  98. package/dist/chunk-7MP46JBP.js.map +7 -0
  99. package/dist/chunk-7MVZYR2T.js +87 -0
  100. package/dist/chunk-7MVZYR2T.js.map +7 -0
  101. package/dist/chunk-7N7ISMPG.js +50 -0
  102. package/dist/chunk-7N7ISMPG.js.map +7 -0
  103. package/dist/chunk-7S7LQQPX.js +127 -0
  104. package/dist/chunk-7S7LQQPX.js.map +7 -0
  105. package/dist/chunk-7TTNY5FK.js +21 -0
  106. package/dist/chunk-7TTNY5FK.js.map +7 -0
  107. package/dist/chunk-7W73QCTR.js +244 -0
  108. package/dist/chunk-7W73QCTR.js.map +7 -0
  109. package/dist/chunk-7XXLU33Y.js +76 -0
  110. package/dist/chunk-7XXLU33Y.js.map +7 -0
  111. package/dist/chunk-AAO7BQEV.js +258 -0
  112. package/dist/chunk-AAO7BQEV.js.map +7 -0
  113. package/dist/chunk-AH4MLRYT.js +91 -0
  114. package/dist/chunk-AH4MLRYT.js.map +7 -0
  115. package/dist/chunk-AHKR32FH.js +7 -0
  116. package/dist/chunk-AHKR32FH.js.map +7 -0
  117. package/dist/chunk-ALKRFDAW.js +94 -0
  118. package/dist/chunk-ALKRFDAW.js.map +7 -0
  119. package/dist/chunk-AQQGAE7N.js +12 -0
  120. package/dist/chunk-AQQGAE7N.js.map +7 -0
  121. package/dist/chunk-AWW3YUGJ.js +193 -0
  122. package/dist/chunk-AWW3YUGJ.js.map +7 -0
  123. package/dist/chunk-AX7VEEWJ.js +158 -0
  124. package/dist/chunk-AX7VEEWJ.js.map +7 -0
  125. package/dist/chunk-BAX7Q6GR.js +55 -0
  126. package/dist/chunk-BAX7Q6GR.js.map +7 -0
  127. package/dist/chunk-BBM6BR3Z.js +28 -0
  128. package/dist/chunk-BBM6BR3Z.js.map +7 -0
  129. package/dist/chunk-BHXZMHSX.js +109 -0
  130. package/dist/chunk-BHXZMHSX.js.map +7 -0
  131. package/dist/chunk-BIUXDLVY.js +62 -0
  132. package/dist/chunk-BIUXDLVY.js.map +7 -0
  133. package/dist/chunk-BMFZL2P4.js +97 -0
  134. package/dist/chunk-BMFZL2P4.js.map +7 -0
  135. package/dist/chunk-BQXEXK4H.js +114 -0
  136. package/dist/chunk-BQXEXK4H.js.map +7 -0
  137. package/dist/chunk-BU2CTWBG.js +30 -0
  138. package/dist/chunk-BU2CTWBG.js.map +7 -0
  139. package/dist/chunk-BVKSCLF7.js +195 -0
  140. package/dist/chunk-BVKSCLF7.js.map +7 -0
  141. package/dist/chunk-BWA3D22L.js +88 -0
  142. package/dist/chunk-BWA3D22L.js.map +7 -0
  143. package/dist/chunk-CE24RSPL.js +506 -0
  144. package/dist/chunk-CE24RSPL.js.map +7 -0
  145. package/dist/chunk-CETZGSCP.js +71 -0
  146. package/dist/chunk-CETZGSCP.js.map +7 -0
  147. package/dist/chunk-CGBWMONK.js +412 -0
  148. package/dist/chunk-CGBWMONK.js.map +7 -0
  149. package/dist/chunk-CPNIXMGX.js +127 -0
  150. package/dist/chunk-CPNIXMGX.js.map +7 -0
  151. package/dist/chunk-CSJO73LD.js +84 -0
  152. package/dist/chunk-CSJO73LD.js.map +7 -0
  153. package/dist/chunk-CTKBDSL6.js +81 -0
  154. package/dist/chunk-CTKBDSL6.js.map +7 -0
  155. package/dist/chunk-CY6WHUCW.js +54 -0
  156. package/dist/chunk-CY6WHUCW.js.map +7 -0
  157. package/dist/chunk-D7Q6Z74D.js +123 -0
  158. package/dist/chunk-D7Q6Z74D.js.map +7 -0
  159. package/dist/chunk-DZIM4OWK.js +17 -0
  160. package/dist/chunk-DZIM4OWK.js.map +7 -0
  161. package/dist/chunk-E3GC4V5V.js +30 -0
  162. package/dist/chunk-E3GC4V5V.js.map +7 -0
  163. package/dist/chunk-E5HPDHCW.js +34 -0
  164. package/dist/chunk-E5HPDHCW.js.map +7 -0
  165. package/dist/chunk-E75BJJZ2.js +635 -0
  166. package/dist/chunk-E75BJJZ2.js.map +7 -0
  167. package/dist/chunk-EE4DHUUZ.js +472 -0
  168. package/dist/chunk-EE4DHUUZ.js.map +7 -0
  169. package/dist/chunk-EHELTAAD.js +198 -0
  170. package/dist/chunk-EHELTAAD.js.map +7 -0
  171. package/dist/chunk-EKXPSI7Z.js +135 -0
  172. package/dist/chunk-EKXPSI7Z.js.map +7 -0
  173. package/dist/chunk-ERCH75SH.js +292 -0
  174. package/dist/chunk-ERCH75SH.js.map +7 -0
  175. package/dist/chunk-EVFWZGFL.js +235 -0
  176. package/dist/chunk-EVFWZGFL.js.map +7 -0
  177. package/dist/chunk-EVPBRKMZ.js +45 -0
  178. package/dist/chunk-EVPBRKMZ.js.map +7 -0
  179. package/dist/chunk-F6AFJHWV.js +45 -0
  180. package/dist/chunk-F6AFJHWV.js.map +7 -0
  181. package/dist/chunk-FG4NVFKM.js +455 -0
  182. package/dist/chunk-FG4NVFKM.js.map +7 -0
  183. package/dist/chunk-FHNEN6IR.js +14 -0
  184. package/dist/chunk-FHNEN6IR.js.map +7 -0
  185. package/dist/chunk-FQ4R7IOX.js +32 -0
  186. package/dist/chunk-FQ4R7IOX.js.map +7 -0
  187. package/dist/chunk-FQPYAPJJ.js +124 -0
  188. package/dist/chunk-FQPYAPJJ.js.map +7 -0
  189. package/dist/chunk-FQTLJO4W.js +335 -0
  190. package/dist/chunk-FQTLJO4W.js.map +7 -0
  191. package/dist/chunk-FVLJSB2W.js +124 -0
  192. package/dist/chunk-FVLJSB2W.js.map +7 -0
  193. package/dist/chunk-FYRKBNTI.js +18 -0
  194. package/dist/chunk-FYRKBNTI.js.map +7 -0
  195. package/dist/chunk-GD6L3SLC.js +30 -0
  196. package/dist/chunk-GD6L3SLC.js.map +7 -0
  197. package/dist/chunk-GI2ZANRY.js +24 -0
  198. package/dist/chunk-GI2ZANRY.js.map +7 -0
  199. package/dist/chunk-GK3XVKXT.js +737 -0
  200. package/dist/chunk-GK3XVKXT.js.map +7 -0
  201. package/dist/chunk-GKOWCDQV.js +699 -0
  202. package/dist/chunk-GKOWCDQV.js.map +7 -0
  203. package/dist/chunk-GLLRCKKE.js +26 -0
  204. package/dist/chunk-GLLRCKKE.js.map +7 -0
  205. package/dist/chunk-GNYG6I36.js +175 -0
  206. package/dist/chunk-GNYG6I36.js.map +7 -0
  207. package/dist/chunk-GVYGUH2V.js +7 -0
  208. package/dist/chunk-GVYGUH2V.js.map +7 -0
  209. package/dist/chunk-GZAGAWSU.js +28 -0
  210. package/dist/chunk-GZAGAWSU.js.map +7 -0
  211. package/dist/chunk-H23E72SB.js +163 -0
  212. package/dist/chunk-H23E72SB.js.map +7 -0
  213. package/dist/chunk-H6YVV7GE.js +22 -0
  214. package/dist/chunk-H6YVV7GE.js.map +7 -0
  215. package/dist/chunk-HDPICD3P.js +4890 -0
  216. package/dist/chunk-HDPICD3P.js.map +7 -0
  217. package/dist/chunk-HP5HMWOM.js +123 -0
  218. package/dist/chunk-HP5HMWOM.js.map +7 -0
  219. package/dist/chunk-HQSHS6IB.js +88 -0
  220. package/dist/chunk-HQSHS6IB.js.map +7 -0
  221. package/dist/chunk-HTV3R73W.js +51 -0
  222. package/dist/chunk-HTV3R73W.js.map +7 -0
  223. package/dist/chunk-IJCMYMZB.js +239 -0
  224. package/dist/chunk-IJCMYMZB.js.map +7 -0
  225. package/dist/chunk-INNENDEE.js +472 -0
  226. package/dist/chunk-INNENDEE.js.map +7 -0
  227. package/dist/chunk-IOTLSMEQ.js +177 -0
  228. package/dist/chunk-IOTLSMEQ.js.map +7 -0
  229. package/dist/chunk-IQYYEHSM.js +300 -0
  230. package/dist/chunk-IQYYEHSM.js.map +7 -0
  231. package/dist/chunk-IRA5NJ4Q.js +21 -0
  232. package/dist/chunk-IRA5NJ4Q.js.map +7 -0
  233. package/dist/chunk-IU7EXXK7.js +1662 -0
  234. package/dist/chunk-IU7EXXK7.js.map +7 -0
  235. package/dist/chunk-IUXAKDAY.js +102 -0
  236. package/dist/chunk-IUXAKDAY.js.map +7 -0
  237. package/dist/chunk-JMYIFYY5.js +233 -0
  238. package/dist/chunk-JMYIFYY5.js.map +7 -0
  239. package/dist/chunk-JSZBX2TA.js +5853 -0
  240. package/dist/chunk-JSZBX2TA.js.map +7 -0
  241. package/dist/chunk-KHFWQ334.js +138 -0
  242. package/dist/chunk-KHFWQ334.js.map +7 -0
  243. package/dist/chunk-KJW6JLM6.js +95 -0
  244. package/dist/chunk-KJW6JLM6.js.map +7 -0
  245. package/dist/chunk-KSEANSJE.js +40 -0
  246. package/dist/chunk-KSEANSJE.js.map +7 -0
  247. package/dist/chunk-KVU54E6W.js +63 -0
  248. package/dist/chunk-KVU54E6W.js.map +7 -0
  249. package/dist/chunk-L5OUVMHK.js +174 -0
  250. package/dist/chunk-L5OUVMHK.js.map +7 -0
  251. package/dist/chunk-LIVQ7GIO.js +86 -0
  252. package/dist/chunk-LIVQ7GIO.js.map +7 -0
  253. package/dist/chunk-LO4F6E3N.js +163 -0
  254. package/dist/chunk-LO4F6E3N.js.map +7 -0
  255. package/dist/chunk-LSVKDUNM.js +151 -0
  256. package/dist/chunk-LSVKDUNM.js.map +7 -0
  257. package/dist/chunk-LVMK2GPM.js +18 -0
  258. package/dist/chunk-LVMK2GPM.js.map +7 -0
  259. package/dist/chunk-LXVPETLK.js +1405 -0
  260. package/dist/chunk-LXVPETLK.js.map +7 -0
  261. package/dist/chunk-LZNW24OB.js +78 -0
  262. package/dist/chunk-LZNW24OB.js.map +7 -0
  263. package/dist/chunk-MAF6PSCJ.js +44 -0
  264. package/dist/chunk-MAF6PSCJ.js.map +7 -0
  265. package/dist/chunk-MBIX6Z7U.js +80 -0
  266. package/dist/chunk-MBIX6Z7U.js.map +7 -0
  267. package/dist/chunk-MDLLXMC3.js +183 -0
  268. package/dist/chunk-MDLLXMC3.js.map +7 -0
  269. package/dist/chunk-MEI5HTWV.js +127 -0
  270. package/dist/chunk-MEI5HTWV.js.map +7 -0
  271. package/dist/chunk-MH74AJ3A.js +82 -0
  272. package/dist/chunk-MH74AJ3A.js.map +7 -0
  273. package/dist/chunk-MIFIM4PI.js +163 -0
  274. package/dist/chunk-MIFIM4PI.js.map +7 -0
  275. package/dist/chunk-MISZB5QJ.js +22 -0
  276. package/dist/chunk-MISZB5QJ.js.map +7 -0
  277. package/dist/chunk-MJ27XQYG.js +125 -0
  278. package/dist/chunk-MJ27XQYG.js.map +7 -0
  279. package/dist/chunk-MLQY5SKR.js +52 -0
  280. package/dist/chunk-MLQY5SKR.js.map +7 -0
  281. package/dist/chunk-MTMHGC3G.js +39 -0
  282. package/dist/chunk-MTMHGC3G.js.map +7 -0
  283. package/dist/chunk-MWBAW3YV.js +244 -0
  284. package/dist/chunk-MWBAW3YV.js.map +7 -0
  285. package/dist/chunk-MZGGB2YT.js +50 -0
  286. package/dist/chunk-MZGGB2YT.js.map +7 -0
  287. package/dist/chunk-N5SNGZJV.js +217 -0
  288. package/dist/chunk-N5SNGZJV.js.map +7 -0
  289. package/dist/chunk-NGCTBYQ3.js +181 -0
  290. package/dist/chunk-NGCTBYQ3.js.map +7 -0
  291. package/dist/chunk-NMUX7SGU.js +676 -0
  292. package/dist/chunk-NMUX7SGU.js.map +7 -0
  293. package/dist/chunk-NO7GMLNU.js +292 -0
  294. package/dist/chunk-NO7GMLNU.js.map +7 -0
  295. package/dist/chunk-NTOGVX2Y.js +92 -0
  296. package/dist/chunk-NTOGVX2Y.js.map +7 -0
  297. package/dist/chunk-O5IVKDX7.js +30 -0
  298. package/dist/chunk-O5IVKDX7.js.map +7 -0
  299. package/dist/chunk-OFWMLQMU.js +7287 -0
  300. package/dist/chunk-OFWMLQMU.js.map +7 -0
  301. package/dist/chunk-OJ3ZUKBI.js +73 -0
  302. package/dist/chunk-OJ3ZUKBI.js.map +7 -0
  303. package/dist/chunk-OJTHE4B7.js +50 -0
  304. package/dist/chunk-OJTHE4B7.js.map +7 -0
  305. package/dist/chunk-OOYPYBTA.js +446 -0
  306. package/dist/chunk-OOYPYBTA.js.map +7 -0
  307. package/dist/chunk-OQP4W4AR.js +105 -0
  308. package/dist/chunk-OQP4W4AR.js.map +7 -0
  309. package/dist/chunk-OVTT2EKA.js +516 -0
  310. package/dist/chunk-OVTT2EKA.js.map +7 -0
  311. package/dist/chunk-P5N63LBS.js +94 -0
  312. package/dist/chunk-P5N63LBS.js.map +7 -0
  313. package/dist/chunk-PARITZ7F.js +28 -0
  314. package/dist/chunk-PARITZ7F.js.map +7 -0
  315. package/dist/chunk-PBQK4KY4.js +195 -0
  316. package/dist/chunk-PBQK4KY4.js.map +7 -0
  317. package/dist/chunk-PSL2AHIA.js +27 -0
  318. package/dist/chunk-PSL2AHIA.js.map +7 -0
  319. package/dist/chunk-Q5QT7JBM.js +92 -0
  320. package/dist/chunk-Q5QT7JBM.js.map +7 -0
  321. package/dist/chunk-Q7WA5DCR.js +62 -0
  322. package/dist/chunk-Q7WA5DCR.js.map +7 -0
  323. package/dist/chunk-QATEENP2.js +7 -0
  324. package/dist/chunk-QATEENP2.js.map +7 -0
  325. package/dist/chunk-QDT24CIA.js +485 -0
  326. package/dist/chunk-QDT24CIA.js.map +7 -0
  327. package/dist/chunk-QI3NB7D5.js +455 -0
  328. package/dist/chunk-QI3NB7D5.js.map +7 -0
  329. package/dist/chunk-QIDAVXSX.js +106 -0
  330. package/dist/chunk-QIDAVXSX.js.map +7 -0
  331. package/dist/chunk-QKIGQVP2.js +104 -0
  332. package/dist/chunk-QKIGQVP2.js.map +7 -0
  333. package/dist/chunk-QNJENPK2.js +81 -0
  334. package/dist/chunk-QNJENPK2.js.map +7 -0
  335. package/dist/chunk-REVXXWAS.js +31 -0
  336. package/dist/chunk-REVXXWAS.js.map +7 -0
  337. package/dist/chunk-RFH4HRZP.js +94 -0
  338. package/dist/chunk-RFH4HRZP.js.map +7 -0
  339. package/dist/chunk-RNGAGYCL.js +49 -0
  340. package/dist/chunk-RNGAGYCL.js.map +7 -0
  341. package/dist/chunk-RPCVN3JA.js +261 -0
  342. package/dist/chunk-RPCVN3JA.js.map +7 -0
  343. package/dist/chunk-RQQE5DDT.js +193 -0
  344. package/dist/chunk-RQQE5DDT.js.map +7 -0
  345. package/dist/chunk-RVOD3ESA.js +38 -0
  346. package/dist/chunk-RVOD3ESA.js.map +7 -0
  347. package/dist/chunk-SAOUP24A.js +70 -0
  348. package/dist/chunk-SAOUP24A.js.map +7 -0
  349. package/dist/chunk-SFZL2TCV.js +55 -0
  350. package/dist/chunk-SFZL2TCV.js.map +7 -0
  351. package/dist/chunk-SJPFUXBV.js +45 -0
  352. package/dist/chunk-SJPFUXBV.js.map +7 -0
  353. package/dist/chunk-SLIUQWAR.js +58 -0
  354. package/dist/chunk-SLIUQWAR.js.map +7 -0
  355. package/dist/chunk-SSEX66OL.js +39 -0
  356. package/dist/chunk-SSEX66OL.js.map +7 -0
  357. package/dist/chunk-SX2LOHOX.js +251 -0
  358. package/dist/chunk-SX2LOHOX.js.map +7 -0
  359. package/dist/chunk-T72EMFTX.js +74 -0
  360. package/dist/chunk-T72EMFTX.js.map +7 -0
  361. package/dist/chunk-TA2QJPPG.js +169 -0
  362. package/dist/chunk-TA2QJPPG.js.map +7 -0
  363. package/dist/chunk-TFEETDNY.js +78 -0
  364. package/dist/chunk-TFEETDNY.js.map +7 -0
  365. package/dist/chunk-THM2QV25.js +108 -0
  366. package/dist/chunk-THM2QV25.js.map +7 -0
  367. package/dist/chunk-TRWT2N6Z.js +15 -0
  368. package/dist/chunk-TRWT2N6Z.js.map +7 -0
  369. package/dist/chunk-TTXEM54Y.js +76 -0
  370. package/dist/chunk-TTXEM54Y.js.map +7 -0
  371. package/dist/chunk-U4LVIY5F.js +1405 -0
  372. package/dist/chunk-U4LVIY5F.js.map +7 -0
  373. package/dist/chunk-U767LCSG.js +78 -0
  374. package/dist/chunk-U767LCSG.js.map +7 -0
  375. package/dist/chunk-U7GKLHU6.js +120 -0
  376. package/dist/chunk-U7GKLHU6.js.map +7 -0
  377. package/dist/chunk-UAB5P5QO.js +60 -0
  378. package/dist/chunk-UAB5P5QO.js.map +7 -0
  379. package/dist/chunk-UEHPJQBL.js +38 -0
  380. package/dist/chunk-UEHPJQBL.js.map +7 -0
  381. package/dist/chunk-UIBV6IGR.js +31 -0
  382. package/dist/chunk-UIBV6IGR.js.map +7 -0
  383. package/dist/chunk-UIYFRUET.js +16352 -0
  384. package/dist/chunk-UIYFRUET.js.map +7 -0
  385. package/dist/chunk-UJS3TIVS.js +52 -0
  386. package/dist/chunk-UJS3TIVS.js.map +7 -0
  387. package/dist/chunk-UU5PSBSI.js +176 -0
  388. package/dist/chunk-UU5PSBSI.js.map +7 -0
  389. package/dist/chunk-UV63XYFU.js +173 -0
  390. package/dist/chunk-UV63XYFU.js.map +7 -0
  391. package/dist/chunk-UWPHOAOC.js +29 -0
  392. package/dist/chunk-UWPHOAOC.js.map +7 -0
  393. package/dist/chunk-UXDDOSJC.js +52 -0
  394. package/dist/chunk-UXDDOSJC.js.map +7 -0
  395. package/dist/chunk-V3VAOMCO.js +465 -0
  396. package/dist/chunk-V3VAOMCO.js.map +7 -0
  397. package/dist/chunk-VA7ENH2S.js +38 -0
  398. package/dist/chunk-VA7ENH2S.js.map +7 -0
  399. package/dist/chunk-VFPDFLVE.js +516 -0
  400. package/dist/chunk-VFPDFLVE.js.map +7 -0
  401. package/dist/chunk-VHG4FNIJ.js +93 -0
  402. package/dist/chunk-VHG4FNIJ.js.map +7 -0
  403. package/dist/chunk-VKOO6MIZ.js +51 -0
  404. package/dist/chunk-VKOO6MIZ.js.map +7 -0
  405. package/dist/chunk-VKXKRZG7.js +62 -0
  406. package/dist/chunk-VKXKRZG7.js.map +7 -0
  407. package/dist/chunk-VUOLPEUZ.js +7 -0
  408. package/dist/chunk-VUOLPEUZ.js.map +7 -0
  409. package/dist/chunk-W6SOBS7M.js +138 -0
  410. package/dist/chunk-W6SOBS7M.js.map +7 -0
  411. package/dist/chunk-WDOKKRTE.js +7 -0
  412. package/dist/chunk-WDOKKRTE.js.map +7 -0
  413. package/dist/chunk-WGXXKFN5.js +7 -0
  414. package/dist/chunk-WGXXKFN5.js.map +7 -0
  415. package/dist/chunk-WHPUUP3J.js +25 -0
  416. package/dist/chunk-WHPUUP3J.js.map +7 -0
  417. package/dist/chunk-XF7LD6VV.js +122 -0
  418. package/dist/chunk-XF7LD6VV.js.map +7 -0
  419. package/dist/chunk-XFTXM3RE.js +64 -0
  420. package/dist/chunk-XFTXM3RE.js.map +7 -0
  421. package/dist/chunk-XJABPO2T.js +235 -0
  422. package/dist/chunk-XJABPO2T.js.map +7 -0
  423. package/dist/chunk-XK6VF3H7.js +3586 -0
  424. package/dist/chunk-XK6VF3H7.js.map +7 -0
  425. package/dist/chunk-XQYIIPOJ.js +266 -0
  426. package/dist/chunk-XQYIIPOJ.js.map +7 -0
  427. package/dist/chunk-XZSAN55E.js +58 -0
  428. package/dist/chunk-XZSAN55E.js.map +7 -0
  429. package/dist/chunk-Y3KJR4OG.js +64 -0
  430. package/dist/chunk-Y3KJR4OG.js.map +7 -0
  431. package/dist/chunk-Y4JKH7FF.js +45 -0
  432. package/dist/chunk-Y4JKH7FF.js.map +7 -0
  433. package/dist/chunk-Y6CJN4ID.js +31 -0
  434. package/dist/chunk-Y6CJN4ID.js.map +7 -0
  435. package/dist/chunk-YABGJU5M.js +271 -0
  436. package/dist/chunk-YABGJU5M.js.map +7 -0
  437. package/dist/chunk-YEJH7ZC2.js +34 -0
  438. package/dist/chunk-YEJH7ZC2.js.map +7 -0
  439. package/dist/chunk-YFTE4H54.js +44117 -0
  440. package/dist/chunk-YFTE4H54.js.map +7 -0
  441. package/dist/chunk-YNJYMD43.js +392 -0
  442. package/dist/chunk-YNJYMD43.js.map +7 -0
  443. package/dist/chunk-YNYEQGVN.js +251 -0
  444. package/dist/chunk-YNYEQGVN.js.map +7 -0
  445. package/dist/chunk-YUPBD27Z.js +70 -0
  446. package/dist/chunk-YUPBD27Z.js.map +7 -0
  447. package/dist/chunk-YXJ52FD5.js +271 -0
  448. package/dist/chunk-YXJ52FD5.js.map +7 -0
  449. package/dist/chunk-YZGORRQN.js +3101 -0
  450. package/dist/chunk-YZGORRQN.js.map +7 -0
  451. package/dist/chunk-Z6IVJ6ZW.js +30 -0
  452. package/dist/chunk-Z6IVJ6ZW.js.map +7 -0
  453. package/dist/chunk-ZFC44XJJ.js +86 -0
  454. package/dist/chunk-ZFC44XJJ.js.map +7 -0
  455. package/dist/chunk-ZJDJC5TP.js +82 -0
  456. package/dist/chunk-ZJDJC5TP.js.map +7 -0
  457. package/dist/chunk-ZJGZNPDK.js +171 -0
  458. package/dist/chunk-ZJGZNPDK.js.map +7 -0
  459. package/dist/chunk-ZJHBJWZX.js +699 -0
  460. package/dist/chunk-ZJHBJWZX.js.map +7 -0
  461. package/dist/chunk-ZNOTD65D.js +95 -0
  462. package/dist/chunk-ZNOTD65D.js.map +7 -0
  463. package/dist/chunk-ZQ2QIFXW.js +122 -0
  464. package/dist/chunk-ZQ2QIFXW.js.map +7 -0
  465. package/dist/chunk-ZRMXPQGY.js +241 -0
  466. package/dist/chunk-ZRMXPQGY.js.map +7 -0
  467. package/dist/chunk-ZVEE5IDC.js +3101 -0
  468. package/dist/chunk-ZVEE5IDC.js.map +7 -0
  469. package/dist/cli-metadata.js +12 -0
  470. package/dist/cli-metadata.js.map +7 -0
  471. package/dist/contract-api.js +104 -0
  472. package/dist/contract-api.js.map +7 -0
  473. package/dist/dist-F3K7S5SS.js +549 -0
  474. package/dist/dist-F3K7S5SS.js.map +7 -0
  475. package/dist/helper-api.js +51 -0
  476. package/dist/helper-api.js.map +7 -0
  477. package/dist/index.js +71 -0
  478. package/dist/index.js.map +7 -0
  479. package/dist/magic-string.es-V5NOGTUV.js +1315 -0
  480. package/dist/magic-string.es-V5NOGTUV.js.map +7 -0
  481. package/dist/openclaw.plugin.json +23 -0
  482. package/dist/package.json +59 -0
  483. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js +20 -0
  484. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js.map +7 -0
  485. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js +20 -0
  486. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js.map +7 -0
  487. package/dist/runtime-api.js +104 -0
  488. package/dist/runtime-api.js.map +7 -0
  489. package/dist/rust-crypto-H35BXWUU.js +5323 -0
  490. package/dist/rust-crypto-H35BXWUU.js.map +7 -0
  491. package/dist/secret-contract-api.js +18 -0
  492. package/dist/secret-contract-api.js.map +7 -0
  493. package/dist/setup-entry.js +23 -0
  494. package/dist/setup-entry.js.map +7 -0
  495. package/dist/src/account-selection.js +19 -0
  496. package/dist/src/account-selection.js.map +7 -0
  497. package/dist/src/actions.js +24 -0
  498. package/dist/src/actions.js.map +7 -0
  499. package/dist/src/approval-auth.js +27 -0
  500. package/dist/src/approval-auth.js.map +7 -0
  501. package/dist/src/approval-handler.runtime.js +378 -0
  502. package/dist/src/approval-handler.runtime.js.map +7 -0
  503. package/dist/src/approval-ids.js +9 -0
  504. package/dist/src/approval-ids.js.map +7 -0
  505. package/dist/src/approval-native.js +28 -0
  506. package/dist/src/approval-native.js.map +7 -0
  507. package/dist/src/approval-reactions.js +20 -0
  508. package/dist/src/approval-reactions.js.map +7 -0
  509. package/dist/src/auth-precedence.js +8 -0
  510. package/dist/src/auth-precedence.js.map +7 -0
  511. package/dist/src/channel-account-paths.js +11 -0
  512. package/dist/src/channel-account-paths.js.map +7 -0
  513. package/dist/src/channel.js +74 -0
  514. package/dist/src/channel.js.map +7 -0
  515. package/dist/src/channel.runtime.js +82 -0
  516. package/dist/src/channel.runtime.js.map +7 -0
  517. package/dist/src/cli-metadata.js +8 -0
  518. package/dist/src/cli-metadata.js.map +7 -0
  519. package/dist/src/cli.js +936 -0
  520. package/dist/src/cli.js.map +7 -0
  521. package/dist/src/config-adapter.js +26 -0
  522. package/dist/src/config-adapter.js.map +7 -0
  523. package/dist/src/config-schema.js +8 -0
  524. package/dist/src/config-schema.js.map +7 -0
  525. package/dist/src/directory-live.js +35 -0
  526. package/dist/src/directory-live.js.map +7 -0
  527. package/dist/src/doctor-contract.js +11 -0
  528. package/dist/src/doctor-contract.js.map +7 -0
  529. package/dist/src/doctor.js +42 -0
  530. package/dist/src/doctor.js.map +7 -0
  531. package/dist/src/env-vars.js +12 -0
  532. package/dist/src/env-vars.js.map +7 -0
  533. package/dist/src/exec-approval-resolver.js +10 -0
  534. package/dist/src/exec-approval-resolver.js.map +7 -0
  535. package/dist/src/exec-approvals.js +51 -0
  536. package/dist/src/exec-approvals.js.map +7 -0
  537. package/dist/src/group-mentions.js +28 -0
  538. package/dist/src/group-mentions.js.map +7 -0
  539. package/dist/src/legacy-crypto-inspector-availability.js +8 -0
  540. package/dist/src/legacy-crypto-inspector-availability.js.map +7 -0
  541. package/dist/src/legacy-crypto.js +26 -0
  542. package/dist/src/legacy-crypto.js.map +7 -0
  543. package/dist/src/legacy-state.js +24 -0
  544. package/dist/src/legacy-state.js.map +7 -0
  545. package/dist/src/matrix/account-config.js +16 -0
  546. package/dist/src/matrix/account-config.js.map +7 -0
  547. package/dist/src/matrix/accounts.js +31 -0
  548. package/dist/src/matrix/accounts.js.map +7 -0
  549. package/dist/src/matrix/actions/client.js +40 -0
  550. package/dist/src/matrix/actions/client.js.map +7 -0
  551. package/dist/src/matrix/actions/devices.js +42 -0
  552. package/dist/src/matrix/actions/devices.js.map +7 -0
  553. package/dist/src/matrix/actions/limits.js +8 -0
  554. package/dist/src/matrix/actions/limits.js.map +7 -0
  555. package/dist/src/matrix/actions/messages.js +49 -0
  556. package/dist/src/matrix/actions/messages.js.map +7 -0
  557. package/dist/src/matrix/actions/pins.js +46 -0
  558. package/dist/src/matrix/actions/pins.js.map +7 -0
  559. package/dist/src/matrix/actions/polls.js +37 -0
  560. package/dist/src/matrix/actions/polls.js.map +7 -0
  561. package/dist/src/matrix/actions/profile.js +38 -0
  562. package/dist/src/matrix/actions/profile.js.map +7 -0
  563. package/dist/src/matrix/actions/reactions.js +40 -0
  564. package/dist/src/matrix/actions/reactions.js.map +7 -0
  565. package/dist/src/matrix/actions/room.js +40 -0
  566. package/dist/src/matrix/actions/room.js.map +7 -0
  567. package/dist/src/matrix/actions/summary.js +19 -0
  568. package/dist/src/matrix/actions/summary.js.map +7 -0
  569. package/dist/src/matrix/actions/types.js +13 -0
  570. package/dist/src/matrix/actions/types.js.map +7 -0
  571. package/dist/src/matrix/actions/verification.js +77 -0
  572. package/dist/src/matrix/actions/verification.js.map +7 -0
  573. package/dist/src/matrix/actions.js +126 -0
  574. package/dist/src/matrix/actions.js.map +7 -0
  575. package/dist/src/matrix/active-client.js +10 -0
  576. package/dist/src/matrix/active-client.js.map +7 -0
  577. package/dist/src/matrix/async-lock.js +8 -0
  578. package/dist/src/matrix/async-lock.js.map +7 -0
  579. package/dist/src/matrix/backup-health.js +10 -0
  580. package/dist/src/matrix/backup-health.js.map +7 -0
  581. package/dist/src/matrix/client/config-runtime-api.js +24 -0
  582. package/dist/src/matrix/client/config-runtime-api.js.map +7 -0
  583. package/dist/src/matrix/client/config-secret-input.runtime.js +11 -0
  584. package/dist/src/matrix/client/config-secret-input.runtime.js.map +7 -0
  585. package/dist/src/matrix/client/config.js +42 -0
  586. package/dist/src/matrix/client/config.js.map +7 -0
  587. package/dist/src/matrix/client/create-client.js +20 -0
  588. package/dist/src/matrix/client/create-client.js.map +7 -0
  589. package/dist/src/matrix/client/env-auth.js +26 -0
  590. package/dist/src/matrix/client/env-auth.js.map +7 -0
  591. package/dist/src/matrix/client/file-sync-store.js +23 -0
  592. package/dist/src/matrix/client/file-sync-store.js.map +7 -0
  593. package/dist/src/matrix/client/logging.js +17 -0
  594. package/dist/src/matrix/client/logging.js.map +7 -0
  595. package/dist/src/matrix/client/migration-snapshot.runtime.js +13 -0
  596. package/dist/src/matrix/client/migration-snapshot.runtime.js.map +7 -0
  597. package/dist/src/matrix/client/private-network-host.js +8 -0
  598. package/dist/src/matrix/client/private-network-host.js.map +7 -0
  599. package/dist/src/matrix/client/runtime.js +8 -0
  600. package/dist/src/matrix/client/runtime.js.map +7 -0
  601. package/dist/src/matrix/client/shared.js +34 -0
  602. package/dist/src/matrix/client/shared.js.map +7 -0
  603. package/dist/src/matrix/client/storage.js +26 -0
  604. package/dist/src/matrix/client/storage.js.map +7 -0
  605. package/dist/src/matrix/client/types.js +7 -0
  606. package/dist/src/matrix/client/types.js.map +7 -0
  607. package/dist/src/matrix/client-bootstrap.js +15 -0
  608. package/dist/src/matrix/client-bootstrap.js.map +7 -0
  609. package/dist/src/matrix/client-resolver.test-helpers.js +122 -0
  610. package/dist/src/matrix/client-resolver.test-helpers.js.map +7 -0
  611. package/dist/src/matrix/client.js +63 -0
  612. package/dist/src/matrix/client.js.map +7 -0
  613. package/dist/src/matrix/config-paths.js +12 -0
  614. package/dist/src/matrix/config-paths.js.map +7 -0
  615. package/dist/src/matrix/config-update.js +17 -0
  616. package/dist/src/matrix/config-update.js.map +7 -0
  617. package/dist/src/matrix/credentials-read.js +22 -0
  618. package/dist/src/matrix/credentials-read.js.map +7 -0
  619. package/dist/src/matrix/credentials-write.runtime.js +24 -0
  620. package/dist/src/matrix/credentials-write.runtime.js.map +7 -0
  621. package/dist/src/matrix/credentials.js +90 -0
  622. package/dist/src/matrix/credentials.js.map +7 -0
  623. package/dist/src/matrix/deps.js +12 -0
  624. package/dist/src/matrix/deps.js.map +7 -0
  625. package/dist/src/matrix/device-health.js +10 -0
  626. package/dist/src/matrix/device-health.js.map +7 -0
  627. package/dist/src/matrix/direct-management.js +18 -0
  628. package/dist/src/matrix/direct-management.js.map +7 -0
  629. package/dist/src/matrix/direct-room.js +18 -0
  630. package/dist/src/matrix/direct-room.js.map +7 -0
  631. package/dist/src/matrix/draft-stream.js +33 -0
  632. package/dist/src/matrix/draft-stream.js.map +7 -0
  633. package/dist/src/matrix/encryption-guidance.js +17 -0
  634. package/dist/src/matrix/encryption-guidance.js.map +7 -0
  635. package/dist/src/matrix/errors.js +12 -0
  636. package/dist/src/matrix/errors.js.map +7 -0
  637. package/dist/src/matrix/format.js +13 -0
  638. package/dist/src/matrix/format.js.map +7 -0
  639. package/dist/src/matrix/legacy-crypto-inspector.js +73 -0
  640. package/dist/src/matrix/legacy-crypto-inspector.js.map +7 -0
  641. package/dist/src/matrix/media-errors.js +12 -0
  642. package/dist/src/matrix/media-errors.js.map +7 -0
  643. package/dist/src/matrix/media-text.js +22 -0
  644. package/dist/src/matrix/media-text.js.map +7 -0
  645. package/dist/src/matrix/monitor/access-state.js +9 -0
  646. package/dist/src/matrix/monitor/access-state.js.map +7 -0
  647. package/dist/src/matrix/monitor/ack-config.js +10 -0
  648. package/dist/src/matrix/monitor/ack-config.js.map +7 -0
  649. package/dist/src/matrix/monitor/allowlist.js +12 -0
  650. package/dist/src/matrix/monitor/allowlist.js.map +7 -0
  651. package/dist/src/matrix/monitor/auto-join.js +9 -0
  652. package/dist/src/matrix/monitor/auto-join.js.map +7 -0
  653. package/dist/src/matrix/monitor/config.js +37 -0
  654. package/dist/src/matrix/monitor/config.js.map +7 -0
  655. package/dist/src/matrix/monitor/context-summary.js +13 -0
  656. package/dist/src/matrix/monitor/context-summary.js.map +7 -0
  657. package/dist/src/matrix/monitor/direct.js +13 -0
  658. package/dist/src/matrix/monitor/direct.js.map +7 -0
  659. package/dist/src/matrix/monitor/events.js +20 -0
  660. package/dist/src/matrix/monitor/events.js.map +7 -0
  661. package/dist/src/matrix/monitor/handler.js +76 -0
  662. package/dist/src/matrix/monitor/handler.js.map +7 -0
  663. package/dist/src/matrix/monitor/handler.test-helpers.js +268 -0
  664. package/dist/src/matrix/monitor/handler.test-helpers.js.map +7 -0
  665. package/dist/src/matrix/monitor/inbound-dedupe.js +17 -0
  666. package/dist/src/matrix/monitor/inbound-dedupe.js.map +7 -0
  667. package/dist/src/matrix/monitor/index.js +502 -0
  668. package/dist/src/matrix/monitor/index.js.map +7 -0
  669. package/dist/src/matrix/monitor/legacy-crypto-restore.js +99 -0
  670. package/dist/src/matrix/monitor/legacy-crypto-restore.js.map +7 -0
  671. package/dist/src/matrix/monitor/location.js +11 -0
  672. package/dist/src/matrix/monitor/location.js.map +7 -0
  673. package/dist/src/matrix/monitor/media.js +10 -0
  674. package/dist/src/matrix/monitor/media.js.map +7 -0
  675. package/dist/src/matrix/monitor/mentions.js +9 -0
  676. package/dist/src/matrix/monitor/mentions.js.map +7 -0
  677. package/dist/src/matrix/monitor/reaction-events.js +38 -0
  678. package/dist/src/matrix/monitor/reaction-events.js.map +7 -0
  679. package/dist/src/matrix/monitor/recent-invite.js +10 -0
  680. package/dist/src/matrix/monitor/recent-invite.js.map +7 -0
  681. package/dist/src/matrix/monitor/replies.js +33 -0
  682. package/dist/src/matrix/monitor/replies.js.map +7 -0
  683. package/dist/src/matrix/monitor/reply-context.js +14 -0
  684. package/dist/src/matrix/monitor/reply-context.js.map +7 -0
  685. package/dist/src/matrix/monitor/room-history.js +10 -0
  686. package/dist/src/matrix/monitor/room-history.js.map +7 -0
  687. package/dist/src/matrix/monitor/room-info.js +9 -0
  688. package/dist/src/matrix/monitor/room-info.js.map +7 -0
  689. package/dist/src/matrix/monitor/rooms.js +9 -0
  690. package/dist/src/matrix/monitor/rooms.js.map +7 -0
  691. package/dist/src/matrix/monitor/route.js +12 -0
  692. package/dist/src/matrix/monitor/route.js.map +7 -0
  693. package/dist/src/matrix/monitor/runtime-api.js +40 -0
  694. package/dist/src/matrix/monitor/runtime-api.js.map +7 -0
  695. package/dist/src/matrix/monitor/startup-verification.js +174 -0
  696. package/dist/src/matrix/monitor/startup-verification.js.map +7 -0
  697. package/dist/src/matrix/monitor/startup.js +9 -0
  698. package/dist/src/matrix/monitor/startup.js.map +7 -0
  699. package/dist/src/matrix/monitor/status.js +10 -0
  700. package/dist/src/matrix/monitor/status.js.map +7 -0
  701. package/dist/src/matrix/monitor/sync-lifecycle.js +9 -0
  702. package/dist/src/matrix/monitor/sync-lifecycle.js.map +7 -0
  703. package/dist/src/matrix/monitor/task-runner.js +8 -0
  704. package/dist/src/matrix/monitor/task-runner.js.map +7 -0
  705. package/dist/src/matrix/monitor/thread-context.js +14 -0
  706. package/dist/src/matrix/monitor/thread-context.js.map +7 -0
  707. package/dist/src/matrix/monitor/threads.js +16 -0
  708. package/dist/src/matrix/monitor/threads.js.map +7 -0
  709. package/dist/src/matrix/monitor/types.js +11 -0
  710. package/dist/src/matrix/monitor/types.js.map +7 -0
  711. package/dist/src/matrix/monitor/verification-events.js +13 -0
  712. package/dist/src/matrix/monitor/verification-events.js.map +7 -0
  713. package/dist/src/matrix/monitor/verification-utils.js +16 -0
  714. package/dist/src/matrix/monitor/verification-utils.js.map +7 -0
  715. package/dist/src/matrix/outbound-media-runtime.js +9 -0
  716. package/dist/src/matrix/outbound-media-runtime.js.map +7 -0
  717. package/dist/src/matrix/poll-summary.js +14 -0
  718. package/dist/src/matrix/poll-summary.js.map +7 -0
  719. package/dist/src/matrix/poll-types.js +55 -0
  720. package/dist/src/matrix/poll-types.js.map +7 -0
  721. package/dist/src/matrix/probe.js +9 -0
  722. package/dist/src/matrix/probe.js.map +7 -0
  723. package/dist/src/matrix/probe.runtime.js +30 -0
  724. package/dist/src/matrix/probe.runtime.js.map +7 -0
  725. package/dist/src/matrix/profile.js +16 -0
  726. package/dist/src/matrix/profile.js.map +7 -0
  727. package/dist/src/matrix/reaction-common.js +26 -0
  728. package/dist/src/matrix/reaction-common.js.map +7 -0
  729. package/dist/src/matrix/sdk/crypto-bootstrap.js +15 -0
  730. package/dist/src/matrix/sdk/crypto-bootstrap.js.map +7 -0
  731. package/dist/src/matrix/sdk/crypto-facade.js +8 -0
  732. package/dist/src/matrix/sdk/crypto-facade.js.map +7 -0
  733. package/dist/src/matrix/sdk/crypto-node.runtime.js +15 -0
  734. package/dist/src/matrix/sdk/crypto-node.runtime.js.map +7 -0
  735. package/dist/src/matrix/sdk/crypto-runtime.js +84 -0
  736. package/dist/src/matrix/sdk/crypto-runtime.js.map +7 -0
  737. package/dist/src/matrix/sdk/decrypt-bridge.js +11 -0
  738. package/dist/src/matrix/sdk/decrypt-bridge.js.map +7 -0
  739. package/dist/src/matrix/sdk/event-helpers.js +12 -0
  740. package/dist/src/matrix/sdk/event-helpers.js.map +7 -0
  741. package/dist/src/matrix/sdk/http-client.js +13 -0
  742. package/dist/src/matrix/sdk/http-client.js.map +7 -0
  743. package/dist/src/matrix/sdk/idb-persistence-lock.js +12 -0
  744. package/dist/src/matrix/sdk/idb-persistence-lock.js.map +7 -0
  745. package/dist/src/matrix/sdk/idb-persistence.js +13 -0
  746. package/dist/src/matrix/sdk/idb-persistence.js.map +7 -0
  747. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js +83 -0
  748. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js.map +7 -0
  749. package/dist/src/matrix/sdk/logger.js +15 -0
  750. package/dist/src/matrix/sdk/logger.js.map +7 -0
  751. package/dist/src/matrix/sdk/read-response-with-limit.js +8 -0
  752. package/dist/src/matrix/sdk/read-response-with-limit.js.map +7 -0
  753. package/dist/src/matrix/sdk/recovery-key-store.js +14 -0
  754. package/dist/src/matrix/sdk/recovery-key-store.js.map +7 -0
  755. package/dist/src/matrix/sdk/transport.js +13 -0
  756. package/dist/src/matrix/sdk/transport.js.map +7 -0
  757. package/dist/src/matrix/sdk/types.js +7 -0
  758. package/dist/src/matrix/sdk/types.js.map +7 -0
  759. package/dist/src/matrix/sdk/verification-manager.js +11 -0
  760. package/dist/src/matrix/sdk/verification-manager.js.map +7 -0
  761. package/dist/src/matrix/sdk/verification-status.js +12 -0
  762. package/dist/src/matrix/sdk/verification-status.js.map +7 -0
  763. package/dist/src/matrix/sdk.js +1375 -0
  764. package/dist/src/matrix/sdk.js.map +7 -0
  765. package/dist/src/matrix/send/client.js +14 -0
  766. package/dist/src/matrix/send/client.js.map +7 -0
  767. package/dist/src/matrix/send/formatting.js +29 -0
  768. package/dist/src/matrix/send/formatting.js.map +7 -0
  769. package/dist/src/matrix/send/media.js +26 -0
  770. package/dist/src/matrix/send/media.js.map +7 -0
  771. package/dist/src/matrix/send/targets.js +15 -0
  772. package/dist/src/matrix/send/targets.js.map +7 -0
  773. package/dist/src/matrix/send/types.js +17 -0
  774. package/dist/src/matrix/send/types.js.map +7 -0
  775. package/dist/src/matrix/send.js +51 -0
  776. package/dist/src/matrix/send.js.map +7 -0
  777. package/dist/src/matrix/session-store-metadata.js +15 -0
  778. package/dist/src/matrix/session-store-metadata.js.map +7 -0
  779. package/dist/src/matrix/startup-abort.js +14 -0
  780. package/dist/src/matrix/startup-abort.js.map +7 -0
  781. package/dist/src/matrix/sync-state.js +12 -0
  782. package/dist/src/matrix/sync-state.js.map +7 -0
  783. package/dist/src/matrix/target-ids.js +20 -0
  784. package/dist/src/matrix/target-ids.js.map +7 -0
  785. package/dist/src/matrix/thread-bindings-shared.js +34 -0
  786. package/dist/src/matrix/thread-bindings-shared.js.map +7 -0
  787. package/dist/src/matrix/thread-bindings.js +49 -0
  788. package/dist/src/matrix/thread-bindings.js.map +7 -0
  789. package/dist/src/matrix-migration.runtime.js +45 -0
  790. package/dist/src/matrix-migration.runtime.js.map +7 -0
  791. package/dist/src/migration-config.js +29 -0
  792. package/dist/src/migration-config.js.map +7 -0
  793. package/dist/src/migration-snapshot-backup.js +12 -0
  794. package/dist/src/migration-snapshot-backup.js.map +7 -0
  795. package/dist/src/migration-snapshot.js +38 -0
  796. package/dist/src/migration-snapshot.js.map +7 -0
  797. package/dist/src/onboarding.js +43 -0
  798. package/dist/src/onboarding.js.map +7 -0
  799. package/dist/src/onboarding.test-harness.js +124 -0
  800. package/dist/src/onboarding.test-harness.js.map +7 -0
  801. package/dist/src/outbound.js +33 -0
  802. package/dist/src/outbound.js.map +7 -0
  803. package/dist/src/plugin-entry.runtime.js +15 -0
  804. package/dist/src/plugin-entry.runtime.js.map +7 -0
  805. package/dist/src/profile-update.js +41 -0
  806. package/dist/src/profile-update.js.map +7 -0
  807. package/dist/src/record-shared.js +8 -0
  808. package/dist/src/record-shared.js.map +7 -0
  809. package/dist/src/resolve-targets.js +34 -0
  810. package/dist/src/resolve-targets.js.map +7 -0
  811. package/dist/src/resolver.js +8 -0
  812. package/dist/src/resolver.js.map +7 -0
  813. package/dist/src/runtime-api.js +120 -0
  814. package/dist/src/runtime-api.js.map +7 -0
  815. package/dist/src/runtime.js +10 -0
  816. package/dist/src/runtime.js.map +7 -0
  817. package/dist/src/secret-contract.js +13 -0
  818. package/dist/src/secret-contract.js.map +7 -0
  819. package/dist/src/session-route.js +25 -0
  820. package/dist/src/session-route.js.map +7 -0
  821. package/dist/src/setup-bootstrap.js +124 -0
  822. package/dist/src/setup-bootstrap.js.map +7 -0
  823. package/dist/src/setup-config.js +28 -0
  824. package/dist/src/setup-config.js.map +7 -0
  825. package/dist/src/setup-contract.js +16 -0
  826. package/dist/src/setup-contract.js.map +7 -0
  827. package/dist/src/setup-core.js +25 -0
  828. package/dist/src/setup-core.js.map +7 -0
  829. package/dist/src/setup-surface.js +45 -0
  830. package/dist/src/setup-surface.js.map +7 -0
  831. package/dist/src/startup-maintenance.js +29 -0
  832. package/dist/src/startup-maintenance.js.map +7 -0
  833. package/dist/src/storage-paths.js +24 -0
  834. package/dist/src/storage-paths.js.map +7 -0
  835. package/dist/src/test-helpers.js +49 -0
  836. package/dist/src/test-helpers.js.map +7 -0
  837. package/dist/src/test-mocks.js +40 -0
  838. package/dist/src/test-mocks.js.map +7 -0
  839. package/dist/src/test-runtime.js +65 -0
  840. package/dist/src/test-runtime.js.map +7 -0
  841. package/dist/src/tool-actions.js +68 -0
  842. package/dist/src/tool-actions.js.map +7 -0
  843. package/dist/src/tool-actions.runtime.js +73 -0
  844. package/dist/src/tool-actions.runtime.js.map +7 -0
  845. package/dist/src/types.js +7 -0
  846. package/dist/src/types.js.map +7 -0
  847. package/dist/test-api.js +82 -0
  848. package/dist/test-api.js.map +7 -0
  849. package/dist/thread-bindings-runtime.js +15 -0
  850. package/dist/thread-bindings-runtime.js.map +7 -0
  851. package/package.json +12 -6
  852. package/CHANGELOG.md +0 -164
  853. package/ENDOFFILE +0 -0
  854. package/EOF +0 -0
  855. package/SPEC-SUPPORT.md +0 -116
  856. package/YAMLEND +0 -0
  857. package/api.ts +0 -18
  858. package/archipelagolab-lobi-1.0.0.tgz +0 -0
  859. package/archipelagolab-lobi-1.0.1.tgz +0 -0
  860. package/auth-presence.ts +0 -56
  861. package/channel-plugin-api.ts +0 -3
  862. package/cli-metadata.ts +0 -11
  863. package/contract-api.ts +0 -17
  864. package/docs/CHECKLIST.md +0 -83
  865. package/docs/FORK_SDK_GUIDE.md +0 -279
  866. package/helper-api.ts +0 -3
  867. package/index.test.ts +0 -61
  868. package/index.ts +0 -65
  869. package/plugin-entry.handlers.runtime.ts +0 -1
  870. package/runtime-api.ts +0 -54
  871. package/runtime-heavy-api.ts +0 -1
  872. package/scripts/migrate-to-lobi.sh +0 -72
  873. package/secret-contract-api.ts +0 -5
  874. package/setup-entry.ts +0 -13
  875. package/src/account-selection.test.ts +0 -124
  876. package/src/account-selection.ts +0 -226
  877. package/src/actions.account-propagation.test.ts +0 -251
  878. package/src/actions.test.ts +0 -251
  879. package/src/actions.ts +0 -336
  880. package/src/approval-auth.test.ts +0 -23
  881. package/src/approval-auth.ts +0 -25
  882. package/src/approval-handler.runtime.test.ts +0 -46
  883. package/src/approval-handler.runtime.ts +0 -400
  884. package/src/approval-ids.ts +0 -6
  885. package/src/approval-native.test.ts +0 -329
  886. package/src/approval-native.ts +0 -336
  887. package/src/approval-reactions.test.ts +0 -107
  888. package/src/approval-reactions.ts +0 -158
  889. package/src/auth-precedence.ts +0 -61
  890. package/src/channel-account-paths.ts +0 -92
  891. package/src/channel.account-paths.test.ts +0 -102
  892. package/src/channel.directory.test.ts +0 -601
  893. package/src/channel.resolve.test.ts +0 -38
  894. package/src/channel.runtime.ts +0 -16
  895. package/src/channel.setup.test.ts +0 -269
  896. package/src/channel.ts +0 -570
  897. package/src/cli-metadata.ts +0 -19
  898. package/src/cli.test.ts +0 -1015
  899. package/src/cli.ts +0 -1198
  900. package/src/config-adapter.ts +0 -41
  901. package/src/config-schema.test.ts +0 -90
  902. package/src/config-schema.ts +0 -114
  903. package/src/directory-live.test.ts +0 -200
  904. package/src/directory-live.ts +0 -238
  905. package/src/doctor-contract.ts +0 -287
  906. package/src/doctor.test.ts +0 -440
  907. package/src/doctor.ts +0 -262
  908. package/src/env-vars.ts +0 -92
  909. package/src/exec-approval-resolver.test.ts +0 -68
  910. package/src/exec-approval-resolver.ts +0 -23
  911. package/src/exec-approvals.test.ts +0 -483
  912. package/src/exec-approvals.ts +0 -290
  913. package/src/group-mentions.ts +0 -41
  914. package/src/legacy-crypto-inspector-availability.test.ts +0 -81
  915. package/src/legacy-crypto-inspector-availability.ts +0 -60
  916. package/src/legacy-crypto.test.ts +0 -234
  917. package/src/legacy-crypto.ts +0 -549
  918. package/src/legacy-state.test.ts +0 -86
  919. package/src/legacy-state.ts +0 -156
  920. package/src/matrix/account-config.ts +0 -150
  921. package/src/matrix/accounts.readiness.test.ts +0 -27
  922. package/src/matrix/accounts.test.ts +0 -757
  923. package/src/matrix/accounts.ts +0 -194
  924. package/src/matrix/actions/client.test.ts +0 -215
  925. package/src/matrix/actions/client.ts +0 -31
  926. package/src/matrix/actions/devices.test.ts +0 -114
  927. package/src/matrix/actions/devices.ts +0 -34
  928. package/src/matrix/actions/limits.test.ts +0 -15
  929. package/src/matrix/actions/limits.ts +0 -6
  930. package/src/matrix/actions/messages.test.ts +0 -289
  931. package/src/matrix/actions/messages.ts +0 -123
  932. package/src/matrix/actions/pins.test.ts +0 -74
  933. package/src/matrix/actions/pins.ts +0 -64
  934. package/src/matrix/actions/polls.test.ts +0 -71
  935. package/src/matrix/actions/polls.ts +0 -109
  936. package/src/matrix/actions/profile.test.ts +0 -109
  937. package/src/matrix/actions/profile.ts +0 -37
  938. package/src/matrix/actions/reactions.test.ts +0 -135
  939. package/src/matrix/actions/reactions.ts +0 -59
  940. package/src/matrix/actions/room.test.ts +0 -79
  941. package/src/matrix/actions/room.ts +0 -71
  942. package/src/matrix/actions/summary.test.ts +0 -87
  943. package/src/matrix/actions/summary.ts +0 -88
  944. package/src/matrix/actions/types.ts +0 -82
  945. package/src/matrix/actions/verification.test.ts +0 -105
  946. package/src/matrix/actions/verification.ts +0 -237
  947. package/src/matrix/actions.ts +0 -37
  948. package/src/matrix/active-client.ts +0 -26
  949. package/src/matrix/async-lock.ts +0 -18
  950. package/src/matrix/backup-health.ts +0 -115
  951. package/src/matrix/client/config-runtime-api.ts +0 -14
  952. package/src/matrix/client/config-secret-input.runtime.ts +0 -1
  953. package/src/matrix/client/config.ts +0 -982
  954. package/src/matrix/client/create-client.test.ts +0 -115
  955. package/src/matrix/client/create-client.ts +0 -101
  956. package/src/matrix/client/env-auth.ts +0 -6
  957. package/src/matrix/client/file-sync-store.test.ts +0 -265
  958. package/src/matrix/client/file-sync-store.ts +0 -289
  959. package/src/matrix/client/logging.ts +0 -123
  960. package/src/matrix/client/migration-snapshot.runtime.ts +0 -1
  961. package/src/matrix/client/private-network-host.ts +0 -56
  962. package/src/matrix/client/runtime.ts +0 -4
  963. package/src/matrix/client/shared.test.ts +0 -344
  964. package/src/matrix/client/shared.ts +0 -306
  965. package/src/matrix/client/storage.test.ts +0 -634
  966. package/src/matrix/client/storage.ts +0 -544
  967. package/src/matrix/client/types.ts +0 -50
  968. package/src/matrix/client-bootstrap.test.ts +0 -84
  969. package/src/matrix/client-bootstrap.ts +0 -164
  970. package/src/matrix/client-resolver.test-helpers.ts +0 -147
  971. package/src/matrix/client.test.ts +0 -1521
  972. package/src/matrix/client.ts +0 -23
  973. package/src/matrix/config-paths.ts +0 -31
  974. package/src/matrix/config-update.test.ts +0 -237
  975. package/src/matrix/config-update.ts +0 -291
  976. package/src/matrix/credentials-read.ts +0 -206
  977. package/src/matrix/credentials-write.runtime.ts +0 -26
  978. package/src/matrix/credentials.test.ts +0 -501
  979. package/src/matrix/credentials.ts +0 -95
  980. package/src/matrix/deps.test.ts +0 -74
  981. package/src/matrix/deps.ts +0 -225
  982. package/src/matrix/device-health.test.ts +0 -45
  983. package/src/matrix/device-health.ts +0 -31
  984. package/src/matrix/direct-management.test.ts +0 -350
  985. package/src/matrix/direct-management.ts +0 -347
  986. package/src/matrix/direct-room.test.ts +0 -61
  987. package/src/matrix/direct-room.ts +0 -128
  988. package/src/matrix/draft-stream.test.ts +0 -406
  989. package/src/matrix/draft-stream.ts +0 -216
  990. package/src/matrix/encryption-guidance.ts +0 -27
  991. package/src/matrix/errors.ts +0 -21
  992. package/src/matrix/format.test.ts +0 -340
  993. package/src/matrix/format.ts +0 -428
  994. package/src/matrix/legacy-crypto-inspector.ts +0 -95
  995. package/src/matrix/media-errors.ts +0 -20
  996. package/src/matrix/media-text.ts +0 -169
  997. package/src/matrix/monitor/access-state.test.ts +0 -45
  998. package/src/matrix/monitor/access-state.ts +0 -77
  999. package/src/matrix/monitor/ack-config.test.ts +0 -57
  1000. package/src/matrix/monitor/ack-config.ts +0 -26
  1001. package/src/matrix/monitor/allowlist.test.ts +0 -45
  1002. package/src/matrix/monitor/allowlist.ts +0 -94
  1003. package/src/matrix/monitor/auto-join.test.ts +0 -203
  1004. package/src/matrix/monitor/auto-join.ts +0 -86
  1005. package/src/matrix/monitor/config.test.ts +0 -197
  1006. package/src/matrix/monitor/config.ts +0 -303
  1007. package/src/matrix/monitor/context-summary.ts +0 -43
  1008. package/src/matrix/monitor/direct.test.ts +0 -529
  1009. package/src/matrix/monitor/direct.ts +0 -270
  1010. package/src/matrix/monitor/events.test.ts +0 -1524
  1011. package/src/matrix/monitor/events.ts +0 -213
  1012. package/src/matrix/monitor/handler.body-for-agent.test.ts +0 -396
  1013. package/src/matrix/monitor/handler.group-history.test.ts +0 -648
  1014. package/src/matrix/monitor/handler.media-failure.test.ts +0 -267
  1015. package/src/matrix/monitor/handler.test-helpers.ts +0 -308
  1016. package/src/matrix/monitor/handler.test.ts +0 -2952
  1017. package/src/matrix/monitor/handler.thread-root-media.test.ts +0 -82
  1018. package/src/matrix/monitor/handler.ts +0 -1679
  1019. package/src/matrix/monitor/inbound-dedupe.test.ts +0 -146
  1020. package/src/matrix/monitor/inbound-dedupe.ts +0 -267
  1021. package/src/matrix/monitor/index.test.ts +0 -920
  1022. package/src/matrix/monitor/index.ts +0 -434
  1023. package/src/matrix/monitor/legacy-crypto-restore.test.ts +0 -206
  1024. package/src/matrix/monitor/legacy-crypto-restore.ts +0 -139
  1025. package/src/matrix/monitor/location.ts +0 -100
  1026. package/src/matrix/monitor/media.test.ts +0 -159
  1027. package/src/matrix/monitor/media.ts +0 -119
  1028. package/src/matrix/monitor/mentions.test.ts +0 -289
  1029. package/src/matrix/monitor/mentions.ts +0 -177
  1030. package/src/matrix/monitor/reaction-events.test.ts +0 -326
  1031. package/src/matrix/monitor/reaction-events.ts +0 -187
  1032. package/src/matrix/monitor/recent-invite.test.ts +0 -92
  1033. package/src/matrix/monitor/recent-invite.ts +0 -30
  1034. package/src/matrix/monitor/replies.test.ts +0 -265
  1035. package/src/matrix/monitor/replies.ts +0 -136
  1036. package/src/matrix/monitor/reply-context.test.ts +0 -276
  1037. package/src/matrix/monitor/reply-context.ts +0 -92
  1038. package/src/matrix/monitor/room-history.test.ts +0 -258
  1039. package/src/matrix/monitor/room-history.ts +0 -301
  1040. package/src/matrix/monitor/room-info.test.ts +0 -201
  1041. package/src/matrix/monitor/room-info.ts +0 -126
  1042. package/src/matrix/monitor/rooms.test.ts +0 -121
  1043. package/src/matrix/monitor/rooms.ts +0 -52
  1044. package/src/matrix/monitor/route.test.ts +0 -255
  1045. package/src/matrix/monitor/route.ts +0 -178
  1046. package/src/matrix/monitor/runtime-api.ts +0 -31
  1047. package/src/matrix/monitor/startup-verification.test.ts +0 -294
  1048. package/src/matrix/monitor/startup-verification.ts +0 -237
  1049. package/src/matrix/monitor/startup.test.ts +0 -257
  1050. package/src/matrix/monitor/startup.ts +0 -218
  1051. package/src/matrix/monitor/status.ts +0 -111
  1052. package/src/matrix/monitor/sync-lifecycle.test.ts +0 -224
  1053. package/src/matrix/monitor/sync-lifecycle.ts +0 -91
  1054. package/src/matrix/monitor/task-runner.ts +0 -38
  1055. package/src/matrix/monitor/thread-context.test.ts +0 -149
  1056. package/src/matrix/monitor/thread-context.ts +0 -108
  1057. package/src/matrix/monitor/threads.test.ts +0 -68
  1058. package/src/matrix/monitor/threads.ts +0 -85
  1059. package/src/matrix/monitor/types.ts +0 -30
  1060. package/src/matrix/monitor/verification-events.ts +0 -627
  1061. package/src/matrix/monitor/verification-utils.test.ts +0 -47
  1062. package/src/matrix/monitor/verification-utils.ts +0 -46
  1063. package/src/matrix/outbound-media-runtime.ts +0 -1
  1064. package/src/matrix/poll-summary.ts +0 -110
  1065. package/src/matrix/poll-types.test.ts +0 -205
  1066. package/src/matrix/poll-types.ts +0 -433
  1067. package/src/matrix/probe.runtime.ts +0 -4
  1068. package/src/matrix/probe.test.ts +0 -154
  1069. package/src/matrix/probe.ts +0 -96
  1070. package/src/matrix/profile.test.ts +0 -154
  1071. package/src/matrix/profile.ts +0 -184
  1072. package/src/matrix/reaction-common.test.ts +0 -96
  1073. package/src/matrix/reaction-common.ts +0 -147
  1074. package/src/matrix/sdk/crypto-bootstrap.test.ts +0 -505
  1075. package/src/matrix/sdk/crypto-bootstrap.ts +0 -341
  1076. package/src/matrix/sdk/crypto-facade.test.ts +0 -197
  1077. package/src/matrix/sdk/crypto-facade.ts +0 -207
  1078. package/src/matrix/sdk/crypto-node.runtime.test.ts +0 -27
  1079. package/src/matrix/sdk/crypto-node.runtime.ts +0 -9
  1080. package/src/matrix/sdk/crypto-runtime.ts +0 -11
  1081. package/src/matrix/sdk/decrypt-bridge.ts +0 -356
  1082. package/src/matrix/sdk/event-helpers.test.ts +0 -60
  1083. package/src/matrix/sdk/event-helpers.ts +0 -71
  1084. package/src/matrix/sdk/http-client.test.ts +0 -134
  1085. package/src/matrix/sdk/http-client.ts +0 -87
  1086. package/src/matrix/sdk/idb-persistence-lock.ts +0 -51
  1087. package/src/matrix/sdk/idb-persistence.lock-order.test.ts +0 -108
  1088. package/src/matrix/sdk/idb-persistence.test-helpers.ts +0 -88
  1089. package/src/matrix/sdk/idb-persistence.test.ts +0 -149
  1090. package/src/matrix/sdk/idb-persistence.ts +0 -283
  1091. package/src/matrix/sdk/logger.test.ts +0 -25
  1092. package/src/matrix/sdk/logger.ts +0 -108
  1093. package/src/matrix/sdk/read-response-with-limit.ts +0 -19
  1094. package/src/matrix/sdk/recovery-key-store.test.ts +0 -385
  1095. package/src/matrix/sdk/recovery-key-store.ts +0 -430
  1096. package/src/matrix/sdk/transport.test.ts +0 -161
  1097. package/src/matrix/sdk/transport.ts +0 -344
  1098. package/src/matrix/sdk/types.ts +0 -236
  1099. package/src/matrix/sdk/verification-manager.test.ts +0 -509
  1100. package/src/matrix/sdk/verification-manager.ts +0 -694
  1101. package/src/matrix/sdk/verification-status.ts +0 -23
  1102. package/src/matrix/sdk.test.ts +0 -2568
  1103. package/src/matrix/sdk.ts +0 -1789
  1104. package/src/matrix/send/client.test.ts +0 -174
  1105. package/src/matrix/send/client.ts +0 -90
  1106. package/src/matrix/send/formatting.ts +0 -189
  1107. package/src/matrix/send/media.ts +0 -244
  1108. package/src/matrix/send/targets.test.ts +0 -254
  1109. package/src/matrix/send/targets.ts +0 -104
  1110. package/src/matrix/send/types.ts +0 -134
  1111. package/src/matrix/send.test.ts +0 -958
  1112. package/src/matrix/send.ts +0 -609
  1113. package/src/matrix/session-store-metadata.ts +0 -108
  1114. package/src/matrix/startup-abort.ts +0 -44
  1115. package/src/matrix/sync-state.ts +0 -27
  1116. package/src/matrix/target-ids.ts +0 -102
  1117. package/src/matrix/thread-bindings-shared.ts +0 -201
  1118. package/src/matrix/thread-bindings.test.ts +0 -673
  1119. package/src/matrix/thread-bindings.ts +0 -577
  1120. package/src/matrix-migration.runtime.ts +0 -9
  1121. package/src/migration-config.test.ts +0 -228
  1122. package/src/migration-config.ts +0 -243
  1123. package/src/migration-snapshot-backup.ts +0 -117
  1124. package/src/migration-snapshot.test.ts +0 -184
  1125. package/src/migration-snapshot.ts +0 -55
  1126. package/src/onboarding.resolve.test.ts +0 -55
  1127. package/src/onboarding.test-harness.ts +0 -158
  1128. package/src/onboarding.test.ts +0 -665
  1129. package/src/onboarding.ts +0 -773
  1130. package/src/outbound.test.ts +0 -173
  1131. package/src/outbound.ts +0 -78
  1132. package/src/plugin-entry.runtime.js +0 -159
  1133. package/src/plugin-entry.runtime.test.ts +0 -108
  1134. package/src/plugin-entry.runtime.ts +0 -68
  1135. package/src/profile-update.ts +0 -68
  1136. package/src/record-shared.ts +0 -3
  1137. package/src/resolve-targets.test.ts +0 -178
  1138. package/src/resolve-targets.ts +0 -175
  1139. package/src/resolver.ts +0 -21
  1140. package/src/runtime-api.ts +0 -144
  1141. package/src/runtime.ts +0 -7
  1142. package/src/secret-contract.ts +0 -174
  1143. package/src/session-route.test.ts +0 -315
  1144. package/src/session-route.ts +0 -113
  1145. package/src/setup-bootstrap.ts +0 -94
  1146. package/src/setup-config.ts +0 -222
  1147. package/src/setup-contract.ts +0 -89
  1148. package/src/setup-core.test.ts +0 -326
  1149. package/src/setup-core.ts +0 -50
  1150. package/src/setup-surface.ts +0 -4
  1151. package/src/startup-maintenance.test.ts +0 -227
  1152. package/src/startup-maintenance.ts +0 -114
  1153. package/src/storage-paths.ts +0 -92
  1154. package/src/test-helpers.ts +0 -42
  1155. package/src/test-mocks.ts +0 -55
  1156. package/src/test-runtime.ts +0 -72
  1157. package/src/test-support/monitor-route-test-support.ts +0 -8
  1158. package/src/tool-actions.runtime.ts +0 -1
  1159. package/src/tool-actions.test.ts +0 -422
  1160. package/src/tool-actions.ts +0 -498
  1161. package/src/types.ts +0 -230
  1162. package/test-api.ts +0 -2
  1163. package/thread-bindings-runtime.ts +0 -4
  1164. package/tsconfig.json +0 -16
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/media-typer/index.js", "../src/matrix/send/media.ts", "../../../node_modules/music-metadata/lib/core.js", "../../../node_modules/music-metadata/lib/ParserFactory.js", "../../../node_modules/file-type/source/index.js", "../../../node_modules/@tokenizer/inflate/lib/index.js", "../../../node_modules/@tokenizer/inflate/lib/ZipHandler.js", "../../../node_modules/@tokenizer/inflate/lib/ZipToken.js", "../../../node_modules/@tokenizer/inflate/lib/GzipHandler.js", "../../../node_modules/file-type/source/tokens.js", "../../../node_modules/file-type/source/supported.js", "../../../node_modules/file-type/source/parser.js", "../../../node_modules/file-type/source/detectors/zip.js", "../../../node_modules/file-type/source/detectors/ebml.js", "../../../node_modules/file-type/source/detectors/png.js", "../../../node_modules/file-type/source/detectors/asf.js", "../../../node_modules/music-metadata/lib/common/MetadataCollector.js", "../../../node_modules/music-metadata/lib/common/GenericTagTypes.js", "../../../node_modules/music-metadata/lib/common/CombinedTagMapper.js", "../../../node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js", "../../../node_modules/music-metadata/lib/common/GenericTagMapper.js", "../../../node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js", "../../../node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.js", "../../../node_modules/music-metadata/lib/asf/AsfTagMapper.js", "../../../node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js", "../../../node_modules/music-metadata/lib/apev2/APEv2TagMapper.js", "../../../node_modules/music-metadata/lib/mp4/MP4TagMapper.js", "../../../node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js", "../../../node_modules/music-metadata/lib/riff/RiffInfoTagMap.js", "../../../node_modules/music-metadata/lib/matroska/MatroskaTagMapper.js", "../../../node_modules/music-metadata/lib/aiff/AiffTagMap.js", "../../../node_modules/music-metadata/lib/lrc/LyricsParser.js", "../../../node_modules/music-metadata/lib/mpeg/MpegLoader.js", "../../../node_modules/music-metadata/lib/apev2/Apev2Loader.js", "../../../node_modules/music-metadata/lib/asf/AsfLoader.js", "../../../node_modules/music-metadata/lib/dsdiff/DsdiffLoader.js", "../../../node_modules/music-metadata/lib/aiff/AiffLoader.js", "../../../node_modules/music-metadata/lib/dsf/DsfLoader.js", "../../../node_modules/music-metadata/lib/flac/FlacLoader.js", "../../../node_modules/music-metadata/lib/matroska/MatroskaLoader.js", "../../../node_modules/music-metadata/lib/mp4/Mp4Loader.js", "../../../node_modules/music-metadata/lib/musepack/MusepackLoader.js", "../../../node_modules/music-metadata/lib/ogg/OggLoader.js", "../../../node_modules/music-metadata/lib/wavpack/WavPackLoader.js", "../../../node_modules/music-metadata/lib/wav/WaveLoader.js", "../../../node_modules/music-metadata/lib/lyrics3/Lyrics3.js"],
4
+ "sourcesContent": ["/*!\n * media-typer\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first = ALPHA / DIGIT\n * restricted-name-chars = ALPHA / DIGIT / \"!\" / \"#\" /\n * \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n * ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n * ; specify a structured syntax suffix\n * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z\n * DIGIT = %x30-39 ; 0-9\n */\nvar SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\nexports.test = test\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var subtype = obj.subtype\n var suffix = obj.suffix\n var type = obj.type\n\n if (!type || !TYPE_NAME_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) {\n throw new TypeError('invalid subtype')\n }\n\n // format as type/subtype\n var string = type + '/' + subtype\n\n // append +suffix\n if (suffix) {\n if (!TYPE_NAME_REGEXP.test(suffix)) {\n throw new TypeError('invalid suffix')\n }\n\n string += '+' + suffix\n }\n\n return string\n}\n\n/**\n * Test media type.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction test (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n if (typeof string !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n return TYPE_REGEXP.test(string.toLowerCase())\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n if (typeof string !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var match = TYPE_REGEXP.exec(string.toLowerCase())\n\n if (!match) {\n throw new TypeError('invalid media type')\n }\n\n var type = match[1]\n var subtype = match[2]\n var suffix\n\n // suffix after last +\n var index = subtype.lastIndexOf('+')\n if (index !== -1) {\n suffix = subtype.substr(index + 1)\n subtype = subtype.substr(0, index)\n }\n\n return new MediaType(type, subtype, suffix)\n}\n\n/**\n * Class for MediaType object.\n * @public\n */\n\nfunction MediaType (type, subtype, suffix) {\n this.type = type\n this.subtype = subtype\n this.suffix = suffix\n}\n", "import { parseBuffer, type IFileInfo } from \"music-metadata\";\nimport { getMatrixRuntime } from \"../../runtime.js\";\nimport type {\n DimensionalFileInfo,\n EncryptedFile,\n FileWithThumbnailInfo,\n MatrixClient,\n TimedFileInfo,\n VideoFileInfo,\n} from \"../sdk.js\";\nimport {\n type MatrixMediaContent,\n type MatrixMediaInfo,\n type MatrixMediaMsgType,\n type MatrixRelation,\n type MediaKind,\n} from \"./types.js\";\n\nconst getCore = () => getMatrixRuntime();\n\nexport function buildMatrixMediaInfo(params: {\n size: number;\n mimetype?: string;\n durationMs?: number;\n imageInfo?: DimensionalFileInfo;\n}): MatrixMediaInfo | undefined {\n const base: FileWithThumbnailInfo = {};\n if (Number.isFinite(params.size)) {\n base.size = params.size;\n }\n if (params.mimetype) {\n base.mimetype = params.mimetype;\n }\n if (params.imageInfo) {\n const dimensional: DimensionalFileInfo = {\n ...base,\n ...params.imageInfo,\n };\n if (typeof params.durationMs === \"number\") {\n const videoInfo: VideoFileInfo = {\n ...dimensional,\n duration: params.durationMs,\n };\n return videoInfo;\n }\n return dimensional;\n }\n if (typeof params.durationMs === \"number\") {\n const timedInfo: TimedFileInfo = {\n ...base,\n duration: params.durationMs,\n };\n return timedInfo;\n }\n if (Object.keys(base).length === 0) {\n return undefined;\n }\n return base;\n}\n\nexport function buildMediaContent(params: {\n msgtype: MatrixMediaMsgType;\n body: string;\n url?: string;\n filename?: string;\n mimetype?: string;\n size: number;\n relation?: MatrixRelation;\n isVoice?: boolean;\n durationMs?: number;\n imageInfo?: DimensionalFileInfo;\n file?: EncryptedFile;\n}): MatrixMediaContent {\n const info = buildMatrixMediaInfo({\n size: params.size,\n mimetype: params.mimetype,\n durationMs: params.durationMs,\n imageInfo: params.imageInfo,\n });\n const base: MatrixMediaContent = {\n msgtype: params.msgtype,\n body: params.body,\n filename: params.filename,\n info: info ?? undefined,\n };\n // Encrypted media should only include the \"file\" payload, not top-level \"url\".\n if (!params.file && params.url) {\n base.url = params.url;\n }\n // For encrypted files, add the file object\n if (params.file) {\n base.file = params.file;\n }\n if (params.isVoice) {\n base[\"org.matrix.msc3245.voice\"] = {};\n if (typeof params.durationMs === \"number\") {\n base[\"org.matrix.msc1767.audio\"] = {\n duration: params.durationMs,\n };\n }\n }\n if (params.relation) {\n base[\"m.relates_to\"] = params.relation;\n }\n return base;\n}\n\nconst THUMBNAIL_MAX_SIDE = 800;\nconst THUMBNAIL_QUALITY = 80;\n\nexport async function prepareImageInfo(params: {\n buffer: Buffer;\n client: MatrixClient;\n encrypted?: boolean;\n}): Promise<DimensionalFileInfo | undefined> {\n const meta = await getCore()\n .media.getImageMetadata(params.buffer)\n .catch(() => null);\n if (!meta) {\n return undefined;\n }\n const imageInfo: DimensionalFileInfo = { w: meta.width, h: meta.height };\n const maxDim = Math.max(meta.width, meta.height);\n if (maxDim > THUMBNAIL_MAX_SIDE) {\n try {\n const thumbBuffer = await getCore().media.resizeToJpeg({\n buffer: params.buffer,\n maxSide: THUMBNAIL_MAX_SIDE,\n quality: THUMBNAIL_QUALITY,\n withoutEnlargement: true,\n });\n const thumbMeta = await getCore()\n .media.getImageMetadata(thumbBuffer)\n .catch(() => null);\n const result = await uploadMediaWithEncryption(params.client, thumbBuffer, {\n contentType: \"image/jpeg\",\n filename: \"thumbnail.jpg\",\n encrypted: params.encrypted === true,\n });\n if (result.file) {\n imageInfo.thumbnail_file = result.file;\n } else {\n imageInfo.thumbnail_url = result.url;\n }\n if (thumbMeta) {\n imageInfo.thumbnail_info = {\n w: thumbMeta.width,\n h: thumbMeta.height,\n mimetype: \"image/jpeg\",\n size: thumbBuffer.byteLength,\n };\n }\n } catch {\n // Thumbnail generation failed, continue without it\n }\n }\n return imageInfo;\n}\n\nexport async function resolveMediaDurationMs(params: {\n buffer: Buffer;\n contentType?: string;\n fileName?: string;\n kind: MediaKind;\n}): Promise<number | undefined> {\n if (params.kind !== \"audio\" && params.kind !== \"video\") {\n return undefined;\n }\n try {\n const fileInfo: IFileInfo | string | undefined =\n params.contentType || params.fileName\n ? {\n mimeType: params.contentType,\n size: params.buffer.byteLength,\n path: params.fileName,\n }\n : undefined;\n const metadata = await parseBuffer(params.buffer, fileInfo, {\n duration: true,\n skipCovers: true,\n });\n const durationSeconds = metadata.format.duration;\n if (typeof durationSeconds === \"number\" && Number.isFinite(durationSeconds)) {\n return Math.max(0, Math.round(durationSeconds * 1000));\n }\n } catch {\n // Duration is optional; ignore parse failures.\n }\n return undefined;\n}\n\nasync function uploadFile(\n client: MatrixClient,\n file: Buffer,\n params: {\n contentType?: string;\n filename?: string;\n },\n): Promise<string> {\n return await client.uploadContent(file, params.contentType, params.filename);\n}\n\nasync function uploadMediaWithEncryption(\n client: MatrixClient,\n buffer: Buffer,\n params: {\n contentType?: string;\n filename?: string;\n encrypted: boolean;\n },\n): Promise<{ url: string; file?: EncryptedFile }> {\n if (params.encrypted && client.crypto) {\n const encrypted = await client.crypto.encryptMedia(buffer);\n const mxc = await client.uploadContent(encrypted.buffer, params.contentType, params.filename);\n const file: EncryptedFile = { url: mxc, ...encrypted.file };\n return {\n url: mxc,\n file,\n };\n }\n\n const mxc = await uploadFile(client, buffer, params);\n return { url: mxc };\n}\n\n/**\n * Upload media with optional encryption for E2EE rooms.\n */\nexport async function uploadMediaMaybeEncrypted(\n client: MatrixClient,\n roomId: string,\n buffer: Buffer,\n params: {\n contentType?: string;\n filename?: string;\n },\n): Promise<{ url: string; file?: EncryptedFile }> {\n // Check if room is encrypted and crypto is available\n const isEncrypted = Boolean(client.crypto && (await client.crypto.isRoomEncrypted(roomId)));\n return await uploadMediaWithEncryption(client, buffer, {\n ...params,\n encrypted: isEncrypted,\n });\n}\n", "/**\n * Primary entry point, Node.js specific entry point is MusepackParser.ts\n */\nimport { fromWebStream, fromBuffer, fromBlob } from 'strtok3';\nimport { ParserFactory } from './ParserFactory.js';\nimport { APEv2Parser } from './apev2/APEv2Parser.js';\nimport { hasID3v1Header } from './id3v1/ID3v1Parser.js';\nimport { getLyricsHeaderLength } from './lyrics3/Lyrics3.js';\nexport { LyricsContentType, TimestampFormat } from './type.js';\nexport { CouldNotDetermineFileTypeError, UnsupportedFileTypeError } from './ParseError.js';\nexport * from './ParseError.js';\n/**\n * Parse Web API File\n * Requires Blob to be able to stream using a ReadableStreamBYOBReader, only available since Node.js \u2265 20\n * @param blob - Blob to parse\n * @param options - Parsing options\n * @returns Metadata\n */\nexport async function parseBlob(blob, options = {}) {\n const tokenizer = fromBlob(blob);\n try {\n return await parseFromTokenizer(tokenizer, options);\n }\n finally {\n await tokenizer.close();\n }\n}\n/**\n * Parse audio from Web Stream.Readable\n * @param webStream - WebStream to read the audio track from\n * @param options - Parsing options\n * @param fileInfo - File information object or MIME-type string\n * @returns Metadata\n */\nexport async function parseWebStream(webStream, fileInfo, options = {}) {\n const tokenizer = fromWebStream(webStream, { fileInfo: typeof fileInfo === 'string' ? { mimeType: fileInfo } : fileInfo });\n try {\n return await parseFromTokenizer(tokenizer, options);\n }\n finally {\n await tokenizer.close();\n }\n}\n/**\n * Parse audio from memory\n * @param uint8Array - Uint8Array holding audio data\n * @param fileInfo - File information object or MIME-type string\n * @param options - Parsing options\n * @returns Metadata\n * Ref: https://github.com/Borewit/strtok3/blob/e6938c81ff685074d5eb3064a11c0b03ca934c1d/src/index.ts#L15\n */\nexport async function parseBuffer(uint8Array, fileInfo, options = {}) {\n const tokenizer = fromBuffer(uint8Array, { fileInfo: typeof fileInfo === 'string' ? { mimeType: fileInfo } : fileInfo });\n return parseFromTokenizer(tokenizer, options);\n}\n/**\n * Parse audio from ITokenizer source\n * @param tokenizer - Audio source implementing the tokenizer interface\n * @param options - Parsing options\n * @returns Metadata\n */\nexport function parseFromTokenizer(tokenizer, options) {\n const parserFactory = new ParserFactory();\n return parserFactory.parse(tokenizer, undefined, options);\n}\n/**\n * Create a dictionary ordered by their tag id (key)\n * @param nativeTags list of tags\n * @returns tags indexed by id\n */\nexport function orderTags(nativeTags) {\n const tags = {};\n for (const { id, value } of nativeTags) {\n (tags[id] || (tags[id] = [])).push(value);\n }\n return tags;\n}\n/**\n * Convert rating to 1-5 star rating\n * @param rating Normalized rating [0..1] (common.rating[n].rating)\n * @returns Number of stars: 1, 2, 3, 4 or 5 stars\n */\nexport function ratingToStars(rating) {\n return rating === undefined ? 0 : 1 + Math.round(rating * 4);\n}\n/**\n * Select most likely cover image.\n * @param pictures Usually metadata.common.picture\n * @return Cover image, if any, otherwise null\n */\nexport function selectCover(pictures) {\n return pictures ? pictures.reduce((acc, cur) => {\n if (cur.name && cur.name.toLowerCase() in ['front', 'cover', 'cover (front)'])\n return cur;\n return acc;\n }) : null;\n}\nexport async function scanAppendingHeaders(tokenizer, options = {}) {\n let apeOffset = tokenizer.fileInfo.size;\n if (await hasID3v1Header(tokenizer)) {\n apeOffset -= 128;\n const lyricsLen = await getLyricsHeaderLength(tokenizer);\n apeOffset -= lyricsLen;\n }\n options.apeHeader = await APEv2Parser.findApeFooterOffset(tokenizer, apeOffset);\n}\n/**\n * Implementation only available when loaded as Node.js\n * This method will throw an Error, always.\n */\nexport async function parseFile(_filePath, _options = {}) {\n throw new Error('This function require a Node engine. To load Web API File objects use parseBlob instead.');\n}\n/**\n * Implementation only available when loaded as Node.js\n * This method will throw an Error, always.\n */\nexport async function parseStream(_stream, _fileInfo, _options = {}) {\n throw new Error('This function require a Node engine.');\n}\n/**\n * Return a list of supported mime-types\n */\nexport function getSupportedMimeTypes() {\n return new ParserFactory().getSupportedMimeTypes();\n}\n", "import { fileTypeFromBuffer } from 'file-type';\nimport ContentType from 'content-type';\nimport { parse as mimeTypeParse } from 'media-typer';\nimport initDebug from 'debug';\nimport { MetadataCollector } from './common/MetadataCollector.js';\nimport { TrackType } from './type.js';\nimport { mpegParserLoader } from './mpeg/MpegLoader.js';\nimport { CouldNotDetermineFileTypeError, UnsupportedFileTypeError } from './ParseError.js';\nimport { apeParserLoader } from './apev2/Apev2Loader.js';\nimport { asfParserLoader } from './asf/AsfLoader.js';\nimport { dsdiffParserLoader } from './dsdiff/DsdiffLoader.js';\nimport { aiffParserLoader } from './aiff/AiffLoader.js';\nimport { dsfParserLoader } from './dsf/DsfLoader.js';\nimport { flacParserLoader } from './flac/FlacLoader.js';\nimport { matroskaParserLoader } from './matroska/MatroskaLoader.js';\nimport { mp4ParserLoader } from './mp4/Mp4Loader.js';\nimport { musepackParserLoader } from './musepack/MusepackLoader.js';\nimport { oggParserLoader } from './ogg/OggLoader.js';\nimport { wavpackParserLoader } from './wavpack/WavPackLoader.js';\nimport { riffParserLoader } from './wav/WaveLoader.js';\nimport { scanAppendingHeaders } from './core.js';\nconst debug = initDebug('music-metadata:parser:factory');\nexport function parseHttpContentType(contentType) {\n const type = ContentType.parse(contentType);\n const mime = mimeTypeParse(type.type);\n return {\n type: mime.type,\n subtype: mime.subtype,\n suffix: mime.suffix,\n parameters: type.parameters\n };\n}\nexport class ParserFactory {\n constructor() {\n this.parsers = [];\n [\n flacParserLoader,\n mpegParserLoader,\n apeParserLoader,\n mp4ParserLoader,\n matroskaParserLoader,\n riffParserLoader,\n oggParserLoader,\n asfParserLoader,\n aiffParserLoader,\n wavpackParserLoader,\n musepackParserLoader,\n dsfParserLoader,\n dsdiffParserLoader\n ].forEach(parser => { this.registerParser(parser); });\n }\n registerParser(parser) {\n this.parsers.push(parser);\n }\n async parse(tokenizer, parserLoader, opts) {\n if (tokenizer.supportsRandomAccess()) {\n debug('tokenizer supports random-access, scanning for appending headers');\n await scanAppendingHeaders(tokenizer, opts);\n }\n else {\n debug('tokenizer does not support random-access, cannot scan for appending headers');\n }\n if (!parserLoader) {\n const buf = new Uint8Array(4100);\n if (tokenizer.fileInfo.mimeType) {\n parserLoader = this.findLoaderForContentType(tokenizer.fileInfo.mimeType);\n }\n if (!parserLoader && tokenizer.fileInfo.path) {\n parserLoader = this.findLoaderForExtension(tokenizer.fileInfo.path);\n }\n if (!parserLoader) {\n // Parser could not be determined on MIME-type or extension\n debug('Guess parser on content...');\n await tokenizer.peekBuffer(buf, { mayBeLess: true });\n const guessedType = await fileTypeFromBuffer(buf, { mpegOffsetTolerance: 10 });\n if (!guessedType || !guessedType.mime) {\n throw new CouldNotDetermineFileTypeError('Failed to determine audio format');\n }\n debug(`Guessed file type is mime=${guessedType.mime}, extension=${guessedType.ext}`);\n parserLoader = this.findLoaderForContentType(guessedType.mime);\n if (!parserLoader) {\n throw new UnsupportedFileTypeError(`Guessed MIME-type not supported: ${guessedType.mime}`);\n }\n }\n }\n // Parser found, execute parser\n debug(`Loading ${parserLoader.parserType} parser...`);\n const metadata = new MetadataCollector(opts);\n const ParserImpl = await parserLoader.load();\n const parser = new ParserImpl(metadata, tokenizer, opts ?? {});\n debug(`Parser ${parserLoader.parserType} loaded`);\n await parser.parse();\n if (metadata.format.trackInfo) {\n if (metadata.format.hasAudio === undefined) {\n metadata.setFormat('hasAudio', !!metadata.format.trackInfo.find(track => track.type === TrackType.audio));\n }\n if (metadata.format.hasVideo === undefined) {\n metadata.setFormat('hasVideo', !!metadata.format.trackInfo.find(track => track.type === TrackType.video));\n }\n }\n return metadata.toCommonMetadata();\n }\n /**\n * @param filePath - Path, filename or extension to audio file\n * @return Parser submodule name\n */\n findLoaderForExtension(filePath) {\n if (!filePath)\n return;\n const extension = getExtension(filePath).toLocaleLowerCase() || filePath;\n return this.parsers.find(parser => parser.extensions.indexOf(extension) !== -1);\n }\n findLoaderForContentType(httpContentType) {\n let mime;\n if (!httpContentType)\n return;\n try {\n mime = parseHttpContentType(httpContentType);\n }\n catch (_err) {\n debug(`Invalid HTTP Content-Type header value: ${httpContentType}`);\n return;\n }\n const subType = mime.subtype.indexOf('x-') === 0 ? mime.subtype.substring(2) : mime.subtype;\n return this.parsers.find(parser => parser.mimeTypes.find(loader => loader.indexOf(`${mime.type}/${subType}`) !== -1));\n }\n getSupportedMimeTypes() {\n const mimeTypeSet = new Set();\n this.parsers.forEach(loader => {\n loader.mimeTypes.forEach(mimeType => {\n mimeTypeSet.add(mimeType);\n mimeTypeSet.add(mimeType.replace('/', '/x-'));\n });\n });\n return Array.from(mimeTypeSet);\n }\n}\nfunction getExtension(fname) {\n const i = fname.lastIndexOf('.');\n return i === -1 ? '' : fname.substring(i);\n}\n", "/**\nPrimary entry point, Node.js specific entry point is index.js\n*/\n\nimport * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {GzipHandler} from '@tokenizer/inflate';\nimport {concatUint8Arrays} from 'uint8array-extras';\nimport {\n\tstringToBytes,\n\ttarHeaderChecksumMatches,\n\tuint32SyncSafeToken,\n} from './tokens.js';\nimport {extensions, mimeTypes} from './supported.js';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tParserHardLimitError,\n\tsafeIgnore,\n\tcheckBytes,\n\thasUnknownFileSize,\n} from './parser.js';\nimport {detectZip} from './detectors/zip.js';\nimport {detectEbml} from './detectors/ebml.js';\nimport {detectPng} from './detectors/png.js';\nimport {detectAsf} from './detectors/asf.js';\n\nexport const reasonableDetectionSizeInBytes = 4100; // A fair amount of file-types are detectable within this range.\nconst maximumMpegOffsetTolerance = reasonableDetectionSizeInBytes - 2;\nconst maximumNestedGzipDetectionSizeInBytes = maximumUntrustedSkipSizeInBytes;\nconst maximumNestedGzipProbeDepth = 1;\nconst unknownSizeGzipProbeTimeoutInMilliseconds = 100;\nconst maximumId3HeaderSizeInBytes = maximumUntrustedSkipSizeInBytes;\nconst maximumTiffTagCount = 512;\nconst maximumDetectionReentryCount = 256;\nconst maximumTiffStreamIfdOffsetInBytes = 1024 * 1024;\nconst maximumTiffIfdOffsetInBytes = maximumUntrustedSkipSizeInBytes;\n\nexport function normalizeSampleSize(sampleSize) {\n\t// `sampleSize` is an explicit caller-controlled tuning knob, not untrusted file input.\n\t// Preserve valid caller-requested probe depth here; applications must bound attacker-derived option values themselves.\n\tif (!Number.isFinite(sampleSize)) {\n\t\treturn reasonableDetectionSizeInBytes;\n\t}\n\n\treturn Math.max(1, Math.trunc(sampleSize));\n}\n\nfunction normalizeMpegOffsetTolerance(mpegOffsetTolerance) {\n\t// This value controls scan depth and therefore worst-case CPU work.\n\tif (!Number.isFinite(mpegOffsetTolerance)) {\n\t\treturn 0;\n\t}\n\n\treturn Math.max(0, Math.min(maximumMpegOffsetTolerance, Math.trunc(mpegOffsetTolerance)));\n}\n\nfunction getKnownFileSizeOrMaximum(fileSize) {\n\tif (!Number.isFinite(fileSize)) {\n\t\treturn Number.MAX_SAFE_INTEGER;\n\t}\n\n\treturn Math.max(0, fileSize);\n}\n\n// Keep the specifier non-literal at the call site so browser bundlers do not try to resolve Node-only imports.\nfunction importAtRuntime(specifier) {\n\treturn import(specifier);\n}\n\n// Wrap stream in an identity TransformStream to avoid BYOB readers.\n// Node.js has a bug where calling controller.close() inside a BYOB stream's\n// pull() callback does not resolve pending reader.read() calls, causing\n// permanent hangs on streams shorter than the requested read size.\n// Using a default (non-BYOB) reader via TransformStream avoids this.\nfunction toDefaultStream(stream) {\n\treturn stream.pipeThrough(new TransformStream());\n}\n\nfunction readWithSignal(reader, signal) {\n\tif (signal === undefined) {\n\t\treturn reader.read();\n\t}\n\n\tsignal.throwIfAborted();\n\n\treturn Promise.race([\n\t\treader.read(),\n\t\tnew Promise((_resolve, reject) => {\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(signal.reason);\n\t\t\t\treader.cancel(signal.reason).catch(() => {});\n\t\t\t}, {once: true});\n\t\t}),\n\t]);\n}\n\nfunction createByteLimitedReadableStream(stream, maximumBytes) {\n\tconst reader = stream.getReader();\n\tlet emittedBytes = 0;\n\tlet sourceDone = false;\n\tlet sourceCanceled = false;\n\n\tconst cancelSource = async reason => {\n\t\tif (\n\t\t\tsourceDone\n\t\t\t|| sourceCanceled\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsourceCanceled = true;\n\t\tawait reader.cancel(reason);\n\t};\n\n\treturn new ReadableStream({\n\t\tasync pull(controller) {\n\t\t\tif (emittedBytes >= maximumBytes) {\n\t\t\t\tcontroller.close();\n\t\t\t\tawait cancelSource();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {done, value} = await reader.read();\n\t\t\tif (\n\t\t\t\tdone\n\t\t\t\t|| !value\n\t\t\t) {\n\t\t\t\tsourceDone = true;\n\t\t\t\tcontroller.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst remainingBytes = maximumBytes - emittedBytes;\n\t\t\tif (value.length > remainingBytes) {\n\t\t\t\tcontroller.enqueue(value.subarray(0, remainingBytes));\n\t\t\t\temittedBytes += remainingBytes;\n\t\t\t\tcontroller.close();\n\t\t\t\tawait cancelSource();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcontroller.enqueue(value);\n\t\t\temittedBytes += value.length;\n\t\t},\n\t\tasync cancel(reason) {\n\t\t\tawait cancelSource(reason);\n\t\t},\n\t});\n}\n\nexport async function fileTypeFromStream(stream, options) {\n\treturn new FileTypeParser(options).fromStream(stream);\n}\n\nexport async function fileTypeFromBuffer(input, options) {\n\treturn new FileTypeParser(options).fromBuffer(input);\n}\n\nexport async function fileTypeFromBlob(blob, options) {\n\treturn new FileTypeParser(options).fromBlob(blob);\n}\n\nexport async function fileTypeFromTokenizer(tokenizer, options) {\n\treturn new FileTypeParser(options).fromTokenizer(tokenizer);\n}\n\nexport async function fileTypeStream(webStream, options) {\n\treturn new FileTypeParser(options).toDetectionStream(webStream, options);\n}\n\nexport class FileTypeParser {\n\tconstructor(options) {\n\t\tconst normalizedMpegOffsetTolerance = normalizeMpegOffsetTolerance(options?.mpegOffsetTolerance);\n\t\tthis.options = {\n\t\t\t...options,\n\t\t\tmpegOffsetTolerance: normalizedMpegOffsetTolerance,\n\t\t};\n\n\t\tthis.detectors = [...(this.options.customDetectors ?? []),\n\t\t\t{id: 'core', detect: this.detectConfident},\n\t\t\t{id: 'core.imprecise', detect: this.detectImprecise}];\n\t\tthis.tokenizerOptions = {\n\t\t\tabortSignal: this.options.signal,\n\t\t};\n\t\tthis.gzipProbeDepth = 0;\n\t}\n\n\tgetTokenizerOptions() {\n\t\treturn {\n\t\t\t...this.tokenizerOptions,\n\t\t};\n\t}\n\n\tcreateTokenizerFromWebStream(stream) {\n\t\treturn strtok3.fromWebStream(toDefaultStream(stream), this.getTokenizerOptions());\n\t}\n\n\tasync parseTokenizer(tokenizer, detectionReentryCount = 0) {\n\t\tthis.detectionReentryCount = detectionReentryCount;\n\t\tconst initialPosition = tokenizer.position;\n\t\t// Iterate through all file-type detectors\n\t\tfor (const detector of this.detectors) {\n\t\t\tlet fileType;\n\t\t\ttry {\n\t\t\t\tfileType = await detector.detect(tokenizer);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (error instanceof ParserHardLimitError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\n\t\t\tif (initialPosition !== tokenizer.position) {\n\t\t\t\treturn undefined; // Cannot proceed scanning of the tokenizer is at an arbitrary position\n\t\t\t}\n\t\t}\n\t}\n\n\tasync fromTokenizer(tokenizer) {\n\t\ttry {\n\t\t\treturn await this.parseTokenizer(tokenizer);\n\t\t} finally {\n\t\t\tawait tokenizer.close();\n\t\t}\n\t}\n\n\tasync fromBuffer(input) {\n\t\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer)) {\n\t\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t\t}\n\n\t\tconst buffer = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\t\tif (!(buffer?.length > 1)) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.fromTokenizer(strtok3.fromBuffer(buffer, this.getTokenizerOptions()));\n\t}\n\n\tasync fromBlob(blob) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\tconst tokenizer = strtok3.fromBlob(blob, this.getTokenizerOptions());\n\t\treturn this.fromTokenizer(tokenizer);\n\t}\n\n\tasync fromStream(stream) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\tconst tokenizer = this.createTokenizerFromWebStream(stream);\n\t\treturn this.fromTokenizer(tokenizer);\n\t}\n\n\tasync fromFile(path) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\t// TODO: Remove this when `strtok3.fromFile()` safely rejects non-regular filesystem objects without a pathname race.\n\t\tconst [{default: fsPromises}, {FileTokenizer}] = await Promise.all([\n\t\t\timportAtRuntime('node:fs/promises'),\n\t\t\timportAtRuntime('strtok3'),\n\t\t]);\n\t\tconst fileHandle = await fsPromises.open(path, fsPromises.constants.O_RDONLY | fsPromises.constants.O_NONBLOCK);\n\t\tconst fileStat = await fileHandle.stat();\n\t\tif (!fileStat.isFile()) {\n\t\t\tawait fileHandle.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst tokenizer = new FileTokenizer(fileHandle, {\n\t\t\t...this.getTokenizerOptions(),\n\t\t\tfileInfo: {path, size: fileStat.size},\n\t\t});\n\t\treturn this.fromTokenizer(tokenizer);\n\t}\n\n\tasync toDetectionStream(stream, options) {\n\t\tthis.options.signal?.throwIfAborted();\n\t\tconst sampleSize = normalizeSampleSize(options?.sampleSize ?? reasonableDetectionSizeInBytes);\n\t\tlet detectedFileType;\n\t\tlet streamEnded = false;\n\n\t\tconst reader = stream.getReader();\n\t\tconst chunks = [];\n\t\tlet totalSize = 0;\n\n\t\ttry {\n\t\t\twhile (totalSize < sampleSize) {\n\t\t\t\tconst {value, done} = await readWithSignal(reader, this.options.signal);\n\t\t\t\tif (done || !value) {\n\t\t\t\t\tstreamEnded = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tchunks.push(value);\n\t\t\t\ttotalSize += value.length;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!streamEnded\n\t\t\t\t&& totalSize === sampleSize\n\t\t\t) {\n\t\t\t\tconst {value, done} = await readWithSignal(reader, this.options.signal);\n\t\t\t\tif (done || !value) {\n\t\t\t\t\tstreamEnded = true;\n\t\t\t\t} else {\n\t\t\t\t\tchunks.push(value);\n\t\t\t\t\ttotalSize += value.length;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\treader.releaseLock();\n\t\t}\n\n\t\tif (totalSize > 0) {\n\t\t\tconst sample = chunks.length === 1 ? chunks[0] : concatUint8Arrays(chunks);\n\t\t\ttry {\n\t\t\t\tdetectedFileType = await this.fromBuffer(sample.subarray(0, sampleSize));\n\t\t\t} catch (error) {\n\t\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tdetectedFileType = undefined;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!streamEnded\n\t\t\t\t&& detectedFileType?.ext === 'pages'\n\t\t\t) {\n\t\t\t\tdetectedFileType = {\n\t\t\t\t\text: 'zip',\n\t\t\t\t\tmime: 'application/zip',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Prepend collected chunks and pipe the rest through\n\t\tconst transformStream = new TransformStream({\n\t\t\tstart(controller) {\n\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t}\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t});\n\n\t\tconst newStream = stream.pipeThrough(transformStream);\n\t\tnewStream.fileType = detectedFileType;\n\n\t\treturn newStream;\n\t}\n\n\tasync detectGzip(tokenizer) {\n\t\tif (this.gzipProbeDepth >= maximumNestedGzipProbeDepth) {\n\t\t\treturn {\n\t\t\t\text: 'gz',\n\t\t\t\tmime: 'application/gzip',\n\t\t\t};\n\t\t}\n\n\t\tconst gzipHandler = new GzipHandler(tokenizer);\n\t\tconst limitedInflatedStream = createByteLimitedReadableStream(gzipHandler.inflate(), maximumNestedGzipDetectionSizeInBytes);\n\t\tconst hasUnknownSize = hasUnknownFileSize(tokenizer);\n\t\tlet timeout;\n\t\tlet probeSignal;\n\t\tlet probeParser;\n\t\tlet compressedFileType;\n\n\t\tif (hasUnknownSize) {\n\t\t\tconst timeoutController = new AbortController();\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\ttimeoutController.abort(new DOMException(`Operation timed out after ${unknownSizeGzipProbeTimeoutInMilliseconds} ms`, 'TimeoutError'));\n\t\t\t}, unknownSizeGzipProbeTimeoutInMilliseconds);\n\t\t\tprobeSignal = this.options.signal === undefined\n\t\t\t\t? timeoutController.signal\n\t\t\t\t: AbortSignal.any([this.options.signal, timeoutController.signal]);\n\t\t\tprobeParser = new FileTypeParser({\n\t\t\t\t...this.options,\n\t\t\t\tsignal: probeSignal,\n\t\t\t});\n\t\t\tprobeParser.gzipProbeDepth = this.gzipProbeDepth + 1;\n\t\t} else {\n\t\t\tthis.gzipProbeDepth++;\n\t\t}\n\n\t\ttry {\n\t\t\tcompressedFileType = await (probeParser ?? this).fromStream(limitedInflatedStream);\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror?.name === 'AbortError'\n\t\t\t\t&& probeSignal?.reason?.name !== 'TimeoutError'\n\t\t\t) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\t// Timeout, decompression, or inner-detection failures are expected for non-tar gzip files.\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t\tif (!hasUnknownSize) {\n\t\t\t\tthis.gzipProbeDepth--;\n\t\t\t}\n\t\t}\n\n\t\tif (compressedFileType?.ext === 'tar') {\n\t\t\treturn {\n\t\t\t\text: 'tar.gz',\n\t\t\t\tmime: 'application/gzip',\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip',\n\t\t};\n\t}\n\n\tcheck(header, options) {\n\t\treturn checkBytes(this.buffer, header, options);\n\t}\n\n\tcheckString(header, options) {\n\t\treturn this.check(stringToBytes(header, options?.encoding), options);\n\t}\n\n\t// Detections with a high degree of certainty in identifying the correct file type\n\tdetectConfident = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\n\t\t// Keep reading until EOF if the file size is unknown.\n\t\tif (tokenizer.fileInfo.size === undefined) {\n\t\t\ttokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;\n\t\t}\n\n\t\tthis.tokenizer = tokenizer;\n\n\t\tif (hasUnknownFileSize(tokenizer)) {\n\t\t\tawait tokenizer.peekBuffer(this.buffer, {length: 3, mayBeLess: true});\n\t\t\tif (this.check([0x1F, 0x8B, 0x8])) {\n\t\t\t\treturn this.detectGzip(tokenizer);\n\t\t\t}\n\t\t}\n\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: 32, mayBeLess: true});\n\n\t\t// -- 2-byte signatures --\n\n\t\tif (this.check([0x42, 0x4D])) {\n\t\t\treturn {\n\t\t\t\text: 'bmp',\n\t\t\t\tmime: 'image/bmp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x0B, 0x77])) {\n\t\t\treturn {\n\t\t\t\text: 'ac3',\n\t\t\t\tmime: 'audio/vnd.dolby.dd-raw',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x78, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'dmg',\n\t\t\t\tmime: 'application/x-apple-diskimage',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4D, 0x5A])) {\n\t\t\treturn {\n\t\t\t\text: 'exe',\n\t\t\t\tmime: 'application/x-msdownload',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x25, 0x21])) {\n\t\t\tawait tokenizer.peekBuffer(this.buffer, {length: 24, mayBeLess: true});\n\n\t\t\tif (\n\t\t\t\tthis.checkString('PS-Adobe-', {offset: 2})\n\t\t\t\t&& this.checkString(' EPSF-', {offset: 14})\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'eps',\n\t\t\t\t\tmime: 'application/eps',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ps',\n\t\t\t\tmime: 'application/postscript',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x1F, 0xA0])\n\t\t\t|| this.check([0x1F, 0x9D])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'Z',\n\t\t\t\tmime: 'application/x-compress',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC7, 0x71])) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x60, 0xEA])) {\n\t\t\treturn {\n\t\t\t\text: 'arj',\n\t\t\t\tmime: 'application/x-arj',\n\t\t\t};\n\t\t}\n\n\t\t// -- 3-byte signatures --\n\n\t\tif (this.check([0xEF, 0xBB, 0xBF])) { // UTF-8-BOM\n\t\t\tif (this.detectionReentryCount >= maximumDetectionReentryCount) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.detectionReentryCount++;\n\t\t\t// Strip off UTF-8-BOM\n\t\t\tawait this.tokenizer.ignore(3);\n\t\t\treturn this.detectConfident(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x47, 0x49, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'gif',\n\t\t\t\tmime: 'image/gif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0xBC])) {\n\t\t\treturn {\n\t\t\t\text: 'jxr',\n\t\t\t\tmime: 'image/vnd.ms-photo',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x1F, 0x8B, 0x8])) {\n\t\t\treturn this.detectGzip(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x42, 0x5A, 0x68])) {\n\t\t\treturn {\n\t\t\t\text: 'bz2',\n\t\t\t\tmime: 'application/x-bzip2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ID3')) {\n\t\t\tawait safeIgnore(tokenizer, 6, {\n\t\t\t\tmaximumLength: 6,\n\t\t\t\treason: 'ID3 header prefix',\n\t\t\t}); // Skip ID3 header until the header size\n\t\t\tconst id3HeaderLength = await tokenizer.readToken(uint32SyncSafeToken);\n\t\t\tconst isUnknownFileSize = hasUnknownFileSize(tokenizer);\n\t\t\tif (\n\t\t\t\t!Number.isFinite(id3HeaderLength)\n\t\t\t\t|| id3HeaderLength < 0\n\t\t\t\t// Keep ID3 probing bounded for unknown-size streams to avoid attacker-controlled large skips.\n\t\t\t\t|| (\n\t\t\t\t\tisUnknownFileSize\n\t\t\t\t\t&& (\n\t\t\t\t\t\tid3HeaderLength > maximumId3HeaderSizeInBytes\n\t\t\t\t\t\t|| (tokenizer.position + id3HeaderLength) > maximumId3HeaderSizeInBytes\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (tokenizer.position + id3HeaderLength > tokenizer.fileInfo.size) {\n\t\t\t\tif (isUnknownFileSize) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait safeIgnore(tokenizer, id3HeaderLength, {\n\t\t\t\t\tmaximumLength: isUnknownFileSize ? maximumId3HeaderSizeInBytes : tokenizer.fileInfo.size,\n\t\t\t\t\treason: 'ID3 payload',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (this.detectionReentryCount >= maximumDetectionReentryCount) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.detectionReentryCount++;\n\t\t\treturn this.parseTokenizer(tokenizer, this.detectionReentryCount); // Skip ID3 header, recursion\n\t\t}\n\n\t\t// Musepack, SV7\n\t\tif (this.checkString('MP+')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\t(this.buffer[0] === 0x43 || this.buffer[0] === 0x46)\n\t\t\t&& this.check([0x57, 0x53], {offset: 1})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'swf',\n\t\t\t\tmime: 'application/x-shockwave-flash',\n\t\t\t};\n\t\t}\n\n\t\t// -- 4-byte signatures --\n\n\t\t// Requires a sample size of 4 bytes\n\t\tif (this.check([0xFF, 0xD8, 0xFF])) {\n\t\t\tif (this.check([0xF7], {offset: 3})) { // JPG7/SOF55, indicating a ISO/IEC 14495 / JPEG-LS file\n\t\t\t\treturn {\n\t\t\t\t\text: 'jls',\n\t\t\t\t\tmime: 'image/jls',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'jpg',\n\t\t\t\tmime: 'image/jpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4F, 0x62, 0x6A, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'avro',\n\t\t\t\tmime: 'application/avro',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FLIF')) {\n\t\t\treturn {\n\t\t\t\text: 'flif',\n\t\t\t\tmime: 'image/flif',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('8BPS')) {\n\t\t\treturn {\n\t\t\t\text: 'psd',\n\t\t\t\tmime: 'image/vnd.adobe.photoshop',\n\t\t\t};\n\t\t}\n\n\t\t// Musepack, SV8\n\t\tif (this.checkString('MPCK')) {\n\t\t\treturn {\n\t\t\t\text: 'mpc',\n\t\t\t\tmime: 'audio/x-musepack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('FORM')) {\n\t\t\treturn {\n\t\t\t\text: 'aif',\n\t\t\t\tmime: 'audio/aiff',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('icns', {offset: 0})) {\n\t\t\treturn {\n\t\t\t\text: 'icns',\n\t\t\t\tmime: 'image/icns',\n\t\t\t};\n\t\t}\n\n\t\t// Zip-based file formats\n\t\t// Need to be before the `zip` check\n\t\tif (this.check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature\n\t\t\treturn detectZip(tokenizer);\n\t\t}\n\n\t\tif (this.checkString('OggS')) {\n\t\t\t// This is an OGG container\n\t\t\tawait tokenizer.ignore(28);\n\t\t\tconst type = new Uint8Array(8);\n\t\t\tawait tokenizer.readBuffer(type);\n\n\t\t\t// Needs to be before `ogg` check\n\t\t\tif (checkBytes(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'opus',\n\t\t\t\t\tmime: 'audio/ogg; codecs=opus',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' theora' in header.\n\t\t\tif (checkBytes(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogv',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01video' in header.\n\t\t\tif (checkBytes(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogm',\n\t\t\t\t\tmime: 'video/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\t\tif (checkBytes(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'oga',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\t\tif (checkBytes(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'spx',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// If '\\x01vorbis' in header\n\t\t\tif (checkBytes(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ogg',\n\t\t\t\t\tmime: 'audio/ogg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\t\treturn {\n\t\t\t\text: 'ogx',\n\t\t\t\tmime: 'application/ogg',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x50, 0x4B])\n\t\t\t&& (this.buffer[2] === 0x3 || this.buffer[2] === 0x5 || this.buffer[2] === 0x7)\n\t\t\t&& (this.buffer[3] === 0x4 || this.buffer[3] === 0x6 || this.buffer[3] === 0x8)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'zip',\n\t\t\t\tmime: 'application/zip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('MThd')) {\n\t\t\treturn {\n\t\t\t\text: 'mid',\n\t\t\t\tmime: 'audio/midi',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOFF')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff',\n\t\t\t\tmime: 'font/woff',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('wOF2')\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x01, 0x00, 0x00], {offset: 4})\n\t\t\t\t|| this.checkString('OTTO', {offset: 4})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'woff2',\n\t\t\t\tmime: 'font/woff2',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xD4, 0xC3, 0xB2, 0xA1]) || this.check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\t\treturn {\n\t\t\t\text: 'pcap',\n\t\t\t\tmime: 'application/vnd.tcpdump.pcap',\n\t\t\t};\n\t\t}\n\n\t\t// Sony DSD Stream File (DSF)\n\t\tif (this.checkString('DSD ')) {\n\t\t\treturn {\n\t\t\t\text: 'dsf',\n\t\t\t\tmime: 'audio/x-dsf', // Non-standard\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('LZIP')) {\n\t\t\treturn {\n\t\t\t\text: 'lz',\n\t\t\t\tmime: 'application/lzip',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('fLaC')) {\n\t\t\treturn {\n\t\t\t\text: 'flac',\n\t\t\t\tmime: 'audio/flac',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x50, 0x47, 0xFB])) {\n\t\t\treturn {\n\t\t\t\text: 'bpg',\n\t\t\t\tmime: 'image/bpg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('wvpk')) {\n\t\t\treturn {\n\t\t\t\text: 'wv',\n\t\t\t\tmime: 'audio/wavpack',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('%PDF')) {\n\t\t\t// Assume this is just a normal PDF\n\t\t\treturn {\n\t\t\t\text: 'pdf',\n\t\t\t\tmime: 'application/pdf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x61, 0x73, 0x6D])) {\n\t\t\treturn {\n\t\t\t\text: 'wasm',\n\t\t\t\tmime: 'application/wasm',\n\t\t\t};\n\t\t}\n\n\t\t// TIFF, little-endian type\n\t\tif (this.check([0x49, 0x49])) {\n\t\t\tconst fileType = await this.readTiffHeader(false);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\t// TIFF, big-endian type\n\t\tif (this.check([0x4D, 0x4D])) {\n\t\t\tconst fileType = await this.readTiffHeader(true);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('MAC ')) {\n\t\t\treturn {\n\t\t\t\text: 'ape',\n\t\t\t\tmime: 'audio/ape',\n\t\t\t};\n\t\t}\n\n\t\t// https://github.com/file/file/blob/master/magic/Magdir/matroska\n\t\tif (this.check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML\n\t\t\treturn detectEbml(tokenizer);\n\t\t}\n\n\t\tif (this.checkString('SQLi')) {\n\t\t\treturn {\n\t\t\t\text: 'sqlite',\n\t\t\t\tmime: 'application/x-sqlite3',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\t\treturn {\n\t\t\t\text: 'nes',\n\t\t\t\tmime: 'application/x-nintendo-nes-rom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Cr24')) {\n\t\t\treturn {\n\t\t\t\text: 'crx',\n\t\t\t\tmime: 'application/x-google-chrome-extension',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('MSCF')\n\t\t\t|| this.checkString('ISc(')\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'cab',\n\t\t\t\tmime: 'application/vnd.ms-cab-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\t\treturn {\n\t\t\t\text: 'rpm',\n\t\t\t\tmime: 'application/x-rpm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xC5, 0xD0, 0xD3, 0xC6])) {\n\t\t\treturn {\n\t\t\t\text: 'eps',\n\t\t\t\tmime: 'application/eps',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x28, 0xB5, 0x2F, 0xFD])) {\n\t\t\treturn {\n\t\t\t\text: 'zst',\n\t\t\t\tmime: 'application/zstd',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x7F, 0x45, 0x4C, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'elf',\n\t\t\t\tmime: 'application/x-elf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x21, 0x42, 0x44, 0x4E])) {\n\t\t\treturn {\n\t\t\t\text: 'pst',\n\t\t\t\tmime: 'application/vnd.ms-outlook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('PAR1') || this.checkString('PARE')) {\n\t\t\treturn {\n\t\t\t\text: 'parquet',\n\t\t\t\tmime: 'application/vnd.apache.parquet',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('ttcf')) {\n\t\t\treturn {\n\t\t\t\text: 'ttc',\n\t\t\t\tmime: 'font/collection',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFE, 0xED, 0xFA, 0xCE]) // 32-bit, big-endian\n\t\t\t|| this.check([0xFE, 0xED, 0xFA, 0xCF]) // 64-bit, big-endian\n\t\t\t|| this.check([0xCE, 0xFA, 0xED, 0xFE]) // 32-bit, little-endian\n\t\t\t|| this.check([0xCF, 0xFA, 0xED, 0xFE]) // 64-bit, little-endian\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'macho',\n\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x22, 0x4D, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'lz4',\n\t\t\t\tmime: 'application/x-lz4', // Informal, used by freedesktop.org shared-mime-info\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('regf')) {\n\t\t\treturn {\n\t\t\t\text: 'dat',\n\t\t\t\tmime: 'application/x-ft-windows-registry-hive',\n\t\t\t};\n\t\t}\n\n\t\t// SPSS Statistical Data File\n\t\tif (this.checkString('$FL2') || this.checkString('$FL3')) {\n\t\t\treturn {\n\t\t\t\text: 'sav',\n\t\t\t\tmime: 'application/x-spss-sav',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'otf',\n\t\t\t\tmime: 'font/otf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('#!AMR')) {\n\t\t\treturn {\n\t\t\t\text: 'amr',\n\t\t\t\tmime: 'audio/amr',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString(String.raw`{\\rtf`)) {\n\t\t\treturn {\n\t\t\t\text: 'rtf',\n\t\t\t\tmime: 'application/rtf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x46, 0x4C, 0x56, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'flv',\n\t\t\t\tmime: 'video/x-flv',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('IMPM')) {\n\t\t\treturn {\n\t\t\t\text: 'it',\n\t\t\t\tmime: 'audio/x-it',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('-lh0-', {offset: 2})\n\t\t\t|| this.checkString('-lh1-', {offset: 2})\n\t\t\t|| this.checkString('-lh2-', {offset: 2})\n\t\t\t|| this.checkString('-lh3-', {offset: 2})\n\t\t\t|| this.checkString('-lh4-', {offset: 2})\n\t\t\t|| this.checkString('-lh5-', {offset: 2})\n\t\t\t|| this.checkString('-lh6-', {offset: 2})\n\t\t\t|| this.checkString('-lh7-', {offset: 2})\n\t\t\t|| this.checkString('-lzs-', {offset: 2})\n\t\t\t|| this.checkString('-lz4-', {offset: 2})\n\t\t\t|| this.checkString('-lz5-', {offset: 2})\n\t\t\t|| this.checkString('-lhd-', {offset: 2})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'lzh',\n\t\t\t\tmime: 'application/x-lzh-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// MPEG program stream (PS or MPEG-PS)\n\t\tif (this.check([0x00, 0x00, 0x01, 0xBA])) {\n\t\t\t// MPEG-PS, MPEG-1 Part 1\n\t\t\tif (this.check([0x21], {offset: 4, mask: [0xF1]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .ps, .mpeg\n\t\t\t\t\tmime: 'video/MP1S',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG-PS, MPEG-2 Part 1\n\t\t\tif (this.check([0x44], {offset: 4, mask: [0xC4]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mpg', // May also be .mpg, .m2p, .vob or .sub\n\t\t\t\t\tmime: 'video/MP2P',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('ITSF')) {\n\t\t\treturn {\n\t\t\t\text: 'chm',\n\t\t\t\tmime: 'application/vnd.ms-htmlhelp',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xCA, 0xFE, 0xBA, 0xBE])) {\n\t\t\t// Java bytecode and Mach-O universal binaries have the same magic number.\n\t\t\t// We disambiguate based on the next 4 bytes, as done by `file`.\n\t\t\t// See https://github.com/file/file/blob/master/magic/Magdir/cafebabe\n\t\t\tconst machOArchitectureCount = Token.UINT32_BE.get(this.buffer, 4);\n\t\t\tconst javaClassFileMajorVersion = Token.UINT16_BE.get(this.buffer, 6);\n\n\t\t\tif (machOArchitectureCount > 0 && machOArchitectureCount <= 30) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'macho',\n\t\t\t\t\tmime: 'application/x-mach-binary',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (javaClassFileMajorVersion > 30) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'class',\n\t\t\t\t\tmime: 'application/java-vm',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('.RMF')) {\n\t\t\treturn {\n\t\t\t\text: 'rm',\n\t\t\t\tmime: 'application/vnd.rn-realmedia',\n\t\t\t};\n\t\t}\n\n\t\t// -- 5-byte signatures --\n\n\t\tif (this.checkString('DRACO')) {\n\t\t\treturn {\n\t\t\t\text: 'drc',\n\t\t\t\tmime: 'application/x-ft-draco',\n\t\t\t};\n\t\t}\n\n\t\t// -- 6-byte signatures --\n\n\t\tif (this.check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'xz',\n\t\t\t\tmime: 'application/x-xz',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('<?xml ')) {\n\t\t\treturn {\n\t\t\t\text: 'xml',\n\t\t\t\tmime: 'application/xml',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\t\treturn {\n\t\t\t\text: '7z',\n\t\t\t\tmime: 'application/x-7z-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7])\n\t\t\t&& (this.buffer[6] === 0x0 || this.buffer[6] === 0x1)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'rar',\n\t\t\t\tmime: 'application/x-rar-compressed',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('solid ')) {\n\t\t\treturn {\n\t\t\t\text: 'stl',\n\t\t\t\tmime: 'model/stl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('AC')) {\n\t\t\tconst version = new Token.StringType(4, 'latin1').get(this.buffer, 2);\n\t\t\tif (/^\\d+$/v.test(version) && version >= 1000 && version <= 1050) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'dwg',\n\t\t\t\t\tmime: 'image/vnd.dwg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.checkString('070707')) {\n\t\t\treturn {\n\t\t\t\text: 'cpio',\n\t\t\t\tmime: 'application/x-cpio',\n\t\t\t};\n\t\t}\n\n\t\t// -- 7-byte signatures --\n\n\t\tif (this.checkString('BLENDER')) {\n\t\t\treturn {\n\t\t\t\text: 'blend',\n\t\t\t\tmime: 'application/x-blender',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('!<arch>')) {\n\t\t\tawait tokenizer.ignore(8);\n\t\t\tconst string = await tokenizer.readToken(new Token.StringType(13, 'ascii'));\n\t\t\tif (string === 'debian-binary') {\n\t\t\t\treturn {\n\t\t\t\t\text: 'deb',\n\t\t\t\t\tmime: 'application/x-deb',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\text: 'ar',\n\t\t\t\tmime: 'application/x-unix-archive',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.checkString('WEBVTT')\n\t\t\t&&\t(\n\t\t\t\t// One of LF, CR, tab, space, or end of file must follow \"WEBVTT\" per the spec (see `fixture/fixture-vtt-*.vtt` for examples). Note that `\\0` is technically the null character (there is no such thing as an EOF character). However, checking for `\\0` gives us the same result as checking for the end of the stream.\n\t\t\t\t(['\\n', '\\r', '\\t', ' ', '\\0'].some(char7 => this.checkString(char7, {offset: 6}))))\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'vtt',\n\t\t\t\tmime: 'text/vtt',\n\t\t\t};\n\t\t}\n\n\t\t// -- 8-byte signatures --\n\n\t\tif (this.check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\treturn detectPng(tokenizer);\n\t\t}\n\n\t\tif (this.check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'arrow',\n\t\t\t\tmime: 'application/vnd.apache.arrow.file',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'glb',\n\t\t\t\tmime: 'model/gltf-binary',\n\t\t\t};\n\t\t}\n\n\t\t// `mov` format variants\n\t\tif (\n\t\t\tthis.check([0x66, 0x72, 0x65, 0x65], {offset: 4}) // `free`\n\t\t\t|| this.check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) // `mdat` MJPEG\n\t\t\t|| this.check([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) // `moov`\n\t\t\t|| this.check([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide`\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mov',\n\t\t\t\tmime: 'video/quicktime',\n\t\t\t};\n\t\t}\n\n\t\t// -- 9-byte signatures --\n\n\t\tif (this.check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n\t\t\treturn {\n\t\t\t\text: 'orf',\n\t\t\t\tmime: 'image/x-olympus-orf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('gimp xcf ')) {\n\t\t\treturn {\n\t\t\t\text: 'xcf',\n\t\t\t\tmime: 'image/x-xcf',\n\t\t\t};\n\t\t}\n\n\t\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\t\t// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n\t\t// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n\t\t// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n\t\tif (\n\t\t\tthis.checkString('ftyp', {offset: 4})\n\t\t\t&& (this.buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?\n\t\t) {\n\t\t\t// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n\t\t\t// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n\t\t\tconst brandMajor = new Token.StringType(4, 'latin1').get(this.buffer, 8).replace('\\0', ' ').trim();\n\t\t\tswitch (brandMajor) {\n\t\t\t\tcase 'avif':\n\t\t\t\tcase 'avis':\n\t\t\t\t\treturn {ext: 'avif', mime: 'image/avif'};\n\t\t\t\tcase 'mif1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif'};\n\t\t\t\tcase 'msf1':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heif-sequence'};\n\t\t\t\tcase 'heic':\n\t\t\t\tcase 'heix':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic'};\n\t\t\t\tcase 'hevc':\n\t\t\t\tcase 'hevx':\n\t\t\t\t\treturn {ext: 'heic', mime: 'image/heic-sequence'};\n\t\t\t\tcase 'qt':\n\t\t\t\t\treturn {ext: 'mov', mime: 'video/quicktime'};\n\t\t\t\tcase 'M4V':\n\t\t\t\tcase 'M4VH':\n\t\t\t\tcase 'M4VP':\n\t\t\t\t\treturn {ext: 'm4v', mime: 'video/x-m4v'};\n\t\t\t\tcase 'M4P':\n\t\t\t\t\treturn {ext: 'm4p', mime: 'video/mp4'};\n\t\t\t\tcase 'M4B':\n\t\t\t\t\treturn {ext: 'm4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'M4A':\n\t\t\t\t\treturn {ext: 'm4a', mime: 'audio/x-m4a'};\n\t\t\t\tcase 'F4V':\n\t\t\t\t\treturn {ext: 'f4v', mime: 'video/mp4'};\n\t\t\t\tcase 'F4P':\n\t\t\t\t\treturn {ext: 'f4p', mime: 'video/mp4'};\n\t\t\t\tcase 'F4A':\n\t\t\t\t\treturn {ext: 'f4a', mime: 'audio/mp4'};\n\t\t\t\tcase 'F4B':\n\t\t\t\t\treturn {ext: 'f4b', mime: 'audio/mp4'};\n\t\t\t\tcase 'crx':\n\t\t\t\t\treturn {ext: 'cr3', mime: 'image/x-canon-cr3'};\n\t\t\t\tdefault:\n\t\t\t\t\tif (brandMajor.startsWith('3g')) {\n\t\t\t\t\t\tif (brandMajor.startsWith('3g2')) {\n\t\t\t\t\t\t\treturn {ext: '3g2', mime: 'video/3gpp2'};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {ext: '3gp', mime: 'video/3gpp'};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {ext: 'mp4', mime: 'video/mp4'};\n\t\t\t}\n\t\t}\n\n\t\t// -- 10-byte signatures --\n\n\t\tif (this.checkString('REGEDIT4\\r\\n')) {\n\t\t\treturn {\n\t\t\t\text: 'reg',\n\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t};\n\t\t}\n\n\t\t// -- 12-byte signatures --\n\n\t\t// RIFF file format which might be AVI, WAV, QCP, etc\n\t\tif (this.check([0x52, 0x49, 0x46, 0x46])) {\n\t\t\tif (this.checkString('WEBP', {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webp',\n\t\t\t\t\tmime: 'image/webp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'avi',\n\t\t\t\t\tmime: 'video/vnd.avi',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'wav',\n\t\t\t\t\tmime: 'audio/wav',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// QLCM, QCP file\n\t\t\tif (this.check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'qcp',\n\t\t\t\t\tmime: 'audio/qcelp',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {\n\t\t\treturn {\n\t\t\t\text: 'rw2',\n\t\t\t\tmime: 'image/x-panasonic-rw2',\n\t\t\t};\n\t\t}\n\n\t\t// ASF_Header_Object first 80 bytes\n\t\tif (this.check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t\treturn detectAsf(tokenizer);\n\t\t}\n\n\t\tif (this.check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t\treturn {\n\t\t\t\text: 'ktx',\n\t\t\t\tmime: 'image/ktx',\n\t\t\t};\n\t\t}\n\n\t\tif ((this.check([0x7E, 0x10, 0x04]) || this.check([0x7E, 0x18, 0x04])) && this.check([0x30, 0x4D, 0x49, 0x45], {offset: 4})) {\n\t\t\treturn {\n\t\t\t\text: 'mie',\n\t\t\t\tmime: 'application/x-mie',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {offset: 2})) {\n\t\t\treturn {\n\t\t\t\text: 'shp',\n\t\t\t\tmime: 'application/x-esri-shape',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0x4F, 0xFF, 0x51])) {\n\t\t\treturn {\n\t\t\t\text: 'j2c',\n\t\t\t\tmime: 'image/j2c',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t\t// JPEG-2000 family\n\n\t\t\tawait tokenizer.ignore(20);\n\t\t\tconst type = await tokenizer.readToken(new Token.StringType(4, 'ascii'));\n\t\t\tswitch (type) {\n\t\t\t\tcase 'jp2 ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jp2',\n\t\t\t\t\t\tmime: 'image/jp2',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpx ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpx',\n\t\t\t\t\t\tmime: 'image/jpx',\n\t\t\t\t\t};\n\t\t\t\tcase 'jpm ':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'jpm',\n\t\t\t\t\t\tmime: 'image/jpm',\n\t\t\t\t\t};\n\t\t\t\tcase 'mjp2':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'mj2',\n\t\t\t\t\t\tmime: 'image/mj2',\n\t\t\t\t\t};\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0xFF, 0x0A])\n\t\t\t|| this.check([0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'jxl',\n\t\t\t\tmime: 'image/jxl',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFE, 0xFF])) { // UTF-16-BOM-BE\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding: 'utf-16be'})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some unknown text based format\n\t\t}\n\n\t\tif (this.check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\t\t// Detected Microsoft Compound File Binary File (MS-CFB) Format.\n\t\t\treturn {\n\t\t\t\text: 'cfb',\n\t\t\t\tmime: 'application/x-cfb',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 32 to 256.\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\tif (this.check([0x61, 0x63, 0x73, 0x70], {offset: 36})) {\n\t\t\treturn {\n\t\t\t\text: 'icc',\n\t\t\t\tmime: 'application/vnd.iccprofile',\n\t\t\t};\n\t\t}\n\n\t\t// ACE: requires 14 bytes in the buffer\n\t\tif (this.checkString('**ACE', {offset: 7}) && this.checkString('**', {offset: 12})) {\n\t\t\treturn {\n\t\t\t\text: 'ace',\n\t\t\t\tmime: 'application/x-ace-compressed',\n\t\t\t};\n\t\t}\n\n\t\t// -- 15-byte signatures --\n\n\t\tif (this.checkString('BEGIN:')) {\n\t\t\tif (this.checkString('VCARD', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'vcf',\n\t\t\t\t\tmime: 'text/vcard',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('VCALENDAR', {offset: 6})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'ics',\n\t\t\t\t\tmime: 'text/calendar',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// `raf` is here just to keep all the raw image detectors together.\n\t\tif (this.checkString('FUJIFILMCCD-RAW')) {\n\t\t\treturn {\n\t\t\t\text: 'raf',\n\t\t\t\tmime: 'image/x-fujifilm-raf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Extended Module:')) {\n\t\t\treturn {\n\t\t\t\text: 'xm',\n\t\t\t\tmime: 'audio/x-xm',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Creative Voice File')) {\n\t\t\treturn {\n\t\t\t\text: 'voc',\n\t\t\t\tmime: 'audio/x-voc',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x04, 0x00, 0x00, 0x00]) && this.buffer.length >= 16) { // Rough & quick check Pickle/ASAR\n\t\t\tconst jsonSize = new DataView(this.buffer.buffer).getUint32(12, true);\n\n\t\t\tif (jsonSize > 12 && this.buffer.length >= jsonSize + 16) {\n\t\t\t\ttry {\n\t\t\t\t\tconst header = new TextDecoder().decode(this.buffer.subarray(16, jsonSize + 16));\n\t\t\t\t\tconst json = JSON.parse(header);\n\t\t\t\t\t// Check if Pickle is ASAR\n\t\t\t\t\tif (json.files) { // Final check, assuring Pickle/ASAR format\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'asar',\n\t\t\t\t\t\t\tmime: 'application/x-asar',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t}\n\n\t\tif (this.check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\t\treturn {\n\t\t\t\text: 'mxf',\n\t\t\t\tmime: 'application/mxf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('SCRM', {offset: 44})) {\n\t\t\treturn {\n\t\t\t\text: 's3m',\n\t\t\t\tmime: 'audio/x-s3m',\n\t\t\t};\n\t\t}\n\n\t\t// Raw MPEG-2 transport stream (188-byte packets)\n\t\tif (this.check([0x47]) && this.check([0x47], {offset: 188})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\t// Blu-ray Disc Audio-Video (BDAV) MPEG-2 transport stream has 4-byte TP_extra_header before each 188-byte packet\n\t\tif (this.check([0x47], {offset: 4}) && this.check([0x47], {offset: 196})) {\n\t\t\treturn {\n\t\t\t\text: 'mts',\n\t\t\t\tmime: 'video/mp2t',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\t\treturn {\n\t\t\t\text: 'mobi',\n\t\t\t\tmime: 'application/x-mobipocket-ebook',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\t\treturn {\n\t\t\t\text: 'dcm',\n\t\t\t\tmime: 'application/dicom',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n\t\t\treturn {\n\t\t\t\text: 'lnk',\n\t\t\t\tmime: 'application/x-ms-shortcut', // Informal, used by freedesktop.org shared-mime-info\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'alias',\n\t\t\t\tmime: 'application/x-ft-apple.alias',\n\t\t\t};\n\t\t}\n\n\t\tif (this.checkString('Kaydara FBX Binary \\u0000')) {\n\t\t\treturn {\n\t\t\t\text: 'fbx',\n\t\t\t\tmime: 'application/x-ft-fbx',\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tthis.check([0x4C, 0x50], {offset: 34})\n\t\t\t&& (\n\t\t\t\tthis.check([0x00, 0x00, 0x01], {offset: 8})\n\t\t\t\t|| this.check([0x01, 0x00, 0x02], {offset: 8})\n\t\t\t\t|| this.check([0x02, 0x00, 0x02], {offset: 8})\n\t\t\t)\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'eot',\n\t\t\t\tmime: 'application/vnd.ms-fontobject',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {\n\t\t\treturn {\n\t\t\t\text: 'indd',\n\t\t\t\tmime: 'application/x-indesign',\n\t\t\t};\n\t\t}\n\n\t\t// -- 16-byte signatures --\n\n\t\t// JMP files - check for both Little Endian and Big Endian signatures\n\t\tif (this.check([0xFF, 0xFF, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00])\n\t\t\t|| this.check([0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01])) {\n\t\t\treturn {\n\t\t\t\text: 'jmp',\n\t\t\t\tmime: 'application/x-jmp-data',\n\t\t\t};\n\t\t}\n\n\t\t// Increase sample size from 256 to 512\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t\t// Requires a buffer size of 512 bytes\n\t\tif ((this.checkString('ustar', {offset: 257}) && (this.checkString('\\0', {offset: 262}) || this.checkString(' ', {offset: 262})))\n\t\t\t|| (this.check([0, 0, 0, 0, 0, 0], {offset: 257}) && tarHeaderChecksumMatches(this.buffer))) {\n\t\t\treturn {\n\t\t\t\text: 'tar',\n\t\t\t\tmime: 'application/x-tar',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0xFF, 0xFE])) { // UTF-16-BOM-LE\n\t\t\tconst encoding = 'utf-16le';\n\t\t\tif (this.checkString('<?xml ', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'xml',\n\t\t\t\t\tmime: 'application/xml',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.check([0xFF, 0x0E], {offset: 2}) && this.checkString('SketchUp Model', {offset: 4, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'skp',\n\t\t\t\t\tmime: 'application/vnd.sketchup.skp',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.checkString('Windows Registry Editor Version 5.00\\r\\n', {offset: 2, encoding})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'reg',\n\t\t\t\t\tmime: 'application/x-ms-regedit',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn undefined; // Some text based format\n\t\t}\n\n\t\tif (this.checkString('-----BEGIN PGP MESSAGE-----')) {\n\t\t\treturn {\n\t\t\t\text: 'pgp',\n\t\t\t\tmime: 'application/pgp-encrypted',\n\t\t\t};\n\t\t}\n\t};\n\t// Detections with limited supporting data, resulting in a higher likelihood of false positives\n\tdetectImprecise = async tokenizer => {\n\t\tthis.buffer = new Uint8Array(reasonableDetectionSizeInBytes);\n\t\tconst fileSize = getKnownFileSizeOrMaximum(tokenizer.fileInfo.size);\n\n\t\t// Read initial sample size of 8 bytes\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(8, fileSize), mayBeLess: true});\n\n\t\tif (\n\t\t\tthis.check([0x0, 0x0, 0x1, 0xBA])\n\t\t\t|| this.check([0x0, 0x0, 0x1, 0xB3])\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mpg',\n\t\t\t\tmime: 'video/mpeg',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ttf',\n\t\t\t\tmime: 'font/ttf',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x01, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ico',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\tif (this.check([0x00, 0x00, 0x02, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'cur',\n\t\t\t\tmime: 'image/x-icon',\n\t\t\t};\n\t\t}\n\n\t\t// Adjust buffer to `mpegOffsetTolerance`\n\t\tawait tokenizer.peekBuffer(this.buffer, {length: Math.min(2 + this.options.mpegOffsetTolerance, fileSize), mayBeLess: true});\n\n\t\t// Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)\n\t\tif (this.buffer.length >= (2 + this.options.mpegOffsetTolerance)) {\n\t\t\tfor (let depth = 0; depth <= this.options.mpegOffsetTolerance; ++depth) {\n\t\t\t\tconst type = this.scanMpeg(depth);\n\t\t\t\tif (type) {\n\t\t\t\t\treturn type;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tasync readTiffTag(bigEndian) {\n\t\tconst tagId = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tawait this.tokenizer.ignore(10);\n\t\tswitch (tagId) {\n\t\t\tcase 50_341:\n\t\t\t\treturn {\n\t\t\t\t\text: 'arw',\n\t\t\t\t\tmime: 'image/x-sony-arw',\n\t\t\t\t};\n\t\t\tcase 50_706:\n\t\t\t\treturn {\n\t\t\t\t\text: 'dng',\n\t\t\t\t\tmime: 'image/x-adobe-dng',\n\t\t\t\t};\n\t\t\tdefault:\n\t\t}\n\t}\n\n\tasync readTiffIFD(bigEndian) {\n\t\tconst numberOfTags = await this.tokenizer.readToken(bigEndian ? Token.UINT16_BE : Token.UINT16_LE);\n\t\tif (numberOfTags > maximumTiffTagCount) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\thasUnknownFileSize(this.tokenizer)\n\t\t\t&& (2 + (numberOfTags * 12)) > maximumTiffIfdOffsetInBytes\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let n = 0; n < numberOfTags; ++n) {\n\t\t\tconst fileType = await this.readTiffTag(bigEndian);\n\t\t\tif (fileType) {\n\t\t\t\treturn fileType;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync readTiffHeader(bigEndian) {\n\t\tconst tiffFileType = {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff',\n\t\t};\n\n\t\tconst version = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 2);\n\t\tconst ifdOffset = (bigEndian ? Token.UINT32_BE : Token.UINT32_LE).get(this.buffer, 4);\n\n\t\tif (version === 42) {\n\t\t\t// TIFF file header\n\t\t\tif (ifdOffset >= 6) {\n\t\t\t\tif (this.checkString('CR', {offset: 8})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'cr2',\n\t\t\t\t\t\tmime: 'image/x-canon-cr2',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (ifdOffset >= 8) {\n\t\t\t\t\tconst someId1 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 8);\n\t\t\t\t\tconst someId2 = (bigEndian ? Token.UINT16_BE : Token.UINT16_LE).get(this.buffer, 10);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(someId1 === 0x1C && someId2 === 0xFE)\n\t\t\t\t\t\t|| (someId1 === 0x1F && someId2 === 0x0B)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\text: 'nef',\n\t\t\t\t\t\t\tmime: 'image/x-nikon-nef',\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\thasUnknownFileSize(this.tokenizer)\n\t\t\t\t&& ifdOffset > maximumTiffStreamIfdOffsetInBytes\n\t\t\t) {\n\t\t\t\treturn tiffFileType;\n\t\t\t}\n\n\t\t\tconst maximumTiffOffset = hasUnknownFileSize(this.tokenizer) ? maximumTiffIfdOffsetInBytes : this.tokenizer.fileInfo.size;\n\n\t\t\ttry {\n\t\t\t\tawait safeIgnore(this.tokenizer, ifdOffset, {\n\t\t\t\t\tmaximumLength: maximumTiffOffset,\n\t\t\t\t\treason: 'TIFF IFD offset',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tlet fileType;\n\t\t\ttry {\n\t\t\t\tfileType = await this.readTiffIFD(bigEndian);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof strtok3.EndOfStreamError) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn fileType ?? tiffFileType;\n\t\t}\n\n\t\tif (version === 43) {\t// Big TIFF file header\n\t\t\treturn tiffFileType;\n\t\t}\n\t}\n\n\t/**\n\tScan check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE).\n\n\t@param offset - Offset to scan for sync-preamble.\n\t@returns {{ext: string, mime: string}}\n\t*/\n\tscanMpeg(offset) {\n\t\tif (this.check([0xFF, 0xE0], {offset, mask: [0xFF, 0xE0]})) {\n\t\t\tif (this.check([0x10], {offset: offset + 1, mask: [0x16]})) {\n\t\t\t\t// Check for (ADTS) MPEG-2\n\t\t\t\tif (this.check([0x08], {offset: offset + 1, mask: [0x08]})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'aac',\n\t\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Must be (ADTS) MPEG-4\n\t\t\t\treturn {\n\t\t\t\t\text: 'aac',\n\t\t\t\t\tmime: 'audio/aac',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG 1 or 2 Layer 3 header\n\t\t\t// Check for MPEG layer 3\n\t\t\tif (this.check([0x02], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 2\n\t\t\tif (this.check([0x04], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp2',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 1\n\t\t\tif (this.check([0x06], {offset: offset + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp1',\n\t\t\t\t\tmime: 'audio/mpeg',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const supportedExtensions = new Set(extensions);\nexport const supportedMimeTypes = new Set(mimeTypes);\n\nexport async function fileTypeFromFile(path, options) {\n\treturn (new FileTypeParser(options)).fromFile(path);\n}\n", "export { ZipHandler } from './ZipHandler.js';\nexport { GzipHandler } from './GzipHandler.js';\n", "import { StringType, UINT32_LE } from 'token-types';\nimport initDebug from 'debug';\nimport { DataDescriptor, EndOfCentralDirectoryRecordToken, FileHeader, LocalFileHeaderToken, Signature } from \"./ZipToken.js\";\nfunction signatureToArray(signature) {\n const signatureBytes = new Uint8Array(UINT32_LE.len);\n UINT32_LE.put(signatureBytes, 0, signature);\n return signatureBytes;\n}\nconst debug = initDebug('tokenizer:inflate');\nconst syncBufferSize = 256 * 1024;\nconst ddSignatureArray = signatureToArray(Signature.DataDescriptor);\nconst eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory);\nexport class ZipHandler {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n this.syncBuffer = new Uint8Array(syncBufferSize);\n }\n async isZip() {\n return await this.peekSignature() === Signature.LocalFileHeader;\n }\n peekSignature() {\n return this.tokenizer.peekToken(UINT32_LE);\n }\n async findEndOfCentralDirectoryLocator() {\n const randomReadTokenizer = this.tokenizer;\n const chunkLength = Math.min(16 * 1024, randomReadTokenizer.fileInfo.size);\n const buffer = this.syncBuffer.subarray(0, chunkLength);\n await this.tokenizer.readBuffer(buffer, { position: randomReadTokenizer.fileInfo.size - chunkLength });\n // Search the buffer from end to beginning for EOCD signature\n // const signature = 0x06054b50;\n for (let i = buffer.length - 4; i >= 0; i--) {\n // Compare 4 bytes directly without calling readUInt32LE\n if (buffer[i] === eocdSignatureBytes[0] &&\n buffer[i + 1] === eocdSignatureBytes[1] &&\n buffer[i + 2] === eocdSignatureBytes[2] &&\n buffer[i + 3] === eocdSignatureBytes[3]) {\n return randomReadTokenizer.fileInfo.size - chunkLength + i;\n }\n }\n return -1;\n }\n async readCentralDirectory() {\n if (!this.tokenizer.supportsRandomAccess()) {\n debug('Cannot reading central-directory without random-read support');\n return;\n }\n debug('Reading central-directory...');\n const pos = this.tokenizer.position;\n const offset = await this.findEndOfCentralDirectoryLocator();\n if (offset > 0) {\n debug('Central-directory 32-bit signature found');\n const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset);\n const files = [];\n this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd);\n for (let n = 0; n < eocdHeader.nrOfEntriesOfSize; ++n) {\n const entry = await this.tokenizer.readToken(FileHeader);\n if (entry.signature !== Signature.CentralFileHeader) {\n throw new Error('Expected Central-File-Header signature');\n }\n entry.filename = await this.tokenizer.readToken(new StringType(entry.filenameLength, 'utf-8'));\n await this.tokenizer.ignore(entry.extraFieldLength);\n await this.tokenizer.ignore(entry.fileCommentLength);\n files.push(entry);\n debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`);\n }\n this.tokenizer.setPosition(pos);\n return files;\n }\n this.tokenizer.setPosition(pos);\n }\n async unzip(fileCb) {\n const entries = await this.readCentralDirectory();\n if (entries) {\n // Use Central Directory to iterate over files\n return this.iterateOverCentralDirectory(entries, fileCb);\n }\n // Scan Zip files for local-file-header\n let stop = false;\n do {\n const zipHeader = await this.readLocalFileHeader();\n if (!zipHeader)\n break;\n const next = fileCb(zipHeader);\n stop = !!next.stop;\n let fileData;\n await this.tokenizer.ignore(zipHeader.extraFieldLength);\n if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) {\n const chunks = [];\n let len = syncBufferSize;\n debug('Compressed-file-size unknown, scanning for next data-descriptor-signature....');\n let nextHeaderIndex = -1;\n while (nextHeaderIndex < 0 && len === syncBufferSize) {\n len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true });\n nextHeaderIndex = indexOf(this.syncBuffer.subarray(0, len), ddSignatureArray);\n const size = nextHeaderIndex >= 0 ? nextHeaderIndex : len;\n if (next.handler) {\n const data = new Uint8Array(size);\n await this.tokenizer.readBuffer(data);\n chunks.push(data);\n }\n else {\n // Move position to the next header if found, skip the whole buffer otherwise\n await this.tokenizer.ignore(size);\n }\n }\n debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`);\n if (next.handler) {\n await this.inflate(zipHeader, mergeArrays(chunks), next.handler);\n }\n }\n else {\n if (next.handler) {\n debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`);\n fileData = new Uint8Array(zipHeader.compressedSize);\n await this.tokenizer.readBuffer(fileData);\n await this.inflate(zipHeader, fileData, next.handler);\n }\n else {\n debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`);\n await this.tokenizer.ignore(zipHeader.compressedSize);\n }\n }\n debug(`Reading data-descriptor at pos=${this.tokenizer.position}`);\n if (zipHeader.dataDescriptor) {\n // await this.tokenizer.ignore(DataDescriptor.len);\n const dataDescriptor = await this.tokenizer.readToken(DataDescriptor);\n if (dataDescriptor.signature !== 0x08074b50) {\n throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - DataDescriptor.len}`);\n }\n }\n } while (!stop);\n }\n async iterateOverCentralDirectory(entries, fileCb) {\n for (const fileHeader of entries) {\n const next = fileCb(fileHeader);\n if (next.handler) {\n this.tokenizer.setPosition(fileHeader.relativeOffsetOfLocalHeader);\n const zipHeader = await this.readLocalFileHeader();\n if (zipHeader) {\n await this.tokenizer.ignore(zipHeader.extraFieldLength);\n const fileData = new Uint8Array(fileHeader.compressedSize);\n await this.tokenizer.readBuffer(fileData);\n await this.inflate(zipHeader, fileData, next.handler);\n }\n }\n if (next.stop)\n break;\n }\n }\n async inflate(zipHeader, fileData, cb) {\n if (zipHeader.compressedMethod === 0) {\n // Stored (uncompressed)\n return cb(fileData);\n }\n if (zipHeader.compressedMethod !== 8) {\n throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`);\n }\n debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`);\n const uncompressedData = await ZipHandler.decompressDeflateRaw(fileData);\n return cb(uncompressedData);\n }\n static async decompressDeflateRaw(data) {\n // Wrap Uint8Array in a ReadableStream without copying\n const input = new ReadableStream({\n start(controller) {\n controller.enqueue(data);\n controller.close();\n }\n });\n const ds = new DecompressionStream(\"deflate-raw\");\n const output = input.pipeThrough(ds);\n try {\n // Collect decompressed bytes from the output stream\n const response = new Response(output);\n const buffer = await response.arrayBuffer();\n return new Uint8Array(buffer);\n }\n catch (err) {\n // Provide ZIP-specific error context\n const message = err instanceof Error\n ? `Failed to deflate ZIP entry: ${err.message}`\n : \"Unknown decompression error in ZIP entry\";\n throw new TypeError(message);\n }\n }\n async readLocalFileHeader() {\n const signature = await this.tokenizer.peekToken(UINT32_LE);\n if (signature === Signature.LocalFileHeader) {\n const header = await this.tokenizer.readToken(LocalFileHeaderToken);\n header.filename = await this.tokenizer.readToken(new StringType(header.filenameLength, 'utf-8'));\n return header;\n }\n if (signature === Signature.CentralFileHeader) {\n return false;\n }\n if (signature === 0xE011CFD0) {\n throw new Error('Encrypted ZIP');\n }\n throw new Error('Unexpected signature');\n }\n}\nfunction indexOf(buffer, portion) {\n const bufferLength = buffer.length;\n const portionLength = portion.length;\n // Return -1 if the portion is longer than the buffer\n if (portionLength > bufferLength)\n return -1;\n // Search for the portion in the buffer\n for (let i = 0; i <= bufferLength - portionLength; i++) {\n let found = true;\n for (let j = 0; j < portionLength; j++) {\n if (buffer[i + j] !== portion[j]) {\n found = false;\n break;\n }\n }\n if (found) {\n return i; // Return the starting offset\n }\n }\n return -1; // Not found\n}\nfunction mergeArrays(chunks) {\n // Concatenate chunks into a single Uint8Array\n const totalLength = chunks.reduce((acc, curr) => acc + curr.length, 0);\n const mergedArray = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n mergedArray.set(chunk, offset);\n offset += chunk.length;\n }\n return mergedArray;\n}\n", "/**\n * Ref https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT\n */\nimport { UINT16_LE, UINT32_LE } from \"token-types\";\nexport const Signature = {\n LocalFileHeader: 0x04034b50,\n DataDescriptor: 0x08074b50,\n CentralFileHeader: 0x02014b50,\n EndOfCentralDirectory: 0x06054b50\n};\nexport const DataDescriptor = {\n get(array) {\n return {\n signature: UINT32_LE.get(array, 0),\n compressedSize: UINT32_LE.get(array, 8),\n uncompressedSize: UINT32_LE.get(array, 12),\n };\n }, len: 16\n};\n/**\n * First part of the ZIP Local File Header\n * Offset | Bytes| Description\n * -------|------+-------------------------------------------------------------------\n * 0 | 4 | Signature (0x04034b50)\n * 4 | 2 | Minimum version needed to extract\n * 6 | 2 | Bit flag\n * 8 | 2 | Compression method\n * 10 | 2 | File last modification time (MS-DOS format)\n * 12 | 2 | File last modification date (MS-DOS format)\n * 14 | 4 | CRC-32 of uncompressed data\n * 18 | 4 | Compressed size\n * 22 | 4 | Uncompressed size\n * 26 | 2 | File name length (n)\n * 28 | 2 | Extra field length (m)\n * 30 | n | File name\n * 30 + n | m | Extra field\n */\nexport const LocalFileHeaderToken = {\n get(array) {\n const flags = UINT16_LE.get(array, 6);\n return {\n signature: UINT32_LE.get(array, 0),\n minVersion: UINT16_LE.get(array, 4),\n dataDescriptor: !!(flags & 0x0008),\n compressedMethod: UINT16_LE.get(array, 8),\n compressedSize: UINT32_LE.get(array, 18),\n uncompressedSize: UINT32_LE.get(array, 22),\n filenameLength: UINT16_LE.get(array, 26),\n extraFieldLength: UINT16_LE.get(array, 28),\n filename: null\n };\n }, len: 30\n};\n/**\n * 4.3.16 End of central directory record:\n * end of central dir signature (0x06064b50) 4 bytes\n * number of this disk 2 bytes\n * number of the disk with the start of the central directory 2 bytes\n * total number of entries in the central directory on this disk 2 bytes\n * total number of entries in the size of the central directory 2 bytes\n * sizeOfTheCentralDirectory 4 bytes\n * offset of start of central directory with respect to the starting disk number 4 bytes\n * .ZIP file comment length 2 bytes\n * .ZIP file comment (variable size)\n */\nexport const EndOfCentralDirectoryRecordToken = {\n get(array) {\n return {\n signature: UINT32_LE.get(array, 0),\n nrOfThisDisk: UINT16_LE.get(array, 4),\n nrOfThisDiskWithTheStart: UINT16_LE.get(array, 6),\n nrOfEntriesOnThisDisk: UINT16_LE.get(array, 8),\n nrOfEntriesOfSize: UINT16_LE.get(array, 10),\n sizeOfCd: UINT32_LE.get(array, 12),\n offsetOfStartOfCd: UINT32_LE.get(array, 16),\n zipFileCommentLength: UINT16_LE.get(array, 20),\n };\n }, len: 22\n};\n/**\n * File header:\n * central file header signature 4 bytes 0 (0x02014b50)\n * version made by 2 bytes 4\n * version needed to extract 2 bytes 6\n * general purpose bit flag 2 bytes 8\n * compression method 2 bytes 10\n * last mod file time 2 bytes 12\n * last mod file date 2 bytes 14\n * crc-32 4 bytes 16\n * compressed size 4 bytes 20\n * uncompressed size 4 bytes 24\n * file name length 2 bytes 28\n * extra field length 2 bytes 30\n * file comment length 2 bytes 32\n * disk number start 2 bytes 34\n * internal file attributes 2 bytes 36\n * external file attributes 4 bytes 38\n * relative offset of local header 4 bytes 42\n */\nexport const FileHeader = {\n get(array) {\n const flags = UINT16_LE.get(array, 8);\n return {\n signature: UINT32_LE.get(array, 0),\n minVersion: UINT16_LE.get(array, 6),\n dataDescriptor: !!(flags & 0x0008),\n compressedMethod: UINT16_LE.get(array, 10),\n compressedSize: UINT32_LE.get(array, 20),\n uncompressedSize: UINT32_LE.get(array, 24),\n filenameLength: UINT16_LE.get(array, 28),\n extraFieldLength: UINT16_LE.get(array, 30),\n fileCommentLength: UINT16_LE.get(array, 32),\n relativeOffsetOfLocalHeader: UINT32_LE.get(array, 42),\n filename: null\n };\n }, len: 46\n};\n", "export class GzipHandler {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n }\n inflate() {\n const tokenizer = this.tokenizer;\n return new ReadableStream({\n async pull(controller) {\n const buffer = new Uint8Array(1024);\n const size = await tokenizer.readBuffer(buffer, { mayBeLess: true });\n if (size === 0) {\n controller.close();\n return;\n }\n controller.enqueue(buffer.subarray(0, size));\n }\n }).pipeThrough(new DecompressionStream(\"gzip\"));\n }\n}\n", "import {StringType} from 'token-types';\n\nexport function stringToBytes(string, encoding) {\n\tif (encoding === 'utf-16le') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push(code & 0xFF, (code >> 8) & 0xFF); // High byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\tif (encoding === 'utf-16be') {\n\t\tconst bytes = [];\n\t\tfor (let index = 0; index < string.length; index++) {\n\t\t\tconst code = string.charCodeAt(index); // eslint-disable-line unicorn/prefer-code-point\n\t\t\tbytes.push((code >> 8) & 0xFF, code & 0xFF); // Low byte\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\treturn [...string].map(character => character.charCodeAt(0)); // eslint-disable-line unicorn/prefer-code-point\n}\n\n/**\nChecks whether the TAR checksum is valid.\n\n@param {Uint8Array} arrayBuffer - The TAR header `[offset ... offset + 512]`.\n@param {number} offset - TAR header offset.\n@returns {boolean} `true` if the TAR checksum is valid, otherwise `false`.\n*/\nexport function tarHeaderChecksumMatches(arrayBuffer, offset = 0) {\n\tconst readSum = Number.parseInt(new StringType(6).get(arrayBuffer, 148).replace(/\\0.*$/v, '').trim(), 8); // Read sum in header\n\tif (Number.isNaN(readSum)) {\n\t\treturn false;\n\t}\n\n\tlet sum = 8 * 0x20; // Initialize signed bit sum\n\n\tfor (let index = offset; index < offset + 148; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\tfor (let index = offset + 156; index < offset + 512; index++) {\n\t\tsum += arrayBuffer[index];\n\t}\n\n\treturn readSum === sum;\n}\n\n/**\nID3 UINT32 sync-safe tokenizer token.\n28 bits (representing up to 256MB) integer, the msb is 0 to avoid \"false syncsignals\".\n*/\nexport const uint32SyncSafeToken = {\n\tget: (buffer, offset) => (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2] & 0x7F) << 7) | ((buffer[offset + 1] & 0x7F) << 14) | ((buffer[offset] & 0x7F) << 21),\n\tlen: 4,\n};\n", "// MIME media subtypes prefixed with `x-ft-` are custom and defined by us. They are neither formally registered with IANA nor based on any informal conventions.\n\nexport const extensions = [\n\t'jpg',\n\t'png',\n\t'apng',\n\t'gif',\n\t'webp',\n\t'flif',\n\t'xcf',\n\t'cr2',\n\t'cr3',\n\t'orf',\n\t'arw',\n\t'dng',\n\t'nef',\n\t'rw2',\n\t'raf',\n\t'tif',\n\t'bmp',\n\t'icns',\n\t'jxr',\n\t'psd',\n\t'indd',\n\t'zip',\n\t'tar',\n\t'rar',\n\t'gz',\n\t'bz2',\n\t'7z',\n\t'dmg',\n\t'mp4',\n\t'mid',\n\t'mkv',\n\t'webm',\n\t'mov',\n\t'avi',\n\t'mpg',\n\t'mp2',\n\t'mp3',\n\t'm4a',\n\t'oga',\n\t'ogg',\n\t'ogv',\n\t'opus',\n\t'flac',\n\t'wav',\n\t'spx',\n\t'amr',\n\t'pdf',\n\t'epub',\n\t'elf',\n\t'macho',\n\t'exe',\n\t'swf',\n\t'rtf',\n\t'wasm',\n\t'woff',\n\t'woff2',\n\t'eot',\n\t'ttf',\n\t'otf',\n\t'ttc',\n\t'ico',\n\t'flv',\n\t'ps',\n\t'xz',\n\t'sqlite',\n\t'nes',\n\t'crx',\n\t'xpi',\n\t'cab',\n\t'deb',\n\t'ar',\n\t'rpm',\n\t'Z',\n\t'lz',\n\t'cfb',\n\t'mxf',\n\t'mts',\n\t'blend',\n\t'bpg',\n\t'docx',\n\t'pptx',\n\t'xlsx',\n\t'3gp',\n\t'3g2',\n\t'j2c',\n\t'jp2',\n\t'jpm',\n\t'jpx',\n\t'mj2',\n\t'aif',\n\t'qcp',\n\t'odt',\n\t'ods',\n\t'odp',\n\t'xml',\n\t'mobi',\n\t'heic',\n\t'cur',\n\t'ktx',\n\t'ape',\n\t'wv',\n\t'dcm',\n\t'ics',\n\t'glb',\n\t'pcap',\n\t'dsf',\n\t'lnk',\n\t'alias',\n\t'voc',\n\t'ac3',\n\t'm4v',\n\t'm4p',\n\t'm4b',\n\t'f4v',\n\t'f4p',\n\t'f4b',\n\t'f4a',\n\t'mie',\n\t'asf',\n\t'ogm',\n\t'ogx',\n\t'mpc',\n\t'arrow',\n\t'shp',\n\t'aac',\n\t'mp1',\n\t'it',\n\t's3m',\n\t'xm',\n\t'skp',\n\t'avif',\n\t'eps',\n\t'lzh',\n\t'pgp',\n\t'asar',\n\t'stl',\n\t'chm',\n\t'3mf',\n\t'zst',\n\t'jxl',\n\t'vcf',\n\t'jls',\n\t'pst',\n\t'dwg',\n\t'parquet',\n\t'class',\n\t'arj',\n\t'cpio',\n\t'ace',\n\t'avro',\n\t'icc',\n\t'fbx',\n\t'vsdx',\n\t'vtt',\n\t'apk',\n\t'drc',\n\t'lz4',\n\t'potx',\n\t'xltx',\n\t'dotx',\n\t'xltm',\n\t'ott',\n\t'ots',\n\t'otp',\n\t'odg',\n\t'otg',\n\t'xlsm',\n\t'docm',\n\t'dotm',\n\t'potm',\n\t'pptm',\n\t'jar',\n\t'jmp',\n\t'rm',\n\t'sav',\n\t'ppsm',\n\t'ppsx',\n\t'tar.gz',\n\t'reg',\n\t'dat',\n\t'key',\n\t'numbers',\n\t'pages',\n];\n\nexport const mimeTypes = [\n\t'image/jpeg',\n\t'image/png',\n\t'image/gif',\n\t'image/webp',\n\t'image/flif',\n\t'image/x-xcf',\n\t'image/x-canon-cr2',\n\t'image/x-canon-cr3',\n\t'image/tiff',\n\t'image/bmp',\n\t'image/vnd.ms-photo',\n\t'image/vnd.adobe.photoshop',\n\t'application/x-indesign',\n\t'application/epub+zip',\n\t'application/x-xpinstall',\n\t'application/vnd.ms-powerpoint.slideshow.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text',\n\t'application/vnd.oasis.opendocument.spreadsheet',\n\t'application/vnd.oasis.opendocument.presentation',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n\t'application/zip',\n\t'application/x-tar',\n\t'application/x-rar-compressed',\n\t'application/gzip',\n\t'application/x-bzip2',\n\t'application/x-7z-compressed',\n\t'application/x-apple-diskimage',\n\t'application/vnd.apache.arrow.file',\n\t'video/mp4',\n\t'audio/midi',\n\t'video/matroska',\n\t'video/webm',\n\t'video/quicktime',\n\t'video/vnd.avi',\n\t'audio/wav',\n\t'audio/qcelp',\n\t'audio/x-ms-asf',\n\t'video/x-ms-asf',\n\t'application/vnd.ms-asf',\n\t'video/mpeg',\n\t'video/3gpp',\n\t'audio/mpeg',\n\t'audio/mp4', // RFC 4337\n\t'video/ogg',\n\t'audio/ogg',\n\t'audio/ogg; codecs=opus',\n\t'application/ogg',\n\t'audio/flac',\n\t'audio/ape',\n\t'audio/wavpack',\n\t'audio/amr',\n\t'application/pdf',\n\t'application/x-elf',\n\t'application/x-mach-binary',\n\t'application/x-msdownload',\n\t'application/x-shockwave-flash',\n\t'application/rtf',\n\t'application/wasm',\n\t'font/woff',\n\t'font/woff2',\n\t'application/vnd.ms-fontobject',\n\t'font/ttf',\n\t'font/otf',\n\t'font/collection',\n\t'image/x-icon',\n\t'video/x-flv',\n\t'application/postscript',\n\t'application/eps',\n\t'application/x-xz',\n\t'application/x-sqlite3',\n\t'application/x-nintendo-nes-rom',\n\t'application/x-google-chrome-extension',\n\t'application/vnd.ms-cab-compressed',\n\t'application/x-deb',\n\t'application/x-unix-archive',\n\t'application/x-rpm',\n\t'application/x-compress',\n\t'application/lzip',\n\t'application/x-cfb',\n\t'application/x-mie',\n\t'application/mxf',\n\t'video/mp2t',\n\t'application/x-blender',\n\t'image/bpg',\n\t'image/j2c',\n\t'image/jp2',\n\t'image/jpx',\n\t'image/jpm',\n\t'image/mj2',\n\t'audio/aiff',\n\t'application/xml',\n\t'application/x-mobipocket-ebook',\n\t'image/heif',\n\t'image/heif-sequence',\n\t'image/heic',\n\t'image/heic-sequence',\n\t'image/icns',\n\t'image/ktx',\n\t'application/dicom',\n\t'audio/x-musepack',\n\t'text/calendar',\n\t'text/vcard',\n\t'text/vtt',\n\t'model/gltf-binary',\n\t'application/vnd.tcpdump.pcap',\n\t'audio/x-dsf', // Non-standard\n\t'application/x-ms-shortcut', // Informal, used by freedesktop.org shared-mime-info\n\t'application/x-ft-apple.alias',\n\t'audio/x-voc',\n\t'audio/vnd.dolby.dd-raw',\n\t'audio/x-m4a',\n\t'image/apng',\n\t'image/x-olympus-orf',\n\t'image/x-sony-arw',\n\t'image/x-adobe-dng',\n\t'image/x-nikon-nef',\n\t'image/x-panasonic-rw2',\n\t'image/x-fujifilm-raf',\n\t'video/x-m4v',\n\t'video/3gpp2',\n\t'application/x-esri-shape',\n\t'audio/aac',\n\t'audio/x-it',\n\t'audio/x-s3m',\n\t'audio/x-xm',\n\t'video/MP1S',\n\t'video/MP2P',\n\t'application/vnd.sketchup.skp',\n\t'image/avif',\n\t'application/x-lzh-compressed',\n\t'application/pgp-encrypted',\n\t'application/x-asar',\n\t'model/stl',\n\t'application/vnd.ms-htmlhelp',\n\t'model/3mf',\n\t'image/jxl',\n\t'application/zstd',\n\t'image/jls',\n\t'application/vnd.ms-outlook',\n\t'image/vnd.dwg',\n\t'application/vnd.apache.parquet',\n\t'application/java-vm',\n\t'application/x-arj',\n\t'application/x-cpio',\n\t'application/x-ace-compressed',\n\t'application/avro',\n\t'application/vnd.iccprofile',\n\t'application/x-ft-fbx',\n\t'application/vnd.visio',\n\t'application/vnd.android.package-archive',\n\t'application/x-ft-draco',\n\t'application/x-lz4', // Informal, used by freedesktop.org shared-mime-info\n\t'application/vnd.openxmlformats-officedocument.presentationml.template',\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n\t'application/vnd.ms-excel.template.macroenabled.12',\n\t'application/vnd.oasis.opendocument.text-template',\n\t'application/vnd.oasis.opendocument.spreadsheet-template',\n\t'application/vnd.oasis.opendocument.presentation-template',\n\t'application/vnd.oasis.opendocument.graphics',\n\t'application/vnd.oasis.opendocument.graphics-template',\n\t'application/vnd.ms-excel.sheet.macroenabled.12',\n\t'application/vnd.ms-word.document.macroenabled.12',\n\t'application/vnd.ms-word.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.template.macroenabled.12',\n\t'application/vnd.ms-powerpoint.presentation.macroenabled.12',\n\t'application/java-archive',\n\t'application/vnd.rn-realmedia',\n\t'application/x-spss-sav',\n\t'application/x-ms-regedit',\n\t'application/x-ft-windows-registry-hive',\n\t'application/x-jmp-data',\n\t'application/vnd.apple.keynote',\n\t'application/vnd.apple.numbers',\n\t'application/vnd.apple.pages',\n];\n", "export const maximumUntrustedSkipSizeInBytes = 16 * 1024 * 1024;\n\nexport class ParserHardLimitError extends Error {}\n\nexport function getSafeBound(value, maximum, reason) {\n\tif (\n\t\t!Number.isFinite(value)\n\t\t|| value < 0\n\t\t|| value > maximum\n\t) {\n\t\tthrow new ParserHardLimitError(`${reason} has invalid size ${value} (maximum ${maximum} bytes)`);\n\t}\n\n\treturn value;\n}\n\nexport async function safeIgnore(tokenizer, length, {maximumLength = maximumUntrustedSkipSizeInBytes, reason = 'skip'} = {}) {\n\tconst safeLength = getSafeBound(length, maximumLength, reason);\n\tawait tokenizer.ignore(safeLength);\n}\n\nexport async function safeReadBuffer(tokenizer, buffer, options, {maximumLength = buffer.length, reason = 'read'} = {}) {\n\tconst length = options?.length ?? buffer.length;\n\tconst safeLength = getSafeBound(length, maximumLength, reason);\n\treturn tokenizer.readBuffer(buffer, {\n\t\t...options,\n\t\tlength: safeLength,\n\t});\n}\n\nexport function checkBytes(buffer, headers, options) {\n\toptions = {\n\t\toffset: 0,\n\t\t...options,\n\t};\n\n\tfor (const [index, header] of headers.entries()) {\n\t\t// If a bitmask is set\n\t\tif (options.mask) {\n\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\tif (header !== (options.mask[index] & buffer[index + options.offset])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (header !== buffer[index + options.offset]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function hasUnknownFileSize(tokenizer) {\n\tconst fileSize = tokenizer.fileInfo.size;\n\treturn (\n\t\t!Number.isFinite(fileSize)\n\t\t|| fileSize === Number.MAX_SAFE_INTEGER\n\t);\n}\n\nexport function hasExceededUnknownSizeScanBudget(tokenizer, startOffset, maximumBytes) {\n\treturn (\n\t\thasUnknownFileSize(tokenizer)\n\t\t&& tokenizer.position - startOffset > maximumBytes\n\t);\n}\n", "import * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {ZipHandler} from '@tokenizer/inflate';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tParserHardLimitError,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumZipEntrySizeInBytes = 1024 * 1024;\nconst maximumZipEntryCount = 1024;\nconst maximumZipBufferedReadSizeInBytes = (2 ** 31) - 1;\nconst maximumZipTextEntrySizeInBytes = maximumZipEntrySizeInBytes;\n\nconst recoverableZipErrorMessages = new Set([\n\t'Unexpected signature',\n\t'Encrypted ZIP',\n\t'Expected Central-File-Header signature',\n]);\nconst recoverableZipErrorMessagePrefixes = [\n\t'ZIP entry count exceeds ',\n\t'Unsupported ZIP compression method:',\n\t'ZIP entry compressed data exceeds ',\n\t'ZIP entry decompressed data exceeds ',\n\t'Expected data-descriptor-signature at position ',\n];\nconst recoverableZipErrorCodes = new Set([\n\t'Z_BUF_ERROR',\n\t'Z_DATA_ERROR',\n\t'ERR_INVALID_STATE',\n]);\n\nasync function decompressDeflateRawWithLimit(data, {maximumLength = maximumZipEntrySizeInBytes} = {}) {\n\tconst input = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tcontroller.enqueue(data);\n\t\t\tcontroller.close();\n\t\t},\n\t});\n\tconst output = input.pipeThrough(new DecompressionStream('deflate-raw'));\n\tconst reader = output.getReader();\n\tconst chunks = [];\n\tlet totalLength = 0;\n\n\ttry {\n\t\tfor (;;) {\n\t\t\tconst {done, value} = await reader.read();\n\t\t\tif (done) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttotalLength += value.length;\n\t\t\tif (totalLength > maximumLength) {\n\t\t\t\tawait reader.cancel();\n\t\t\t\tthrow new Error(`ZIP entry decompressed data exceeds ${maximumLength} bytes`);\n\t\t\t}\n\n\t\t\tchunks.push(value);\n\t\t}\n\t} finally {\n\t\treader.releaseLock();\n\t}\n\n\tconst uncompressedData = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const chunk of chunks) {\n\t\tuncompressedData.set(chunk, offset);\n\t\toffset += chunk.length;\n\t}\n\n\treturn uncompressedData;\n}\n\nfunction mergeByteChunks(chunks, totalLength) {\n\tconst merged = new Uint8Array(totalLength);\n\tlet offset = 0;\n\n\tfor (const chunk of chunks) {\n\t\tmerged.set(chunk, offset);\n\t\toffset += chunk.length;\n\t}\n\n\treturn merged;\n}\n\nfunction getMaximumZipBufferedReadLength(tokenizer) {\n\tconst fileSize = tokenizer.fileInfo.size;\n\tconst remainingBytes = Number.isFinite(fileSize)\n\t\t? Math.max(0, fileSize - tokenizer.position)\n\t\t: Number.MAX_SAFE_INTEGER;\n\n\treturn Math.min(remainingBytes, maximumZipBufferedReadSizeInBytes);\n}\n\nfunction isRecoverableZipError(error) {\n\tif (error instanceof strtok3.EndOfStreamError) {\n\t\treturn true;\n\t}\n\n\tif (error instanceof ParserHardLimitError) {\n\t\treturn true;\n\t}\n\n\tif (!(error instanceof Error)) {\n\t\treturn false;\n\t}\n\n\tif (recoverableZipErrorMessages.has(error.message)) {\n\t\treturn true;\n\t}\n\n\tif (recoverableZipErrorCodes.has(error.code)) {\n\t\treturn true;\n\t}\n\n\tfor (const prefix of recoverableZipErrorMessagePrefixes) {\n\t\tif (error.message.startsWith(prefix)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction canReadZipEntryForDetection(zipHeader, maximumSize = maximumZipEntrySizeInBytes) {\n\tconst sizes = [zipHeader.compressedSize, zipHeader.uncompressedSize];\n\tfor (const size of sizes) {\n\t\tif (\n\t\t\t!Number.isFinite(size)\n\t\t\t|| size < 0\n\t\t\t|| size > maximumSize\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n// -- iWork helpers --\n\nfunction createIWorkZipDetectionState() {\n\treturn {\n\t\thasDocumentEntry: false,\n\t\thasMasterSlideEntry: false,\n\t\thasTablesEntry: false,\n\t\thasCalculationEngineEntry: false,\n\t};\n}\n\nfunction updateIWorkZipDetectionStateFromFilename(iWorkState, filename) {\n\tif (filename === 'Index/Document.iwa') {\n\t\tiWorkState.hasDocumentEntry = true;\n\t}\n\n\tif (filename.startsWith('Index/MasterSlide')) {\n\t\tiWorkState.hasMasterSlideEntry = true;\n\t}\n\n\tif (filename.startsWith('Index/Tables/')) {\n\t\tiWorkState.hasTablesEntry = true;\n\t}\n\n\tif (filename === 'Index/CalculationEngine.iwa') {\n\t\tiWorkState.hasCalculationEngineEntry = true;\n\t}\n}\n\nfunction getIWorkFileTypeFromZipEntries(iWorkState) {\n\tif (!iWorkState.hasDocumentEntry) {\n\t\treturn;\n\t}\n\n\tif (iWorkState.hasMasterSlideEntry) {\n\t\treturn {ext: 'key', mime: 'application/vnd.apple.keynote'};\n\t}\n\n\tif (iWorkState.hasTablesEntry) {\n\t\treturn {ext: 'numbers', mime: 'application/vnd.apple.numbers'};\n\t}\n\n\treturn {ext: 'pages', mime: 'application/vnd.apple.pages'};\n}\n\n// -- OpenXML helpers --\n\nfunction getFileTypeFromMimeType(mimeType) {\n\tmimeType = mimeType.toLowerCase();\n\tswitch (mimeType) {\n\t\tcase 'application/epub+zip':\n\t\t\treturn {ext: 'epub', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.text':\n\t\t\treturn {ext: 'odt', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.text-template':\n\t\t\treturn {ext: 'ott', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet':\n\t\t\treturn {ext: 'ods', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.spreadsheet-template':\n\t\t\treturn {ext: 'ots', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.presentation':\n\t\t\treturn {ext: 'odp', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.presentation-template':\n\t\t\treturn {ext: 'otp', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.graphics':\n\t\t\treturn {ext: 'odg', mime: mimeType};\n\t\tcase 'application/vnd.oasis.opendocument.graphics-template':\n\t\t\treturn {ext: 'otg', mime: mimeType};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.slideshow':\n\t\t\treturn {ext: 'ppsx', mime: mimeType};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\treturn {ext: 'xlsx', mime: mimeType};\n\t\tcase 'application/vnd.ms-excel.sheet.macroenabled':\n\t\t\treturn {ext: 'xlsm', mime: 'application/vnd.ms-excel.sheet.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.template':\n\t\t\treturn {ext: 'xltx', mime: mimeType};\n\t\tcase 'application/vnd.ms-excel.template.macroenabled':\n\t\t\treturn {ext: 'xltm', mime: 'application/vnd.ms-excel.template.macroenabled.12'};\n\t\tcase 'application/vnd.ms-powerpoint.slideshow.macroenabled':\n\t\t\treturn {ext: 'ppsm', mime: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\treturn {ext: 'docx', mime: mimeType};\n\t\tcase 'application/vnd.ms-word.document.macroenabled':\n\t\t\treturn {ext: 'docm', mime: 'application/vnd.ms-word.document.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.template':\n\t\t\treturn {ext: 'dotx', mime: mimeType};\n\t\tcase 'application/vnd.ms-word.template.macroenabledtemplate':\n\t\t\treturn {ext: 'dotm', mime: 'application/vnd.ms-word.template.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.template':\n\t\t\treturn {ext: 'potx', mime: mimeType};\n\t\tcase 'application/vnd.ms-powerpoint.template.macroenabled':\n\t\t\treturn {ext: 'potm', mime: 'application/vnd.ms-powerpoint.template.macroenabled.12'};\n\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\treturn {ext: 'pptx', mime: mimeType};\n\t\tcase 'application/vnd.ms-powerpoint.presentation.macroenabled':\n\t\t\treturn {ext: 'pptm', mime: 'application/vnd.ms-powerpoint.presentation.macroenabled.12'};\n\t\tcase 'application/vnd.ms-visio.drawing':\n\t\t\treturn {ext: 'vsdx', mime: 'application/vnd.visio'};\n\t\tcase 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml':\n\t\t\treturn {ext: '3mf', mime: 'model/3mf'};\n\t\tdefault:\n\t}\n}\n\nfunction createOpenXmlZipDetectionState() {\n\treturn {\n\t\thasContentTypesEntry: false,\n\t\thasParsedContentTypesEntry: false,\n\t\tisParsingContentTypes: false,\n\t\thasUnparseableContentTypes: false,\n\t\thasWordDirectory: false,\n\t\thasPresentationDirectory: false,\n\t\thasSpreadsheetDirectory: false,\n\t\thasThreeDimensionalModelEntry: false,\n\t};\n}\n\nfunction updateOpenXmlZipDetectionStateFromFilename(openXmlState, filename) {\n\tif (filename.startsWith('word/')) {\n\t\topenXmlState.hasWordDirectory = true;\n\t}\n\n\tif (filename.startsWith('ppt/')) {\n\t\topenXmlState.hasPresentationDirectory = true;\n\t}\n\n\tif (filename.startsWith('xl/')) {\n\t\topenXmlState.hasSpreadsheetDirectory = true;\n\t}\n\n\tif (\n\t\tfilename.startsWith('3D/')\n\t\t&& filename.endsWith('.model')\n\t) {\n\t\topenXmlState.hasThreeDimensionalModelEntry = true;\n\t}\n}\n\nfunction getOpenXmlFileTypeFromDirectoryNames(openXmlState) {\n\tif (openXmlState.hasWordDirectory) {\n\t\treturn {\n\t\t\text: 'docx',\n\t\t\tmime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t};\n\t}\n\n\tif (openXmlState.hasPresentationDirectory) {\n\t\treturn {\n\t\t\text: 'pptx',\n\t\t\tmime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t};\n\t}\n\n\tif (openXmlState.hasSpreadsheetDirectory) {\n\t\treturn {\n\t\t\text: 'xlsx',\n\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t};\n\t}\n\n\tif (openXmlState.hasThreeDimensionalModelEntry) {\n\t\treturn {\n\t\t\text: '3mf',\n\t\t\tmime: 'model/3mf',\n\t\t};\n\t}\n}\n\nfunction getOpenXmlFileTypeFromZipEntries(openXmlState) {\n\t// Only use directory-name heuristic when [Content_Types].xml was present in the archive\n\t// but its handler was skipped (not invoked, not currently running, and not already resolved).\n\t// This avoids guessing from directory names when content-type parsing already gave a definitive answer or failed.\n\tif (\n\t\t!openXmlState.hasContentTypesEntry\n\t\t|| openXmlState.hasUnparseableContentTypes\n\t\t|| openXmlState.isParsingContentTypes\n\t\t|| openXmlState.hasParsedContentTypesEntry\n\t) {\n\t\treturn;\n\t}\n\n\treturn getOpenXmlFileTypeFromDirectoryNames(openXmlState);\n}\n\nfunction getOpenXmlMimeTypeFromContentTypesXml(xmlContent) {\n\t// We only need the `ContentType=\"...main+xml\"` value, so a small string scan is enough and avoids full XML parsing.\n\tconst endPosition = xmlContent.indexOf('.main+xml\"');\n\tif (endPosition === -1) {\n\t\tconst mimeType = 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml';\n\t\tif (xmlContent.includes(`ContentType=\"${mimeType}\"`)) {\n\t\t\treturn mimeType;\n\t\t}\n\n\t\treturn;\n\t}\n\n\tconst truncatedContent = xmlContent.slice(0, endPosition);\n\tconst firstQuotePosition = truncatedContent.lastIndexOf('\"');\n\t// If no quote is found, `lastIndexOf` returns -1 and this intentionally falls back to the full truncated prefix.\n\treturn truncatedContent.slice(firstQuotePosition + 1);\n}\n\nconst zipDataDescriptorSignature = 0x08_07_4B_50;\nconst zipDataDescriptorLengthInBytes = 16;\nconst zipDataDescriptorOverlapLengthInBytes = zipDataDescriptorLengthInBytes - 1;\n\nfunction findZipDataDescriptorOffset(buffer, bytesConsumed) {\n\tif (buffer.length < zipDataDescriptorLengthInBytes) {\n\t\treturn -1;\n\t}\n\n\tconst lastPossibleDescriptorOffset = buffer.length - zipDataDescriptorLengthInBytes;\n\tfor (let index = 0; index <= lastPossibleDescriptorOffset; index++) {\n\t\tif (\n\t\t\tToken.UINT32_LE.get(buffer, index) === zipDataDescriptorSignature\n\t\t\t&& Token.UINT32_LE.get(buffer, index + 8) === bytesConsumed + index\n\t\t) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\nasync function readZipDataDescriptorEntryWithLimit(zipHandler, {shouldBuffer, maximumLength = maximumZipEntrySizeInBytes} = {}) {\n\tconst {syncBuffer} = zipHandler;\n\tconst {length: syncBufferLength} = syncBuffer;\n\tconst chunks = [];\n\tlet bytesConsumed = 0;\n\n\tfor (;;) {\n\t\tconst length = await zipHandler.tokenizer.peekBuffer(syncBuffer, {mayBeLess: true});\n\t\tconst dataDescriptorOffset = findZipDataDescriptorOffset(syncBuffer.subarray(0, length), bytesConsumed);\n\t\tconst retainedLength = dataDescriptorOffset >= 0\n\t\t\t? 0\n\t\t\t: (\n\t\t\t\tlength === syncBufferLength\n\t\t\t\t\t? Math.min(zipDataDescriptorOverlapLengthInBytes, length - 1)\n\t\t\t\t\t: 0\n\t\t\t);\n\t\tconst chunkLength = dataDescriptorOffset >= 0 ? dataDescriptorOffset : length - retainedLength;\n\n\t\tif (chunkLength === 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tbytesConsumed += chunkLength;\n\t\tif (bytesConsumed > maximumLength) {\n\t\t\tthrow new Error(`ZIP entry compressed data exceeds ${maximumLength} bytes`);\n\t\t}\n\n\t\tif (shouldBuffer) {\n\t\t\tconst data = new Uint8Array(chunkLength);\n\t\t\tawait zipHandler.tokenizer.readBuffer(data);\n\t\t\tchunks.push(data);\n\t\t} else {\n\t\t\tawait zipHandler.tokenizer.ignore(chunkLength);\n\t\t}\n\n\t\tif (dataDescriptorOffset >= 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!hasUnknownFileSize(zipHandler.tokenizer)) {\n\t\tzipHandler.knownSizeDescriptorScannedBytes += bytesConsumed;\n\t}\n\n\tif (!shouldBuffer) {\n\t\treturn;\n\t}\n\n\treturn mergeByteChunks(chunks, bytesConsumed);\n}\n\nfunction getRemainingZipScanBudget(zipHandler, startOffset) {\n\tif (hasUnknownFileSize(zipHandler.tokenizer)) {\n\t\treturn Math.max(0, maximumUntrustedSkipSizeInBytes - (zipHandler.tokenizer.position - startOffset));\n\t}\n\n\treturn Math.max(0, maximumZipEntrySizeInBytes - zipHandler.knownSizeDescriptorScannedBytes);\n}\n\nasync function readZipEntryData(zipHandler, zipHeader, {shouldBuffer, maximumDescriptorLength = maximumZipEntrySizeInBytes} = {}) {\n\tif (\n\t\tzipHeader.dataDescriptor\n\t\t&& zipHeader.compressedSize === 0\n\t) {\n\t\treturn readZipDataDescriptorEntryWithLimit(zipHandler, {\n\t\t\tshouldBuffer,\n\t\t\tmaximumLength: maximumDescriptorLength,\n\t\t});\n\t}\n\n\tif (!shouldBuffer) {\n\t\tawait safeIgnore(zipHandler.tokenizer, zipHeader.compressedSize, {\n\t\t\tmaximumLength: hasUnknownFileSize(zipHandler.tokenizer) ? maximumZipEntrySizeInBytes : zipHandler.tokenizer.fileInfo.size,\n\t\t\treason: 'ZIP entry compressed data',\n\t\t});\n\t\treturn;\n\t}\n\n\tconst maximumLength = getMaximumZipBufferedReadLength(zipHandler.tokenizer);\n\tif (\n\t\t!Number.isFinite(zipHeader.compressedSize)\n\t\t|| zipHeader.compressedSize < 0\n\t\t|| zipHeader.compressedSize > maximumLength\n\t) {\n\t\tthrow new Error(`ZIP entry compressed data exceeds ${maximumLength} bytes`);\n\t}\n\n\tconst fileData = new Uint8Array(zipHeader.compressedSize);\n\tawait zipHandler.tokenizer.readBuffer(fileData);\n\treturn fileData;\n}\n\n// Override the default inflate to enforce decompression size limits, since @tokenizer/inflate does not expose a configuration hook for this.\nZipHandler.prototype.inflate = async function (zipHeader, fileData, callback) {\n\tif (zipHeader.compressedMethod === 0) {\n\t\treturn callback(fileData);\n\t}\n\n\tif (zipHeader.compressedMethod !== 8) {\n\t\tthrow new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`);\n\t}\n\n\tconst uncompressedData = await decompressDeflateRawWithLimit(fileData, {maximumLength: maximumZipEntrySizeInBytes});\n\treturn callback(uncompressedData);\n};\n\nZipHandler.prototype.unzip = async function (fileCallback) {\n\tlet stop = false;\n\tlet zipEntryCount = 0;\n\tconst zipScanStart = this.tokenizer.position;\n\tthis.knownSizeDescriptorScannedBytes = 0;\n\tdo {\n\t\tif (hasExceededUnknownSizeScanBudget(this.tokenizer, zipScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\tthrow new ParserHardLimitError(`ZIP stream probing exceeds ${maximumUntrustedSkipSizeInBytes} bytes`);\n\t\t}\n\n\t\tconst zipHeader = await this.readLocalFileHeader();\n\t\tif (!zipHeader) {\n\t\t\tbreak;\n\t\t}\n\n\t\tzipEntryCount++;\n\t\tif (zipEntryCount > maximumZipEntryCount) {\n\t\t\tthrow new Error(`ZIP entry count exceeds ${maximumZipEntryCount}`);\n\t\t}\n\n\t\tconst next = fileCallback(zipHeader);\n\t\tstop = Boolean(next.stop);\n\t\tawait this.tokenizer.ignore(zipHeader.extraFieldLength);\n\t\tconst fileData = await readZipEntryData(this, zipHeader, {\n\t\t\tshouldBuffer: Boolean(next.handler),\n\t\t\tmaximumDescriptorLength: Math.min(maximumZipEntrySizeInBytes, getRemainingZipScanBudget(this, zipScanStart)),\n\t\t});\n\n\t\tif (next.handler) {\n\t\t\tawait this.inflate(zipHeader, fileData, next.handler);\n\t\t}\n\n\t\tif (zipHeader.dataDescriptor) {\n\t\t\tconst dataDescriptor = new Uint8Array(zipDataDescriptorLengthInBytes);\n\t\t\tawait this.tokenizer.readBuffer(dataDescriptor);\n\t\t\tif (Token.UINT32_LE.get(dataDescriptor, 0) !== zipDataDescriptorSignature) {\n\t\t\t\tthrow new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position - dataDescriptor.length}`);\n\t\t\t}\n\t\t}\n\n\t\tif (hasExceededUnknownSizeScanBudget(this.tokenizer, zipScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\tthrow new ParserHardLimitError(`ZIP stream probing exceeds ${maximumUntrustedSkipSizeInBytes} bytes`);\n\t\t}\n\t} while (!stop);\n};\n\nexport async function detectZip(tokenizer) {\n\tlet fileType;\n\tconst openXmlState = createOpenXmlZipDetectionState();\n\tconst iWorkState = createIWorkZipDetectionState();\n\n\ttry {\n\t\tawait new ZipHandler(tokenizer).unzip(zipHeader => {\n\t\t\tupdateOpenXmlZipDetectionStateFromFilename(openXmlState, zipHeader.filename);\n\t\t\tupdateIWorkZipDetectionStateFromFilename(iWorkState, zipHeader.filename);\n\n\t\t\t// Early exit for Keynote or Numbers when markers are definitive\n\t\t\tif (iWorkState.hasDocumentEntry && (iWorkState.hasMasterSlideEntry || iWorkState.hasTablesEntry)) {\n\t\t\t\tfileType = getIWorkFileTypeFromZipEntries(iWorkState);\n\t\t\t\treturn {stop: true};\n\t\t\t}\n\n\t\t\tconst isOpenXmlContentTypesEntry = zipHeader.filename === '[Content_Types].xml';\n\t\t\tconst openXmlFileTypeFromEntries = getOpenXmlFileTypeFromZipEntries(openXmlState);\n\t\t\tif (\n\t\t\t\t!isOpenXmlContentTypesEntry\n\t\t\t\t&& openXmlFileTypeFromEntries\n\t\t\t) {\n\t\t\t\tfileType = openXmlFileTypeFromEntries;\n\t\t\t\treturn {\n\t\t\t\t\tstop: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tswitch (zipHeader.filename) {\n\t\t\t\tcase 'META-INF/mozilla.rsa':\n\t\t\t\t\tfileType = {\n\t\t\t\t\t\text: 'xpi',\n\t\t\t\t\t\tmime: 'application/x-xpinstall',\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\t\t\t\tcase 'META-INF/MANIFEST.MF':\n\t\t\t\t\tfileType = {\n\t\t\t\t\t\text: 'jar',\n\t\t\t\t\t\tmime: 'application/java-archive',\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\t\t\t\tcase 'mimetype':\n\t\t\t\t\tif (!canReadZipEntryForDetection(zipHeader, maximumZipTextEntrySizeInBytes)) {\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\tconst mimeType = new TextDecoder('utf-8').decode(fileData).trim();\n\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\n\t\t\t\tcase '[Content_Types].xml': {\n\t\t\t\t\topenXmlState.hasContentTypesEntry = true;\n\n\t\t\t\t\tif (!canReadZipEntryForDetection(zipHeader, maximumZipTextEntrySizeInBytes)) {\n\t\t\t\t\t\topenXmlState.hasUnparseableContentTypes = true;\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\topenXmlState.isParsingContentTypes = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tasync handler(fileData) {\n\t\t\t\t\t\t\t// Use TextDecoder to decode the UTF-8 encoded data\n\t\t\t\t\t\t\tconst xmlContent = new TextDecoder('utf-8').decode(fileData);\n\t\t\t\t\t\t\tconst mimeType = getOpenXmlMimeTypeFromContentTypesXml(xmlContent);\n\t\t\t\t\t\t\tif (mimeType) {\n\t\t\t\t\t\t\t\tfileType = getFileTypeFromMimeType(mimeType);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\topenXmlState.hasParsedContentTypesEntry = true;\n\t\t\t\t\t\t\topenXmlState.isParsingContentTypes = false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstop: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (/classes\\d*\\.dex/v.test(zipHeader.filename)) {\n\t\t\t\t\t\tfileType = {\n\t\t\t\t\t\t\text: 'apk',\n\t\t\t\t\t\t\tmime: 'application/vnd.android.package-archive',\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn {stop: true};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {};\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tif (!isRecoverableZipError(error)) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (openXmlState.isParsingContentTypes) {\n\t\t\topenXmlState.isParsingContentTypes = false;\n\t\t\topenXmlState.hasUnparseableContentTypes = true;\n\t\t}\n\n\t\t// When the stream was truncated before reaching [Content_Types].xml, use directory names as a fallback.\n\t\t// This handles LibreOffice-created OOXML files where [Content_Types].xml appears after content entries.\n\t\tif (!fileType && error instanceof strtok3.EndOfStreamError && !openXmlState.hasContentTypesEntry) {\n\t\t\tfileType = getOpenXmlFileTypeFromDirectoryNames(openXmlState);\n\t\t}\n\t}\n\n\tconst iWorkFileType = hasUnknownFileSize(tokenizer)\n\t\t&& iWorkState.hasDocumentEntry\n\t\t&& !iWorkState.hasMasterSlideEntry\n\t\t&& !iWorkState.hasTablesEntry\n\t\t&& !iWorkState.hasCalculationEngineEntry\n\t\t? undefined\n\t\t: getIWorkFileTypeFromZipEntries(iWorkState);\n\n\treturn fileType ?? getOpenXmlFileTypeFromZipEntries(openXmlState) ?? iWorkFileType ?? {\n\t\text: 'zip',\n\t\tmime: 'application/zip',\n\t};\n}\n", "import * as Token from 'token-types';\nimport {getUintBE} from 'uint8array-extras';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tgetSafeBound,\n\tsafeReadBuffer,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumEbmlDocumentTypeSizeInBytes = 64;\nconst maximumEbmlElementPayloadSizeInBytes = 1024 * 1024;\nconst maximumEbmlElementCount = 256;\n\nexport async function detectEbml(tokenizer) {\n\tasync function readField() {\n\t\tconst msb = await tokenizer.peekNumber(Token.UINT8);\n\t\tlet mask = 0x80;\n\t\tlet ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D\n\n\t\twhile ((msb & mask) === 0 && mask !== 0) {\n\t\t\t++ic;\n\t\t\tmask >>= 1;\n\t\t}\n\n\t\tconst id = new Uint8Array(ic + 1);\n\t\tawait safeReadBuffer(tokenizer, id, undefined, {\n\t\t\tmaximumLength: id.length,\n\t\t\treason: 'EBML field',\n\t\t});\n\t\treturn id;\n\t}\n\n\tasync function readElement() {\n\t\tconst idField = await readField();\n\t\tconst lengthField = await readField();\n\n\t\tlengthField[0] ^= 0x80 >> (lengthField.length - 1);\n\t\tconst nrLength = Math.min(6, lengthField.length); // JavaScript can max read 6 bytes integer\n\n\t\tconst idView = new DataView(idField.buffer);\n\t\tconst lengthView = new DataView(lengthField.buffer, lengthField.length - nrLength, nrLength);\n\n\t\treturn {\n\t\t\tid: getUintBE(idView),\n\t\t\tlen: getUintBE(lengthView),\n\t\t};\n\t}\n\n\tasync function readChildren(children) {\n\t\tlet ebmlElementCount = 0;\n\t\twhile (children > 0) {\n\t\t\tebmlElementCount++;\n\t\t\tif (ebmlElementCount > maximumEbmlElementCount) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (hasExceededUnknownSizeScanBudget(tokenizer, ebmlScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst previousPosition = tokenizer.position;\n\t\t\tconst element = await readElement();\n\n\t\t\tif (element.id === 0x42_82) {\n\t\t\t\t// `DocType` is a short string (\"webm\", \"matroska\", ...), reject implausible lengths to avoid large allocations.\n\t\t\t\tif (element.len > maximumEbmlDocumentTypeSizeInBytes) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst documentTypeLength = getSafeBound(element.len, maximumEbmlDocumentTypeSizeInBytes, 'EBML DocType');\n\t\t\t\tconst rawValue = await tokenizer.readToken(new Token.StringType(documentTypeLength));\n\t\t\t\treturn rawValue.replaceAll(/\\0.*$/gv, ''); // Return DocType\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\thasUnknownFileSize(tokenizer)\n\t\t\t\t&& (\n\t\t\t\t\t!Number.isFinite(element.len)\n\t\t\t\t\t|| element.len < 0\n\t\t\t\t\t|| element.len > maximumEbmlElementPayloadSizeInBytes\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait safeIgnore(tokenizer, element.len, {\n\t\t\t\tmaximumLength: hasUnknownFileSize(tokenizer) ? maximumEbmlElementPayloadSizeInBytes : tokenizer.fileInfo.size,\n\t\t\t\treason: 'EBML payload',\n\t\t\t}); // ignore payload\n\t\t\t--children;\n\n\t\t\t// Safeguard against malformed files: bail if the position did not advance.\n\t\t\tif (tokenizer.position <= previousPosition) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst rootElement = await readElement();\n\tconst ebmlScanStart = tokenizer.position;\n\tconst documentType = await readChildren(rootElement.len);\n\n\tswitch (documentType) {\n\t\tcase 'webm':\n\t\t\treturn {\n\t\t\t\text: 'webm',\n\t\t\t\tmime: 'video/webm',\n\t\t\t};\n\n\t\tcase 'matroska':\n\t\t\treturn {\n\t\t\t\text: 'mkv',\n\t\t\t\tmime: 'video/matroska',\n\t\t\t};\n\n\t\tdefault:\n\t}\n}\n", "import * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {\n\tParserHardLimitError,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumPngChunkCount = 512;\nconst maximumPngStreamScanBudgetInBytes = 16 * 1024 * 1024;\nconst maximumPngChunkSizeInBytes = 1024 * 1024;\n\nfunction isPngAncillaryChunk(type) {\n\treturn (type.codePointAt(0) & 0x20) !== 0;\n}\n\nexport async function detectPng(tokenizer) {\n\tconst pngFileType = {\n\t\text: 'png',\n\t\tmime: 'image/png',\n\t};\n\n\tconst apngFileType = {\n\t\text: 'apng',\n\t\tmime: 'image/apng',\n\t};\n\n\t// APNG format (https://wiki.mozilla.org/APNG_Specification)\n\t// 1. Find the first IDAT (image data) chunk (49 44 41 54)\n\t// 2. Check if there is an \"acTL\" chunk before the IDAT one (61 63 54 4C)\n\n\t// Offset calculated as follows:\n\t// - 8 bytes: PNG signature\n\t// - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk\n\n\tawait tokenizer.ignore(8); // ignore PNG signature\n\n\tasync function readChunkHeader() {\n\t\treturn {\n\t\t\tlength: await tokenizer.readToken(Token.INT32_BE),\n\t\t\ttype: await tokenizer.readToken(new Token.StringType(4, 'latin1')),\n\t\t};\n\t}\n\n\tconst isUnknownPngStream = hasUnknownFileSize(tokenizer);\n\tconst pngScanStart = tokenizer.position;\n\tlet pngChunkCount = 0;\n\tlet hasSeenImageHeader = false;\n\tdo {\n\t\tpngChunkCount++;\n\t\tif (pngChunkCount > maximumPngChunkCount) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (hasExceededUnknownSizeScanBudget(tokenizer, pngScanStart, maximumPngStreamScanBudgetInBytes)) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst previousPosition = tokenizer.position;\n\t\tconst chunk = await readChunkHeader();\n\t\tif (chunk.length < 0) {\n\t\t\treturn; // Invalid chunk length\n\t\t}\n\n\t\tif (chunk.type === 'IHDR') {\n\t\t\t// PNG requires the first real image header to be a 13-byte IHDR chunk.\n\t\t\tif (chunk.length !== 13) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thasSeenImageHeader = true;\n\t\t}\n\n\t\tswitch (chunk.type) {\n\t\t\tcase 'IDAT':\n\t\t\t\treturn pngFileType;\n\t\t\tcase 'acTL':\n\t\t\t\treturn apngFileType;\n\t\t\tdefault:\n\t\t\t\tif (\n\t\t\t\t\t!hasSeenImageHeader\n\t\t\t\t\t&& chunk.type !== 'CgBI'\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tisUnknownPngStream\n\t\t\t\t\t&& chunk.length > maximumPngChunkSizeInBytes\n\t\t\t\t) {\n\t\t\t\t\t// Avoid huge attacker-controlled skips when probing unknown-size streams.\n\t\t\t\t\treturn hasSeenImageHeader && isPngAncillaryChunk(chunk.type) ? pngFileType : undefined;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait safeIgnore(tokenizer, chunk.length + 4, {\n\t\t\t\t\t\tmaximumLength: isUnknownPngStream ? maximumPngChunkSizeInBytes + 4 : tokenizer.fileInfo.size,\n\t\t\t\t\t\treason: 'PNG chunk payload',\n\t\t\t\t\t}); // Ignore chunk-data + CRC\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isUnknownPngStream\n\t\t\t\t\t\t&& (\n\t\t\t\t\t\t\terror instanceof ParserHardLimitError\n\t\t\t\t\t\t\t|| error instanceof strtok3.EndOfStreamError\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn pngFileType;\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t}\n\n\t\t// Safeguard against malformed files: bail if the position did not advance.\n\t\tif (tokenizer.position <= previousPosition) {\n\t\t\tbreak;\n\t\t}\n\t} while (tokenizer.position + 8 < tokenizer.fileInfo.size);\n\n\treturn pngFileType;\n}\n", "import * as Token from 'token-types';\nimport * as strtok3 from 'strtok3/core';\nimport {\n\tmaximumUntrustedSkipSizeInBytes,\n\tParserHardLimitError,\n\tcheckBytes,\n\tsafeReadBuffer,\n\tsafeIgnore,\n\thasUnknownFileSize,\n\thasExceededUnknownSizeScanBudget,\n} from '../parser.js';\n\nconst maximumAsfHeaderObjectCount = 512;\nconst maximumAsfHeaderPayloadSizeInBytes = 1024 * 1024;\n\nexport async function detectAsf(tokenizer) {\n\tlet isMalformedAsf = false;\n\ttry {\n\t\tasync function readHeader() {\n\t\t\tconst guid = new Uint8Array(16);\n\t\t\tawait safeReadBuffer(tokenizer, guid, undefined, {\n\t\t\t\tmaximumLength: guid.length,\n\t\t\t\treason: 'ASF header GUID',\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tid: guid,\n\t\t\t\tsize: Number(await tokenizer.readToken(Token.UINT64_LE)),\n\t\t\t};\n\t\t}\n\n\t\tawait safeIgnore(tokenizer, 30, {\n\t\t\tmaximumLength: 30,\n\t\t\treason: 'ASF header prelude',\n\t\t});\n\t\tconst isUnknownFileSize = hasUnknownFileSize(tokenizer);\n\t\tconst asfHeaderScanStart = tokenizer.position;\n\t\tlet asfHeaderObjectCount = 0;\n\t\twhile (tokenizer.position + 24 < tokenizer.fileInfo.size) {\n\t\t\tasfHeaderObjectCount++;\n\t\t\tif (asfHeaderObjectCount > maximumAsfHeaderObjectCount) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (hasExceededUnknownSizeScanBudget(tokenizer, asfHeaderScanStart, maximumUntrustedSkipSizeInBytes)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst previousPosition = tokenizer.position;\n\t\t\tconst header = await readHeader();\n\t\t\tlet payload = header.size - 24;\n\t\t\tif (\n\t\t\t\t!Number.isFinite(payload)\n\t\t\t\t|| payload < 0\n\t\t\t) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (checkBytes(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {\n\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\tconst typeId = new Uint8Array(16);\n\t\t\t\tpayload -= await safeReadBuffer(tokenizer, typeId, undefined, {\n\t\t\t\t\tmaximumLength: typeId.length,\n\t\t\t\t\treason: 'ASF stream type GUID',\n\t\t\t\t});\n\n\t\t\t\tif (checkBytes(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t// Found audio:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\tmime: 'audio/x-ms-asf',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (checkBytes(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t// Found video:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'asf',\n\t\t\t\t\t\tmime: 'video/x-ms-asf',\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisUnknownFileSize\n\t\t\t\t&& payload > maximumAsfHeaderPayloadSizeInBytes\n\t\t\t) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tawait safeIgnore(tokenizer, payload, {\n\t\t\t\tmaximumLength: isUnknownFileSize ? maximumAsfHeaderPayloadSizeInBytes : tokenizer.fileInfo.size,\n\t\t\t\treason: 'ASF header payload',\n\t\t\t});\n\n\t\t\t// Safeguard against malformed files: break if the position did not advance.\n\t\t\tif (tokenizer.position <= previousPosition) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tif (\n\t\t\terror instanceof strtok3.EndOfStreamError\n\t\t\t|| error instanceof ParserHardLimitError\n\t\t) {\n\t\t\tif (hasUnknownFileSize(tokenizer)) {\n\t\t\t\tisMalformedAsf = true;\n\t\t\t}\n\t\t} else {\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tif (isMalformedAsf) {\n\t\treturn;\n\t}\n\n\t// Default to ASF generic extension\n\treturn {\n\t\text: 'asf',\n\t\tmime: 'application/vnd.ms-asf',\n\t};\n}\n", "import { TrackTypeValueToKeyMap, } from '../type.js';\nimport initDebug from 'debug';\nimport { isSingleton, isUnique } from './GenericTagTypes.js';\nimport { CombinedTagMapper } from './CombinedTagMapper.js';\nimport { CommonTagMapper } from './GenericTagMapper.js';\nimport { toRatio } from './Util.js';\nimport { fileTypeFromBuffer } from 'file-type';\nimport { parseLyrics } from '../lrc/LyricsParser.js';\nconst debug = initDebug('music-metadata:collector');\nconst TagPriority = ['matroska', 'APEv2', 'vorbis', 'ID3v2.4', 'ID3v2.3', 'ID3v2.2', 'exif', 'asf', 'iTunes', 'AIFF', 'ID3v1'];\n/**\n * Provided to the parser to uodate the metadata result.\n * Responsible for triggering async updates\n */\nexport class MetadataCollector {\n constructor(opts) {\n this.format = {\n tagTypes: [],\n trackInfo: []\n };\n this.native = {};\n this.common = {\n track: { no: null, of: null },\n disk: { no: null, of: null },\n movementIndex: { no: null, of: null }\n };\n this.quality = {\n warnings: []\n };\n /**\n * Keeps track of origin priority for each mapped id\n */\n this.commonOrigin = {};\n /**\n * Maps a tag type to a priority\n */\n this.originPriority = {};\n this.tagMapper = new CombinedTagMapper();\n this.opts = opts;\n let priority = 1;\n for (const tagType of TagPriority) {\n this.originPriority[tagType] = priority++;\n }\n this.originPriority.artificial = 500; // Filled using alternative tags\n this.originPriority.id3v1 = 600; // Consider as the worst because of the field length limit\n }\n /**\n * @returns {boolean} true if one or more tags have been found\n */\n hasAny() {\n return Object.keys(this.native).length > 0;\n }\n addStreamInfo(streamInfo) {\n debug(`streamInfo: type=${streamInfo.type ? TrackTypeValueToKeyMap[streamInfo.type] : '?'}, codec=${streamInfo.codecName}`);\n this.format.trackInfo.push(streamInfo);\n }\n setFormat(key, value) {\n debug(`format: ${key} = ${value}`);\n this.format[key] = value; // as any to override readonly\n if (this.opts?.observer) {\n this.opts.observer({ metadata: this, tag: { type: 'format', id: key, value } });\n }\n }\n setAudioOnly() {\n this.setFormat('hasAudio', true);\n this.setFormat('hasVideo', false);\n }\n async addTag(tagType, tagId, value) {\n debug(`tag ${tagType}.${tagId} = ${value}`);\n if (!this.native[tagType]) {\n this.format.tagTypes.push(tagType);\n this.native[tagType] = [];\n }\n this.native[tagType].push({ id: tagId, value });\n await this.toCommon(tagType, tagId, value);\n }\n addWarning(warning) {\n this.quality.warnings.push({ message: warning });\n }\n async postMap(tagType, tag) {\n // Common tag (alias) found\n // check if we need to do something special with common tag\n // if the event has been aliased then we need to clean it before\n // it is emitted to the user. e.g. genre (20) -> Electronic\n switch (tag.id) {\n case 'artist':\n return this.handleSingularArtistTag(tagType, tag, 'artist', 'artists');\n case 'albumartist':\n return this.handleSingularArtistTag(tagType, tag, 'albumartist', 'albumartists');\n case 'artists':\n return this.handlePluralArtistTag(tagType, tag, 'artist', 'artists');\n case 'albumartists':\n return this.handlePluralArtistTag(tagType, tag, 'albumartist', 'albumartists');\n case 'picture':\n return this.postFixPicture(tag.value).then(picture => {\n if (picture !== null) {\n tag.value = picture;\n this.setGenericTag(tagType, tag);\n }\n });\n case 'totaltracks':\n this.common.track.of = CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'totaldiscs':\n this.common.disk.of = CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'movementTotal':\n this.common.movementIndex.of = CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'track':\n case 'disk':\n case 'movementIndex': {\n const of = this.common[tag.id].of; // store of value, maybe maybe overwritten\n this.common[tag.id] = CommonTagMapper.normalizeTrack(tag.value);\n this.common[tag.id].of = of != null ? of : this.common[tag.id].of;\n return;\n }\n case 'bpm':\n case 'year':\n case 'originalyear':\n tag.value = Number.parseInt(tag.value, 10);\n break;\n case 'date': {\n // ToDo: be more strict on 'YYYY...'\n const year = Number.parseInt(tag.value.substr(0, 4), 10);\n if (!Number.isNaN(year)) {\n this.common.year = year;\n }\n break;\n }\n case 'discogs_label_id':\n case 'discogs_release_id':\n case 'discogs_master_release_id':\n case 'discogs_artist_id':\n case 'discogs_votes':\n tag.value = typeof tag.value === 'string' ? Number.parseInt(tag.value, 10) : tag.value;\n break;\n case 'replaygain_track_gain':\n case 'replaygain_track_peak':\n case 'replaygain_album_gain':\n case 'replaygain_album_peak':\n tag.value = toRatio(tag.value);\n break;\n case 'replaygain_track_minmax':\n tag.value = tag.value.split(',').map(v => Number.parseInt(v, 10));\n break;\n case 'replaygain_undo': {\n const minMix = tag.value.split(',').map(v => Number.parseInt(v, 10));\n tag.value = {\n leftChannel: minMix[0],\n rightChannel: minMix[1]\n };\n break;\n }\n case 'gapless': // iTunes gap-less flag\n case 'compilation':\n case 'podcast':\n case 'showMovement':\n tag.value = tag.value === '1' || tag.value === 1; // boolean\n break;\n case 'isrc': { // Only keep unique values\n const commonTag = this.common[tag.id];\n if (commonTag && commonTag.indexOf(tag.value) !== -1)\n return;\n break;\n }\n case 'comment':\n if (typeof tag.value === 'string') {\n tag.value = { text: tag.value };\n }\n if (tag.value.descriptor === 'iTunPGAP') {\n this.setGenericTag(tagType, { id: 'gapless', value: tag.value.text === '1' });\n }\n break;\n case 'lyrics':\n if (typeof tag.value === 'string') {\n tag.value = parseLyrics(tag.value);\n }\n break;\n default:\n // nothing to do\n }\n if (tag.value !== null) {\n this.setGenericTag(tagType, tag);\n }\n }\n /**\n * Convert native tags to common tags\n * @returns {IAudioMetadata} Native + common tags\n */\n toCommonMetadata() {\n return {\n format: this.format,\n native: this.native,\n quality: this.quality,\n common: this.common\n };\n }\n /**\n * Handle singular artist tags (artist, albumartist) and cross-populate to plural form\n */\n handleSingularArtistTag(tagType, tag, singularId, pluralId) {\n if (this.commonOrigin[singularId] === this.originPriority[tagType]) {\n // Assume the singular field is used as plural (multiple values from same source)\n return this.postMap('artificial', { id: pluralId, value: tag.value });\n }\n if (!this.common[pluralId]) {\n // Fill plural using singular source\n this.setGenericTag('artificial', { id: pluralId, value: tag.value });\n }\n this.setGenericTag(tagType, tag);\n }\n /**\n * Handle plural artist tags (artists, albumartists) and cross-populate to singular form\n */\n handlePluralArtistTag(tagType, tag, singularId, pluralId) {\n if (!this.common[singularId] || this.commonOrigin[singularId] === this.originPriority.artificial) {\n if (!this.common[pluralId] || this.common[pluralId].indexOf(tag.value) === -1) {\n // Fill singular using plural source\n const values = (this.common[pluralId] || []).concat([tag.value]);\n const value = joinArtists(values);\n this.setGenericTag('artificial', { id: singularId, value });\n }\n }\n this.setGenericTag(tagType, tag);\n }\n /**\n * Fix some common issues with picture object\n * @param picture Picture\n */\n async postFixPicture(picture) {\n if (picture.data && picture.data.length > 0) {\n if (!picture.format) {\n const fileType = await fileTypeFromBuffer(Uint8Array.from(picture.data)); // ToDO: remove Buffer\n if (fileType) {\n picture.format = fileType.mime;\n }\n else {\n return null;\n }\n }\n picture.format = picture.format.toLocaleLowerCase();\n switch (picture.format) {\n case 'image/jpg':\n picture.format = 'image/jpeg'; // ToDo: register warning\n }\n return picture;\n }\n this.addWarning(\"Empty picture tag found\");\n return null;\n }\n /**\n * Convert native tag to common tags\n */\n async toCommon(tagType, tagId, value) {\n const tag = { id: tagId, value };\n const genericTag = this.tagMapper.mapTag(tagType, tag, this);\n if (genericTag) {\n await this.postMap(tagType, genericTag);\n }\n }\n /**\n * Set generic tag\n */\n setGenericTag(tagType, tag) {\n debug(`common.${tag.id} = ${tag.value}`);\n const prio0 = this.commonOrigin[tag.id] || 1000;\n const prio1 = this.originPriority[tagType];\n if (isSingleton(tag.id)) {\n if (prio1 <= prio0) {\n this.common[tag.id] = tag.value;\n this.commonOrigin[tag.id] = prio1;\n }\n else {\n return debug(`Ignore native tag (singleton): ${tagType}.${tag.id} = ${tag.value}`);\n }\n }\n else {\n if (prio1 === prio0) {\n if (!isUnique(tag.id) || this.common[tag.id].indexOf(tag.value) === -1) {\n this.common[tag.id].push(tag.value);\n }\n else {\n debug(`Ignore duplicate value: ${tagType}.${tag.id} = ${tag.value}`);\n }\n // no effect? this.commonOrigin[tag.id] = prio1;\n }\n else if (prio1 < prio0) {\n this.common[tag.id] = [tag.value];\n this.commonOrigin[tag.id] = prio1;\n }\n else {\n return debug(`Ignore native tag (list): ${tagType}.${tag.id} = ${tag.value}`);\n }\n }\n if (this.opts?.observer) {\n this.opts.observer({ metadata: this, tag: { type: 'common', id: tag.id, value: tag.value } });\n }\n // ToDo: trigger metadata event\n }\n}\nexport function joinArtists(artists) {\n if (artists.length > 2) {\n return `${artists.slice(0, artists.length - 1).join(', ')} & ${artists[artists.length - 1]}`;\n }\n return artists.join(' & ');\n}\n", "const defaultTagInfo = {\n multiple: false,\n};\nconst commonTags = {\n year: defaultTagInfo,\n track: defaultTagInfo,\n disk: defaultTagInfo,\n title: defaultTagInfo,\n artist: defaultTagInfo,\n artists: { multiple: true, unique: true },\n albumartist: defaultTagInfo,\n albumartists: { multiple: true, unique: true },\n album: defaultTagInfo,\n date: defaultTagInfo,\n originaldate: defaultTagInfo,\n originalyear: defaultTagInfo,\n releasedate: defaultTagInfo,\n comment: { multiple: true, unique: false },\n genre: { multiple: true, unique: true },\n picture: { multiple: true, unique: true },\n composer: { multiple: true, unique: true },\n lyrics: { multiple: true, unique: false },\n albumsort: { multiple: false, unique: true },\n titlesort: { multiple: false, unique: true },\n work: { multiple: false, unique: true },\n artistsort: { multiple: false, unique: true },\n albumartistsort: { multiple: false, unique: true },\n composersort: { multiple: false, unique: true },\n lyricist: { multiple: true, unique: true },\n writer: { multiple: true, unique: true },\n conductor: { multiple: true, unique: true },\n remixer: { multiple: true, unique: true },\n arranger: { multiple: true, unique: true },\n engineer: { multiple: true, unique: true },\n producer: { multiple: true, unique: true },\n technician: { multiple: true, unique: true },\n djmixer: { multiple: true, unique: true },\n mixer: { multiple: true, unique: true },\n label: { multiple: true, unique: true },\n grouping: defaultTagInfo,\n subtitle: { multiple: true },\n discsubtitle: defaultTagInfo,\n totaltracks: defaultTagInfo,\n totaldiscs: defaultTagInfo,\n compilation: defaultTagInfo,\n rating: { multiple: true },\n bpm: defaultTagInfo,\n mood: defaultTagInfo,\n media: defaultTagInfo,\n catalognumber: { multiple: true, unique: true },\n tvShow: defaultTagInfo,\n tvShowSort: defaultTagInfo,\n tvSeason: defaultTagInfo,\n tvEpisode: defaultTagInfo,\n tvEpisodeId: defaultTagInfo,\n tvNetwork: defaultTagInfo,\n podcast: defaultTagInfo,\n podcasturl: defaultTagInfo,\n releasestatus: defaultTagInfo,\n releasetype: { multiple: true },\n releasecountry: defaultTagInfo,\n script: defaultTagInfo,\n language: defaultTagInfo,\n copyright: defaultTagInfo,\n license: defaultTagInfo,\n encodedby: defaultTagInfo,\n encodersettings: defaultTagInfo,\n gapless: defaultTagInfo,\n barcode: defaultTagInfo,\n isrc: { multiple: true },\n asin: defaultTagInfo,\n musicbrainz_recordingid: defaultTagInfo,\n musicbrainz_trackid: defaultTagInfo,\n musicbrainz_albumid: defaultTagInfo,\n musicbrainz_artistid: { multiple: true },\n musicbrainz_albumartistid: { multiple: true },\n musicbrainz_releasegroupid: defaultTagInfo,\n musicbrainz_workid: defaultTagInfo,\n musicbrainz_trmid: defaultTagInfo,\n musicbrainz_discid: defaultTagInfo,\n acoustid_id: defaultTagInfo,\n acoustid_fingerprint: defaultTagInfo,\n musicip_puid: defaultTagInfo,\n musicip_fingerprint: defaultTagInfo,\n website: defaultTagInfo,\n 'performer:instrument': { multiple: true, unique: true },\n averageLevel: defaultTagInfo,\n peakLevel: defaultTagInfo,\n notes: { multiple: true, unique: false },\n key: defaultTagInfo,\n originalalbum: defaultTagInfo,\n originalartist: defaultTagInfo,\n discogs_artist_id: { multiple: true, unique: true },\n discogs_release_id: defaultTagInfo,\n discogs_label_id: defaultTagInfo,\n discogs_master_release_id: defaultTagInfo,\n discogs_votes: defaultTagInfo,\n discogs_rating: defaultTagInfo,\n replaygain_track_peak: defaultTagInfo,\n replaygain_track_gain: defaultTagInfo,\n replaygain_album_peak: defaultTagInfo,\n replaygain_album_gain: defaultTagInfo,\n replaygain_track_minmax: defaultTagInfo,\n replaygain_album_minmax: defaultTagInfo,\n replaygain_undo: defaultTagInfo,\n description: { multiple: true },\n longDescription: defaultTagInfo,\n category: { multiple: true },\n hdVideo: defaultTagInfo,\n keywords: { multiple: true },\n movement: defaultTagInfo,\n movementIndex: defaultTagInfo,\n movementTotal: defaultTagInfo,\n podcastId: defaultTagInfo,\n showMovement: defaultTagInfo,\n stik: defaultTagInfo,\n playCounter: defaultTagInfo\n};\nexport const commonTagsKeys = /* @__PURE__ */ Object.keys(commonTags);\n/**\n * @param alias Name of common tag\n * @returns {boolean|*} true if given alias is mapped as a singleton', otherwise false\n */\nexport function isSingleton(alias) {\n return commonTags[alias] && !commonTags[alias].multiple;\n}\n/**\n * @param alias Common (generic) tag\n * @returns {boolean|*} true if given alias is a singleton or explicitly marked as unique\n */\nexport function isUnique(alias) {\n return !commonTags[alias].multiple || commonTags[alias].unique || false;\n}\n", "import { ID3v1TagMapper } from '../id3v1/ID3v1TagMap.js';\nimport { ID3v24TagMapper } from '../id3v2/ID3v24TagMapper.js';\nimport { AsfTagMapper } from '../asf/AsfTagMapper.js';\nimport { ID3v22TagMapper } from '../id3v2/ID3v22TagMapper.js';\nimport { APEv2TagMapper } from '../apev2/APEv2TagMapper.js';\nimport { MP4TagMapper } from '../mp4/MP4TagMapper.js';\nimport { VorbisTagMapper } from '../ogg/vorbis/VorbisTagMapper.js';\nimport { RiffInfoTagMapper } from '../riff/RiffInfoTagMap.js';\nimport { MatroskaTagMapper } from '../matroska/MatroskaTagMapper.js';\nimport { AiffTagMapper } from '../aiff/AiffTagMap.js';\nimport { InternalParserError } from '../ParseError.js';\nexport class CombinedTagMapper {\n constructor() {\n this.tagMappers = {};\n [\n new ID3v1TagMapper(),\n new ID3v22TagMapper(),\n new ID3v24TagMapper(),\n new MP4TagMapper(),\n new MP4TagMapper(),\n new VorbisTagMapper(),\n new APEv2TagMapper(),\n new AsfTagMapper(),\n new RiffInfoTagMapper(),\n new MatroskaTagMapper(),\n new AiffTagMapper()\n ].forEach(mapper => {\n this.registerTagMapper(mapper);\n });\n }\n /**\n * Convert native to generic (common) tags\n * @param tagType Originating tag format\n * @param tag Native tag to map to a generic tag id\n * @param warnings\n * @return Generic tag result (output of this function)\n */\n mapTag(tagType, tag, warnings) {\n const tagMapper = this.tagMappers[tagType];\n if (tagMapper) {\n return this.tagMappers[tagType].mapGenericTag(tag, warnings);\n }\n throw new InternalParserError(`No generic tag mapper defined for tag-format: ${tagType}`);\n }\n registerTagMapper(genericTagMapper) {\n for (const tagType of genericTagMapper.tagTypes) {\n this.tagMappers[tagType] = genericTagMapper;\n }\n }\n}\n", "import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ID3v1 tag mappings\n */\nconst id3v1TagMap = {\n title: 'title',\n artist: 'artist',\n album: 'album',\n year: 'year',\n comment: 'comment',\n track: 'track',\n genre: 'genre'\n};\nexport class ID3v1TagMapper extends CommonTagMapper {\n constructor() {\n super(['ID3v1'], id3v1TagMap);\n }\n}\n", "export class CommonTagMapper {\n static toIntOrNull(str) {\n const cleaned = Number.parseInt(str, 10);\n return Number.isNaN(cleaned) ? null : cleaned;\n }\n // TODO: a string of 1of1 would fail to be converted\n // converts 1/10 to no : 1, of : 10\n // or 1 to no : 1, of : 0\n static normalizeTrack(origVal) {\n const split = origVal.toString().split('/');\n return {\n no: Number.parseInt(split[0], 10) || null,\n of: Number.parseInt(split[1], 10) || null\n };\n }\n constructor(tagTypes, tagMap) {\n this.tagTypes = tagTypes;\n this.tagMap = tagMap;\n }\n /**\n * Process and set common tags\n * write common tags to\n * @param tag Native tag\n * @param warnings Register warnings\n * @return common name\n */\n mapGenericTag(tag, warnings) {\n tag = { id: tag.id, value: tag.value }; // clone object\n this.postMap(tag, warnings);\n // Convert native tag event to generic 'alias' tag\n const id = this.getCommonName(tag.id);\n return id ? { id, value: tag.value } : null;\n }\n /**\n * Convert native tag key to common tag key\n * @param tag Native header tag\n * @return common tag name (alias)\n */\n getCommonName(tag) {\n return this.tagMap[tag];\n }\n /**\n * Handle post mapping exceptions / correction\n * @param tag Tag e.g. {\"\u00A9alb\", \"Buena Vista Social Club\")\n * @param warnings Used to register warnings\n */\n postMap(_tag, _warnings) {\n return;\n }\n}\nCommonTagMapper.maxRatingScore = 1;\n", "import { UINT32_LE } from 'token-types';\nimport { CommonTagMapper } from '../common/GenericTagMapper.js';\nimport { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\nimport { decodeString } from '../common/Util.js';\n/**\n * ID3v2.3/ID3v2.4 tag mappings\n */\nconst id3v24TagMap = {\n // id3v2.3\n TIT2: 'title',\n TPE1: 'artist',\n 'TXXX:Artists': 'artists',\n TPE2: 'albumartist',\n TALB: 'album',\n TDRV: 'date', // [ 'date', 'year' ] ToDo: improve 'year' mapping\n /**\n * Original release year\n */\n TORY: 'originalyear',\n TPOS: 'disk',\n TCON: 'genre',\n APIC: 'picture',\n TCOM: 'composer',\n USLT: 'lyrics',\n TSOA: 'albumsort',\n TSOT: 'titlesort',\n TOAL: 'originalalbum',\n TSOP: 'artistsort',\n TSO2: 'albumartistsort',\n TSOC: 'composersort',\n TEXT: 'lyricist',\n 'TXXX:Writer': 'writer',\n TPE3: 'conductor',\n // 'IPLS:instrument': 'performer:instrument', // ToDo\n TPE4: 'remixer',\n 'IPLS:arranger': 'arranger',\n 'IPLS:engineer': 'engineer',\n 'IPLS:producer': 'producer',\n 'IPLS:DJ-mix': 'djmixer',\n 'IPLS:mix': 'mixer',\n TPUB: 'label',\n TIT1: 'grouping',\n TIT3: 'subtitle',\n TRCK: 'track',\n TCMP: 'compilation',\n POPM: 'rating',\n TBPM: 'bpm',\n TMED: 'media',\n 'TXXX:CATALOGNUMBER': 'catalognumber',\n 'TXXX:MusicBrainz Album Status': 'releasestatus',\n 'TXXX:MusicBrainz Album Type': 'releasetype',\n /**\n * Release country as documented: https://picard.musicbrainz.org/docs/mappings/#cite_note-0\n */\n 'TXXX:MusicBrainz Album Release Country': 'releasecountry',\n /**\n * Release country as implemented // ToDo: report\n */\n 'TXXX:RELEASECOUNTRY': 'releasecountry',\n 'TXXX:SCRIPT': 'script',\n TLAN: 'language',\n TCOP: 'copyright',\n WCOP: 'license',\n TENC: 'encodedby',\n TSSE: 'encodersettings',\n 'TXXX:BARCODE': 'barcode',\n 'TXXX:ISRC': 'isrc',\n TSRC: 'isrc',\n 'TXXX:ASIN': 'asin',\n 'TXXX:originalyear': 'originalyear',\n 'UFID:http://musicbrainz.org': 'musicbrainz_recordingid',\n 'TXXX:MusicBrainz Release Track Id': 'musicbrainz_trackid',\n 'TXXX:MusicBrainz Album Id': 'musicbrainz_albumid',\n 'TXXX:MusicBrainz Artist Id': 'musicbrainz_artistid',\n 'TXXX:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',\n 'TXXX:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',\n 'TXXX:MusicBrainz Work Id': 'musicbrainz_workid',\n 'TXXX:MusicBrainz TRM Id': 'musicbrainz_trmid',\n 'TXXX:MusicBrainz Disc Id': 'musicbrainz_discid',\n 'TXXX:ACOUSTID_ID': 'acoustid_id',\n 'TXXX:Acoustid Id': 'acoustid_id',\n 'TXXX:Acoustid Fingerprint': 'acoustid_fingerprint',\n 'TXXX:MusicIP PUID': 'musicip_puid',\n 'TXXX:MusicMagic Fingerprint': 'musicip_fingerprint',\n WOAR: 'website',\n // id3v2.4\n // ToDo: In same sequence as defined at http://id3.org/id3v2.4.0-frames\n TDRC: 'date', // date YYYY-MM-DD\n TYER: 'year',\n TDOR: 'originaldate',\n // 'TMCL:instrument': 'performer:instrument',\n 'TIPL:arranger': 'arranger',\n 'TIPL:engineer': 'engineer',\n 'TIPL:producer': 'producer',\n 'TIPL:DJ-mix': 'djmixer',\n 'TIPL:mix': 'mixer',\n TMOO: 'mood',\n // additional mappings:\n SYLT: 'lyrics',\n TSST: 'discsubtitle',\n TKEY: 'key',\n COMM: 'comment',\n TOPE: 'originalartist',\n // Windows Media Player\n 'PRIV:AverageLevel': 'averageLevel',\n 'PRIV:PeakLevel': 'peakLevel',\n // Discogs\n 'TXXX:DISCOGS_ARTIST_ID': 'discogs_artist_id',\n 'TXXX:DISCOGS_ARTISTS': 'artists',\n 'TXXX:DISCOGS_ARTIST_NAME': 'artists',\n 'TXXX:DISCOGS_ALBUM_ARTISTS': 'albumartist',\n 'TXXX:DISCOGS_CATALOG': 'catalognumber',\n 'TXXX:DISCOGS_COUNTRY': 'releasecountry',\n 'TXXX:DISCOGS_DATE': 'originaldate',\n 'TXXX:DISCOGS_LABEL': 'label',\n 'TXXX:DISCOGS_LABEL_ID': 'discogs_label_id',\n 'TXXX:DISCOGS_MASTER_RELEASE_ID': 'discogs_master_release_id',\n 'TXXX:DISCOGS_RATING': 'discogs_rating',\n 'TXXX:DISCOGS_RELEASED': 'date',\n 'TXXX:DISCOGS_RELEASE_ID': 'discogs_release_id',\n 'TXXX:DISCOGS_VOTES': 'discogs_votes',\n 'TXXX:CATALOGID': 'catalognumber',\n 'TXXX:STYLE': 'genre',\n 'TXXX:REPLAYGAIN_TRACK_PEAK': 'replaygain_track_peak',\n 'TXXX:REPLAYGAIN_TRACK_GAIN': 'replaygain_track_gain',\n 'TXXX:REPLAYGAIN_ALBUM_PEAK': 'replaygain_album_peak',\n 'TXXX:REPLAYGAIN_ALBUM_GAIN': 'replaygain_album_gain',\n 'TXXX:MP3GAIN_MINMAX': 'replaygain_track_minmax',\n 'TXXX:MP3GAIN_ALBUM_MINMAX': 'replaygain_album_minmax',\n 'TXXX:MP3GAIN_UNDO': 'replaygain_undo',\n MVNM: 'movement',\n MVIN: 'movementIndex',\n PCST: 'podcast',\n TCAT: 'category',\n TDES: 'description',\n TDRL: 'releasedate',\n TGID: 'podcastId',\n TKWD: 'keywords',\n WFED: 'podcasturl',\n GRP1: 'grouping',\n PCNT: 'playCounter',\n};\nexport class ID3v24TagMapper extends CaseInsensitiveTagMap {\n static toRating(popm) {\n return {\n source: popm.email,\n rating: popm.rating > 0 ? (popm.rating - 1) / 254 * CommonTagMapper.maxRatingScore : undefined\n };\n }\n constructor() {\n super(['ID3v2.3', 'ID3v2.4'], id3v24TagMap);\n }\n /**\n * Handle post mapping exceptions / correction\n * @param tag to post map\n * @param warnings Wil be used to register (collect) warnings\n */\n postMap(tag, warnings) {\n switch (tag.id) {\n case 'UFID':\n {\n // decode MusicBrainz Recording Id\n const idTag = tag.value;\n if (idTag.owner_identifier === 'http://musicbrainz.org') {\n tag.id += `:${idTag.owner_identifier}`;\n tag.value = decodeString(idTag.identifier, 'latin1'); // latin1 == iso-8859-1\n }\n }\n break;\n case 'PRIV':\n {\n const customTag = tag.value;\n switch (customTag.owner_identifier) {\n // decode Windows Media Player\n case 'AverageLevel':\n case 'PeakValue':\n tag.id += `:${customTag.owner_identifier}`;\n tag.value = customTag.data.length === 4 ? UINT32_LE.get(customTag.data, 0) : null;\n if (tag.value === null) {\n warnings.addWarning('Failed to parse PRIV:PeakValue');\n }\n break;\n default:\n warnings.addWarning(`Unknown PRIV owner-identifier: ${customTag.data}`);\n }\n }\n break;\n case 'POPM':\n tag.value = ID3v24TagMapper.toRating(tag.value);\n break;\n default:\n break;\n }\n }\n}\n", "import { CommonTagMapper } from './GenericTagMapper.js';\nexport class CaseInsensitiveTagMap extends CommonTagMapper {\n constructor(tagTypes, tagMap) {\n const upperCaseMap = {};\n for (const tag of Object.keys(tagMap)) {\n upperCaseMap[tag.toUpperCase()] = tagMap[tag];\n }\n super(tagTypes, upperCaseMap);\n }\n /**\n * @tag Native header tag\n * @return common tag name (alias)\n */\n getCommonName(tag) {\n return this.tagMap[tag.toUpperCase()];\n }\n}\n", "import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ASF Metadata tag mappings.\n * See http://msdn.microsoft.com/en-us/library/ms867702.aspx\n */\nconst asfTagMap = {\n Title: 'title',\n Author: 'artist',\n 'WM/AlbumArtist': 'albumartist',\n 'WM/AlbumTitle': 'album',\n 'WM/Year': 'date', // changed to 'year' to 'date' based on Picard mappings; ToDo: check me\n 'WM/OriginalReleaseTime': 'originaldate',\n 'WM/OriginalReleaseYear': 'originalyear',\n Description: 'comment',\n 'WM/TrackNumber': 'track',\n 'WM/PartOfSet': 'disk',\n 'WM/Genre': 'genre',\n 'WM/Composer': 'composer',\n 'WM/Lyrics': 'lyrics',\n 'WM/AlbumSortOrder': 'albumsort',\n 'WM/TitleSortOrder': 'titlesort',\n 'WM/ArtistSortOrder': 'artistsort',\n 'WM/AlbumArtistSortOrder': 'albumartistsort',\n 'WM/ComposerSortOrder': 'composersort',\n 'WM/Writer': 'lyricist',\n 'WM/Conductor': 'conductor',\n 'WM/ModifiedBy': 'remixer',\n 'WM/Engineer': 'engineer',\n 'WM/Producer': 'producer',\n 'WM/DJMixer': 'djmixer',\n 'WM/Mixer': 'mixer',\n 'WM/Publisher': 'label',\n 'WM/ContentGroupDescription': 'grouping',\n 'WM/SubTitle': 'subtitle',\n 'WM/SetSubTitle': 'discsubtitle',\n // 'WM/PartOfSet': 'totaldiscs',\n 'WM/IsCompilation': 'compilation',\n 'WM/SharedUserRating': 'rating',\n 'WM/BeatsPerMinute': 'bpm',\n 'WM/Mood': 'mood',\n 'WM/Media': 'media',\n 'WM/CatalogNo': 'catalognumber',\n 'MusicBrainz/Album Status': 'releasestatus',\n 'MusicBrainz/Album Type': 'releasetype',\n 'MusicBrainz/Album Release Country': 'releasecountry',\n 'WM/Script': 'script',\n 'WM/Language': 'language',\n Copyright: 'copyright',\n LICENSE: 'license',\n 'WM/EncodedBy': 'encodedby',\n 'WM/EncodingSettings': 'encodersettings',\n 'WM/Barcode': 'barcode',\n 'WM/ISRC': 'isrc',\n 'MusicBrainz/Track Id': 'musicbrainz_recordingid',\n 'MusicBrainz/Release Track Id': 'musicbrainz_trackid',\n 'MusicBrainz/Album Id': 'musicbrainz_albumid',\n 'MusicBrainz/Artist Id': 'musicbrainz_artistid',\n 'MusicBrainz/Album Artist Id': 'musicbrainz_albumartistid',\n 'MusicBrainz/Release Group Id': 'musicbrainz_releasegroupid',\n 'MusicBrainz/Work Id': 'musicbrainz_workid',\n 'MusicBrainz/TRM Id': 'musicbrainz_trmid',\n 'MusicBrainz/Disc Id': 'musicbrainz_discid',\n 'Acoustid/Id': 'acoustid_id',\n 'Acoustid/Fingerprint': 'acoustid_fingerprint',\n 'MusicIP/PUID': 'musicip_puid',\n 'WM/ARTISTS': 'artists',\n 'WM/InitialKey': 'key',\n ASIN: 'asin',\n 'WM/Work': 'work',\n 'WM/AuthorURL': 'website',\n 'WM/Picture': 'picture'\n};\nexport class AsfTagMapper extends CommonTagMapper {\n static toRating(rating) {\n return {\n rating: Number.parseFloat(rating + 1) / 5\n };\n }\n constructor() {\n super(['asf'], asfTagMap);\n }\n postMap(tag) {\n switch (tag.id) {\n case 'WM/SharedUserRating': {\n const keys = tag.id.split(':');\n tag.value = AsfTagMapper.toRating(tag.value);\n tag.id = keys[0];\n break;\n }\n }\n }\n}\n", "import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * ID3v2.2 tag mappings\n */\nexport const id3v22TagMap = {\n TT2: 'title',\n TP1: 'artist',\n TP2: 'albumartist',\n TAL: 'album',\n TYE: 'year',\n COM: 'comment',\n TRK: 'track',\n TPA: 'disk',\n TCO: 'genre',\n PIC: 'picture',\n TCM: 'composer',\n TOR: 'originaldate',\n TOT: 'originalalbum',\n TXT: 'lyricist',\n TP3: 'conductor',\n TPB: 'label',\n TT1: 'grouping',\n TT3: 'subtitle',\n TLA: 'language',\n TCR: 'copyright',\n WCP: 'license',\n TEN: 'encodedby',\n TSS: 'encodersettings',\n WAR: 'website',\n PCS: 'podcast',\n TCP: \"compilation\",\n TDR: 'date',\n TS2: 'albumartistsort',\n TSA: 'albumsort',\n TSC: 'composersort',\n TSP: 'artistsort',\n TST: 'titlesort',\n WFD: 'podcasturl',\n TBP: 'bpm',\n GP1: 'grouping'\n};\nexport class ID3v22TagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super(['ID3v2.2'], id3v22TagMap);\n }\n}\n", "import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * ID3v2.2 tag mappings\n */\nconst apev2TagMap = {\n Title: 'title',\n Artist: 'artist',\n Artists: 'artists',\n 'Album Artist': 'albumartist',\n Album: 'album',\n Year: 'date',\n Originalyear: 'originalyear',\n Originaldate: 'originaldate',\n Releasedate: 'releasedate',\n Comment: 'comment',\n Track: 'track',\n Disc: 'disk',\n DISCNUMBER: 'disk', // ToDo: backwards compatibility', valid tag?\n Genre: 'genre',\n 'Cover Art (Front)': 'picture',\n 'Cover Art (Back)': 'picture',\n Composer: 'composer',\n Lyrics: 'lyrics',\n ALBUMSORT: 'albumsort',\n TITLESORT: 'titlesort',\n WORK: 'work',\n ARTISTSORT: 'artistsort',\n ALBUMARTISTSORT: 'albumartistsort',\n COMPOSERSORT: 'composersort',\n Lyricist: 'lyricist',\n Writer: 'writer',\n Conductor: 'conductor',\n // 'Performer=artist\u00A0(instrument)': 'performer:instrument',\n MixArtist: 'remixer',\n Arranger: 'arranger',\n Engineer: 'engineer',\n Producer: 'producer',\n DJMixer: 'djmixer',\n Mixer: 'mixer',\n Label: 'label',\n Grouping: 'grouping',\n Subtitle: 'subtitle',\n DiscSubtitle: 'discsubtitle',\n Compilation: 'compilation',\n BPM: 'bpm',\n Mood: 'mood',\n Media: 'media',\n CatalogNumber: 'catalognumber',\n MUSICBRAINZ_ALBUMSTATUS: 'releasestatus',\n MUSICBRAINZ_ALBUMTYPE: 'releasetype',\n RELEASECOUNTRY: 'releasecountry',\n Script: 'script',\n Language: 'language',\n Copyright: 'copyright',\n LICENSE: 'license',\n EncodedBy: 'encodedby',\n EncoderSettings: 'encodersettings',\n Barcode: 'barcode',\n ISRC: 'isrc',\n ASIN: 'asin',\n musicbrainz_trackid: 'musicbrainz_recordingid',\n musicbrainz_releasetrackid: 'musicbrainz_trackid',\n MUSICBRAINZ_ALBUMID: 'musicbrainz_albumid',\n MUSICBRAINZ_ARTISTID: 'musicbrainz_artistid',\n MUSICBRAINZ_ALBUMARTISTID: 'musicbrainz_albumartistid',\n MUSICBRAINZ_RELEASEGROUPID: 'musicbrainz_releasegroupid',\n MUSICBRAINZ_WORKID: 'musicbrainz_workid',\n MUSICBRAINZ_TRMID: 'musicbrainz_trmid',\n MUSICBRAINZ_DISCID: 'musicbrainz_discid',\n Acoustid_Id: 'acoustid_id',\n ACOUSTID_FINGERPRINT: 'acoustid_fingerprint',\n MUSICIP_PUID: 'musicip_puid',\n Weblink: 'website',\n REPLAYGAIN_TRACK_GAIN: 'replaygain_track_gain',\n REPLAYGAIN_TRACK_PEAK: 'replaygain_track_peak',\n MP3GAIN_MINMAX: 'replaygain_track_minmax',\n MP3GAIN_UNDO: 'replaygain_undo'\n};\nexport class APEv2TagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super(['APEv2'], apev2TagMap);\n }\n}\n", "import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * Ref: https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n */\nconst mp4TagMap = {\n '\u00A9nam': 'title',\n '\u00A9ART': 'artist',\n aART: 'albumartist',\n /**\n * ToDo: Album artist seems to be stored here while Picard documentation says: aART\n */\n '----:com.apple.iTunes:Band': 'albumartist',\n '\u00A9alb': 'album',\n '\u00A9day': 'date',\n '\u00A9cmt': 'comment',\n '\u00A9com': 'comment',\n trkn: 'track',\n disk: 'disk',\n '\u00A9gen': 'genre',\n covr: 'picture',\n '\u00A9wrt': 'composer',\n '\u00A9lyr': 'lyrics',\n soal: 'albumsort',\n sonm: 'titlesort',\n soar: 'artistsort',\n soaa: 'albumartistsort',\n soco: 'composersort',\n '----:com.apple.iTunes:LYRICIST': 'lyricist',\n '----:com.apple.iTunes:CONDUCTOR': 'conductor',\n '----:com.apple.iTunes:REMIXER': 'remixer',\n '----:com.apple.iTunes:ENGINEER': 'engineer',\n '----:com.apple.iTunes:PRODUCER': 'producer',\n '----:com.apple.iTunes:DJMIXER': 'djmixer',\n '----:com.apple.iTunes:MIXER': 'mixer',\n '----:com.apple.iTunes:LABEL': 'label',\n '\u00A9grp': 'grouping',\n '----:com.apple.iTunes:SUBTITLE': 'subtitle',\n '----:com.apple.iTunes:DISCSUBTITLE': 'discsubtitle',\n cpil: 'compilation',\n tmpo: 'bpm',\n '----:com.apple.iTunes:MOOD': 'mood',\n '----:com.apple.iTunes:MEDIA': 'media',\n '----:com.apple.iTunes:CATALOGNUMBER': 'catalognumber',\n tvsh: 'tvShow',\n tvsn: 'tvSeason',\n tves: 'tvEpisode',\n sosn: 'tvShowSort',\n tven: 'tvEpisodeId',\n tvnn: 'tvNetwork',\n pcst: 'podcast',\n purl: 'podcasturl',\n '----:com.apple.iTunes:MusicBrainz Album Status': 'releasestatus',\n '----:com.apple.iTunes:MusicBrainz Album Type': 'releasetype',\n '----:com.apple.iTunes:MusicBrainz Album Release Country': 'releasecountry',\n '----:com.apple.iTunes:SCRIPT': 'script',\n '----:com.apple.iTunes:LANGUAGE': 'language',\n cprt: 'copyright',\n '\u00A9cpy': 'copyright',\n '----:com.apple.iTunes:LICENSE': 'license',\n '\u00A9too': 'encodedby',\n pgap: 'gapless',\n '----:com.apple.iTunes:BARCODE': 'barcode',\n '----:com.apple.iTunes:ISRC': 'isrc',\n '----:com.apple.iTunes:ASIN': 'asin',\n '----:com.apple.iTunes:NOTES': 'comment',\n '----:com.apple.iTunes:MusicBrainz Track Id': 'musicbrainz_recordingid',\n '----:com.apple.iTunes:MusicBrainz Release Track Id': 'musicbrainz_trackid',\n '----:com.apple.iTunes:MusicBrainz Album Id': 'musicbrainz_albumid',\n '----:com.apple.iTunes:MusicBrainz Artist Id': 'musicbrainz_artistid',\n '----:com.apple.iTunes:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',\n '----:com.apple.iTunes:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',\n '----:com.apple.iTunes:MusicBrainz Work Id': 'musicbrainz_workid',\n '----:com.apple.iTunes:MusicBrainz TRM Id': 'musicbrainz_trmid',\n '----:com.apple.iTunes:MusicBrainz Disc Id': 'musicbrainz_discid',\n '----:com.apple.iTunes:Acoustid Id': 'acoustid_id',\n '----:com.apple.iTunes:Acoustid Fingerprint': 'acoustid_fingerprint',\n '----:com.apple.iTunes:MusicIP PUID': 'musicip_puid',\n '----:com.apple.iTunes:fingerprint': 'musicip_fingerprint',\n '----:com.apple.iTunes:replaygain_track_gain': 'replaygain_track_gain',\n '----:com.apple.iTunes:replaygain_track_peak': 'replaygain_track_peak',\n '----:com.apple.iTunes:replaygain_album_gain': 'replaygain_album_gain',\n '----:com.apple.iTunes:replaygain_album_peak': 'replaygain_album_peak',\n '----:com.apple.iTunes:replaygain_track_minmax': 'replaygain_track_minmax',\n '----:com.apple.iTunes:replaygain_album_minmax': 'replaygain_album_minmax',\n '----:com.apple.iTunes:replaygain_undo': 'replaygain_undo',\n // Additional mappings:\n gnre: 'genre', // ToDo: check mapping\n '----:com.apple.iTunes:ALBUMARTISTSORT': 'albumartistsort',\n '----:com.apple.iTunes:ARTISTS': 'artists',\n '----:com.apple.iTunes:ORIGINALDATE': 'originaldate',\n '----:com.apple.iTunes:ORIGINALYEAR': 'originalyear',\n '----:com.apple.iTunes:RELEASEDATE': 'releasedate',\n // '----:com.apple.iTunes:PERFORMER': 'performer'\n desc: 'description',\n ldes: 'longDescription',\n '\u00A9mvn': 'movement',\n '\u00A9mvi': 'movementIndex',\n '\u00A9mvc': 'movementTotal',\n '\u00A9wrk': 'work',\n catg: 'category',\n egid: 'podcastId',\n hdvd: 'hdVideo',\n keyw: 'keywords',\n shwm: 'showMovement',\n stik: 'stik',\n rate: 'rating'\n};\nexport const tagType = 'iTunes';\nexport class MP4TagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super([tagType], mp4TagMap);\n }\n postMap(tag, _warnings) {\n switch (tag.id) {\n case 'rate':\n tag.value = {\n source: undefined,\n rating: Number.parseFloat(tag.value) / 100\n };\n break;\n }\n }\n}\n", "import { CommonTagMapper } from '../../common/GenericTagMapper.js';\n/**\n * Vorbis tag mappings\n *\n * Mapping from native header format to one or possibly more 'common' entries\n * The common entries aim to read the same information from different media files\n * independent of the underlying format\n */\nconst vorbisTagMap = {\n TITLE: 'title',\n ARTIST: 'artist',\n ARTISTS: 'artists',\n ALBUMARTIST: 'albumartist',\n 'ALBUM ARTIST': 'albumartist',\n ALBUM: 'album',\n DATE: 'date',\n ORIGINALDATE: 'originaldate',\n ORIGINALYEAR: 'originalyear',\n RELEASEDATE: 'releasedate',\n COMMENT: 'comment',\n TRACKNUMBER: 'track',\n DISCNUMBER: 'disk',\n GENRE: 'genre',\n METADATA_BLOCK_PICTURE: 'picture',\n COMPOSER: 'composer',\n LYRICS: 'lyrics',\n ALBUMSORT: 'albumsort',\n TITLESORT: 'titlesort',\n WORK: 'work',\n ARTISTSORT: 'artistsort',\n ALBUMARTISTSORT: 'albumartistsort',\n COMPOSERSORT: 'composersort',\n LYRICIST: 'lyricist',\n WRITER: 'writer',\n CONDUCTOR: 'conductor',\n // 'PERFORMER=artist\u00A0(instrument)': 'performer:instrument', // ToDo\n REMIXER: 'remixer',\n ARRANGER: 'arranger',\n ENGINEER: 'engineer',\n PRODUCER: 'producer',\n DJMIXER: 'djmixer',\n MIXER: 'mixer',\n LABEL: 'label',\n GROUPING: 'grouping',\n SUBTITLE: 'subtitle',\n DISCSUBTITLE: 'discsubtitle',\n TRACKTOTAL: 'totaltracks',\n DISCTOTAL: 'totaldiscs',\n COMPILATION: 'compilation',\n RATING: 'rating',\n BPM: 'bpm',\n KEY: 'key',\n MOOD: 'mood',\n MEDIA: 'media',\n CATALOGNUMBER: 'catalognumber',\n RELEASESTATUS: 'releasestatus',\n RELEASETYPE: 'releasetype',\n RELEASECOUNTRY: 'releasecountry',\n SCRIPT: 'script',\n LANGUAGE: 'language',\n COPYRIGHT: 'copyright',\n LICENSE: 'license',\n ENCODEDBY: 'encodedby',\n ENCODERSETTINGS: 'encodersettings',\n BARCODE: 'barcode',\n ISRC: 'isrc',\n ASIN: 'asin',\n MUSICBRAINZ_TRACKID: 'musicbrainz_recordingid',\n MUSICBRAINZ_RELEASETRACKID: 'musicbrainz_trackid',\n MUSICBRAINZ_ALBUMID: 'musicbrainz_albumid',\n MUSICBRAINZ_ARTISTID: 'musicbrainz_artistid',\n MUSICBRAINZ_ALBUMARTISTID: 'musicbrainz_albumartistid',\n MUSICBRAINZ_RELEASEGROUPID: 'musicbrainz_releasegroupid',\n MUSICBRAINZ_WORKID: 'musicbrainz_workid',\n MUSICBRAINZ_TRMID: 'musicbrainz_trmid',\n MUSICBRAINZ_DISCID: 'musicbrainz_discid',\n ACOUSTID_ID: 'acoustid_id',\n ACOUSTID_ID_FINGERPRINT: 'acoustid_fingerprint',\n MUSICIP_PUID: 'musicip_puid',\n // 'FINGERPRINT=MusicMagic Fingerprint\u00A0{fingerprint}': 'musicip_fingerprint', // ToDo\n WEBSITE: 'website',\n NOTES: 'notes',\n TOTALTRACKS: 'totaltracks',\n TOTALDISCS: 'totaldiscs',\n // Discogs\n DISCOGS_ARTIST_ID: 'discogs_artist_id',\n DISCOGS_ARTISTS: 'artists',\n DISCOGS_ARTIST_NAME: 'artists',\n DISCOGS_ALBUM_ARTISTS: 'albumartist',\n DISCOGS_CATALOG: 'catalognumber',\n DISCOGS_COUNTRY: 'releasecountry',\n DISCOGS_DATE: 'originaldate',\n DISCOGS_LABEL: 'label',\n DISCOGS_LABEL_ID: 'discogs_label_id',\n DISCOGS_MASTER_RELEASE_ID: 'discogs_master_release_id',\n DISCOGS_RATING: 'discogs_rating',\n DISCOGS_RELEASED: 'date',\n DISCOGS_RELEASE_ID: 'discogs_release_id',\n DISCOGS_VOTES: 'discogs_votes',\n CATALOGID: 'catalognumber',\n STYLE: 'genre',\n //\n REPLAYGAIN_TRACK_GAIN: 'replaygain_track_gain',\n REPLAYGAIN_TRACK_PEAK: 'replaygain_track_peak',\n REPLAYGAIN_ALBUM_GAIN: 'replaygain_album_gain',\n REPLAYGAIN_ALBUM_PEAK: 'replaygain_album_peak',\n // To Sure if these (REPLAYGAIN_MINMAX, REPLAYGAIN_ALBUM_MINMAX & REPLAYGAIN_UNDO) are used for Vorbis:\n REPLAYGAIN_MINMAX: 'replaygain_track_minmax',\n REPLAYGAIN_ALBUM_MINMAX: 'replaygain_album_minmax',\n REPLAYGAIN_UNDO: 'replaygain_undo'\n};\nexport class VorbisTagMapper extends CommonTagMapper {\n static toRating(email, rating, maxScore) {\n return {\n source: email ? email.toLowerCase() : undefined,\n rating: (Number.parseFloat(rating) / maxScore) * CommonTagMapper.maxRatingScore\n };\n }\n constructor() {\n super(['vorbis'], vorbisTagMap);\n }\n postMap(tag) {\n if (tag.id === 'RATING') {\n // The way Winamp 5.666 assigns rating\n tag.value = VorbisTagMapper.toRating(undefined, tag.value, 100);\n }\n else if (tag.id.indexOf('RATING:') === 0) {\n const keys = tag.id.split(':');\n tag.value = VorbisTagMapper.toRating(keys[1], tag.value, 1);\n tag.id = keys[0];\n }\n }\n}\n", "import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * RIFF Info Tags; part of the EXIF 2.3\n * Ref: http://owl.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info\n */\nexport const riffInfoTagMap = {\n IART: 'artist', // Artist\n ICRD: 'date', // DateCreated\n INAM: 'title', // Title\n TITL: 'title',\n IPRD: 'album', // Product\n ITRK: 'track',\n IPRT: 'track', // Additional tag for track index\n COMM: 'comment', // Comments\n ICMT: 'comment', // Country\n ICNT: 'releasecountry',\n GNRE: 'genre', // Genre\n IWRI: 'writer', // WrittenBy\n RATE: 'rating',\n YEAR: 'year',\n ISFT: 'encodedby', // Software\n CODE: 'encodedby', // EncodedBy\n TURL: 'website', // URL,\n IGNR: 'genre', // Genre\n IENG: 'engineer', // Engineer\n ITCH: 'technician', // Technician\n IMED: 'media', // Original Media\n IRPD: 'album' // Product, where the file was intended for\n};\nexport class RiffInfoTagMapper extends CommonTagMapper {\n constructor() {\n super(['exif'], riffInfoTagMap);\n }\n}\n", "import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap.js';\n/**\n * EBML Tag map\n */\nconst ebmlTagMap = {\n 'segment:title': 'title',\n 'album:ARTIST': 'albumartist',\n 'album:ARTISTSORT': 'albumartistsort',\n 'album:TITLE': 'album',\n 'album:DATE_RECORDED': 'originaldate',\n 'album:DATE_RELEASED': 'releasedate',\n 'album:PART_NUMBER': 'disk',\n 'album:TOTAL_PARTS': 'totaltracks',\n 'track:ARTIST': 'artist',\n 'track:ARTISTSORT': 'artistsort',\n 'track:TITLE': 'title',\n 'track:PART_NUMBER': 'track',\n 'track:MUSICBRAINZ_TRACKID': 'musicbrainz_recordingid',\n 'track:MUSICBRAINZ_ALBUMID': 'musicbrainz_albumid',\n 'track:MUSICBRAINZ_ARTISTID': 'musicbrainz_artistid',\n 'track:PUBLISHER': 'label',\n 'track:GENRE': 'genre',\n 'track:ENCODER': 'encodedby',\n 'track:ENCODER_OPTIONS': 'encodersettings',\n 'edition:TOTAL_PARTS': 'totaldiscs',\n picture: 'picture'\n};\nexport class MatroskaTagMapper extends CaseInsensitiveTagMap {\n constructor() {\n super(['matroska'], ebmlTagMap);\n }\n}\n", "import { CommonTagMapper } from '../common/GenericTagMapper.js';\n/**\n * ID3v1 tag mappings\n */\nconst tagMap = {\n NAME: 'title',\n AUTH: 'artist',\n '(c) ': 'copyright',\n ANNO: 'comment'\n};\nexport class AiffTagMapper extends CommonTagMapper {\n constructor() {\n super(['AIFF'], tagMap);\n }\n}\n", "import { LyricsContentType, TimestampFormat } from '../type.js';\n// Shared timestamp regex for LRC format\nconst TIMESTAMP_REGEX = /\\[(\\d{2}):(\\d{2})\\.(\\d{2,3})]/;\nexport function parseLyrics(input) {\n if (TIMESTAMP_REGEX.test(input)) {\n return parseLrc(input);\n }\n return toUnsyncedLyrics(input);\n}\nexport function toUnsyncedLyrics(lyrics) {\n return {\n contentType: LyricsContentType.lyrics,\n timeStampFormat: TimestampFormat.notSynchronized,\n text: lyrics.trim(),\n syncText: [],\n };\n}\n/**\n * Parse LRC (Lyrics) formatted text\n * Ref: https://en.wikipedia.org/wiki/LRC_(file_format)\n * @param lrcString\n */\nexport function parseLrc(lrcString) {\n const lines = lrcString.split('\\n');\n const syncText = [];\n for (const line of lines) {\n const match = line.match(TIMESTAMP_REGEX);\n if (match) {\n const minutes = Number.parseInt(match[1], 10);\n const seconds = Number.parseInt(match[2], 10);\n const ms = match[3].length === 3\n ? Number.parseInt(match[3], 10)\n : Number.parseInt(match[3], 10) * 10;\n const timestamp = (minutes * 60 + seconds) * 1000 + ms;\n const text = line.replace(TIMESTAMP_REGEX, '').trim();\n syncText.push({ timestamp, text });\n }\n }\n return {\n contentType: LyricsContentType.lyrics,\n timeStampFormat: TimestampFormat.milliseconds,\n text: syncText.map(line => line.text).join('\\n'),\n syncText,\n };\n}\n", "export const mpegParserLoader = {\n parserType: 'mpeg',\n extensions: ['.mp2', '.mp3', '.m2a', '.aac', 'aacp'],\n mimeTypes: ['audio/mpeg', 'audio/mp3', 'audio/aacs', 'audio/aacp'],\n async load() {\n return (await import('./MpegParser.js')).MpegParser;\n }\n};\n", "export const apeParserLoader = {\n parserType: 'apev2',\n extensions: ['.ape'],\n mimeTypes: ['audio/ape', 'audio/monkeys-audio'],\n async load() {\n return (await import('./APEv2Parser.js')).APEv2Parser;\n }\n};\n", "export const asfParserLoader = {\n parserType: 'asf',\n extensions: ['.asf', '.wma', '.wmv'],\n mimeTypes: ['audio/ms-wma', 'video/ms-wmv', 'audio/ms-asf', 'video/ms-asf', 'application/vnd.ms-asf'],\n async load() {\n return (await import('./AsfParser.js')).AsfParser;\n }\n};\n", "export const dsdiffParserLoader = {\n parserType: 'dsdiff',\n extensions: ['.dff'],\n mimeTypes: ['audio/dsf', 'audio/dsd'],\n async load() {\n return (await import('./DsdiffParser.js')).DsdiffParser;\n }\n};\n", "export const aiffParserLoader = {\n parserType: 'aiff',\n extensions: ['.aif', 'aiff', 'aifc'],\n mimeTypes: ['audio/aiff', 'audio/aif', 'audio/aifc', 'application/aiff'],\n async load() {\n return (await import('./AiffParser.js')).AIFFParser;\n }\n};\n", "export const dsfParserLoader = {\n parserType: 'dsf',\n extensions: ['.dsf'],\n mimeTypes: ['audio/dsf'],\n async load() {\n return (await import('./DsfParser.js')).DsfParser;\n }\n};\n", "export const flacParserLoader = {\n parserType: 'flac',\n extensions: ['.flac'],\n mimeTypes: ['audio/flac'],\n async load() {\n return (await import('./FlacParser.js')).FlacParser;\n }\n};\n", "export const matroskaParserLoader = {\n parserType: 'matroska',\n extensions: ['.mka', '.mkv', '.mk3d', '.mks', 'webm'],\n mimeTypes: ['audio/matroska', 'video/matroska', 'audio/webm', 'video/webm'],\n async load() {\n return (await import('./MatroskaParser.js')).MatroskaParser;\n }\n};\n", "export const mp4ParserLoader = {\n parserType: 'mp4',\n extensions: ['.mp4', '.m4a', '.m4b', '.m4pa', 'm4v', 'm4r', '3gp', '.mov', '.movie', '.qt'],\n mimeTypes: ['audio/mp4', 'audio/m4a', 'video/m4v', 'video/mp4', 'video/quicktime'],\n async load() {\n return (await import('./MP4Parser.js')).MP4Parser;\n }\n};\n", "export const musepackParserLoader = {\n parserType: 'musepack',\n extensions: ['.mpc'],\n mimeTypes: ['audio/musepack'],\n async load() {\n return (await import('./MusepackParser.js')).MusepackParser;\n }\n};\n", "export const oggParserLoader = {\n parserType: 'ogg',\n extensions: ['.ogg', '.ogv', '.oga', '.ogm', '.ogx', '.opus', '.spx'],\n mimeTypes: ['audio/ogg', 'audio/opus', 'audio/speex', 'video/ogg'], // RFC 7845, RFC 6716, RFC 5574\n async load() {\n return (await import('./OggParser.js')).OggParser;\n }\n};\n", "export const wavpackParserLoader = {\n parserType: 'wavpack',\n extensions: ['.wv', '.wvp'],\n mimeTypes: ['audio/wavpack'],\n async load() {\n return (await import('./WavPackParser.js')).WavPackParser;\n }\n};\n", "export const riffParserLoader = {\n parserType: 'riff',\n extensions: ['.wav', 'wave', '.bwf'],\n mimeTypes: ['audio/vnd.wave', 'audio/wav', 'audio/wave'],\n async load() {\n return (await import('./WaveParser.js')).WaveParser;\n }\n};\n", "import { textDecode } from '@borewit/text-codec';\nexport const endTag2 = 'LYRICS200';\nexport async function getLyricsHeaderLength(tokenizer) {\n const fileSize = tokenizer.fileInfo.size;\n if (fileSize >= 143) {\n const buf = new Uint8Array(15);\n const position = tokenizer.position;\n await tokenizer.readBuffer(buf, { position: fileSize - 143 });\n tokenizer.setPosition(position); // Restore position\n const txt = textDecode(buf, 'latin1');\n const tag = txt.substring(6);\n if (tag === endTag2) {\n return Number.parseInt(txt.substring(0, 6), 10) + 15;\n }\n }\n return 0;\n}\n"],
5
+ "mappings": "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A;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,YAAY;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EA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",
6
+ "names": ["initDebug", "import_debug", "import_debug", "tagMap", "tagMap", "tagType", "debug", "initDebug", "tagType", "debug", "initDebug", "ContentType", "mimeTypeParse", "mxc"]
7
+ }