framefields 2.13.0 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/README.md +9 -4
  2. package/dist/audio/index.d.mts +5 -5
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-CHV33Od9.d.mts → audio-CdCuGK5d.d.mts} +3 -3
  5. package/dist/{audio-CHV33Od9.d.mts.map → audio-CdCuGK5d.d.mts.map} +1 -1
  6. package/dist/{audio-DHzLQ_RG.mjs → audio-DFwRbID_.mjs} +3 -3
  7. package/dist/{audio-DHzLQ_RG.mjs.map → audio-DFwRbID_.mjs.map} +1 -1
  8. package/dist/cli/check-worker.mjs +43 -43
  9. package/dist/cloud/index.d.mts.map +1 -1
  10. package/dist/components/index.d.mts +13 -13
  11. package/dist/components/index.mjs +42 -42
  12. package/dist/{dist-D3BeAZ7X.mjs → dist--Uu5bQ_6.mjs} +870 -348
  13. package/dist/dist--Uu5bQ_6.mjs.map +1 -0
  14. package/dist/{dist-CUNvNDS3.mjs → dist-B8Nby2CU.mjs} +18 -4
  15. package/dist/dist-B8Nby2CU.mjs.map +1 -0
  16. package/dist/effects/index.d.mts +5 -5
  17. package/dist/effects/index.mjs +34 -34
  18. package/dist/{effects-BiDgCK1L.mjs → effects-WMgv8ZaD.mjs} +2 -2
  19. package/dist/{effects-BiDgCK1L.mjs.map → effects-WMgv8ZaD.mjs.map} +1 -1
  20. package/dist/fonts/index.mjs +2 -2
  21. package/dist/{fonts-DeDPWdvJ.mjs → fonts-OW3yAfO5.mjs} +2 -2
  22. package/dist/{fonts-DeDPWdvJ.mjs.map → fonts-OW3yAfO5.mjs.map} +1 -1
  23. package/dist/{gpu-CWjgql4C.mjs → gpu-R4T2Tndu.mjs} +2 -2
  24. package/dist/{gpu-CWjgql4C.mjs.map → gpu-R4T2Tndu.mjs.map} +1 -1
  25. package/dist/{index-E2IXX0Cz.d.mts → index-9xte4JgL.d.mts} +110 -61
  26. package/dist/index-9xte4JgL.d.mts.map +1 -0
  27. package/dist/{index-YB9j9KUx.d.mts → index-B0Vq8Bwf.d.mts} +3 -3
  28. package/dist/{index-YB9j9KUx.d.mts.map → index-B0Vq8Bwf.d.mts.map} +1 -1
  29. package/dist/{index-BFTtXosj.d.mts → index-BVd6nXd5.d.mts} +2 -2
  30. package/dist/index-BVd6nXd5.d.mts.map +1 -0
  31. package/dist/{index-CnZhBlob.d.mts → index-Bv7gxGK1.d.mts} +2 -2
  32. package/dist/{index-CnZhBlob.d.mts.map → index-Bv7gxGK1.d.mts.map} +1 -1
  33. package/dist/{index-a6JrbAK0.d.mts → index-C-V6CAhP.d.mts} +32 -2
  34. package/dist/index-C-V6CAhP.d.mts.map +1 -0
  35. package/dist/{index-DQ1U3HC3.d.mts → index-C7-p9zwU.d.mts} +3 -3
  36. package/dist/{index-DQ1U3HC3.d.mts.map → index-C7-p9zwU.d.mts.map} +1 -1
  37. package/dist/{index-rtCXNxGO.d.mts → index-CEKxvGY-.d.mts} +2 -2
  38. package/dist/{index-rtCXNxGO.d.mts.map → index-CEKxvGY-.d.mts.map} +1 -1
  39. package/dist/{index-X2u96TEo.d.mts → index-CRaydvLi.d.mts} +29 -11
  40. package/dist/index-CRaydvLi.d.mts.map +1 -0
  41. package/dist/{index-DBh3WphX.d.mts → index-D1FqV1eu.d.mts} +2 -2
  42. package/dist/{index-DBh3WphX.d.mts.map → index-D1FqV1eu.d.mts.map} +1 -1
  43. package/dist/{index-Dibc_xpC.d.mts → index-DoP6EiHj.d.mts} +5 -5
  44. package/dist/{index-Dibc_xpC.d.mts.map → index-DoP6EiHj.d.mts.map} +1 -1
  45. package/dist/{index-D68eGFNE.d.mts → index-GA9_Z8Fn.d.mts} +2 -2
  46. package/dist/{index-D68eGFNE.d.mts.map → index-GA9_Z8Fn.d.mts.map} +1 -1
  47. package/dist/index.d.mts +14 -14
  48. package/dist/index.mjs +50 -50
  49. package/dist/preview/index.d.mts +5 -5
  50. package/dist/preview/index.mjs +10 -10
  51. package/dist/{preview-PDz7o2xg.mjs → preview-D7BGmE1E.mjs} +3 -3
  52. package/dist/{preview-PDz7o2xg.mjs.map → preview-D7BGmE1E.mjs.map} +1 -1
  53. package/dist/preview-engine/audio.mjs +1 -1
  54. package/dist/preview-engine/{chunk-IEEV5RB3.mjs → chunk-3C2XT64C.mjs} +1 -1
  55. package/dist/preview-engine/chunk-52X7SURQ.mjs +494 -0
  56. package/dist/preview-engine/{chunk-XYCR3STG.mjs → chunk-5DZTPUMH.mjs} +198 -92
  57. package/dist/preview-engine/{chunk-4P3MMJWD.mjs → chunk-FZ4RD7HV.mjs} +1 -1
  58. package/dist/preview-engine/chunk-GNDE3OXQ.mjs +5 -0
  59. package/dist/preview-engine/chunk-OBIJIQCZ.mjs +1 -0
  60. package/dist/preview-engine/{chunk-SMHEMYCV.mjs → chunk-UBY2UYEL.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-UFPA36D2.mjs → chunk-UPZURPJY.mjs} +31 -31
  62. package/dist/preview-engine/components.mjs +1 -1
  63. package/dist/preview-engine/effects.mjs +1 -1
  64. package/dist/preview-engine/framefields.mjs +1 -1
  65. package/dist/preview-engine/player.mjs +1 -1
  66. package/dist/preview-engine/renderers-DLJOA3BM.mjs +228 -0
  67. package/dist/preview-engine/signals.mjs +1 -1
  68. package/dist/{program-Bn6ko_I4.mjs → program-tFKCWU2j.mjs} +109 -12
  69. package/dist/program-tFKCWU2j.mjs.map +1 -0
  70. package/dist/renderer/index.d.mts +4 -4
  71. package/dist/renderer/index.mjs +2 -2
  72. package/dist/{renderer-BCTUqJG7.mjs → renderer-03mYJLgX.mjs} +3 -3
  73. package/dist/{renderer-BCTUqJG7.mjs.map → renderer-03mYJLgX.mjs.map} +1 -1
  74. package/dist/{renderer-CyUiXLRa.mjs → renderer-0rveCDm-.mjs} +3 -3
  75. package/dist/{renderer-CyUiXLRa.mjs.map → renderer-0rveCDm-.mjs.map} +1 -1
  76. package/dist/{renderer-BUj7jE6t.mjs → renderer-2PjR3w-q.mjs} +3 -3
  77. package/dist/{renderer-BUj7jE6t.mjs.map → renderer-2PjR3w-q.mjs.map} +1 -1
  78. package/dist/{renderer-BqUAyzCZ.mjs → renderer-47y12Z37.mjs} +2 -2
  79. package/dist/{renderer-BqUAyzCZ.mjs.map → renderer-47y12Z37.mjs.map} +1 -1
  80. package/dist/renderer-6_bzbbXt.mjs +5 -0
  81. package/dist/renderer-8M-9G6F_.mjs +5 -0
  82. package/dist/{renderer-CwlY8Tb-.mjs → renderer-B0yVUOPP.mjs} +2 -2
  83. package/dist/{renderer-CwlY8Tb-.mjs.map → renderer-B0yVUOPP.mjs.map} +1 -1
  84. package/dist/renderer-B5OzKvF8.mjs +5 -0
  85. package/dist/{renderer-CgK7Q1G8.mjs → renderer-B7G1KohJ.mjs} +2 -2
  86. package/dist/renderer-BBCZ2qbE.mjs +5 -0
  87. package/dist/{renderer-CuPAQjDK.mjs → renderer-BBMtmxks.mjs} +3 -3
  88. package/dist/{renderer-CuPAQjDK.mjs.map → renderer-BBMtmxks.mjs.map} +1 -1
  89. package/dist/renderer-BChbxCux.mjs +5 -0
  90. package/dist/{renderer-C-GTxnfv.mjs → renderer-BDzn1AKF.mjs} +2 -2
  91. package/dist/{renderer-C-GTxnfv.mjs.map → renderer-BDzn1AKF.mjs.map} +1 -1
  92. package/dist/renderer-BGeMPr8C.mjs +5 -0
  93. package/dist/{renderer-RzkU_O1i.mjs → renderer-BGp0An5A.mjs} +3 -3
  94. package/dist/{renderer-RzkU_O1i.mjs.map → renderer-BGp0An5A.mjs.map} +1 -1
  95. package/dist/{renderer-BZgJj8Cl.mjs → renderer-BH7UCMPQ.mjs} +2 -2
  96. package/dist/{renderer-BZgJj8Cl.mjs.map → renderer-BH7UCMPQ.mjs.map} +1 -1
  97. package/dist/{renderer-aRk849b3.d.mts → renderer-BHYJlK6H.d.mts} +2 -2
  98. package/dist/{renderer-aRk849b3.d.mts.map → renderer-BHYJlK6H.d.mts.map} +1 -1
  99. package/dist/{renderer-Cu3iKMSJ.mjs → renderer-BJ8ea92W.mjs} +3 -3
  100. package/dist/{renderer-Cu3iKMSJ.mjs.map → renderer-BJ8ea92W.mjs.map} +1 -1
  101. package/dist/{renderer-Dp5ChuOs.mjs → renderer-BOSZAdgF.mjs} +2 -2
  102. package/dist/{renderer-Dp5ChuOs.mjs.map → renderer-BOSZAdgF.mjs.map} +1 -1
  103. package/dist/renderer-BPQ8Pkjb.mjs +5 -0
  104. package/dist/renderer-BTRpA3HD.mjs +5 -0
  105. package/dist/{renderer-vll8LX0I.mjs → renderer-BVIXKfbC.mjs} +132 -116
  106. package/dist/renderer-BVIXKfbC.mjs.map +1 -0
  107. package/dist/{renderer-DpZballM.mjs → renderer-BVU22lBS.mjs} +2 -2
  108. package/dist/{renderer-DpZballM.mjs.map → renderer-BVU22lBS.mjs.map} +1 -1
  109. package/dist/renderer-BVsECSn-.mjs +5 -0
  110. package/dist/{renderer-DwGlDNOV.mjs → renderer-BWSRryIA.mjs} +2 -2
  111. package/dist/{renderer-DwGlDNOV.mjs.map → renderer-BWSRryIA.mjs.map} +1 -1
  112. package/dist/{renderer-BMpmmYOq.mjs → renderer-BacY4nh8.mjs} +2 -2
  113. package/dist/{renderer-BMpmmYOq.mjs.map → renderer-BacY4nh8.mjs.map} +1 -1
  114. package/dist/{renderer-CZ5mwBW1.mjs → renderer-Baw6Utxi.mjs} +2 -2
  115. package/dist/{renderer-CZ5mwBW1.mjs.map → renderer-Baw6Utxi.mjs.map} +1 -1
  116. package/dist/{renderer-NBMmvqWl.mjs → renderer-Bcu3UrI-.mjs} +3 -3
  117. package/dist/{renderer-NBMmvqWl.mjs.map → renderer-Bcu3UrI-.mjs.map} +1 -1
  118. package/dist/{renderer-DxB_OfLs.mjs → renderer-BeNl_6EG.mjs} +2 -2
  119. package/dist/{renderer-DxB_OfLs.mjs.map → renderer-BeNl_6EG.mjs.map} +1 -1
  120. package/dist/{renderer-BHPgkoEL.mjs → renderer-BfZNIiSv.mjs} +2 -2
  121. package/dist/{renderer-BHPgkoEL.mjs.map → renderer-BfZNIiSv.mjs.map} +1 -1
  122. package/dist/renderer-Bgos68gc.mjs +6 -0
  123. package/dist/{renderer-CnL8Cmmr.mjs → renderer-BjDddtw9.mjs} +2 -2
  124. package/dist/renderer-BjHOvoqO.mjs +5 -0
  125. package/dist/renderer-BjXMPPlV.mjs +5 -0
  126. package/dist/{renderer-FPiLBwj5.mjs → renderer-BpVOk9ux.mjs} +2 -2
  127. package/dist/{renderer-FPiLBwj5.mjs.map → renderer-BpVOk9ux.mjs.map} +1 -1
  128. package/dist/{renderer-DJPZs_zV.mjs → renderer-Bpm145BW.mjs} +3 -3
  129. package/dist/{renderer-DJPZs_zV.mjs.map → renderer-Bpm145BW.mjs.map} +1 -1
  130. package/dist/{renderer-45ifiDkn.mjs → renderer-Brmbl12Y.mjs} +3 -3
  131. package/dist/{renderer-45ifiDkn.mjs.map → renderer-Brmbl12Y.mjs.map} +1 -1
  132. package/dist/renderer-Byobxqkv.mjs +5 -0
  133. package/dist/{renderer-DOZPZTxe.mjs → renderer-C20efMI0.mjs} +3 -3
  134. package/dist/{renderer-DOZPZTxe.mjs.map → renderer-C20efMI0.mjs.map} +1 -1
  135. package/dist/{renderer-puQhVfDS.mjs → renderer-C5AoaymD.mjs} +3 -3
  136. package/dist/{renderer-puQhVfDS.mjs.map → renderer-C5AoaymD.mjs.map} +1 -1
  137. package/dist/{renderer-B-LUGB9h.mjs → renderer-CCxk-RJR.mjs} +2 -2
  138. package/dist/{renderer-B-LUGB9h.mjs.map → renderer-CCxk-RJR.mjs.map} +1 -1
  139. package/dist/{renderer-BKi6jDi_.mjs → renderer-CKo7VR8x.mjs} +3 -3
  140. package/dist/{renderer-BKi6jDi_.mjs.map → renderer-CKo7VR8x.mjs.map} +1 -1
  141. package/dist/renderer-CKrsg3EG.mjs +5 -0
  142. package/dist/{renderer--Q0pM9Vh.mjs → renderer-COgwYqev.mjs} +3 -3
  143. package/dist/{renderer--Q0pM9Vh.mjs.map → renderer-COgwYqev.mjs.map} +1 -1
  144. package/dist/{renderer-B5b-ehRb.mjs → renderer-CP108ABB.mjs} +2 -2
  145. package/dist/{renderer-B5b-ehRb.mjs.map → renderer-CP108ABB.mjs.map} +1 -1
  146. package/dist/{renderer-BPOh9x5X.mjs → renderer-CP8wLzTU.mjs} +2 -2
  147. package/dist/{renderer-BPOh9x5X.mjs.map → renderer-CP8wLzTU.mjs.map} +1 -1
  148. package/dist/{renderer-BPiWsrC2.mjs → renderer-CT3zkfbf.mjs} +2 -2
  149. package/dist/{renderer-BPiWsrC2.mjs.map → renderer-CT3zkfbf.mjs.map} +1 -1
  150. package/dist/{renderer-CQFMyC_c.mjs → renderer-Ca1KjNCO.mjs} +2 -2
  151. package/dist/{renderer-CQFMyC_c.mjs.map → renderer-Ca1KjNCO.mjs.map} +1 -1
  152. package/dist/renderer-Cj875NuH.mjs +5 -0
  153. package/dist/{renderer-CMnlgAGs.mjs → renderer-Cm0tsbQH.mjs} +2 -2
  154. package/dist/{renderer-CMnlgAGs.mjs.map → renderer-Cm0tsbQH.mjs.map} +1 -1
  155. package/dist/renderer-CnmzJoMv.mjs +5 -0
  156. package/dist/{renderer-BtgqTg2K.mjs → renderer-Cqb7PGrI.mjs} +2 -2
  157. package/dist/{renderer-C9dqx3U7.mjs → renderer-CrxwW6VQ.mjs} +3 -3
  158. package/dist/{renderer-C9dqx3U7.mjs.map → renderer-CrxwW6VQ.mjs.map} +1 -1
  159. package/dist/renderer-CtklDaMg.mjs +5 -0
  160. package/dist/{renderer-dRXP2dJU.mjs → renderer-Cw6_NL2i.mjs} +3 -3
  161. package/dist/{renderer-dRXP2dJU.mjs.map → renderer-Cw6_NL2i.mjs.map} +1 -1
  162. package/dist/{renderer-C_1eqfI0.mjs → renderer-D-KHHWQD.mjs} +3 -3
  163. package/dist/{renderer-C_1eqfI0.mjs.map → renderer-D-KHHWQD.mjs.map} +1 -1
  164. package/dist/{renderer-CxSFvKd1.mjs → renderer-D-RhYvVl.mjs} +2 -2
  165. package/dist/{renderer-CxSFvKd1.mjs.map → renderer-D-RhYvVl.mjs.map} +1 -1
  166. package/dist/renderer-D1tK3in_.mjs +5 -0
  167. package/dist/{renderer-Nnu32rqg.mjs → renderer-D2wNFNRf.mjs} +2 -2
  168. package/dist/{renderer-Nnu32rqg.mjs.map → renderer-D2wNFNRf.mjs.map} +1 -1
  169. package/dist/renderer-D2yc9P61.mjs +5 -0
  170. package/dist/renderer-D4v-JvSr.mjs +5 -0
  171. package/dist/renderer-D7WRWDwB.mjs +5 -0
  172. package/dist/{renderer-DXFJv_e6.mjs → renderer-DA8YEo_d.mjs} +3 -3
  173. package/dist/{renderer-DXFJv_e6.mjs.map → renderer-DA8YEo_d.mjs.map} +1 -1
  174. package/dist/{renderer-CYwVNbUh.mjs → renderer-DEjo6dw_.mjs} +2 -2
  175. package/dist/{renderer-CYwVNbUh.mjs.map → renderer-DEjo6dw_.mjs.map} +1 -1
  176. package/dist/renderer-DGvA0tdB.mjs +5 -0
  177. package/dist/{renderer-Br8km655.mjs → renderer-DIEeHiQA.mjs} +2 -2
  178. package/dist/{renderer-Br8km655.mjs.map → renderer-DIEeHiQA.mjs.map} +1 -1
  179. package/dist/{renderer-SJyp9-62.mjs → renderer-DNxWOz8Q.mjs} +2 -2
  180. package/dist/{renderer-SJyp9-62.mjs.map → renderer-DNxWOz8Q.mjs.map} +1 -1
  181. package/dist/renderer-DO7v5Sdm.mjs +5 -0
  182. package/dist/renderer-DRVvt7-V.mjs +5 -0
  183. package/dist/{renderer-DGb_wgTW.mjs → renderer-DVPgWHZw.mjs} +3 -3
  184. package/dist/{renderer-DGb_wgTW.mjs.map → renderer-DVPgWHZw.mjs.map} +1 -1
  185. package/dist/{renderer-BjgFpwVK.mjs → renderer-DWq9gYRw.mjs} +3 -3
  186. package/dist/{renderer-BjgFpwVK.mjs.map → renderer-DWq9gYRw.mjs.map} +1 -1
  187. package/dist/renderer-DYMCd3jL.mjs +5 -0
  188. package/dist/{renderer-C1ctHdXl.mjs → renderer-D_j1WKMD.mjs} +3 -3
  189. package/dist/{renderer-C1ctHdXl.mjs.map → renderer-D_j1WKMD.mjs.map} +1 -1
  190. package/dist/{renderer-BsMZ5Iaq.mjs → renderer-DcAKDAnS.mjs} +3 -3
  191. package/dist/{renderer-BsMZ5Iaq.mjs.map → renderer-DcAKDAnS.mjs.map} +1 -1
  192. package/dist/{renderer-g9SstkTz.mjs → renderer-Dgj46uEU.mjs} +2 -2
  193. package/dist/{renderer-DRal7Goa.mjs → renderer-DhyMfG1v.mjs} +3 -3
  194. package/dist/{renderer-DRal7Goa.mjs.map → renderer-DhyMfG1v.mjs.map} +1 -1
  195. package/dist/{renderer-BO_wuUKA.mjs → renderer-Dj2H5JPR.mjs} +3 -3
  196. package/dist/{renderer-BO_wuUKA.mjs.map → renderer-Dj2H5JPR.mjs.map} +1 -1
  197. package/dist/{renderer-BlZgyBSo.mjs → renderer-DkOuQi84.mjs} +3 -3
  198. package/dist/{renderer-BlZgyBSo.mjs.map → renderer-DkOuQi84.mjs.map} +1 -1
  199. package/dist/renderer-DmHKw-MM.mjs +5 -0
  200. package/dist/renderer-DoDsuZ6G.mjs +5 -0
  201. package/dist/{renderer-BgjPbgbn.mjs → renderer-Dr0tXA4k.mjs} +3 -3
  202. package/dist/{renderer-BgjPbgbn.mjs.map → renderer-Dr0tXA4k.mjs.map} +1 -1
  203. package/dist/{renderer-opVuiAQR.mjs → renderer-DtMVitEF.mjs} +2 -2
  204. package/dist/{renderer-opVuiAQR.mjs.map → renderer-DtMVitEF.mjs.map} +1 -1
  205. package/dist/{renderer-D-fzEZfX.mjs → renderer-Dwwnx7Dk.mjs} +2 -2
  206. package/dist/{renderer-D-fzEZfX.mjs.map → renderer-Dwwnx7Dk.mjs.map} +1 -1
  207. package/dist/{renderer-dGEMVaZ3.mjs → renderer-DzLrvCB2.mjs} +2 -2
  208. package/dist/{renderer-dGEMVaZ3.mjs.map → renderer-DzLrvCB2.mjs.map} +1 -1
  209. package/dist/renderer-EpgclS70.mjs +5 -0
  210. package/dist/{renderer-549d94qG.mjs → renderer-FYOL5Za6.mjs} +3 -3
  211. package/dist/{renderer-549d94qG.mjs.map → renderer-FYOL5Za6.mjs.map} +1 -1
  212. package/dist/renderer-GroKiYyK.mjs +5 -0
  213. package/dist/{renderer-CciiDHuU.mjs → renderer-I0Hh9cLK.mjs} +3 -3
  214. package/dist/{renderer-CciiDHuU.mjs.map → renderer-I0Hh9cLK.mjs.map} +1 -1
  215. package/dist/renderer-MQ5K_xIS.mjs +5 -0
  216. package/dist/{renderer-C7m7Yxgc.mjs → renderer-NRMlYkX6.mjs} +3 -3
  217. package/dist/{renderer-C7m7Yxgc.mjs.map → renderer-NRMlYkX6.mjs.map} +1 -1
  218. package/dist/{renderer-BIieU9pY.mjs → renderer-Nnmi8Gt6.mjs} +3 -3
  219. package/dist/{renderer-BIieU9pY.mjs.map → renderer-Nnmi8Gt6.mjs.map} +1 -1
  220. package/dist/renderer-U43SflML.mjs +5 -0
  221. package/dist/renderer-UqOmBgCv.mjs +5 -0
  222. package/dist/{renderer-KgsVk9c6.mjs → renderer-W1bVNVR6.mjs} +3 -3
  223. package/dist/{renderer-KgsVk9c6.mjs.map → renderer-W1bVNVR6.mjs.map} +1 -1
  224. package/dist/renderer-XLULgJM0.mjs +5 -0
  225. package/dist/{renderer-CE4535aW.mjs → renderer-ZnrEfkYh.mjs} +2 -2
  226. package/dist/{renderer-CE4535aW.mjs.map → renderer-ZnrEfkYh.mjs.map} +1 -1
  227. package/dist/{renderer-RAq3LnNy.mjs → renderer-_pC-jB9O.mjs} +2 -2
  228. package/dist/{renderer-RAq3LnNy.mjs.map → renderer-_pC-jB9O.mjs.map} +1 -1
  229. package/dist/{renderer-Dz6P-rPI.mjs → renderer-iMiYStcW.mjs} +2 -2
  230. package/dist/{renderer-Dz6P-rPI.mjs.map → renderer-iMiYStcW.mjs.map} +1 -1
  231. package/dist/{renderer-S9tVGneU.mjs → renderer-jUKdkmG5.mjs} +69 -69
  232. package/dist/{renderer-S9tVGneU.mjs.map → renderer-jUKdkmG5.mjs.map} +1 -1
  233. package/dist/{renderer-_54hiCq0.mjs → renderer-k5d7JSbs.mjs} +3 -3
  234. package/dist/{renderer-_54hiCq0.mjs.map → renderer-k5d7JSbs.mjs.map} +1 -1
  235. package/dist/renderer-lNjxY1GG.mjs +5 -0
  236. package/dist/{renderer-CL-vyXgX.mjs → renderer-nHS3Sius.mjs} +3 -3
  237. package/dist/{renderer-CL-vyXgX.mjs.map → renderer-nHS3Sius.mjs.map} +1 -1
  238. package/dist/{renderer-Cp_HOmp7.mjs → renderer-ngmYIIob.mjs} +3 -3
  239. package/dist/{renderer-Cp_HOmp7.mjs.map → renderer-ngmYIIob.mjs.map} +1 -1
  240. package/dist/{renderer-LXhEPCmy.mjs → renderer-raxwsiGI.mjs} +3 -3
  241. package/dist/{renderer-LXhEPCmy.mjs.map → renderer-raxwsiGI.mjs.map} +1 -1
  242. package/dist/renderer-ukufL7pl.mjs +5 -0
  243. package/dist/renderer-wb0NCKdF.mjs +5 -0
  244. package/dist/{renderer-D8gN7aqk.mjs → renderer-zRq0j6Xy.mjs} +3 -3
  245. package/dist/{renderer-D8gN7aqk.mjs.map → renderer-zRq0j6Xy.mjs.map} +1 -1
  246. package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs → renderers-CP8CFWDs-CshljORp.mjs} +2 -2
  247. package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs.map → renderers-CP8CFWDs-CshljORp.mjs.map} +1 -1
  248. package/dist/sam/index.d.mts +3 -3
  249. package/dist/signals/index.d.mts +5 -5
  250. package/dist/signals/index.mjs +4 -4
  251. package/dist/{src-BzFGotRc.mjs → src-Dy4gnc6w.mjs} +43 -13
  252. package/dist/src-Dy4gnc6w.mjs.map +1 -0
  253. package/package.json +60 -60
  254. package/dist/dist-CUNvNDS3.mjs.map +0 -1
  255. package/dist/dist-D3BeAZ7X.mjs.map +0 -1
  256. package/dist/index-BFTtXosj.d.mts.map +0 -1
  257. package/dist/index-E2IXX0Cz.d.mts.map +0 -1
  258. package/dist/index-X2u96TEo.d.mts.map +0 -1
  259. package/dist/index-a6JrbAK0.d.mts.map +0 -1
  260. package/dist/preview-engine/chunk-77WWW75O.mjs +0 -5
  261. package/dist/preview-engine/chunk-7M5LE6EM.mjs +0 -483
  262. package/dist/preview-engine/chunk-FRJPXWAG.mjs +0 -1
  263. package/dist/preview-engine/renderers-TTXTV4PC.mjs +0 -228
  264. package/dist/program-Bn6ko_I4.mjs.map +0 -1
  265. package/dist/renderer-1aSF5BmY.mjs +0 -5
  266. package/dist/renderer-B2e4Gr9u.mjs +0 -5
  267. package/dist/renderer-B6fz4j50.mjs +0 -5
  268. package/dist/renderer-BEftIYw-.mjs +0 -5
  269. package/dist/renderer-BHTnO-7e.mjs +0 -5
  270. package/dist/renderer-BMlnQqTO.mjs +0 -5
  271. package/dist/renderer-BOzcFezY.mjs +0 -5
  272. package/dist/renderer-BVbjJIKJ.mjs +0 -5
  273. package/dist/renderer-BXsHKf4k.mjs +0 -5
  274. package/dist/renderer-Bks49NVl.mjs +0 -5
  275. package/dist/renderer-C-t7qFKr.mjs +0 -5
  276. package/dist/renderer-C24n-6CX.mjs +0 -6
  277. package/dist/renderer-CCReX-7M.mjs +0 -5
  278. package/dist/renderer-CIxFQrAm.mjs +0 -5
  279. package/dist/renderer-CLHBMIqJ.mjs +0 -5
  280. package/dist/renderer-CMJKi-Ye.mjs +0 -5
  281. package/dist/renderer-C_H3mHZa.mjs +0 -5
  282. package/dist/renderer-CfkTdR5B.mjs +0 -5
  283. package/dist/renderer-CnhkXJ0R.mjs +0 -5
  284. package/dist/renderer-CqpyVsq_.mjs +0 -5
  285. package/dist/renderer-CtWgIpTE.mjs +0 -5
  286. package/dist/renderer-CyuKr5ca.mjs +0 -5
  287. package/dist/renderer-D9ON_1Hf.mjs +0 -5
  288. package/dist/renderer-DAnTgh4o.mjs +0 -5
  289. package/dist/renderer-DWgpivA3.mjs +0 -5
  290. package/dist/renderer-Dh_qNNwR.mjs +0 -5
  291. package/dist/renderer-DkCpXPMP.mjs +0 -5
  292. package/dist/renderer-Dre-6cDR.mjs +0 -5
  293. package/dist/renderer-Ds5z4_HX.mjs +0 -5
  294. package/dist/renderer-HGSCOMyP.mjs +0 -5
  295. package/dist/renderer-KMY8W-cJ.mjs +0 -5
  296. package/dist/renderer-R21YvXz3.mjs +0 -5
  297. package/dist/renderer-RtzCz37W.mjs +0 -5
  298. package/dist/renderer-iMrqAjix.mjs +0 -5
  299. package/dist/renderer-sMed1u1O.mjs +0 -5
  300. package/dist/renderer-tsAuo46l.mjs +0 -5
  301. package/dist/renderer-vll8LX0I.mjs.map +0 -1
  302. package/dist/src-BzFGotRc.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import{a as Rp}from"./chunk-2YJ2EW2B.mjs";import{N as uo,O as lo,T as Cu,U as Du,X as zn,Y as _n,d as ft,m as oo,w as ku,x as Dp,y as Pu,z as Mu}from"./chunk-XYCR3STG.mjs";import{a as In,b as jn}from"./chunk-3F6JGYSP.mjs";import{a as ao,b as xu}from"./chunk-JJ7D26WR.mjs";import{a as Er,d as Au}from"./chunk-4P3MMJWD.mjs";import{q as wu,r as vu,s as Su}from"./chunk-7M5LE6EM.mjs";import{$ as Lo,E as Do,G as Un,I as Ro,J as rr,K as Oo,O as Vn,R as Gn,T as nr,U as Dt,V as No,W as Fo,X as nt,Y as Eo,_ as Bo,aa as Rt,b as vo,ba as Io,ca as jo,da as zo,ea as _o,fa as jr,ga as $o,ha as Uo,ia as Vo,ja as Go,ka as Wo,l as So,la as zr,m as ko,ma as ht,n as Po,na as Ho,oa as Yo,p as Ir,pa as Xo,s as Mo,w as To,x as Ao,z as Co}from"./chunk-SMHEMYCV.mjs";import{$ as $n,S as Ru,X as po,a as Qt,d as ou,e as Bn,ea as tr,f as Ct,fa as ho,ha as go,ia as bo,la as Br,ma as yo,na as xo,oa as Lr}from"./chunk-PH3UUX6A.mjs";import{a as fo}from"./chunk-BREZX5L5.mjs";import{a as mo}from"./chunk-OGSZZ4JO.mjs";import{a as co}from"./chunk-LGQSJCKE.mjs";import{i as io}from"./chunk-6ISHV73H.mjs";import{c as fu}from"./chunk-CSLSWUUT.mjs";import{d as wo}from"./chunk-2CECZN67.mjs";import{a as se}from"./chunk-3DXMWDQ3.mjs";import{d as Tu}from"./chunk-FRJPXWAG.mjs";import{f as au,i as su,j as uu,k as lu,n as cu}from"./chunk-HOV6DDBZ.mjs";import{h as du,j as mu}from"./chunk-RECQ74RP.mjs";import{f as Jt}from"./chunk-UE7Y65C3.mjs";import{a as l}from"./chunk-6FULVULN.mjs";import{a as Kt,l as iu,t as Nr}from"./chunk-ULOFDFHJ.mjs";import{a as je}from"./chunk-NCQHOGZK.mjs";import{j as er,y as so}from"./chunk-64L4GUOF.mjs";import{a as gu,l as to,m as Fr}from"./chunk-VEDMJBJV.mjs";import{b as eo,r as he,t as Ln}from"./chunk-QEWDIPJ7.mjs";import{a as pu}from"./chunk-OGPJTUAL.mjs";import{a as hu}from"./chunk-354GX6IB.mjs";import{c as Qi,h as Ji}from"./chunk-5RRKGN2U.mjs";import{a as bu,d as ro,g as no,j as yu,o as G}from"./chunk-BDZ3TSOT.mjs";import{b as En,d as rt,f as x,g as f}from"./chunk-Y4NIR77Z.mjs";var wm=En((c3,xm)=>{f();var Ii=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Ii(),apply:()=>Ii(),construct:()=>Ii()});xm.exports=Ii()});var Lm=En((uA,Bm)=>{f();var Vi=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Vi(),apply:()=>Vi(),construct:()=>Vi()});Bm.exports=Vi()});var $m=En((mA,_m)=>{f();var Wi=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Wi(),apply:()=>Wi(),construct:()=>Wi()});_m.exports=Wi()});var Vm=En((fA,Um)=>{f();var Hi=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Hi(),apply:()=>Hi(),construct:()=>Hi()});Um.exports=Hi()});f();f();f();f();var Op=e=>!e.source||e.source.type==="keyframe";function _r(e){let t=[],r=new Map;for(let n of e){if(!Op(n)){t.push(n);continue}let i=r.get(n.prop);if(!i){let a={...n,keyframes:[...n.keyframes??[]]};r.set(n.prop,a),t.push(a);continue}let o=new Map(i.keyframes.map(a=>[a.frame,a]));for(let a of n.keyframes??[])o.set(a.frame,a);i.keyframes=[...o.values()].sort((a,s)=>a.frame-s.frame)}return t}function Ou(e,t){if(!e)return t;let r=qo(e);if(!r||r.name==="none")return t;let{name:n,dir:i,params:o}=r,a=Math.max(0,Math.min(1,t)),s=u=>i==="in"?u(a):i==="out"?1-u(1-a):a<.5?u(a*2)/2:1-u((1-a)*2)/2;switch(n){case"power1":return s(u=>u*u);case"power2":return s(u=>u*u*u);case"power3":return s(u=>u*u*u*u);case"sine":return s(u=>1-Math.cos(u*Math.PI/2));case"circ":return s(u=>1-Math.sqrt(Math.max(0,1-u*u)));case"expo":return s(u=>u===0?0:2**(10*(u-1)));case"back":{let u=o?.[0]??1.70158,c=u+1;return s(d=>c*d*d*d-u*d*d)}case"bounce":{let u=c=>{if(c<.36363636363636365)return 7.5625*c*c;if(c<.7272727272727273){let h=c-.5454545454545454;return 7.5625*h*h+.75}if(c<.9090909090909091){let h=c-.8181818181818182;return 7.5625*h*h+.9375}let p=c-2.625/2.75;return 7.5625*p*p+.984375};return i==="out"?u(a):i==="in"?1-u(1-a):a<.5?(1-u(1-2*a))/2:(1+u(2*a-1))/2}default:return a}}function qo(e){if(e){if(typeof e=="object"&&"name"in e&&"dir"in e)return e;if(typeof e=="string"){let t=e.trim(),r=t.match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]+)\))?$/);if(r){let u=r[1].toLowerCase(),c=u==="linear"?"none":u,d=(r[2]||"out").toLowerCase(),m="out";d==="in"?m="in":d==="out"?m="out":d==="inout"&&(m="inOut");let p;return r[3]&&(p=r[3].split(",").map(h=>Number.parseFloat(h.trim())).filter(h=>!Number.isNaN(h))),{name:c,dir:m,...p&&p.length>0?{params:p}:{}}}let n=t.indexOf(".");if(n===-1){let u=t.toLowerCase();return{name:u==="linear"?"none":u,dir:"out"}}let i=t.slice(0,n).toLowerCase(),o=i==="linear"?"none":i,a=t.slice(n+1).toLowerCase(),s="out";return a==="in"?s="in":a==="out"?s="out":a==="inout"&&(s="inOut"),{name:o,dir:s}}}}var Q=class e{tracks=[];frameStep;defaultRepeat;defaultYoyo;constructor(t=[]){this.tracks=[...t]}static create(){return new e}static stepped(t=2){return new e().stepped(t)}stepped(t=2){return this.frameStep=Math.max(1,Math.min(24,Math.round(t))),this}static fromTo(t,r,n,i={}){return new e().fromTo(t,r,n,i)}static keys(t,r,n){return new e().keys(t,r,n)}static signal(t,r,n={}){return new e().signal(t,r,n)}static colorSignal(t,r,n){return new e().colorSignal(t,r,n)}static kineticSweep(t=-1,r=1,n=0,i=24,o="power2.out"){return new e().kineticSweep(t,r,n,i,o)}static typewriter(t=0,r=30,n="linear"){return new e().typewriter(t,r,n)}static letterSpacing(t,r,n=0,i=24,o="power2.out"){return new e().letterSpacing(t,r,n,i,o)}static wiggle(t,r={}){return new e().wiggle(t,r)}static spring(t,r={}){return new e().spring(t,r)}static firstMargin(t,r,n={}){return new e().firstMargin(t,r,n)}static strokeWidth(t,r,n={}){return new e().fromTo("strokeWidth",t,r,n)}static rotateX(t,r,n={}){return new e().fromTo("rotateX",t,r,n)}static rotateY(t,r,n={}){return new e().fromTo("rotateY",t,r,n)}static rotateZ(t,r,n={}){return new e().fromTo("rotateZ",t,r,n)}static rotation(t,r,n={}){return new e().fromTo("rotation",t,r,n)}static scale(t,r,n={}){return new e().fromTo("scale",t,r,n)}static scaleX(t,r,n={}){return new e().fromTo("scaleX",t,r,n)}static scaleY(t,r,n={}){return new e().fromTo("scaleY",t,r,n)}addTrack(t){return this.tracks.push(t),this}repeat(t=-1,r){this.defaultRepeat=t;for(let n of this.tracks)(!r||n.prop===r)&&(n.repeat=t);return this}yoyo(t=!0,r){this.defaultYoyo=t;for(let n of this.tracks)(!r||n.prop===r)&&(n.yoyo=t);return this}loop(t={},r){return this.repeat(-1,r),t.yoyo&&this.yoyo(!0,r),this}fromTo(t,r,n,i={}){let o=i.from??i.start??i.fromFrame??0,a=i.to??i.end??i.toFrame??(i.durationFrames!==void 0?o+i.durationFrames:o+24),s=qo(i.ease),u=this.tracks.find(d=>d.prop===t&&(!d.source||d.source.type==="keyframe"));if(!u){let d={id:`${t}_fromTo_${this.tracks.length}`,prop:t,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(d),u=d}i.repeat!==void 0&&(u.repeat=i.repeat),i.yoyo!==void 0&&(u.yoyo=i.yoyo),i.durationFrames!==void 0&&(u.durationFrames=i.durationFrames);let c=u.id;return u.keyframes.length===0&&o>0&&u.keyframes.push({id:`${c}_k0`,frame:0,value:r}),(u.keyframes.length===0||u.keyframes[u.keyframes.length-1].frame<o)&&u.keyframes.push({id:`${c}_k_${o}`,frame:o,value:r}),u.keyframes.push({id:`${c}_k_${a}`,frame:a,value:n,...s&&{ease:s}}),u.keyframes.sort((d,m)=>d.frame-m.frame),this}keyframe(t,r,n,i){let o=this.tracks.find(c=>c.prop===t&&(!c.source||c.source.type==="keyframe"));if(!o){let c={id:`${t}_track_${this.tracks.length}`,prop:t,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(c),o=c}let a=qo(i),s={id:`k_${o.keyframes.length}_f${r}`,frame:r,value:n,...a&&{ease:a}},u=o.keyframes.findIndex(c=>c.frame===r);return u>=0?o.keyframes[u]=s:o.keyframes.push(s),o.keyframes.sort((c,d)=>c.frame-d.frame),this}keys(t,r,n){for(let[i,o,a]of r)this.keyframe(t,Math.round(i),o,a);if(n){let i=this.tracks.find(o=>o.prop===t&&(!o.source||o.source.type==="keyframe"));i&&(n.repeat!==void 0&&(i.repeat=n.repeat),n.yoyo!==void 0&&(i.yoyo=n.yoyo),n.durationFrames!==void 0&&(i.durationFrames=n.durationFrames))}return this}fadeIn(t=0,r=20,n="power2.out"){return this.fromTo("opacity",0,1,{from:t,to:r,ease:n})}fadeOut(t,r,n="power2.in"){return this.fromTo("opacity",1,0,{from:t,to:r,ease:n})}slideInY(t,r,n=0,i=24,o="power2.out"){return this.fromTo("y",t,r,{from:n,to:i,ease:o})}slideInX(t,r,n=0,i=24,o="power2.out"){return this.fromTo("x",t,r,{from:n,to:i,ease:o})}kineticSweep(t=-1,r=1,n=0,i=24,o="power2.out"){return this.fromTo("offset",t,r,{from:n,to:i,ease:o})}typewriter(t=0,r=30,n="linear"){return this.fromTo("text",0,1,{from:t,to:r,ease:n})}letterSpacing(t,r,n=0,i=24,o="power2.out"){return this.fromTo("letterSpacing",t,r,{from:n,to:i,ease:o})}firstMargin(t,r,n={}){return this.fromTo("firstMargin",t,r,n)}lastMargin(t,r,n={}){return this.fromTo("lastMargin",t,r,n)}baselineShift(t,r,n={}){return this.fromTo("baselineShift",t,r,n)}rotateX(t,r,n={}){return this.fromTo("rotateX",t,r,n)}rotateY(t,r,n={}){return this.fromTo("rotateY",t,r,n)}rotateZ(t,r,n={}){return this.fromTo("rotateZ",t,r,n)}scaleX(t,r,n={}){return this.fromTo("scaleX",t,r,n)}scaleY(t,r,n={}){return this.fromTo("scaleY",t,r,n)}scale(t,r,n={}){return this.fromTo("scale",t,r,n)}perspective(t,r,n={}){return this.fromTo("perspective",t,r,n)}translateZ(t,r,n={}){return this.fromTo("translateZ",t,r,n)}tilt3D(t){let r=t.start??t.fromFrame,n=t.end??t.toFrame,i=t.ease,o=t.from??{},a=t.to,s=["rotateX","rotateY","rotateZ","translateZ","perspective"];for(let u of s){let c=a[u];if(c!==void 0){let d=o[u]??0;this.fromTo(u,d,c,{from:r,to:n,fromFrame:r,toFrame:n,ease:i})}}return this}signal(t,r,n={}){let{handleId:i,inline:o}=uo(r),a=`${t}_sig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:n.multiplier??1,offset:n.offset??0,smoothingWindowFrames:n.smoothing??0,signalMode:n.mode??"continuous",threshold:n.threshold??.15,accumulateThreshold:n.threshold??.15,debounceFrames:n.debounceFrames??2,channel:n.channel??"primary"};return o&&lo(s,o),this.tracks.push({id:a,prop:t,source:s,keyframes:[]}),this}colorSignal(t,r,n){let{handleId:i,inline:o}=uo(r),a=`${t}_colorSig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:n.multiplier??1,offset:n.offset??0,smoothingWindowFrames:n.smoothing??0,colorMode:n.colorMode??"interpolate",colorA:n.colorA,colorB:n.colorB,colorThreshold:n.threshold,channel:"primary"};return o&&lo(s,o),this.tracks.push({id:a,prop:t,source:s,keyframes:[]}),this}wiggle(t,r={}){let n=`${t}_wiggle_${this.tracks.length}`,i={type:"wiggle",frequency:r.frequency??2,amplitude:r.amplitude??20,octaves:r.octaves??1,seed:r.seed??1234};return this.tracks.push({id:n,prop:t,source:i,keyframes:[]}),this}spring(t,r={}){let n=`${t}_spring_${this.tracks.length}`,i={type:"springOvershoot",damping:r.damping??12,stiffness:r.stiffness??180,mass:r.mass??1};return this.tracks.push({id:n,prop:t,source:i,keyframes:[]}),this}followPath(t,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,o=Math.max(1,i-n),a=r.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=t.totalLength??1,u=r.fromProgress??0,c=r.toProgress??1;r.fromDistance!==void 0&&s>0&&(u=r.fromDistance/s),r.toDistance!==void 0&&s>0&&(c=r.toDistance/s);let d=r.autoOrient??!0,m=r.banking??0,p=r.pitchOffset??0,h=r.yawOffset??0,g=r.rollOffset??0,b=!1,y=!1,v=!1,P=[];for(let A=0;A<=a;A++){let w=A/a,T=Ou(r.ease,w),S=u+T*(c-u),C=Math.round(n+w*o),O=[0,0,0],z=[1,0,0],W=[0,0,0];if(typeof t.getFrameAt=="function"){let M=t.getFrameAt(S);O=M.position,z=M.tangent,W=M.rotation??[0,0,0]}else{let M=t.getPointAt(S);O=M.position,M.tangent&&(z=M.tangent);let H=Math.asin(Math.max(-1,Math.min(1,-z[1])))*(180/Math.PI),q=Math.atan2(z[0],z[2])*(180/Math.PI),V=Math.atan2(z[1],z[0])*(180/Math.PI);W=[H,q,V]}let _=W[0]+p,L=W[1]+h,k=(Math.abs(z[2])<1e-4?Math.atan2(z[1],z[0])*(180/Math.PI):W[2])+g;if(m!==0){let M=Math.min(1,S+.02),H=Math.max(0,S-.02),q=t.getPointAt(M),V=t.getPointAt(H),j=q.tangent??[1,0,0],K=V.tangent??[1,0,0],re=Math.atan2(j[0],j[2]),de=Math.atan2(K[0],K[2]),oe=re-de;k-=oe*m*57.2958}Math.abs(O[2])>1e-4&&(b=!0),Math.abs(_)>1e-4&&(y=!0),Math.abs(L)>1e-4&&(v=!0),P.push({f:C,x:O[0],y:O[1],z:O[2],rx:_,ry:L,rz:k})}for(let A of P)this.keyframe("x",A.f,A.x),this.keyframe("y",A.f,A.y),b&&this.keyframe("z",A.f,A.z),d&&(this.keyframe("rotateZ",A.f,A.rz),y&&this.keyframe("rotateX",A.f,A.rx),v&&this.keyframe("rotateY",A.f,A.ry));return this}applyTo(t){return t.animation=this.toSpec(),t}merge(...t){return this.tracks=_r([...this.tracks,...t.flatMap(r=>r.tracks)]),this}static merge(...t){let r=new e;return r.tracks=_r(t.flatMap(n=>n.tracks)),r}toSpec(){return{tracks:this.tracks,...this.frameStep!==void 0&&{frameStep:this.frameStep}}}toJSON(){return this.toSpec()}},Zo=class e extends Q{static camera(){return new e}dolly(t,r,n={}){if(typeof t=="object"){let i=t,o=i.start??i.fromFrame??0,a=i.end??i.toFrame??0;return this.fromTo("cameraZ",i.fromDistance,i.toDistance,{from:o,to:a,ease:i.ease})}return this.fromTo("cameraZ",t,r??t,n)}orbit(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return t.azimuth&&this.fromTo("orbitAzimuth",t.azimuth.from??0,t.azimuth.to,{from:r,to:n,ease:t.ease}),t.elevation&&this.fromTo("orbitElevation",t.elevation.from??0,t.elevation.to,{from:r,to:n,ease:t.ease}),t.radius&&this.fromTo("orbitRadius",t.radius.from??1500,t.radius.to,{from:r,to:n,ease:t.ease}),this}truck(t,r,n={}){return this.fromTo("cameraX",t,r,n)}pedestal(t,r,n={}){return this.fromTo("cameraY",t,r,n)}pan(t,r,n={}){return this.fromTo("cameraYaw",t,r,n)}tilt(t,r,n={}){return this.fromTo("cameraPitch",t,r,n)}roll(t,r,n={}){return this.fromTo("cameraRoll",t,r,n)}rackFocus(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return this.fromTo("focusDistance",t.fromDistance,t.toDistance,{from:r,to:n,ease:t.ease??"power2.inOut"}),t.toFStop!==void 0&&this.fromTo("fStop",t.fromFStop??2.8,t.toFStop,{from:r,to:n,ease:t.ease??"power2.inOut"}),this}handheld(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return this.fromTo("shakeTranslation",0,t.translationAmplitude,{from:r,to:n}),this.fromTo("shakeRotation",0,t.rotationAmplitude,{from:r,to:n}),this}followPath3D(t,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,o=Math.max(1,i-n),a=r.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=r.mode??(r.target?"lookAtTarget":"leadTarget"),u=r.fromProgress??0,c=r.toProgress??1,d=r.lookAhead??.05;for(let m=0;m<=a;m++){let p=m/a,h=Ou(r.ease,p),g=u+h*(c-u),b=Math.round(n+p*o),y=[0,0,0],v=[0,0,0];if(typeof t.getFrameAt=="function"){let P=t.getFrameAt(g);y=P.position,v=P.rotation??[0,0,0]}else y=t.getPointAt(g).position;if(this.keyframe("cameraX",b,y[0]),this.keyframe("cameraY",b,y[1]),this.keyframe("cameraZ",b,y[2]),s==="lookAtTarget"){let P=r.target??[y[0],y[1],0];this.keyframe("targetX",b,P[0]),this.keyframe("targetY",b,P[1]),this.keyframe("targetZ",b,P[2])}else if(s==="leadTarget"){let P=Math.min(1,g+d),A=t.getPointAt(P);this.keyframe("targetX",b,A.position[0]),this.keyframe("targetY",b,A.position[1]),this.keyframe("targetZ",b,A.position[2])}else s==="orientAlongPath"&&(this.keyframe("cameraPitch",b,v[0]),this.keyframe("cameraYaw",b,v[1]),this.keyframe("cameraRoll",b,v[2]))}return this}};f();var Ko=class e{name;props={};selectors=[];constructor(t){this.name=t}static create(t){return new e(t)}skew(t,r=0){return this.props.skew=t,this.props.skewAxis=r,this}anchor(t,r="character",n=0,i=0){return this.props.anchor={grouping:r,preset:t,anchorX:.5,anchorY:.5,offsetX:n,offsetY:i},this}anchorNormalized(t,r,n="character"){return this.props.anchor={grouping:n,preset:"custom",anchorX:t,anchorY:r,offsetX:0,offsetY:0},this}translateZ(t){return this.props.translateZ=t,this}tilt3D(t=0,r=0,n=0){return this.props.rotationX=t,this.props.rotationY=r,this.props.rotationZ=n,this}rotationX(t){return this.props.rotationX=t,this}rotationY(t){return this.props.rotationY=t,this}rotationZ(t){return this.props.rotationZ=t,this}volumetricFormation(t="cylinder",r=300,n=120,i=360,o=1200,a="y"){return this.props.formation={mode:t,radius:r,pitch:n,totalAngle:i,perspective:o,axis:a},this}lineSpacing(t,r=0){return this.props.lineSpacing=t,this.props.lineAnchor=r,this}lineAnchor(t){return this.props.lineAnchor=t,this}spring(t=180,r=12,n=1,i=0){return this.props.spring={stiffness:t,damping:r,mass:n,initialVelocity:i,overshootMultiplier:1},this}stroke(t,r="#ffffff",n=1){return this.props.stroke={strokeWidth:t,strokeColor:r,strokeAlign:"center",fillOpacity:n,dashOffset:0},this}variableFont(t){return this.props.variableAxes=t,this}chromaticGlitch(t,r=0,n=-t,i=0){return this.props.chromaticGlitch={redShiftX:t,redShiftY:r,blueShiftX:n,blueShiftY:i,sliceProbability:0,sliceAmplitude:0},this}audioSpectrum(t,r=60,n=16e3,i=2.5){return this.props.audioSpectrum={signalChannel:t,minFreqHz:r,maxFreqHz:n,scaleAxis:"scaleY",minScale:.2,maxScale:i,peakDecay:.8},this}longShadow(t=45,r=40,n="#000000",i=.8,o=0,a=16){return this.props.longShadow={angle:t,length:r,color:n,startOpacity:i,endOpacity:o,steps:a},this}particleDissolve(t=0,r=90,n=120){return this.props.particleDissolve={progress:t,dispersalAngle:r,maxDisplacement:n,turbulence:.5,particleSize:2},this}addExpressionSelector(t,r="add"){return this.selectors.push({type:"expression",expression:t,mode:r,amount:1}),this}expressionSelector(t,r="add"){return this.addExpressionSelector(t,r)}x(t){return this.props.x=t,this}y(t){return this.props.y=t,this}scale(t){return this.props.scale=t,this}scaleX(t){return this.props.scaleX=t,this}scaleY(t){return this.props.scaleY=t,this}rotation(t){return this.props.rotation=t,this}opacity(t){return this.props.opacity=t,this}blur(t){return this.props.blur=t,this}fillColor(t){return this.props.fillColor=t,this}build(){return{name:this.name,selectors:this.selectors,props:this.props}}};f();var Nu=l.enum(["character","word","line","all"]),Fu=l.enum(["center","baseline","bottom_left","bottom_center","bottom_right","top_left","top_center","top_right","custom"]),Eu=l.object({grouping:Nu.default("character"),preset:Fu.default("center"),anchorX:l.number().default(.5),anchorY:l.number().default(.5),offsetX:l.number().default(0),offsetY:l.number().default(0)}),Np=l.object({skew:l.number().min(-90).max(90),skewAxis:l.number().default(0)}),Fp=l.object({lineSpacing:l.number(),lineAnchor:l.number().min(0).max(1).default(0)}),Bu=l.enum(["planar","vortex","cylinder","helix"]),Qo=l.object({mode:Bu.default("planar"),radius:l.number().default(300),pitch:l.number().default(120),totalAngle:l.number().default(360),axis:l.enum(["x","y","z"]).default("y"),perspective:l.number().positive().default(1200)}),Ep=l.object({translateZ:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),rotationZ:l.number().optional(),formation:Qo.optional()}),Lu=l.object({stiffness:l.number().positive().default(180),damping:l.number().positive().default(12),mass:l.number().positive().default(1),initialVelocity:l.number().default(0),overshootMultiplier:l.number().min(.5).max(3).default(1)}),Bp=l.object({type:l.literal("expression"),name:l.string().optional(),expression:l.string(),mode:l.enum(["add","subtract","intersect","min","max","difference"]).default("add"),amount:l.number().default(1)}),Iu=l.object({strokeWidth:l.number().min(0).default(0),strokeColor:l.string().default("#ffffff"),strokeAlign:l.enum(["center","inside","outside"]).default("center"),fillOpacity:l.number().min(0).max(1).default(1),dashArray:l.tuple([l.number(),l.number()]).optional(),dashOffset:l.number().default(0)}),Jo=l.object({direction:l.enum(["left","right","up","down"]).default("left"),velocity:l.number().default(120),loop:l.boolean().default(!0),repeatGap:l.number().default(80),snap:l.object({enabled:l.boolean().default(!1),granularity:l.enum(["character","word","line"]).default("word"),stopIndex:l.number().default(0),decelEase:l.string().default("cubic.out")}).optional()}),ju=l.object({weight:l.number().min(100).max(1e3).optional(),width:l.number().min(50).max(200).optional(),slant:l.number().min(-25).max(25).optional(),italic:l.number().min(0).max(1).optional(),opticalSize:l.number().min(6).max(144).optional()}),zu=l.object({redShiftX:l.number().default(0),redShiftY:l.number().default(0),blueShiftX:l.number().default(0),blueShiftY:l.number().default(0),sliceProbability:l.number().min(0).max(1).default(0),sliceAmplitude:l.number().default(0)}),_u=l.object({signalChannel:l.string(),minFreqHz:l.number().default(60),maxFreqHz:l.number().default(16e3),scaleAxis:l.enum(["scaleY","scaleX","scale","y"]).default("scaleY"),minScale:l.number().default(.2),maxScale:l.number().default(2.5),peakDecay:l.number().min(0).max(.99).default(.8)}),$u=l.object({angle:l.number().default(45),length:l.number().min(0).default(0),color:l.string().default("#000000"),startOpacity:l.number().min(0).max(1).default(.8),endOpacity:l.number().min(0).max(1).default(0),steps:l.number().int().min(4).max(64).default(16)}),Uu=l.object({progress:l.number().min(0).max(1).default(0),dispersalAngle:l.number().default(90),maxDisplacement:l.number().default(120),turbulence:l.number().default(.5),particleSize:l.number().default(2)}),Vu=l.object({x:l.number().optional(),y:l.number().optional(),translateZ:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),rotationZ:l.number().optional(),formation:Qo.optional(),skew:l.number().optional(),skewAxis:l.number().optional(),tracking:l.number().optional(),lineSpacing:l.number().optional(),lineAnchor:l.number().optional(),anchor:Eu.optional(),opacity:l.number().optional(),blur:l.number().optional(),fillColor:l.string().optional(),stroke:Iu.optional(),variableAxes:ju.optional(),chromaticGlitch:zu.optional(),longShadow:$u.optional(),particleDissolve:Uu.optional(),audioSpectrum:_u.optional(),spring:Lu.optional()}),ea=l.object({name:l.string().default("AdvancedAnimator"),selectors:l.array(l.record(l.string(),l.unknown())).default([]),props:Vu});f();f();var $r=l.object({x:l.number(),y:l.number()}),Gu=l.object({p0:$r,p1:$r,p2:$r,p3:$r}),Wu=l.discriminatedUnion("type",[l.object({type:l.literal("svg"),d:l.string().min(1,"SVG path string cannot be empty")}),l.object({type:l.literal("bezier"),segments:l.array(Gu).min(1)}),l.object({type:l.literal("ellipse"),cx:l.number(),cy:l.number(),rx:l.number().positive(),ry:l.number().positive(),startAngleDeg:l.number().default(0),endAngleDeg:l.number().default(360)}),l.object({type:l.literal("wave"),startX:l.number(),startY:l.number(),length:l.number().positive(),amplitude:l.number(),frequency:l.number().positive(),phaseDeg:l.number().default(0)})]),ir=l.object({path:Wu,firstMargin:l.number().default(0),lastMargin:l.number().default(0),reversePath:l.boolean().default(!1),perpendicularToPath:l.boolean().default(!0),forceAlignment:l.boolean().default(!1),loop:l.boolean().default(!1),baselineOffset:l.enum(["baseline","center","ascender","descender"]).default("baseline"),baselineShift:l.number().default(0)}),Hu=l.enum(["bar","underscore","block","custom"]),Yu=l.object({enabled:l.boolean().default(!0),style:Hu.default("bar"),customChar:l.string().default("|"),color:l.string().optional(),blinkFrequency:l.number().min(0).default(2),hideOnComplete:l.boolean().default(!1),width:l.number().positive().default(2.5),spacing:l.number().default(3)}),Xu=l.discriminatedUnion("mode",[l.object({mode:l.literal("constant")}),l.object({mode:l.literal("human"),jitter:l.number().min(0).max(1).default(.35),commaPauseMultiplier:l.number().min(1).default(3),sentencePauseMultiplier:l.number().min(1).default(5.5),paragraphPauseMultiplier:l.number().min(1).default(7)})]),qu=l.object({enabled:l.boolean().default(!1),charset:l.enum(["ascii","alphanumeric","matrix","binary","hex","custom"]).default("alphanumeric"),customCharset:l.string().optional(),scrambleFramesPerChar:l.number().int().min(1).default(8),highlightProbability:l.number().min(0).max(1).default(.25),scrambleColor:l.string().optional()}),Wn=l.object({granularity:l.enum(["character","word","line"]).default("character"),cursor:Yu.default({enabled:!0,style:"bar",customChar:"|",blinkFrequency:2,hideOnComplete:!1,width:2.5,spacing:3}),cadence:Xu.default({mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7}),scramble:qu.default({enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25}),soundSync:l.boolean().default(!1)}),Hn=l.enum(["characters","characters_excluding_spaces","words","lines"]),Zu=l.enum(["percentage","index"]),Ku=l.enum(["square","ramp_up","ramp_down","triangle","round","smooth"]),Yn=l.enum(["add","subtract","intersect","min","max","difference"]),Qu=l.object({type:l.literal("range"),start:l.number().default(0),end:l.number().default(1),offset:l.number().default(0),units:Zu.default("percentage"),basedOn:Hn.default("characters"),shape:Ku.default("square"),mode:Yn.default("add"),amount:l.number().min(-1).max(1).default(1),easeHigh:l.number().min(-1).max(1).default(0),easeLow:l.number().min(-1).max(1).default(0),randomizeOrder:l.boolean().default(!1),randomSeed:l.number().int().default(12345)}),Ju=l.object({type:l.literal("wiggly"),wigglesPerSecond:l.number().positive().default(2),correlation:l.number().min(0).max(1).default(.5),temporalPhaseDeg:l.number().default(0),spatialPhaseDeg:l.number().default(0),minAmount:l.number().min(-1).max(1).default(-1),maxAmount:l.number().min(-1).max(1).default(1),randomSeed:l.number().int().default(42),basedOn:Hn.default("characters"),mode:Yn.default("intersect")}),el=l.object({type:l.literal("signal"),signalId:l.string(),multiplier:l.number().default(1),offset:l.number().default(0),phaseSpread:l.number().default(0),basedOn:Hn.default("characters"),mode:Yn.default("add")}),tl=l.discriminatedUnion("type",[Qu,Ju,el]),rl=l.object({x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),skew:l.number().optional(),skewAxis:l.number().optional(),tracking:l.number().optional(),lineSpacing:l.number().optional(),opacity:l.number().min(0).max(1).optional(),fillColor:l.string().optional(),strokeColor:l.string().optional(),strokeWidth:l.number().min(0).optional(),blur:l.number().min(0).optional(),characterOffset:l.number().int().optional()}),nl=l.enum(["character","word","line","all"]),il=l.object({grouping:nl.default("character"),anchorX:l.number().default(.5),anchorY:l.number().default(.8)}),or=l.object({name:l.string().default("Animator"),selectors:l.array(tl).min(1),props:rl,anchor:il.default({grouping:"character",anchorX:.5,anchorY:.8})}),Lp=l.object({text:l.string(),fontFamily:l.string().default("Inter"),fontSize:l.number().positive().default(24),fontWeight:l.union([l.number(),l.string()]).default(400),fill:l.string().default("#ffffff"),letterSpacing:l.number().default(0),lineHeight:l.number().positive().default(1.2),textAlign:l.enum(["left","center","right"]).default("left"),pathOptions:ir.optional(),typewriter:Wn.optional(),animators:l.array(or).default([])});var ta=class e{options={firstMargin:0,lastMargin:0,reversePath:!1,perpendicularToPath:!0,forceAlignment:!1,loop:!1,baselineOffset:"baseline",baselineShift:0};static fromSvg(t){let r=new e;return r.options.path={type:"svg",d:t},r}static fromBezier(t){let r=new e;return r.options.path={type:"bezier",segments:t},r}static fromCurve(t){return e.fromBezier([t])}static circularBadge(t,r,n){let i=new e;return i.options.path={type:"ellipse",cx:t,cy:r,rx:n,ry:n,startAngleDeg:0,endAngleDeg:360},i.options.loop=!0,i}static ellipse(t,r,n,i,o=0,a=360){let s=new e;return s.options.path={type:"ellipse",cx:t,cy:r,rx:n,ry:i,startAngleDeg:o,endAngleDeg:a},s.options.loop=Math.abs(a-o)>=360,s}static wave(t,r,n,i,o,a=0){let s=new e;return s.options.path={type:"wave",startX:t,startY:r,length:n,amplitude:i,frequency:o,phaseDeg:a},s}firstMargin(t){return this.options.firstMargin=t,this}lastMargin(t){return this.options.lastMargin=t,this}reversePath(t){return this.options.reversePath=t,this}perpendicularToPath(t){return this.options.perpendicularToPath=t,this}forceAlignment(t){return this.options.forceAlignment=t,this}loop(t){return this.options.loop=t,this}baselineOffset(t){return this.options.baselineOffset=t,this}baselineShift(t){return this.options.baselineShift=t,this}build(){return ir.parse(this.options)}},ra=class e{name="Animator";selectors=[];props={};anchor={grouping:"character",anchorX:.5,anchorY:.8};static create(t){let r=new e;return r.name=t,r}addRangeSelector(t){let r=t.easeHigh??0,n=Math.abs(r)>1?r/100:r,i=t.easeLow??0,o=Math.abs(i)>1?i/100:i;return this.selectors.push({type:"range",start:t.start??0,end:t.end??1,offset:t.offset??0,units:"percentage",basedOn:t.basedOn??"characters",shape:t.shape??"smooth",mode:t.mode??"add",amount:1,easeHigh:Math.max(-1,Math.min(1,n)),easeLow:Math.max(-1,Math.min(1,o)),randomizeOrder:t.randomizeOrder??!1,randomSeed:t.randomSeed??12345}),this}addWigglySelector(t){return this.selectors.push({type:"wiggly",wigglesPerSecond:t.wigglesPerSecond??2,correlation:t.correlation??.5,temporalPhaseDeg:0,spatialPhaseDeg:0,minAmount:t.minAmount??-1,maxAmount:t.maxAmount??1,randomSeed:t.randomSeed??42,basedOn:"characters",mode:t.mode??"intersect"}),this}addSignalSelector(t,r=1,n=0,i=0,o="add"){return this.selectors.push({type:"signal",signalId:t,multiplier:r,offset:i,phaseSpread:n,basedOn:"characters",mode:o}),this}x(t){return this.props.x=t,this}y(t){return this.props.y=t,this}z(t){return this.props.z=t,this}scale(t){return this.props.scale=t,this}scaleX(t){return this.props.scaleX=t,this}scaleY(t){return this.props.scaleY=t,this}rotation(t){return this.props.rotation=t,this}rotationX(t){return this.props.rotationX=t,this}rotationY(t){return this.props.rotationY=t,this}skew(t){return this.props.skew=t,this}skewAxis(t){return this.props.skewAxis=t,this}opacity(t){return this.props.opacity=t,this}blur(t){return this.props.blur=t,this}fill(t){return this.fillColor(t)}fillColor(t){return this.props.fillColor=t,this}strokeColor(t){return this.props.strokeColor=t,this}strokeWidth(t){return this.props.strokeWidth=t,this}tracking(t){return this.props.tracking=t,this}lineSpacing(t){return this.props.lineSpacing=t,this}characterOffset(t){return this.props.characterOffset=t,this}anchorGrouping(t,r=.5,n=.8){return this.anchor={grouping:t,anchorX:r,anchorY:n},this}build(){return or.parse({name:this.name,selectors:this.selectors,props:this.props,anchor:this.anchor})}};f();f();var ol=`
1
+ import{a as Np}from"./chunk-2YJ2EW2B.mjs";import{N as uo,O as lo,T as Cu,U as Du,X as zn,Y as _n,d as ht,m as oo,w as ku,x as Rp,y as Pu,z as Mu}from"./chunk-5DZTPUMH.mjs";import{a as In,b as jn}from"./chunk-3F6JGYSP.mjs";import{a as ao,b as xu}from"./chunk-JJ7D26WR.mjs";import{a as Er,d as Au}from"./chunk-FZ4RD7HV.mjs";import{r as wu,t as vu,u as Su}from"./chunk-52X7SURQ.mjs";import{$ as Lo,E as Do,G as Un,I as Oo,J as rr,K as Ro,O as Vn,R as Gn,T as nr,U as Dt,V as No,W as Fo,X as it,Y as Eo,_ as Bo,aa as Ot,b as vo,ba as Io,ca as jo,da as zo,ea as _o,fa as jr,ga as $o,ha as Uo,ia as Vo,ja as Go,ka as Wo,l as So,la as zr,m as ko,ma as gt,n as Po,na as Ho,oa as Yo,p as Ir,pa as Xo,s as Mo,w as To,x as Ao,z as Co}from"./chunk-UBY2UYEL.mjs";import{$ as $n,S as Ou,X as po,a as Qt,d as ou,e as Bn,ea as tr,f as Ct,fa as ho,ha as go,ia as bo,la as Br,ma as yo,na as xo,oa as Lr}from"./chunk-PH3UUX6A.mjs";import{a as fo}from"./chunk-BREZX5L5.mjs";import{a as mo}from"./chunk-OGSZZ4JO.mjs";import{a as co}from"./chunk-LGQSJCKE.mjs";import{i as io}from"./chunk-6ISHV73H.mjs";import{c as fu}from"./chunk-CSLSWUUT.mjs";import{d as wo}from"./chunk-2CECZN67.mjs";import{a as ie}from"./chunk-3DXMWDQ3.mjs";import{d as Tu}from"./chunk-OBIJIQCZ.mjs";import{f as au,i as su,j as uu,k as lu,n as cu}from"./chunk-HOV6DDBZ.mjs";import{h as du,j as mu}from"./chunk-RECQ74RP.mjs";import{f as Jt}from"./chunk-UE7Y65C3.mjs";import{a as u}from"./chunk-6FULVULN.mjs";import{a as Kt,l as iu,t as Nr}from"./chunk-ULOFDFHJ.mjs";import{a as je}from"./chunk-NCQHOGZK.mjs";import{j as er,y as so}from"./chunk-64L4GUOF.mjs";import{a as gu,l as to,m as Fr}from"./chunk-VEDMJBJV.mjs";import{b as eo,r as he,t as Ln}from"./chunk-QEWDIPJ7.mjs";import{a as pu}from"./chunk-OGPJTUAL.mjs";import{a as hu}from"./chunk-354GX6IB.mjs";import{c as Qi,h as Ji}from"./chunk-5RRKGN2U.mjs";import{a as bu,d as ro,g as no,j as yu,o as W}from"./chunk-BDZ3TSOT.mjs";import{b as En,d as nt,f as x,g as f}from"./chunk-Y4NIR77Z.mjs";var Sm=En((h3,vm)=>{f();var Ii=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Ii(),apply:()=>Ii(),construct:()=>Ii()});vm.exports=Ii()});var jm=En((pA,Im)=>{f();var Vi=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Vi(),apply:()=>Vi(),construct:()=>Vi()});Im.exports=Vi()});var Vm=En((bA,Um)=>{f();var Wi=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Wi(),apply:()=>Wi(),construct:()=>Wi()});Um.exports=Wi()});var Wm=En((xA,Gm)=>{f();var Hi=()=>new Proxy(function(){},{get:(e,t)=>t==="__esModule"?!0:t===Symbol.toPrimitive?()=>"":Hi(),apply:()=>Hi(),construct:()=>Hi()});Gm.exports=Hi()});f();f();f();f();var Fp=e=>!e.source||e.source.type==="keyframe";function _r(e){let t=[],r=new Map;for(let n of e){if(!Fp(n)){t.push(n);continue}let i=r.get(n.prop);if(!i){let a={...n,keyframes:[...n.keyframes??[]]};r.set(n.prop,a),t.push(a);continue}let o=new Map(i.keyframes.map(a=>[a.frame,a]));for(let a of n.keyframes??[])o.set(a.frame,a);i.keyframes=[...o.values()].sort((a,s)=>a.frame-s.frame)}return t}function Ru(e,t){if(!e)return t;let r=qo(e);if(!r||r.name==="none")return t;let{name:n,dir:i,params:o}=r,a=Math.max(0,Math.min(1,t)),s=l=>i==="in"?l(a):i==="out"?1-l(1-a):a<.5?l(a*2)/2:1-l((1-a)*2)/2;switch(n){case"power1":return s(l=>l*l);case"power2":return s(l=>l*l*l);case"power3":return s(l=>l*l*l*l);case"sine":return s(l=>1-Math.cos(l*Math.PI/2));case"circ":return s(l=>1-Math.sqrt(Math.max(0,1-l*l)));case"expo":return s(l=>l===0?0:2**(10*(l-1)));case"back":{let l=o?.[0]??1.70158,c=l+1;return s(d=>c*d*d*d-l*d*d)}case"bounce":{let l=c=>{if(c<.36363636363636365)return 7.5625*c*c;if(c<.7272727272727273){let h=c-.5454545454545454;return 7.5625*h*h+.75}if(c<.9090909090909091){let h=c-.8181818181818182;return 7.5625*h*h+.9375}let p=c-2.625/2.75;return 7.5625*p*p+.984375};return i==="out"?l(a):i==="in"?1-l(1-a):a<.5?(1-l(1-2*a))/2:(1+l(2*a-1))/2}default:return a}}function qo(e){if(e){if(typeof e=="object"&&"name"in e&&"dir"in e)return e;if(typeof e=="string"){let t=e.trim(),r=t.match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]+)\))?$/);if(r){let l=r[1].toLowerCase(),c=l==="linear"?"none":l,d=(r[2]||"out").toLowerCase(),m="out";d==="in"?m="in":d==="out"?m="out":d==="inout"&&(m="inOut");let p;return r[3]&&(p=r[3].split(",").map(h=>Number.parseFloat(h.trim())).filter(h=>!Number.isNaN(h))),{name:c,dir:m,...p&&p.length>0?{params:p}:{}}}let n=t.indexOf(".");if(n===-1){let l=t.toLowerCase();return{name:l==="linear"?"none":l,dir:"out"}}let i=t.slice(0,n).toLowerCase(),o=i==="linear"?"none":i,a=t.slice(n+1).toLowerCase(),s="out";return a==="in"?s="in":a==="out"?s="out":a==="inout"&&(s="inOut"),{name:o,dir:s}}}}var Q=class e{tracks=[];frameStep;defaultRepeat;defaultYoyo;constructor(t=[]){this.tracks=[...t]}static create(){return new e}static stepped(t=2){return new e().stepped(t)}stepped(t=2){return this.frameStep=Math.max(1,Math.min(24,Math.round(t))),this}static fromTo(t,r,n,i={}){return new e().fromTo(t,r,n,i)}static keys(t,r,n){return new e().keys(t,r,n)}static signal(t,r,n={}){return new e().signal(t,r,n)}static colorSignal(t,r,n){return new e().colorSignal(t,r,n)}static kineticSweep(t=-1,r=1,n=0,i=24,o="power2.out"){return new e().kineticSweep(t,r,n,i,o)}static typewriter(t=0,r=30,n="linear"){return new e().typewriter(t,r,n)}static letterSpacing(t,r,n=0,i=24,o="power2.out"){return new e().letterSpacing(t,r,n,i,o)}static wiggle(t,r={}){return new e().wiggle(t,r)}static spring(t,r={}){return new e().spring(t,r)}static firstMargin(t,r,n={}){return new e().firstMargin(t,r,n)}static strokeWidth(t,r,n={}){return new e().fromTo("strokeWidth",t,r,n)}static rotateX(t,r,n={}){return new e().fromTo("rotateX",t,r,n)}static rotateY(t,r,n={}){return new e().fromTo("rotateY",t,r,n)}static rotateZ(t,r,n={}){return new e().fromTo("rotateZ",t,r,n)}static rotation(t,r,n={}){return new e().fromTo("rotation",t,r,n)}static scale(t,r,n={}){return new e().fromTo("scale",t,r,n)}static scaleX(t,r,n={}){return new e().fromTo("scaleX",t,r,n)}static scaleY(t,r,n={}){return new e().fromTo("scaleY",t,r,n)}addTrack(t){return this.tracks.push(t),this}repeat(t=-1,r){this.defaultRepeat=t;for(let n of this.tracks)(!r||n.prop===r)&&(n.repeat=t);return this}yoyo(t=!0,r){this.defaultYoyo=t;for(let n of this.tracks)(!r||n.prop===r)&&(n.yoyo=t);return this}loop(t={},r){return this.repeat(-1,r),t.yoyo&&this.yoyo(!0,r),this}fromTo(t,r,n,i={}){let o=i.from??i.start??i.fromFrame??0,a=i.to??i.end??i.toFrame??(i.durationFrames!==void 0?o+i.durationFrames:o+24),s=qo(i.ease),l=this.tracks.find(d=>d.prop===t&&(!d.source||d.source.type==="keyframe"));if(!l){let d={id:`${t}_fromTo_${this.tracks.length}`,prop:t,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(d),l=d}i.repeat!==void 0&&(l.repeat=i.repeat),i.yoyo!==void 0&&(l.yoyo=i.yoyo),i.durationFrames!==void 0&&(l.durationFrames=i.durationFrames);let c=l.id;return l.keyframes.length===0&&o>0&&l.keyframes.push({id:`${c}_k0`,frame:0,value:r}),(l.keyframes.length===0||l.keyframes[l.keyframes.length-1].frame<o)&&l.keyframes.push({id:`${c}_k_${o}`,frame:o,value:r}),l.keyframes.push({id:`${c}_k_${a}`,frame:a,value:n,...s&&{ease:s}}),l.keyframes.sort((d,m)=>d.frame-m.frame),this}keyframe(t,r,n,i){let o=this.tracks.find(c=>c.prop===t&&(!c.source||c.source.type==="keyframe"));if(!o){let c={id:`${t}_track_${this.tracks.length}`,prop:t,keyframes:[],...this.defaultRepeat!==void 0&&{repeat:this.defaultRepeat},...this.defaultYoyo!==void 0&&{yoyo:this.defaultYoyo}};this.tracks.push(c),o=c}let a=qo(i),s={id:`k_${o.keyframes.length}_f${r}`,frame:r,value:n,...a&&{ease:a}},l=o.keyframes.findIndex(c=>c.frame===r);return l>=0?o.keyframes[l]=s:o.keyframes.push(s),o.keyframes.sort((c,d)=>c.frame-d.frame),this}keys(t,r,n){for(let[i,o,a]of r)this.keyframe(t,Math.round(i),o,a);if(n){let i=this.tracks.find(o=>o.prop===t&&(!o.source||o.source.type==="keyframe"));i&&(n.repeat!==void 0&&(i.repeat=n.repeat),n.yoyo!==void 0&&(i.yoyo=n.yoyo),n.durationFrames!==void 0&&(i.durationFrames=n.durationFrames))}return this}fadeIn(t=0,r=20,n="power2.out"){return this.fromTo("opacity",0,1,{from:t,to:r,ease:n})}fadeOut(t,r,n="power2.in"){return this.fromTo("opacity",1,0,{from:t,to:r,ease:n})}slideInY(t,r,n=0,i=24,o="power2.out"){return this.fromTo("y",t,r,{from:n,to:i,ease:o})}slideInX(t,r,n=0,i=24,o="power2.out"){return this.fromTo("x",t,r,{from:n,to:i,ease:o})}kineticSweep(t=-1,r=1,n=0,i=24,o="power2.out"){return this.fromTo("offset",t,r,{from:n,to:i,ease:o})}typewriter(t=0,r=30,n="linear"){return this.fromTo("text",0,1,{from:t,to:r,ease:n})}letterSpacing(t,r,n=0,i=24,o="power2.out"){return this.fromTo("letterSpacing",t,r,{from:n,to:i,ease:o})}firstMargin(t,r,n={}){return this.fromTo("firstMargin",t,r,n)}lastMargin(t,r,n={}){return this.fromTo("lastMargin",t,r,n)}baselineShift(t,r,n={}){return this.fromTo("baselineShift",t,r,n)}rotateX(t,r,n={}){return this.fromTo("rotateX",t,r,n)}rotateY(t,r,n={}){return this.fromTo("rotateY",t,r,n)}rotateZ(t,r,n={}){return this.fromTo("rotateZ",t,r,n)}scaleX(t,r,n={}){return this.fromTo("scaleX",t,r,n)}scaleY(t,r,n={}){return this.fromTo("scaleY",t,r,n)}scale(t,r,n={}){return this.fromTo("scale",t,r,n)}perspective(t,r,n={}){return this.fromTo("perspective",t,r,n)}translateZ(t,r,n={}){return this.fromTo("translateZ",t,r,n)}tilt3D(t){let r=t.start??t.fromFrame,n=t.end??t.toFrame,i=t.ease,o=t.from??{},a=t.to,s=["rotateX","rotateY","rotateZ","translateZ","perspective"];for(let l of s){let c=a[l];if(c!==void 0){let d=o[l]??0;this.fromTo(l,d,c,{from:r,to:n,fromFrame:r,toFrame:n,ease:i})}}return this}signal(t,r,n={}){let{handleId:i,inline:o}=uo(r),a=`${t}_sig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:n.multiplier??1,offset:n.offset??0,smoothingWindowFrames:n.smoothing??0,signalMode:n.mode??"continuous",threshold:n.threshold??.15,accumulateThreshold:n.threshold??.15,debounceFrames:n.debounceFrames??2,channel:n.channel??"primary",...n.clock&&{clock:n.clock}};return o&&lo(s,o),this.tracks.push({id:a,prop:t,source:s,keyframes:[]}),this}colorSignal(t,r,n){let{handleId:i,inline:o}=uo(r),a=`${t}_colorSig_${i}_${this.tracks.length}`,s={type:"signal",inputHandleId:i,multiplier:n.multiplier??1,offset:n.offset??0,smoothingWindowFrames:n.smoothing??0,colorMode:n.colorMode??"interpolate",colorA:n.colorA,colorB:n.colorB,colorThreshold:n.threshold,channel:"primary"};return o&&lo(s,o),this.tracks.push({id:a,prop:t,source:s,keyframes:[]}),this}wiggle(t,r={}){let n=`${t}_wiggle_${this.tracks.length}`,i={type:"wiggle",frequency:r.frequency??2,amplitude:r.amplitude??20,octaves:r.octaves??1,seed:r.seed??1234};return this.tracks.push({id:n,prop:t,source:i,keyframes:[]}),this}spring(t,r={}){let n=`${t}_spring_${this.tracks.length}`,i={type:"springOvershoot",damping:r.damping??12,stiffness:r.stiffness??180,mass:r.mass??1};return this.tracks.push({id:n,prop:t,source:i,keyframes:[]}),this}followPath(t,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,o=Math.max(1,i-n),a=r.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=t.totalLength??1,l=r.fromProgress??0,c=r.toProgress??1;r.fromDistance!==void 0&&s>0&&(l=r.fromDistance/s),r.toDistance!==void 0&&s>0&&(c=r.toDistance/s);let d=r.autoOrient??!0,m=r.banking??0,p=r.pitchOffset??0,h=r.yawOffset??0,b=r.rollOffset??0,g=!1,y=!1,k=!1,S=[];for(let A=0;A<=a;A++){let w=A/a,T=Ru(r.ease,w),v=l+T*(c-l),E=Math.round(n+w*o),C=[0,0,0],N=[1,0,0],G=[0,0,0];if(typeof t.getFrameAt=="function"){let M=t.getFrameAt(v);C=M.position,N=M.tangent,G=M.rotation??[0,0,0]}else{let M=t.getPointAt(v);C=M.position,M.tangent&&(N=M.tangent);let H=Math.asin(Math.max(-1,Math.min(1,-N[1])))*(180/Math.PI),q=Math.atan2(N[0],N[2])*(180/Math.PI),V=Math.atan2(N[1],N[0])*(180/Math.PI);G=[H,q,V]}let _=G[0]+p,I=G[1]+h,P=(Math.abs(N[2])<1e-4?Math.atan2(N[1],N[0])*(180/Math.PI):G[2])+b;if(m!==0){let M=Math.min(1,v+.02),H=Math.max(0,v-.02),q=t.getPointAt(M),V=t.getPointAt(H),z=q.tangent??[1,0,0],K=V.tangent??[1,0,0],re=Math.atan2(z[0],z[2]),de=Math.atan2(K[0],K[2]),ae=re-de;P-=ae*m*57.2958}Math.abs(C[2])>1e-4&&(g=!0),Math.abs(_)>1e-4&&(y=!0),Math.abs(I)>1e-4&&(k=!0),S.push({f:E,x:C[0],y:C[1],z:C[2],rx:_,ry:I,rz:P})}for(let A of S)this.keyframe("x",A.f,A.x),this.keyframe("y",A.f,A.y),g&&this.keyframe("z",A.f,A.z),d&&(this.keyframe("rotateZ",A.f,A.rz),y&&this.keyframe("rotateX",A.f,A.rx),k&&this.keyframe("rotateY",A.f,A.ry));return this}applyTo(t){return t.animation=this.toSpec(),t}merge(...t){return this.tracks=_r([...this.tracks,...t.flatMap(r=>r.tracks)]),this}static merge(...t){let r=new e;return r.tracks=_r(t.flatMap(n=>n.tracks)),r}toSpec(){return{tracks:this.tracks,...this.frameStep!==void 0&&{frameStep:this.frameStep}}}toJSON(){return this.toSpec()}},Zo=class e extends Q{static camera(){return new e}dolly(t,r,n={}){if(typeof t=="object"){let i=t,o=i.start??i.fromFrame??0,a=i.end??i.toFrame??0;return this.fromTo("cameraZ",i.fromDistance,i.toDistance,{from:o,to:a,ease:i.ease})}return this.fromTo("cameraZ",t,r??t,n)}orbit(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return t.azimuth&&this.fromTo("orbitAzimuth",t.azimuth.from??0,t.azimuth.to,{from:r,to:n,ease:t.ease}),t.elevation&&this.fromTo("orbitElevation",t.elevation.from??0,t.elevation.to,{from:r,to:n,ease:t.ease}),t.radius&&this.fromTo("orbitRadius",t.radius.from??1500,t.radius.to,{from:r,to:n,ease:t.ease}),this}truck(t,r,n={}){return this.fromTo("cameraX",t,r,n)}pedestal(t,r,n={}){return this.fromTo("cameraY",t,r,n)}pan(t,r,n={}){return this.fromTo("cameraYaw",t,r,n)}tilt(t,r,n={}){return this.fromTo("cameraPitch",t,r,n)}roll(t,r,n={}){return this.fromTo("cameraRoll",t,r,n)}rackFocus(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return this.fromTo("focusDistance",t.fromDistance,t.toDistance,{from:r,to:n,ease:t.ease??"power2.inOut"}),t.toFStop!==void 0&&this.fromTo("fStop",t.fromFStop??2.8,t.toFStop,{from:r,to:n,ease:t.ease??"power2.inOut"}),this}handheld(t){let r=t.start??t.fromFrame??0,n=t.end??t.toFrame??0;return this.fromTo("shakeTranslation",0,t.translationAmplitude,{from:r,to:n}),this.fromTo("shakeRotation",0,t.rotationAmplitude,{from:r,to:n}),this}followPath3D(t,r={}){let n=r.start??r.fromFrame??0,i=r.end??r.toFrame??60,o=Math.max(1,i-n),a=r.samples??Math.max(8,Math.min(60,Math.round(o/2))),s=r.mode??(r.target?"lookAtTarget":"leadTarget"),l=r.fromProgress??0,c=r.toProgress??1,d=r.lookAhead??.05;for(let m=0;m<=a;m++){let p=m/a,h=Ru(r.ease,p),b=l+h*(c-l),g=Math.round(n+p*o),y=[0,0,0],k=[0,0,0];if(typeof t.getFrameAt=="function"){let S=t.getFrameAt(b);y=S.position,k=S.rotation??[0,0,0]}else y=t.getPointAt(b).position;if(this.keyframe("cameraX",g,y[0]),this.keyframe("cameraY",g,y[1]),this.keyframe("cameraZ",g,y[2]),s==="lookAtTarget"){let S=r.target??[y[0],y[1],0];this.keyframe("targetX",g,S[0]),this.keyframe("targetY",g,S[1]),this.keyframe("targetZ",g,S[2])}else if(s==="leadTarget"){let S=Math.min(1,b+d),A=t.getPointAt(S);this.keyframe("targetX",g,A.position[0]),this.keyframe("targetY",g,A.position[1]),this.keyframe("targetZ",g,A.position[2])}else s==="orientAlongPath"&&(this.keyframe("cameraPitch",g,k[0]),this.keyframe("cameraYaw",g,k[1]),this.keyframe("cameraRoll",g,k[2]))}return this}};f();var Ko=class e{name;props={};selectors=[];constructor(t){this.name=t}static create(t){return new e(t)}skew(t,r=0){return this.props.skew=t,this.props.skewAxis=r,this}anchor(t,r="character",n=0,i=0){return this.props.anchor={grouping:r,preset:t,anchorX:.5,anchorY:.5,offsetX:n,offsetY:i},this}anchorNormalized(t,r,n="character"){return this.props.anchor={grouping:n,preset:"custom",anchorX:t,anchorY:r,offsetX:0,offsetY:0},this}translateZ(t){return this.props.translateZ=t,this}tilt3D(t=0,r=0,n=0){return this.props.rotationX=t,this.props.rotationY=r,this.props.rotationZ=n,this}rotationX(t){return this.props.rotationX=t,this}rotationY(t){return this.props.rotationY=t,this}rotationZ(t){return this.props.rotationZ=t,this}volumetricFormation(t="cylinder",r=300,n=120,i=360,o=1200,a="y"){return this.props.formation={mode:t,radius:r,pitch:n,totalAngle:i,perspective:o,axis:a},this}lineSpacing(t,r=0){return this.props.lineSpacing=t,this.props.lineAnchor=r,this}lineAnchor(t){return this.props.lineAnchor=t,this}spring(t=180,r=12,n=1,i=0){return this.props.spring={stiffness:t,damping:r,mass:n,initialVelocity:i,overshootMultiplier:1},this}stroke(t,r="#ffffff",n=1){return this.props.stroke={strokeWidth:t,strokeColor:r,strokeAlign:"center",fillOpacity:n,dashOffset:0},this}variableFont(t){return this.props.variableAxes=t,this}chromaticGlitch(t,r=0,n=-t,i=0){return this.props.chromaticGlitch={redShiftX:t,redShiftY:r,blueShiftX:n,blueShiftY:i,sliceProbability:0,sliceAmplitude:0},this}audioSpectrum(t,r=60,n=16e3,i=2.5){return this.props.audioSpectrum={signalChannel:t,minFreqHz:r,maxFreqHz:n,scaleAxis:"scaleY",minScale:.2,maxScale:i,peakDecay:.8},this}longShadow(t=45,r=40,n="#000000",i=.8,o=0,a=16){return this.props.longShadow={angle:t,length:r,color:n,startOpacity:i,endOpacity:o,steps:a},this}particleDissolve(t=0,r=90,n=120){return this.props.particleDissolve={progress:t,dispersalAngle:r,maxDisplacement:n,turbulence:.5,particleSize:2},this}addExpressionSelector(t,r="add"){return this.selectors.push({type:"expression",expression:t,mode:r,amount:1}),this}expressionSelector(t,r="add"){return this.addExpressionSelector(t,r)}x(t){return this.props.x=t,this}y(t){return this.props.y=t,this}scale(t){return this.props.scale=t,this}scaleX(t){return this.props.scaleX=t,this}scaleY(t){return this.props.scaleY=t,this}rotation(t){return this.props.rotation=t,this}opacity(t){return this.props.opacity=t,this}blur(t){return this.props.blur=t,this}fillColor(t){return this.props.fillColor=t,this}build(){return{name:this.name,selectors:this.selectors,props:this.props}}};f();var Nu=u.enum(["character","word","line","all"]),Fu=u.enum(["center","baseline","bottom_left","bottom_center","bottom_right","top_left","top_center","top_right","custom"]),Eu=u.object({grouping:Nu.default("character"),preset:Fu.default("center"),anchorX:u.number().default(.5),anchorY:u.number().default(.5),offsetX:u.number().default(0),offsetY:u.number().default(0)}),Ep=u.object({skew:u.number().min(-90).max(90),skewAxis:u.number().default(0)}),Bp=u.object({lineSpacing:u.number(),lineAnchor:u.number().min(0).max(1).default(0)}),Bu=u.enum(["planar","vortex","cylinder","helix"]),Qo=u.object({mode:Bu.default("planar"),radius:u.number().default(300),pitch:u.number().default(120),totalAngle:u.number().default(360),axis:u.enum(["x","y","z"]).default("y"),perspective:u.number().positive().default(1200)}),Lp=u.object({translateZ:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),rotationZ:u.number().optional(),formation:Qo.optional()}),Lu=u.object({stiffness:u.number().positive().default(180),damping:u.number().positive().default(12),mass:u.number().positive().default(1),initialVelocity:u.number().default(0),overshootMultiplier:u.number().min(.5).max(3).default(1)}),Ip=u.object({type:u.literal("expression"),name:u.string().optional(),expression:u.string(),mode:u.enum(["add","subtract","intersect","min","max","difference"]).default("add"),amount:u.number().default(1)}),Iu=u.object({strokeWidth:u.number().min(0).default(0),strokeColor:u.string().default("#ffffff"),strokeAlign:u.enum(["center","inside","outside"]).default("center"),fillOpacity:u.number().min(0).max(1).default(1),dashArray:u.tuple([u.number(),u.number()]).optional(),dashOffset:u.number().default(0)}),Jo=u.object({direction:u.enum(["left","right","up","down"]).default("left"),velocity:u.number().default(120),loop:u.boolean().default(!0),repeatGap:u.number().default(80),snap:u.object({enabled:u.boolean().default(!1),granularity:u.enum(["character","word","line"]).default("word"),stopIndex:u.number().default(0),decelEase:u.string().default("cubic.out")}).optional()}),ju=u.object({weight:u.number().min(100).max(1e3).optional(),width:u.number().min(50).max(200).optional(),slant:u.number().min(-25).max(25).optional(),italic:u.number().min(0).max(1).optional(),opticalSize:u.number().min(6).max(144).optional()}),zu=u.object({redShiftX:u.number().default(0),redShiftY:u.number().default(0),blueShiftX:u.number().default(0),blueShiftY:u.number().default(0),sliceProbability:u.number().min(0).max(1).default(0),sliceAmplitude:u.number().default(0)}),_u=u.object({signalChannel:u.string(),minFreqHz:u.number().default(60),maxFreqHz:u.number().default(16e3),scaleAxis:u.enum(["scaleY","scaleX","scale","y"]).default("scaleY"),minScale:u.number().default(.2),maxScale:u.number().default(2.5),peakDecay:u.number().min(0).max(.99).default(.8)}),$u=u.object({angle:u.number().default(45),length:u.number().min(0).default(0),color:u.string().default("#000000"),startOpacity:u.number().min(0).max(1).default(.8),endOpacity:u.number().min(0).max(1).default(0),steps:u.number().int().min(4).max(64).default(16)}),Uu=u.object({progress:u.number().min(0).max(1).default(0),dispersalAngle:u.number().default(90),maxDisplacement:u.number().default(120),turbulence:u.number().default(.5),particleSize:u.number().default(2)}),Vu=u.object({x:u.number().optional(),y:u.number().optional(),translateZ:u.number().optional(),scale:u.number().optional(),scaleX:u.number().optional(),scaleY:u.number().optional(),rotation:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),rotationZ:u.number().optional(),formation:Qo.optional(),skew:u.number().optional(),skewAxis:u.number().optional(),tracking:u.number().optional(),lineSpacing:u.number().optional(),lineAnchor:u.number().optional(),anchor:Eu.optional(),opacity:u.number().optional(),blur:u.number().optional(),fillColor:u.string().optional(),stroke:Iu.optional(),variableAxes:ju.optional(),chromaticGlitch:zu.optional(),longShadow:$u.optional(),particleDissolve:Uu.optional(),audioSpectrum:_u.optional(),spring:Lu.optional()}),ea=u.object({name:u.string().default("AdvancedAnimator"),selectors:u.array(u.record(u.string(),u.unknown())).default([]),props:Vu});f();f();var $r=u.object({x:u.number(),y:u.number()}),Gu=u.object({p0:$r,p1:$r,p2:$r,p3:$r}),Wu=u.discriminatedUnion("type",[u.object({type:u.literal("svg"),d:u.string().min(1,"SVG path string cannot be empty")}),u.object({type:u.literal("bezier"),segments:u.array(Gu).min(1)}),u.object({type:u.literal("ellipse"),cx:u.number(),cy:u.number(),rx:u.number().positive(),ry:u.number().positive(),startAngleDeg:u.number().default(0),endAngleDeg:u.number().default(360)}),u.object({type:u.literal("wave"),startX:u.number(),startY:u.number(),length:u.number().positive(),amplitude:u.number(),frequency:u.number().positive(),phaseDeg:u.number().default(0)})]),ir=u.object({path:Wu,firstMargin:u.number().default(0),lastMargin:u.number().default(0),reversePath:u.boolean().default(!1),perpendicularToPath:u.boolean().default(!0),forceAlignment:u.boolean().default(!1),loop:u.boolean().default(!1),baselineOffset:u.enum(["baseline","center","ascender","descender"]).default("baseline"),baselineShift:u.number().default(0)}),Hu=u.enum(["bar","underscore","block","custom"]),Yu=u.object({enabled:u.boolean().default(!0),style:Hu.default("bar"),customChar:u.string().default("|"),color:u.string().optional(),blinkFrequency:u.number().min(0).default(2),hideOnComplete:u.boolean().default(!1),width:u.number().positive().default(2.5),spacing:u.number().default(3)}),Xu=u.discriminatedUnion("mode",[u.object({mode:u.literal("constant")}),u.object({mode:u.literal("human"),jitter:u.number().min(0).max(1).default(.35),commaPauseMultiplier:u.number().min(1).default(3),sentencePauseMultiplier:u.number().min(1).default(5.5),paragraphPauseMultiplier:u.number().min(1).default(7)})]),qu=u.object({enabled:u.boolean().default(!1),charset:u.enum(["ascii","alphanumeric","matrix","binary","hex","custom"]).default("alphanumeric"),customCharset:u.string().optional(),scrambleFramesPerChar:u.number().int().min(1).default(8),highlightProbability:u.number().min(0).max(1).default(.25),scrambleColor:u.string().optional()}),Wn=u.object({granularity:u.enum(["character","word","line"]).default("character"),cursor:Yu.default({enabled:!0,style:"bar",customChar:"|",blinkFrequency:2,hideOnComplete:!1,width:2.5,spacing:3}),cadence:Xu.default({mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7}),scramble:qu.default({enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25}),soundSync:u.boolean().default(!1)}),Hn=u.enum(["characters","characters_excluding_spaces","words","lines"]),Zu=u.enum(["percentage","index"]),Ku=u.enum(["square","ramp_up","ramp_down","triangle","round","smooth"]),Yn=u.enum(["add","subtract","intersect","min","max","difference"]),Qu=u.object({type:u.literal("range"),start:u.number().default(0),end:u.number().default(1),offset:u.number().default(0),units:Zu.default("percentage"),basedOn:Hn.default("characters"),shape:Ku.default("square"),mode:Yn.default("add"),amount:u.number().min(-1).max(1).default(1),easeHigh:u.number().min(-1).max(1).default(0),easeLow:u.number().min(-1).max(1).default(0),randomizeOrder:u.boolean().default(!1),randomSeed:u.number().int().default(12345)}),Ju=u.object({type:u.literal("wiggly"),wigglesPerSecond:u.number().positive().default(2),correlation:u.number().min(0).max(1).default(.5),temporalPhaseDeg:u.number().default(0),spatialPhaseDeg:u.number().default(0),minAmount:u.number().min(-1).max(1).default(-1),maxAmount:u.number().min(-1).max(1).default(1),randomSeed:u.number().int().default(42),basedOn:Hn.default("characters"),mode:Yn.default("intersect")}),el=u.object({type:u.literal("signal"),signalId:u.string(),multiplier:u.number().default(1),offset:u.number().default(0),phaseSpread:u.number().default(0),basedOn:Hn.default("characters"),mode:Yn.default("add")}),tl=u.discriminatedUnion("type",[Qu,Ju,el]),rl=u.object({x:u.number().optional(),y:u.number().optional(),z:u.number().optional(),scale:u.number().optional(),scaleX:u.number().optional(),scaleY:u.number().optional(),rotation:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),skew:u.number().optional(),skewAxis:u.number().optional(),tracking:u.number().optional(),lineSpacing:u.number().optional(),opacity:u.number().min(0).max(1).optional(),fillColor:u.string().optional(),strokeColor:u.string().optional(),strokeWidth:u.number().min(0).optional(),blur:u.number().min(0).optional(),characterOffset:u.number().int().optional()}),nl=u.enum(["character","word","line","all"]),il=u.object({grouping:nl.default("character"),anchorX:u.number().default(.5),anchorY:u.number().default(.8)}),or=u.object({name:u.string().default("Animator"),selectors:u.array(tl).min(1),props:rl,anchor:il.default({grouping:"character",anchorX:.5,anchorY:.8})}),jp=u.object({text:u.string(),fontFamily:u.string().default("Inter"),fontSize:u.number().positive().default(24),fontWeight:u.union([u.number(),u.string()]).default(400),fill:u.string().default("#ffffff"),letterSpacing:u.number().default(0),lineHeight:u.number().positive().default(1.2),textAlign:u.enum(["left","center","right"]).default("left"),pathOptions:ir.optional(),typewriter:Wn.optional(),animators:u.array(or).default([])});var ta=class e{options={firstMargin:0,lastMargin:0,reversePath:!1,perpendicularToPath:!0,forceAlignment:!1,loop:!1,baselineOffset:"baseline",baselineShift:0};static fromSvg(t){let r=new e;return r.options.path={type:"svg",d:t},r}static fromBezier(t){let r=new e;return r.options.path={type:"bezier",segments:t},r}static fromCurve(t){return e.fromBezier([t])}static circularBadge(t,r,n){let i=new e;return i.options.path={type:"ellipse",cx:t,cy:r,rx:n,ry:n,startAngleDeg:0,endAngleDeg:360},i.options.loop=!0,i}static ellipse(t,r,n,i,o=0,a=360){let s=new e;return s.options.path={type:"ellipse",cx:t,cy:r,rx:n,ry:i,startAngleDeg:o,endAngleDeg:a},s.options.loop=Math.abs(a-o)>=360,s}static wave(t,r,n,i,o,a=0){let s=new e;return s.options.path={type:"wave",startX:t,startY:r,length:n,amplitude:i,frequency:o,phaseDeg:a},s}firstMargin(t){return this.options.firstMargin=t,this}lastMargin(t){return this.options.lastMargin=t,this}reversePath(t){return this.options.reversePath=t,this}perpendicularToPath(t){return this.options.perpendicularToPath=t,this}forceAlignment(t){return this.options.forceAlignment=t,this}loop(t){return this.options.loop=t,this}baselineOffset(t){return this.options.baselineOffset=t,this}baselineShift(t){return this.options.baselineShift=t,this}build(){return ir.parse(this.options)}},ra=class e{name="Animator";selectors=[];props={};anchor={grouping:"character",anchorX:.5,anchorY:.8};static create(t){let r=new e;return r.name=t,r}addRangeSelector(t){let r=t.easeHigh??0,n=Math.abs(r)>1?r/100:r,i=t.easeLow??0,o=Math.abs(i)>1?i/100:i;return this.selectors.push({type:"range",start:t.start??0,end:t.end??1,offset:t.offset??0,units:"percentage",basedOn:t.basedOn??"characters",shape:t.shape??"smooth",mode:t.mode??"add",amount:1,easeHigh:Math.max(-1,Math.min(1,n)),easeLow:Math.max(-1,Math.min(1,o)),randomizeOrder:t.randomizeOrder??!1,randomSeed:t.randomSeed??12345}),this}addWigglySelector(t){return this.selectors.push({type:"wiggly",wigglesPerSecond:t.wigglesPerSecond??2,correlation:t.correlation??.5,temporalPhaseDeg:0,spatialPhaseDeg:0,minAmount:t.minAmount??-1,maxAmount:t.maxAmount??1,randomSeed:t.randomSeed??42,basedOn:"characters",mode:t.mode??"intersect"}),this}addSignalSelector(t,r=1,n=0,i=0,o="add"){return this.selectors.push({type:"signal",signalId:t,multiplier:r,offset:i,phaseSpread:n,basedOn:"characters",mode:o}),this}x(t){return this.props.x=t,this}y(t){return this.props.y=t,this}z(t){return this.props.z=t,this}scale(t){return this.props.scale=t,this}scaleX(t){return this.props.scaleX=t,this}scaleY(t){return this.props.scaleY=t,this}rotation(t){return this.props.rotation=t,this}rotationX(t){return this.props.rotationX=t,this}rotationY(t){return this.props.rotationY=t,this}skew(t){return this.props.skew=t,this}skewAxis(t){return this.props.skewAxis=t,this}opacity(t){return this.props.opacity=t,this}blur(t){return this.props.blur=t,this}fill(t){return this.fillColor(t)}fillColor(t){return this.props.fillColor=t,this}strokeColor(t){return this.props.strokeColor=t,this}strokeWidth(t){return this.props.strokeWidth=t,this}tracking(t){return this.props.tracking=t,this}lineSpacing(t){return this.props.lineSpacing=t,this}characterOffset(t){return this.props.characterOffset=t,this}anchorGrouping(t,r=.5,n=.8){return this.anchor={grouping:t,anchorX:r,anchorY:n},this}build(){return or.parse({name:this.name,selectors:this.selectors,props:this.props,anchor:this.anchor})}};f();f();var ol=`
2
2
  struct CameraUniforms {
3
3
  viewMatrix: mat4x4<f32>,
4
4
  projMatrix: mat4x4<f32>,
@@ -127,7 +127,7 @@ fn fs_main(in: VertexOutput) -> @location(0) vec4<f32> {
127
127
 
128
128
  return vec4<f32>(blendedRGB * alpha, alpha);
129
129
  }
130
- `;var na=class{device;pipeline;cameraLayout;modelLayout;glassLayout;backdropLayout;modelPool;glassPool;vertexBuffer;indexBuffer;modelData=new Float32Array(40);glassData=new Float32Array(16);constructor(t,r,n="depth24plus",i){this.device=t,this.modelPool=new so(160,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.glassPool=new so(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let o=t.createShaderModule({label:"pbr-glass.wgsl",code:ol});this.cameraLayout=i??t.createBindGroupLayout({label:"GlassCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=t.createBindGroupLayout({label:"GlassModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.glassLayout=t.createBindGroupLayout({label:"GlassUniformLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.backdropLayout=t.createBindGroupLayout({label:"GlassBackdropLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]});let a=t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.glassLayout,this.backdropLayout]});this.pipeline=t.createRenderPipeline({label:"PBRGlassPipeline",layout:a,vertex:{module:o,entryPoint:"vs_main",buffers:[{arrayStride:32,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"}]}]},fragment:{module:o,entryPoint:"fs_main",targets:[{format:r,blend:Su}]},depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"}});let s=new Float32Array([-.5,-.5,0,0,0,0,0,-1,.5,-.5,0,1,0,0,0,-1,.5,.5,0,1,1,0,0,-1,-.5,.5,0,0,1,0,0,-1]),u=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=t.createBuffer({size:s.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(s),this.vertexBuffer.unmap(),this.indexBuffer=t.createBuffer({size:u.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(u),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset(),this.glassPool.reset()}draw(t,r,n,i,o){ku(this.modelData,o.modelMatrix,o.normalMatrix,o.colorTint),this.modelData[36]=o.opacity??1,this.modelData[37]=0,this.modelData[38]=1,this.modelData[39]=0;let a=this.modelPool.getBuffer(this.device,this.modelData);this.glassData[0]=o.ior??1.49,this.glassData[1]=o.roughness??.15,this.glassData[2]=o.f0??.04,this.glassData[3]=o.transmission??.92,this.glassData[4]=o.dispersion??.015,this.glassData[5]=o.envIntensity??.65,this.glassData[6]=o.fresnelPower??5,this.glassData[7]=0,this.glassData[8]=o.viewportWidth,this.glassData[9]=o.viewportHeight,this.glassData[10]=0,this.glassData[11]=0;let s=o.tintColor??[1,1,1,1];this.glassData[12]=s[0],this.glassData[13]=s[1],this.glassData[14]=s[2],this.glassData[15]=s[3];let u=this.glassPool.getBuffer(this.device,this.glassData),c=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:a}}]}),d=this.device.createBindGroup({layout:this.glassLayout,entries:[{binding:0,resource:{buffer:u}}]}),m=this.device.createBindGroup({layout:this.backdropLayout,entries:[{binding:0,resource:i},{binding:1,resource:n.createView()}]});t.setPipeline(this.pipeline),t.setBindGroup(0,r),t.setBindGroup(1,c),t.setBindGroup(2,d),t.setBindGroup(3,m),t.setVertexBuffer(0,this.vertexBuffer),t.setIndexBuffer(this.indexBuffer,"uint16"),t.drawIndexed(6)}destroy(){this.modelPool.destroy(),this.glassPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy()}};f();f();var al=`
130
+ `;var na=class{device;pipeline;cameraLayout;modelLayout;glassLayout;backdropLayout;modelPool;glassPool;vertexBuffer;indexBuffer;modelData=new Float32Array(40);glassData=new Float32Array(16);constructor(t,r,n="depth24plus",i){this.device=t,this.modelPool=new so(160,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.glassPool=new so(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let o=t.createShaderModule({label:"pbr-glass.wgsl",code:ol});this.cameraLayout=i??t.createBindGroupLayout({label:"GlassCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=t.createBindGroupLayout({label:"GlassModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.glassLayout=t.createBindGroupLayout({label:"GlassUniformLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.backdropLayout=t.createBindGroupLayout({label:"GlassBackdropLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]});let a=t.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.glassLayout,this.backdropLayout]});this.pipeline=t.createRenderPipeline({label:"PBRGlassPipeline",layout:a,vertex:{module:o,entryPoint:"vs_main",buffers:[{arrayStride:32,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"}]}]},fragment:{module:o,entryPoint:"fs_main",targets:[{format:r,blend:Su}]},depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"}});let s=new Float32Array([-.5,-.5,0,0,0,0,0,-1,.5,-.5,0,1,0,0,0,-1,.5,.5,0,1,1,0,0,-1,-.5,.5,0,0,1,0,0,-1]),l=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=t.createBuffer({size:s.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(s),this.vertexBuffer.unmap(),this.indexBuffer=t.createBuffer({size:l.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(l),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset(),this.glassPool.reset()}draw(t,r,n,i,o){ku(this.modelData,o.modelMatrix,o.normalMatrix,o.colorTint),this.modelData[36]=o.opacity??1,this.modelData[37]=0,this.modelData[38]=1,this.modelData[39]=0;let a=this.modelPool.getBuffer(this.device,this.modelData);this.glassData[0]=o.ior??1.49,this.glassData[1]=o.roughness??.15,this.glassData[2]=o.f0??.04,this.glassData[3]=o.transmission??.92,this.glassData[4]=o.dispersion??.015,this.glassData[5]=o.envIntensity??.65,this.glassData[6]=o.fresnelPower??5,this.glassData[7]=0,this.glassData[8]=o.viewportWidth,this.glassData[9]=o.viewportHeight,this.glassData[10]=0,this.glassData[11]=0;let s=o.tintColor??[1,1,1,1];this.glassData[12]=s[0],this.glassData[13]=s[1],this.glassData[14]=s[2],this.glassData[15]=s[3];let l=this.glassPool.getBuffer(this.device,this.glassData),c=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:a}}]}),d=this.device.createBindGroup({layout:this.glassLayout,entries:[{binding:0,resource:{buffer:l}}]}),m=this.device.createBindGroup({layout:this.backdropLayout,entries:[{binding:0,resource:i},{binding:1,resource:n.createView()}]});t.setPipeline(this.pipeline),t.setBindGroup(0,r),t.setBindGroup(1,c),t.setBindGroup(2,d),t.setBindGroup(3,m),t.setVertexBuffer(0,this.vertexBuffer),t.setIndexBuffer(this.indexBuffer,"uint16"),t.drawIndexed(6)}destroy(){this.modelPool.destroy(),this.glassPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy()}};f();f();var al=`
131
131
  struct MotionBlurUniforms {
132
132
  shutterFraction: f32, // shutterAngle / 360.0
133
133
  sampleCount: u32, // e.g. 16
@@ -231,7 +231,7 @@ fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
231
231
  fn fs_motion_blur(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
232
232
  return executeMotionBlur(pos);
233
233
  }
234
- `;var ia=class{device;pipeline;bindGroupLayout;uniformBuffer;sampler;constructor(t){this.device=t;let r=t.createShaderModule({label:"motion-blur-shader",code:al});this.bindGroupLayout=t.createBindGroupLayout({label:"motion-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]});let n=t.createPipelineLayout({label:"motion-blur-layout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=t.createRenderPipeline({label:"motion-blur-pipeline",layout:n,vertex:{module:r,entryPoint:"vs_main"},fragment:{module:r,entryPoint:"fs_motion_blur",targets:[{format:"rgba8unorm",blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),this.uniformBuffer=t.createBuffer({label:"motion-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=t.createSampler({label:"motion-blur-sampler",magFilter:"linear",minFilter:"linear"})}render(t,r,n,i,o,a){let s=(a.shutterAngle??180)/360,u=a.sampleCount??16,c=a.maxVelocity??64,d=a.depthThreshold??.05,m=a.curveType==="box"?0:a.curveType==="triangle"?2:1,p=new ArrayBuffer(32),h=new Float32Array(p),g=new Uint32Array(p);h[0]=s,g[1]=u,h[2]=c,g[3]=16,h[4]=a.width,h[5]=a.height,h[6]=d,g[7]=m,this.device.queue.writeBuffer(this.uniformBuffer,0,p);let b=this.device.createBindGroup({label:"motion-blur-bg",layout:this.bindGroupLayout,entries:[{binding:0,resource:r},{binding:1,resource:n},{binding:2,resource:i},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.uniformBuffer}}]}),y=t.beginRenderPass({label:"motion-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});y.setPipeline(this.pipeline),y.setBindGroup(0,b),y.draw(4),y.end()}destroy(){this.uniformBuffer.destroy()}};f();var oa=class{shadowDepthTexture;shadowDepthView;shadowComparisonSampler;lightViewProjMatrix;constructor(t,r=2048){this.lightViewProjMatrix=ft.identity(),this.shadowDepthTexture=t.createTexture({label:"shadow-depth-map",size:[r,r,1],format:"depth32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.shadowDepthView=this.shadowDepthTexture.createView({label:"shadow-depth-view"}),this.shadowComparisonSampler=t.createSampler({label:"shadow-pcf-sampler",compare:"less-equal",magFilter:"linear",minFilter:"linear"})}computeDirectionalLightMatrix(t,r,n=2e3,i=10,o=4e3){let a=ft.lookAt(t,r,[0,1,0]),s=n*.5,u=ft.orthographic(-s,s,-s,s,i,o);return this.lightViewProjMatrix=ft.multiply(u,a),this.lightViewProjMatrix}destroy(){this.shadowDepthTexture.destroy()}};f();f();var sl=`
234
+ `;var ia=class{device;pipeline;bindGroupLayout;uniformBuffer;sampler;constructor(t){this.device=t;let r=t.createShaderModule({label:"motion-blur-shader",code:al});this.bindGroupLayout=t.createBindGroupLayout({label:"motion-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]});let n=t.createPipelineLayout({label:"motion-blur-layout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=t.createRenderPipeline({label:"motion-blur-pipeline",layout:n,vertex:{module:r,entryPoint:"vs_main"},fragment:{module:r,entryPoint:"fs_motion_blur",targets:[{format:"rgba8unorm",blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),this.uniformBuffer=t.createBuffer({label:"motion-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=t.createSampler({label:"motion-blur-sampler",magFilter:"linear",minFilter:"linear"})}render(t,r,n,i,o,a){let s=(a.shutterAngle??180)/360,l=a.sampleCount??16,c=a.maxVelocity??64,d=a.depthThreshold??.05,m=a.curveType==="box"?0:a.curveType==="triangle"?2:1,p=new ArrayBuffer(32),h=new Float32Array(p),b=new Uint32Array(p);h[0]=s,b[1]=l,h[2]=c,b[3]=16,h[4]=a.width,h[5]=a.height,h[6]=d,b[7]=m,this.device.queue.writeBuffer(this.uniformBuffer,0,p);let g=this.device.createBindGroup({label:"motion-blur-bg",layout:this.bindGroupLayout,entries:[{binding:0,resource:r},{binding:1,resource:n},{binding:2,resource:i},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.uniformBuffer}}]}),y=t.beginRenderPass({label:"motion-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});y.setPipeline(this.pipeline),y.setBindGroup(0,g),y.draw(4),y.end()}destroy(){this.uniformBuffer.destroy()}};f();var oa=class{shadowDepthTexture;shadowDepthView;shadowComparisonSampler;lightViewProjMatrix;constructor(t,r=2048){this.lightViewProjMatrix=ht.identity(),this.shadowDepthTexture=t.createTexture({label:"shadow-depth-map",size:[r,r,1],format:"depth32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.shadowDepthView=this.shadowDepthTexture.createView({label:"shadow-depth-view"}),this.shadowComparisonSampler=t.createSampler({label:"shadow-pcf-sampler",compare:"less-equal",magFilter:"linear",minFilter:"linear"})}computeDirectionalLightMatrix(t,r,n=2e3,i=10,o=4e3){let a=ht.lookAt(t,r,[0,1,0]),s=n*.5,l=ht.orthographic(-s,s,-s,s,i,o);return this.lightViewProjMatrix=ht.multiply(l,a),this.lightViewProjMatrix}destroy(){this.shadowDepthTexture.destroy()}};f();f();var sl=`
235
235
  struct SSAOUniforms {
236
236
  projMatrix: mat4x4<f32>,
237
237
  invProjMatrix: mat4x4<f32>,
@@ -377,10 +377,10 @@ fn fs_blur(@builtin(position) pos: vec4<f32>) -> @location(0) f32 {
377
377
  }
378
378
  return result / totalWeight;
379
379
  }
380
- `;var aa=class{device;ssaoPipeline;blurPipeline;ssaoBindGroupLayout;blurBindGroupLayout;ssaoUniformBuffer;blurUniformBuffer;kernelBuffer;noiseTexture;sampler;constructor(t){this.device=t,this.noiseTexture=t.createTexture({label:"ssao-noise-tex",size:[4,4,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});let r=new Uint8Array(64);for(let a=0;a<16;a++)r[a*4+0]=Math.floor(Math.random()*255),r[a*4+1]=Math.floor(Math.random()*255),r[a*4+2]=128,r[a*4+3]=255;t.queue.writeTexture({texture:this.noiseTexture},r,{bytesPerRow:16},[4,4,1]);let n=new Float32Array(128);for(let a=0;a<32;a++){let s=Math.random(),u=Math.random(),c=Math.acos(Math.sqrt(1-s)),d=2*Math.PI*u,m=(a+1)/32;m=.1+.9*(m*m),n[a*4+0]=Math.sin(c)*Math.cos(d)*m,n[a*4+1]=Math.sin(c)*Math.sin(d)*m,n[a*4+2]=Math.cos(c)*m,n[a*4+3]=0}this.kernelBuffer=t.createBuffer({label:"ssao-kernel-buffer",size:n.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),t.queue.writeBuffer(this.kernelBuffer,0,n);let i=t.createShaderModule({label:"ssao-shader",code:sl});this.ssaoBindGroupLayout=t.createBindGroupLayout({label:"ssao-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.ssaoPipeline=t.createRenderPipeline({label:"ssao-eval-pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.ssaoBindGroupLayout]}),vertex:{module:i,entryPoint:"vs_main"},fragment:{module:i,entryPoint:"fs_ssao",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.ssaoUniformBuffer=t.createBuffer({label:"ssao-uniforms",size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let o=t.createShaderModule({label:"ssao-blur-shader",code:ul});this.blurBindGroupLayout=t.createBindGroupLayout({label:"ssao-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.blurPipeline=t.createRenderPipeline({label:"ssao-blur-pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,entryPoint:"fs_blur",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.blurUniformBuffer=t.createBuffer({label:"ssao-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=t.createSampler({label:"ssao-sampler",magFilter:"linear",minFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})}render(t,r,n,i,o,a){let s=a.invProjMatrix??ft.invert(a.projMatrix)??ft.identity(),u=new Float32Array(64);u.set(a.projMatrix,0),u.set(s,16),u.set(a.viewMatrix,32),u[48]=a.radius??45,u[49]=a.bias??.025,u[50]=a.intensity??1.5,new Uint32Array(u.buffer)[51]=a.kernelSamples??16,u[52]=a.width,u[53]=a.height,this.device.queue.writeBuffer(this.ssaoUniformBuffer,0,u);let c=this.device.createBindGroup({label:"ssao-eval-bg",layout:this.ssaoBindGroupLayout,entries:[{binding:0,resource:r},{binding:1,resource:n},{binding:2,resource:this.noiseTexture.createView()},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.kernelBuffer}},{binding:5,resource:{buffer:this.ssaoUniformBuffer}}]}),d=t.beginRenderPass({label:"ssao-eval-pass",colorAttachments:[{view:i,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});d.setPipeline(this.ssaoPipeline),d.setBindGroup(0,c),d.draw(4),d.end();let m=new ArrayBuffer(32),p=new Float32Array(m),h=new Int32Array(m);p[0]=a.width,p[1]=a.height,h[2]=a.blurRadius??4,p[3]=a.depthThreshold??.05,this.device.queue.writeBuffer(this.blurUniformBuffer,0,m);let g=this.device.createBindGroup({label:"ssao-blur-bg",layout:this.blurBindGroupLayout,entries:[{binding:0,resource:i},{binding:1,resource:r},{binding:2,resource:this.sampler},{binding:3,resource:{buffer:this.blurUniformBuffer}}]}),b=t.beginRenderPass({label:"ssao-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});b.setPipeline(this.blurPipeline),b.setBindGroup(0,g),b.draw(4),b.end()}destroy(){this.ssaoUniformBuffer.destroy(),this.blurUniformBuffer.destroy(),this.noiseTexture.destroy()}};f();var Ip=["background","fill","fillColor","strokeColor","borderColor","gradientEndColor","emissive","color"],ll=2e3;function jp(e){for(let{segment:t}of zp().segment(e))if(pu(t)==="emoji")return!0;return!1}var cl;function zp(){return cl??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),cl}function _p(e){let t=e.spans??[];return[e.text,...t.map(r=>r.text)].filter(r=>typeof r=="string").join("")}var dl=3;function sa(e){return e.animation?.tracks??[]}var ml=(e,t)=>sa(e).some(r=>t.includes(r.prop)),$p=new Set(["box","flex","block","group"]);function pl(e){if(e.kind==="text"||e.kind==="light"||e.kind==="camera")return!1;if(!$p.has(String(e.kind)))return!0;let t=e.background;return typeof t=="string"&&t!==""&&t!=="transparent"?!0:(e.children??[]).some(pl)}var Up=e=>[...e].sort((t,r)=>(Number(t.zIndex)||0)-(Number(r.zIndex)||0));function Xn(e){if(typeof e!="string"||e.includes("gradient("))return null;let t=Qi(e);return t&&t[3]>.99?e:null}function ua(e,t={}){let r=[],n=(g,b,y,v)=>r.push({severity:g,code:b,message:y,...v&&{layerId:v}}),i=e.width,o=e.height,a=!1,s=[],u=!1,c=[],d=[],m=(g,b,y)=>{let v=String(g.id??"?");t.emojiFont===!1&&g.kind==="text"&&jp(_p(g))&&d.push(v);for(let C of Ip){let O=g[C];typeof O!="string"||O===""||O==="transparent"||(O.includes("gradient(")?fu(O)||n("error","invalid_gradient",`\`${C}\` on '${v}' is not a gradient this renderer reads: ${O}. It draws nothing.`,v):Qi(O)||n("warning","unknown_color",`\`${C}: "${O}"\` on '${v}' is not a color (hex, rgb(), hsl(), oklch() or a CSS name). It draws transparent.`,v))}if(g.kind==="light"){let C=g.lightType??"directional";C==="environment"&&(a=!0),C==="ambient"&&s.push(v),g.castShadow&&C!=="directional"&&C!=="spot"&&n("warning","shadow_unsupported_light",`'${v}' is a ${String(C)} light: only directional and spot lights cast shadows.`,v);return}if(g.kind==="camera")return;if(g.kind==="media"){let C=g.inputHandleId;typeof C=="string"&&(g.dataType??"Video")==="Image"&&(/\.(json|lottie)(\?.*)?$/i.test(C)?n("error","unsupported_image_format",`'${v}' is an image layer with source '${C}', which is a Lottie vector animation. Use Layer.lottie() instead.`,v):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(C)?n("error","unsupported_image_format",`'${v}' is an image layer with video source '${C}'. Use Layer.video() instead.`,v):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(C)&&n("error","unsupported_image_format",`'${v}' is an image layer with audio source '${C}'. Use Layer.audio() instead.`,v))}let P=!!g.is3D||typeof g.z=="number"&&g.z!==0;if((P||g.kind==="model3d")&&(u=!0),(g.roughness!==void 0||g.metallic!==void 0)&&c.push(v),g.kind==="text"&&b&&!ml(g,["fill","color"])){let C=Xn(g.fill??g.color),O=Xn(g.background)??b;if(C){let z=Ji.contrast(C,O);z<dl&&n("warning","low_contrast_text",`Text '${v}' (${C}) on ${O} has contrast ${z.toFixed(2)}:1 (aim for \u2265 ${dl}; ${Ji.readableOn(O)} reads well).`,v)}}if(y&&!P&&g.position==="absolute"&&typeof g.x=="number"&&typeof g.y=="number"&&typeof g.width=="number"&&typeof g.height=="number"&&!ml(g,["x","y","translateX","translateY","scale","scaleX","scaleY","rotation"])){let{x:C,y:O,width:z,height:W}=g;(C+z<=0||O+W<=0||C>=i||O>=o)&&n("warning","offscreen_layer",`'${v}' sits entirely outside the ${i}\xD7${o} canvas (x ${C}, y ${O}) and never moves in.`,v)}let A=sa(g).reduce((C,O)=>C+(O.keyframes?.length??0),0);A>ll&&n("warning","large_animation",`'${v}' has ${A} keyframes across its tracks (over ${ll}). Keying every frame is rarely needed: key the turning points and let eases fill in, or drive the prop from a signal.`,v);for(let C of sa(g)){let O=C.keyframes??[];(!C.source||C.source.type==="keyframe")&&O.length>=2&&O.every(z=>JSON.stringify(z.value)===JSON.stringify(O[0].value))&&n("info","static_track",`'${v}' animates \`${C.prop}\` but every keyframe holds ${JSON.stringify(O[0].value)}.`,v)}let w=Xn(g.background)??b,T=g.children,S=g.x===0&&g.y===0&&g.width===i&&g.height===o;p(T??[],w,y&&S)},p=(g,b,y)=>{let v=b;for(let P of Up(g))m(P,v,y),pl(P)&&(v=null)},h=Xn(e.backgroundColor)??null;if(p(e.layout,h,!0),d.length>0){let g=d.slice(0,3).map(b=>`'${b}'`).join(", ");n("warning","missing_emoji_font",`${d.length===1?"Text":`${d.length} text layers`} ${g}${d.length>3?", \u2026":""} ${d.length===1?"has":"have"} emoji, but no emoji font is registered, so the emoji draw nothing. Run \`npx framefields fonts add emoji\` and call the generated \`registerFonts()\`, or \`FontManager.registerEmojiFont(path)\` with a color emoji font.`,d[0])}return a&&s.length>0&&n("info","ambient_with_environment",`The environment already fills shadows with light; ambient light ${s.join(", ")} adds flat light on top (remove it, or lower it, if the scene looks washed out).`),u&&c.length>0&&!a&&n("info","pbr_without_environment",`roughness / metallic are set (${c.slice(0,3).join(", ")}${c.length>3?", \u2026":""}) but the scene has no Layer.environment(): add one for physically based shading, reflections and tone mapping.`),r}f();var fl=l.union([l.number().min(0),l.enum(["auto","fit","fill"]),l.custom()]),Vp=l.enum(["rect","circle","ellipse","polygon","star","arrow","path"]),hl=l.union([l.instanceof(Qt),l.object({op:l.string().min(1)}).passthrough(),l.custom(e=>!!(e&&typeof e=="object"&&"op"in e&&typeof e.op=="string"))]),Gp=l.enum(["x","y","scale","rotation","opacity","width","height","volume","hidden","muted","gap","padding","borderRadius","fontSize","text","fill","color","letterSpacing","d","trimStart","trimEnd","trimOffset","strokeWidth","strokeDashOffset","cornerRadius","starInnerRadiusRatio","fillColor","strokeColor","borderColor","borderWidth","motionBlurShutter","rangeStart","rangeEnd","offset","animatorRangeStart","animatorRangeEnd","animatorOffset","firstMargin","lastMargin","baselineShift","rotateX","rotateY","rotateZ","perspective","translateZ","perspectiveOriginX","perspectiveOriginY","cameraX","cameraY","cameraZ","targetX","targetY","targetZ","cameraPitch","cameraYaw","cameraRoll","cameraFov","cameraZoom","focalLength","focusDistance","fStop","maxBlurRadius","shakeTranslation","shakeRotation","orbitRadius","orbitAzimuth","orbitElevation","z","scaleZ","intensity","angle","radius","penumbra","decay","shininess","roughness","specularIntensity","ambientIntensity","metallic","ior","dispersion","transmission","fresnelPower","envIntensity","animationProgress","animationTime","animationSpeed","wireframe","scaleX","scaleY","emissive","emissiveIntensity","exposure"]),la=l.enum(["alpha","alpha-inverted","luma","luma-inverted"]),gl=l.enum(["lit","unlit","toon","glass","acrylic","frosted","metallic"]);var Wp=l.enum(["interpolate","hueRotate","threshold"]),Hp=l.object({name:l.enum(["none","power1","power2","power3","sine","circ","expo","back","elastic","bounce","spring","cubic","hold"]),dir:l.enum(["in","out","inOut"]),params:l.array(l.number()).optional()}).strict().superRefine((e,t)=>{if(e.name==="spring"&&e.params){let[r,n,i]=e.params;r!==void 0&&r<=0&&t.addIssue({code:l.ZodIssueCode.custom,message:"Spring damping must be greater than 0.",path:["params",0]}),n!==void 0&&n<=0&&t.addIssue({code:l.ZodIssueCode.custom,message:"Spring stiffness must be greater than 0.",path:["params",1]}),i!==void 0&&i<=0&&t.addIssue({code:l.ZodIssueCode.custom,message:"Spring mass must be greater than 0.",path:["params",2]})}}),Yp=l.object({id:l.string().min(1),frame:l.number().int().min(0),value:l.union([l.number(),l.boolean(),l.string()]),ease:Hp.optional(),presetGroupId:l.string().optional(),presetType:l.string().optional(),spatialTangentIn:l.object({x:l.number(),y:l.number()}).optional(),spatialTangentOut:l.object({x:l.number(),y:l.number()}).optional()}).strict(),Xp=l.enum(["continuous","accumulate"]),qp=l.discriminatedUnion("type",[l.object({type:l.literal("keyframe")}),l.object({type:l.literal("signal"),inputHandleId:l.string(),multiplier:l.number().default(1),offset:l.number().default(0),smoothingWindowFrames:l.number().min(0).default(0),colorMode:Wp.optional(),colorA:l.string().optional(),colorB:l.string().optional(),colorThreshold:l.number().optional(),signalMode:Xp.optional(),threshold:l.number().optional(),accumulateThreshold:l.number().optional(),debounceFrames:l.number().int().min(0).optional(),channel:l.string().optional()}),l.object({type:l.literal("wiggle"),frequency:l.number().default(2),amplitude:l.number().default(50),octaves:l.number().int().min(1).max(4).default(1),seed:l.number().default(1234)}),l.object({type:l.literal("springOvershoot"),damping:l.number().default(12),stiffness:l.number().default(180),mass:l.number().default(1)})]),Zp=l.preprocess(e=>{if(!e||typeof e!="object")return e;let t=e;if(t.type==="signal"){let r=typeof t.threshold=="number"?t.threshold:typeof t.accumulateThreshold=="number"?t.accumulateThreshold:.15;return{type:"signal",inputHandleId:t.inputHandleId??t.handleId,multiplier:t.multiplier??t.amplitude??1,offset:t.offset??0,smoothingWindowFrames:t.smoothingWindowFrames??t.smoothing??0,colorMode:t.colorMode,colorA:t.colorA,colorB:t.colorB,colorThreshold:t.colorThreshold,signalMode:t.signalMode??"continuous",threshold:r,accumulateThreshold:r,debounceFrames:t.debounceFrames??2,channel:typeof t.channel=="string"?t.channel:"primary"}}return e},qp),Kp=(e,t)=>{if(e?.tracks)for(let r=0;r<e.tracks.length;r++){let n=e.tracks[r],i=n.keyframes??[];(!n.source||n.source.type==="keyframe")&&i.length<1&&t.addIssue({code:l.ZodIssueCode.custom,message:`Track for property '${n.prop}' must have at least 1 keyframe.`,path:["tracks",r,"keyframes"]});let a=n.prop==="hidden"||n.prop==="muted",s=n.prop==="fillColor"||n.prop==="strokeColor"||n.prop==="fill"||n.prop==="color";for(let u=0;u<i.length;u++){let c=i[u];if(u>0){let m=i[u-1];c.frame<m.frame?t.addIssue({code:l.ZodIssueCode.custom,message:"Keyframes must be sorted in ascending order of frame.",path:["tracks",r,"keyframes",u]}):c.frame===m.frame&&t.addIssue({code:l.ZodIssueCode.custom,message:"Duplicate keyframes at the same frame are not allowed.",path:["tracks",r,"keyframes",u]})}let d=typeof c.value;a?d!=="boolean"&&t.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for discrete property '${n.prop}' must be a boolean.`,path:["tracks",r,"keyframes",u,"value"]}):s?d!=="string"&&t.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for color property '${n.prop}' must be a string.`,path:["tracks",r,"keyframes",u,"value"]}):d!=="number"||Number.isNaN(c.value)||!Number.isFinite(c.value)?t.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for numeric property '${n.prop}' must be a finite number.`,path:["tracks",r,"keyframes",u,"value"]}):(n.prop==="volume"||n.prop==="trimStart"||n.prop==="trimEnd")&&(c.value<0||c.value>1)&&t.addIssue({code:l.ZodIssueCode.custom,message:`Keyframe value for property '${n.prop}' must be between 0 and 1.`,path:["tracks",r,"keyframes",u,"value"]})}}},Qp=l.object({id:l.string().min(1),prop:Gp,source:Zp.optional(),keyframes:l.array(Yp).default([]),repeat:l.number().int().optional(),yoyo:l.boolean().optional(),durationFrames:l.number().int().min(1).optional()}).strict(),ca=l.object({tracks:l.array(Qp).max(24),frameStep:l.number().int().min(1).max(24).optional()}).strict().superRefine(Kp),Ot={id:l.string().min(1),inputHandleId:l.string().optional(),position:l.enum(["relative","absolute"]).default("relative"),x:l.union([l.number(),l.custom()]).default(0),y:l.union([l.number(),l.custom()]).default(0),width:fl.optional(),height:fl.optional(),grow:l.number().min(0).optional(),flexShrink:l.number().min(0).optional(),flexBasis:l.number().min(0).optional(),alignSelf:l.enum(["auto","start","center","end","stretch","baseline"]).optional(),aspectRatio:l.number().positive().optional(),zIndex:l.number().int().default(0),hidden:l.boolean().default(!1),opacity:l.number().min(0).max(1).default(1),blendMode:l.string().optional(),effects:l.array(hl).optional(),rotation:l.number().default(0),scale:l.number().min(0).default(1),scaleX:l.number().default(1),scaleY:l.number().default(1),anchorX:l.number().min(0).max(1).default(.5),anchorY:l.number().min(0).max(1).default(.5),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),motionBlurShutter:l.number().min(0).max(360).optional(),rotateX:l.number().default(0),rotateY:l.number().default(0),rotateZ:l.number().default(0),perspective:l.number().min(0).default(0),perspectiveOriginX:l.number().default(.5),perspectiveOriginY:l.number().default(.5),translateZ:l.number().default(0),backfaceVisibility:l.enum(["visible","hidden"]).default("visible"),transformStyle:l.enum(["flat","preserve-3d"]).default("flat"),is3D:l.boolean().default(!1),z:l.union([l.number(),l.custom()]).default(0),scaleZ:l.number().default(1),twoSided:l.boolean().default(!0),material:gl.default("lit"),ior:l.number().min(1).max(3).optional(),roughness:l.number().min(0).max(1).optional(),shininess:l.number().min(1).max(512).default(32),specularIntensity:l.number().min(0).default(.5),metallic:l.number().min(0).max(1).optional(),ambientIntensity:l.number().min(0).default(1),transmission:l.number().min(0).max(1).optional(),dispersion:l.number().min(0).max(1).optional(),fresnelPower:l.number().min(1).max(10).optional(),envIntensity:l.number().min(0).max(10).optional(),emissive:se.optional(),emissiveIntensity:l.number().min(0).optional(),castShadow:l.boolean().optional(),matte:l.object({node:l.custom(e=>typeof e=="object"&&e!==null),mode:la.optional()}).optional(),matteId:l.string().optional(),matteOf:l.string().optional(),matteMode:la.optional(),relief:l.object({node:l.custom(e=>typeof e=="object"&&e!==null),amount:l.number().optional()}).optional(),reliefId:l.string().optional(),reliefOf:l.string().optional(),reliefAmount:l.number().optional(),animation:ca.default({tracks:[]}),vision:l.unknown().optional(),relighting:l.unknown().optional()},bl=l.object({color:se,offset:l.object({x:l.number(),y:l.number()}).optional(),blurRadius:l.number().min(0).optional()}).strict(),Jp=l.object({x:l.number().optional(),y:l.number().optional(),scale:l.number().optional(),scaleX:l.number().optional(),scaleY:l.number().optional(),rotation:l.number().optional(),rotationX:l.number().optional(),rotationY:l.number().optional(),opacity:l.number().optional(),blur:l.number().optional(),color:l.string().optional()}).strict(),yl=l.object({id:l.string(),unit:l.enum(["character","word","line"]).default("character"),rangeStart:l.number().min(0).max(1).default(0),rangeEnd:l.number().min(0).max(1).default(1),offset:l.number().min(-1).max(1).default(0),easing:l.string().default("power2.out"),transform:Jp.optional()}),ef={waveRise(e={}){return{id:e.id??"wave-rise",unit:e.unit??"character",rangeStart:e.rangeStart??0,rangeEnd:e.rangeEnd??1,offset:e.offset??-1,easing:e.easing??"power2.out",transform:{y:e.y??40,rotationX:e.rotationX??45,opacity:e.opacity??0,blur:e.blur??0}}},wordPop(e={}){return{id:e.id??"word-pop",unit:"word",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"back.out(1.6)",transform:{scale:e.scale??0,y:e.y??20,opacity:0}}},blurIn(e={}){return{id:e.id??"blur-in",unit:e.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"power3.out",transform:{blur:e.blur??16,y:e.y??20,opacity:e.opacity??0}}},flip3D(e={}){return{id:e.id??"flip-3d",unit:e.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"back.out(1.4)",transform:{rotationX:e.rotationX??90,opacity:0}}},colorSweep(e){return{id:e.id??"color-sweep",unit:e.unit??"character",rangeStart:0,rangeEnd:.5,offset:-.5,easing:e.easing??"power2.inOut",transform:{color:e.color}}}},tf=l.object({focalLength:l.number().min(5).max(500).default(50),fov:l.number().min(5).max(160).optional(),sensorWidth:l.number().default(36),near:l.number().min(.1).default(1),far:l.number().min(10).default(5e4),zoom:l.number().min(.01).default(1)}).strict(),rf=l.object({enabled:l.boolean().default(!1),focusDistance:l.number().min(1).default(1e3),fStop:l.number().min(.5).max(64).default(2.8),maxBlurRadius:l.number().min(0).max(128).default(32),apertureBlades:l.number().int().min(0).max(12).default(0),anamorphicRatio:l.number().min(.5).max(3).default(1)}).strict(),nf=l.object({translationAmplitude:l.number().min(0).default(0),rotationAmplitude:l.number().min(0).default(0),frequency:l.number().min(.1).max(60).default(2.5),octaves:l.number().int().min(1).max(6).default(3),seed:l.number().default(42)}).strict(),xl=l.object({id:l.string().min(1),kind:l.literal("camera"),mode:l.enum(["lookAt","free","orbit"]).default("lookAt"),x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),targetX:l.number().optional(),targetY:l.number().optional(),targetZ:l.number().optional(),pitch:l.number().default(0),yaw:l.number().default(0),roll:l.number().default(0),lens:tf.optional(),dof:rf.optional(),shake:nf.optional(),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),animation:ca.default({tracks:[]})}).strict(),wl=l.enum(["ambient","directional","point","spot","environment"]),vl=l.enum(["studio","soft","sunset","night","neutral"]),Sl=l.enum(["neutral","agx","aces","none"]),kl=l.object({color:se,start:l.number().min(0),end:l.number().min(0),opacity:l.number().min(0).max(1).optional()}).strict(),Pl=l.object({intensity:l.number().min(0).max(10).optional(),threshold:l.number().min(0).max(16).optional(),knee:l.number().min(0).max(1).optional(),radius:l.number().min(1).max(8).optional()}).strict(),Ml=l.object({y:l.number(),color:se.optional(),reflectivity:l.number().min(0).max(1).optional(),roughness:l.number().min(0).max(1).optional(),fadeDistance:l.number().min(0).optional(),opacity:l.number().min(0).max(1).optional()}).strict(),Tl=l.object({id:l.string().min(1),kind:l.literal("light"),lightType:wl.default("directional"),color:se.default("#ffffff"),intensity:l.number().default(1),x:l.number().optional(),y:l.number().optional(),z:l.number().optional(),targetX:l.number().optional(),targetY:l.number().optional(),targetZ:l.number().optional(),direction:l.tuple([l.number(),l.number(),l.number()]).optional(),radius:l.number().min(0).default(1e3),decay:l.number().min(0).default(2),angle:l.number().min(0).max(180).default(45),penumbra:l.number().min(0).max(1).default(.2),castShadow:l.boolean().optional(),shadowSoftness:l.number().min(0).max(64).optional(),shadowDarkness:l.number().min(0).max(1).optional(),shadowMapSize:l.number().int().min(256).max(8192).optional(),preset:vl.optional(),top:se.optional(),horizon:se.optional(),bottom:se.optional(),softboxes:l.number().min(0).optional(),rotation:l.number().optional(),exposure:l.number().min(-16).max(16).optional(),toneMapping:Sl.optional(),fog:kl.optional(),floor:Ml.optional(),bloom:l.union([l.boolean(),Pl]).optional(),startFrame:l.number().int().min(0).default(0),durationFrames:l.number().int().min(1).optional(),animation:ca.default({tracks:[]})}).strict(),da=()=>l.array(l.lazy(()=>ma)),Al=l.object({...Ot,kind:l.literal("flex"),dir:l.enum(["row","column"]).default("row"),gap:l.number().min(0).default(0),padding:l.number().min(0).default(0),justify:l.enum(["start","center","end","space-between","space-around"]).default("start"),align:l.enum(["start","center","end","stretch"]).default("start"),wrap:l.boolean().default(!1),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),background:se.optional(),borderRadius:l.number().min(0).optional(),borderColor:se.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:da().optional()}).strict(),of=l.object({...Ot,kind:l.literal("block"),gap:l.number().min(0).default(0),padding:l.number().min(0).default(0),align:l.enum(["start","center","end","stretch"]).default("start"),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),background:se.optional(),borderRadius:l.number().min(0).optional(),borderColor:se.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:da().optional()}).strict(),Cl=l.object({...Ot,kind:l.literal("box"),background:se,borderRadius:l.number().min(0).optional(),padding:l.number().min(0).default(0),staggerFrames:l.number().min(0).default(0),staggerDirection:l.enum(["forward","reverse","center-out"]).default("forward"),overflow:l.enum(["visible","hidden"]).default("hidden"),borderColor:se.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),children:da().optional()}).strict(),Dl=l.object({background:se,borderRadius:l.number().min(0).optional(),paddingX:l.number().min(0).optional(),paddingY:l.number().min(0).optional()}).strict(),Rl=l.object({text:l.union([l.string(),l.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]),fontFamily:l.string().optional(),fontSize:l.union([l.number().positive(),l.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.enum(["normal","italic"]).optional(),fill:l.union([se,l.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),letterSpacing:l.number().optional(),baselineShift:l.number().optional(),opacity:l.union([l.number().min(0).max(1),l.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),mark:Dl.optional()}).strict(),af={text:l.string().default(""),spans:l.array(Rl).optional(),fontFamily:l.string().optional(),fontSize:l.number().positive().optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.string().optional(),fill:se,align:l.enum(["start","center","end"]).optional(),direction:l.enum(["ltr","rtl","auto"]).optional(),verticalAlign:l.enum(["top","middle","bottom"]).optional(),lineHeight:l.number().positive().optional(),letterSpacing:l.number().optional(),background:se,borderRadius:l.number().min(0).optional(),padding:l.number().min(0).optional(),stroke:se,strokeWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),textShadow:l.string().optional(),shadows:l.array(bl).optional(),pathOptions:ir.optional(),typewriter:Wn.optional(),marquee:Jo.optional(),animators:l.array(l.union([yl,or,ea])).optional()},Ol=l.object({...Ot,...af,kind:l.literal("text")}).strict(),Nl=l.object({...Ot,kind:l.literal("media"),inputHandleId:l.string().min(1),src:l.string().optional(),dataType:l.string().optional(),fit:l.enum(["cover","contain","fill","none"]).default("contain"),dpr:l.number().min(1).max(4).optional(),borderRadius:l.number().min(0).optional(),borderColor:se.optional(),borderWidth:l.number().min(0).optional(),strokeAlign:l.enum(["inside","center","outside"]).optional(),strokeRadius:l.number().min(0).optional(),volume:l.number().min(0).max(1).default(1),muted:l.boolean().default(!1),trimStartSec:l.number().min(0).optional(),timeRemap:su.optional(),fontFamily:l.string().optional(),fontSize:l.number().positive().optional(),fontWeight:l.union([l.number().int(),l.string()]).optional(),fontStyle:l.string().optional(),fill:se,align:l.enum(["start","center","end"]).optional(),direction:l.enum(["ltr","rtl","auto"]).optional(),verticalAlign:l.enum(["top","middle","bottom"]).optional(),lineHeight:l.number().positive().optional(),letterSpacing:l.number().optional(),background:se,padding:l.number().min(0).optional(),stroke:se,strokeWidth:l.number().min(0).optional(),textShadow:l.string().optional(),shadows:l.array(bl).optional(),maxWidth:l.number().optional()}).strict().superRefine((e,t)=>{if(!e.timeRemap)return;e.trimStartSec!==void 0&&t.addIssue({code:"custom",path:["timeRemap"],message:"timeRemap cannot be combined with trimStartSec"}),e.dataType!=="Video"&&e.dataType!=="Audio"&&t.addIssue({code:"custom",path:["timeRemap"],message:"timeRemap requires video or audio media"});let r=uu(e.timeRemap,e.durationFrames??0);r&&t.addIssue({code:"custom",path:["timeRemap"],message:r})}),sf={shapeType:Vp.default("rect"),borderRadius:l.number().min(0).optional(),radiusTL:l.number().min(0).optional(),radiusTR:l.number().min(0).optional(),radiusBR:l.number().min(0).optional(),radiusBL:l.number().min(0).optional(),polygonSides:l.number().int().min(3).max(64).optional(),starPoints:l.number().int().min(3).max(64).optional(),starInnerRadiusRatio:l.number().min(.01).max(.99).optional(),arrowHeadWidth:l.number().min(0).optional(),arrowHeadLength:l.number().min(0).optional(),arrowShaftWidth:l.number().min(1).optional(),d:l.string().optional(),fillType:l.enum(["solid","linear","radial","none"]).default("solid"),fillColor:se.default("#3b82f6"),gradientEndColor:se.optional(),gradientAngle:l.number().default(0),strokeColor:se.default("#ffffff"),strokeWidth:l.number().min(0).default(0),strokeDashArray:l.string().optional(),strokeDashOffset:l.number().default(0),strokeLineCap:l.enum(["butt","round","square"]).default("round"),strokeLineJoin:l.enum(["miter","round","bevel"]).default("round"),strokeAlign:l.enum(["inside","center","outside"]).optional(),trimStart:l.number().min(0).max(1).default(0),trimEnd:l.number().min(0).max(1).default(1),trimOffset:l.number().default(0)},Fl=l.object({...Ot,...sf,kind:l.literal("shape")}).strict(),uf=l.object({offset:l.number().min(0).max(1),color:l.string()}),El=l.object({...Ot,kind:l.literal("model3d"),src:l.string().default(""),modelFormat:l.enum(["obj","fbx","gltf","glb","stl","ply","vox","3ds","off","auto"]).default("auto"),modelData:l.unknown().optional(),animationName:l.string().optional(),animationProgress:l.number().min(0).max(1).default(0),animationTime:l.number().min(0).default(0),animationSpeed:l.number().default(1),loop:l.boolean().default(!0),wireframe:l.boolean().default(!1),texture:l.string().optional(),center:l.boolean().optional(),normalizeSize:l.number().optional(),scaleX:l.number().default(1),scaleY:l.number().default(1),audioDeform:l.record(l.string(),l.unknown()).optional(),color:se.optional(),colorTint:se.optional(),text3dOptions:l.unknown().optional(),primitive3d:l.unknown().optional(),instances3d:l.unknown().optional(),swarm3d:l.unknown().optional()}).strict(),ma=l.lazy(()=>l.discriminatedUnion("kind",[Al,of,Cl,Ol,Nl,Fl,xl,Tl,El])),lf=l.object({width:l.number().int().min(1).max(4096),height:l.number().int().min(1).max(4096),backgroundColor:se,volume:l.number().min(0).max(1).default(1),fps:l.number().int().min(1).max(120).default(24),mode:l.enum(["Video","Image"]).default("Video"),antialias3d:l.boolean().optional(),layout:l.array(ma).default([]),fonts:l.array(l.string()).optional(),signals:l.record(l.string(),l.unknown()).optional(),effects:l.array(hl).optional(),vision:l.unknown().optional(),onRequestFrame:l.custom().optional()}).strict();f();var Bl=l.enum(["cut","carrierMatchCut","cameraWhip","focusPullDissolve","irisAperture","pushDirectional"]),Ll=l.object({sourceLayerId:l.string(),targetLayerId:l.string(),mode:l.enum(["exact","preserveVelocity","morph"]).default("preserveVelocity"),blendFrames:l.number().int().min(0).max(30).default(0)}).strict(),Il=l.object({id:l.string(),chapter:l.enum(["hook","tension","solution","feature_spotlight","outro","custom"]).default("custom"),durationMs:l.number().positive().optional(),durationFrames:l.number().int().positive().optional(),transitionOut:l.object({type:Bl.default("cut"),durationFrames:l.number().int().min(0).default(0),carrier:Ll.optional(),whipDirection:l.enum(["left","right","up","down"]).default("left")}).default({type:"cut",durationFrames:0,whipDirection:"left"})}).passthrough();function cf(e,t){return{x:e.x,y:e.y,scale:e.scale,vx:e.vx,vy:e.vy,...t}}function jl(e,t=60){Bn(t);let r=e.map(s=>df(s,t)),n=0,i=0,o=[];for(let[s,u]of e.entries()){let c=r[s],d=n+c;if(!Number.isSafeInteger(d))throw new Error(`Scene '${u.id}' exceeds the safe frame range`);o.push({sceneId:u.id,startFrame:n,durationFrames:c}),i=Math.max(i,d);let m=u.transitionOverlap??u.transitionOut?.durationFrames??0;if(!Number.isSafeInteger(m)||m<0)throw new Error(`Scene '${u.id}' overlap must be a nonnegative safe integer`);if(s+1<e.length&&m>Math.min(c,r[s+1]))throw new Error(`Scene '${u.id}' overlap exceeds an adjacent scene duration`);n=d-(s+1<e.length?m:0)}let a=Math.round(i/t*1e3);if(!Number.isFinite(a))throw new Error("Sequence duration exceeds the finite range");return{totalFrames:i,totalDurationMs:a,sceneOffsets:o}}function df(e,t){if(e.durationMs!==void 0&&(!Number.isFinite(e.durationMs)||e.durationMs<=0))throw new Error(`Scene '${e.id}' durationMs must be finite and positive`);let r=e.durationFrames??(e.durationMs===void 0?60:Math.round(e.durationMs/1e3*t));if(!Number.isSafeInteger(r)||r<=0)throw new Error(`Scene '${e.id}' duration must resolve to a positive safe integer frame count`);return r}function mf(e,t,r){let n=e.startFrame??0,i=e.durationFrames??r.durationFrames-n;if(!Number.isSafeInteger(n)||n<0||!Number.isSafeInteger(i)||i<=0||n+i>r.durationFrames)throw new Error(`Scene '${t}', layer '${e.id}': window must fit within frames [0, ${r.durationFrames})`);return{...e,startFrame:r.startFrame+n,durationFrames:i}}var Ur=class e{id;chapter;durationMs;durationFrames;transitionOut;layout;constructor(t){Il.parse(t),this.id=t.id,this.chapter=t.chapter??"custom",this.durationMs=t.durationMs,this.durationFrames=t.durationFrames,this.transitionOut={type:t.transitionOut?.type??"cut",durationFrames:t.transitionOut?.durationFrames??0,carrier:t.transitionOut?.carrier,whipDirection:t.transitionOut?.whipDirection??"left"},this.layout=t.layout??[]}static create(t){return new e(t)}},pa=class e{fps;width;height;backgroundColor;fonts;signals;scenes=[];constructor(t={}){if(this.fps=t.fps??60,this.width=t.width??1920,this.height=t.height??1080,this.backgroundColor=t.backgroundColor??"#ffffff",this.fonts=t.fonts,this.signals=t.signals,t.scenes)for(let r of t.scenes)this.addScene(r)}static create(t={}){return new e(t)}addScene(t){let r=t instanceof Ur?t:new Ur(t);return this.scenes.push(r),this}getScenes(){return this.scenes}calculateTimeline(){return jl(this.scenes,this.fps)}toProgram(){let t=this.calculateTimeline(),r=[];for(let n=0;n<this.scenes.length;n++){let i=this.scenes[n],o=t.sceneOffsets[n];if(o)for(let a of i.layout)r.push(mf(a,i.id,o))}return{width:this.width,height:this.height,backgroundColor:this.backgroundColor,fps:this.fps,volume:1,mode:"Video",layout:r,fonts:this.fonts,signals:this.signals}}};f();var qn=e=>e<0?0:e>1?1:e,pf={none:()=>e=>e,linear:()=>e=>e,power1:()=>e=>e*e,power2:()=>e=>e*e*e,cubic:()=>e=>e*e*e,power3:()=>e=>e**4,sine:()=>e=>1-Math.cos(e*Math.PI/2),circ:()=>e=>1-Math.sqrt(Math.max(0,1-e*e)),expo:()=>e=>e===0?0:2**(10*(e-1)),back:([e=1.70158])=>t=>(e+1)*t*t*t-e*t*t,elastic:([e=1,t=.3])=>{let r=Math.max(1,e),n=t/(2*Math.PI)*Math.asin(1/r);return i=>i===0||i===1?i:-(r*2**(10*(i-1))*Math.sin((i-1-n)*(2*Math.PI)/t))},bounce:()=>e=>1-ff(1-e)};function ff(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-1.5/2.75)**2+.75:e<2.5/2.75?7.5625*(e-2.25/2.75)**2+.9375:7.5625*(e-2.625/2.75)**2+.984375}var zl=new Map;function hf(e){if(!e)return s=>qn(s);let t=zl.get(e);if(t)return t;let r=e.trim().match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]*)\))?$/);if(!r)throw new Error(`Unknown ease "${e}"`);let n=(r[1]??"").toLowerCase(),i=(r[2]??"out").toLowerCase(),o=(r[3]??"").split(",").map(s=>Number.parseFloat(s)).filter(s=>!Number.isNaN(s)),a;if(n==="hold")a=s=>s>=1?1:0;else{let s=pf[n];if(!s)throw new Error(`Unknown ease "${e}"`);let u=s(o);if(i==="in")a=c=>u(qn(c));else if(i==="inout")a=c=>{let d=qn(c);return d<.5?u(d*2)/2:1-u((1-d)*2)/2};else if(i==="out")a=c=>1-u(1-qn(c));else throw new Error(`Unknown ease direction in "${e}"`)}return zl.set(e,a),a}function Zn(e,t){return hf(e)(t)}var Vr=(e,t=3)=>{let r=10**t;return Math.round(e*r)/r},fa=e=>e[e.length-1];function gf(e){let t=new Map;for(let r of e)t.set(r[0],r);return[...t.values()].sort((r,n)=>r[0]-n[0])}function bf(e){let t=[];for(let r of e){for(;t.length>0&&fa(t)[0]>=r[0];)t.pop();t.push(r)}return t}function Px(e,t){let r=e[0];if(!r)return 0;if(t<=r[0])return r[1];for(let n=1;n<e.length;n++){let[i,o]=e[n-1],[a,s,u]=e[n];if(t>a)continue;if(u==="hold")return t===a?s:o;let c=Zn(typeof u=="string"?u:void 0,(t-i)/Math.max(1,a-i));return o+(s-o)*c}return fa(e)[1]}var _l=class{constructor(t){this.initial=t}initial;changes=[];to(t,r,n,i="power2.out"){return this.changes.push({start:t,end:Math.max(t,r),to:n,ease:i}),this}set(t,r){return this.to(t,t,r)}keys(){let t=[[0,this.initial]],r=this.initial;for(let n of[...this.changes].sort((i,o)=>i.start-o.start)){let i=fa(t),o=Math.max(n.start,i[0]+(n.end===n.start?1:0));o>i[0]&&t.push([o,r]);let a=Math.max(n.end,o);a===o?t[t.length-1]=[o,n.to,"hold"]:t.push([a,n.to,n.ease]),r=n.to}return bf(t)}},$l=class{book=new Map;key(t,r,n){let i=this.book.get(t)??new Map;return this.book.set(t,i),i.set(r,[...i.get(r)??[],...n]),this}apply(){for(let[t,r]of this.book){let n=Q.create();for(let[i,o]of r)n.keys(i,gf(o));t.animate(n)}}};var it=2048,yf=42,xf=30,wf=48,Ul=-60;function vf(e,t){let r=e.length;for(let n=1,i=0;n<r;n++){let o=r>>1;for(;i&o;o>>=1)i^=o;i^=o,n<i&&([e[n],e[i]]=[e[i],e[n]],[t[n],t[i]]=[t[i],t[n]])}for(let n=2;n<=r;n<<=1){let i=-2*Math.PI/n,o=Math.cos(i),a=Math.sin(i);for(let s=0;s<r;s+=n){let u=1,c=0;for(let d=0;d<n/2;d++){let m=s+d,p=m+n/2,h=e[p]*u-t[p]*c,g=e[p]*c+t[p]*u;e[p]=e[m]-h,t[p]=t[m]-g,e[m]=e[m]+h,t[m]=t[m]+g;let b=u*o-c*a;c=u*a+c*o,u=b}}}}function Vl(e,t){if(e.length===0)return 0;let r=[...e].sort((n,i)=>n-i);return r[Math.min(r.length-1,Math.floor(t*r.length))]}var Kn=e=>20*Math.log10(e+1e-9),Gl=e=>e<0?0:e>1?1:e;function Sf(e,t,r){return Array.from({length:e+1},(n,i)=>t*(r/t)**(i/e))}function Wl(e,t,r={}){let n=r.fps??30,i=r.bands??32,o=r.minHz??50,a=Math.min(r.maxHz??12e3,t/2),s=Math.max(0,...e.map(_=>_.length)),u=new Float32Array(s);for(let _ of e)for(let L=0;L<_.length;L++)u[L]=u[L]+_[L]/e.length;let c=Math.ceil(s/t*n),d=t/n,m=Float64Array.from({length:it},(_,L)=>.5-.5*Math.cos(2*Math.PI*L/(it-1))),p=Sf(i,o,a),h=t/it,g=p.slice(0,-1).map((_,L)=>{let k=Math.max(1,Math.floor(_/h)),M=Math.max(k+1,Math.ceil(p[L+1]/h));return[k,Math.min(it/2,M)]}),b=p.filter(_=>_<150).length,y=Array.from({length:i},()=>new Array(c)),v=new Array(c),P=new Array(c).fill(0),A=null,w=new Float64Array(it),T=new Float64Array(it);for(let _=0;_<c;_++){let k=Math.round((_+.5)*d)-it/2;for(let j=0;j<it;j++){let K=u[k+j];w[j]=(K??0)*m[j],T[j]=0}vf(w,T);let M=[];g.forEach(([j,K],re)=>{let de=0;for(let xe=j;xe<K;xe++)de+=Math.hypot(w[xe],T[xe]);let oe=de/(K-j)*(4/it);y[re][_]=oe,re<Math.max(1,b)&&M.push(oe)}),A&&(P[_]=M.reduce((j,K,re)=>j+Math.max(0,K-(A[re]??0)),0)),A=M;let H=Math.round(_*d),q=Math.min(s,Math.round((_+1)*d)),V=0;for(let j=H;j<q;j++)V+=u[j]**2;v[_]=Math.sqrt(V/Math.max(1,q-H))}let S=y.map(_=>Vl(_.map(Kn),.98)),C=Math.max(...S),O=y.map((_,L)=>{let k=Math.max(S[L],C-xf,Ul-20);return _.map(M=>Vr(Gl(1-(k-Kn(M))/yf)))}),z=Math.max(Ul,Vl(v.map(Kn),.98)),W=v.map(_=>Vr(Gl(1-(z-Kn(_))/wf)));return{fps:n,frames:c,bands:O,level:W,beats:kf(P,n)}}function kf(e,t){let r=Math.max(2,Math.round(t*.5)),n=Math.max(1,Math.round(t*.15)),i=Math.max(0,...e),o=[];for(let a=1;a<e.length;a++){let s=e[a];if(s<=i*.08||s<e[a-1]||s<(e[a+1]??0))continue;let u=e.slice(Math.max(0,a-r),a+r+1),c=u.reduce((p,h)=>p+h,0)/u.length,d=Math.sqrt(u.reduce((p,h)=>p+(h-c)**2,0)/u.length);if(s<c+1.5*d)continue;let m=o[o.length-1];m!==void 0&&a-m<n||o.push(a)}return o}function Dx(e,t){let r=e.length;if(r===0)return[];let n=e[0]?.length??0;return Array.from({length:t},(i,o)=>{let a=Math.floor(o*r/t),s=Math.max(a+1,Math.floor((o+1)*r/t));return Array.from({length:n},(u,c)=>{let d=0;for(let m=a;m<s;m++)d+=e[m][c]??0;return Vr(d/(s-a))})})}function Rx(e,t){if(t<=0)return[...e];let r=1/(t+1),n=0;return e.map(i=>(n=i>=n?i:n+(i-n)*r,Vr(n)))}function Ox(){return l.object({fps:l.number().positive(),frames:l.number().int().min(0),bands:l.array(l.array(l.number())),level:l.array(l.number()),beats:l.array(l.number().int())})}f();function Hl(e,t=0,r={}){let n=r.tolerance??.25;if(e.length===0)return[];if(e.length===1)return[[t,e[0]]];let i=new Uint8Array(e.length);i[0]=1,i[e.length-1]=1;let o=[[0,e.length-1]];for(;o.length>0;){let[s,u]=o.pop(),c=e[s],d=e[u],m=-1,p=n;for(let h=s+1;h<u;h++){let g=(h-s)/(u-s),b=Math.abs(e[h]-(c+(d-c)*g));b>p&&(p=b,m=h)}m!==-1&&(i[m]=1,o.push([s,m],[m,u]))}let a=[];for(let s=0;s<e.length;s++)i[s]&&a.push([t+s,e[s]]);return a}function Ex(e,t,r,n){let i=[];for(let o=t;o<=r;o++)i.push(e(o));return Hl(i,t,n)}function Qn(e,{stiffness:t=170,damping:r=26,mass:n=1}={}){if(e<=0)return 0;let i=Math.sqrt(t/n),o=r/(2*Math.sqrt(t*n));if(o<1){let d=i*Math.sqrt(1-o*o);return 1-Math.exp(-o*i*e)*(Math.cos(d*e)+o*i/d*Math.sin(d*e))}if(o===1)return 1-Math.exp(-i*e)*(1+i*e);let a=-i*(o-Math.sqrt(o*o-1)),s=-i*(o+Math.sqrt(o*o-1)),u=a/(a-s);return 1-((1-u)*Math.exp(a*e)+u*Math.exp(s*e))}function Pf(e,t,r=.001,n=600){let i=0;for(let o=0;o<=n;o++)Math.abs(1-Qn(o/e,t))>r&&(i=o);return Math.min(n,i+1)}function Bx(e,t,r,n,i,o=Math.max(1e-4,Math.abs(r-t)*.002)){let a=Pf(n,i),s=Array.from({length:a+1},(u,c)=>c===a?r:t+(r-t)*Qn(c/n,i));return Hl(s,e,{tolerance:o})}function Lx(e,t,r,n,i={stiffness:230,damping:24}){let o=[...e].sort((m,p)=>m[0]-p[0]),a=new Array(r+1),s=t,u=t,c=0,d=0;for(let m=0;m<=r;m++){for(;d<o.length&&o[d][0]<=m;)s=s+(u-s)*Qn((m-c)/n,i),u=o[d][1],c=o[d][0],d++;a[m]=s+(u-s)*Qn((m-c)/n,i)}return a}f();var Mf={white:[255,255,255,1],black:[0,0,0,1],transparent:[0,0,0,0]};function Gr(e){let t=e.trim().toLowerCase(),r=Mf[t];if(r)return[...r];let n=t.match(/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/);if(n?.[1]){let o=n[1].length<=4?[...n[1]].map(s=>s+s).join(""):n[1],a=s=>Number.parseInt(o.slice(s,s+2),16);return[a(0),a(2),a(4),o.length===8?a(6)/255:1]}let i=t.match(/^rgba?\(([^)]*)\)$/);if(i?.[1]){let o=i[1].split(/[\s,/]+/).filter(Boolean);if(o.length!==3&&o.length!==4)return null;let a=(m,p)=>m.endsWith("%")?Number.parseFloat(m)/100*p:Number(m),[s,u,c]=o.slice(0,3).map(m=>a(m,255)),d=o[3]===void 0?1:a(o[3],1);return[s,u,c,d].some(m=>m===void 0||Number.isNaN(m))?null:[s,u,c,d]}return null}var ga=([e,t,r,n])=>`rgba(${Math.round(e)},${Math.round(t)},${Math.round(r)},${+n.toFixed(3)})`;function zx(e,t){let r=Gr(e);return r?ga([r[0],r[1],r[2],t]):e}function _x(e){let t=Gr(e);return ga(t?[t[0],t[1],t[2],0]:[0,0,0,0])}function Yl(e,t,r){let n=Gr(e),i=Gr(t);if(!n||!i)return e;let o=n.map((a,s)=>a+(i[s]-a)*r);return o[3]<1?ga(o):`#${o.slice(0,3).map(a=>Math.round(a).toString(16).padStart(2,"0")).join("")}`}function ha(e){let t=Gr(e);if(!t)return null;let r=n=>{let i=n/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*r(t[0])+.7152*r(t[1])+.0722*r(t[2])}function Jn(e,t){let r=ha(e),n=ha(t);if(r===null||n===null)return null;let[i,o]=r>n?[r,n]:[n,r];return(i+.05)/(o+.05)}function Xl(e){return(ha(e)??0)>.179}function $x(e,t="#ffffff",r="#0b0c0e"){return(Jn(t,e)??0)>=(Jn(r,e)??0)?t:r}f();f();f();f();function ba(e){let t=e>>>0,r=()=>{t=t+2654435769>>>0;let n=t;return n=Math.imul(n^n>>>16,2246822507)>>>0,n=Math.imul(n^n>>>13,3266489909)>>>0,n=(n^n>>>16)>>>0,n/4294967296};return{next:r,range:(n,i)=>n+(i-n)*r(),int:(n,i)=>n+Math.floor(r()*(i-n+1)),pick:n=>{if(n.length===0)throw new Error("rng.pick: empty list");return n[Math.floor(r()*n.length)]},spread:n=>(r()*2-1)*n}}function Tf(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619)>>>0;return t>>>0}function Wr(e,t){return ba((Math.imul(e>>>0,2654435761)^Tf(String(t)))>>>0)}function Yx(e,t){return ya(t),Math.round(e*t)}function Xx(e,t){return ya(t),e/t}function qx(e,t){return Math.round(e*t)}function Zx(e,t){return!t||t<=0?Math.round(e):Math.round(Math.round(e/t)*t)}function ei(e,t){return ya(t),Math.max(1,Math.round(e*t/30))}function Kx(e,t,r="forward",n=1){return e<=0?[]:Af(e,r,n).map(o=>Math.round(o*t))}function Af(e,t,r=1){let n=Array.from({length:e},(o,a)=>a),i=(e-1)/2;switch(t){case"forward":return n;case"reverse":return n.map(o=>e-1-o);case"center":return n.map(o=>Math.abs(o-i));case"edges":return n.map(o=>i-Math.abs(o-i));case"random":{let o=ba(r),a=[...n];for(let u=a.length-1;u>0;u--){let c=Math.floor(o.next()*(u+1));[a[u],a[c]]=[a[c],a[u]]}let s=new Array(e);return a.forEach((u,c)=>{s[u]=c}),s}}}var Cf=(e,t)=>({start:e,end:e+Math.max(0,t)}),Qx=(e,t)=>e>=t.start&&e<=t.end;function Jx(e){if(e.length===0)return{start:0,end:0};let t=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(let n of e)t=Math.min(t,n.start),r=Math.max(r,n.end);return{start:t,end:r}}function ew(e,t=0,r=0){let n=[],i=t;for(let o of e)n.push(Cf(i,o)),i+=o+r;return n}function ya(e){if(!(e>0)||!Number.isFinite(e))throw new Error(`fps must be a positive number, got ${e}`)}var Hr=["none","fade","rise","drop","scale","pop","slide-left","slide-right","slide-up","slide-down","tilt","mask-up","mask-down","mask-left","mask-right"];function xa(e,t,r,n=30){if(e===!1||e===void 0)return null;let i=typeof e=="string"?{preset:e}:e;if(i.preset==="none")return null;if(!Hr.includes(i.preset))throw new Error(`Unknown motion preset "${i.preset}". Use one of: ${Hr.join(", ")}.`);return{preset:i.preset,duration:Math.max(1,Math.round(i.duration??ei(r.motion.speed.base,n))),ease:i.ease??(i.preset==="pop"?r.motion.ease.snap:t==="enter"?r.motion.ease.enter:r.motion.ease.exit),distance:i.distance??(i.preset.startsWith("slide-")?120:40)*r.scale,delay:Math.max(0,Math.round(i.delay??0)),blur:Df(i.blur??i.preset.startsWith("slide-"))}}var Df=e=>e===!0?90:e===!1?0:Math.max(0,Math.min(360,e)),ql=e=>e.preset.startsWith("mask-");function Zl(e,t){switch(e.preset){case"mask-up":return[0,t?.height??e.distance];case"mask-down":return[0,-(t?.height??e.distance)];case"mask-left":return[t?.width??e.distance,0];case"mask-right":return[-(t?.width??e.distance),0];case"rise":case"slide-up":return[0,e.distance];case"drop":case"slide-down":return[0,-e.distance];case"slide-left":return[e.distance,0];case"slide-right":return[-e.distance,0];default:return[0,0]}}function Kl(e,t=0,r){let n=t+e.delay,i=n+e.duration,o=Q.create();ql(e)||o.keys("opacity",[[n,0],[i,1,e.ease]]);let[a,s]=Zl(e,r);return a!==0&&o.keys("x",[[n,a],[i,0,e.ease]]),s!==0&&o.keys("y",[[n,s],[i,0,e.ease]]),e.preset==="scale"&&o.keys("scale",[[n,.92],[i,1,e.ease]]),e.preset==="pop"&&o.keys("scale",[[n,.6],[i,1,e.ease]]),e.preset==="tilt"&&(o.keys("perspective",[[n,1200]]),o.keys("rotateX",[[n,28],[i,0,e.ease]]),o.keys("translateZ",[[n,-160],[i,0,e.ease]])),o}function Ql(e,t,r){let n=t-e.delay,i=Math.max(0,n-e.duration),o=Q.create();ql(e)||o.keys("opacity",[[i,1],[n,0,e.ease]]);let[a,s]=Zl(e,r);return a!==0&&o.keys("x",[[i,0],[n,-a,e.ease]]),s!==0&&o.keys("y",[[i,0],[n,-s,e.ease]]),e.preset==="scale"&&o.keys("scale",[[i,1],[n,.92,e.ease]]),e.preset==="pop"&&o.keys("scale",[[i,1],[n,.6,e.ease]]),e.preset==="tilt"&&(o.keys("perspective",[[i,1200]]),o.keys("rotateX",[[i,0],[n,-28,e.ease]]),o.keys("translateZ",[[i,0],[n,-160,e.ease]])),o}f();var ti={ease:{enter:"expo.out",exit:"power2.in",move:"power3.inOut",snap:"back.out(1.6)"},speed:{fast:8,base:16,slow:30},spring:{settle:{stiffness:230,damping:24},base:{stiffness:260,damping:20},pop:{stiffness:320,damping:14}}},wa={regular:400,medium:500,semibold:600,bold:700,heavy:800},ka={low:{opacity:.32,distance:3,size:10,edge:.07},mid:{opacity:.4,distance:10,size:30,edge:.08},high:{opacity:.5,distance:22,size:60,edge:.1}},Jl={low:{opacity:.1,distance:2,size:8,edge:0},mid:{opacity:.14,distance:8,size:26,edge:0},high:{opacity:.2,distance:18,size:54,edge:0}},va={radius:{sm:6,md:12,lg:24,pill:999},stroke:{hair:1,base:2,bold:4}},Sa={display:"Inter",body:"Inter",mono:"JetBrains Mono"},ec={graphite:{mode:"dark",color:{bg:"#0d0e11",surface:"#16181d",raised:"#1f2229",line:"#2b2f38",ink:"#f3f4f6",muted:"#8b909c",accent:"#5b8cff",accent2:"#b07cff",positive:"#3ecf8e",negative:"#ff5c5c",highlight:"#ffd23f",shadow:"#000000"},font:Sa,weight:wa,...va,elevation:ka,motion:ti,scale:1},paper:{mode:"light",color:{bg:"#f4f1ea",surface:"#fffdf8",raised:"#ffffff",line:"#dcd6c8",ink:"#1a1814",muted:"#6b665c",accent:"#e0451f",accent2:"#1f5fe0",positive:"#1f8a4c",negative:"#c8282d",highlight:"#ffe066",shadow:"#3b2f1e"},font:Sa,weight:wa,...va,elevation:Jl,motion:ti,scale:1},signal:{mode:"dark",color:{bg:"#000000",surface:"#111111",raised:"#1c1c1c",line:"#333333",ink:"#ffffff",muted:"#a3a3a3",accent:"#c6ff00",accent2:"#ff2e88",positive:"#00e676",negative:"#ff1744",highlight:"#c6ff00",shadow:"#000000"},font:Sa,weight:wa,...va,elevation:ka,motion:{...ti,ease:{...ti.ease,enter:"back.out(1.8)"},speed:{fast:6,base:12,slow:24},spring:{settle:{stiffness:300,damping:26},base:{stiffness:340,damping:22},pop:{stiffness:400,damping:14}}},scale:1}};function Yr(e={},t=ec.graphite){let r=tc(t,e);e.mode===void 0&&e.color?.bg!==void 0&&(r.mode=Xl(r.color.bg)?"light":"dark",e.elevation===void 0&&(r.elevation=r.mode==="light"?Jl:ka));let n=Jn(r.color.ink,r.color.surface);if(n!==null&&n<4.5)throw new Error(`Theme contrast too low: ink ${r.color.ink} on surface ${r.color.surface} is ${n.toFixed(2)}:1 (needs 4.5:1).`);return r}function lw(e,t,r=30){return ei(e.motion.speed[t],r)}function tc(e,t){if(t===void 0)return e;if(e===null||t===null||typeof e!="object"||typeof t!="object"||Array.isArray(e)||Array.isArray(t))return t;let r={...e};for(let[n,i]of Object.entries(t))r[n]=tc(r[n],i);return r}function Rf(e,t){let r={};for(let[n,i]of Object.entries(e))r[n]=i.map(o=>{let a={...o,frame:o.frame+t};return typeof o.end=="number"&&(a.end=o.end+t),a});return r}function Of(e,{rest:t=0,peak:r=1,attack:n=0,release:i=8,ease:o="power2.out"}={}){let a=e.map(u=>typeof u=="number"?u:u.frame).sort((u,c)=>u-c),s=new Map;for(let u of a){let c=Math.max(0,u-n);s.has(c)||s.set(c,[c,t]),s.set(u,[u,r]),s.set(u+i,[u+i,t,o])}return[...s.values()].sort((u,c)=>u[0]-c[0])}var Nf=()=>l.custom(e=>typeof e=="function",{message:"Expected a function"});function rc(){return l.union([l.enum(Hr),l.object({preset:l.enum(Hr),duration:l.number().int().positive().optional(),ease:l.string().optional(),distance:l.number().optional(),delay:l.number().int().min(0).optional(),blur:l.union([l.boolean(),l.number().min(0).max(360)]).optional()})])}var nc;function Ff(){return nc??=Ef(),nc}function Ef(){return l.object({id:l.string().min(1).optional(),at:l.number().int().min(0).optional(),duration:l.number().int().positive().optional(),hold:l.number().int().min(0).optional(),enter:l.union([rc(),l.literal(!1)]).optional(),exit:l.union([rc(),l.literal(!1)]).optional(),x:l.number().optional(),y:l.number().optional(),width:l.number().positive().optional(),height:l.number().positive().optional(),position:l.enum(["absolute","relative"]).optional(),theme:l.custom(e=>typeof e=="object"&&e!==null).optional(),seed:l.number().int().optional(),fps:l.number().positive().optional(),canvas:l.object({width:l.number().positive(),height:l.number().positive()}).strict().optional(),customize:Nf().optional()})}function gw(e){return e}function Bf(e){let t=e.theme?Yr(e.theme):void 0;return r=>n=>r({...e,...n,theme:n.theme&&t?Yr(n.theme,t):n.theme??t})}function Lf(e,t=0){if(!Number.isFinite(e.span.end))throw new Error("after(): this component is open-ended (it stays until its parent ends). Give it a `duration`, or use its cues.");return e.span.end+t}var If=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function ic(e,t){let r;return n=>{r??=Ff().extend(t.props()).strict();let i=r.safeParse(n??{});if(!i.success){let o=Object.keys(r.shape),a=i.error.issues.map(u=>{let c=u.path.join(".")||"(props)",d=u.code==="unrecognized_keys"&&u.path.length===0?jf(u.keys,o):"";return` - ${c}: ${u.message}${d}`}).join(`
380
+ `;var aa=class{device;ssaoPipeline;blurPipeline;ssaoBindGroupLayout;blurBindGroupLayout;ssaoUniformBuffer;blurUniformBuffer;kernelBuffer;noiseTexture;sampler;constructor(t){this.device=t,this.noiseTexture=t.createTexture({label:"ssao-noise-tex",size:[4,4,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});let r=new Uint8Array(64);for(let a=0;a<16;a++)r[a*4+0]=Math.floor(Math.random()*255),r[a*4+1]=Math.floor(Math.random()*255),r[a*4+2]=128,r[a*4+3]=255;t.queue.writeTexture({texture:this.noiseTexture},r,{bytesPerRow:16},[4,4,1]);let n=new Float32Array(128);for(let a=0;a<32;a++){let s=Math.random(),l=Math.random(),c=Math.acos(Math.sqrt(1-s)),d=2*Math.PI*l,m=(a+1)/32;m=.1+.9*(m*m),n[a*4+0]=Math.sin(c)*Math.cos(d)*m,n[a*4+1]=Math.sin(c)*Math.sin(d)*m,n[a*4+2]=Math.cos(c)*m,n[a*4+3]=0}this.kernelBuffer=t.createBuffer({label:"ssao-kernel-buffer",size:n.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),t.queue.writeBuffer(this.kernelBuffer,0,n);let i=t.createShaderModule({label:"ssao-shader",code:sl});this.ssaoBindGroupLayout=t.createBindGroupLayout({label:"ssao-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.ssaoPipeline=t.createRenderPipeline({label:"ssao-eval-pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.ssaoBindGroupLayout]}),vertex:{module:i,entryPoint:"vs_main"},fragment:{module:i,entryPoint:"fs_ssao",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.ssaoUniformBuffer=t.createBuffer({label:"ssao-uniforms",size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});let o=t.createShaderModule({label:"ssao-blur-shader",code:ul});this.blurBindGroupLayout=t.createBindGroupLayout({label:"ssao-blur-bgl",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.blurPipeline=t.createRenderPipeline({label:"ssao-blur-pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[this.blurBindGroupLayout]}),vertex:{module:o,entryPoint:"vs_main"},fragment:{module:o,entryPoint:"fs_blur",targets:[{format:"r8unorm"}]},primitive:{topology:"triangle-strip"}}),this.blurUniformBuffer=t.createBuffer({label:"ssao-blur-uniforms",size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.sampler=t.createSampler({label:"ssao-sampler",magFilter:"linear",minFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})}render(t,r,n,i,o,a){let s=a.invProjMatrix??ht.invert(a.projMatrix)??ht.identity(),l=new Float32Array(64);l.set(a.projMatrix,0),l.set(s,16),l.set(a.viewMatrix,32),l[48]=a.radius??45,l[49]=a.bias??.025,l[50]=a.intensity??1.5,new Uint32Array(l.buffer)[51]=a.kernelSamples??16,l[52]=a.width,l[53]=a.height,this.device.queue.writeBuffer(this.ssaoUniformBuffer,0,l);let c=this.device.createBindGroup({label:"ssao-eval-bg",layout:this.ssaoBindGroupLayout,entries:[{binding:0,resource:r},{binding:1,resource:n},{binding:2,resource:this.noiseTexture.createView()},{binding:3,resource:this.sampler},{binding:4,resource:{buffer:this.kernelBuffer}},{binding:5,resource:{buffer:this.ssaoUniformBuffer}}]}),d=t.beginRenderPass({label:"ssao-eval-pass",colorAttachments:[{view:i,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});d.setPipeline(this.ssaoPipeline),d.setBindGroup(0,c),d.draw(4),d.end();let m=new ArrayBuffer(32),p=new Float32Array(m),h=new Int32Array(m);p[0]=a.width,p[1]=a.height,h[2]=a.blurRadius??4,p[3]=a.depthThreshold??.05,this.device.queue.writeBuffer(this.blurUniformBuffer,0,m);let b=this.device.createBindGroup({label:"ssao-blur-bg",layout:this.blurBindGroupLayout,entries:[{binding:0,resource:i},{binding:1,resource:r},{binding:2,resource:this.sampler},{binding:3,resource:{buffer:this.blurUniformBuffer}}]}),g=t.beginRenderPass({label:"ssao-blur-pass",colorAttachments:[{view:o,loadOp:"clear",storeOp:"store",clearValue:{r:1,g:1,b:1,a:1}}]});g.setPipeline(this.blurPipeline),g.setBindGroup(0,b),g.draw(4),g.end()}destroy(){this.ssaoUniformBuffer.destroy(),this.blurUniformBuffer.destroy(),this.noiseTexture.destroy()}};f();var zp=["background","fill","fillColor","strokeColor","borderColor","gradientEndColor","emissive","color"],ll=2e3;function _p(e){for(let{segment:t}of $p().segment(e))if(pu(t)==="emoji")return!0;return!1}var cl;function $p(){return cl??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),cl}function Up(e){let t=e.spans??[];return[e.text,...t.map(r=>r.text)].filter(r=>typeof r=="string").join("")}var dl=3;function sa(e){return e.animation?.tracks??[]}var ml=(e,t)=>sa(e).some(r=>t.includes(r.prop)),Vp=new Set(["box","flex","block","group"]);function pl(e){if(e.kind==="text"||e.kind==="light"||e.kind==="camera")return!1;if(!Vp.has(String(e.kind)))return!0;let t=e.background;return typeof t=="string"&&t!==""&&t!=="transparent"?!0:(e.children??[]).some(pl)}var Gp=e=>[...e].sort((t,r)=>(Number(t.zIndex)||0)-(Number(r.zIndex)||0));function Xn(e){if(typeof e!="string"||e.includes("gradient("))return null;let t=Qi(e);return t&&t[3]>.99?e:null}function ua(e,t={}){let r=[],n=(g,y,k,S)=>r.push({severity:g,code:y,message:k,...S&&{layerId:S}}),i=e.width,o=e.height,a=!1,s=[],l=!1,c=[],d=[],m=new Set,p=(g,y,k)=>{let S=String(g.id??"?");typeof g.id=="string"&&(m.has(g.id)&&n("error","duplicate_id",`Two layers share the id '${S}': the renderer keeps one and drops the other. Give every layer its own id (scenes reused in one composition need their own prefix).`,S),m.add(g.id)),t.emojiFont===!1&&g.kind==="text"&&_p(Up(g))&&d.push(S);for(let C of zp){let N=g[C];typeof N!="string"||N===""||N==="transparent"||(N.includes("gradient(")?fu(N)||n("error","invalid_gradient",`\`${C}\` on '${S}' is not a gradient this renderer reads: ${N}. It draws nothing.`,S):Qi(N)||n("warning","unknown_color",`\`${C}: "${N}"\` on '${S}' is not a color (hex, rgb(), hsl(), oklch() or a CSS name). It draws transparent.`,S))}if(g.kind==="light"){let C=g.lightType??"directional";C==="environment"&&(a=!0),C==="ambient"&&s.push(S),g.castShadow&&C!=="directional"&&C!=="spot"&&n("warning","shadow_unsupported_light",`'${S}' is a ${String(C)} light: only directional and spot lights cast shadows.`,S);return}if(g.kind==="camera")return;if(g.kind==="media"){let C=g.inputHandleId;typeof C=="string"&&(g.dataType??"Video")==="Image"&&(/\.(json|lottie)(\?.*)?$/i.test(C)?n("error","unsupported_image_format",`'${S}' is an image layer with source '${C}', which is a Lottie vector animation. Use Layer.lottie() instead.`,S):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(C)?n("error","unsupported_image_format",`'${S}' is an image layer with video source '${C}'. Use Layer.video() instead.`,S):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(C)&&n("error","unsupported_image_format",`'${S}' is an image layer with audio source '${C}'. Use Layer.audio() instead.`,S))}let A=!!g.is3D||typeof g.z=="number"&&g.z!==0;if((A||g.kind==="model3d")&&(l=!0),(g.roughness!==void 0||g.metallic!==void 0)&&c.push(S),g.kind==="text"&&y&&!ml(g,["fill","color"])){let C=Xn(g.fill??g.color),N=Xn(g.background)??y;if(C){let G=Ji.contrast(C,N);G<dl&&n("warning","low_contrast_text",`Text '${S}' (${C}) on ${N} has contrast ${G.toFixed(2)}:1 (aim for \u2265 ${dl}; ${Ji.readableOn(N)} reads well).`,S)}}if(k&&!A&&g.position==="absolute"&&typeof g.x=="number"&&typeof g.y=="number"&&typeof g.width=="number"&&typeof g.height=="number"&&!ml(g,["x","y","translateX","translateY","scale","scaleX","scaleY","rotation"])){let{x:C,y:N,width:G,height:_}=g;(C+G<=0||N+_<=0||C>=i||N>=o)&&n("warning","offscreen_layer",`'${S}' sits entirely outside the ${i}\xD7${o} canvas (x ${C}, y ${N}) and never moves in.`,S)}let w=sa(g).reduce((C,N)=>C+(N.keyframes?.length??0),0);w>ll&&n("warning","large_animation",`'${S}' has ${w} keyframes across its tracks (over ${ll}). Keying every frame is rarely needed: key the turning points and let eases fill in, or drive the prop from a signal.`,S);for(let C of sa(g)){let N=C.keyframes??[];(!C.source||C.source.type==="keyframe")&&N.length>=2&&N.every(G=>JSON.stringify(G.value)===JSON.stringify(N[0].value))&&n("info","static_track",`'${S}' animates \`${C.prop}\` but every keyframe holds ${JSON.stringify(N[0].value)}.`,S)}let T=Xn(g.background)??y,v=g.children,E=g.x===0&&g.y===0&&g.width===i&&g.height===o;h(v??[],T,k&&E)},h=(g,y,k)=>{let S=y;for(let A of Gp(g))p(A,S,k),pl(A)&&(S=null)},b=Xn(e.backgroundColor)??null;if(h(e.layout,b,!0),d.length>0){let g=d.slice(0,3).map(y=>`'${y}'`).join(", ");n("warning","missing_emoji_font",`${d.length===1?"Text":`${d.length} text layers`} ${g}${d.length>3?", \u2026":""} ${d.length===1?"has":"have"} emoji, but no emoji font is registered, so the emoji draw nothing. Run \`npx framefields fonts add emoji\` and call the generated \`registerFonts()\`, or \`FontManager.registerEmojiFont(path)\` with a color emoji font.`,d[0])}return a&&s.length>0&&n("info","ambient_with_environment",`The environment already fills shadows with light; ambient light ${s.join(", ")} adds flat light on top (remove it, or lower it, if the scene looks washed out).`),l&&c.length>0&&!a&&n("info","pbr_without_environment",`roughness / metallic are set (${c.slice(0,3).join(", ")}${c.length>3?", \u2026":""}) but the scene has no Layer.environment(): add one for physically based shading, reflections and tone mapping.`),r}f();var fl=u.union([u.number().min(0),u.enum(["auto","fit","fill"]),u.custom()]),Wp=u.enum(["rect","circle","ellipse","polygon","star","arrow","path"]),hl=u.union([u.instanceof(Qt),u.object({op:u.string().min(1)}).passthrough(),u.custom(e=>!!(e&&typeof e=="object"&&"op"in e&&typeof e.op=="string"))]),Hp=u.enum(["x","y","scale","rotation","opacity","width","height","volume","hidden","muted","gap","padding","borderRadius","fontSize","text","fill","color","letterSpacing","d","trimStart","trimEnd","trimOffset","strokeWidth","strokeDashOffset","cornerRadius","starInnerRadiusRatio","fillColor","strokeColor","borderColor","borderWidth","motionBlurShutter","rangeStart","rangeEnd","offset","animatorRangeStart","animatorRangeEnd","animatorOffset","firstMargin","lastMargin","baselineShift","rotateX","rotateY","rotateZ","perspective","translateZ","perspectiveOriginX","perspectiveOriginY","cameraX","cameraY","cameraZ","targetX","targetY","targetZ","cameraPitch","cameraYaw","cameraRoll","cameraFov","cameraZoom","focalLength","focusDistance","fStop","maxBlurRadius","shakeTranslation","shakeRotation","orbitRadius","orbitAzimuth","orbitElevation","z","scaleZ","intensity","angle","radius","penumbra","decay","shininess","roughness","specularIntensity","ambientIntensity","metallic","ior","dispersion","transmission","fresnelPower","envIntensity","animationProgress","animationTime","animationSpeed","wireframe","scaleX","scaleY","emissive","emissiveIntensity","exposure"]),la=u.enum(["alpha","alpha-inverted","luma","luma-inverted"]),gl=u.enum(["lit","unlit","toon","glass","acrylic","frosted","metallic"]);var Yp=u.enum(["interpolate","hueRotate","threshold"]),Xp=u.object({name:u.enum(["none","power1","power2","power3","sine","circ","expo","back","elastic","bounce","spring","cubic","hold"]),dir:u.enum(["in","out","inOut"]),params:u.array(u.number()).optional()}).strict().superRefine((e,t)=>{if(e.name==="spring"&&e.params){let[r,n,i]=e.params;r!==void 0&&r<=0&&t.addIssue({code:u.ZodIssueCode.custom,message:"Spring damping must be greater than 0.",path:["params",0]}),n!==void 0&&n<=0&&t.addIssue({code:u.ZodIssueCode.custom,message:"Spring stiffness must be greater than 0.",path:["params",1]}),i!==void 0&&i<=0&&t.addIssue({code:u.ZodIssueCode.custom,message:"Spring mass must be greater than 0.",path:["params",2]})}}),qp=u.object({id:u.string().min(1),frame:u.number().int().min(0),value:u.union([u.number(),u.boolean(),u.string()]),ease:Xp.optional(),presetGroupId:u.string().optional(),presetType:u.string().optional(),spatialTangentIn:u.object({x:u.number(),y:u.number()}).optional(),spatialTangentOut:u.object({x:u.number(),y:u.number()}).optional()}).strict(),Zp=u.enum(["continuous","accumulate"]),Kp=u.enum(["composition","layer"]),Qp=u.discriminatedUnion("type",[u.object({type:u.literal("keyframe")}),u.object({type:u.literal("signal"),inputHandleId:u.string(),multiplier:u.number().default(1),offset:u.number().default(0),smoothingWindowFrames:u.number().min(0).default(0),colorMode:Yp.optional(),colorA:u.string().optional(),colorB:u.string().optional(),colorThreshold:u.number().optional(),signalMode:Zp.optional(),threshold:u.number().optional(),accumulateThreshold:u.number().optional(),debounceFrames:u.number().int().min(0).optional(),channel:u.string().optional(),clock:Kp.optional()}),u.object({type:u.literal("wiggle"),frequency:u.number().default(2),amplitude:u.number().default(50),octaves:u.number().int().min(1).max(4).default(1),seed:u.number().default(1234)}),u.object({type:u.literal("springOvershoot"),damping:u.number().default(12),stiffness:u.number().default(180),mass:u.number().default(1)})]),Jp=u.preprocess(e=>{if(!e||typeof e!="object")return e;let t=e;if(t.type==="signal"){let r=typeof t.threshold=="number"?t.threshold:typeof t.accumulateThreshold=="number"?t.accumulateThreshold:.15;return{type:"signal",inputHandleId:t.inputHandleId??t.handleId,multiplier:t.multiplier??t.amplitude??1,offset:t.offset??0,smoothingWindowFrames:t.smoothingWindowFrames??t.smoothing??0,colorMode:t.colorMode,colorA:t.colorA,colorB:t.colorB,colorThreshold:t.colorThreshold,signalMode:t.signalMode??"continuous",threshold:r,accumulateThreshold:r,debounceFrames:t.debounceFrames??2,channel:typeof t.channel=="string"?t.channel:"primary",...t.clock!==void 0&&{clock:t.clock}}}return e},Qp),ef=(e,t)=>{if(e?.tracks)for(let r=0;r<e.tracks.length;r++){let n=e.tracks[r],i=n.keyframes??[];(!n.source||n.source.type==="keyframe")&&i.length<1&&t.addIssue({code:u.ZodIssueCode.custom,message:`Track for property '${n.prop}' must have at least 1 keyframe.`,path:["tracks",r,"keyframes"]});let a=n.prop==="hidden"||n.prop==="muted",s=n.prop==="fillColor"||n.prop==="strokeColor"||n.prop==="fill"||n.prop==="color",l=n.prop==="d";for(let c=0;c<i.length;c++){let d=i[c];if(c>0){let p=i[c-1];d.frame<p.frame?t.addIssue({code:u.ZodIssueCode.custom,message:"Keyframes must be sorted in ascending order of frame.",path:["tracks",r,"keyframes",c]}):d.frame===p.frame&&t.addIssue({code:u.ZodIssueCode.custom,message:"Duplicate keyframes at the same frame are not allowed.",path:["tracks",r,"keyframes",c]})}let m=typeof d.value;a?m!=="boolean"&&t.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for discrete property '${n.prop}' must be a boolean.`,path:["tracks",r,"keyframes",c,"value"]}):s?m!=="string"&&t.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for color property '${n.prop}' must be a string.`,path:["tracks",r,"keyframes",c,"value"]}):l?m!=="string"&&t.addIssue({code:u.ZodIssueCode.custom,message:"Keyframe value for 'd' must be SVG path data (a string).",path:["tracks",r,"keyframes",c,"value"]}):m!=="number"||Number.isNaN(d.value)||!Number.isFinite(d.value)?t.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for numeric property '${n.prop}' must be a finite number.`,path:["tracks",r,"keyframes",c,"value"]}):(n.prop==="volume"||n.prop==="trimStart"||n.prop==="trimEnd")&&(d.value<0||d.value>1)&&t.addIssue({code:u.ZodIssueCode.custom,message:`Keyframe value for property '${n.prop}' must be between 0 and 1.`,path:["tracks",r,"keyframes",c,"value"]})}}},tf=u.object({id:u.string().min(1),prop:Hp,source:Jp.optional(),keyframes:u.array(qp).default([]),repeat:u.number().int().optional(),yoyo:u.boolean().optional(),durationFrames:u.number().int().min(1).optional()}).strict(),ca=u.object({tracks:u.array(tf).max(24),frameStep:u.number().int().min(1).max(24).optional()}).strict().superRefine(ef),bl=u.object({shadowColor:ie.optional(),lightColor:ie.optional(),threshold:u.number().min(-1).max(1).optional(),softness:u.number().min(0).max(2).optional(),diffuse:u.number().min(0).max(1).optional()}).strict(),yl=u.object({color:ie.optional(),width:u.number().min(0).max(32).optional(),referenceHeight:u.number().positive().optional(),creaseAngle:u.number().min(0).max(180).optional(),depthThreshold:u.number().positive().max(1).optional(),opacity:u.number().min(0).max(1).optional()}).strict(),Rt={id:u.string().min(1),inputHandleId:u.string().optional(),position:u.enum(["relative","absolute"]).default("relative"),x:u.union([u.number(),u.custom()]).default(0),y:u.union([u.number(),u.custom()]).default(0),width:fl.optional(),height:fl.optional(),grow:u.number().min(0).optional(),flexShrink:u.number().min(0).optional(),flexBasis:u.number().min(0).optional(),alignSelf:u.enum(["auto","start","center","end","stretch","baseline"]).optional(),aspectRatio:u.number().positive().optional(),zIndex:u.number().int().default(0),hidden:u.boolean().default(!1),opacity:u.number().min(0).max(1).default(1),blendMode:u.string().optional(),effects:u.array(hl).optional(),rotation:u.number().default(0),scale:u.number().min(0).default(1),scaleX:u.number().default(1),scaleY:u.number().default(1),anchorX:u.number().min(0).max(1).default(.5),anchorY:u.number().min(0).max(1).default(.5),startFrame:u.number().int().min(0).default(0),durationFrames:u.number().int().min(1).optional(),motionBlurShutter:u.number().min(0).max(360).optional(),rotateX:u.number().default(0),rotateY:u.number().default(0),rotateZ:u.number().default(0),perspective:u.number().min(0).default(0),perspectiveOriginX:u.number().default(.5),perspectiveOriginY:u.number().default(.5),translateZ:u.number().default(0),backfaceVisibility:u.enum(["visible","hidden"]).default("visible"),transformStyle:u.enum(["flat","preserve-3d"]).default("flat"),is3D:u.boolean().default(!1),z:u.union([u.number(),u.custom()]).default(0),scaleZ:u.number().default(1),twoSided:u.boolean().default(!0),material:gl.default("lit"),ior:u.number().min(1).max(3).optional(),roughness:u.number().min(0).max(1).optional(),shininess:u.number().min(1).max(512).default(32),specularIntensity:u.number().min(0).default(.5),metallic:u.number().min(0).max(1).optional(),ambientIntensity:u.number().min(0).default(1),transmission:u.number().min(0).max(1).optional(),dispersion:u.number().min(0).max(1).optional(),fresnelPower:u.number().min(1).max(10).optional(),envIntensity:u.number().min(0).max(10).optional(),emissive:ie.optional(),emissiveIntensity:u.number().min(0).optional(),castShadow:u.boolean().optional(),toon:bl.optional(),outline:u.boolean().optional(),matte:u.object({node:u.custom(e=>typeof e=="object"&&e!==null),mode:la.optional()}).optional(),matteId:u.string().optional(),matteOf:u.string().optional(),matteMode:la.optional(),relief:u.object({node:u.custom(e=>typeof e=="object"&&e!==null),amount:u.number().optional()}).optional(),reliefId:u.string().optional(),reliefOf:u.string().optional(),reliefAmount:u.number().optional(),animation:ca.default({tracks:[]}),vision:u.unknown().optional(),relighting:u.unknown().optional()},xl=u.object({color:ie,offset:u.object({x:u.number(),y:u.number()}).optional(),blurRadius:u.number().min(0).optional()}).strict(),rf=u.object({x:u.number().optional(),y:u.number().optional(),scale:u.number().optional(),scaleX:u.number().optional(),scaleY:u.number().optional(),rotation:u.number().optional(),rotationX:u.number().optional(),rotationY:u.number().optional(),opacity:u.number().optional(),blur:u.number().optional(),color:u.string().optional()}).strict(),wl=u.object({id:u.string(),unit:u.enum(["character","word","line"]).default("character"),rangeStart:u.number().min(0).max(1).default(0),rangeEnd:u.number().min(0).max(1).default(1),offset:u.number().min(-1).max(1).default(0),easing:u.string().default("power2.out"),transform:rf.optional()}),nf={waveRise(e={}){return{id:e.id??"wave-rise",unit:e.unit??"character",rangeStart:e.rangeStart??0,rangeEnd:e.rangeEnd??1,offset:e.offset??-1,easing:e.easing??"power2.out",transform:{y:e.y??40,rotationX:e.rotationX??45,opacity:e.opacity??0,blur:e.blur??0}}},wordPop(e={}){return{id:e.id??"word-pop",unit:"word",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"back.out(1.6)",transform:{scale:e.scale??0,y:e.y??20,opacity:0}}},blurIn(e={}){return{id:e.id??"blur-in",unit:e.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"power3.out",transform:{blur:e.blur??16,y:e.y??20,opacity:e.opacity??0}}},flip3D(e={}){return{id:e.id??"flip-3d",unit:e.unit??"character",rangeStart:0,rangeEnd:1,offset:-1,easing:e.easing??"back.out(1.4)",transform:{rotationX:e.rotationX??90,opacity:0}}},colorSweep(e){return{id:e.id??"color-sweep",unit:e.unit??"character",rangeStart:0,rangeEnd:.5,offset:-.5,easing:e.easing??"power2.inOut",transform:{color:e.color}}}},of=u.object({focalLength:u.number().min(5).max(500).default(50),fov:u.number().min(5).max(160).optional(),sensorWidth:u.number().default(36),near:u.number().min(.1).default(1),far:u.number().min(10).default(5e4),zoom:u.number().min(.01).default(1)}).strict(),af=u.object({enabled:u.boolean().default(!1),focusDistance:u.number().min(1).default(1e3),fStop:u.number().min(.5).max(64).default(2.8),maxBlurRadius:u.number().min(0).max(128).default(32),apertureBlades:u.number().int().min(0).max(12).default(0),anamorphicRatio:u.number().min(.5).max(3).default(1)}).strict(),sf=u.object({translationAmplitude:u.number().min(0).default(0),rotationAmplitude:u.number().min(0).default(0),frequency:u.number().min(.1).max(60).default(2.5),octaves:u.number().int().min(1).max(6).default(3),seed:u.number().default(42)}).strict(),vl=u.object({id:u.string().min(1),kind:u.literal("camera"),mode:u.enum(["lookAt","free","orbit"]).default("lookAt"),x:u.number().optional(),y:u.number().optional(),z:u.number().optional(),targetX:u.number().optional(),targetY:u.number().optional(),targetZ:u.number().optional(),pitch:u.number().default(0),yaw:u.number().default(0),roll:u.number().default(0),lens:of.optional(),dof:af.optional(),shake:sf.optional(),startFrame:u.number().int().min(0).default(0),durationFrames:u.number().int().min(1).optional(),animation:ca.default({tracks:[]})}).strict(),Sl=u.enum(["ambient","directional","point","spot","environment"]),kl=u.enum(["studio","soft","sunset","night","neutral"]),Pl=u.enum(["neutral","agx","aces","none"]),Ml=u.object({color:ie,start:u.number().min(0),end:u.number().min(0),opacity:u.number().min(0).max(1).optional()}).strict(),Tl=u.object({intensity:u.number().min(0).max(10).optional(),threshold:u.number().min(0).max(16).optional(),knee:u.number().min(0).max(1).optional(),radius:u.number().min(1).max(8).optional()}).strict(),Al=u.object({y:u.number(),color:ie.optional(),reflectivity:u.number().min(0).max(1).optional(),roughness:u.number().min(0).max(1).optional(),fadeDistance:u.number().min(0).optional(),opacity:u.number().min(0).max(1).optional()}).strict(),Cl=u.object({id:u.string().min(1),kind:u.literal("light"),lightType:Sl.default("directional"),color:ie.default("#ffffff"),intensity:u.number().default(1),x:u.number().optional(),y:u.number().optional(),z:u.number().optional(),targetX:u.number().optional(),targetY:u.number().optional(),targetZ:u.number().optional(),direction:u.tuple([u.number(),u.number(),u.number()]).optional(),radius:u.number().min(0).default(1e3),decay:u.number().min(0).default(2),angle:u.number().min(0).max(180).default(45),penumbra:u.number().min(0).max(1).default(.2),castShadow:u.boolean().optional(),shadowSoftness:u.number().min(0).max(64).optional(),shadowDarkness:u.number().min(0).max(1).optional(),shadowMapSize:u.number().int().min(256).max(8192).optional(),preset:kl.optional(),top:ie.optional(),horizon:ie.optional(),bottom:ie.optional(),softboxes:u.number().min(0).optional(),rotation:u.number().optional(),exposure:u.number().min(-16).max(16).optional(),toneMapping:Pl.optional(),fog:Ml.optional(),floor:Al.optional(),outlines:u.union([u.boolean(),yl]).optional(),bloom:u.union([u.boolean(),Tl]).optional(),startFrame:u.number().int().min(0).default(0),durationFrames:u.number().int().min(1).optional(),animation:ca.default({tracks:[]})}).strict(),da=()=>u.array(u.lazy(()=>ma)),Dl=u.object({...Rt,kind:u.literal("flex"),dir:u.enum(["row","column"]).default("row"),gap:u.number().min(0).default(0),padding:u.number().min(0).default(0),justify:u.enum(["start","center","end","space-between","space-around"]).default("start"),align:u.enum(["start","center","end","stretch"]).default("start"),wrap:u.boolean().default(!1),staggerFrames:u.number().min(0).default(0),staggerDirection:u.enum(["forward","reverse","center-out"]).default("forward"),overflow:u.enum(["visible","hidden"]).default("visible"),background:ie.optional(),borderRadius:u.number().min(0).optional(),borderColor:ie.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),children:da().optional()}).strict(),uf=u.object({...Rt,kind:u.literal("block"),gap:u.number().min(0).default(0),padding:u.number().min(0).default(0),align:u.enum(["start","center","end","stretch"]).default("start"),staggerFrames:u.number().min(0).default(0),staggerDirection:u.enum(["forward","reverse","center-out"]).default("forward"),overflow:u.enum(["visible","hidden"]).default("visible"),background:ie.optional(),borderRadius:u.number().min(0).optional(),borderColor:ie.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),children:da().optional()}).strict(),Ol=u.object({...Rt,kind:u.literal("box"),background:ie,borderRadius:u.number().min(0).optional(),padding:u.number().min(0).default(0),staggerFrames:u.number().min(0).default(0),staggerDirection:u.enum(["forward","reverse","center-out"]).default("forward"),overflow:u.enum(["visible","hidden"]).default("visible"),borderColor:ie.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),children:da().optional()}).strict(),Rl=u.object({background:ie,borderRadius:u.number().min(0).optional(),paddingX:u.number().min(0).optional(),paddingY:u.number().min(0).optional()}).strict(),Nl=u.object({text:u.union([u.string(),u.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]),fontFamily:u.string().optional(),fontSize:u.union([u.number().positive(),u.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),fontWeight:u.union([u.number().int(),u.string()]).optional(),fontStyle:u.enum(["normal","italic"]).optional(),fill:u.union([ie,u.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),letterSpacing:u.number().optional(),baselineShift:u.number().optional(),opacity:u.union([u.number().min(0).max(1),u.custom(e=>!!(e&&typeof e=="object"&&"get"in e))]).optional(),mark:Rl.optional()}).strict(),lf={text:u.string().default(""),spans:u.array(Nl).optional(),fontFamily:u.string().optional(),fontSize:u.number().positive().optional(),fontWeight:u.union([u.number().int(),u.string()]).optional(),fontStyle:u.string().optional(),fill:ie,align:u.enum(["start","center","end"]).optional(),direction:u.enum(["ltr","rtl","auto"]).optional(),verticalAlign:u.enum(["top","middle","bottom"]).optional(),lineHeight:u.number().positive().optional(),letterSpacing:u.number().optional(),background:ie,borderRadius:u.number().min(0).optional(),padding:u.number().min(0).optional(),stroke:ie,strokeWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),textShadow:u.string().optional(),shadows:u.array(xl).optional(),pathOptions:ir.optional(),typewriter:Wn.optional(),marquee:Jo.optional(),animators:u.array(u.union([wl,or,ea])).optional()},Fl=u.object({...Rt,...lf,kind:u.literal("text")}).strict(),El=u.object({...Rt,kind:u.literal("media"),inputHandleId:u.string().min(1),src:u.string().optional(),dataType:u.string().optional(),fit:u.enum(["cover","contain","fill","none"]).default("contain"),dpr:u.number().min(1).max(4).optional(),borderRadius:u.number().min(0).optional(),borderColor:ie.optional(),borderWidth:u.number().min(0).optional(),strokeAlign:u.enum(["inside","center","outside"]).optional(),strokeRadius:u.number().min(0).optional(),volume:u.number().min(0).max(1).default(1),muted:u.boolean().default(!1),trimStartSec:u.number().min(0).optional(),timeRemap:su.optional(),fontFamily:u.string().optional(),fontSize:u.number().positive().optional(),fontWeight:u.union([u.number().int(),u.string()]).optional(),fontStyle:u.string().optional(),fill:ie,align:u.enum(["start","center","end"]).optional(),direction:u.enum(["ltr","rtl","auto"]).optional(),verticalAlign:u.enum(["top","middle","bottom"]).optional(),lineHeight:u.number().positive().optional(),letterSpacing:u.number().optional(),background:ie,padding:u.number().min(0).optional(),stroke:ie,strokeWidth:u.number().min(0).optional(),textShadow:u.string().optional(),shadows:u.array(xl).optional(),maxWidth:u.number().optional()}).strict().superRefine((e,t)=>{if(!e.timeRemap)return;e.trimStartSec!==void 0&&t.addIssue({code:"custom",path:["timeRemap"],message:"timeRemap cannot be combined with trimStartSec"}),e.dataType!=="Video"&&e.dataType!=="Audio"&&t.addIssue({code:"custom",path:["timeRemap"],message:"timeRemap requires video or audio media"});let r=uu(e.timeRemap,e.durationFrames??0);r&&t.addIssue({code:"custom",path:["timeRemap"],message:r})}),cf={shapeType:Wp.default("rect"),borderRadius:u.number().min(0).optional(),radiusTL:u.number().min(0).optional(),radiusTR:u.number().min(0).optional(),radiusBR:u.number().min(0).optional(),radiusBL:u.number().min(0).optional(),polygonSides:u.number().int().min(3).max(64).optional(),starPoints:u.number().int().min(3).max(64).optional(),starInnerRadiusRatio:u.number().min(.01).max(.99).optional(),arrowHeadWidth:u.number().min(0).optional(),arrowHeadLength:u.number().min(0).optional(),arrowShaftWidth:u.number().min(1).optional(),d:u.string().optional(),fillType:u.enum(["solid","linear","radial","none"]).default("solid"),fillColor:ie.default("#3b82f6"),gradientEndColor:ie.optional(),gradientAngle:u.number().default(0),strokeColor:ie.default("#ffffff"),strokeWidth:u.number().min(0).default(0),strokeDashArray:u.string().optional(),strokeDashOffset:u.number().default(0),strokeLineCap:u.enum(["butt","round","square"]).default("round"),strokeLineJoin:u.enum(["miter","round","bevel"]).default("round"),strokeAlign:u.enum(["inside","center","outside"]).optional(),trimStart:u.number().min(0).max(1).default(0),trimEnd:u.number().min(0).max(1).default(1),trimOffset:u.number().default(0)},Bl=u.object({...Rt,...cf,kind:u.literal("shape")}).strict(),df=u.object({offset:u.number().min(0).max(1),color:u.string()}),Ll=u.object({...Rt,kind:u.literal("model3d"),src:u.string().default(""),modelFormat:u.enum(["obj","fbx","gltf","glb","stl","ply","vox","3ds","off","auto"]).default("auto"),modelData:u.unknown().optional(),animationName:u.string().optional(),animationProgress:u.number().min(0).max(1).default(0),animationTime:u.number().min(0).default(0),animationSpeed:u.number().default(1),loop:u.boolean().default(!0),wireframe:u.boolean().default(!1),texture:u.string().optional(),center:u.boolean().optional(),normalizeSize:u.number().optional(),scaleX:u.number().default(1),scaleY:u.number().default(1),audioDeform:u.record(u.string(),u.unknown()).optional(),color:ie.optional(),colorTint:ie.optional(),text3dOptions:u.unknown().optional(),primitive3d:u.unknown().optional(),instances3d:u.unknown().optional(),swarm3d:u.unknown().optional()}).strict(),ma=u.lazy(()=>u.discriminatedUnion("kind",[Dl,uf,Ol,Fl,El,Bl,vl,Cl,Ll])),mf=u.object({width:u.number().int().min(1).max(4096),height:u.number().int().min(1).max(4096),backgroundColor:ie,volume:u.number().min(0).max(1).default(1),fps:u.number().int().min(1).max(120).default(24),mode:u.enum(["Video","Image"]).default("Video"),antialias3d:u.boolean().optional(),layout:u.array(ma).default([]),fonts:u.array(u.string()).optional(),signals:u.record(u.string(),u.unknown()).optional(),effects:u.array(hl).optional(),vision:u.unknown().optional(),onRequestFrame:u.custom().optional()}).strict();f();var Il=u.enum(["cut","carrierMatchCut","cameraWhip","focusPullDissolve","irisAperture","pushDirectional"]),jl=u.object({sourceLayerId:u.string(),targetLayerId:u.string(),mode:u.enum(["exact","preserveVelocity","morph"]).default("preserveVelocity"),blendFrames:u.number().int().min(0).max(30).default(0)}).strict(),zl=u.object({id:u.string(),chapter:u.enum(["hook","tension","solution","feature_spotlight","outro","custom"]).default("custom"),durationMs:u.number().positive().optional(),durationFrames:u.number().int().positive().optional(),transitionOut:u.object({type:Il.default("cut"),durationFrames:u.number().int().min(0).default(0),carrier:jl.optional(),whipDirection:u.enum(["left","right","up","down"]).default("left")}).default({type:"cut",durationFrames:0,whipDirection:"left"})}).passthrough();function pf(e,t){return{x:e.x,y:e.y,scale:e.scale,vx:e.vx,vy:e.vy,...t}}function _l(e,t=60){Bn(t);let r=e.map(s=>ff(s,t)),n=0,i=0,o=[];for(let[s,l]of e.entries()){let c=r[s],d=n+c;if(!Number.isSafeInteger(d))throw new Error(`Scene '${l.id}' exceeds the safe frame range`);o.push({sceneId:l.id,startFrame:n,durationFrames:c}),i=Math.max(i,d);let m=l.transitionOverlap??l.transitionOut?.durationFrames??0;if(!Number.isSafeInteger(m)||m<0)throw new Error(`Scene '${l.id}' overlap must be a nonnegative safe integer`);if(s+1<e.length&&m>Math.min(c,r[s+1]))throw new Error(`Scene '${l.id}' overlap exceeds an adjacent scene duration`);n=d-(s+1<e.length?m:0)}let a=Math.round(i/t*1e3);if(!Number.isFinite(a))throw new Error("Sequence duration exceeds the finite range");return{totalFrames:i,totalDurationMs:a,sceneOffsets:o}}function ff(e,t){if(e.durationMs!==void 0&&(!Number.isFinite(e.durationMs)||e.durationMs<=0))throw new Error(`Scene '${e.id}' durationMs must be finite and positive`);let r=e.durationFrames??(e.durationMs===void 0?60:Math.round(e.durationMs/1e3*t));if(!Number.isSafeInteger(r)||r<=0)throw new Error(`Scene '${e.id}' duration must resolve to a positive safe integer frame count`);return r}function hf(e,t,r){let n=e.startFrame??0,i=e.durationFrames??r.durationFrames-n;if(!Number.isSafeInteger(n)||n<0||!Number.isSafeInteger(i)||i<=0||n+i>r.durationFrames)throw new Error(`Scene '${t}', layer '${e.id}': window must fit within frames [0, ${r.durationFrames})`);return{...e,startFrame:r.startFrame+n,durationFrames:i}}var Ur=class e{id;chapter;durationMs;durationFrames;transitionOut;layout;constructor(t){zl.parse(t),this.id=t.id,this.chapter=t.chapter??"custom",this.durationMs=t.durationMs,this.durationFrames=t.durationFrames,this.transitionOut={type:t.transitionOut?.type??"cut",durationFrames:t.transitionOut?.durationFrames??0,carrier:t.transitionOut?.carrier,whipDirection:t.transitionOut?.whipDirection??"left"},this.layout=t.layout??[]}static create(t){return new e(t)}},pa=class e{fps;width;height;backgroundColor;fonts;signals;scenes=[];constructor(t={}){if(this.fps=t.fps??60,this.width=t.width??1920,this.height=t.height??1080,this.backgroundColor=t.backgroundColor??"#ffffff",this.fonts=t.fonts,this.signals=t.signals,t.scenes)for(let r of t.scenes)this.addScene(r)}static create(t={}){return new e(t)}addScene(t){let r=t instanceof Ur?t:new Ur(t);return this.scenes.push(r),this}getScenes(){return this.scenes}calculateTimeline(){return _l(this.scenes,this.fps)}toProgram(){let t=this.calculateTimeline(),r=[];for(let n=0;n<this.scenes.length;n++){let i=this.scenes[n],o=t.sceneOffsets[n];if(o)for(let a of i.layout)r.push(hf(a,i.id,o))}return{width:this.width,height:this.height,backgroundColor:this.backgroundColor,fps:this.fps,volume:1,mode:"Video",layout:r,fonts:this.fonts,signals:this.signals}}};f();var qn=e=>e<0?0:e>1?1:e,gf={none:()=>e=>e,linear:()=>e=>e,power1:()=>e=>e*e,power2:()=>e=>e*e*e,cubic:()=>e=>e*e*e,power3:()=>e=>e**4,sine:()=>e=>1-Math.cos(e*Math.PI/2),circ:()=>e=>1-Math.sqrt(Math.max(0,1-e*e)),expo:()=>e=>e===0?0:2**(10*(e-1)),back:([e=1.70158])=>t=>(e+1)*t*t*t-e*t*t,elastic:([e=1,t=.3])=>{let r=Math.max(1,e),n=t/(2*Math.PI)*Math.asin(1/r);return i=>i===0||i===1?i:-(r*2**(10*(i-1))*Math.sin((i-1-n)*(2*Math.PI)/t))},bounce:()=>e=>1-bf(1-e)};function bf(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-1.5/2.75)**2+.75:e<2.5/2.75?7.5625*(e-2.25/2.75)**2+.9375:7.5625*(e-2.625/2.75)**2+.984375}var $l=new Map;function yf(e){if(!e)return s=>qn(s);let t=$l.get(e);if(t)return t;let r=e.trim().match(/^([a-zA-Z0-9]+)(?:\.([a-zA-Z]+))?(?:\(([^)]*)\))?$/);if(!r)throw new Error(`Unknown ease "${e}"`);let n=(r[1]??"").toLowerCase(),i=(r[2]??"out").toLowerCase(),o=(r[3]??"").split(",").map(s=>Number.parseFloat(s)).filter(s=>!Number.isNaN(s)),a;if(n==="hold")a=s=>s>=1?1:0;else{let s=gf[n];if(!s)throw new Error(`Unknown ease "${e}"`);let l=s(o);if(i==="in")a=c=>l(qn(c));else if(i==="inout")a=c=>{let d=qn(c);return d<.5?l(d*2)/2:1-l((1-d)*2)/2};else if(i==="out")a=c=>1-l(1-qn(c));else throw new Error(`Unknown ease direction in "${e}"`)}return $l.set(e,a),a}function Zn(e,t){return yf(e)(t)}var Vr=(e,t=3)=>{let r=10**t;return Math.round(e*r)/r},fa=e=>e[e.length-1];function xf(e){let t=new Map;for(let r of e)t.set(r[0],r);return[...t.values()].sort((r,n)=>r[0]-n[0])}function wf(e){let t=[];for(let r of e){for(;t.length>0&&fa(t)[0]>=r[0];)t.pop();t.push(r)}return t}function Dx(e,t){let r=e[0];if(!r)return 0;if(t<=r[0])return r[1];for(let n=1;n<e.length;n++){let[i,o]=e[n-1],[a,s,l]=e[n];if(t>a)continue;if(l==="hold")return t===a?s:o;let c=Zn(typeof l=="string"?l:void 0,(t-i)/Math.max(1,a-i));return o+(s-o)*c}return fa(e)[1]}var Ul=class{constructor(t){this.initial=t}initial;changes=[];to(t,r,n,i="power2.out"){return this.changes.push({start:t,end:Math.max(t,r),to:n,ease:i}),this}set(t,r){return this.to(t,t,r)}keys(){let t=[[0,this.initial]],r=this.initial;for(let n of[...this.changes].sort((i,o)=>i.start-o.start)){let i=fa(t),o=Math.max(n.start,i[0]+(n.end===n.start?1:0));o>i[0]&&t.push([o,r]);let a=Math.max(n.end,o);a===o?t[t.length-1]=[o,n.to,"hold"]:t.push([a,n.to,n.ease]),r=n.to}return wf(t)}},Vl=class{book=new Map;key(t,r,n){let i=this.book.get(t)??new Map;return this.book.set(t,i),i.set(r,[...i.get(r)??[],...n]),this}apply(){for(let[t,r]of this.book){let n=Q.create();for(let[i,o]of r)n.keys(i,xf(o));t.animate(n)}}};var ot=2048,vf=42,Sf=30,kf=48,Gl=-60;function Pf(e,t){let r=e.length;for(let n=1,i=0;n<r;n++){let o=r>>1;for(;i&o;o>>=1)i^=o;i^=o,n<i&&([e[n],e[i]]=[e[i],e[n]],[t[n],t[i]]=[t[i],t[n]])}for(let n=2;n<=r;n<<=1){let i=-2*Math.PI/n,o=Math.cos(i),a=Math.sin(i);for(let s=0;s<r;s+=n){let l=1,c=0;for(let d=0;d<n/2;d++){let m=s+d,p=m+n/2,h=e[p]*l-t[p]*c,b=e[p]*c+t[p]*l;e[p]=e[m]-h,t[p]=t[m]-b,e[m]=e[m]+h,t[m]=t[m]+b;let g=l*o-c*a;c=l*a+c*o,l=g}}}}function Wl(e,t){if(e.length===0)return 0;let r=[...e].sort((n,i)=>n-i);return r[Math.min(r.length-1,Math.floor(t*r.length))]}var Kn=e=>20*Math.log10(e+1e-9),Hl=e=>e<0?0:e>1?1:e;function Mf(e,t,r){return Array.from({length:e+1},(n,i)=>t*(r/t)**(i/e))}function Yl(e,t,r={}){let n=r.fps??30,i=r.bands??32,o=r.minHz??50,a=Math.min(r.maxHz??12e3,t/2),s=Math.max(0,...e.map(_=>_.length)),l=new Float32Array(s);for(let _ of e)for(let I=0;I<_.length;I++)l[I]=l[I]+_[I]/e.length;let c=Math.ceil(s/t*n),d=t/n,m=Float64Array.from({length:ot},(_,I)=>.5-.5*Math.cos(2*Math.PI*I/(ot-1))),p=Mf(i,o,a),h=t/ot,b=p.slice(0,-1).map((_,I)=>{let P=Math.max(1,Math.floor(_/h)),M=Math.max(P+1,Math.ceil(p[I+1]/h));return[P,Math.min(ot/2,M)]}),g=p.filter(_=>_<150).length,y=Array.from({length:i},()=>new Array(c)),k=new Array(c),S=new Array(c).fill(0),A=null,w=new Float64Array(ot),T=new Float64Array(ot);for(let _=0;_<c;_++){let P=Math.round((_+.5)*d)-ot/2;for(let z=0;z<ot;z++){let K=l[P+z];w[z]=(K??0)*m[z],T[z]=0}Pf(w,T);let M=[];b.forEach(([z,K],re)=>{let de=0;for(let xe=z;xe<K;xe++)de+=Math.hypot(w[xe],T[xe]);let ae=de/(K-z)*(4/ot);y[re][_]=ae,re<Math.max(1,g)&&M.push(ae)}),A&&(S[_]=M.reduce((z,K,re)=>z+Math.max(0,K-(A[re]??0)),0)),A=M;let H=Math.round(_*d),q=Math.min(s,Math.round((_+1)*d)),V=0;for(let z=H;z<q;z++)V+=l[z]**2;k[_]=Math.sqrt(V/Math.max(1,q-H))}let v=y.map(_=>Wl(_.map(Kn),.98)),E=Math.max(...v),C=y.map((_,I)=>{let P=Math.max(v[I],E-Sf,Gl-20);return _.map(M=>Vr(Hl(1-(P-Kn(M))/vf)))}),N=Math.max(Gl,Wl(k.map(Kn),.98)),G=k.map(_=>Vr(Hl(1-(N-Kn(_))/kf)));return{fps:n,frames:c,bands:C,level:G,beats:Tf(S,n)}}function Tf(e,t){let r=Math.max(2,Math.round(t*.5)),n=Math.max(1,Math.round(t*.15)),i=Math.max(0,...e),o=[];for(let a=1;a<e.length;a++){let s=e[a];if(s<=i*.08||s<e[a-1]||s<(e[a+1]??0))continue;let l=e.slice(Math.max(0,a-r),a+r+1),c=l.reduce((p,h)=>p+h,0)/l.length,d=Math.sqrt(l.reduce((p,h)=>p+(h-c)**2,0)/l.length);if(s<c+1.5*d)continue;let m=o[o.length-1];m!==void 0&&a-m<n||o.push(a)}return o}function Ex(e,t){let r=e.length;if(r===0)return[];let n=e[0]?.length??0;return Array.from({length:t},(i,o)=>{let a=Math.floor(o*r/t),s=Math.max(a+1,Math.floor((o+1)*r/t));return Array.from({length:n},(l,c)=>{let d=0;for(let m=a;m<s;m++)d+=e[m][c]??0;return Vr(d/(s-a))})})}function Bx(e,t){if(t<=0)return[...e];let r=1/(t+1),n=0;return e.map(i=>(n=i>=n?i:n+(i-n)*r,Vr(n)))}function Lx(){return u.object({fps:u.number().positive(),frames:u.number().int().min(0),bands:u.array(u.array(u.number())),level:u.array(u.number()),beats:u.array(u.number().int())})}f();function Xl(e,t=0,r={}){let n=r.tolerance??.25;if(e.length===0)return[];if(e.length===1)return[[t,e[0]]];let i=new Uint8Array(e.length);i[0]=1,i[e.length-1]=1;let o=[[0,e.length-1]];for(;o.length>0;){let[s,l]=o.pop(),c=e[s],d=e[l],m=-1,p=n;for(let h=s+1;h<l;h++){let b=(h-s)/(l-s),g=Math.abs(e[h]-(c+(d-c)*b));g>p&&(p=g,m=h)}m!==-1&&(i[m]=1,o.push([s,m],[m,l]))}let a=[];for(let s=0;s<e.length;s++)i[s]&&a.push([t+s,e[s]]);return a}function zx(e,t,r,n){let i=[];for(let o=t;o<=r;o++)i.push(e(o));return Xl(i,t,n)}function Qn(e,{stiffness:t=170,damping:r=26,mass:n=1}={}){if(e<=0)return 0;let i=Math.sqrt(t/n),o=r/(2*Math.sqrt(t*n));if(o<1){let d=i*Math.sqrt(1-o*o);return 1-Math.exp(-o*i*e)*(Math.cos(d*e)+o*i/d*Math.sin(d*e))}if(o===1)return 1-Math.exp(-i*e)*(1+i*e);let a=-i*(o-Math.sqrt(o*o-1)),s=-i*(o+Math.sqrt(o*o-1)),l=a/(a-s);return 1-((1-l)*Math.exp(a*e)+l*Math.exp(s*e))}function Af(e,t,r=.001,n=600){let i=0;for(let o=0;o<=n;o++)Math.abs(1-Qn(o/e,t))>r&&(i=o);return Math.min(n,i+1)}function _x(e,t,r,n,i,o=Math.max(1e-4,Math.abs(r-t)*.002)){let a=Af(n,i),s=Array.from({length:a+1},(l,c)=>c===a?r:t+(r-t)*Qn(c/n,i));return Xl(s,e,{tolerance:o})}function $x(e,t,r,n,i={stiffness:230,damping:24}){let o=[...e].sort((m,p)=>m[0]-p[0]),a=new Array(r+1),s=t,l=t,c=0,d=0;for(let m=0;m<=r;m++){for(;d<o.length&&o[d][0]<=m;)s=s+(l-s)*Qn((m-c)/n,i),l=o[d][1],c=o[d][0],d++;a[m]=s+(l-s)*Qn((m-c)/n,i)}return a}f();var Cf={white:[255,255,255,1],black:[0,0,0,1],transparent:[0,0,0,0]};function Gr(e){let t=e.trim().toLowerCase(),r=Cf[t];if(r)return[...r];let n=t.match(/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/);if(n?.[1]){let o=n[1].length<=4?[...n[1]].map(s=>s+s).join(""):n[1],a=s=>Number.parseInt(o.slice(s,s+2),16);return[a(0),a(2),a(4),o.length===8?a(6)/255:1]}let i=t.match(/^rgba?\(([^)]*)\)$/);if(i?.[1]){let o=i[1].split(/[\s,/]+/).filter(Boolean);if(o.length!==3&&o.length!==4)return null;let a=(m,p)=>m.endsWith("%")?Number.parseFloat(m)/100*p:Number(m),[s,l,c]=o.slice(0,3).map(m=>a(m,255)),d=o[3]===void 0?1:a(o[3],1);return[s,l,c,d].some(m=>m===void 0||Number.isNaN(m))?null:[s,l,c,d]}return null}var ga=([e,t,r,n])=>`rgba(${Math.round(e)},${Math.round(t)},${Math.round(r)},${+n.toFixed(3)})`;function Gx(e,t){let r=Gr(e);return r?ga([r[0],r[1],r[2],t]):e}function Wx(e){let t=Gr(e);return ga(t?[t[0],t[1],t[2],0]:[0,0,0,0])}function ql(e,t,r){let n=Gr(e),i=Gr(t);if(!n||!i)return e;let o=n.map((a,s)=>a+(i[s]-a)*r);return o[3]<1?ga(o):`#${o.slice(0,3).map(a=>Math.round(a).toString(16).padStart(2,"0")).join("")}`}function ha(e){let t=Gr(e);if(!t)return null;let r=n=>{let i=n/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*r(t[0])+.7152*r(t[1])+.0722*r(t[2])}function Jn(e,t){let r=ha(e),n=ha(t);if(r===null||n===null)return null;let[i,o]=r>n?[r,n]:[n,r];return(i+.05)/(o+.05)}function Zl(e){return(ha(e)??0)>.179}function Hx(e,t="#ffffff",r="#0b0c0e"){return(Jn(t,e)??0)>=(Jn(r,e)??0)?t:r}f();f();f();f();function ba(e){let t=e>>>0,r=()=>{t=t+2654435769>>>0;let n=t;return n=Math.imul(n^n>>>16,2246822507)>>>0,n=Math.imul(n^n>>>13,3266489909)>>>0,n=(n^n>>>16)>>>0,n/4294967296};return{next:r,range:(n,i)=>n+(i-n)*r(),int:(n,i)=>n+Math.floor(r()*(i-n+1)),pick:n=>{if(n.length===0)throw new Error("rng.pick: empty list");return n[Math.floor(r()*n.length)]},spread:n=>(r()*2-1)*n}}function Df(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619)>>>0;return t>>>0}function Wr(e,t){return ba((Math.imul(e>>>0,2654435761)^Df(String(t)))>>>0)}function Qx(e,t){return ya(t),Math.round(e*t)}function Jx(e,t){return ya(t),e/t}function ew(e,t){return Math.round(e*t)}function tw(e,t){return!t||t<=0?Math.round(e):Math.round(Math.round(e/t)*t)}function ei(e,t){return ya(t),Math.max(1,Math.round(e*t/30))}function rw(e,t,r="forward",n=1){return e<=0?[]:Of(e,r,n).map(o=>Math.round(o*t))}function Of(e,t,r=1){let n=Array.from({length:e},(o,a)=>a),i=(e-1)/2;switch(t){case"forward":return n;case"reverse":return n.map(o=>e-1-o);case"center":return n.map(o=>Math.abs(o-i));case"edges":return n.map(o=>i-Math.abs(o-i));case"random":{let o=ba(r),a=[...n];for(let l=a.length-1;l>0;l--){let c=Math.floor(o.next()*(l+1));[a[l],a[c]]=[a[c],a[l]]}let s=new Array(e);return a.forEach((l,c)=>{s[l]=c}),s}}}var Rf=(e,t)=>({start:e,end:e+Math.max(0,t)}),nw=(e,t)=>e>=t.start&&e<=t.end;function iw(e){if(e.length===0)return{start:0,end:0};let t=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(let n of e)t=Math.min(t,n.start),r=Math.max(r,n.end);return{start:t,end:r}}function ow(e,t=0,r=0){let n=[],i=t;for(let o of e)n.push(Rf(i,o)),i+=o+r;return n}function ya(e){if(!(e>0)||!Number.isFinite(e))throw new Error(`fps must be a positive number, got ${e}`)}var Hr=["none","fade","rise","drop","scale","pop","slide-left","slide-right","slide-up","slide-down","tilt","mask-up","mask-down","mask-left","mask-right"];function xa(e,t,r,n=30){if(e===!1||e===void 0)return null;let i=typeof e=="string"?{preset:e}:e;if(i.preset==="none")return null;if(!Hr.includes(i.preset))throw new Error(`Unknown motion preset "${i.preset}". Use one of: ${Hr.join(", ")}.`);return{preset:i.preset,duration:Math.max(1,Math.round(i.duration??ei(r.motion.speed.base,n))),ease:i.ease??(i.preset==="pop"?r.motion.ease.snap:t==="enter"?r.motion.ease.enter:r.motion.ease.exit),distance:i.distance??(i.preset.startsWith("slide-")?120:40)*r.scale,delay:Math.max(0,Math.round(i.delay??0)),blur:Nf(i.blur??i.preset.startsWith("slide-"))}}var Nf=e=>e===!0?90:e===!1?0:Math.max(0,Math.min(360,e)),Kl=e=>e.preset.startsWith("mask-");function Ql(e,t){switch(e.preset){case"mask-up":return[0,t?.height??e.distance];case"mask-down":return[0,-(t?.height??e.distance)];case"mask-left":return[t?.width??e.distance,0];case"mask-right":return[-(t?.width??e.distance),0];case"rise":case"slide-up":return[0,e.distance];case"drop":case"slide-down":return[0,-e.distance];case"slide-left":return[e.distance,0];case"slide-right":return[-e.distance,0];default:return[0,0]}}function Jl(e,t=0,r){let n=t+e.delay,i=n+e.duration,o=Q.create();Kl(e)||o.keys("opacity",[[n,0],[i,1,e.ease]]);let[a,s]=Ql(e,r);return a!==0&&o.keys("x",[[n,a],[i,0,e.ease]]),s!==0&&o.keys("y",[[n,s],[i,0,e.ease]]),e.preset==="scale"&&o.keys("scale",[[n,.92],[i,1,e.ease]]),e.preset==="pop"&&o.keys("scale",[[n,.6],[i,1,e.ease]]),e.preset==="tilt"&&(o.keys("perspective",[[n,1200]]),o.keys("rotateX",[[n,28],[i,0,e.ease]]),o.keys("translateZ",[[n,-160],[i,0,e.ease]])),o}function ec(e,t,r){let n=t-e.delay,i=Math.max(0,n-e.duration),o=Q.create();Kl(e)||o.keys("opacity",[[i,1],[n,0,e.ease]]);let[a,s]=Ql(e,r);return a!==0&&o.keys("x",[[i,0],[n,-a,e.ease]]),s!==0&&o.keys("y",[[i,0],[n,-s,e.ease]]),e.preset==="scale"&&o.keys("scale",[[i,1],[n,.92,e.ease]]),e.preset==="pop"&&o.keys("scale",[[i,1],[n,.6,e.ease]]),e.preset==="tilt"&&(o.keys("perspective",[[i,1200]]),o.keys("rotateX",[[i,0],[n,-28,e.ease]]),o.keys("translateZ",[[i,0],[n,-160,e.ease]])),o}f();var ti={ease:{enter:"expo.out",exit:"power2.in",move:"power3.inOut",snap:"back.out(1.6)"},speed:{fast:8,base:16,slow:30},spring:{settle:{stiffness:230,damping:24},base:{stiffness:260,damping:20},pop:{stiffness:320,damping:14}}},wa={regular:400,medium:500,semibold:600,bold:700,heavy:800},ka={low:{opacity:.32,distance:3,size:10,edge:.07},mid:{opacity:.4,distance:10,size:30,edge:.08},high:{opacity:.5,distance:22,size:60,edge:.1}},tc={low:{opacity:.1,distance:2,size:8,edge:0},mid:{opacity:.14,distance:8,size:26,edge:0},high:{opacity:.2,distance:18,size:54,edge:0}},va={radius:{sm:6,md:12,lg:24,pill:999},stroke:{hair:1,base:2,bold:4}},Sa={display:"Inter",body:"Inter",mono:"JetBrains Mono"},rc={graphite:{mode:"dark",color:{bg:"#0d0e11",surface:"#16181d",raised:"#1f2229",line:"#2b2f38",ink:"#f3f4f6",muted:"#8b909c",accent:"#5b8cff",accent2:"#b07cff",positive:"#3ecf8e",negative:"#ff5c5c",highlight:"#ffd23f",shadow:"#000000"},font:Sa,weight:wa,...va,elevation:ka,motion:ti,scale:1},paper:{mode:"light",color:{bg:"#f4f1ea",surface:"#fffdf8",raised:"#ffffff",line:"#dcd6c8",ink:"#1a1814",muted:"#6b665c",accent:"#e0451f",accent2:"#1f5fe0",positive:"#1f8a4c",negative:"#c8282d",highlight:"#ffe066",shadow:"#3b2f1e"},font:Sa,weight:wa,...va,elevation:tc,motion:ti,scale:1},signal:{mode:"dark",color:{bg:"#000000",surface:"#111111",raised:"#1c1c1c",line:"#333333",ink:"#ffffff",muted:"#a3a3a3",accent:"#c6ff00",accent2:"#ff2e88",positive:"#00e676",negative:"#ff1744",highlight:"#c6ff00",shadow:"#000000"},font:Sa,weight:wa,...va,elevation:ka,motion:{...ti,ease:{...ti.ease,enter:"back.out(1.8)"},speed:{fast:6,base:12,slow:24},spring:{settle:{stiffness:300,damping:26},base:{stiffness:340,damping:22},pop:{stiffness:400,damping:14}}},scale:1}};function Yr(e={},t=rc.graphite){let r=nc(t,e);e.mode===void 0&&e.color?.bg!==void 0&&(r.mode=Zl(r.color.bg)?"light":"dark",e.elevation===void 0&&(r.elevation=r.mode==="light"?tc:ka));let n=Jn(r.color.ink,r.color.surface);if(n!==null&&n<4.5)throw new Error(`Theme contrast too low: ink ${r.color.ink} on surface ${r.color.surface} is ${n.toFixed(2)}:1 (needs 4.5:1).`);return r}function fw(e,t,r=30){return ei(e.motion.speed[t],r)}function nc(e,t){if(t===void 0)return e;if(e===null||t===null||typeof e!="object"||typeof t!="object"||Array.isArray(e)||Array.isArray(t))return t;let r={...e};for(let[n,i]of Object.entries(t))r[n]=nc(r[n],i);return r}function Ff(e,t){let r={};for(let[n,i]of Object.entries(e))r[n]=i.map(o=>{let a={...o,frame:o.frame+t};return typeof o.end=="number"&&(a.end=o.end+t),a});return r}function Ef(e,{rest:t=0,peak:r=1,attack:n=0,release:i=8,ease:o="power2.out"}={}){let a=e.map(l=>typeof l=="number"?l:l.frame).sort((l,c)=>l-c),s=new Map;for(let l of a){let c=Math.max(0,l-n);s.has(c)||s.set(c,[c,t]),s.set(l,[l,r]),s.set(l+i,[l+i,t,o])}return[...s.values()].sort((l,c)=>l[0]-c[0])}var Bf=()=>u.custom(e=>typeof e=="function",{message:"Expected a function"});function ic(){return u.union([u.enum(Hr),u.object({preset:u.enum(Hr),duration:u.number().int().positive().optional(),ease:u.string().optional(),distance:u.number().optional(),delay:u.number().int().min(0).optional(),blur:u.union([u.boolean(),u.number().min(0).max(360)]).optional()})])}var oc;function Lf(){return oc??=If(),oc}function If(){return u.object({id:u.string().min(1).optional(),at:u.number().int().min(0).optional(),duration:u.number().int().positive().optional(),hold:u.number().int().min(0).optional(),enter:u.union([ic(),u.literal(!1)]).optional(),exit:u.union([ic(),u.literal(!1)]).optional(),x:u.number().optional(),y:u.number().optional(),width:u.number().positive().optional(),height:u.number().positive().optional(),position:u.enum(["absolute","relative"]).optional(),theme:u.custom(e=>typeof e=="object"&&e!==null).optional(),seed:u.number().int().optional(),fps:u.number().positive().optional(),canvas:u.object({width:u.number().positive(),height:u.number().positive()}).strict().optional(),customize:Bf().optional()})}function vw(e){return e}function jf(e){let t=e.theme?Yr(e.theme):void 0;return r=>n=>r({...e,...n,theme:n.theme&&t?Yr(n.theme,t):n.theme??t})}function zf(e,t=0){if(!Number.isFinite(e.span.end))throw new Error("after(): this component is open-ended (it stays until its parent ends). Give it a `duration`, or use its cues.");return e.span.end+t}var _f=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function ac(e,t){let r;return n=>{r??=Lf().extend(t.props()).strict();let i=r.safeParse(n??{});if(!i.success){let o=Object.keys(r.shape),a=i.error.issues.map(l=>{let c=l.path.join(".")||"(props)",d=l.code==="unrecognized_keys"&&l.path.length===0?$f(l.keys,o):"";return` - ${c}: ${l.message}${d}`}).join(`
381
381
  `),s=typeof n?.id=="string"?`${t.name}#${n.id}`:t.name;throw new Error(`${s}: invalid props
382
- ${a}`)}return _f(e,t,i.data)}}function jf(e,t){let r=e.flatMap(n=>{let i,o=3;for(let a of t){let s=zf(n.toLowerCase(),a.toLowerCase());s<o&&([i,o]=[a,s])}return i?[`"${n}" \u2192 "${i}"`]:[]});return r.length>0?` (did you mean ${r.join(", ")}?)`:""}function zf(e,t){let r=Array.from({length:t.length+1},(n,i)=>i);for(let n=1;n<=e.length;n++){let i=[n];for(let o=1;o<=t.length;o++)i[o]=Math.min(r[o]+1,i[o-1]+1,r[o-1]+(e[n-1]===t[o-1]?0:1));r=i}return r[t.length]}function _f(e,t,r){let n=Yr(r.theme??{}),i=r.fps??30,o=r.seed??1,a=r.id??e.autoId(If(t.name)),s=t.defaults??{},u=r.hold??s.hold??0,c={host:e,theme:n,fps:i,seed:o,id:a,partId:k=>`${a}-${k}`,rng:k=>Wr(o,k),requested:{width:r.width,height:r.height,duration:r.duration,at:r.at??0},hold:u,canvas:r.canvas??{width:1920*n.scale,height:1080*n.scale}},d=t.build(c,r),m=xa(r.enter===void 0?s.enter:r.enter,"enter",n,i),p=xa(r.exit===void 0?s.exit:r.exit,"exit",n,i),h=d.duration===null||d.openEnded===!0&&!p&&!d.afterHold,g=r.duration??(h||d.duration===null?null:Math.max(1,d.duration+u+(d.afterHold??0)+(p?p.duration+p.delay:0)));if(g===null&&p)throw new Error(`${t.name}: an exit needs a known end. Give \`duration\`, or drop \`exit\`.`);let b=r.width??d.width,y=r.height??d.height,v=Math.max(m?.blur??0,p?.blur??0),P=m?.preset.startsWith("mask-")||p?.preset.startsWith("mask-"),A=e.box({id:c.partId("stage"),position:"absolute",x:0,y:0,width:b,height:y,overflow:"visible",...v>0&&{motionBlurShutter:v},children:d.children}),w={width:b,height:y};m&&A.animate(Kl(m,0,w)),p&&g!==null&&A.animate(Ql(p,g,w));let T=r.x===void 0&&r.y===void 0&&!r.position?d.origin:void 0,S=r.x!==void 0||r.y!==void 0||T!==void 0,C=r.x??T?.[0]??0,O=r.y??T?.[1]??0,z=e.box({id:a,...S?{position:"absolute",x:C,y:O}:r.position?{position:r.position}:{},width:b,height:y,overflow:P?"hidden":"visible",startFrame:r.at??0,...g!==null&&{durationFrames:g},children:[A]}),W={...d.parts,root:z,stage:A};r.customize?.(W),Pa(z);let _=r.at??0,L=Rf(d.cues,_);if(Object.defineProperties(z,{cues:{value:L,enumerable:!1},span:{value:{start:_,end:g===null?Number.POSITIVE_INFINITY:_+g,duration:g??Number.POSITIVE_INFINITY},enumerable:!1},part:{value:k=>W[k],enumerable:!1},partNames:{value:Object.keys(W),enumerable:!1}}),d.api){let k=d.api({x:S?C:0,y:S?O:0,width:b,height:y,absolute:S,start:_});for(let[M,H]of Object.entries(k))Object.defineProperty(z,M,{value:H,enumerable:!1})}return z}function Pa(e){let t=e;for(let r of t.animation?.tracks??[]){let n=r.keyframes?.[0];!n||n.frame<=0||r.repeat||r.keyframes?.unshift({id:`${n.id}-hold`,frame:0,value:n.value})}for(let r of t.children??[])Pa(r);t.matte?.node&&Pa(t.matte.node)}f();f();var oc=(e,t)=>Math.hypot(t[0]-e[0],t[1]-e[1]),ac=(e,t,r)=>[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r];function sc(e,t=16){if(e.length<2)return e.map(n=>[n[0],n[1]]);let r=[[e[0][0],e[0][1]]];for(let n=0;n<e.length-1;n++){let i=e[Math.max(0,n-1)],o=e[n],a=e[n+1],s=e[Math.min(e.length-1,n+2)];for(let u=1;u<=t;u++)r.push($f(i,o,a,s,u/t))}return r}function $f(e,t,r,n,i){let o=(v,P)=>Math.max(1e-6,Math.sqrt(oc(v,P))),s=0+o(e,t),u=s+o(t,r),c=u+o(r,n),d=s+(u-s)*i,m=(v,P,A,w)=>w===A?v:ac(v,P,(d-A)/(w-A)),p=m(e,t,0,s),h=m(t,r,s,u),g=m(r,n,u,c),b=m(p,h,0,u),y=m(h,g,s,c);return m(b,y,s,u)}function xw(e){if(e.length===0)throw new Error("arcPath: no points");let t=[0];for(let i=1;i<e.length;i++)t.push(t[i-1]+oc(e[i-1],e[i]));let r=t[t.length-1],n=i=>{if(e.length===1||r===0)return[0,0];let o=Math.min(1,Math.max(0,i))*r,a=0,s=t.length-1;for(;s-a>1;){let c=a+s>>1;t[c]<=o?a=c:s=c}let u=t[s]-t[a];return[a,u>0?(o-t[a])/u:0]};return{points:e,length:r,at(i){let[o,a]=n(i);return e.length===1?[e[0][0],e[0][1]]:ac(e[o],e[Math.min(o+1,e.length-1)],a)},angleAt(i){let[o]=n(i),a=e[Math.min(o,e.length-2)]??e[0],s=e[Math.min(o+1,e.length-1)];return Math.atan2(s[1]-a[1],s[0]-a[0])}}}function ot(e,t=!1){if(e.length===0)return"";let r=a=>Math.round(a*100)/100,[n,...i]=e,o=[`M${r(n[0])} ${r(n[1])}`];for(let a of i)o.push(`L${r(a[0])} ${r(a[1])}`);return t&&o.push("Z"),o.join(" ")}function ww(e,t,r=0,n=0){let i=c=>Math.round(c*1e3)/1e3,o=e.match(/[a-zA-Z]|[-+]?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi)??[],a=[],s="",u=0;for(let c of o){if(/^[a-zA-Z]$/.test(c)){s=c,u=0,a.push(s);continue}let d=Number(c),m=s.toUpperCase(),p=s!==m;if(m==="A"){let h=u%7;u++,h===2||h===3||h===4?a.push(String(d)):h<2||p?a.push(String(i(d*t))):a.push(String(i(d*t+(h===5?r:n))));continue}p?a.push(String(i(d*t))):m==="H"?a.push(String(i(d*t+r))):m==="V"?a.push(String(i(d*t+n))):(a.push(String(i(d*t+(u%2===0?r:n)))),u++)}return a.join(" ").replace(/ ?([a-zA-Z]) ?/g,"$1")}function Mw(e,t,r="power2.inOut"){return[[e,0],[e+Math.max(1,t),1,r]]}function Xr(e,{wobble:t=0,seed:r=1}={},n=0){if(t<=0||e.length===0)return e.map(c=>[c[0],c[1]]);let i=Wr(r,`wobble:${n}`),o=Math.max(2,Math.min(8,Math.ceil(e.length/6))),a=Array.from({length:o},()=>i.spread(t)),s=Array.from({length:o},()=>i.spread(t)),u=(c,d)=>{let m=d*(c.length-1),p=Math.min(c.length-2,Math.floor(m)),h=m-p,g=h*h*(3-2*h);return c[p]*(1-g)+c[p+1]*g};return e.map((c,d)=>{let m=e.length===1?0:d/(e.length-1);return[c[0]+u(a,m),c[1]+u(s,m)]})}function Tw(e,{padding:t=0,wobble:r=0,seed:n=1}={},i=0){let o=e.x+e.width/2,a=e.y+e.height/2,s=e.width/2+t,u=e.height/2+t,c=Wr(n,`ellipse:${i}`),d=r>0?-Math.PI*.6+c.spread(.3):0,m=r>0?Math.PI*2*1.08:Math.PI*2,p=64,h=[];for(let g=0;g<=p;g++){let b=d+m*g/p,y=r>0?1+(g/p-.5)*.06:1;h.push([o+Math.cos(b)*s*y,a+Math.sin(b)*u*y])}return ot(Xr(h,{wobble:r,seed:n},i),r<=0)}function Aw(e,{padding:t=0,wobble:r=0,seed:n=1}={},i=0){let o=e.x-t,a=e.y-t,s=e.x+e.width+t,u=e.y+e.height+t,c=[[o,a],[s,a],[s,u],[o,u],[o,a]];if(r<=0)return ot(c.slice(0,4),!0);let d=s-o,m=[[o+d*.06,a]];for(let p=0;p<4;p++){let h=c[p],g=c[p+1];for(let b=1;b<=8;b++){let y=b/8;p===0&&h[0]+(g[0]-h[0])*y<o+d*.06||m.push([h[0]+(g[0]-h[0])*y,h[1]+(g[1]-h[1])*y])}}return m.push([o+d*.14,a+(u-a)*.01]),ot(Xr(m,{wobble:r,seed:n},i))}function Cw(e,t,{wobble:r=0,seed:n=1}={},i=0){let o=r>0?16:1,a=[];for(let s=0;s<=o;s++){let u=s/o;a.push([e[0]+(t[0]-e[0])*u,e[1]+(t[1]-e[1])*u])}return ot(Xr(a,{wobble:r,seed:n},i))}function Dw(e,t,{amplitude:r=6,waves:n,wobble:i=0,seed:o=1}={},a=0){let s=Math.hypot(t[0]-e[0],t[1]-e[1]),u=n??Math.max(2,Math.round(s/28)),c=Math.atan2(t[1]-e[1],t[0]-e[0]),d=-Math.sin(c),m=Math.cos(c),p=u*8,h=[];for(let g=0;g<=p;g++){let b=g/p,y=Math.sin(b*u*Math.PI*2)*r;h.push([e[0]+(t[0]-e[0])*b+d*y,e[1]+(t[1]-e[1])*b+m*y])}return ot(Xr(h,{wobble:i,seed:o},a))}function Rw(e,t,{curve:r="arc",headSize:n=18,wobble:i=0,seed:o=1}={},a=0){let s=t[0]-e[0],u=t[1]-e[1],c=Math.hypot(s,u)||1,d=-u/c,m=s/c,p=r==="straight"?0:r==="arc"?.18:.35,h=r==="swoop"?[e,[e[0]+s*.3+d*c*p,e[1]+u*.3+m*c*p],[e[0]+s*.75-d*c*p*.4,e[1]+u*.75-m*c*p*.4],t]:[e,[e[0]+s*.5+d*c*p,e[1]+u*.5+m*c*p],t],g=p===0?[e,t]:sc(h,12),b=Xr(g,{wobble:i,seed:o},a),y=b[b.length-2]??e,v=Math.atan2(t[1]-y[1],t[0]-y[0]),P=T=>[t[0]-Math.cos(v+T*.5)*n,t[1]-Math.sin(v+T*.5)*n],A=P(1),w=P(-1);return{shaft:ot(b),head:`${ot([A,t])} ${ot([t,w]).replace(/^M/,"L")}`}}function Ow(e,{start:t,end:r,every:n,variants:i=3}){let o=Array.from({length:Math.max(1,i)},(u,c)=>e(c));if(n<=0||o.length===1)return[[t,o[0]]];let a=[],s=0;for(let u=t;u<=r;u+=n)a.push([u,o[s%o.length],"hold"]),s++;return a}f();var ri={char:"textIndex",word:"wordIndex",line:"lineIndex"},Uf=e=>String(Math.round(e*1e4)/1e4),gt=e=>`[${e.map(Uf).join(",")}]`;function Bw(e,t,r,n){let i=Math.max(1,Math.round(t.duration)),o=Array.from({length:i+1},(d,m)=>Zn(t.ease,m/i)),a=ri[e],s=d=>`(${d}[${a}]??${d}[${d}.length-1])`,u=r==="enter"?"1-v":"v",c=n?`(${u})*${s("F")}`:u;return["((S,L,F)=>{",`const t=frame-${s("S")};`,"const k=floor(t);",`const v=t<=0?L[0]:t>=${i}?L[${i}]:L[k]+(L[k+1]-L[k])*(t-k);`,`return ${c};`,`})(${gt(t.starts)},${gt(o)},${n?gt(n):"0"})`].join("")}function Lw(e,t,r,n){let i=ri[e],o=n?`*(${gt(n)}[${i}]??0)`:"";return`((S,E)=>{const s=S[${i}];return s!==undefined&&frame>=s&&frame<E[${i}]?1${o}:0;})(${gt(t)},${gt(r)})`}function Iw(e,t){return`((S)=>frame<(S[${ri[e]}]??S[S.length-1])?1:0)(${gt(t)})`}function jw(e,t){return t.filter((r,n)=>e[n]!==`
383
- `)}function zw(e,t){return`(${gt(t)}[${ri[e]}]??0)`}function _w(e,t,r){return{name:e,selectors:[{type:"expression",expression:t,mode:"add",amount:1}],props:r}}function $w(e,t){let r={textIndex:t.textIndex??0,wordIndex:t.wordIndex??0,lineIndex:t.lineIndex??0,frame:t.frame,floor:Math.floor,clamp:(o,a,s)=>Math.max(a,Math.min(s,o)),abs:Math.abs,min:Math.min,max:Math.max},n=new Function(...Object.keys(r),`return (${e});`),i=Number(n(...Object.values(r)));return Number.isFinite(i)?Math.max(-1,Math.min(1,i)):0}f();var Vf={titles:{landscape:{x:.06,top:.08,bottom:.1},portrait:{x:.08,top:.1,bottom:.24}},captions:{landscape:{x:.1,top:.08,bottom:.1},portrait:{x:.08,top:.12,bottom:.22}}};function Gw(e,t,r=Vf.titles){if(t&&typeof t=="object")return t;let{width:n,height:i}=e,a=(t?t==="portrait":i>n)?r.portrait:r.landscape;return{x:n*a.x,y:i*a.top,width:n*(1-2*a.x),height:i*(1-a.top-a.bottom)}}f();function Yw(e){if(!/^[A-Z][A-Za-z0-9]+$/.test(e.name))throw new Error(`Component name must be PascalCase: "${e.name}"`);if(e.summary.length>200)throw new Error(`${e.name}: summary must be one sentence (\u2264 200 chars).`);return e}f();var uc;function Kw(){return uc??=l.custom(e=>e!=null&&(Array.isArray(e)||typeof e=="object"||typeof e=="function"),{message:"Expected a target: [x, y], a rect, { node }, { text }, { track } or (frame) => point"}),uc}f();function Gf(e,t){let r=e.elevation[t],n=e.scale;return{...r.opacity>0&&{dropShadow:{color:e.color.shadow,opacity:r.opacity,angle:90,distance:r.distance*n,size:r.size*n}},...r.edge>0&&{innerShadow:{color:"#ffffff",opacity:r.edge,angle:270,distance:Math.max(1,n),size:0,blendMode:"normal"}}}}function tv(e,t,r,n){if(n===!1)return t;let i=Gf(r,n);return Object.keys(i).length>0?e.style(t,i):t}function rv(e,t,r=.05){if(t.mode==="light"||r<=0)return e;let n=Yl(e,"#ffffff",r);return n===e?e:`linear-gradient(180deg, ${n} 0%, ${e} 100%)`}f();f();function ov(e){let t=[];for(let r of e.matchAll(/\S+/g)){let n=r.index??0;t.push({text:r[0],start:n,end:n+r[0].length,index:t.length})}return t}function lc(e,t,r=0){if(typeof t=="string"){let o=0;for(let a=0;;a++){let s=e.indexOf(t,o);if(s<0)return null;if(a===r)return[s,s+t.length];o=s+Math.max(1,t.length)}}let n=t.flags.includes("g")?t.flags:`${t.flags}g`,i=0;for(let o of e.matchAll(new RegExp(t.source,n))){if(i===r)return[o.index??0,(o.index??0)+o[0].length];i++}return null}function Wf(e,t,r){if(!r.width||!r.align||r.align==="left")return 0;let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(let a of e.glyphs)a.line!==t||a.char.trim()===""||(n=Math.min(n,a.x),i=Math.max(i,a.x+a.width));if(!Number.isFinite(n))return 0;let o=r.width-(i-n);return(r.align==="center"?o/2:o)-n}function cc(e,t,r,n){let i=new Map;for(let o of e.glyphs){if(o.index<t||o.index>=r||o.char.trim()==="")continue;let a=i.get(o.line)??{min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};a.min=Math.min(a.min,o.x),a.max=Math.max(a.max,o.x+o.width-(n.letterSpacing??0)),i.set(o.line,a)}return[...i.entries()].sort(([o],[a])=>o-a).map(([o,a])=>{let s=Wf(e,o,n);return{x:a.min+s,y:o*e.lineHeight,width:a.max-a.min,height:e.lineHeight}})}var dc=e=>Array.isArray(e)&&e.length===2&&e.every(t=>typeof t=="number"),Hf=e=>typeof e=="object"&&e!==null&&["x","y","width","height"].every(t=>typeof e[t]=="number"),Ye=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0;function ni(e,t,r){if(typeof e=="function")return e(t);if(e&&typeof e.get=="function"){let n=t/r;return e.get({frame:t,fps:r,time:n,duration:0,durationMs:0,progress:0,deltaTime:1/r})}throw new Error("Tracked target values must be signals or (frame) => number.")}function lv(e,t={}){if(typeof e=="function")return{kind:"dynamic",anchor:"center",at:i=>{let o=e(i);return dc(o)?{x:o[0],y:o[1],width:0,height:0}:o}};if(dc(e))return{kind:"static",anchor:"center",rects:[{x:e[0],y:e[1],width:0,height:0}]};if(Hf(e))return{kind:"static",anchor:"center",rects:[e]};if("track"in e){let i=e.track,o=t.fps??30;return{kind:"dynamic",anchor:e.anchor??"center",at:a=>({x:ni(i.x,a,o),y:ni(i.y,a,o),width:ni(i.width,a,o),height:ni(i.height,a,o)})}}if("text"in e)return{kind:"static",anchor:e.anchor??"tip",rects:qf(e,t)};let r=e.node,n=Yf(r);if(!n)throw new Error(`Target node "${r.id??"?"}" has no absolute geometry. Give it numeric x, y, width and height, or target a rect.`);return{kind:"static",anchor:e.anchor??"center",rects:[n]}}function Yf(e){let t=Ye(e.x),r=Ye(e.y),n=Ye(e.width),i=Ye(e.height);return t===void 0||r===void 0||n===void 0||i===void 0?null:{x:t,y:r,width:n,height:i}}function Xf(e,t){let r=e.text,n=typeof r.text=="string"?r.text:typeof r.content=="string"?r.content:null;if(n===null)throw new Error("Text target node has no string content.");let i=Ye(r.x),o=Ye(r.y);if(i===void 0||o===void 0)throw new Error(`Text target "${r.id??"?"}" needs numeric x and y so its glyphs can be placed.`);if(!t.measure)throw new Error("Text targets need a measure function.");let a=r.fontFamily??t.textDefaults?.fontFamily;if(!a)throw new Error("Text target has no fontFamily.");let s={...t.textDefaults,fontFamily:a,fontSize:Ye(r.fontSize)??t.textDefaults?.fontSize,fontWeight:r.fontWeight??t.textDefaults?.fontWeight,letterSpacing:Ye(r.letterSpacing)??t.textDefaults?.letterSpacing,lineHeight:Ye(r.lineHeight)??t.textDefaults?.lineHeight,width:Ye(r.width),align:Zf(r.align),direction:r.direction},u=e.range??(e.match!==void 0?lc(n,e.match,e.nth??0):[0,n.length]);if(!u)throw new Error(`Text target: "${String(e.match)}" not found in "${n}".`);return{content:n,metrics:t.measure(n,s),options:s,range:[u[0],u[1]],x:i,y:o}}function qf(e,t){let r=Xf(e,t),n=cc(r.metrics,r.range[0],r.range[1],r.options);if(n.length===0)throw new Error("Text target range covers no glyphs.");return n.map(i=>({...i,x:i.x+r.x,y:i.y+r.y}))}function Zf(e){return e==="center"?"center":e==="end"||e==="right"?"right":"left"}function Kf(e){if(e.length===0)return{x:0,y:0,width:0,height:0};let t=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(let o of e)t=Math.min(t,o.x),r=Math.min(r,o.y),n=Math.max(n,o.x+o.width),i=Math.max(i,o.y+o.height);return{x:t,y:r,width:n-t,height:i-r}}function mc(e,t="center",r=!1){let{x:n,y:i,width:o,height:a}=e;switch(t){case"tip":return r?[n,i+a/2]:[n+o/2,i+a/2];case"center":return[n+o/2,i+a/2];case"top":return[n+o/2,i];case"bottom":return[n+o/2,i+a];case"left":return[n,i+a/2];case"right":return[n+o,i+a/2];case"top-left":return[n,i];case"top-right":return[n+o,i];case"bottom-left":return[n,i+a];case"bottom-right":return[n+o,i+a]}}function cv(e,t=0,r=!1){if(e.kind==="dynamic")return mc(e.at(t),e.anchor,r);let n=e.rects[0];return mc(e.anchor==="tip"?n:Kf(e.rects),e.anchor,r)}f();function pv(e,t,r,n,i=0){let o=r/t,a=[],s=i;for(let u=0;u<e.length;u++){let c=e[u-1]??"",d=u===0?0:o*(1+n.spread(.3));c===" "&&(d+=o*.6),/[.,!?;:]/.test(c)&&(d+=o*3),s+=d,a.push(Math.max(i,Math.round(s)))}for(let u=1;u<a.length;u++)a[u]=Math.max(a[u],a[u-1]+1);return a}f();f();var qr=class{textures=new Map;set(t,r){this.textures.set(t,r)}get(t){return this.textures.get(t)}has(t){return this.textures.has(t)}getOutputs(){return{canny:this.textures.get("canny"),depth:this.textures.get("depth"),normals:this.textures.get("normals"),poseSkeleton:this.textures.get("poseSkeleton"),segmentationMask:this.textures.get("segmentationMask"),faceLandmarks:this.textures.get("faceLandmarks"),motionVectors:this.textures.get("motionVectors"),deflickered:this.textures.get("deflickered")}}createBindGroupEntry(t,r){let n=this.textures.get(t);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot create bind group entry: conditioning texture "${t}" is not registered in VRAM.`);return{binding:r,resource:n.createView({label:`controlnet_${t}_view`})}}exportTensorView(t){let r=this.textures.get(t);if(!r)throw new Error(`[ControlNetMultiplexer] Conditioning tensor "${t}" not found in multiplexer.`);return{texture:r,width:r.width,height:r.height,format:r.format}}async readPixelsAsync(t,r){let n=this.textures.get(r);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot read pixels: conditioning texture "${r}" is missing.`);let i=n.width,o=n.height,a=n.format,s=4;a==="rgba16float"||a==="rg32float"?s=8:a==="r32float"?s=4:a==="rgba32float"&&(s=16);let u=i*s,c=Math.ceil(u/256)*256,d=c*o,m=t.createBuffer({size:d,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:`controlnet_readback_staging_${r}`}),p=t.createCommandEncoder({label:`readback_encoder_${r}`});p.copyTextureToBuffer({texture:n},{buffer:m,bytesPerRow:c,rowsPerImage:o},[i,o,1]),t.queue.submit([p.finish()]),await m.mapAsync(GPUMapMode.READ);let h=m.getMappedRange(),g=new Uint8Array(i*o*s),b=new Uint8Array(h);if(c===u)g.set(b.subarray(0,i*o*s));else for(let y=0;y<o;y++){let v=y*c,P=y*u;g.set(b.subarray(v,v+u),P)}return m.unmap(),m.destroy(),{width:i,height:o,format:a,data:g}}destroy(){for(let t of this.textures.values())try{t.destroy()}catch{}this.textures.clear()}};f();f();f();var pc=`
382
+ ${a}`)}return Vf(e,t,i.data)}}function $f(e,t){let r=e.flatMap(n=>{let i,o=3;for(let a of t){let s=Uf(n.toLowerCase(),a.toLowerCase());s<o&&([i,o]=[a,s])}return i?[`"${n}" \u2192 "${i}"`]:[]});return r.length>0?` (did you mean ${r.join(", ")}?)`:""}function Uf(e,t){let r=Array.from({length:t.length+1},(n,i)=>i);for(let n=1;n<=e.length;n++){let i=[n];for(let o=1;o<=t.length;o++)i[o]=Math.min(r[o]+1,i[o-1]+1,r[o-1]+(e[n-1]===t[o-1]?0:1));r=i}return r[t.length]}function Vf(e,t,r){let n=Yr(r.theme??{}),i=r.fps??30,o=r.seed??1,a=r.id??e.autoId(_f(t.name)),s=t.defaults??{},l=r.hold??s.hold??0,c={host:e,theme:n,fps:i,seed:o,id:a,partId:P=>`${a}-${P}`,rng:P=>Wr(o,P),requested:{width:r.width,height:r.height,duration:r.duration,at:r.at??0},hold:l,canvas:r.canvas??{width:1920*n.scale,height:1080*n.scale}},d=t.build(c,r),m=xa(r.enter===void 0?s.enter:r.enter,"enter",n,i),p=xa(r.exit===void 0?s.exit:r.exit,"exit",n,i),h=d.duration===null||d.openEnded===!0&&!p&&!d.afterHold,b=r.duration??(h||d.duration===null?null:Math.max(1,d.duration+l+(d.afterHold??0)+(p?p.duration+p.delay:0)));if(b===null&&p)throw new Error(`${t.name}: an exit needs a known end. Give \`duration\`, or drop \`exit\`.`);let g=r.width??d.width,y=r.height??d.height,k=Math.max(m?.blur??0,p?.blur??0),S=m?.preset.startsWith("mask-")||p?.preset.startsWith("mask-"),A=e.box({id:c.partId("stage"),position:"absolute",x:0,y:0,width:g,height:y,overflow:"visible",...k>0&&{motionBlurShutter:k},children:d.children}),w={width:g,height:y};m&&A.animate(Jl(m,0,w)),p&&b!==null&&A.animate(ec(p,b,w));let T=r.x===void 0&&r.y===void 0&&!r.position?d.origin:void 0,v=r.x!==void 0||r.y!==void 0||T!==void 0,E=r.x??T?.[0]??0,C=r.y??T?.[1]??0,N=e.box({id:a,...v?{position:"absolute",x:E,y:C}:r.position?{position:r.position}:{},width:g,height:y,overflow:S?"hidden":"visible",startFrame:r.at??0,...b!==null&&{durationFrames:b},children:[A]}),G={...d.parts,root:N,stage:A};r.customize?.(G),Pa(N);let _=r.at??0,I=Ff(d.cues,_);if(Object.defineProperties(N,{cues:{value:I,enumerable:!1},span:{value:{start:_,end:b===null?Number.POSITIVE_INFINITY:_+b,duration:b??Number.POSITIVE_INFINITY},enumerable:!1},part:{value:P=>G[P],enumerable:!1},partNames:{value:Object.keys(G),enumerable:!1}}),d.api){let P=d.api({x:v?E:0,y:v?C:0,width:g,height:y,absolute:v,start:_});for(let[M,H]of Object.entries(P))Object.defineProperty(N,M,{value:H,enumerable:!1})}return N}function Pa(e){let t=e;for(let r of t.animation?.tracks??[]){let n=r.keyframes?.[0];!n||n.frame<=0||r.repeat||r.keyframes?.unshift({id:`${n.id}-hold`,frame:0,value:n.value})}for(let r of t.children??[])Pa(r);t.matte?.node&&Pa(t.matte.node)}f();f();var sc=(e,t)=>Math.hypot(t[0]-e[0],t[1]-e[1]),uc=(e,t,r)=>[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r];function lc(e,t=16){if(e.length<2)return e.map(n=>[n[0],n[1]]);let r=[[e[0][0],e[0][1]]];for(let n=0;n<e.length-1;n++){let i=e[Math.max(0,n-1)],o=e[n],a=e[n+1],s=e[Math.min(e.length-1,n+2)];for(let l=1;l<=t;l++)r.push(Gf(i,o,a,s,l/t))}return r}function Gf(e,t,r,n,i){let o=(k,S)=>Math.max(1e-6,Math.sqrt(sc(k,S))),s=0+o(e,t),l=s+o(t,r),c=l+o(r,n),d=s+(l-s)*i,m=(k,S,A,w)=>w===A?k:uc(k,S,(d-A)/(w-A)),p=m(e,t,0,s),h=m(t,r,s,l),b=m(r,n,l,c),g=m(p,h,0,l),y=m(h,b,s,c);return m(g,y,s,l)}function Pw(e){if(e.length===0)throw new Error("arcPath: no points");let t=[0];for(let i=1;i<e.length;i++)t.push(t[i-1]+sc(e[i-1],e[i]));let r=t[t.length-1],n=i=>{if(e.length===1||r===0)return[0,0];let o=Math.min(1,Math.max(0,i))*r,a=0,s=t.length-1;for(;s-a>1;){let c=a+s>>1;t[c]<=o?a=c:s=c}let l=t[s]-t[a];return[a,l>0?(o-t[a])/l:0]};return{points:e,length:r,at(i){let[o,a]=n(i);return e.length===1?[e[0][0],e[0][1]]:uc(e[o],e[Math.min(o+1,e.length-1)],a)},angleAt(i){let[o]=n(i),a=e[Math.min(o,e.length-2)]??e[0],s=e[Math.min(o+1,e.length-1)];return Math.atan2(s[1]-a[1],s[0]-a[0])}}}function at(e,t=!1){if(e.length===0)return"";let r=a=>Math.round(a*100)/100,[n,...i]=e,o=[`M${r(n[0])} ${r(n[1])}`];for(let a of i)o.push(`L${r(a[0])} ${r(a[1])}`);return t&&o.push("Z"),o.join(" ")}function Mw(e,t,r=0,n=0){let i=c=>Math.round(c*1e3)/1e3,o=e.match(/[a-zA-Z]|[-+]?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi)??[],a=[],s="",l=0;for(let c of o){if(/^[a-zA-Z]$/.test(c)){s=c,l=0,a.push(s);continue}let d=Number(c),m=s.toUpperCase(),p=s!==m;if(m==="A"){let h=l%7;l++,h===2||h===3||h===4?a.push(String(d)):h<2||p?a.push(String(i(d*t))):a.push(String(i(d*t+(h===5?r:n))));continue}p?a.push(String(i(d*t))):m==="H"?a.push(String(i(d*t+r))):m==="V"?a.push(String(i(d*t+n))):(a.push(String(i(d*t+(l%2===0?r:n)))),l++)}return a.join(" ").replace(/ ?([a-zA-Z]) ?/g,"$1")}function Ow(e,t,r="power2.inOut"){return[[e,0],[e+Math.max(1,t),1,r]]}function Xr(e,{wobble:t=0,seed:r=1}={},n=0){if(t<=0||e.length===0)return e.map(c=>[c[0],c[1]]);let i=Wr(r,`wobble:${n}`),o=Math.max(2,Math.min(8,Math.ceil(e.length/6))),a=Array.from({length:o},()=>i.spread(t)),s=Array.from({length:o},()=>i.spread(t)),l=(c,d)=>{let m=d*(c.length-1),p=Math.min(c.length-2,Math.floor(m)),h=m-p,b=h*h*(3-2*h);return c[p]*(1-b)+c[p+1]*b};return e.map((c,d)=>{let m=e.length===1?0:d/(e.length-1);return[c[0]+l(a,m),c[1]+l(s,m)]})}function Rw(e,{padding:t=0,wobble:r=0,seed:n=1}={},i=0){let o=e.x+e.width/2,a=e.y+e.height/2,s=e.width/2+t,l=e.height/2+t,c=Wr(n,`ellipse:${i}`),d=r>0?-Math.PI*.6+c.spread(.3):0,m=r>0?Math.PI*2*1.08:Math.PI*2,p=64,h=[];for(let b=0;b<=p;b++){let g=d+m*b/p,y=r>0?1+(b/p-.5)*.06:1;h.push([o+Math.cos(g)*s*y,a+Math.sin(g)*l*y])}return at(Xr(h,{wobble:r,seed:n},i),r<=0)}function Nw(e,{padding:t=0,wobble:r=0,seed:n=1}={},i=0){let o=e.x-t,a=e.y-t,s=e.x+e.width+t,l=e.y+e.height+t,c=[[o,a],[s,a],[s,l],[o,l],[o,a]];if(r<=0)return at(c.slice(0,4),!0);let d=s-o,m=[[o+d*.06,a]];for(let p=0;p<4;p++){let h=c[p],b=c[p+1];for(let g=1;g<=8;g++){let y=g/8;p===0&&h[0]+(b[0]-h[0])*y<o+d*.06||m.push([h[0]+(b[0]-h[0])*y,h[1]+(b[1]-h[1])*y])}}return m.push([o+d*.14,a+(l-a)*.01]),at(Xr(m,{wobble:r,seed:n},i))}function Fw(e,t,{wobble:r=0,seed:n=1}={},i=0){let o=r>0?16:1,a=[];for(let s=0;s<=o;s++){let l=s/o;a.push([e[0]+(t[0]-e[0])*l,e[1]+(t[1]-e[1])*l])}return at(Xr(a,{wobble:r,seed:n},i))}function Ew(e,t,{amplitude:r=6,waves:n,wobble:i=0,seed:o=1}={},a=0){let s=Math.hypot(t[0]-e[0],t[1]-e[1]),l=n??Math.max(2,Math.round(s/28)),c=Math.atan2(t[1]-e[1],t[0]-e[0]),d=-Math.sin(c),m=Math.cos(c),p=l*8,h=[];for(let b=0;b<=p;b++){let g=b/p,y=Math.sin(g*l*Math.PI*2)*r;h.push([e[0]+(t[0]-e[0])*g+d*y,e[1]+(t[1]-e[1])*g+m*y])}return at(Xr(h,{wobble:i,seed:o},a))}var Wf=e=>{let t=Math.min(1,Math.max(0,e));return t*t*(3-2*t)};function Hf(e,t){let r=t;for(let n=e.length-1;n>0;n--){let i=e[n],o=e[n-1],a=Math.hypot(i[0]-o[0],i[1]-o[1]);if(a>=r&&a>0){let s=r/a;return[i[0]+(o[0]-i[0])*s,i[1]+(o[1]-i[1])*s]}r-=a}return e[0]}function Bw(e,t,{curve:r="arc",headSize:n=18,wobble:i=0,seed:o=1}={},a=0){let s=t[0]-e[0],l=t[1]-e[1],c=Math.hypot(s,l)||1,d=-l/c,m=s/c,p=r==="straight"?0:r==="arc"?.18:.35,h=r==="swoop"?[e,[e[0]+s*.3+d*c*p,e[1]+l*.3+m*c*p],[e[0]+s*.75-d*c*p*.4,e[1]+l*.75-m*c*p*.4],t]:[e,[e[0]+s*.5+d*c*p,e[1]+l*.5+m*c*p],t],b=p===0?[e,t]:lc(h,12),g=Xr(b,{wobble:i,seed:o},a).map((T,v)=>{let E=b.length===1?0:v/(b.length-1),C=E<=.75?1:1-Wf((E-.75)/.25),N=b[v];return[N[0]+(T[0]-N[0])*C,N[1]+(T[1]-N[1])*C]}),y=Hf(b,n),k=Math.atan2(t[1]-y[1],t[0]-y[0]),S=T=>[t[0]-Math.cos(k+T*.5)*n,t[1]-Math.sin(k+T*.5)*n],A=S(1),w=S(-1);return{shaft:at(g),head:`${at([A,t])} ${at([t,w]).replace(/^M/,"L")}`}}function Lw(e,{start:t,end:r,every:n,variants:i=3}){let o=Array.from({length:Math.max(1,i)},(l,c)=>e(c));if(n<=0||o.length===1)return[[t,o[0]]];let a=[],s=0;for(let l=t;l<=r;l+=n)a.push([l,o[s%o.length],"hold"]),s++;return a}f();var ri={char:"textIndex",word:"wordIndex",line:"lineIndex"},Yf=e=>String(Math.round(e*1e4)/1e4),bt=e=>`[${e.map(Yf).join(",")}]`;function _w(e,t,r,n){let i=Math.max(1,Math.round(t.duration)),o=Array.from({length:i+1},(d,m)=>Zn(t.ease,m/i)),a=ri[e],s=d=>`(${d}[${a}]??${d}[${d}.length-1])`,l=r==="enter"?"1-v":"v",c=n?`(${l})*${s("F")}`:l;return["((S,L,F)=>{",`const t=frame-${s("S")};`,"const k=floor(t);",`const v=t<=0?L[0]:t>=${i}?L[${i}]:L[k]+(L[k+1]-L[k])*(t-k);`,`return ${c};`,`})(${bt(t.starts)},${bt(o)},${n?bt(n):"0"})`].join("")}function $w(e,t,r,n){let i=ri[e],o=n?`*(${bt(n)}[${i}]??0)`:"";return`((S,E)=>{const s=S[${i}];return s!==undefined&&frame>=s&&frame<E[${i}]?1${o}:0;})(${bt(t)},${bt(r)})`}function Uw(e,t){return`((S)=>frame<(S[${ri[e]}]??S[S.length-1])?1:0)(${bt(t)})`}function Vw(e,t){return t.filter((r,n)=>e[n]!==`
383
+ `)}function Gw(e,t){return`(${bt(t)}[${ri[e]}]??0)`}function Ww(e,t,r){return{name:e,selectors:[{type:"expression",expression:t,mode:"add",amount:1}],props:r}}function Hw(e,t){let r={textIndex:t.textIndex??0,wordIndex:t.wordIndex??0,lineIndex:t.lineIndex??0,frame:t.frame,floor:Math.floor,clamp:(o,a,s)=>Math.max(a,Math.min(s,o)),abs:Math.abs,min:Math.min,max:Math.max},n=new Function(...Object.keys(r),`return (${e});`),i=Number(n(...Object.values(r)));return Number.isFinite(i)?Math.max(-1,Math.min(1,i)):0}f();var Xf={titles:{landscape:{x:.06,top:.08,bottom:.1},portrait:{x:.08,top:.1,bottom:.24}},captions:{landscape:{x:.1,top:.08,bottom:.1},portrait:{x:.08,top:.12,bottom:.22}}};function qw(e,t,r=Xf.titles){if(t&&typeof t=="object")return t;let{width:n,height:i}=e,a=(t?t==="portrait":i>n)?r.portrait:r.landscape;return{x:n*a.x,y:i*a.top,width:n*(1-2*a.x),height:i*(1-a.top-a.bottom)}}f();function Qw(e){if(!/^[A-Z][A-Za-z0-9]+$/.test(e.name))throw new Error(`Component name must be PascalCase: "${e.name}"`);if(e.summary.length>200)throw new Error(`${e.name}: summary must be one sentence (\u2264 200 chars).`);return e}f();var cc;function rv(){return cc??=u.custom(e=>e!=null&&(Array.isArray(e)||typeof e=="object"||typeof e=="function"),{message:"Expected a target: [x, y], a rect, { node }, { text }, { track } or (frame) => point"}),cc}f();function qf(e,t){let r=e.elevation[t],n=e.scale;return{...r.opacity>0&&{dropShadow:{color:e.color.shadow,opacity:r.opacity,angle:90,distance:r.distance*n,size:r.size*n}},...r.edge>0&&{innerShadow:{color:"#ffffff",opacity:r.edge,angle:270,distance:Math.max(1,n),size:0,blendMode:"normal"}}}}function av(e,t,r,n){if(n===!1)return t;let i=qf(r,n);return Object.keys(i).length>0?e.style(t,i):t}function sv(e,t,r=.05){if(t.mode==="light"||r<=0)return e;let n=ql(e,"#ffffff",r);return n===e?e:`linear-gradient(180deg, ${n} 0%, ${e} 100%)`}f();f();function cv(e){let t=[];for(let r of e.matchAll(/\S+/g)){let n=r.index??0;t.push({text:r[0],start:n,end:n+r[0].length,index:t.length})}return t}function dc(e,t,r=0){if(typeof t=="string"){let o=0;for(let a=0;;a++){let s=e.indexOf(t,o);if(s<0)return null;if(a===r)return[s,s+t.length];o=s+Math.max(1,t.length)}}let n=t.flags.includes("g")?t.flags:`${t.flags}g`,i=0;for(let o of e.matchAll(new RegExp(t.source,n))){if(i===r)return[o.index??0,(o.index??0)+o[0].length];i++}return null}function Zf(e,t,r){if(!r.width||!r.align||r.align==="left")return 0;let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(let a of e.glyphs)a.line!==t||a.char.trim()===""||(n=Math.min(n,a.x),i=Math.max(i,a.x+a.width));if(!Number.isFinite(n))return 0;let o=r.width-(i-n);return(r.align==="center"?o/2:o)-n}function mc(e,t,r,n){let i=new Map;for(let o of e.glyphs){if(o.index<t||o.index>=r||o.char.trim()==="")continue;let a=i.get(o.line)??{min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};a.min=Math.min(a.min,o.x),a.max=Math.max(a.max,o.x+o.width-(n.letterSpacing??0)),i.set(o.line,a)}return[...i.entries()].sort(([o],[a])=>o-a).map(([o,a])=>{let s=Zf(e,o,n);return{x:a.min+s,y:o*e.lineHeight,width:a.max-a.min,height:e.lineHeight}})}var pc=e=>Array.isArray(e)&&e.length===2&&e.every(t=>typeof t=="number"),Kf=e=>typeof e=="object"&&e!==null&&["x","y","width","height"].every(t=>typeof e[t]=="number"),Ye=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0;function ni(e,t,r){if(typeof e=="function")return e(t);if(e&&typeof e.get=="function"){let n=t/r;return e.get({frame:t,fps:r,time:n,duration:0,durationMs:0,progress:0,deltaTime:1/r})}throw new Error("Tracked target values must be signals or (frame) => number.")}function fv(e,t={}){if(typeof e=="function")return{kind:"dynamic",anchor:"center",at:i=>{let o=e(i);return pc(o)?{x:o[0],y:o[1],width:0,height:0}:o}};if(pc(e))return{kind:"static",anchor:"center",rects:[{x:e[0],y:e[1],width:0,height:0}]};if(Kf(e))return{kind:"static",anchor:"center",rects:[e]};if("track"in e){let i=e.track,o=t.fps??30;return{kind:"dynamic",anchor:e.anchor??"center",at:a=>({x:ni(i.x,a,o),y:ni(i.y,a,o),width:ni(i.width,a,o),height:ni(i.height,a,o)})}}if("text"in e)return{kind:"static",anchor:e.anchor??"tip",rects:eh(e,t)};let r=e.node,n=Qf(r);if(!n)throw new Error(`Target node "${r.id??"?"}" has no absolute geometry. Give it numeric x, y, width and height, or target a rect.`);return{kind:"static",anchor:e.anchor??"center",rects:[n]}}function Qf(e){let t=Ye(e.x),r=Ye(e.y),n=Ye(e.width),i=Ye(e.height);return t===void 0||r===void 0||n===void 0||i===void 0?null:{x:t,y:r,width:n,height:i}}function Jf(e,t){let r=e.text,n=typeof r.text=="string"?r.text:typeof r.content=="string"?r.content:null;if(n===null)throw new Error("Text target node has no string content.");let i=Ye(r.x),o=Ye(r.y);if(i===void 0||o===void 0)throw new Error(`Text target "${r.id??"?"}" needs numeric x and y so its glyphs can be placed.`);if(!t.measure)throw new Error("Text targets need a measure function.");let a=r.fontFamily??t.textDefaults?.fontFamily;if(!a)throw new Error("Text target has no fontFamily.");let s={...t.textDefaults,fontFamily:a,fontSize:Ye(r.fontSize)??t.textDefaults?.fontSize,fontWeight:r.fontWeight??t.textDefaults?.fontWeight,letterSpacing:Ye(r.letterSpacing)??t.textDefaults?.letterSpacing,lineHeight:Ye(r.lineHeight)??t.textDefaults?.lineHeight,width:Ye(r.width),align:th(r.align),direction:r.direction},l=e.range??(e.match!==void 0?dc(n,e.match,e.nth??0):[0,n.length]);if(!l)throw new Error(`Text target: "${String(e.match)}" not found in "${n}".`);return{content:n,metrics:t.measure(n,s),options:s,range:[l[0],l[1]],x:i,y:o}}function eh(e,t){let r=Jf(e,t),n=mc(r.metrics,r.range[0],r.range[1],r.options);if(n.length===0)throw new Error("Text target range covers no glyphs.");return n.map(i=>({...i,x:i.x+r.x,y:i.y+r.y}))}function th(e){return e==="center"?"center":e==="end"||e==="right"?"right":"left"}function rh(e){if(e.length===0)return{x:0,y:0,width:0,height:0};let t=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(let o of e)t=Math.min(t,o.x),r=Math.min(r,o.y),n=Math.max(n,o.x+o.width),i=Math.max(i,o.y+o.height);return{x:t,y:r,width:n-t,height:i-r}}function fc(e,t="center",r=!1){let{x:n,y:i,width:o,height:a}=e;switch(t){case"tip":return r?[n,i+a/2]:[n+o/2,i+a/2];case"center":return[n+o/2,i+a/2];case"top":return[n+o/2,i];case"bottom":return[n+o/2,i+a];case"left":return[n,i+a/2];case"right":return[n+o,i+a/2];case"top-left":return[n,i];case"top-right":return[n+o,i];case"bottom-left":return[n,i+a];case"bottom-right":return[n+o,i+a]}}function hv(e,t=0,r=!1){if(e.kind==="dynamic")return fc(e.at(t),e.anchor,r);let n=e.rects[0];return fc(e.anchor==="tip"?n:rh(e.rects),e.anchor,r)}f();function yv(e,t,r,n,i=0){let o=r/t,a=[],s=i;for(let l=0;l<e.length;l++){let c=e[l-1]??"",d=l===0?0:o*(1+n.spread(.3));c===" "&&(d+=o*.6),/[.,!?;:]/.test(c)&&(d+=o*3),s+=d,a.push(Math.max(i,Math.round(s)))}for(let l=1;l<a.length;l++)a[l]=Math.max(a[l],a[l-1]+1);return a}f();f();var qr=class{textures=new Map;set(t,r){this.textures.set(t,r)}get(t){return this.textures.get(t)}has(t){return this.textures.has(t)}getOutputs(){return{canny:this.textures.get("canny"),depth:this.textures.get("depth"),normals:this.textures.get("normals"),poseSkeleton:this.textures.get("poseSkeleton"),segmentationMask:this.textures.get("segmentationMask"),faceLandmarks:this.textures.get("faceLandmarks"),motionVectors:this.textures.get("motionVectors"),deflickered:this.textures.get("deflickered")}}createBindGroupEntry(t,r){let n=this.textures.get(t);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot create bind group entry: conditioning texture "${t}" is not registered in VRAM.`);return{binding:r,resource:n.createView({label:`controlnet_${t}_view`})}}exportTensorView(t){let r=this.textures.get(t);if(!r)throw new Error(`[ControlNetMultiplexer] Conditioning tensor "${t}" not found in multiplexer.`);return{texture:r,width:r.width,height:r.height,format:r.format}}async readPixelsAsync(t,r){let n=this.textures.get(r);if(!n)throw new Error(`[ControlNetMultiplexer] Cannot read pixels: conditioning texture "${r}" is missing.`);let i=n.width,o=n.height,a=n.format,s=4;a==="rgba16float"||a==="rg32float"?s=8:a==="r32float"?s=4:a==="rgba32float"&&(s=16);let l=i*s,c=Math.ceil(l/256)*256,d=c*o,m=t.createBuffer({size:d,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:`controlnet_readback_staging_${r}`}),p=t.createCommandEncoder({label:`readback_encoder_${r}`});p.copyTextureToBuffer({texture:n},{buffer:m,bytesPerRow:c,rowsPerImage:o},[i,o,1]),t.queue.submit([p.finish()]),await m.mapAsync(GPUMapMode.READ);let h=m.getMappedRange(),b=new Uint8Array(i*o*s),g=new Uint8Array(h);if(c===l)b.set(g.subarray(0,i*o*s));else for(let y=0;y<o;y++){let k=y*c,S=y*l;b.set(g.subarray(k,k+l),S)}return m.unmap(),m.destroy(),{width:i,height:o,format:a,data:b}}destroy(){for(let t of this.textures.values())try{t.destroy()}catch{}this.textures.clear()}};f();f();f();var hc=`
384
384
  struct CannyParams {
385
385
  lowThreshold: f32,
386
386
  highThreshold: f32,
@@ -436,7 +436,7 @@ fn computeSobel(@builtin(global_invocation_id) id: vec3<u32>) {
436
436
 
437
437
  textureStore(magnitudeTex, id.xy, vec4<f32>(mag, sector, 0.0, 1.0));
438
438
  }
439
- `,fc=`
439
+ `,gc=`
440
440
  struct CannyParams {
441
441
  lowThreshold: f32,
442
442
  highThreshold: f32,
@@ -494,7 +494,7 @@ fn computeNonMaxSuppression(@builtin(global_invocation_id) id: vec3<u32>) {
494
494
 
495
495
  textureStore(edgeTex, id.xy, vec4<f32>(edge, edge, edge, 1.0));
496
496
  }
497
- `,hc=`
497
+ `,bc=`
498
498
  struct CannyParams {
499
499
  lowThreshold: f32,
500
500
  highThreshold: f32,
@@ -552,7 +552,7 @@ fn computeNonMaxSuppression(@builtin(global_invocation_id) id: vec3<u32>) {
552
552
 
553
553
  textureStore(edgeTex, id.xy, vec4<f32>(edge, 0.0, 0.0, 1.0));
554
554
  }
555
- `;var Zr=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"canny_sobel.wgsl",code:pc});this.sobelPipeline=t.createComputePipeline({label:"CannySobelPipeline",layout:"auto",compute:{module:r,entryPoint:"computeSobel"}});let n=t.createShaderModule({label:"canny_nms_rgba8.wgsl",code:fc});this.nmsRgba8Pipeline=t.createComputePipeline({label:"CannyNmsRgba8Pipeline",layout:"auto",compute:{module:n,entryPoint:"computeNonMaxSuppression"}});let i=t.createShaderModule({label:"canny_nms_r32f.wgsl",code:hc});this.nmsR32fPipeline=t.createComputePipeline({label:"CannyNmsR32fPipeline",layout:"auto",compute:{module:i,entryPoint:"computeNonMaxSuppression"}}),this.uniformBuffer=t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"canny_uniform_buffer"})}device;sobelPipeline;nmsRgba8Pipeline;nmsR32fPipeline;uniformBuffer;cachedIntermediateTexture;cachedOutputTexture;execute(t,r={}){let n=t.width,i=t.height,o=r.low??.1,a=r.high??.3,s=r.outputFormat??"rgba8unorm",u=new ArrayBuffer(16),c=new Float32Array(u),d=new Uint32Array(u);c[0]=o,c[1]=a,d[2]=n,d[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,u),(!this.cachedIntermediateTexture||this.cachedIntermediateTexture.width!==n||this.cachedIntermediateTexture.height!==i)&&(this.cachedIntermediateTexture?.destroy(),this.cachedIntermediateTexture=this.device.createTexture({label:"canny_magnitude_intermediate",size:[n,i],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING})),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==s)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`canny_edge_output_${s}`,size:[n,i],format:s,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=this.device.createCommandEncoder({label:"canny_command_encoder"}),p=this.device.createBindGroup({layout:this.sobelPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:t.createView()},{binding:1,resource:this.cachedIntermediateTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),h=m.beginComputePass({label:"canny_sobel_pass"});h.setPipeline(this.sobelPipeline),h.setBindGroup(0,p),h.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),h.end();let g=s==="r32float"?this.nmsR32fPipeline:this.nmsRgba8Pipeline,b=this.device.createBindGroup({layout:g.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedIntermediateTexture.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),y=m.beginComputePass({label:"canny_nms_pass"});return y.setPipeline(g),y.setBindGroup(0,b),y.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),y.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedIntermediateTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};f();f();var gc=`
555
+ `;var Zr=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"canny_sobel.wgsl",code:hc});this.sobelPipeline=t.createComputePipeline({label:"CannySobelPipeline",layout:"auto",compute:{module:r,entryPoint:"computeSobel"}});let n=t.createShaderModule({label:"canny_nms_rgba8.wgsl",code:gc});this.nmsRgba8Pipeline=t.createComputePipeline({label:"CannyNmsRgba8Pipeline",layout:"auto",compute:{module:n,entryPoint:"computeNonMaxSuppression"}});let i=t.createShaderModule({label:"canny_nms_r32f.wgsl",code:bc});this.nmsR32fPipeline=t.createComputePipeline({label:"CannyNmsR32fPipeline",layout:"auto",compute:{module:i,entryPoint:"computeNonMaxSuppression"}}),this.uniformBuffer=t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"canny_uniform_buffer"})}device;sobelPipeline;nmsRgba8Pipeline;nmsR32fPipeline;uniformBuffer;cachedIntermediateTexture;cachedOutputTexture;execute(t,r={}){let n=t.width,i=t.height,o=r.low??.1,a=r.high??.3,s=r.outputFormat??"rgba8unorm",l=new ArrayBuffer(16),c=new Float32Array(l),d=new Uint32Array(l);c[0]=o,c[1]=a,d[2]=n,d[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,l),(!this.cachedIntermediateTexture||this.cachedIntermediateTexture.width!==n||this.cachedIntermediateTexture.height!==i)&&(this.cachedIntermediateTexture?.destroy(),this.cachedIntermediateTexture=this.device.createTexture({label:"canny_magnitude_intermediate",size:[n,i],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING})),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==s)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`canny_edge_output_${s}`,size:[n,i],format:s,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let m=this.device.createCommandEncoder({label:"canny_command_encoder"}),p=this.device.createBindGroup({layout:this.sobelPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:t.createView()},{binding:1,resource:this.cachedIntermediateTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),h=m.beginComputePass({label:"canny_sobel_pass"});h.setPipeline(this.sobelPipeline),h.setBindGroup(0,p),h.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),h.end();let b=s==="r32float"?this.nmsR32fPipeline:this.nmsRgba8Pipeline,g=this.device.createBindGroup({layout:b.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedIntermediateTexture.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),y=m.beginComputePass({label:"canny_nms_pass"});return y.setPipeline(b),y.setBindGroup(0,g),y.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),y.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedIntermediateTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};f();f();var yc=`
556
556
  struct DepthNormalParams {
557
557
  width: u32,
558
558
  height: u32,
@@ -585,7 +585,7 @@ fn computeNormals(@builtin(global_invocation_id) id: vec3<u32>) {
585
585
  let packedColor = vec4<f32>(normal * 0.5 + 0.5, 1.0);
586
586
  textureStore(normalTex, id.xy, packedColor);
587
587
  }
588
- `,bc=`
588
+ `,xc=`
589
589
  struct DepthNormalParams {
590
590
  width: u32,
591
591
  height: u32,
@@ -618,7 +618,7 @@ fn computeNormals(@builtin(global_invocation_id) id: vec3<u32>) {
618
618
  let packedColor = vec4<f32>(normal * 0.5 + 0.5, 1.0);
619
619
  textureStore(normalTex, id.xy, packedColor);
620
620
  }
621
- `;var Kr=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"depth_normals_rgba16f.wgsl",code:gc});this.normalRgba16fPipeline=t.createComputePipeline({label:"DepthNormalsRgba16fPipeline",layout:"auto",compute:{module:r,entryPoint:"computeNormals"}});let n=t.createShaderModule({label:"depth_normals_rgba8.wgsl",code:bc});this.normalRgba8Pipeline=t.createComputePipeline({label:"DepthNormalsRgba8Pipeline",layout:"auto",compute:{module:n,entryPoint:"computeNormals"}}),this.uniformBuffer=t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"depth_normals_uniform_buffer"})}device;normalRgba16fPipeline;normalRgba8Pipeline;uniformBuffer;cachedOutputTexture;execute(t,r={}){let n=t.width,i=t.height,o=r.depthScale??1,a=r.outputFormat??"rgba16float",s=new ArrayBuffer(16),u=new Uint32Array(s),c=new Float32Array(s);u[0]=n,u[1]=i,c[2]=o,c[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==a)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`normal_output_${a}`,size:[n,i],format:a,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let d=a==="rgba8unorm"?this.normalRgba8Pipeline:this.normalRgba16fPipeline,m=this.device.createCommandEncoder({label:"depth_normals_command_encoder"}),p=this.device.createBindGroup({layout:d.getBindGroupLayout(0),entries:[{binding:0,resource:t.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),h=m.beginComputePass({label:"depth_normals_compute_pass"});return h.setPipeline(d),h.setBindGroup(0,p),h.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),h.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};f();f();var yc=`
621
+ `;var Kr=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"depth_normals_rgba16f.wgsl",code:yc});this.normalRgba16fPipeline=t.createComputePipeline({label:"DepthNormalsRgba16fPipeline",layout:"auto",compute:{module:r,entryPoint:"computeNormals"}});let n=t.createShaderModule({label:"depth_normals_rgba8.wgsl",code:xc});this.normalRgba8Pipeline=t.createComputePipeline({label:"DepthNormalsRgba8Pipeline",layout:"auto",compute:{module:n,entryPoint:"computeNormals"}}),this.uniformBuffer=t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"depth_normals_uniform_buffer"})}device;normalRgba16fPipeline;normalRgba8Pipeline;uniformBuffer;cachedOutputTexture;execute(t,r={}){let n=t.width,i=t.height,o=r.depthScale??1,a=r.outputFormat??"rgba16float",s=new ArrayBuffer(16),l=new Uint32Array(s),c=new Float32Array(s);l[0]=n,l[1]=i,c[2]=o,c[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i||this.cachedOutputTexture.format!==a)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`normal_output_${a}`,size:[n,i],format:a,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let d=a==="rgba8unorm"?this.normalRgba8Pipeline:this.normalRgba16fPipeline,m=this.device.createCommandEncoder({label:"depth_normals_command_encoder"}),p=this.device.createBindGroup({layout:d.getBindGroupLayout(0),entries:[{binding:0,resource:t.createView()},{binding:1,resource:this.cachedOutputTexture.createView()},{binding:2,resource:{buffer:this.uniformBuffer}}]}),h=m.beginComputePass({label:"depth_normals_compute_pass"});return h.setPipeline(d),h.setBindGroup(0,p),h.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),h.end(),this.device.queue.submit([m.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};f();f();var wc=`
622
622
  struct FaceSegment {
623
623
  start: vec2<f32>,
624
624
  end: vec2<f32>,
@@ -675,7 +675,7 @@ fn computeFaceLandmarks(@builtin(global_invocation_id) id: vec3<u32>) {
675
675
 
676
676
  textureStore(outputTex, id.xy, outColor);
677
677
  }
678
- `;function at(e,t){let r=[];for(let n=0;n<e.length-1;n++)r.push({from:e[n],to:e[n+1],color:t});return r}var Qr=[...at([70,63,105,66,107],[0,1,1,1]),...at([300,293,334,296,336],[0,1,1,1]),...at([33,160,158,133,153,144,33],[0,1,0,1]),...at([263,387,385,362,380,373,263],[0,1,0,1]),...at([168,6,197,195,4],[1,1,0,1]),...at([98,97,2,326,327],[1,1,0,1]),...at([61,185,40,39,37,0,267,269,270,409,291,375,321,405,314,17,84,181,91,146,61],[1,.2,.2,1]),...at([78,95,88,178,87,14,317,402,318,324,308,415,310,311,312,13,82,81,80,191,78],[1,0,.8,1]),...at([10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109,10],[.9,.9,.9,1])],ii=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"face_landmarks.wgsl",code:yc});this.computePipeline=t.createComputePipeline({label:"FaceLandmarksComputePipeline",layout:"auto",compute:{module:r,entryPoint:"computeFaceLandmarks"}}),this.uniformBuffer=t.createBuffer({size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"face_landmarks_uniform_buffer"});let n=Math.max(256,Qr.length*48);this.storageBuffer=t.createBuffer({size:n,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"face_landmarks_storage_buffer"})}device;computePipeline;uniformBuffer;storageBuffer;cachedOutputTexture;execute(t,r={}){let n=r.width??1024,i=r.height??1024,o=r.lineWidth??4,a=Math.max(1,o/2),s=new Uint32Array(4);s[0]=n,s[1]=i,s[2]=Qr.length,s[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s);let u=new Float32Array(Qr.length*12);for(let p=0;p<Qr.length;p++){let h=Qr[p],g=t[h.from],b=t[h.to],y=p*12;if(!g||!b||(g.visibility??1)<.2||(b.visibility??1)<.2){u[y+9]=0;continue}u[y+0]=g.x*n,u[y+1]=g.y*i,u[y+2]=b.x*n,u[y+3]=b.y*i,u[y+4]=h.color[0],u[y+5]=h.color[1],u[y+6]=h.color[2],u[y+7]=h.color[3],u[y+8]=a,u[y+9]=1,u[y+10]=0,u[y+11]=0}this.device.queue.writeBuffer(this.storageBuffer,0,u),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({size:{width:n,height:i},format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST,label:"face_landmarks_output_texture"}));let c=this.device.createBindGroup({label:"FaceLandmarksBindGroup",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedOutputTexture.createView()},{binding:1,resource:{buffer:this.uniformBuffer}},{binding:2,resource:{buffer:this.storageBuffer}}]}),d=this.device.createCommandEncoder({label:"FaceLandmarksCommandEncoder"}),m=d.beginComputePass({label:"FaceLandmarksComputePass"});return m.setPipeline(this.computePipeline),m.setBindGroup(0,c),m.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),m.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.uniformBuffer.destroy(),this.storageBuffer.destroy(),this.cachedOutputTexture?.destroy()}};f();f();var xc=`
678
+ `;function st(e,t){let r=[];for(let n=0;n<e.length-1;n++)r.push({from:e[n],to:e[n+1],color:t});return r}var Qr=[...st([70,63,105,66,107],[0,1,1,1]),...st([300,293,334,296,336],[0,1,1,1]),...st([33,160,158,133,153,144,33],[0,1,0,1]),...st([263,387,385,362,380,373,263],[0,1,0,1]),...st([168,6,197,195,4],[1,1,0,1]),...st([98,97,2,326,327],[1,1,0,1]),...st([61,185,40,39,37,0,267,269,270,409,291,375,321,405,314,17,84,181,91,146,61],[1,.2,.2,1]),...st([78,95,88,178,87,14,317,402,318,324,308,415,310,311,312,13,82,81,80,191,78],[1,0,.8,1]),...st([10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109,10],[.9,.9,.9,1])],ii=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"face_landmarks.wgsl",code:wc});this.computePipeline=t.createComputePipeline({label:"FaceLandmarksComputePipeline",layout:"auto",compute:{module:r,entryPoint:"computeFaceLandmarks"}}),this.uniformBuffer=t.createBuffer({size:64,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"face_landmarks_uniform_buffer"});let n=Math.max(256,Qr.length*48);this.storageBuffer=t.createBuffer({size:n,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"face_landmarks_storage_buffer"})}device;computePipeline;uniformBuffer;storageBuffer;cachedOutputTexture;execute(t,r={}){let n=r.width??1024,i=r.height??1024,o=r.lineWidth??4,a=Math.max(1,o/2),s=new Uint32Array(4);s[0]=n,s[1]=i,s[2]=Qr.length,s[3]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,s);let l=new Float32Array(Qr.length*12);for(let p=0;p<Qr.length;p++){let h=Qr[p],b=t[h.from],g=t[h.to],y=p*12;if(!b||!g||(b.visibility??1)<.2||(g.visibility??1)<.2){l[y+9]=0;continue}l[y+0]=b.x*n,l[y+1]=b.y*i,l[y+2]=g.x*n,l[y+3]=g.y*i,l[y+4]=h.color[0],l[y+5]=h.color[1],l[y+6]=h.color[2],l[y+7]=h.color[3],l[y+8]=a,l[y+9]=1,l[y+10]=0,l[y+11]=0}this.device.queue.writeBuffer(this.storageBuffer,0,l),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({size:{width:n,height:i},format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST,label:"face_landmarks_output_texture"}));let c=this.device.createBindGroup({label:"FaceLandmarksBindGroup",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedOutputTexture.createView()},{binding:1,resource:{buffer:this.uniformBuffer}},{binding:2,resource:{buffer:this.storageBuffer}}]}),d=this.device.createCommandEncoder({label:"FaceLandmarksCommandEncoder"}),m=d.beginComputePass({label:"FaceLandmarksComputePass"});return m.setPipeline(this.computePipeline),m.setBindGroup(0,c),m.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16)),m.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.uniformBuffer.destroy(),this.storageBuffer.destroy(),this.cachedOutputTexture?.destroy()}};f();f();var vc=`
679
679
  struct SegParams {
680
680
  threshold: f32,
681
681
  feather: f32,
@@ -705,29 +705,29 @@ fn computeSegmentation(@builtin(global_invocation_id) id: vec3<u32>) {
705
705
 
706
706
  textureStore(outputTex, id.xy, vec4<f32>(alpha, alpha, alpha, 1.0));
707
707
  }
708
- `;var oi=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"segmentation.wgsl",code:xc});this.computePipeline=t.createComputePipeline({label:"SegmentationComputePipeline",layout:"auto",compute:{module:r,entryPoint:"computeSegmentation"}}),this.uniformBuffer=t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"segmentation_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(t,r={}){let n=t.width,i=t.height,o=r.threshold??.5,a=r.feather??.05,s=new ArrayBuffer(16),u=new Float32Array(s),c=new Uint32Array(s);u[0]=o,u[1]=a,c[2]=n,c[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"segmentation_output_texture",size:[n,i],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let d=this.device.createCommandEncoder({label:"segmentation_command_encoder"}),m=this.device.createBindGroup({label:"segmentation_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:t.createView({label:"segmentation_input_view"})},{binding:1,resource:this.cachedOutputTexture.createView({label:"segmentation_output_view"})},{binding:2,resource:{buffer:this.uniformBuffer}}]}),p=d.beginComputePass({label:"segmentation_compute_pass"});return p.setPipeline(this.computePipeline),p.setBindGroup(0,m),p.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16),1),p.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};var ar=class e{constructor(t){this.source=t;this.id=`tensor-${Math.random().toString(36).slice(2,9)}`}source;id;cannyOptions;depthNormalsOptions;poseSkeletonOptions;faceLandmarksOptions;segmentationOptions;opticalFlowOptions;deflickerOptions;multiplexer=new qr;cannyPipeline;depthNormalsPipeline;posePipeline;facePipeline;segmentationPipeline;opticalFlowPipeline;deflickerPipeline;prevInputTexture;static from(t){return new e(t)}canny(t={}){return this.cannyOptions=t,this}depthNormals(t={}){return this.depthNormalsOptions=t,this}poseSkeleton(t={}){return this.poseSkeletonOptions=t,this}pose(t,r={}){return this.poseSkeletonOptions={...r,landmarks:t},this}faceLandmarks(t={}){return this.faceLandmarksOptions=t,this}face(t,r={}){return this.faceLandmarksOptions={...r,landmarks:t},this}segmentation(t={}){return this.segmentationOptions=t,this}opticalFlow(t={}){return this.opticalFlowOptions=t,this}deflicker(t={}){return this.deflickerOptions=t,this}getMultiplexer(){return this.multiplexer}async execute(t,r){let n=r;if(!n&&typeof this.source?.createView=="function"&&(n=this.source),!n)throw new Error("[TensorPipeline.execute] No GPUTexture available for tensor compute execution. Pass a valid GPUTexture to execute() or initialize with a GPUTexture source.");if(this.cannyOptions){this.cannyPipeline||(this.cannyPipeline=new Zr(t));let i=this.cannyPipeline.execute(n,this.cannyOptions);this.multiplexer.set("canny",i)}if(this.depthNormalsOptions){this.depthNormalsPipeline||(this.depthNormalsPipeline=new Kr(t));let i=this.depthNormalsPipeline.execute(n,this.depthNormalsOptions);this.multiplexer.set("normals",i)}if(this.poseSkeletonOptions?.landmarks){this.posePipeline||(this.posePipeline=new Ru(t));let i=this.posePipeline.execute(this.poseSkeletonOptions.landmarks,{width:this.poseSkeletonOptions.width??n.width,height:this.poseSkeletonOptions.height??n.height,lineWidth:this.poseSkeletonOptions.lineWidth});this.multiplexer.set("poseSkeleton",i)}if(this.faceLandmarksOptions?.landmarks){this.facePipeline||(this.facePipeline=new ii(t));let i=this.facePipeline.execute(this.faceLandmarksOptions.landmarks,{width:this.faceLandmarksOptions.width??n.width,height:this.faceLandmarksOptions.height??n.height,lineWidth:this.faceLandmarksOptions.lineWidth});this.multiplexer.set("faceLandmarks",i)}if(this.segmentationOptions){this.segmentationPipeline||(this.segmentationPipeline=new oi(t));let i=this.segmentationPipeline.execute(n,this.segmentationOptions);this.multiplexer.set("segmentationMask",i)}if(this.opticalFlowOptions){this.opticalFlowPipeline||(this.opticalFlowPipeline=new co(t));let i=this.prevInputTexture??n,o=this.opticalFlowPipeline.execute(i,n,this.opticalFlowOptions);this.multiplexer.set("motionVectors",o)}if(this.deflickerOptions){this.deflickerPipeline||(this.deflickerPipeline=new mo(t));let i=this.deflickerPipeline.execute(n,this.deflickerOptions);this.multiplexer.set("deflickered",i)}return this.prevInputTexture=n,this.multiplexer.getOutputs()}toConfig(){return{canny:this.cannyOptions,depthNormals:this.depthNormalsOptions,poseSkeleton:this.poseSkeletonOptions,faceLandmarks:this.faceLandmarksOptions,segmentation:this.segmentationOptions,opticalFlow:this.opticalFlowOptions,deflicker:this.deflickerOptions}}toNode(){return{id:this.id,kind:"tensor",source:this.source,config:this.toConfig()}}destroy(){this.cannyPipeline?.destroy(),this.depthNormalsPipeline?.destroy(),this.posePipeline?.destroy(),this.facePipeline?.destroy(),this.segmentationPipeline?.destroy(),this.opticalFlowPipeline?.destroy(),this.deflickerPipeline?.destroy(),this.multiplexer.destroy()}};f();var Xv=e=>{if(!e)return"srcOver";switch(e){case"source-over":return"srcOver";case"source-in":return"srcIn";case"source-out":return"srcOut";case"source-atop":return"srcATop";case"destination-over":return"dstOver";case"destination-in":return"dstIn";case"destination-out":return"dstOut";case"destination-atop":return"dstATop";case"copy":return"src";case"xor":return"xor";case"multiply":return"multiply";case"screen":return"screen";case"overlay":return"overlay";case"darken":return"darken";case"lighten":case"lighter":return"lighten";case"color-dodge":return"colorDodge";case"color-burn":return"colorBurn";case"hard-light":return"hardLight";case"soft-light":return"softLight";case"difference":return"difference";case"exclusion":return"exclusion";case"hue":return"hue";case"saturation":return"saturation";case"color":return"color";case"luminosity":return"luminosity";default:return"srcOver"}},qv=e=>e==="destination-in"||e==="source-in";f();function Qv(e,t,r,n,i="outside"){if(i==="inside"){let o=n/2;return{x:o,y:o,width:Math.max(0,e-n),height:Math.max(0,t-n),radius:r===0?0:Math.max(0,r-o)}}if(i==="outside"){let o=n/2;return{x:-o,y:-o,width:e+n,height:t+n,radius:r===0?0:r+o}}return{x:0,y:0,width:e,height:t,radius:r}}f();var wc=new Map;function X(e){let t=(wc.get(e)??0)+1;return wc.set(e,t),`${e}-auto-${t}`}f();f();f();f();var Ue=class extends Error{status;body;requestId;type;constructor({message:t,status:r,body:n,requestId:i,type:o}){super(t),this.name="ApiError",this.status=r,this.body=n,this.requestId=i??"",this.type=o}},Jr=class extends Ue{constructor(t){super(t),this.name="ValidationError"}get fieldErrors(){return Array.isArray(this.body?.detail)?this.body.detail:[]}getFieldErrors(t){return this.fieldErrors.filter(r=>r.loc[r.loc.length-1]===t)}};function Qf(e,t){if(e?.error?.message)return e.error.message;if(typeof e?.detail=="string")return e.detail;if(Array.isArray(e?.detail)){let r=e.detail[0];if(r?.msg)return`${r.msg} (${(r.loc??[]).join(".")})`}return typeof e?.message=="string"?e.message:t}async function ai(e){let t=await e.text().catch(()=>""),r=t||void 0;try{r=t?JSON.parse(t):void 0}catch{}let n=typeof r=="object"&&r!==null?r:void 0,i={message:Qf(n,`${e.status} ${e.statusText}`.trim()),status:e.status,body:r,requestId:e.headers.get("x-framefields-request-id")??void 0,type:n?.error?.type};return e.status===422&&Array.isArray(n?.detail)?new Jr(i):new Ue(i)}f();f();var Ma="https://api.framefields.dev/v1/ai/proxy",vc,Sc=e=>typeof x<"u"?x.env?.[e]:void 0;function kc(e){vc=e}function Jf(){let e=vc??Sc("FRAMEFIELDS_API_KEY");if(!e)throw new Error("framefields ai: no API key. Set FRAMEFIELDS_API_KEY or call ai.config({ apiKey }). Create a key at https://framefields.dev/dashboard/keys");return e}function eh({service:e,path:t,query:r}){let n=new URLSearchParams;for(let[o,a]of Object.entries(r??{}))a!==void 0&&n.set(o,a);let i=n.size?`?${n}`:"";return`${e}/${t.replace(/^\/+/,"")}${i}`}async function Ta(e){let t={Authorization:`Key ${Jf()}`,Accept:e.accept??"application/json","x-framefields-target":eh(e)},r=e.body!==void 0;r&&(t["Content-Type"]="application/json");let n=await fetch(Sc("FRAMEFIELDS_AI_PROXY_URL")??Ma,{method:e.method??(r?"POST":"GET"),headers:t,body:r?JSON.stringify(e.body):void 0,signal:e.signal});if(!n.ok)throw await ai(n);return n}async function st(e){let t=await Ta(e);return{data:await t.json(),requestId:t.headers.get("x-framefields-request-id")??""}}var th=90*1024*1024,Pc=10*1024*1024,rh=3,nh={"image/jpeg":"jpg","image/png":"png","image/webp":"webp","video/mp4":"mp4","audio/mpeg":"mp3","audio/wav":"wav"};function ih(e,t){return"name"in e&&typeof e.name=="string"&&e.name?e.name:`${Date.now()}.${nh[t]??"bin"}`}function Mc(e,t){let r=e.type||"application/octet-stream";return st({service:"storage",path:t?"upload/initiate-multipart":"upload/initiate",body:{content_type:r,file_name:ih(e,r)}}).then(n=>n.data)}async function Ca(e,t){let r=await fetch(e,t);if(!r.ok)throw await ai(r);return r}async function oh(e,t){for(let r=1;;r++)try{return await(await Ca(e,{method:"PUT",body:t})).json()}catch(n){if(r>=rh)throw n}}async function ah(e){let t=await Mc(e,!0),r=new URL(t.upload_url),n=o=>`${r.origin}${r.pathname}/${o}${r.search}`,i=[];for(let o=0;o<e.size;o+=Pc){let a=e.slice(o,Math.min(o+Pc,e.size));i.push(await oh(n(i.length+1),a))}return await Ca(n("complete"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({parts:i.map(({partNumber:o,etag:a})=>({partNumber:o,etag:a}))})}),t.file_url}async function Tc(e){if(e.size>th)return ah(e);let t=await Mc(e,!1);return await Ca(t.upload_url,{method:"PUT",body:e,headers:{"Content-Type":e.type||"application/octet-stream"}}),t.file_url}var sh=e=>typeof e=="object"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype;async function Aa(e){if(e instanceof Blob)return await Tc(e);if(Array.isArray(e))return await Promise.all(e.map(t=>Aa(t)));if(sh(e)){let t=await Promise.all(Object.entries(e).map(async([r,n])=>[r,await Aa(n)]));return Object.fromEntries(t)}return e}var Nt={upload:Tc,transformInput:Aa};var uh=new Set([429,502,503,504]),lh=4,Ac=(e,t)=>new Promise((r,n)=>{t?.throwIfAborted();let i=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(i),n(t.reason)},{once:!0})});async function Cc(e,t){for(let r=1;;r++)try{return await e()}catch(n){if(!(n instanceof Ue&&uh.has(n.status))||r>=lh)throw n;await Ac(500*2**r,t)}}var Da=(e,t,r="")=>`${e}/requests/${encodeURIComponent(t)}${r}`;async function Dc(e,{input:t,abortSignal:r}){let{data:n}=await st({service:"queue",path:e,body:await Nt.transformInput(t)??{},signal:r});return n}function Rc(e,{requestId:t,logs:r,abortSignal:n}){return Cc(async()=>{let{data:i}=await st({service:"queue",path:Da(e,t,"/status"),query:{logs:r?"1":void 0},signal:n});return i},n)}function Oc(e,{requestId:t,abortSignal:r}){return Cc(async()=>{let{data:n}=await st({service:"queue",path:Da(e,t),signal:r});return{data:n,requestId:t}},r)}async function ch(e,{requestId:t,abortSignal:r}){await st({service:"queue",path:Da(e,t,"/cancel"),method:"PUT",signal:r})}async function Nc(e,t){let r=t.pollInterval??500;for(;;){let n=await Rc(e,t);if(t.onQueueUpdate?.(n),n.status==="COMPLETED")return n;await Ac(r,t.abortSignal)}}var Fc={submit:Dc,status:Rc,result:Oc,cancel:ch,subscribeToStatus:Nc};async function Ec(e,t){let{request_id:r}=await Dc(e,t);return t.onEnqueue?.(r),await Nc(e,{...t,requestId:r}),Oc(e,{requestId:r,abortSignal:t.abortSignal})}f();async function*dh(e){let t=new TextDecoder,r="";for await(let i of e){r+=t.decode(i,{stream:!0}).replace(/\r\n?/g,`
708
+ `;var oi=class{constructor(t){this.device=t;let r=t.createShaderModule({label:"segmentation.wgsl",code:vc});this.computePipeline=t.createComputePipeline({label:"SegmentationComputePipeline",layout:"auto",compute:{module:r,entryPoint:"computeSegmentation"}}),this.uniformBuffer=t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"segmentation_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(t,r={}){let n=t.width,i=t.height,o=r.threshold??.5,a=r.feather??.05,s=new ArrayBuffer(16),l=new Float32Array(s),c=new Uint32Array(s);l[0]=o,l[1]=a,c[2]=n,c[3]=i,this.device.queue.writeBuffer(this.uniformBuffer,0,s),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==n||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"segmentation_output_texture",size:[n,i],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let d=this.device.createCommandEncoder({label:"segmentation_command_encoder"}),m=this.device.createBindGroup({label:"segmentation_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:t.createView({label:"segmentation_input_view"})},{binding:1,resource:this.cachedOutputTexture.createView({label:"segmentation_output_view"})},{binding:2,resource:{buffer:this.uniformBuffer}}]}),p=d.beginComputePass({label:"segmentation_compute_pass"});return p.setPipeline(this.computePipeline),p.setBindGroup(0,m),p.dispatchWorkgroups(Math.ceil(n/16),Math.ceil(i/16),1),p.end(),this.device.queue.submit([d.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};var ar=class e{constructor(t){this.source=t;this.id=`tensor-${Math.random().toString(36).slice(2,9)}`}source;id;cannyOptions;depthNormalsOptions;poseSkeletonOptions;faceLandmarksOptions;segmentationOptions;opticalFlowOptions;deflickerOptions;multiplexer=new qr;cannyPipeline;depthNormalsPipeline;posePipeline;facePipeline;segmentationPipeline;opticalFlowPipeline;deflickerPipeline;prevInputTexture;static from(t){return new e(t)}canny(t={}){return this.cannyOptions=t,this}depthNormals(t={}){return this.depthNormalsOptions=t,this}poseSkeleton(t={}){return this.poseSkeletonOptions=t,this}pose(t,r={}){return this.poseSkeletonOptions={...r,landmarks:t},this}faceLandmarks(t={}){return this.faceLandmarksOptions=t,this}face(t,r={}){return this.faceLandmarksOptions={...r,landmarks:t},this}segmentation(t={}){return this.segmentationOptions=t,this}opticalFlow(t={}){return this.opticalFlowOptions=t,this}deflicker(t={}){return this.deflickerOptions=t,this}getMultiplexer(){return this.multiplexer}async execute(t,r){let n=r;if(!n&&typeof this.source?.createView=="function"&&(n=this.source),!n)throw new Error("[TensorPipeline.execute] No GPUTexture available for tensor compute execution. Pass a valid GPUTexture to execute() or initialize with a GPUTexture source.");if(this.cannyOptions){this.cannyPipeline||(this.cannyPipeline=new Zr(t));let i=this.cannyPipeline.execute(n,this.cannyOptions);this.multiplexer.set("canny",i)}if(this.depthNormalsOptions){this.depthNormalsPipeline||(this.depthNormalsPipeline=new Kr(t));let i=this.depthNormalsPipeline.execute(n,this.depthNormalsOptions);this.multiplexer.set("normals",i)}if(this.poseSkeletonOptions?.landmarks){this.posePipeline||(this.posePipeline=new Ou(t));let i=this.posePipeline.execute(this.poseSkeletonOptions.landmarks,{width:this.poseSkeletonOptions.width??n.width,height:this.poseSkeletonOptions.height??n.height,lineWidth:this.poseSkeletonOptions.lineWidth});this.multiplexer.set("poseSkeleton",i)}if(this.faceLandmarksOptions?.landmarks){this.facePipeline||(this.facePipeline=new ii(t));let i=this.facePipeline.execute(this.faceLandmarksOptions.landmarks,{width:this.faceLandmarksOptions.width??n.width,height:this.faceLandmarksOptions.height??n.height,lineWidth:this.faceLandmarksOptions.lineWidth});this.multiplexer.set("faceLandmarks",i)}if(this.segmentationOptions){this.segmentationPipeline||(this.segmentationPipeline=new oi(t));let i=this.segmentationPipeline.execute(n,this.segmentationOptions);this.multiplexer.set("segmentationMask",i)}if(this.opticalFlowOptions){this.opticalFlowPipeline||(this.opticalFlowPipeline=new co(t));let i=this.prevInputTexture??n,o=this.opticalFlowPipeline.execute(i,n,this.opticalFlowOptions);this.multiplexer.set("motionVectors",o)}if(this.deflickerOptions){this.deflickerPipeline||(this.deflickerPipeline=new mo(t));let i=this.deflickerPipeline.execute(n,this.deflickerOptions);this.multiplexer.set("deflickered",i)}return this.prevInputTexture=n,this.multiplexer.getOutputs()}toConfig(){return{canny:this.cannyOptions,depthNormals:this.depthNormalsOptions,poseSkeleton:this.poseSkeletonOptions,faceLandmarks:this.faceLandmarksOptions,segmentation:this.segmentationOptions,opticalFlow:this.opticalFlowOptions,deflicker:this.deflickerOptions}}toNode(){return{id:this.id,kind:"tensor",source:this.source,config:this.toConfig()}}destroy(){this.cannyPipeline?.destroy(),this.depthNormalsPipeline?.destroy(),this.posePipeline?.destroy(),this.facePipeline?.destroy(),this.segmentationPipeline?.destroy(),this.opticalFlowPipeline?.destroy(),this.deflickerPipeline?.destroy(),this.multiplexer.destroy()}};f();var Jv=e=>{if(!e)return"srcOver";switch(e){case"source-over":return"srcOver";case"source-in":return"srcIn";case"source-out":return"srcOut";case"source-atop":return"srcATop";case"destination-over":return"dstOver";case"destination-in":return"dstIn";case"destination-out":return"dstOut";case"destination-atop":return"dstATop";case"copy":return"src";case"xor":return"xor";case"multiply":return"multiply";case"screen":return"screen";case"overlay":return"overlay";case"darken":return"darken";case"lighten":case"lighter":return"lighten";case"color-dodge":return"colorDodge";case"color-burn":return"colorBurn";case"hard-light":return"hardLight";case"soft-light":return"softLight";case"difference":return"difference";case"exclusion":return"exclusion";case"hue":return"hue";case"saturation":return"saturation";case"color":return"color";case"luminosity":return"luminosity";default:return"srcOver"}},eS=e=>e==="destination-in"||e==="source-in";f();function nS(e,t,r,n,i="outside"){if(i==="inside"){let o=n/2;return{x:o,y:o,width:Math.max(0,e-n),height:Math.max(0,t-n),radius:r===0?0:Math.max(0,r-o)}}if(i==="outside"){let o=n/2;return{x:-o,y:-o,width:e+n,height:t+n,radius:r===0?0:r+o}}return{x:0,y:0,width:e,height:t,radius:r}}f();var Sc=new Map;function X(e){let t=(Sc.get(e)??0)+1;return Sc.set(e,t),`${e}-auto-${t}`}f();f();f();f();var Ue=class extends Error{status;body;requestId;type;constructor({message:t,status:r,body:n,requestId:i,type:o}){super(t),this.name="ApiError",this.status=r,this.body=n,this.requestId=i??"",this.type=o}},Jr=class extends Ue{constructor(t){super(t),this.name="ValidationError"}get fieldErrors(){return Array.isArray(this.body?.detail)?this.body.detail:[]}getFieldErrors(t){return this.fieldErrors.filter(r=>r.loc[r.loc.length-1]===t)}};function nh(e,t){if(e?.error?.message)return e.error.message;if(typeof e?.detail=="string")return e.detail;if(Array.isArray(e?.detail)){let r=e.detail[0];if(r?.msg)return`${r.msg} (${(r.loc??[]).join(".")})`}return typeof e?.message=="string"?e.message:t}async function ai(e){let t=await e.text().catch(()=>""),r=t||void 0;try{r=t?JSON.parse(t):void 0}catch{}let n=typeof r=="object"&&r!==null?r:void 0,i={message:nh(n,`${e.status} ${e.statusText}`.trim()),status:e.status,body:r,requestId:e.headers.get("x-framefields-request-id")??void 0,type:n?.error?.type};return e.status===422&&Array.isArray(n?.detail)?new Jr(i):new Ue(i)}f();f();var Ma="https://api.framefields.dev/v1/ai/proxy",kc,Pc=e=>typeof x<"u"?x.env?.[e]:void 0;function Mc(e){kc=e}function ih(){let e=kc??Pc("FRAMEFIELDS_API_KEY");if(!e)throw new Error("framefields ai: no API key. Set FRAMEFIELDS_API_KEY or call ai.config({ apiKey }). Create a key at https://framefields.dev/dashboard/keys");return e}function oh({service:e,path:t,query:r}){let n=new URLSearchParams;for(let[o,a]of Object.entries(r??{}))a!==void 0&&n.set(o,a);let i=n.size?`?${n}`:"";return`${e}/${t.replace(/^\/+/,"")}${i}`}async function Ta(e){let t={Authorization:`Key ${ih()}`,Accept:e.accept??"application/json","x-framefields-target":oh(e)},r=e.body!==void 0;r&&(t["Content-Type"]="application/json");let n=await fetch(Pc("FRAMEFIELDS_AI_PROXY_URL")??Ma,{method:e.method??(r?"POST":"GET"),headers:t,body:r?JSON.stringify(e.body):void 0,signal:e.signal});if(!n.ok)throw await ai(n);return n}async function ut(e){let t=await Ta(e);return{data:await t.json(),requestId:t.headers.get("x-framefields-request-id")??""}}var ah=90*1024*1024,Tc=10*1024*1024,sh=3,uh={"image/jpeg":"jpg","image/png":"png","image/webp":"webp","video/mp4":"mp4","audio/mpeg":"mp3","audio/wav":"wav"};function lh(e,t){return"name"in e&&typeof e.name=="string"&&e.name?e.name:`${Date.now()}.${uh[t]??"bin"}`}function Ac(e,t){let r=e.type||"application/octet-stream";return ut({service:"storage",path:t?"upload/initiate-multipart":"upload/initiate",body:{content_type:r,file_name:lh(e,r)}}).then(n=>n.data)}async function Ca(e,t){let r=await fetch(e,t);if(!r.ok)throw await ai(r);return r}async function ch(e,t){for(let r=1;;r++)try{return await(await Ca(e,{method:"PUT",body:t})).json()}catch(n){if(r>=sh)throw n}}async function dh(e){let t=await Ac(e,!0),r=new URL(t.upload_url),n=o=>`${r.origin}${r.pathname}/${o}${r.search}`,i=[];for(let o=0;o<e.size;o+=Tc){let a=e.slice(o,Math.min(o+Tc,e.size));i.push(await ch(n(i.length+1),a))}return await Ca(n("complete"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({parts:i.map(({partNumber:o,etag:a})=>({partNumber:o,etag:a}))})}),t.file_url}async function Cc(e){if(e.size>ah)return dh(e);let t=await Ac(e,!1);return await Ca(t.upload_url,{method:"PUT",body:e,headers:{"Content-Type":e.type||"application/octet-stream"}}),t.file_url}var mh=e=>typeof e=="object"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype;async function Aa(e){if(e instanceof Blob)return await Cc(e);if(Array.isArray(e))return await Promise.all(e.map(t=>Aa(t)));if(mh(e)){let t=await Promise.all(Object.entries(e).map(async([r,n])=>[r,await Aa(n)]));return Object.fromEntries(t)}return e}var Nt={upload:Cc,transformInput:Aa};var ph=new Set([429,502,503,504]),fh=4,Dc=(e,t)=>new Promise((r,n)=>{t?.throwIfAborted();let i=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(i),n(t.reason)},{once:!0})});async function Oc(e,t){for(let r=1;;r++)try{return await e()}catch(n){if(!(n instanceof Ue&&ph.has(n.status))||r>=fh)throw n;await Dc(500*2**r,t)}}var Da=(e,t,r="")=>`${e}/requests/${encodeURIComponent(t)}${r}`;async function Rc(e,{input:t,abortSignal:r}){let{data:n}=await ut({service:"queue",path:e,body:await Nt.transformInput(t)??{},signal:r});return n}function Nc(e,{requestId:t,logs:r,abortSignal:n}){return Oc(async()=>{let{data:i}=await ut({service:"queue",path:Da(e,t,"/status"),query:{logs:r?"1":void 0},signal:n});return i},n)}function Fc(e,{requestId:t,abortSignal:r}){return Oc(async()=>{let{data:n}=await ut({service:"queue",path:Da(e,t),signal:r});return{data:n,requestId:t}},r)}async function hh(e,{requestId:t,abortSignal:r}){await ut({service:"queue",path:Da(e,t,"/cancel"),method:"PUT",signal:r})}async function Ec(e,t){let r=t.pollInterval??500;for(;;){let n=await Nc(e,t);if(t.onQueueUpdate?.(n),n.status==="COMPLETED")return n;await Dc(r,t.abortSignal)}}var Bc={submit:Rc,status:Nc,result:Fc,cancel:hh,subscribeToStatus:Ec};async function Lc(e,t){let{request_id:r}=await Rc(e,t);return t.onEnqueue?.(r),await Ec(e,{...t,requestId:r}),Fc(e,{requestId:r,abortSignal:t.abortSignal})}f();async function*gh(e){let t=new TextDecoder,r="";for await(let i of e){r+=t.decode(i,{stream:!0}).replace(/\r\n?/g,`
709
709
  `);let o=r.indexOf(`
710
710
 
711
- `);for(;o!==-1;){let a=r.slice(0,o);r=r.slice(o+2);let s=Bc(a);s&&(yield s),o=r.indexOf(`
711
+ `);for(;o!==-1;){let a=r.slice(0,o);r=r.slice(o+2);let s=Ic(a);s&&(yield s),o=r.indexOf(`
712
712
 
713
- `)}}let n=Bc(r);n&&(yield n)}function Bc(e){let t="message",r=[];for(let n of e.split(`
713
+ `)}}let n=Ic(r);n&&(yield n)}function Ic(e){let t="message",r=[];for(let n of e.split(`
714
714
  `))n.startsWith("data:")?r.push(n.slice(5).replace(/^ /,"")):n.startsWith("event:")&&(t=n.slice(6).trim());return r.length?{event:t,data:r.join(`
715
- `)}:null}async function*mh(e,t){for await(let{event:r,data:n}of dh(e)){let i=JSON.parse(n);if(r==="error")throw new Ue({message:"The model stream ended with an error",status:500,body:i,requestId:t});yield i}}async function Lc(e,{input:t,abortSignal:r}){let n=new AbortController,i=r?AbortSignal.any([r,n.signal]):n.signal,o=await Ta({service:"run",path:`${e}/stream`,body:await Nt.transformInput(t)??{},accept:"text/event-stream",signal:i}),a=o.headers.get("x-framefields-request-id")??"";if(!o.body)throw new Ue({message:"Empty stream",status:502,requestId:a});let s=mh(o.body,a),u,c;async function*d(){for await(let h of s)u=h,yield h}let m=d(),p=async()=>{let h=await m.next();for(;!h.done;)h=await m.next();if(u===void 0)throw new Ue({message:"Stream had no output",status:502,requestId:a});return u};return{requestId:a,[Symbol.asyncIterator]:()=>m,done:()=>(c??=p(),c),abort:()=>n.abort()}}async function ph(e,{input:t,abortSignal:r}){return st({service:"run",path:e,body:await Nt.transformInput(t)??{},signal:r})}var fh={config(e){kc(e.apiKey)},run:ph,subscribe:Ec,stream:Lc,queue:Fc,storage:Nt};f();function hh(e,...t){let r=[];for(let n=0;n<e.length;n++){let i=e[n];if(i&&r.push({text:i}),n<t.length){let o=t[n];if(o==null)continue;if(Array.isArray(o))for(let a of o)typeof a=="string"?a&&r.push({text:a}):a&&typeof a=="object"&&"text"in a&&r.push(a);else typeof o=="object"&&"text"in o?r.push(o):typeof o=="object"&&"get"in o&&typeof o.get=="function"?r.push({text:o}):r.push({text:String(o)})}}return r}function gh(e,t={}){return{text:e,...t}}function bh(e,t={}){return{text:e,fontWeight:t.fontWeight??700,...t}}function yh(e,t={}){return{text:e,fontStyle:"italic",...t}}function xh(e,t={}){return{text:e,fill:t.fill??"#6366f1",...t}}function wh(e,t,r={}){return{text:e,fill:t,...r}}function vh(e,t,r={}){return{text:e,fontSize:t,...r}}function Sh(e,t={}){let{bg:r,fill:n,radius:i,paddingX:o,paddingY:a,...s}=t;return{text:e,fill:n,mark:{background:r??"#6366f133",borderRadius:i??4,paddingX:o??6,paddingY:a??2},...s}}function kh(e,t={}){return{text:e,baselineShift:t.baselineShift??-8,...t}}function Ph(e,t={}){return{text:e,baselineShift:t.baselineShift??6,...t}}function Mh(e,t={}){return{text:e,fontFamily:t.fontFamily??"JetBrains Mono",mark:t.mark??{background:"#ffffff18",borderRadius:4,paddingX:6,paddingY:2},...t}}function si(e){if(typeof e=="string")return{text:e};if(!Array.isArray(e))return{text:String(e)};let t=[],r="";for(let n of e)if(typeof n=="string")n&&(t.push({text:n}),r+=n);else if(n&&typeof n=="object"&&"text"in n){let i=n;t.push(i);let o=typeof i.text=="string"?i.text:i.text&&typeof i.text=="object"&&"get"in i.text&&typeof i.text.get=="function"?String(i.text.get()):String(i.text??"");r+=o}return{text:r,spans:t.length>0?t:void 0}}function Th(e){if(!e||!e.includes("<"))return[{text:e}];let t=[],r=/<(\/?[a-zA-Z0-9_-]+)([^>]*)>/g,n=0,i=[],o=()=>{let s={};for(let u of i)Object.assign(s,u.style);return s};for(;;){let s=r.exec(e);if(!s)break;let u=e.slice(n,s.index);u&&t.push({text:u,...o()}),n=s.index+s[0].length;let c=s[1].toLowerCase(),d=s[2];if(c.startsWith("/")){let m=c.slice(1);for(let p=i.length-1;p>=0;p--)if(i[p].tag===m){i.splice(p,1);break}}else{let m={},p=/([a-zA-Z0-9_-]+)=["']([^"']*)["']/g;for(;;){let g=p.exec(d);if(!g)break;m[g[1].toLowerCase()]=g[2]}let h={};if(c==="b"||c==="strong")h.fontWeight=700,(m.color||m.fill)&&(h.fill=m.color??m.fill);else if(c==="i"||c==="em")h.fontStyle="italic",(m.color||m.fill)&&(h.fill=m.color??m.fill);else if(c==="accent")h.fill="#6366f1";else if(c==="color")h.fill=m.value??m.hex??m.fill;else if(c==="size"){let g=parseFloat(m.value??m.px??m.pt??"0");g>0&&(h.fontSize=g)}else if(c==="mark")h.mark={background:m.bg??m.background??"#6366f133",borderRadius:m.radius?parseFloat(m.radius):4,paddingX:m.paddingx?parseFloat(m.paddingx):6,paddingY:m.paddingy?parseFloat(m.paddingy):2},(m.color||m.fill)&&(h.fill=m.color??m.fill);else if(c==="sup")h.baselineShift=-8;else if(c==="sub")h.baselineShift=6;else if(c==="code")h.fontFamily="JetBrains Mono",h.mark={background:m.bg??"#ffffff18",borderRadius:4,paddingX:6,paddingY:2};else if(c==="span"){if((m.color||m.fill)&&(h.fill=m.color??m.fill),m.fontfamily&&(h.fontFamily=m.fontfamily),m.fontsize&&(h.fontSize=parseFloat(m.fontsize)),m.fontweight){let g=parseInt(m.fontweight,10);h.fontWeight=Number.isNaN(g)?m.fontweight:g}(m.fontstyle==="italic"||m.fontstyle==="normal")&&(h.fontStyle=m.fontstyle),m.letterspacing&&(h.letterSpacing=parseFloat(m.letterspacing)),m.baselineshift&&(h.baselineShift=parseFloat(m.baselineshift)),m.opacity&&(h.opacity=parseFloat(m.opacity))}i.push({tag:c,style:h})}}let a=e.slice(n);return a&&t.push({text:a,...o()}),t}f();f();f();f();f();f();function Ic(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Ft(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Xe(e){return e=Ft(Math.abs(e)),e?e[1]:NaN}f();function jc(e,t){return function(r,n){for(var i=r.length,o=[],a=0,s=e[0],u=0;i>0&&s>0&&(u+s+1>n&&(s=Math.max(1,n-u)),o.push(r.substring(i-=s,i+s)),!((u+=s+1)>n));)s=e[a=(a+1)%e.length];return o.reverse().join(t)}}f();function zc(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}f();var Ah=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function bt(e){if(!(t=Ah.exec(e)))throw new Error("invalid format: "+e);var t;return new ui({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}bt.prototype=ui.prototype;function ui(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}ui.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};f();function _c(e){e:for(var t=e.length,r=1,n=-1,i;r<t;++r)switch(e[r]){case".":n=i=r;break;case"0":n===0&&(n=r),i=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}f();f();var en;function $c(e,t){var r=Ft(e,t);if(!r)return en=void 0,e.toPrecision(t);var n=r[0],i=r[1],o=i-(en=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=n.length;return o===a?n:o>a?n+new Array(o-a+1).join("0"):o>0?n.slice(0,o)+"."+n.slice(o):"0."+new Array(1-o).join("0")+Ft(e,Math.max(0,t+o-1))[0]}f();function Ra(e,t){var r=Ft(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var Oa={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:Ic,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Ra(e*100,t),r:Ra,s:$c,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};f();function Na(e){return e}var Uc=Array.prototype.map,Vc=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Gc(e){var t=e.grouping===void 0||e.thousands===void 0?Na:jc(Uc.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",o=e.numerals===void 0?Na:zc(Uc.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",u=e.nan===void 0?"NaN":e.nan+"";function c(m,p){m=bt(m);var h=m.fill,g=m.align,b=m.sign,y=m.symbol,v=m.zero,P=m.width,A=m.comma,w=m.precision,T=m.trim,S=m.type;S==="n"?(A=!0,S="g"):Oa[S]||(w===void 0&&(w=12),T=!0,S="g"),(v||h==="0"&&g==="=")&&(v=!0,h="0",g="=");var C=(p&&p.prefix!==void 0?p.prefix:"")+(y==="$"?r:y==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():""),O=(y==="$"?n:/[%p]/.test(S)?a:"")+(p&&p.suffix!==void 0?p.suffix:""),z=Oa[S],W=/[defgprs%]/.test(S);w=w===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function _(L){var k=C,M=O,H,q,V;if(S==="c")M=z(L)+M,L="";else{L=+L;var j=L<0||1/L<0;if(L=isNaN(L)?u:z(Math.abs(L),w),T&&(L=_c(L)),j&&+L==0&&b!=="+"&&(j=!1),k=(j?b==="("?b:s:b==="-"||b==="("?"":b)+k,M=(S==="s"&&!isNaN(L)&&en!==void 0?Vc[8+en/3]:"")+M+(j&&b==="("?")":""),W){for(H=-1,q=L.length;++H<q;)if(V=L.charCodeAt(H),48>V||V>57){M=(V===46?i+L.slice(H+1):L.slice(H))+M,L=L.slice(0,H);break}}}A&&!v&&(L=t(L,1/0));var K=k.length+L.length+M.length,re=K<P?new Array(P-K+1).join(h):"";switch(A&&v&&(L=t(re+L,re.length?P-M.length:1/0),re=""),g){case"<":L=k+L+M+re;break;case"=":L=k+re+L+M;break;case"^":L=re.slice(0,K=re.length>>1)+k+L+M+re.slice(K);break;default:L=re+k+L+M;break}return o(L)}return _.toString=function(){return m+""},_}function d(m,p){var h=Math.max(-8,Math.min(8,Math.floor(Xe(p)/3)))*3,g=Math.pow(10,-h),b=c((m=bt(m),m.type="f",m),{suffix:Vc[8+h/3]});return function(y){return b(g*y)}}return{format:c,formatPrefix:d}}var li,sr,ci;Fa({thousands:",",grouping:[3],currency:["$",""]});function Fa(e){return li=Gc(e),sr=li.format,ci=li.formatPrefix,li}f();function Ea(e){return Math.max(0,-Xe(Math.abs(e)))}f();function Ba(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Xe(t)/3)))*3-Xe(Math.abs(e)))}f();function La(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Xe(t)-Xe(e))+1}f();f();f();f();f();function Et(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}f();f();function Ia(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Bt(e){let t,r,n;e.length!==2?(t=Et,r=(s,u)=>Et(e(s),u),n=(s,u)=>e(s)-u):(t=e===Et||e===Ia?e:Ch,r=e,n=e);function i(s,u,c=0,d=s.length){if(c<d){if(t(u,u)!==0)return d;do{let m=c+d>>>1;r(s[m],u)<0?c=m+1:d=m}while(c<d)}return c}function o(s,u,c=0,d=s.length){if(c<d){if(t(u,u)!==0)return d;do{let m=c+d>>>1;r(s[m],u)<=0?c=m+1:d=m}while(c<d)}return c}function a(s,u,c=0,d=s.length){let m=i(s,u,c,d-1);return m>c&&n(s[m-1],u)>-n(s[m],u)?m-1:m}return{left:i,center:a,right:o}}function Ch(){return 0}f();function ja(e){return e===null?NaN:+e}var Wc=Bt(Et),Hc=Wc.right,Dh=Wc.left,Rh=Bt(ja).center,za=Hc;f();var ur=class extends Map{constructor(t,r=Fh){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(Yc(this,t))}has(t){return super.has(Yc(this,t))}set(t,r){return super.set(Oh(this,t),r)}delete(t){return super.delete(Nh(this,t))}};function Yc({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Oh({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Nh({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function Fh(e){return e!==null&&typeof e=="object"?e.valueOf():e}f();var Eh=Math.sqrt(50),Bh=Math.sqrt(10),Lh=Math.sqrt(2);function di(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),o=n/Math.pow(10,i),a=o>=Eh?10:o>=Bh?5:o>=Lh?2:1,s,u,c;return i<0?(c=Math.pow(10,-i)/a,s=Math.round(e*c),u=Math.round(t*c),s/c<e&&++s,u/c>t&&--u,c=-c):(c=Math.pow(10,i)*a,s=Math.round(e/c),u=Math.round(t/c),s*c<e&&++s,u*c>t&&--u),u<s&&.5<=r&&r<2?di(e,t,r*2):[s,u,c]}function mi(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];let n=t<e,[i,o,a]=n?di(t,e,r):di(e,t,r);if(!(o>=i))return[];let s=o-i+1,u=new Array(s);if(n)if(a<0)for(let c=0;c<s;++c)u[c]=(o-c)/-a;else for(let c=0;c<s;++c)u[c]=(o-c)*a;else if(a<0)for(let c=0;c<s;++c)u[c]=(i+c)/-a;else for(let c=0;c<s;++c)u[c]=(i+c)*a;return u}function tn(e,t,r){return t=+t,e=+e,r=+r,di(e,t,r)[2]}function lr(e,t,r){t=+t,e=+e,r=+r;let n=t<e,i=n?tn(t,e,r):tn(e,t,r);return(n?-1:1)*(i<0?1/-i:i)}f();function pi(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,o=new Array(i);++n<i;)o[n]=e+n*r;return o}f();function yt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}f();var Xc=Symbol("implicit");function fi(){var e=new ur,t=[],r=[],n=Xc;function i(o){let a=e.get(o);if(a===void 0){if(n!==Xc)return n;e.set(o,a=t.push(o)-1)}return r[a%r.length]}return i.domain=function(o){if(!arguments.length)return t.slice();t=[],e=new ur;for(let a of o)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(o){return arguments.length?(r=Array.from(o),i):r.slice()},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return fi(t,r).unknown(n)},yt.apply(i,arguments),i}function rn(){var e=fi().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,o,a,s=!1,u=0,c=0,d=.5;delete e.unknown;function m(){var p=t().length,h=i<n,g=h?i:n,b=h?n:i;o=(b-g)/Math.max(1,p-u+c*2),s&&(o=Math.floor(o)),g+=(b-g-o*(p-u))*d,a=o*(1-u),s&&(g=Math.round(g),a=Math.round(a));var y=pi(p).map(function(v){return g+o*v});return r(h?y.reverse():y)}return e.domain=function(p){return arguments.length?(t(p),m()):t()},e.range=function(p){return arguments.length?([n,i]=p,n=+n,i=+i,m()):[n,i]},e.rangeRound=function(p){return[n,i]=p,n=+n,i=+i,s=!0,m()},e.bandwidth=function(){return a},e.step=function(){return o},e.round=function(p){return arguments.length?(s=!!p,m()):s},e.padding=function(p){return arguments.length?(u=Math.min(1,c=+p),m()):u},e.paddingInner=function(p){return arguments.length?(u=Math.min(1,p),m()):u},e.paddingOuter=function(p){return arguments.length?(c=+p,m()):c},e.align=function(p){return arguments.length?(d=Math.max(0,Math.min(1,p)),m()):d},e.copy=function(){return rn(t(),[n,i]).round(s).paddingInner(u).paddingOuter(c).align(d)},yt.apply(m(),arguments)}f();f();f();f();f();f();f();function hi(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function _a(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function an(){}var nn=.7,yi=1/nn,cr="\\s*([+-]?\\d+)\\s*",on="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",qe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ih=/^#([0-9a-f]{3,8})$/,jh=new RegExp(`^rgb\\(${cr},${cr},${cr}\\)$`),zh=new RegExp(`^rgb\\(${qe},${qe},${qe}\\)$`),_h=new RegExp(`^rgba\\(${cr},${cr},${cr},${on}\\)$`),$h=new RegExp(`^rgba\\(${qe},${qe},${qe},${on}\\)$`),Uh=new RegExp(`^hsl\\(${on},${qe},${qe}\\)$`),Vh=new RegExp(`^hsla\\(${on},${qe},${qe},${on}\\)$`),qc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};hi(an,xt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Zc,formatHex:Zc,formatHex8:Gh,formatHsl:Wh,formatRgb:Kc,toString:Kc});function Zc(){return this.rgb().formatHex()}function Gh(){return this.rgb().formatHex8()}function Wh(){return nd(this).formatHsl()}function Kc(){return this.rgb().formatRgb()}function xt(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Ih.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?Qc(t):r===3?new Ie(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?gi(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?gi(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=jh.exec(e))?new Ie(t[1],t[2],t[3],1):(t=zh.exec(e))?new Ie(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=_h.exec(e))?gi(t[1],t[2],t[3],t[4]):(t=$h.exec(e))?gi(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Uh.exec(e))?td(t[1],t[2]/100,t[3]/100,1):(t=Vh.exec(e))?td(t[1],t[2]/100,t[3]/100,t[4]):qc.hasOwnProperty(e)?Qc(qc[e]):e==="transparent"?new Ie(NaN,NaN,NaN,0):null}function Qc(e){return new Ie(e>>16&255,e>>8&255,e&255,1)}function gi(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ie(e,t,r,n)}function Hh(e){return e instanceof an||(e=xt(e)),e?(e=e.rgb(),new Ie(e.r,e.g,e.b,e.opacity)):new Ie}function dr(e,t,r,n){return arguments.length===1?Hh(e):new Ie(e,t,r,n??1)}function Ie(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}hi(Ie,dr,_a(an,{brighter(e){return e=e==null?yi:Math.pow(yi,e),new Ie(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?nn:Math.pow(nn,e),new Ie(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ie(It(this.r),It(this.g),It(this.b),xi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Jc,formatHex:Jc,formatHex8:Yh,formatRgb:ed,toString:ed}));function Jc(){return`#${Lt(this.r)}${Lt(this.g)}${Lt(this.b)}`}function Yh(){return`#${Lt(this.r)}${Lt(this.g)}${Lt(this.b)}${Lt((isNaN(this.opacity)?1:this.opacity)*255)}`}function ed(){let e=xi(this.opacity);return`${e===1?"rgb(":"rgba("}${It(this.r)}, ${It(this.g)}, ${It(this.b)}${e===1?")":`, ${e})`}`}function xi(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function It(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Lt(e){return e=It(e),(e<16?"0":"")+e.toString(16)}function td(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ve(e,t,r,n)}function nd(e){if(e instanceof Ve)return new Ve(e.h,e.s,e.l,e.opacity);if(e instanceof an||(e=xt(e)),!e)return new Ve;if(e instanceof Ve)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),o=Math.max(t,r,n),a=NaN,s=o-i,u=(o+i)/2;return s?(t===o?a=(r-n)/s+(r<n)*6:r===o?a=(n-t)/s+2:a=(t-r)/s+4,s/=u<.5?o+i:2-o-i,a*=60):s=u>0&&u<1?0:a,new Ve(a,s,u,e.opacity)}function id(e,t,r,n){return arguments.length===1?nd(e):new Ve(e,t,r,n??1)}function Ve(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}hi(Ve,id,_a(an,{brighter(e){return e=e==null?yi:Math.pow(yi,e),new Ve(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?nn:Math.pow(nn,e),new Ve(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Ie($a(e>=240?e-240:e+120,i,n),$a(e,i,n),$a(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Ve(rd(this.h),bi(this.s),bi(this.l),xi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=xi(this.opacity);return`${e===1?"hsl(":"hsla("}${rd(this.h)}, ${bi(this.s)*100}%, ${bi(this.l)*100}%${e===1?")":`, ${e})`}`}}));function rd(e){return e=(e||0)%360,e<0?e+360:e}function bi(e){return Math.max(0,Math.min(1,e||0))}function $a(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}f();f();function Ua(e,t,r,n,i){var o=e*e,a=o*e;return((1-3*e+3*o-a)*t+(4-6*o+3*a)*r+(1+3*e+3*o-3*a)*n+a*i)/6}function od(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],o=e[n+1],a=n>0?e[n-1]:2*i-o,s=n<t-1?e[n+2]:2*o-i;return Ua((r-n/t)*t,a,i,o,s)}}f();function ad(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],o=e[n%t],a=e[(n+1)%t],s=e[(n+2)%t];return Ua((r-n/t)*t,i,o,a,s)}}f();f();var sn=e=>()=>e;function Xh(e,t){return function(r){return e+r*t}}function qh(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function sd(e){return(e=+e)==1?wi:function(t,r){return r-t?qh(t,r,e):sn(isNaN(t)?r:t)}}function wi(e,t){var r=t-e;return r?Xh(e,r):sn(isNaN(e)?t:e)}var Va=(function e(t){var r=sd(t);function n(i,o){var a=r((i=dr(i)).r,(o=dr(o)).r),s=r(i.g,o.g),u=r(i.b,o.b),c=wi(i.opacity,o.opacity);return function(d){return i.r=a(d),i.g=s(d),i.b=u(d),i.opacity=c(d),i+""}}return n.gamma=e,n})(1);function ud(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),o=new Array(r),a,s;for(a=0;a<r;++a)s=dr(t[a]),n[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return n=e(n),i=e(i),o=e(o),s.opacity=1,function(u){return s.r=n(u),s.g=i(u),s.b=o(u),s+""}}}var $k=ud(od),Uk=ud(ad);f();f();function ld(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(o){for(i=0;i<r;++i)n[i]=e[i]*(1-o)+t[i]*o;return n}}function cd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function dd(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),o=new Array(r),a;for(a=0;a<n;++a)i[a]=jt(e[a],t[a]);for(;a<r;++a)o[a]=t[a];return function(s){for(a=0;a<n;++a)o[a]=i[a](s);return o}}f();function md(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}f();function wt(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}f();function pd(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=jt(e[i],t[i]):n[i]=t[i];return function(o){for(i in r)n[i]=r[i](o);return n}}f();var Wa=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ga=new RegExp(Wa.source,"g");function Zh(e){return function(){return e}}function Kh(e){return function(t){return e(t)+""}}function fd(e,t){var r=Wa.lastIndex=Ga.lastIndex=0,n,i,o,a=-1,s=[],u=[];for(e=e+"",t=t+"";(n=Wa.exec(e))&&(i=Ga.exec(t));)(o=i.index)>r&&(o=t.slice(r,o),s[a]?s[a]+=o:s[++a]=o),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,u.push({i:a,x:wt(n,i)})),r=Ga.lastIndex;return r<t.length&&(o=t.slice(r),s[a]?s[a]+=o:s[++a]=o),s.length<2?u[0]?Kh(u[0].x):Zh(t):(t=u.length,function(c){for(var d=0,m;d<t;++d)s[(m=u[d]).i]=m.x(c);return s.join("")})}function jt(e,t){var r=typeof t,n;return t==null||r==="boolean"?sn(t):(r==="number"?wt:r==="string"?(n=xt(t))?(t=n,Va):fd:t instanceof xt?Va:t instanceof Date?md:cd(t)?ld:Array.isArray(t)?dd:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?pd:wt)(e,t)}f();function Ha(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}f();function Ya(e){return function(){return e}}f();function Xa(e){return+e}var hd=[0,1];function mr(e){return e}function qa(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:Ya(isNaN(t)?NaN:.5)}function Qh(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Jh(e,t,r){var n=e[0],i=e[1],o=t[0],a=t[1];return i<n?(n=qa(i,n),o=r(a,o)):(n=qa(n,i),o=r(o,a)),function(s){return o(n(s))}}function eg(e,t,r){var n=Math.min(e.length,t.length)-1,i=new Array(n),o=new Array(n),a=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++a<n;)i[a]=qa(e[a],e[a+1]),o[a]=r(t[a],t[a+1]);return function(s){var u=za(e,s,1,n)-1;return o[u](i[u](s))}}function vi(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function tg(){var e=hd,t=hd,r=jt,n,i,o,a=mr,s,u,c;function d(){var p=Math.min(e.length,t.length);return a!==mr&&(a=Qh(e[0],e[p-1])),s=p>2?eg:Jh,u=c=null,m}function m(p){return p==null||isNaN(p=+p)?o:(u||(u=s(e.map(n),t,r)))(n(a(p)))}return m.invert=function(p){return a(i((c||(c=s(t,e.map(n),wt)))(p)))},m.domain=function(p){return arguments.length?(e=Array.from(p,Xa),d()):e.slice()},m.range=function(p){return arguments.length?(t=Array.from(p),d()):t.slice()},m.rangeRound=function(p){return t=Array.from(p),r=Ha,d()},m.clamp=function(p){return arguments.length?(a=p?!0:mr,d()):a!==mr},m.interpolate=function(p){return arguments.length?(r=p,d()):r},m.unknown=function(p){return arguments.length?(o=p,m):o},function(p,h){return n=p,i=h,d()}}function un(){return tg()(mr,mr)}f();function Za(e,t,r,n){var i=lr(e,t,r),o;switch(n=bt(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(o=Ba(i,a))&&(n.precision=o),ci(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=La(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=Ea(i))&&(n.precision=o-(n.type==="%")*2);break}}return sr(n)}function rg(e){var t=e.domain;return e.ticks=function(r){var n=t();return mi(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return Za(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,o=n.length-1,a=n[i],s=n[o],u,c,d=10;for(s<a&&(c=a,a=s,s=c,c=i,i=o,o=c);d-- >0;){if(c=tn(a,s,r),c===u)return n[i]=a,n[o]=s,t(n);if(c>0)a=Math.floor(a/c)*c,s=Math.ceil(s/c)*c;else if(c<0)a=Math.ceil(a*c)/c,s=Math.floor(s*c)/c;else break;u=c}return e},e}function pr(){var e=un();return e.copy=function(){return vi(e,pr())},yt.apply(e,arguments),rg(e)}f();function Ka(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],o=e[n],a;return o<i&&(a=r,r=n,n=a,a=i,i=o,o=a),e[r]=t.floor(i),e[n]=t.ceil(o),e}f();f();f();var Qa=new Date,Ja=new Date;function le(e,t,r,n){function i(o){return e(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(e(o=new Date(+o)),o),i.ceil=o=>(e(o=new Date(o-1)),t(o,1),e(o),o),i.round=o=>{let a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=(o,a)=>(t(o=new Date(+o),a==null?1:Math.floor(a)),o),i.range=(o,a,s)=>{let u=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return u;let c;do u.push(c=new Date(+o)),t(o,s),e(o);while(c<o&&o<a);return u},i.filter=o=>le(a=>{if(a>=a)for(;e(a),!o(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!o(a););else for(;--s>=0;)for(;t(a,1),!o(a););}),r&&(i.count=(o,a)=>(Qa.setTime(+o),Ja.setTime(+a),e(Qa),e(Ja),Math.floor(r(Qa,Ja))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(n?a=>n(a)%o===0:a=>i.count(0,a)%o===0):i)),i}f();var ln=le(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ln.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?le(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ln);var qP=ln.range;f();var Ze=le(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),gd=Ze.range;f();var Si=le(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),ng=Si.range,fr=le(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),ig=fr.range;f();var ki=le(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),og=ki.range,hr=le(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),ag=hr.range;f();var $t=le(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),sg=$t.range,Ut=le(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),ug=Ut.range,Pi=le(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),lg=Pi.range;f();function Vt(e){return le(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var Gt=Vt(0),gr=Vt(1),yd=Vt(2),xd=Vt(3),vt=Vt(4),wd=Vt(5),vd=Vt(6),Sd=Gt.range,cg=gr.range,dg=yd.range,mg=xd.range,pg=vt.range,fg=wd.range,hg=vd.range;function Wt(e){return le(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var ut=Wt(0),br=Wt(1),kd=Wt(2),Pd=Wt(3),St=Wt(4),Md=Wt(5),Td=Wt(6),Ad=ut.range,gg=br.range,bg=kd.range,yg=Pd.range,xg=St.range,wg=Md.range,vg=Td.range;f();var Mi=le(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),Sg=Mi.range,yr=le(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),kg=yr.range;f();var Ge=le(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Ge.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:le(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var Pg=Ge.range,ze=le(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());ze.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:le(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var Mg=ze.range;f();function Dd(e,t,r,n,i,o){let a=[[Ze,1,1e3],[Ze,5,5*1e3],[Ze,15,15*1e3],[Ze,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(c,d,m){let p=d<c;p&&([c,d]=[d,c]);let h=m&&typeof m.range=="function"?m:u(c,d,m),g=h?h.range(c,+d+1):[];return p?g.reverse():g}function u(c,d,m){let p=Math.abs(d-c)/m,h=Bt(([,,y])=>y).right(a,p);if(h===a.length)return e.every(lr(c/31536e6,d/31536e6,m));if(h===0)return ln.every(Math.max(lr(c,d,m),1));let[g,b]=a[p/a[h-1][2]<a[h][2]/p?h-1:h];return g.every(b)}return[s,u]}var[es,ts]=Dd(ze,yr,ut,Pi,hr,fr),[Ag,Cg]=Dd(Ge,Mi,Gt,$t,ki,Si);f();f();f();function rs(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function ns(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function dn(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function is(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,o=e.days,a=e.shortDays,s=e.months,u=e.shortMonths,c=mn(i),d=pn(i),m=mn(o),p=pn(o),h=mn(a),g=pn(a),b=mn(s),y=pn(s),v=mn(u),P=pn(u),A={a:V,A:j,b:K,B:re,c:null,d:Bd,e:Bd,f:Kg,g:sb,G:lb,H:Xg,I:qg,j:Zg,L:_d,m:Qg,M:Jg,p:de,q:oe,Q:jd,s:zd,S:eb,u:tb,U:rb,V:nb,w:ib,W:ob,x:null,X:null,y:ab,Y:ub,Z:cb,"%":Id},w={a:xe,A:ke,b:E,B:I,c:null,d:Ld,e:Ld,f:fb,g:Pb,G:Tb,H:db,I:mb,j:pb,L:Ud,m:hb,M:gb,p:Y,q:ae,Q:jd,s:zd,S:bb,u:yb,U:xb,V:wb,w:vb,W:Sb,x:null,X:null,y:kb,Y:Mb,Z:Ab,"%":Id},T={a:W,A:_,b:L,B:k,c:M,d:Fd,e:Fd,f:Gg,g:Nd,G:Od,H:Ed,I:Ed,j:_g,L:Vg,m:zg,M:$g,p:z,q:jg,Q:Hg,s:Yg,S:Ug,u:Fg,U:Eg,V:Bg,w:Ng,W:Lg,x:H,X:q,y:Nd,Y:Od,Z:Ig,"%":Wg};A.x=S(r,A),A.X=S(n,A),A.c=S(t,A),w.x=S(r,w),w.X=S(n,w),w.c=S(t,w);function S(D,F){return function($){var N=[],we=-1,ue=0,Ce=D.length,De,et,Cn;for($ instanceof Date||($=new Date(+$));++we<Ce;)D.charCodeAt(we)===37&&(N.push(D.slice(ue,we)),(et=Rd[De=D.charAt(++we)])!=null?De=D.charAt(++we):et=De==="e"?" ":"0",(Cn=F[De])&&(De=Cn($,et)),N.push(De),ue=we+1);return N.push(D.slice(ue,we)),N.join("")}}function C(D,F){return function($){var N=dn(1900,void 0,1),we=O(N,D,$+="",0),ue,Ce;if(we!=$.length)return null;if("Q"in N)return new Date(N.Q);if("s"in N)return new Date(N.s*1e3+("L"in N?N.L:0));if(F&&!("Z"in N)&&(N.Z=0),"p"in N&&(N.H=N.H%12+N.p*12),N.m===void 0&&(N.m="q"in N?N.q:0),"V"in N){if(N.V<1||N.V>53)return null;"w"in N||(N.w=1),"Z"in N?(ue=ns(dn(N.y,0,1)),Ce=ue.getUTCDay(),ue=Ce>4||Ce===0?br.ceil(ue):br(ue),ue=Ut.offset(ue,(N.V-1)*7),N.y=ue.getUTCFullYear(),N.m=ue.getUTCMonth(),N.d=ue.getUTCDate()+(N.w+6)%7):(ue=rs(dn(N.y,0,1)),Ce=ue.getDay(),ue=Ce>4||Ce===0?gr.ceil(ue):gr(ue),ue=$t.offset(ue,(N.V-1)*7),N.y=ue.getFullYear(),N.m=ue.getMonth(),N.d=ue.getDate()+(N.w+6)%7)}else("W"in N||"U"in N)&&("w"in N||(N.w="u"in N?N.u%7:"W"in N?1:0),Ce="Z"in N?ns(dn(N.y,0,1)).getUTCDay():rs(dn(N.y,0,1)).getDay(),N.m=0,N.d="W"in N?(N.w+6)%7+N.W*7-(Ce+5)%7:N.w+N.U*7-(Ce+6)%7);return"Z"in N?(N.H+=N.Z/100|0,N.M+=N.Z%100,ns(N)):rs(N)}}function O(D,F,$,N){for(var we=0,ue=F.length,Ce=$.length,De,et;we<ue;){if(N>=Ce)return-1;if(De=F.charCodeAt(we++),De===37){if(De=F.charAt(we++),et=T[De in Rd?F.charAt(we++):De],!et||(N=et(D,$,N))<0)return-1}else if(De!=$.charCodeAt(N++))return-1}return N}function z(D,F,$){var N=c.exec(F.slice($));return N?(D.p=d.get(N[0].toLowerCase()),$+N[0].length):-1}function W(D,F,$){var N=h.exec(F.slice($));return N?(D.w=g.get(N[0].toLowerCase()),$+N[0].length):-1}function _(D,F,$){var N=m.exec(F.slice($));return N?(D.w=p.get(N[0].toLowerCase()),$+N[0].length):-1}function L(D,F,$){var N=v.exec(F.slice($));return N?(D.m=P.get(N[0].toLowerCase()),$+N[0].length):-1}function k(D,F,$){var N=b.exec(F.slice($));return N?(D.m=y.get(N[0].toLowerCase()),$+N[0].length):-1}function M(D,F,$){return O(D,t,F,$)}function H(D,F,$){return O(D,r,F,$)}function q(D,F,$){return O(D,n,F,$)}function V(D){return a[D.getDay()]}function j(D){return o[D.getDay()]}function K(D){return u[D.getMonth()]}function re(D){return s[D.getMonth()]}function de(D){return i[+(D.getHours()>=12)]}function oe(D){return 1+~~(D.getMonth()/3)}function xe(D){return a[D.getUTCDay()]}function ke(D){return o[D.getUTCDay()]}function E(D){return u[D.getUTCMonth()]}function I(D){return s[D.getUTCMonth()]}function Y(D){return i[+(D.getUTCHours()>=12)]}function ae(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var F=S(D+="",A);return F.toString=function(){return D},F},parse:function(D){var F=C(D+="",!1);return F.toString=function(){return D},F},utcFormat:function(D){var F=S(D+="",w);return F.toString=function(){return D},F},utcParse:function(D){var F=C(D+="",!0);return F.toString=function(){return D},F}}}var Rd={"-":"",_:" ",0:"0"},Se=/^\s*\d+/,Dg=/^%/,Rg=/[\\^$*+?|[\]().{}]/g;function ie(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",o=i.length;return n+(o<r?new Array(r-o+1).join(t)+i:i)}function Og(e){return e.replace(Rg,"\\$&")}function mn(e){return new RegExp("^(?:"+e.map(Og).join("|")+")","i")}function pn(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function Ng(e,t,r){var n=Se.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Fg(e,t,r){var n=Se.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Eg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Bg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Lg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function Od(e,t,r){var n=Se.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function Nd(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Ig(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function jg(e,t,r){var n=Se.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function zg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function Fd(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function _g(e,t,r){var n=Se.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function Ed(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function $g(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Ug(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Vg(e,t,r){var n=Se.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Gg(e,t,r){var n=Se.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Wg(e,t,r){var n=Dg.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Hg(e,t,r){var n=Se.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Yg(e,t,r){var n=Se.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function Bd(e,t){return ie(e.getDate(),t,2)}function Xg(e,t){return ie(e.getHours(),t,2)}function qg(e,t){return ie(e.getHours()%12||12,t,2)}function Zg(e,t){return ie(1+$t.count(Ge(e),e),t,3)}function _d(e,t){return ie(e.getMilliseconds(),t,3)}function Kg(e,t){return _d(e,t)+"000"}function Qg(e,t){return ie(e.getMonth()+1,t,2)}function Jg(e,t){return ie(e.getMinutes(),t,2)}function eb(e,t){return ie(e.getSeconds(),t,2)}function tb(e){var t=e.getDay();return t===0?7:t}function rb(e,t){return ie(Gt.count(Ge(e)-1,e),t,2)}function $d(e){var t=e.getDay();return t>=4||t===0?vt(e):vt.ceil(e)}function nb(e,t){return e=$d(e),ie(vt.count(Ge(e),e)+(Ge(e).getDay()===4),t,2)}function ib(e){return e.getDay()}function ob(e,t){return ie(gr.count(Ge(e)-1,e),t,2)}function ab(e,t){return ie(e.getFullYear()%100,t,2)}function sb(e,t){return e=$d(e),ie(e.getFullYear()%100,t,2)}function ub(e,t){return ie(e.getFullYear()%1e4,t,4)}function lb(e,t){var r=e.getDay();return e=r>=4||r===0?vt(e):vt.ceil(e),ie(e.getFullYear()%1e4,t,4)}function cb(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+ie(t/60|0,"0",2)+ie(t%60,"0",2)}function Ld(e,t){return ie(e.getUTCDate(),t,2)}function db(e,t){return ie(e.getUTCHours(),t,2)}function mb(e,t){return ie(e.getUTCHours()%12||12,t,2)}function pb(e,t){return ie(1+Ut.count(ze(e),e),t,3)}function Ud(e,t){return ie(e.getUTCMilliseconds(),t,3)}function fb(e,t){return Ud(e,t)+"000"}function hb(e,t){return ie(e.getUTCMonth()+1,t,2)}function gb(e,t){return ie(e.getUTCMinutes(),t,2)}function bb(e,t){return ie(e.getUTCSeconds(),t,2)}function yb(e){var t=e.getUTCDay();return t===0?7:t}function xb(e,t){return ie(ut.count(ze(e)-1,e),t,2)}function Vd(e){var t=e.getUTCDay();return t>=4||t===0?St(e):St.ceil(e)}function wb(e,t){return e=Vd(e),ie(St.count(ze(e),e)+(ze(e).getUTCDay()===4),t,2)}function vb(e){return e.getUTCDay()}function Sb(e,t){return ie(br.count(ze(e)-1,e),t,2)}function kb(e,t){return ie(e.getUTCFullYear()%100,t,2)}function Pb(e,t){return e=Vd(e),ie(e.getUTCFullYear()%100,t,2)}function Mb(e,t){return ie(e.getUTCFullYear()%1e4,t,4)}function Tb(e,t){var r=e.getUTCDay();return e=r>=4||r===0?St(e):St.ceil(e),ie(e.getUTCFullYear()%1e4,t,4)}function Ab(){return"+0000"}function Id(){return"%"}function jd(e){return+e}function zd(e){return Math.floor(+e/1e3)}var xr,Gd,Wd,Ti,Hd;os({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function os(e){return xr=is(e),Gd=xr.format,Wd=xr.parse,Ti=xr.utcFormat,Hd=xr.utcParse,xr}function Cb(e){return new Date(e)}function Db(e){return e instanceof Date?+e:+new Date(+e)}function as(e,t,r,n,i,o,a,s,u,c){var d=un(),m=d.invert,p=d.domain,h=c(".%L"),g=c(":%S"),b=c("%I:%M"),y=c("%I %p"),v=c("%a %d"),P=c("%b %d"),A=c("%B"),w=c("%Y");function T(S){return(u(S)<S?h:s(S)<S?g:a(S)<S?b:o(S)<S?y:n(S)<S?i(S)<S?v:P:r(S)<S?A:w)(S)}return d.invert=function(S){return new Date(m(S))},d.domain=function(S){return arguments.length?p(Array.from(S,Db)):p().map(Cb)},d.ticks=function(S){var C=p();return e(C[0],C[C.length-1],S??10)},d.tickFormat=function(S,C){return C==null?T:c(C)},d.nice=function(S){var C=p();return(!S||typeof S.range!="function")&&(S=t(C[0],C[C.length-1],S??10)),S?p(Ka(C,S)):d},d.copy=function(){return vi(d,as(e,t,r,n,i,o,a,s,u,c))},d}f();function Ai(){return yt.apply(as(es,ts,ze,yr,ut,Ut,hr,fr,Ze,Ti).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}f();f();f();function Z(e){return function(){return e}}f();var ss=Math.abs,Te=Math.atan2,kt=Math.cos,Yd=Math.max,Ci=Math.min,We=Math.sin,Ht=Math.sqrt,Be=1e-12,wr=Math.PI,fn=wr/2,vr=2*wr;function Xd(e){return e>1?0:e<-1?wr:Math.acos(e)}function us(e){return e>=1?fn:e<=-1?-fn:Math.asin(e)}f();f();f();var ls=Math.PI,cs=2*ls,Yt=1e-6,Rb=cs-Yt;function qd(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function Ob(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return qd;let r=10**t;return function(n){this._+=n[0];for(let i=1,o=n.length;i<o;++i)this._+=Math.round(arguments[i]*r)/r+n[i]}}var Xt=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?qd:Ob(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,o,a){this._append`C${+t},${+r},${+n},${+i},${this._x1=+o},${this._y1=+a}`}arcTo(t,r,n,i,o){if(t=+t,r=+r,n=+n,i=+i,o=+o,o<0)throw new Error(`negative radius: ${o}`);let a=this._x1,s=this._y1,u=n-t,c=i-r,d=a-t,m=s-r,p=d*d+m*m;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>Yt)if(!(Math.abs(m*u-c*d)>Yt)||!o)this._append`L${this._x1=t},${this._y1=r}`;else{let h=n-a,g=i-s,b=u*u+c*c,y=h*h+g*g,v=Math.sqrt(b),P=Math.sqrt(p),A=o*Math.tan((ls-Math.acos((b+p-y)/(2*v*P)))/2),w=A/P,T=A/v;Math.abs(w-1)>Yt&&this._append`L${t+w*d},${r+w*m}`,this._append`A${o},${o},0,0,${+(m*h>d*g)},${this._x1=t+T*u},${this._y1=r+T*c}`}}arc(t,r,n,i,o,a){if(t=+t,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(i),u=n*Math.sin(i),c=t+s,d=r+u,m=1^a,p=a?i-o:o-i;this._x1===null?this._append`M${c},${d}`:(Math.abs(this._x1-c)>Yt||Math.abs(this._y1-d)>Yt)&&this._append`L${c},${d}`,n&&(p<0&&(p=p%cs+cs),p>Rb?this._append`A${n},${n},0,1,${m},${t-s},${r-u}A${n},${n},0,1,${m},${this._x1=c},${this._y1=d}`:p>Yt&&this._append`A${n},${n},0,${+(p>=ls)},${m},${this._x1=t+n*Math.cos(o)},${this._y1=r+n*Math.sin(o)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};function Zd(){return new Xt}Zd.prototype=Xt.prototype;function Sr(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new Xt(t)}function Nb(e){return e.innerRadius}function Fb(e){return e.outerRadius}function Eb(e){return e.startAngle}function Bb(e){return e.endAngle}function Lb(e){return e&&e.padAngle}function Ib(e,t,r,n,i,o,a,s){var u=r-e,c=n-t,d=a-i,m=s-o,p=m*u-d*c;if(!(p*p<Be))return p=(d*(t-o)-m*(e-i))/p,[e+p*u,t+p*c]}function Di(e,t,r,n,i,o,a){var s=e-r,u=t-n,c=(a?o:-o)/Ht(s*s+u*u),d=c*u,m=-c*s,p=e+d,h=t+m,g=r+d,b=n+m,y=(p+g)/2,v=(h+b)/2,P=g-p,A=b-h,w=P*P+A*A,T=i-o,S=p*b-g*h,C=(A<0?-1:1)*Ht(Yd(0,T*T*w-S*S)),O=(S*A-P*C)/w,z=(-S*P-A*C)/w,W=(S*A+P*C)/w,_=(-S*P+A*C)/w,L=O-y,k=z-v,M=W-y,H=_-v;return L*L+k*k>M*M+H*H&&(O=W,z=_),{cx:O,cy:z,x01:-d,y01:-m,x11:O*(i/T-1),y11:z*(i/T-1)}}function Ri(){var e=Nb,t=Fb,r=Z(0),n=null,i=Eb,o=Bb,a=Lb,s=null,u=Sr(c);function c(){var d,m,p=+e.apply(this,arguments),h=+t.apply(this,arguments),g=i.apply(this,arguments)-fn,b=o.apply(this,arguments)-fn,y=ss(b-g),v=b>g;if(s||(s=d=u()),h<p&&(m=h,h=p,p=m),!(h>Be))s.moveTo(0,0);else if(y>vr-Be)s.moveTo(h*kt(g),h*We(g)),s.arc(0,0,h,g,b,!v),p>Be&&(s.moveTo(p*kt(b),p*We(b)),s.arc(0,0,p,b,g,v));else{var P=g,A=b,w=g,T=b,S=y,C=y,O=a.apply(this,arguments)/2,z=O>Be&&(n?+n.apply(this,arguments):Ht(p*p+h*h)),W=Ci(ss(h-p)/2,+r.apply(this,arguments)),_=W,L=W,k,M;if(z>Be){var H=us(z/p*We(O)),q=us(z/h*We(O));(S-=H*2)>Be?(H*=v?1:-1,w+=H,T-=H):(S=0,w=T=(g+b)/2),(C-=q*2)>Be?(q*=v?1:-1,P+=q,A-=q):(C=0,P=A=(g+b)/2)}var V=h*kt(P),j=h*We(P),K=p*kt(T),re=p*We(T);if(W>Be){var de=h*kt(A),oe=h*We(A),xe=p*kt(w),ke=p*We(w),E;if(y<wr)if(E=Ib(V,j,xe,ke,de,oe,K,re)){var I=V-E[0],Y=j-E[1],ae=de-E[0],D=oe-E[1],F=1/We(Xd((I*ae+Y*D)/(Ht(I*I+Y*Y)*Ht(ae*ae+D*D)))/2),$=Ht(E[0]*E[0]+E[1]*E[1]);_=Ci(W,(p-$)/(F-1)),L=Ci(W,(h-$)/(F+1))}else _=L=0}C>Be?L>Be?(k=Di(xe,ke,V,j,h,L,v),M=Di(de,oe,K,re,h,L,v),s.moveTo(k.cx+k.x01,k.cy+k.y01),L<W?s.arc(k.cx,k.cy,L,Te(k.y01,k.x01),Te(M.y01,M.x01),!v):(s.arc(k.cx,k.cy,L,Te(k.y01,k.x01),Te(k.y11,k.x11),!v),s.arc(0,0,h,Te(k.cy+k.y11,k.cx+k.x11),Te(M.cy+M.y11,M.cx+M.x11),!v),s.arc(M.cx,M.cy,L,Te(M.y11,M.x11),Te(M.y01,M.x01),!v))):(s.moveTo(V,j),s.arc(0,0,h,P,A,!v)):s.moveTo(V,j),!(p>Be)||!(S>Be)?s.lineTo(K,re):_>Be?(k=Di(K,re,de,oe,p,-_,v),M=Di(V,j,xe,ke,p,-_,v),s.lineTo(k.cx+k.x01,k.cy+k.y01),_<W?s.arc(k.cx,k.cy,_,Te(k.y01,k.x01),Te(M.y01,M.x01),!v):(s.arc(k.cx,k.cy,_,Te(k.y01,k.x01),Te(k.y11,k.x11),!v),s.arc(0,0,p,Te(k.cy+k.y11,k.cx+k.x11),Te(M.cy+M.y11,M.cx+M.x11),v),s.arc(M.cx,M.cy,_,Te(M.y11,M.x11),Te(M.y01,M.x01),!v))):s.arc(0,0,p,T,w,v)}if(s.closePath(),d)return s=null,d+""||null}return c.centroid=function(){var d=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,m=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-wr/2;return[kt(m)*d,We(m)*d]},c.innerRadius=function(d){return arguments.length?(e=typeof d=="function"?d:Z(+d),c):e},c.outerRadius=function(d){return arguments.length?(t=typeof d=="function"?d:Z(+d),c):t},c.cornerRadius=function(d){return arguments.length?(r=typeof d=="function"?d:Z(+d),c):r},c.padRadius=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Z(+d),c):n},c.startAngle=function(d){return arguments.length?(i=typeof d=="function"?d:Z(+d),c):i},c.endAngle=function(d){return arguments.length?(o=typeof d=="function"?d:Z(+d),c):o},c.padAngle=function(d){return arguments.length?(a=typeof d=="function"?d:Z(+d),c):a},c.context=function(d){return arguments.length?(s=d??null,c):s},c}f();f();var DM=Array.prototype.slice;function Pt(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}f();function Kd(e){this._context=e}Kd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function qt(e){return new Kd(e)}f();f();function Oi(e){return e[0]}function Ni(e){return e[1]}function hn(e,t){var r=Z(!0),n=null,i=qt,o=null,a=Sr(s);e=typeof e=="function"?e:e===void 0?Oi:Z(e),t=typeof t=="function"?t:t===void 0?Ni:Z(t);function s(u){var c,d=(u=Pt(u)).length,m,p=!1,h;for(n==null&&(o=i(h=a())),c=0;c<=d;++c)!(c<d&&r(m=u[c],c,u))===p&&((p=!p)?o.lineStart():o.lineEnd()),p&&o.point(+e(m,c,u),+t(m,c,u));if(h)return o=null,h+""||null}return s.x=function(u){return arguments.length?(e=typeof u=="function"?u:Z(+u),s):e},s.y=function(u){return arguments.length?(t=typeof u=="function"?u:Z(+u),s):t},s.defined=function(u){return arguments.length?(r=typeof u=="function"?u:Z(!!u),s):r},s.curve=function(u){return arguments.length?(i=u,n!=null&&(o=i(n)),s):i},s.context=function(u){return arguments.length?(u==null?n=o=null:o=i(n=u),s):n},s}function ds(e,t,r){var n=null,i=Z(!0),o=null,a=qt,s=null,u=Sr(c);e=typeof e=="function"?e:e===void 0?Oi:Z(+e),t=typeof t=="function"?t:t===void 0?Z(0):Z(+t),r=typeof r=="function"?r:r===void 0?Ni:Z(+r);function c(m){var p,h,g,b=(m=Pt(m)).length,y,v=!1,P,A=new Array(b),w=new Array(b);for(o==null&&(s=a(P=u())),p=0;p<=b;++p){if(!(p<b&&i(y=m[p],p,m))===v)if(v=!v)h=p,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),g=p-1;g>=h;--g)s.point(A[g],w[g]);s.lineEnd(),s.areaEnd()}v&&(A[p]=+e(y,p,m),w[p]=+t(y,p,m),s.point(n?+n(y,p,m):A[p],r?+r(y,p,m):w[p]))}if(P)return s=null,P+""||null}function d(){return hn().defined(i).curve(a).context(o)}return c.x=function(m){return arguments.length?(e=typeof m=="function"?m:Z(+m),n=null,c):e},c.x0=function(m){return arguments.length?(e=typeof m=="function"?m:Z(+m),c):e},c.x1=function(m){return arguments.length?(n=m==null?null:typeof m=="function"?m:Z(+m),c):n},c.y=function(m){return arguments.length?(t=typeof m=="function"?m:Z(+m),r=null,c):t},c.y0=function(m){return arguments.length?(t=typeof m=="function"?m:Z(+m),c):t},c.y1=function(m){return arguments.length?(r=m==null?null:typeof m=="function"?m:Z(+m),c):r},c.lineX0=c.lineY0=function(){return d().x(e).y(t)},c.lineY1=function(){return d().x(e).y(r)},c.lineX1=function(){return d().x(n).y(t)},c.defined=function(m){return arguments.length?(i=typeof m=="function"?m:Z(!!m),c):i},c.curve=function(m){return arguments.length?(a=m,o!=null&&(s=a(o)),c):a},c.context=function(m){return arguments.length?(m==null?o=s=null:s=a(o=m),c):o},c}f();f();function Qd(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}f();function Jd(e){return e}function ms(){var e=Jd,t=Qd,r=null,n=Z(0),i=Z(vr),o=Z(0);function a(s){var u,c=(s=Pt(s)).length,d,m,p=0,h=new Array(c),g=new Array(c),b=+n.apply(this,arguments),y=Math.min(vr,Math.max(-vr,i.apply(this,arguments)-b)),v,P=Math.min(Math.abs(y)/c,o.apply(this,arguments)),A=P*(y<0?-1:1),w;for(u=0;u<c;++u)(w=g[h[u]=u]=+e(s[u],u,s))>0&&(p+=w);for(t!=null?h.sort(function(T,S){return t(g[T],g[S])}):r!=null&&h.sort(function(T,S){return r(s[T],s[S])}),u=0,m=p?(y-c*A)/p:0;u<c;++u,b=v)d=h[u],w=g[d],v=b+(w>0?w*m:0)+A,g[d]={data:s[d],index:u,value:w,startAngle:b,endAngle:v,padAngle:P};return g}return a.value=function(s){return arguments.length?(e=typeof s=="function"?s:Z(+s),a):e},a.sortValues=function(s){return arguments.length?(t=s,r=null,a):t},a.sort=function(s){return arguments.length?(r=s,t=null,a):r},a.startAngle=function(s){return arguments.length?(n=typeof s=="function"?s:Z(+s),a):n},a.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:Z(+s),a):i},a.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:Z(+s),a):o},a}f();function em(e){return e<0?-1:1}function tm(e,t,r){var n=e._x1-e._x0,i=t-e._x1,o=(e._y1-e._y0)/(n||i<0&&-0),a=(r-e._y1)/(i||n<0&&-0),s=(o*i+a*n)/(n+i);return(em(o)+em(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function rm(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function ps(e,t,r){var n=e._x0,i=e._y0,o=e._x1,a=e._y1,s=(o-n)/3;e._context.bezierCurveTo(n+s,i+s*t,o-s,a-s*r,o,a)}function Fi(e){this._context=e}Fi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ps(this,this._t0,rm(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,ps(this,rm(this,r=tm(this,e,t)),r);break;default:ps(this,this._t0,r=tm(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function jb(e){this._context=new nm(e)}(jb.prototype=Object.create(Fi.prototype)).point=function(e,t){Fi.prototype.point.call(this,t,e)};function nm(e){this._context=e}nm.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,o){this._context.bezierCurveTo(t,e,n,r,o,i)}};function fs(e){return new Fi(e)}f();function im(e,t){this._context=e,this._t=t}im.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function hs(e){return new im(e,1)}f();f();function gs(e,t){if((a=e.length)>1)for(var r=1,n,i,o=e[t[0]],a,s=o.length;r<a;++r)for(i=o,o=e[t[r]],n=0;n<s;++n)o[n][1]+=o[n][0]=isNaN(i[n][1])?i[n][0]:i[n][1]}f();function bs(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function zb(e,t){return e[t]}function _b(e){let t=[];return t.key=e,t}function ys(){var e=Z([]),t=bs,r=gs,n=zb;function i(o){var a=Array.from(e.apply(this,arguments),_b),s,u=a.length,c=-1,d;for(let m of o)for(s=0,++c;s<u;++s)(a[s][c]=[0,+n(m,a[s].key,c,o)]).data=m;for(s=0,d=Pt(t(a));s<u;++s)a[d[s]].index=s;return r(a,d),a}return i.keys=function(o){return arguments.length?(e=typeof o=="function"?o:Z(Array.from(o)),i):e},i.value=function(o){return arguments.length?(n=typeof o=="function"?o:Z(+o),i):n},i.order=function(o){return arguments.length?(t=o==null?bs:typeof o=="function"?o:Z(Array.from(o)),i):t},i.offset=function(o){return arguments.length?(r=o??gs,i):r},i}f();function xs(e,t){if((u=e.length)>0)for(var r,n=0,i,o,a,s,u,c=e[t[0]].length;n<c;++n)for(a=s=0,r=0;r<u;++r)(o=(i=e[t[r]][n])[1]-i[0])>0?(i[0]=a,i[1]=a+=o):o<0?(i[1]=s,i[0]=s+=o):(i[0]=0,i[1]=o)}var um=["#6366f1","#22d3ee","#f59e0b","#ec4899","#10b981","#8b5cf6","#f97316","#3b82f6"],$b=e=>typeof e=="object"&&e!==null&&"open"in e&&"close"in e,Ub=e=>typeof e=="object"&&e!==null&&"label"in e&&"value"in e;function Vb(e){return e==="linear"?qt:e==="step"?hs:fs}function ws(e,t){let r=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!r)return e;let n=r[1];n.length===3&&(n=[...n].map(o=>o+o).join(""));let i=parseInt(n,16);return`rgba(${i>>16&255}, ${i>>8&255}, ${i&255}, ${t})`}function om(e){if(!e?.format)return null;if(typeof e.format=="function")return e.format;let t=sr(e.format);return r=>typeof r=="number"?t(r):String(r)}function J(e){return Math.round(e*100)/100}function kr(e,t=0,r=e.duration){return Q.create().fromTo("opacity",0,1,{start:e.start+t,end:e.start+t+Math.max(1,r),ease:"power2.out"})}function lm(e,t,r){let n=t.id??X("chart"),i=e.width??(typeof t.width=="number"?t.width:960),o=e.height??(typeof t.height=="number"?t.height:540),a=e.type??"line",s=e.fontSize??18,u=e.fontFamily??r,c=e.textColor??"#94a3b8",d=e.textColor??"#e2e8f0",m=e.gridColor??"rgba(148, 163, 184, 0.18)",p=e.colors?.length?e.colors:um,h=e.cornerRadius??4,g=e.animate===!1?void 0:e.animate??{},b={enabled:g!==void 0,start:g?.start??0,duration:g?.duration??30,stagger:g?.stagger??-1,ease:g?.ease??"power3.out"},y=[],v=(k,M,H,q={},V="")=>{let j=B.text(k,{id:`${n}-label-${V||y.length}`,position:"absolute",x:J(M.x),y:J(M.y),width:J(M.width),height:J(M.height),fontFamily:u,fontSize:s,fontWeight:q.weight??500,fill:q.color??c,align:H,verticalAlign:"middle"});b.enabled&&j.animate(kr(b,q.delay??0)),y.push(j)},P=Math.ceil(s*1.4);a==="pie"||a==="donut"?A():T();for(let k of y)cm(k);return B.box({background:e.background??"transparent",...t,id:n,width:i,height:o,children:y});function A(){let k=w(),M=k.reduce((I,Y)=>I+Math.max(0,Y.value),0),H=e.legend??!0,q=C({top:16,right:H?z(k.map(I=>I.label)):16,bottom:16,left:16}),V=O(q),j=Math.max(1,Math.min(V.width,V.height)/2),K=j*(e.innerRadius??(a==="donut"?.6:0)),re=V.x+V.width/2,de=V.y+V.height/2,oe=4,xe=ms().sort(null).value(I=>Math.max(0,I.value)).padAngle(k.length>1?.012:0)(k),ke=Ri().innerRadius(K).outerRadius(j).cornerRadius(Math.min(h,(j-K)/2)),E=S(xe.length);xe.forEach((I,Y)=>{let ae=ke(I);if(!ae)return;let D=k[Y].color??p[Y%p.length],F=B.shape("path",{id:`${n}-slice-${Y}`,position:"absolute",x:J(re-j-oe),y:J(de-j-oe),width:J(2*(j+oe)),height:J(2*(j+oe)),d:Gb(ae,j+oe,j+oe),fillColor:D,anchorX:.5,anchorY:.5});if(b.enabled){let $=b.start+Y*E;F.animate(Q.create().fromTo("opacity",0,1,{start:$,end:$+b.duration*.5}).fromTo("scale",.85,1,{start:$,end:$+b.duration,ease:b.ease}))}if(y.push(F),e.valueLabels&&M>0&&I.value>0){let[$,N]=Ri().innerRadius(K||j*.55).outerRadius(j).centroid(I),we=`${Math.round(I.value/M*100)}%`;v(we,{x:re+$-60,y:de+N-P/2,width:120,height:P},"center",{delay:Y*E+b.duration*.5,color:"#ffffff",weight:700},`value-${Y}`)}}),H&&W(k.map((I,Y)=>({name:I.label,color:I.color??p[Y%p.length]})),{x:V.x+V.width+24,y:V.y,height:V.height})}function w(){return(e.data??e.series?.[0]?.data??[]).map((M,H)=>{if(Ub(M))return M;let q=typeof M=="number"?M:Array.isArray(M)?Number(M[1]):Number(M.y);return{label:e.categories?.[H]??(Array.isArray(M)?String(M[0]):typeof M=="object"&&M?String(M.x):`${H+1}`),value:q}})}function T(){let k=e.series?.length?[...e.series]:e.data?[{data:e.data}]:[];if(k.length===0)return;let M=R=>R.type??a??"line",H=(R,U)=>R.color??p[U%p.length],q=k.map(R=>R.data.map((U,te)=>$b(U)?{x:U.x,y:U.close}:typeof U=="number"?{x:e.categories?.[te]??te,y:U}:Array.isArray(U)?{x:U[0],y:Number(U[1])}:{x:U.x,y:Number(U.y)})),V=k.some(R=>M(R)==="bar"||M(R)==="candlestick"),j=q.flat().map(R=>R.x),K=V||j.some(R=>typeof R=="string")?"band":j.some(R=>R instanceof Date)?"time":"linear",re=R=>M(R)==="bar"||M(R)==="area",de=!!e.stacked,oe=K==="band"?[...new Set(j.map(String))]:[],xe=new Map;if(de){let R=k.map((me,Pe)=>Pe).filter(me=>re(k[me])),U=oe.length?oe:[...new Set(j.map(me=>+me))].sort((me,Pe)=>me-Pe).map(String),te=U.map(me=>{let Pe={};for(let Re of R){let Oe=q[Re].find(ve=>String(K==="band"?ve.x:+ve.x)===me);Pe[Re]=Oe?.y??0}return Pe});ys().keys(R.map(String)).offset(xs)(te).forEach(me=>{let Pe=Number(me.key);xe.set(Pe,q[Pe].map(Re=>{let Oe=U.indexOf(String(K==="band"?Re.x:+Re.x));return[me[Oe][0],me[Oe][1]]}))})}let ke=[0];k.forEach((R,U)=>{let te=xe.get(U);if(M(R)==="candlestick")for(let ce of R.data)ke.push(ce.high,ce.low);else if(te)for(let[ce,me]of te)ke.push(ce,me);else for(let ce of q[U])ke.push(ce.y)}),k.every(R=>M(R)==="candlestick"||M(R)==="scatter"||M(R)==="line")&&ke.shift();let E=e.yAxis??{},I=e.xAxis??{},Y=E.ticks??5,ae=E.min??Math.min(...ke),D=E.max??Math.max(...ke);(!Number.isFinite(ae)||!Number.isFinite(D))&&([ae,D]=[0,1]),ae===D&&([ae,D]=[ae-1,D+1]);let F=pr().domain([ae,D]);(E.min===void 0||E.max===void 0)&&F.nice(Y);let $=om(E)??(R=>F.tickFormat(Y)(R)),N=F.ticks(Y),we=k.map((R,U)=>({name:R.name??`Series ${U+1}`,color:H(R,U)})),ue=e.legend??k.length>1,Ce=E.show!==!1,De=I.show!==!1,et=Ce?Math.max(...N.map(R=>$(R).length))*s*.7+20:0,Cn=C({top:(ue?P+20:0)+Math.ceil(P/2),right:20,bottom:De?P+14:12,left:Math.max(16,Math.ceil(et))}),ne=O(Cn),qs=P+6,Zs=e.valueLabels?k.flatMap((R,U)=>M(R)==="bar"?q[U].map(te=>te.y):[]):[],Pp=Zs.some(R=>R>0)?qs:0,Mp=Zs.some(R=>R<0)?qs:0;F.range([ne.height-Mp,Pp]);let tt;if(K==="band")tt=rn().domain(oe).range([0,ne.width]).paddingInner(V?.28:0).paddingOuter(V?.14:.5);else if(K==="time"){let R=j.map(U=>+new Date(U));tt=Ai().domain([Math.min(...R),Math.max(...R)]).range([0,ne.width])}else{let R=j.map(Number);tt=pr().domain([I.min??Math.min(...R),I.max??Math.max(...R)]).range([0,ne.width])}let Ks=R=>{if(K==="band"){let U=tt;return(U(String(R))??0)+U.bandwidth()/2}return tt(K==="time"?new Date(R):Number(R))},Qs=0;E.grid!==!1&&N.forEach((R,U)=>{let te=B.box({id:`${n}-ygrid-${U}`,position:"absolute",x:ne.x,y:J(ne.y+F(R)-.5),width:ne.width,height:1,background:m});b.enabled&&te.animate(kr(b,Qs,b.duration/2)),y.push(te)}),Ce&&N.forEach((R,U)=>{v($(R),{x:0,y:ne.y+F(R)-P/2,width:ne.x-12,height:P},"end",{},`y-${U}`)});let Dr=[],Dn=om(I);if(K==="band"){let R=tt,U=Math.max(1,Math.ceil(oe.length/Math.max(1,Math.floor(ne.width/(s*4)))));oe.forEach((te,ce)=>{ce%U===0&&Dr.push({pos:(R(te)??0)+R.bandwidth()/2,text:Dn?Dn(te):te})})}else{let R=tt,U=I.ticks??Math.max(2,Math.floor(ne.width/(s*6))),te=R.tickFormat(U);for(let ce of R.ticks(U))Dr.push({pos:R(ce),text:Dn?Dn(K==="time"?new Date(ce):ce):te(ce)})}if(I.grid&&Dr.forEach((R,U)=>{let te=B.box({id:`${n}-xgrid-${U}`,position:"absolute",x:J(ne.x+R.pos-.5),y:ne.y,width:1,height:ne.height,background:m});b.enabled&&te.animate(kr(b,Qs,b.duration/2)),y.push(te)}),De){let R=Math.max(s*3,ne.width/Math.max(1,Dr.length));Dr.forEach((U,te)=>{v(U.text,{x:ne.x+U.pos-R/2,y:ne.y+ne.height+10,width:R,height:P},"center",{},`x-${te}`)})}let[Tp,Ap]=F.domain();if(Tp<=0&&Ap>=0&&V){let R=B.box({id:`${n}-zero`,position:"absolute",x:ne.x,y:J(ne.y+F(0)-1),width:ne.width,height:2,background:ws("#94a3b8",.45)});b.enabled&&R.animate(kr(b,0,b.duration/2)),y.push(R)}let Rn=k.map((R,U)=>U).filter(R=>M(k[R])==="bar"),Cp=[...Rn,...k.map((R,U)=>U).filter(R=>M(k[R])==="candlestick"),...k.map((R,U)=>U).filter(R=>M(k[R])==="area"),...k.map((R,U)=>U).filter(R=>M(k[R])==="line"),...k.map((R,U)=>U).filter(R=>M(k[R])==="scatter")],mt=K==="band"?tt:null,Js=mt?S(oe.length):0,eu=R=>mt?oe.indexOf(String(R)):0;Cp.forEach((R,U)=>{let te=k[R],ce=H(te,R),me=M(te),Pe=q[R],Re=xe.get(R);if(me==="bar"&&mt){let Oe=de?1:Rn.length,ve=de?0:Rn.indexOf(R),Ne=mt.bandwidth()/Oe,fe=Oe>1?Math.min(4,Ne*.12):0;Pe.forEach((Fe,He)=>{let[pt,Me]=Re?Re[He]:[0,Fe.y],be=ne.y+F(Math.max(pt,Me)),On=ne.y+F(Math.min(pt,Me)),Ee=Math.max(0,On-be),Rr=ne.x+(mt(String(Fe.x))??0)+ve*Ne+fe/2,At=Fe.y>=0?"up":"down",Nn=B.box({id:`${n}-bar-${R}-${He}`,position:"absolute",x:J(Rr),y:J(be),width:J(Math.max(1,Ne-fe)),height:J(Ee),background:ce,borderRadius:Math.min(h,(Ne-fe)/2,Ee/2)}),ru=eu(Fe.x)*Js+(de?Rn.indexOf(R)*b.duration*.6:0);if(b.enabled){let Or=b.start+ru,Fn=Or+b.duration,nu=Q.create().fromTo("height",0,J(Ee),{start:Or,end:Fn,ease:b.ease});At==="up"&&nu.fromTo("y",J(be+Ee),J(be),{start:Or,end:Fn,ease:b.ease}),Nn.animate(nu)}if(y.push(Nn),e.valueLabels){let Or=$(Fe.y),Fn=At==="up"?be-P-4:be+Ee+4;v(Or,{x:Rr-30,y:Fn,width:Ne-fe+60,height:P},"center",{delay:ru+b.duration*.6,color:d,weight:600},`value-${R}-${He}`)}});return}if(me==="candlestick"&&mt){let Oe=e.upColor??"#22c55e",ve=e.downColor??"#ef4444",Ne=mt.bandwidth();te.data.forEach((fe,Fe)=>{let He=fe.close>=fe.open?Oe:ve,pt=ne.x+(mt(String(fe.x))??0)+Ne/2,Me=eu(fe.x)*Js,be=[["wick",{x:pt-Math.max(1,Ne*.06),y:ne.y+F(fe.high),width:Math.max(2,Ne*.12),height:Math.max(1,F(fe.low)-F(fe.high))}],["body",{x:pt-Ne/2,y:ne.y+F(Math.max(fe.open,fe.close)),width:Ne,height:Math.max(2,Math.abs(F(fe.open)-F(fe.close)))}]];for(let[On,Ee]of be){let Rr=B.box({id:`${n}-candle-${R}-${Fe}-${On}`,position:"absolute",x:J(Ee.x),y:J(Ee.y),width:J(Ee.width),height:J(Ee.height),background:He,borderRadius:On==="body"?Math.min(h/2,Ee.width/2):0});if(b.enabled){let At=b.start+Me,Nn=Ee.y+Ee.height/2;Rr.animate(Q.create().fromTo("height",0,J(Ee.height),{start:At,end:At+b.duration,ease:b.ease}).fromTo("y",J(Nn),J(Ee.y),{start:At,end:At+b.duration,ease:b.ease}))}y.push(Rr)}});return}if(me==="line"||me==="area"){let Oe=te.strokeWidth??3,ve=Math.ceil(Oe*2+(te.pointRadius??0)+2),Ne=Pe.map((Me,be)=>({x:Ks(Me.x)+ve,top:F(Re?Re[be][1]:Me.y)+ve,base:F(Re?Re[be][0]:Math.max(F.domain()[0],Math.min(0,F.domain()[1])))+ve})),fe=Vb(te.curve),Fe={x:ne.x-ve,y:ne.y-ve,width:ne.width+2*ve,height:ne.height+2*ve},He=U*(b.duration/3);if(me==="area"){let Me=ds().x(be=>be.x).y0(be=>be.base).y1(be=>be.top).curve(fe)(Ne);if(Me){let be=B.shape("path",{id:`${n}-area-${R}`,position:"absolute",...am(Fe),d:sm(Me),fillType:"linear",fillColor:ws(ce,.45),gradientEndColor:ws(ce,.02),gradientAngle:90});b.enabled&&be.animate(kr(b,He+b.duration*.4,b.duration)),y.push(be)}}let pt=hn().x(Me=>Me.x).y(Me=>Me.top).curve(fe)(Ne);if(pt&&Oe>0){let Me=B.shape("path",{id:`${n}-line-${R}`,position:"absolute",...am(Fe),d:sm(pt),fillType:"none",strokeColor:ce,strokeWidth:Oe,strokeLineCap:"round",strokeLineJoin:"round"});b.enabled&&Me.animate(Q.create().fromTo("trimEnd",0,1,{start:b.start+He,end:b.start+He+b.duration*1.5,ease:"power2.inOut"})),y.push(Me)}(te.pointRadius??0)>0&&tu(R,Pe,ce,te.pointRadius??0,He+b.duration*.5,Re);return}me==="scatter"&&tu(R,Pe,ce,te.pointRadius??6,U*(b.duration/3),Re)}),ue&&_(we);function tu(R,U,te,ce,me,Pe){let Re=S(U.length);U.forEach((Oe,ve)=>{let Ne=F(Pe?Pe[ve][1]:Oe.y),fe=B.shape("circle",{id:`${n}-point-${R}-${ve}`,position:"absolute",x:J(ne.x+Ks(Oe.x)-ce),y:J(ne.y+Ne-ce),width:J(ce*2),height:J(ce*2),fillColor:te,anchorX:.5,anchorY:.5});if(b.enabled){let Fe=b.start+me+ve*Re;fe.animate(Q.create().fromTo("scale",0,1,{start:Fe,end:Fe+b.duration*.6,ease:"back.out(2)"}).fromTo("opacity",0,1,{start:Fe,end:Fe+6}))}y.push(fe)})}}function S(k){return!b.enabled||k<=1?0:b.stagger>=0?b.stagger:Math.min(4,b.duration/k)}function C(k){let M=e.padding;return typeof M=="number"?{top:M,right:M,bottom:M,left:M}:{top:M?.top??k.top,right:M?.right??k.right,bottom:M?.bottom??k.bottom,left:M?.left??k.left}}function O(k){return{x:k.left,y:k.top,width:Math.max(1,i-k.left-k.right),height:Math.max(1,o-k.top-k.bottom)}}function z(k){let M=Math.max(0,...k.map(H=>H.length));return Math.min(i*.4,M*s*.6+s+48)}function W(k,M){let H=P+8,q=M.y+Math.max(0,(M.height-k.length*H)/2);k.forEach((V,j)=>{L(V,M.x,q+j*H,j)})}function _(k){let M=k.map(V=>V.name.length*s*.6+s+28),H=M.reduce((V,j)=>V+j,0),q=Math.max(0,i-H-20);k.forEach((V,j)=>{L(V,q,4,j),q+=M[j]})}function L(k,M,H,q){let V=Math.round(s*.7),j=B.box({id:`${n}-legend-swatch-${q}`,position:"absolute",x:J(M),y:J(H+(P-V)/2),width:V,height:V,borderRadius:Math.round(V/4),background:k.color});b.enabled&&j.animate(kr(b,0,b.duration/2)),y.push(j),v(k.name,{x:M+V+8,y:H,width:k.name.length*s*.6+12,height:P},"start",{color:e.textColor??"#cbd5e1"},`legend-${q}`)}}function cm(e){for(let t of e.animation?.tracks??[])for(let r of t.keyframes??[])r.frame=Math.round(r.frame);for(let t of e.children??[])cm(t)}function am(e){return{x:J(e.x),y:J(e.y),width:J(e.width),height:J(e.height)}}function sm(e){return e.replace(/-?\d*\.\d{3,}(?:e-?\d+)?/gi,t=>String(J(Number(t))))}function Gb(e,t,r){let n=[],i=/([MLAZ])([^MLAZ]*)/gi;for(let[,o,a]of e.matchAll(i)){let s=(a.match(/-?\d*\.?\d+(?:e-?\d+)?/gi)??[]).map(Number);if(o.toUpperCase()==="A")for(let u=0;u+6<s.length;u+=7)s[u+5]+=t,s[u+6]+=r;else if(o.toUpperCase()!=="Z")for(let u=0;u+1<s.length;u+=2)s[u]+=t,s[u+1]+=r;n.push(o+s.map(J).join(","))}return n.join("")}f();var dm=24,Wb=1,Hb=1,Yb="depth-anything-v2-s",Xb=48,mm,qb=0;function Zb(){return mm??=import("./src-YXNX4MLK.mjs"),mm}var gn=class{source;fps;compositionFps;startFrame;trimStartSec;smoothing;options;results=new Map;sourceWidth=0;sourceHeight=0;cellW=0;cellH=0;cell;queue=Promise.resolve();runner;sam2Tracker;sam2Frame=-1;sam3Tracker;sam3Frame=-1;sam;decoderId=`clip-vision#${++qb}#`;signalBundle;publishedSignals=new Set;signalMaskFrame=-1;signalMasks=new Map;trackCounts=new Map;cacheLoaded;unsaved=0;unsavedSubjects=0;blurred=new Map;smoothed=new Map;personView;subjects=new Map;wantSubjects=!1;subjectsLoaded;depths=new Map;depthsOnDisk=new Set;depthDir;depthDisk;constructor(t,r,n={}){if(this.source=t,n.sam2&&n.sam3)throw new Error("Choose one prompted backend: sam2 or sam3.");this.options=n.sam2?{...n,sam2:{...n.sam2,prompts:n.sam2.prompts.map(i=>({...i,points:i.points.map(o=>({...o}))}))}}:n.sam3?{...n,sam3:{...n.sam3,prompts:(n.sam3.prompts??(n.sam3.text?[{frame:0,text:n.sam3.text}]:[])).map(i=>({...i,...i.points?{points:i.points.map(o=>({...o}))}:{}}))}}:n,this.compositionFps=r,this.fps=n.fps??r,this.startFrame=Math.round(n.startFrame??0),this.trimStartSec=n.trimStartSec??0,this.smoothing=Math.max(0,Math.round(n.smoothing??(n.sam2||n.sam3?0:2))),this.cell=Math.max(1,Math.round(n.maskCell??8)),(n.sam2||n.sam3)&&(this.wantSubjects=!0)}get exact(){return this.options.sam2!==void 0||this.options.sam3!==void 0}get signals(){return this.keepSubjects(),this.signalBundle??=new Br({fps:this.compositionFps,totalFrames:Number.MAX_SAFE_INTEGER,maskSource:t=>this.trackIds(t).flatMap(r=>{let n=this.maskAt(t,r);return n&&n.area>0?[n]:[]}),matteSource:t=>{let r=this.maskAt(t);return r?{mask:r.mask,width:r.width,height:r.height,coverage:r.coverage}:void 0}}),this.signalBundle}decoder(){return Er.getVideo(this.source,!0,this.decoderId)}release(){Er.clearNode(this.decoderId),this.sam2Tracker?.release(),this.sam2Tracker=void 0,this.sam2Frame=-1,this.sam3Tracker?.release(),this.sam3Tracker=void 0,this.sam3Frame=-1,this.runner?.close(),this.runner=void 0,this.signalMaskFrame=-1,this.signalMasks.clear(),this.publishedSignals.clear()}get person(){return this.personView??=new Bi(this),this.personView}ready(t,r=t){let[n,i]=this.window(t,r),o=this.queue.then(async()=>{try{await this.compute(n,i)}catch(a){throw this.release(),a}this.signalBundle&&this.publishSignals(Math.min(t,r),Math.max(t,r))});return this.queue=o.catch(()=>{}),o}isReady(t){let[r,n]=this.window(t,t);for(let i=r;i<=n;i++)if(!this.analysed(i))return!1;return!0}keepSubjects(){this.wantSubjects=!0}subject(t,r){let n=this.sourceFrame(t,r);if(n===void 0)return;let i=this.subjects.get(n);if(i===void 0)return i;if(i===null||!this.sourceWidth)return null;let o=this.sourceWidth,a=this.sourceHeight;return{category:i.category,mask:hm(i,o*a),width:o,height:a,area:i.area,coverage:i.area/(o*a),detectionIndex:-1}}pose(t,r){let n=this.sourceFrame(t,r);if(n===void 0||!this.tracksPose||!this.sourceWidth)return;for(let a=n-this.smoothing;a<=n+this.smoothing;a++)if(!this.results.has(Math.max(0,a)))return;if(!this.results.get(n)?.kp)return null;let i=this.sourceWidth,o=this.sourceHeight;return{width:i,height:o,keypoints:Array.from({length:17},(a,s)=>{let[u,c,d]=this.keypoint(s,n);return{x:u/i,y:c/o,visibility:d}})}}get tracksPose(){return this.exact?this.options.pose===!0:this.options.pose??!this.tracksDepth}get tracksMask(){return this.options.mask??!this.tracksDepth}get tracksDepth(){return this.options.depth===!0}depthMap(t){return this.depth(t,this.compositionFps)??void 0}depth(t,r){let n=this.sourceFrame(t,r);if(n===void 0||!this.tracksDepth)return;let i=this.storedDepth(n);if(!i)return i;let o=new Float32Array(i.data.length);for(let a=0;a<o.length;a++)o[a]=i.data[a]/65535;return{data:o,width:i.width,height:i.height}}sourceFrame(t,r){let n=t*this.fps/r;if(!(!this.exact&&!this.options.timeRemap&&Math.abs(n-Math.round(n))>1e-6))return this.options.timeRemap||this.exact?Math.floor(n+1e-6):Math.round(n)}clipFrame(t){return this.options.timeRemap?lu(this.options.timeRemap,this.localFrame(t),this.compositionFps)*this.fps:((t-this.startFrame)/this.compositionFps+this.trimStartSec)*this.fps}localFrame(t){let r=Math.max(0,t-this.startFrame);return this.options.durationFrames===void 0?r:Math.min(r,Math.max(0,this.options.durationFrames-1))}window(t,r){let n=this.options.timeRemap?cu(this.options.timeRemap,this.localFrame(Math.min(t,r)),this.localFrame(Math.max(t,r)),this.compositionFps):void 0,i=Math.floor(n?n.min*this.fps:this.clipFrame(Math.min(t,r))),o=Math.ceil(n?n.max*this.fps:this.clipFrame(Math.max(t,r)));return[Math.max(0,i-dm-this.smoothing),Math.max(0,o+this.smoothing)]}analysed(t){return this.analysedSubject(t)&&(!this.tracksDepth||this.hasDepth(t))}analysedSubject(t){return this.results.has(t)&&(!this.wantSubjects||this.subjects.has(t))}prompted(){return this.sam??=Zb().then(t=>(this.options.sam2&&t.validateSam2Prompts(this.options.sam2.prompts),this.options.sam3&&t.validateSam3Prompts(this.options.sam3),t)),this.sam}async compute(t,r){this.exact&&await this.prompted(),this.cacheLoaded??=this.loadCache(),await this.cacheLoaded,this.wantSubjects&&(this.subjectsLoaded??=this.loadSubjects(),await this.subjectsLoaded),this.tracksDepth&&await this.computeDepth(t,r);let n=!1;for(let u=t;u<=r;u++)this.analysedSubject(u)||(n=!0);if(!n)return;if(this.options.sam2){await this.computeSam2(r);return}if(this.options.sam3){await this.computeSam3(r);return}let i=this.tracksPose,o=this.tracksMask,a=this.visionRunner(),s=this.decoder();for(let u=t;u<=r;u++){if(this.analysedSubject(u))continue;let c=await Ei(await s.getFrame(u/this.fps));if(!c){this.results.set(u,{kp:null,mask:null}),this.wantSubjects&&this.subjects.set(u,null);continue}this.sourceWidth||this.setSize(c.width,c.height);let d=this.results.get(u),m=d?.kp??null,p=d?.mask??null;if(i&&!d){let g=(await a.pose(c)).people[0];if(g){m=new Float32Array(51);for(let[b,y]of g.keypoints.entries())m.set([y.x,y.y,y.visibility],b*3)}}let h=o&&!d||this.wantSubjects?await a.segment(c):void 0;if(h&&this.wantSubjects){let g=go(h.masks);this.subjects.set(u,g?{category:g.category,area:g.area,...fm(g.mask)}:null),this.unsavedSubjects++}if(h&&o&&!d){let g=Qb(h);g&&(p=new Uint8Array(this.cellW*this.cellH),pm(g,c.width,c.height,this.cell,p,this.cellW,this.cellH))}this.results.set(u,{kp:m,mask:p}),d||this.unsaved++,this.unsaved>=24&&await this.saveCache(),this.unsavedSubjects>=24&&await this.saveSubjects()}this.unsaved>0&&await this.saveCache(),this.unsavedSubjects>0&&await this.saveSubjects()}visionRunner(){return this.runner??=tr.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,...this.options.confidence!==void 0&&{confidence:this.options.confidence},...this.options.variant!==void 0&&{variant:this.options.variant}}),this.runner}async computeDepth(t,r){let n=await this.depthCacheDir(),i;for(let o=t;o<=r;o++){if(this.hasDepth(o))continue;i??=this.decoder();let a=await Ei(await i.getFrame(o/this.fps));if(!a){this.depths.set(o,null);continue}this.sourceWidth||this.setSize(a.width,a.height);let s=await this.visionRunner().depth(a),u={width:s.width,height:s.height,data:Uint16Array.from(s.data,c=>Math.round(c*65535))};this.keepDepth(o,u),n&&await this.saveDepth(n,o,u)}}hasDepth(t){return this.depths.has(t)||this.depthsOnDisk.has(t)}keepDepth(t,r){if(this.depths.delete(t),this.depths.set(t,r),this.depthsOnDisk.size!==0)for(let n of this.depths.keys()){if(this.depths.size<=Xb)break;this.depthsOnDisk.has(n)&&this.depths.delete(n)}}storedDepth(t){let r=this.depths.get(t);if(r!==void 0||!this.depthsOnDisk.has(t))return r;let n=this.depthDisk;if(!n)return;let i=ny(n.fs,n.path.join(n.dir,`${t}.bin`));return i&&this.keepDepth(t,i),i??void 0}depthCacheDir(){return this.depthDir??=(async()=>{let t=await bm();if(!t||this.options.cacheDir===!1)return null;let{fs:r,path:n,os:i,crypto:o}=t;try{let a=r.statSync(this.source),s=this.options.cacheDir??x.env.FRAMEFIELDS_VISION_CACHE_DIR??n.join(i.homedir(),".cache","framefields","vision"),u=JSON.stringify([Hb,n.resolve(this.source),a.size,a.mtimeMs,this.fps,Yb]),c=o.createHash("sha256").update(u).digest("hex").slice(0,24),d=n.join(s,`${n.basename(this.source)}.${c}.depth`);r.mkdirSync(d,{recursive:!0});for(let m of r.readdirSync(d)){let p=/^(\d+)\.bin$/.exec(m);p&&this.depthsOnDisk.add(Number(p[1]))}return this.depthDisk={dir:d,fs:r,path:n},d}catch{return null}})(),this.depthDir}async saveDepth(t,r,n){let i=await bm();if(!i)return;let o=new Uint32Array([n.width,n.height]),a=i.path.join(t,`${r}.bin`),s=`${a}.${x.pid}.tmp`;i.fs.writeFileSync(s,Buffer.concat([Buffer.from(o.buffer),Buffer.from(n.data.buffer,n.data.byteOffset,n.data.byteLength)])),i.fs.renameSync(s,a),this.depthsOnDisk.add(r),this.keepDepth(r,n)}async computeSam2(t){let r=this.options.sam2;if(!r)return;let n=r.prompts[0]?.frame??0;for(let o=0;o<Math.min(n,t+1);o++)this.results.set(o,{kp:null,mask:null,score:0}),this.subjects.set(o,null);if(t<n)return;let i=this.decoder();if(!this.sam2Tracker){let o=Math.max(1,Math.ceil(await i.durationSec()*this.fps-1e-6));if(r.prompts.some(s=>s.frame>=o))throw new Error("SAM 2 prompt frames must be inside the source video.");let{Sam2Tracker:a}=await this.prompted();this.sam2Tracker=await a.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,frameCount:o,model:r.model}),this.sam2Frame=n-1}for(let o=this.sam2Frame+1;o<=t;o++){let a=await Ei(await i.getFrame(o/this.fps));if(!a)throw new Error(`Cannot decode SAM 2 source frame ${o}.`);this.sourceWidth||this.setSize(a.width,a.height);let s=r.prompts.find(d=>d.frame===o),u=await this.sam2Tracker.process(a,o,s?.points),c=this.tracksPose?await this.matchedPose(a,u.mask):null;this.storeSamFrame(o,u.width,u.height,[u],c),this.unsaved>=24&&(await this.saveCache(),await this.saveSubjects())}await this.saveCache(),await this.saveSubjects()}async computeSam3(t){let r=this.options.sam3;if(!r)return;let n=r.prompts[0]?.frame??0;for(let o=0;o<Math.min(n,t+1);o++)this.results.set(o,{kp:null,mask:null,score:0}),this.subjects.set(o,null);if(t<n)return;let i=this.decoder();if(!this.sam3Tracker){let o=Math.max(1,Math.ceil(await i.durationSec()*this.fps-1e-6));if(r.prompts.some(s=>s.frame>=o))throw new Error("SAM 3 prompt frames must be inside the source video.");let{Sam3Tracker:a}=await this.prompted();this.sam3Tracker=await a.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,frameCount:o,textThreshold:r.textThreshold,maxObjects:r.maxObjects,merge:r.merge,redetect:r.redetect,precision:r.precision,acceptLicense:this.options.acceptSamLicense??this.options.sam3?.acceptLicense}),this.sam3Frame=n-1}for(let o=this.sam3Frame+1;o<=t;o++){let a=await Ei(await i.getFrame(o/this.fps));if(!a)throw new Error(`Cannot decode SAM 3 source frame ${o}.`);this.sourceWidth||this.setSize(a.width,a.height);let s=r.prompts.find(d=>d.frame===o),u=await this.sam3Tracker.process(a,o,s),c=this.tracksPose?await this.matchedPose(a,ry(u.objects,a)):null;this.storeSamFrame(o,u.width,u.height,u.objects,c),this.unsaved>=24&&(await this.saveCache(),await this.saveSubjects())}await this.saveCache(),await this.saveSubjects()}storeSamFrame(t,r,n,i,o){let a=new Uint8Array(r*n),s=[...i.keys()].sort((p,h)=>(i[p]?.score??0)-(i[h]?.score??0));for(let p of s){let h=i[p]?.mask;if(h)for(let g=0;g<h.length;g++)(h[g]??0)>=128&&(a[g]=p+1)}let u=Uint8Array.from(a,p=>p?255:0),c=new Uint8Array(this.cellW*this.cellH);pm(u,r,n,this.cell,c,this.cellW,this.cellH);let d=0;for(let p of a)p&&d++;let m=i.map(p=>1/(1+Math.exp(-p.score)));this.results.set(t,{kp:o,mask:c,score:Math.max(0,...m)}),this.subjects.set(t,d>0?{category:this.samCategory(),area:d,scores:m,...fm(a)}:null),this.trackCounts.set(t,i.length),this.blurred.delete(t),this.options.sam3?this.sam3Frame=t:this.sam2Frame=t,this.unsaved++,this.unsavedSubjects++}samCategory(){return this.options.sam2?.category??this.options.sam3?.category??"object"}async matchedPose(t,r){this.runner??=tr.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,variant:this.options.variant});let{people:n}=await this.runner.pose(t),o=n.map(a=>({person:a,overlap:a.keypoints.reduce((s,u)=>{let c=Math.max(0,Math.min(t.width-1,Math.round(u.x))),d=Math.max(0,Math.min(t.height-1,Math.round(u.y)));return s+(r[d*t.width+c]??0)/255*u.visibility},0)})).sort((a,s)=>s.overlap-a.overlap)[0];return!o||o.overlap<2?null:Float32Array.from(o.person.keypoints.flatMap(a=>[a.x,a.y,a.visibility]))}trackIds(t){let r=Math.max(0,Math.floor(this.clipFrame(t))),n=this.subjects.get(r)?.scores?.length??this.trackCounts.get(r)??1;return Array.from({length:n},(i,o)=>o+1)}maskAt(t,r){let n=Math.max(0,Math.floor(this.clipFrame(t)));this.signalMaskFrame!==n&&(this.signalMaskFrame=n,this.signalMasks.clear());let i=this.signalMasks.get(r??0);if(i)return i;if(!this.results.has(n)||!this.sourceWidth)return;let o=this.subjects.get(n),a=this.sourceWidth*this.sourceHeight,s=o?hm(o,a,r):new Uint8Array(a),u=o?.area??0;if(r!==void 0&&o?.scores){u=0;for(let d of s)d&&u++}let c={category:o?.category??this.samCategory(),mask:s,width:this.sourceWidth,height:this.sourceHeight,area:u,coverage:u/a,detectionIndex:(r??1)-1,trackId:r??1};return this.signalMasks.set(r??0,c),c}publishSignals(t,r){let n=this.signalBundle;if(!(!n||!this.sourceWidth)){n.setFrameSize(this.sourceWidth,this.sourceHeight);for(let i=t;i<=r;i++){if(this.publishedSignals.has(i))continue;this.publishedSignals.add(i);let o=Math.max(0,Math.floor(this.clipFrame(i))),a=this.maskAt(i);if(!a)continue;let s=n.getObjectResult(i-1).objects,u=this.subjects.get(o)?.scores,c=this.trackIds(i).flatMap(p=>{let h=this.maskAt(i,p);return h?[bo(h,i,this.compositionFps,u?.[p-1]??this.results.get(o)?.score??1,s.find(g=>g.trackId===p))]:[]});n.setObjectResult(i,c);let d=c[0]??bo(a,i,this.compositionFps,0),m=this.results.get(o)?.kp;n.setPoseResult(i,{people:m?[{score:d.score,boundingBox:d.boundingBox,trackId:1,keypoints:Array.from({length:17},(p,h)=>({x:(m[h*3]??0)/a.width,y:(m[h*3+1]??0)/a.height,visibility:m[h*3+2]??0}))}]:[]})}}}setSize(t,r){this.sourceWidth=t,this.sourceHeight=r,this.cellW=Math.ceil(t/this.cell),this.cellH=Math.ceil(r/this.cell)}size(){return{width:this.sourceWidth,height:this.sourceHeight}}result(t){return this.results.get(Math.max(0,t))}keypoint(t,r){r=Math.max(0,r);let n=`${t}:${r}`,i=this.smoothed.get(n);if(i)return i;let o=s=>{let u=0,c=0,d=0,m=0;for(let p=s-this.smoothing;p<=s+this.smoothing;p++){let h=this.mustHave(p<0?0:p);if(!h.kp)continue;let g=h.kp[t*3+2],b=(this.smoothing+1-Math.abs(p-s))*g*g;u+=h.kp[t*3]*b,c+=h.kp[t*3+1]*b,d+=g*b,m+=b}return m>1e-6?[u/m,c/m,d/m]:null},a=null;for(let s=0;s<=dm&&!a;s++)r-s>=0&&(a=o(r-s));return a??=[this.sourceWidth/2,this.sourceHeight/2,0],this.smoothed.set(n,a),a}blurredMask(t){if(t=Math.max(0,t),this.blurred.has(t))return this.blurred.get(t)??null;this.mustHave(t);let r=this.exact?this.results.get(t)?.mask??null:Jb(this.results,t,this.smoothing),n=r?ty(r,this.cellW,this.cellH,2):null;return this.blurred.set(t,n),n}grid(){return{cell:this.cell,width:this.cellW,height:this.cellH}}mustHave(t){let r=this.results.get(t);if(r)return r;throw new Error(`ClipVision "${this.source}": frame ${t} is not analysed yet. Read it while rendering (the composition prepares each frame), in a live physics world, or after \`await clip.ready(frame)\`.`)}cacheFile;async cachePath(){if(this.cacheFile!==void 0)return this.cacheFile;if(this.cacheFile=null,this.options.cacheDir===!1||typeof x>"u"||!x.versions?.node)return null;try{let[t,r,n,i]=await Promise.all([import("./shims/fs.mjs"),import("./shims/path.mjs"),import("./shims/os.mjs"),import("./crypto-TRDUAUC5.mjs")]),o=t.statSync(this.source),a=this.options.cacheDir??x.env.FRAMEFIELDS_VISION_CACHE_DIR??r.join(n.homedir(),".cache","framefields","vision"),s=this.options,u=this.exact?await this.prompted():void 0,c=JSON.stringify([Wb,r.resolve(this.source),o.size,o.mtimeMs,this.fps,this.tracksPose,this.tracksMask,this.cell,s.variant??"s",s.confidence??null,...s.sam2?[[u?.sam2Revision(s.sam2.model),s.sam2,3]]:[],...s.sam3&&u?[[u.sam3Revision(await u.sam3Precision(void 0,s.sam3.precision)),s.sam3,3]]:[]]),d=i.createHash("sha256").update(c).digest("hex").slice(0,24);t.mkdirSync(a,{recursive:!0}),this.cacheFile=r.join(a,`${r.basename(this.source)}.${d}.json`)}catch{this.cacheFile=null}return this.cacheFile}async loadCache(){let t=await this.cachePath();if(t)try{let r=await import("./shims/fs.mjs");if(!r.existsSync(t))return;let n=JSON.parse(r.readFileSync(t,"utf8"));if(n.cell!==this.cell)return;this.setSize(n.width,n.height);for(let[i,o]of Object.entries(n.frames))this.results.set(Number(i),{kp:o.kp?Float32Array.from(o.kp):null,score:o.score,mask:o.mask?new Uint8Array(Buffer.from(o.mask,"base64")):null})}catch{}}async saveCache(){this.unsaved=0;let t=await this.cachePath();if(!t||!this.sourceWidth)return;let r={};for(let[o,a]of this.results)r[o]={kp:a.kp?Array.from(a.kp,s=>Math.round(s*100)/100):null,mask:a.mask?Buffer.from(a.mask).toString("base64"):null,score:a.score};let n=await import("./shims/fs.mjs"),i=`${t}.${x.pid}.tmp`;n.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,cell:this.cell,frames:r})),n.renameSync(i,t)}async subjectsPath(){let t=await this.cachePath();return t?t.replace(/\.json$/,".subjects.json"):null}async loadSubjects(){let t=await this.subjectsPath();if(t)try{let r=await import("./shims/fs.mjs");if(!r.existsSync(t))return;let n=JSON.parse(r.readFileSync(t,"utf8"));if(this.sourceWidth&&n.width!==this.sourceWidth)return;this.sourceWidth||this.setSize(n.width,n.height);for(let[i,o]of Object.entries(n.frames)){let a=Buffer.from(o?.lengths??"","base64");this.subjects.set(Number(i),o&&{category:o.category,area:o.area,...o.scores&&{scores:o.scores},values:new Uint8Array(Buffer.from(o.values,"base64")),lengths:new Uint32Array(a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength))})}}catch{}}async saveSubjects(){this.unsavedSubjects=0;let t=await this.subjectsPath();if(!t||!this.sourceWidth)return;let r={};for(let[o,a]of this.subjects)r[o]=a&&{category:a.category,area:a.area,...a.scores&&{scores:a.scores},values:Buffer.from(a.values).toString("base64"),lengths:Buffer.from(a.lengths.buffer,a.lengths.byteOffset,a.lengths.byteLength).toString("base64")};let n=await import("./shims/fs.mjs"),i=`${t}.${x.pid}.tmp`;n.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,frames:r})),n.renameSync(i,t)}},Bi=class e{constructor(t,r,n){this.clip=t;this.t=r;this.placement=n}clip;t;placement;place(t){return new e(this.clip,void 0,t)}transform(){if(this.t)return this.t;let t=this.placement,{width:r,height:n}=this.clip.size();if(!t||!r)return{sx:1,sy:1,ox:0,oy:0};let i=t.width/r,o=t.height/n;if(t.fit!=="fill"){let a=t.fit==="contain"?Math.min(i,o):Math.max(i,o);i=a,o=a}return{sx:i,sy:o,ox:(t.x??0)+(t.width-r*i)/2,oy:(t.y??0)+(t.height-n*o)/2}}point(t,r){let n=Kb(t),i=this.clip.clipFrame(r),o=Math.floor(i),a=i-o,s=this.clip.keypoint(n,o),u=a>0?this.clip.keypoint(n,o+1):s,c=this.transform();return{x:(s[0]+(u[0]-s[0])*a)*c.sx+c.ox,y:(s[1]+(u[1]-s[1])*a)*c.sy+c.oy,visibility:s[2]+(u[2]-s[2])*a}}signals(t){let r=n=>Nr.builder({type:"custom",fn:i=>this.point(t,i.frame)[n]});return{x:r("x"),y:r("y"),visibility:r("visibility")}}silhouetteGrid(t){let r=this.clip.blurredMask(Math.round(this.clip.clipFrame(t)));if(!r)return null;let{cell:n,width:i,height:o}=this.clip.grid(),a=this.transform();return{data:r,width:i,height:o,originX:a.ox,originY:a.oy,scaleX:n*a.sx,scaleY:n*a.sy}}sample(t,r,n){let i=this.clip.blurredMask(Math.round(this.clip.clipFrame(t)));if(!i)return{alpha:0,gx:0,gy:0};let{cell:o,width:a,height:s}=this.clip.grid(),u=this.transform(),c=(r-u.ox)/u.sx/o-.5,d=(n-u.oy)/u.sy/o-.5,m=(h,g)=>h<0||g<0||h>=a||g>=s?0:i[g*a+h],p=(h,g)=>{let b=Math.floor(h),y=Math.floor(g),v=h-b,P=g-y,A=m(b,y)+(m(b+1,y)-m(b,y))*v,w=m(b,y+1)+(m(b+1,y+1)-m(b,y+1))*v;return A+(w-A)*P};return{alpha:p(c,d),gx:(p(c+1,d)-p(c-1,d))/(2*o*u.sx),gy:(p(c,d+1)-p(c,d-1))/(2*o*u.sy)}}};function Kb(e){let t=$n.indexOf(e);if(t<0)throw new Error(`Unknown keypoint "${e}". Use one of ${$n.join(", ")}.`);return t}async function Ei(e){if(!e||e.width<=0)return null;if(e.buffer)return{data:e.buffer,width:e.width,height:e.height};let r=e.canvas?.getContext("2d");return r?{data:r.getImageData(0,0,e.width,e.height).data,width:e.width,height:e.height}:null}function Qb(e){return go(e.masks,{classes:["person"],overlap:.2,maxGrowth:3.5})?.mask}function vs(e){if(!e)return 0;let t=0;for(let r=0;r<e.length;r++)t+=e[r];return t}function Jb(e,t,r){let n=e.get(t)?.mask??null;if(r<=0)return n;let i=vs(n),o=-1,a=null,s=-1,u=null,c=Math.max(1e3,i*1.35);for(let p=1;p<=r+1;p++){if(o<0&&t-p>=0){let h=e.get(t-p)?.mask??null;vs(h)>c&&(o=t-p,a=h)}if(s<0){let h=e.get(t+p)?.mask??null;vs(h)>c&&(s=t+p,u=h)}}if(!a&&!u)return n;let d=a??u;if(!d)return n;let m=n?new Uint8Array(n):new Uint8Array(d.length);if(a&&u&&s>o){let p=(t-o)/(s-o);for(let h=0;h<m.length;h++){let g=Math.round(a[h]+(u[h]-a[h])*p);g>m[h]&&(m[h]=g)}}else for(let p=0;p<m.length;p++)d[p]>m[p]&&(m[p]=d[p]);return m}function pm(e,t,r,n,i,o,a){for(let s=0;s<a;s++)for(let u=0;u<o;u++){let c=0,d=0;for(let m=s*n;m<Math.min(r,(s+1)*n);m++)for(let p=u*n;p<Math.min(t,(u+1)*n);p++)c+=e[m*t+p],d++;i[s*o+u]=d?Math.round(c/d):0}}function fm(e){let t=0;for(let a=1;a<=e.length;a++)(a===e.length||e[a]!==e[a-1])&&t++;let r=new Uint8Array(t),n=new Uint32Array(t),i=0,o=0;for(let a=1;a<=e.length;a++)(a===e.length||e[a]!==e[o])&&(r[i]=e[o],n[i++]=a-o,o=a);return{values:r,lengths:n}}function ey(e,t){let r=new Uint8Array(t),n=0;for(let i=0;i<e.values.length;i++){let o=Math.min(t,n+e.lengths[i]);e.values[i]!==0&&r.fill(e.values[i],n,o),n=o}return r}function ty(e,t,r,n){let i=new Float32Array(t*r),o=new Float32Array(t*r);for(let a=0;a<r;a++)for(let s=0;s<t;s++){let u=0,c=0;for(let d=-n;d<=n;d++){let m=s+d;m>=0&&m<t&&(u+=e[a*t+m],c++)}i[a*t+s]=u/c/255}for(let a=0;a<r;a++)for(let s=0;s<t;s++){let u=0,c=0;for(let d=-n;d<=n;d++){let m=a+d;m>=0&&m<r&&(u+=i[m*t+s],c++)}o[a*t+s]=u/c}return o}function hm(e,t,r){let n=ey(e,t);return e.scores?n.map(i=>(r===void 0?i>0:i===r)?255:0):n}function ry(e,t){let r=new Uint8Array(t.width*t.height);for(let{mask:n}of e)for(let i=0;i<r.length;i++)r[i]=Math.max(r[i]??0,n[i]??0);return r}var gm;function bm(){return gm??=typeof x>"u"||!x.versions?.node?Promise.resolve(null):Promise.all([import("./shims/fs.mjs"),import("./shims/path.mjs"),import("./shims/os.mjs"),import("./crypto-TRDUAUC5.mjs")]).then(([e,t,r,n])=>({fs:e,path:t,os:r,crypto:n})),gm}function ny(e,t){try{let r=e.readFileSync(t);if(r.byteLength<8)return null;let n=r.readUInt32LE(0),i=r.readUInt32LE(4);if(r.byteLength!==8+n*i*2)return null;let o=new Uint16Array(n*i);return Buffer.from(o.buffer).set(r.subarray(8)),{width:n,height:i,data:o}}catch{return null}}f();var Li=class{constructor(t){this.fps=t}fps;entries=new Map;reached=-1;resolver(t){let{live:r,compositionDurationFrames:n}=t,i={fps:this.fps,compositionDurationFrames:n,signals:t.signals};return(o,a)=>{let s=`${a.id}\0${a.startFrame}\0${a.durationFrames}`,u=this.entries.get(s);if(u&&u.live===r&&u.compositionFrames===n&&iy(u.binding,o))return u.resolved;let c=r?{kind:"recorded",recorder:new au({mode:o.mode,fps:this.fps,startFrame:a.startFrame,durationFrames:a.durationFrames,sourceStartSec:o.sourceStartSec,sample:Cu(o,i)})}:Du(o,a,i);return this.entries.set(s,{binding:o,live:r,compositionFrames:n,resolved:c}),c}}framesBefore(t){if(!this.recorders().some(i=>!i.complete&&i.nextFrame<t))return[];let n=[];for(let i=this.reached+1;i<t;i++)n.push(i);return n}advance(t){for(let r of this.recorders())r.advance(t)}reach(t){t>this.reached&&(this.reached=t);for(let[,r]of this.entries){if(r.resolved.kind!=="recorded")continue;let n=r.resolved.recorder;n.ensure(t),t>=r.compositionFrames-1&&!n.complete&&n.nextFrame>n.startFrame&&n.close()}}get pending(){return this.recorders().some(t=>!t.complete)}recorders(){let t=[];for(let{resolved:r}of this.entries.values())r.kind==="recorded"&&t.push(r.recorder);return t}};function iy(e,t){return e.signal===t.signal&&e.mode===t.mode&&e.sourceStartSec===t.sourceStartSec}function Ss(e,t){let r=e.fps>0?t/e.fps:0;return{...e,frame:t,time:r,progress:e.duration>0?Math.max(0,Math.min(1,r/e.duration)):0}}var ym=new WeakMap,oy=0;function Pr(e){if(!e)return"";if(e.kind==="rate"||e.kind==="keyframes")return JSON.stringify(e);let t=e.kind==="sampled"?e.history:e.recorder,r=ym.get(t);return r===void 0&&(r=++oy,ym.set(t,r)),`${e.kind}:${r}`}f();f();var ay={rotation:.2,rotateX:.2,rotateY:.2,rotateZ:.2};function _e(e,t,r){if(typeof e=="number")return e;if(typeof e=="function")return e(t);let n=t/r;return e.get({frame:t,fps:r,time:n,duration:0,durationMs:0,progress:0,deltaTime:1/r})}function Zt(e,t){let r=t-e;return r-=Math.round(r/360)*360,e+r}function sy(e,t){let r=e.length;if(r===0)return[];let n=new Uint8Array(r);n[0]=1,n[r-1]=1;let i=[[0,r-1]];for(;i.length>0;){let[a,s]=i.pop(),u=-1,c=t;for(let d=a+1;d<s;d++){let m=(d-a)/(s-a),p=e[a]+(e[s]-e[a])*m,h=Math.abs(e[d]-p);h>c&&(c=h,u=d)}u>=0&&(n[u]=1,i.push([a,u],[u,s]))}let o=[];for(let a=0;a<r;a++)n[a]&&o.push([a,uy(e[a]),"none"]);return o.length===2&&o[0][1]===o[1][1]&&o.pop(),o}function uy(e){return Math.round(e*1e4)/1e4}var ks=class{constructor(t,r,n){this.length=t;this.fps=r;this.ensure=n}length;fps;ensure;channels=new Map;signals=new Map;channel(t){let r=this.channels.get(t);return r||(r=new Float32Array(this.length),this.channels.set(t,r)),r}signal(t){let r=this.signals.get(t);if(!r){let n=this.channel(t),i=this.fps;r=Nr.builder({type:"custom",fn:o=>{this.ensure();let a=o.fps&&o.fps!==i?o.frame/o.fps*i:o.frame,s=Math.max(0,Math.min(n.length-1,Math.round(a)));return n[s]}}),this.signals.set(t,r)}return r}},Mr=class{constructor(t,r,n){this.sim=t;this.gravity=r;if(!(n.fps>0))throw new Error("Physics: `fps` must be > 0.");if(!(n.frames>=1)||!Number.isInteger(n.frames))throw new Error("Physics: `frames` must be a positive integer.");this.fps=n.fps,this.frames=n.frames,this.startFrame=Math.max(0,Math.round(n.startFrame??0)),this.pixelsPerMeter=n.pixelsPerMeter??100,this.substeps=Math.max(1,Math.round(n.substeps??4)),this.impactDecay=Math.max(.5,n.impactDecay??8),this.impactReference=n.impactReference??1500,this.worldRecording=this.newRecording()}sim;gravity;fps;frames;startFrame;pixelsPerMeter;substeps;impactDecay;impactReference;bodies=[];forces=[];impulses=[];fields=[];worldRecording;allCollisions=[];locked=!1;liveMode=!1;stepper;chain=Promise.resolve();get collisions(){return this.ensureSimulated(),this.allCollisions}get impact(){return this.worldRecording.signal("impact")}simulate(){if(this.liveMode)throw new Error("Physics: this world is live; it steps as frames render.");return this.ensureSimulated(),this}bakeKeyframes(t={}){if(this.locked)throw new Error("Physics: bakeKeyframes() must come before simulate(), live() or reading any body signal.");return this.bakeDefault=t,this.ensureSimulated(),this}live(t,r={}){if(this.locked)throw new Error("Physics: live() must come before simulate() or reading any body signal.");this.locked=!0,this.liveMode=!0;let n=async i=>{await t.prepareVision?.(i);for(let o of r.inputs??[])await o.ready(i)};this.prepareInputs=n;for(let i of this.bodies)this.bind(i);return t.onPrepareFrame(i=>this.advanceTo(i.frame)),this}advanceTo(t){return this.chain=this.chain.then(async()=>{let r=Math.min(this.frames-1,Math.round(t)-this.startFrame);this.stepper||(await this.prepareInputs?.(this.startFrame),this.stepper=this.begin());let n=this.stepper;for(;n.current<r;){let i=n.current+1;await this.prepareInputs?.(this.startFrame+i),this.stepFrame(n,i)}n.current===this.frames-1&&!n.freed&&(n.freed=!0,this.sim.free())}),this.chain}prepareInputs;bakeDefault;newRecording(){return new ks(this.startFrame+this.frames,this.fps,()=>this.ensureSimulated())}assertOpen(){if(this.locked)throw new Error("Physics: the world has already started; add every body, joint and force before simulate(), live() or reading signals.")}addBody(t){return this.assertOpen(),this.bodies.push(t),t}addForce(t,r){this.assertOpen(),this.forces.push({body:t,accel:r})}addField(t,r){this.assertOpen(),this.fields.push({accel:t,...r&&{targets:new Set(r)}})}addImpulse(t,r,n){this.assertOpen(),this.impulses.push({body:t,frame:Math.round(r),dv:n})}ensureSimulated(){if(this.locked)return;this.locked=!0;let t=this.begin();for(let r=1;r<this.frames;r++)this.stepFrame(t,r);t.freed=!0,this.sim.free();for(let r of this.bodies)this.bind(r)}begin(){let{startFrame:t}=this,r=this.bodies,n=new Map;for(let o of r)n.set(o.sim,o);for(let o of r)o.startFrame>0&&o.sim.setEnabled(!1);let i=new Map;for(let o of r){o.record(t,-1),o.recording.channel("impact");let a=o.kinematicTarget?.(t);a&&i.set(o,a)}this.worldRecording.channel("impact");for(let o of[...r.map(a=>a.recording),this.worldRecording])for(let a of o.channels.values())a.fill(a[t]);return{current:0,freed:!1,bySim:n,kinematicFrom:i,level:new Map(r.map(o=>[o,0]))}}stepFrame(t,r){let{fps:n,startFrame:i,substeps:o}=this,a=1/(n*o),s=this.bodies,u=i+r,c=this.gravity.length,d=new Map;for(let w of s)w.startFrame>0&&r===w.startFrame+1&&w.sim.setEnabled(!0),d.set(w,w.sim.velocity());let m=w=>w.type==="dynamic"&&r>w.startFrame,p=new Map;for(let w of s)p.set(w,this.gravity.map(T=>m(w)?T*w.gravityScale/n:0));for(let w of this.impulses){if(w.frame!==r)continue;let T=w.body;if(!m(T))continue;let S=T.sim.mass();T.sim.applyImpulse(w.dv.map(O=>O*S));let C=p.get(T);for(let O=0;O<c;O++)C[O]+=w.dv[O]}let h=this.forces.filter(w=>m(w.body)).map(w=>{let T=w.body,S=w.accel(u),C=p.get(T);for(let O=0;O<c;O++)C[O]+=S[O]/n;return{body:T,a:S}}),g=new Map;for(let w of s){let T=w.kinematicTarget?.(u);T&&g.set(w,T)}let b=new Set,y=[];for(let w=1;w<=o;w++){for(let{body:T,a:S}of h){let C=T.sim.mass();T.sim.applyImpulse(S.map(O=>O*C*a))}for(let T of this.fields)for(let S of s){if(!m(S)||T.targets&&!T.targets.has(S))continue;let C=T.accel(S,u);if(!C)continue;let O=S.sim.mass();S.sim.applyImpulse(C.map(W=>W*O*a));let z=p.get(S);for(let W=0;W<c;W++)z[W]+=C[W]*a}for(let[T,S]of g){let C=t.kinematicFrom.get(T)??S,O=w/o;T.sim.setKinematicTarget(ly(C.position,S.position,O),this.lerpRotation(C.rotation,S.rotation,O))}this.sim.step(a);for(let[T,S]of this.sim.drainCollisionStarts()){let C=t.bySim.get(T),O=t.bySim.get(S);if(!C||!O)continue;let z=`${s.indexOf(C)}:${s.indexOf(O)}`;b.has(z)||(b.add(z),y.push([C,O]))}}t.kinematicFrom=g;for(let w of s)w.record(u,u-1);let v=new Map;if(y.length>0){let w=this.pixelsPerMeter,T=S=>{if(S.type!=="dynamic")return 0;let C=S.sim.velocity(),O=d.get(S),z=p.get(S),W=0;for(let _=0;_<c;_++){let L=C[_]-(O[_]+z[_]);W+=L*L}return Math.sqrt(W)*w};for(let[S,C]of y){let O=Math.max(T(S),T(C));for(let[z,W]of[[S,C],[C,S]]){v.set(z,Math.max(v.get(z)??0,O));let _={frame:u,with:W,speed:O};z.collisions.push(_),z===S&&this.allCollisions.push({..._,body:S})}}}let P=Math.exp(-1/this.impactDecay),A=0;for(let w of s){let T=Math.max((v.get(w)??0)/this.impactReference,(t.level.get(w)??0)*P);t.level.set(w,T),w.recording.channel("impact")[u]=T,T>A&&(A=T)}this.worldRecording.channel("impact")[u]=A,t.current=r}bind(t){let r=t.layer,n=t.output??(this.bakeDefault?"keyframes":"signals");if(typeof r?.animate!="function"||n==="none"||t.type==="fixed")return;let i=t.boundChannels();if(n==="keyframes"&&this.liveMode)throw new Error('Physics: live worlds bind signals; drop `output: "keyframes"` or use simulate().');if(n==="signals"){let s=Q.create();for(let[u,c]of i)s.signal(u,t.recording.signal(c));r.animate(s);return}let o=this.bakeDefault?.tolerance??.25,a=Q.create();for(let[s,u]of i){let d=t.recording.channel(u).subarray(this.startFrame),m=ay[s]??1;a.keys(s,sy(d,o*m))}r.animate(a)}};function ly(e,t,r){return e.map((n,i)=>n+(t[i]-n)*r)}var Ps=(e,t)=>e===void 0?t:typeof e=="number"?[e,e]:e,bn=class extends Qt{op="Particles";particleStatic;particleState;options;constructor(t){super({}),this.options=t;let r=t.emitter??{},n=s=>typeof s=="number"?s:void 0,i=t.width,o=t.height,a=(Array.isArray(t.color)?t.color:[t.color??"#ffffff"]).map(s=>{let u=hu(s);return[u.r,u.g,u.b,u.a]});this.particleStatic={max:Math.max(1,Math.round(t.max??2e4)),seed:Math.round(t.seed??1)>>>0,layer:{x:t.x??0,y:t.y??0,width:i,height:o},emitter:{shape:r.shape??"rect",x:n(r.x)??(r.shape==="circle"||r.shape==="ring"||r.shape==="point"?i/2:0),y:n(r.y)??(r.shape==="circle"||r.shape==="ring"||r.shape==="point"?o/2:0),width:r.width??i,height:r.height??(r.shape==="line"?0:o),radius:r.radius??Math.min(i,o)/4,radial:r.radial??!1},lifetime:Ps(t.lifetime,[2,4]),speed:Ps(t.speed,[40,160]),direction:t.direction??-90,spread:t.spread??360,bounds:t.bounds??"none",floor:t.floor??null,bounce:t.bounce??.3,size:Ps(t.size,[6,0]),sizeJitter:t.sizeJitter??.5,fade:t.fade??[.1,.3],shape:t.shape??"circle",stretch:t.stretch??.04,blend:t.blend??"normal",colors:a.slice(0,8),colorBySpeed:t.colorBySpeed??null,opacity:t.opacity??1,substeps:t.substeps??2,prewarm:t.prewarm??0}}particleFrame(t,r){let n=this.options,i=(b,y)=>b===void 0?y:_e(b,t,r),o=t-(n.startFrame??0),a=(n.emitter?.bursts??[]).filter(b=>Math.round(b.frame)===o).reduce((b,y)=>b+y.count,0),s=n.gravity,u=Array.isArray(s)?[i(s[0],0),i(s[1],0)]:[0,i(s,0)],c=null;n.push&&(c={strength:i(n.push.strength,6e3),sweep:i(n.push.sweep,6e4),mask:n.push.person.silhouetteGrid(t),previous:n.push.person.silhouetteGrid(Math.max(0,t-1))});let d=n.emitter?.x,m=n.emitter?.y,p=d!==void 0&&typeof d!="number"||m!==void 0&&typeof m!="number",h=b=>({x:d===void 0?this.particleStatic.emitter.x:_e(d,b,r),y:m===void 0?this.particleStatic.emitter.y:_e(m,b,r)}),g;if(p){let b=h(t),y=h(Math.max(0,t-1));g={x:b.x,y:b.y,previousX:y.x,previousY:y.y}}return{...g&&{emitter:g},rate:i(n.emitter?.rate,1e3),burst:a,gravity:u,drag:i(n.drag,.4),noise:{strength:i(n.noise?.strength,0),scale:n.noise?.scale??300,speed:n.noise?.speed??.3},attractors:(n.attractors??[]).map(b=>({x:i(b.x,0),y:i(b.y,0),strength:i(b.strength,0),radius:b.radius??200})),push:c}}};f();var pe=rt(wm(),1);f();var ji=rt(Dp(),1);function cy(e=64){if(!Number.isSafeInteger(e)||e<1)throw new Error("[FrameGrid] maxFrames must be a positive safe integer.");return Math.min(e,120)}function Ms(e,t){if(e>t)throw new Error(`[FrameGrid] Requested frames exceeds the safety threshold of ${t}. Increase stepFrames/stepMs or narrow the start/end range.`)}function vm(e,t,r,n,i){if(!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<e)throw new Error(`[FrameGrid] Invalid ${i} range: start${i==="frame"?"Frame":"Ms"} must be <= end${i==="frame"?"Frame":"Ms"}; bounds must be finite and nonnegative.`);if(!Number.isFinite(r)||r<=0)throw new Error(`[FrameGrid] Invalid ${i==="frame"?"stepFrames":"stepMs"}: ${r}. Must be > 0 and finite.`);if(i==="frame"&&![e,t,r].every(Number.isSafeInteger))throw new Error("[FrameGrid] Frame bounds and stepFrames must be safe integers.");let o=[];for(let a=0;;a++){let s=e+a*r;if(!Number.isFinite(s))throw new Error("[FrameGrid] Range arithmetic overflow.");if(a>0&&s<=o[a-1])throw new Error("[FrameGrid] Step does not advance the sampling range.");if(s>t)break;Ms(a+1,n),o.push(s)}return o}function Ts(e,t=24,r){let n=e.fps??t;Bn(n);let i=cy(e.maxFrames),o;if(e.frames?.length?(Ms(e.frames.length,i),o=e.frames.map(a=>Ct({frame:a},n))):e.timesMs?.length?(Ms(e.timesMs.length,i),o=e.timesMs.map(a=>Ct({atMs:a},n))):o=dy(e,n,r,i),!o.length)throw new Error("[FrameGrid] Zero frames were resolved for sampling.");return{samples:o,fps:n}}function dy(e,t,r,n){let i=r===void 0?void 0:ou(r,t)-1;if(e.startMs!==void 0||e.endMs!==void 0||e.stepMs!==void 0){let s=e.startMs??0,u=e.endMs??(i===void 0?s+1e3:i/t*1e3);return vm(s,u,e.stepMs??5e3/t,n,"millisecond").map(c=>Ct({atMs:c},t))}let o=e.startFrame??0,a=e.endFrame??Math.min(o+30,i??o+30);return vm(o,a,e.stepFrames??5,n,"frame").map(s=>Ct({frame:s},t))}function As(e,t,r){let n=r.gap??12,i=r.padding??16,a=r.showHeader??!0?54:0,s=r.maxGridWidth??4096,u=r.maxGridHeight??4096,c=r.columns;(!c||c<=0)&&(e<=4?c=e:e<=9?c=3:e<=16?c=4:e<=25?c=5:c=6),c=Math.min(c,e);let d=Math.ceil(e/c),m=Math.max(120,Math.min(r.cellWidth??320,960)),p=r.cellHeight??Math.round(m/(t>0?t:16/9)),h=c*m+(c-1)*n+i*2,g=d*p+(d-1)*n+i*2+a;if(h>s||g>u){let b=Math.min((s-(c-1)*n-i*2)/(c*m),(u-(d-1)*n-i*2-a)/(d*p));if(b<.25)throw new Error(`[FrameGrid] Cannot fit ${e} cells (${c}x${d}) into max dimensions [${s}x${u}]. Reduce cell count or decrease cellWidth.`);m=Math.max(100,Math.floor(m*b)),p=Math.round(m/(t>0?t:16/9)),h=c*m+(c-1)*n+i*2,g=d*p+(d-1)*n+i*2+a}return{columns:c,rows:d,cellWidth:m,cellHeight:p,totalWidth:h,totalHeight:g,headerHeight:a,gap:n,padding:i}}async function yn(e,t={}){let r=e.fps??24,n=e.durationMs,{samples:i,fps:o}=Ts(t,r,n),a=e.width??1920,s=e.height??1080,u=a>0&&s>0?a/s:16/9,c=As(i.length,u,t),d=t.renderer??new pe.HeadlessMediaRenderer,m=[];for(let y of i){let v=await e.renderFrame({frame:y.frame,fps:o,renderer:d});m.push(v)}let p=new ji.Canvas(c.totalWidth,c.totalHeight),h=p.getContext("2d");if(h.fillStyle=t.backgroundColor??"#090a0f",h.fillRect(0,0,c.totalWidth,c.totalHeight),t.showHeader!==!1&&c.headerHeight>0){let y=t.headerText??`FrameGrid Conformance Review | Frames ${i[0].frame}\u2013${i[i.length-1].frame} (Count: ${i.length})`,v=`${a}\xD7${s} @ ${o} FPS | Cell: ${c.cellWidth}\xD7${c.cellHeight}px | Step: ${t.stepFrames?`${t.stepFrames}f`:t.stepMs?`${t.stepMs}ms`:"Custom"}`;h.fillStyle="#f8fafc",h.font="bold 15px sans-serif",h.fillText(y,c.padding,c.padding+18),h.fillStyle="#94a3b8",h.font="12px sans-serif",h.fillText(v,c.padding,c.padding+36),h.strokeStyle="#1e2433",h.lineWidth=1,h.beginPath(),h.moveTo(c.padding,c.padding+46),h.lineTo(c.totalWidth-c.padding,c.padding+46),h.stroke()}let g=t.showLabels??!0;for(let y=0;y<i.length;y++){let v=i[y],P=y%c.columns,A=Math.floor(y/c.columns),w=c.padding+P*(c.cellWidth+c.gap),T=c.padding+c.headerHeight+A*(c.cellHeight+c.gap),S=await(0,ji.loadImage)(m[y]);if(h.drawImage(S,w,T,c.cellWidth,c.cellHeight),h.strokeStyle="#262b3d",h.lineWidth=1,h.strokeRect(w,T,c.cellWidth,c.cellHeight),g){let C=`F:${v.frame} \u2022 ${Math.round(v.timeMs)}ms`;h.font="bold 11px sans-serif";let z=h.measureText(C).width+14,W=20,_=w+6,L=T+6;h.fillStyle="#090a0fee",h.beginPath(),h.roundRect(_,L,z,W,4),h.fill(),h.strokeStyle="#6366f155",h.lineWidth=1,h.stroke(),h.fillStyle="#e2e8f0",h.fillText(C,_+7,L+14)}}let b=await p.toBuffer("png");return t.outputPath&&await Fr.writeFile(t.outputPath,b),b}f();f();function Sm(e){let t;if(Array.isArray(e.mesh))t=e.mesh;else if(e.mesh&&typeof e.mesh=="object"&&"kind"in e.mesh)t=[e.mesh];else if(e.mesh&&typeof e.mesh=="object"&&e.mesh.type==="shard"){let i=Math.max(1,e.mesh.variants??8);t=[];for(let o=0;o<i;o++)t.push(Ae.shard({radius:20,facets:e.mesh.facets??12+o%6,seed:(e.seed??1)*31+o*17,irregularity:e.mesh.irregularity??.35}))}else if(e.mesh==="sphere")t=[Ae.sphere({radius:20})];else if(e.mesh==="roundedBox")t=[Ae.roundedBox({size:[30,30,30]})];else if(e.mesh==="cylinder")t=[Ae.cylinder({radius:15,height:35})];else{t=[];for(let o=0;o<8;o++)t.push(Ae.shard({radius:20,facets:10+o%8*2,seed:(e.seed??42)+o*13,irregularity:.35+o%3*.1}))}let r={id:e.id??X("swarm3d"),kind:"model3d",x:0,y:0,z:0,opacity:1,twoSided:!0,material:e.material??"lit",roughness:e.roughness??.35,metallic:e.metallic??.7,specularIntensity:e.specularIntensity??.5,ambientIntensity:e.ambientIntensity??1,startFrame:e.startFrame,durationFrames:e.durationFrames,swarm3d:{...e,meshVariants:t}},n=t[0];return n&&(n.modelData&&(r.modelData=n.modelData),n.primitive3d&&(r.primitive3d=n.primitive3d)),B.model(r)}var py=["material","shininess","roughness","specularIntensity","metallic","ambientIntensity","ior","transmission","dispersion","fresnelPower","envIntensity","emissive","emissiveIntensity","castShadow"];function Mt(e){let t=e,r={};for(let n of py)t[n]!==void 0&&(r[n]=t[n]);return r}function fy(e){return e==="lit"||e==="unlit"||e==="toon"?e:void 0}function Cs(e){return e instanceof oo?e.getPoints(96):e}function Le(e,t,r){let n=Object.fromEntries(Object.entries({...t,color:r.color,material:fy(r.material),shininess:r.shininess,roughness:r.roughness,metallic:r.metallic}).filter(([,i])=>i!==void 0));return B.model({id:r.id??X(e),modelData:Mu(n),primitive3d:n,is3D:!0,x:r.x??0,y:r.y??0,z:r.z??0,rotateX:r.rotateX??0,rotateY:r.rotateY??0,rotateZ:r.rotateZ??0,scale:r.scale??1,scaleX:r.scaleX??1,scaleY:r.scaleY??1,scaleZ:r.scaleZ??1,opacity:r.opacity??1,color:r.tint,material:r.material,shininess:r.shininess??32,roughness:r.roughness,specularIntensity:r.specularIntensity??.5,ambientIntensity:r.ambientIntensity??1,metallic:r.metallic,...Mt(r),twoSided:r.twoSided??!1,wireframe:r.wireframe,startFrame:r.startFrame,durationFrames:r.durationFrames})}function xn(e,t){let r=t.faces??t.items??[];for(let[n,i]of Object.entries(t))Object.defineProperty(e,n,{value:i,enumerable:!1,configurable:!0});return Object.defineProperty(e,Symbol.iterator,{value:function*(){yield*r},enumerable:!1,configurable:!0}),e}function hy(e){let t=e.scale??1,r=Math.max(Math.abs(t*(e.scaleX??1)),Math.abs(t*(e.scaleY??1)));return r>0?r:1}var Ae={cube(e){let t=e.size,[r,n,i]=typeof t=="number"?[t,t,t]:t,o=e.twoSided??!0,a={front:"#3b82f6",back:"#1d4ed8",left:"#2563eb",right:"#1e40af",top:"#60a5fa",bottom:"#172554"},s=(h,g,b,y,v,P)=>{if(g&&typeof g=="object"&&"kind"in g){let w=g;return w.position="absolute",w.is3D=!0,w.twoSided=o,w.material=w.material??e.material??"lit",w.shininess=w.shininess??e.shininess??32,w.specularIntensity=w.specularIntensity??e.specularIntensity??.5,e.roughness!==void 0&&w.roughness===void 0&&(w.roughness=e.roughness),e.metallic!==void 0&&w.metallic===void 0&&(w.metallic=e.metallic),e.ambientIntensity!==void 0&&w.ambientIntensity===void 0&&(w.ambientIntensity=e.ambientIntensity),Object.assign(w,P),w}let A=typeof g=="string"?{background:g}:g??{background:b};return B.box({id:`${e.id??"cube"}-${h}`,position:"absolute",width:y,height:v,is3D:!0,twoSided:o,material:A.material??e.material??"lit",shininess:A.shininess??e.shininess??32,specularIntensity:A.specularIntensity??e.specularIntensity??.5,roughness:A.roughness??e.roughness,metallic:A.metallic??e.metallic,ambientIntensity:A.ambientIntensity??e.ambientIntensity??1,...Mt({...e,...A}),background:A.background??b,borderRadius:A.borderRadius??0,borderWidth:A.borderWidth,borderColor:A.borderColor,opacity:A.opacity??1,children:A.children??[],...P})},u=r/2,c=n/2,d=i/2,m=[s("front",e.faces?.front,a.front,r,n,{x:0,y:0,z:-d,rotateX:0,rotateY:0,rotateZ:0}),s("back",e.faces?.back,a.back,r,n,{x:0,y:0,z:d,rotateX:0,rotateY:180,rotateZ:0}),s("left",e.faces?.left,a.left,i,n,{x:-u,y:0,z:0,rotateX:0,rotateY:90,rotateZ:0}),s("right",e.faces?.right,a.right,i,n,{x:u,y:0,z:0,rotateX:0,rotateY:-90,rotateZ:0}),s("top",e.faces?.top,a.top,r,i,{x:0,y:-c,z:0,rotateX:-90,rotateY:0,rotateZ:0}),s("bottom",e.faces?.bottom,a.bottom,r,i,{x:0,y:c,z:0,rotateX:90,rotateY:0,rotateZ:0})],p=B.box({id:e.id??X("cube"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:r,height:n,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:m});return xn(p,{faces:m})},carousel(e){let{items:t,radius:r,faceInward:n=!1,twoSided:i=!0}=e,o=t.length,a=o>0?360/o:0,s=t.map((c,d)=>{let m=d*a,p=m*Math.PI/180,h=r*Math.sin(p),g=-r*Math.cos(p),b=n?180-m:-m,y=c;return y.position="absolute",y.is3D=!0,y.twoSided=i,y.x=h,y.y=0,y.z=g,y.rotateY=b,y}),u=B.box({id:e.id??X("carousel"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:e.itemWidth??200,height:e.itemHeight??200,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:s});return xn(u,{items:s})},prism(e){let t=Math.max(3,Math.round(e.sides));if(e.sideConfigs&&e.sideConfigs.length>0){let{radius:n,height:i,twoSided:o=!0}=e,a=2*n*Math.tan(Math.PI/t),s=360/t,u=[];for(let d=0;d<t;d++){let m=d*s,p=m*Math.PI/180,h=n*Math.sin(p),g=-n*Math.cos(p),b=e.sideConfigs[d],y=e.color??`hsl(${d*360/t}, 70%, 50%)`;if(b&&typeof b=="object"&&"kind"in b){let P=b;P.position="absolute",P.is3D=!0,P.twoSided=o,P.x=h,P.y=0,P.z=g,P.rotateY=-m,Object.assign(P,Mt(e)),u.push(P);continue}let v=typeof b=="string"?{background:b}:b??{background:y};u.push(B.box({id:`${e.id??"prism"}-panel-${d}`,position:"absolute",width:a,height:i,is3D:!0,twoSided:o,x:h,y:0,z:g,rotateY:-m,background:v.background??y,borderRadius:v.borderRadius??0,borderWidth:v.borderWidth,borderColor:v.borderColor,opacity:v.opacity??e.opacity??1,material:v.material??e.material??"lit",shininess:v.shininess??e.shininess??32,specularIntensity:v.specularIntensity??e.specularIntensity??.5,ambientIntensity:v.ambientIntensity??e.ambientIntensity??1,...Mt({...e,...v}),children:v.children??[]}))}let c=B.box({id:e.id??X("prism"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:a,height:i,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:u});return xn(c,{faces:u})}let r=Le("prism",{type:"cylinder",radius:e.radius,radiusTop:e.radiusTop??e.radius,radiusBottom:e.radiusBottom??e.radius,height:e.height,segments:t,openEnded:e.openEnded??!1,flatShaded:e.flatShaded??!0},{...e,color:e.color??"#3b82f6",twoSided:e.twoSided??!!e.openEnded});return xn(r,{faces:[r],items:[r]})},pyramid(e){let t=Math.max(3,Math.round(e.sides??4));return Le("pyramid",{type:"cylinder",radius:e.radius??60,radiusTop:e.radiusTop??0,radiusBottom:e.radius??60,height:e.height,segments:t,openEnded:e.openEnded??!1,flatShaded:e.flatShaded??!0},{...e,color:e.color??"#f59e0b",twoSided:e.twoSided??!!e.openEnded})},plane(e){return B.box({id:e.id??X("plane"),position:"absolute",width:e.width,height:e.height,x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,twoSided:e.twoSided??!0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,background:e.background??"#3b82f6",borderRadius:e.borderRadius??0,opacity:e.opacity??1,...Mt(e),children:e.children??[]})},grid(e){let{width:t,height:r}=e,n=e.id??X("grid"),i=Math.max(1,Math.round(e.divisions??10)),o=e.lineWidth??2,a=e.color??"rgba(59, 130, 246, 0.5)",s=(p,h,g,b,y)=>B.box({id:`${n}-${p}`,position:"absolute",x:h,y:g,z:0,width:b,height:y,is3D:!0,twoSided:!0,material:"unlit",background:a}),u=4096,c=[],d=Math.ceil(r/u),m=Math.ceil(t/u);for(let p=0;p<=i;p++){let h=p/i-.5;for(let g=0;g<d;g++){let b=r/d,y=-r/2+b*(g+.5);c.push(s(`v${p}-${g}`,h*t,y,o,b))}for(let g=0;g<m;g++){let b=t/m,y=-t/2+b*(g+.5);c.push(s(`h${p}-${g}`,y,h*r,b,o))}}return B.box({id:n,position:"absolute",width:t,height:r,x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??90,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,background:"transparent",opacity:e.opacity??1,children:c})},text(e){return e.extrusionDepth&&e.extrusionDepth>0?Ae.extrudedText({...e,depth:e.extrusionDepth}):B.text(e.text,{id:e.id??X("text3d"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,twoSided:e.twoSided??!0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,fontSize:e.fontSize??48,fontFamily:e.fontFamily,fontWeight:e.fontWeight??"bold",fontStyle:e.fontStyle,fill:e.fill??"#ffffff",align:e.align??"center",direction:e.direction,verticalAlign:e.verticalAlign??"middle",letterSpacing:e.letterSpacing,lineHeight:e.lineHeight,material:e.material??"lit",shininess:e.shininess??64,roughness:e.roughness,specularIntensity:e.specularIntensity??.8,ambientIntensity:e.ambientIntensity??1,metallic:e.metallic,...Mt(e),opacity:e.opacity??1,background:e.background,borderRadius:e.borderRadius,padding:e.padding,stroke:e.stroke,strokeWidth:e.strokeWidth})},extrudedText(e){let{depth:t,text:r,fill:n="#ffffff",bevelColor:i}=e,o,a=(e.curveTolerance??.1)/hy(e),s=(e.fontFamily?er.getParsed(e.fontFamily):null)??er.getParsed("Inter")??er.getParsed("Unbounded")??er.getFirstParsed();s&&(o=Pu({text:r,font:s,fontSize:e.fontSize??48,depth:t,fill:n,bevelColor:i,curveSegments:e.curveSegments,curveTolerance:a,align:e.align,direction:e.direction,verticalAlign:e.verticalAlign,letterSpacing:e.letterSpacing,material:e.material==="lit"||e.material==="unlit"||e.material==="toon"?e.material:void 0,shininess:e.shininess,roughness:e.roughness,metallic:e.metallic}).modelData);let u=B.model({id:e.id??X("extruded-text"),modelData:o,is3D:!0,x:e.x??0,y:e.y??0,z:e.z??0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,scale:e.scale??1,scaleX:e.scaleX??1,scaleY:e.scaleY??1,scaleZ:e.scaleZ??1,opacity:e.opacity??1,material:e.material,shininess:e.shininess??32,roughness:e.roughness,specularIntensity:e.specularIntensity??.8,ambientIntensity:e.ambientIntensity??1,metallic:e.metallic,...Mt(e),twoSided:e.twoSided??!0,text3dOptions:{...e,curveTolerance:a}});return xn(u,{faces:[u],items:[u]})},roundedBox(e){return Le("rounded-box",{type:"roundedBox",width:e.width,height:e.height,depth:e.depth,radius:e.radius,segments:e.segments,taper:e.taper},e)},sphere(e){return Le("sphere",{type:"sphere",radius:e.radius,segments:e.segments},e)},cylinder(e){return Le("cylinder",{type:"cylinder",radius:e.radius,radiusTop:e.radiusTop,radiusBottom:e.radiusBottom,height:e.height,segments:e.segments,openEnded:e.openEnded,flatShaded:e.flatShaded},{...e,twoSided:e.twoSided??!!e.openEnded})},torus(e={}){return Le("torus",{type:"torus",radius:e.radius,tube:e.tube,radialSegments:e.radialSegments,tubularSegments:e.tubularSegments,arc:e.arc},e)},capsule(e={}){return Le("capsule",{type:"capsule",radius:e.radius,length:e.length,capSegments:e.capSegments,radialSegments:e.radialSegments},e)},ring(e={}){return Le("ring",{type:"ring",innerRadius:e.innerRadius,outerRadius:e.outerRadius,depth:e.depth,thetaSegments:e.thetaSegments,phiSegments:e.phiSegments,thetaStart:e.thetaStart,thetaLength:e.thetaLength},e)},polyhedron(e={}){let t=e.shape??e.type??"icosahedron";return Le(t,{type:"polyhedron",shape:t,radius:e.radius,detail:e.detail,flatShaded:e.flatShaded},e)},icosahedron(e={}){return Ae.polyhedron({...e,shape:"icosahedron"})},icosphere(e={}){return Ae.polyhedron({...e,shape:"icosphere",detail:e.detail??2,flatShaded:e.flatShaded??!1})},extrude(e){return Le("extrude",{type:"extrude",shape:e.shape,d:e.d,contour:e.contour,holes:e.holes,depth:e.depth,bevelThickness:e.bevelThickness,bevelSize:e.bevelSize,bevelSegments:e.bevelSegments,bevelColor:e.bevelColor,curveSegments:e.curveSegments,curveTolerance:e.curveTolerance,center:e.center},e)},lathe(e){let t=e.capped??e.closed;return Le("lathe",{type:"lathe",points:e.points,segments:e.segments,phiStart:e.phiStart,phiLength:e.phiLength,capped:t,closed:e.closed,flatShaded:e.flatShaded},{...e,twoSided:e.twoSided??!(t??!1)})},tube(e){let t=e.path??e.points;if(!t)throw new Error("Layer3D.tube requires `path` or `points`");return Le("tube",{type:"tube",path:Cs(t),radius:e.radius,innerRadius:e.innerRadius,radiusTaper:e.radiusTaper,tubularSegments:e.tubularSegments,radialSegments:e.radialSegments,closed:e.closed,capped:e.capped},{...e,twoSided:e.twoSided??e.capped===!1})},line(e){let t=e.points??e.path;if(!t)throw new Error("Layer3D.line requires `points` or `path`");return Le("line3d",{type:"line3d",points:Cs(t),colors:e.colors,mode:e.mode,closed:e.closed,dashSize:e.dashSize,gapSize:e.gapSize},{...e,material:e.material??"unlit",castShadow:e.castShadow??!1})},points(e){let t=(e.pointSize??0)<=0;return Le("points3d",{type:"points3d",points:Cs(e.points),colors:e.colors,pointSize:e.pointSize},{...e,material:e.material??(t?"unlit":"lit"),castShadow:e.castShadow??!t})},shard(e={}){return Le("shard",{type:"shard",radius:e.radius,size:e.size,facets:e.facets,seed:e.seed,irregularity:e.irregularity},e)},instances(e){let t=Array.isArray(e.mesh)?e.mesh[0]:e.mesh,r={id:e.id??X("instances3d"),kind:"model3d",x:e.x??0,y:e.y??0,z:e.z??0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,scale:e.scale??1,color:e.color,colorTint:e.colorTint,opacity:e.opacity??1,twoSided:e.twoSided??!0,wireframe:e.wireframe??!1,material:e.material??"lit",roughness:e.roughness,metallic:e.metallic,specularIntensity:e.specularIntensity,ambientIntensity:e.ambientIntensity,startFrame:e.startFrame,durationFrames:e.durationFrames,instances3d:{...e},...Mt(e)};if(t){let n=t;n.modelData&&(r.modelData=n.modelData),n.primitive3d&&(r.primitive3d=n.primitive3d),n.src&&(r.src=n.src)}return B.model(r)},swarm(e={}){return Sm(e)},model(e={}){return B.model(e)},obj(e,t={}){return B.obj(e,t)},fbx(e,t={}){return B.fbx(e,t)},gltf(e,t={}){return B.gltf(e,t)},glb(e,t={}){return B.glb(e,t)},stl(e,t={}){return B.stl(e,t)},ply(e,t={}){return B.ply(e,t)},vox(e,t={}){return B.vox(e,t)},threeDS(e,t={}){return B.threeDS(e,t)},off(e,t={}){return B.off(e,t)}};f();var Ds=(e,t,r)=>{switch(e){case"left":return{dx:-t,dy:0};case"right":return{dx:t,dy:0};case"up":return{dx:0,dy:-r};default:return{dx:0,dy:r}}};function lt(e,t,r){return{kind:e,frames:Math.max(0,Math.round(t)),build:r}}var km={cut:()=>lt("cut",0,()=>({})),crossfade:(e=15,t="sine.inOut")=>lt("crossfade",e,r=>({incoming:Q.keys("opacity",[[0,0],[r.frames,1,t]])})),fadeThrough:(e=20,t="sine.inOut")=>lt("fadeThrough",e,r=>{let n=Math.max(1,Math.floor(r.frames/2));return{outgoing:Q.keys("opacity",[[r.outStart,1],[r.outStart+n,0,t]]),incoming:Q.keys("opacity",[[0,0],[n,0],[r.frames,1,t]])}}),push:(e="left",t=18,r="power3.inOut")=>lt("push",t,n=>{let{dx:i,dy:o}=Ds(e,n.width,n.height),a=Q.create(),s=Q.create();return i!==0?(a.keys("x",[[n.outStart,n.outRest.x],[n.outStart+n.frames,n.outRest.x+i,r]]),s.keys("x",[[0,n.inRest.x-i],[n.frames,n.inRest.x,r]])):(a.keys("y",[[n.outStart,n.outRest.y],[n.outStart+n.frames,n.outRest.y+o,r]]),s.keys("y",[[0,n.inRest.y-o],[n.frames,n.inRest.y,r]])),{outgoing:a,incoming:s}}),slide:(e="left",t=18,r="power3.out")=>lt("slide",t,n=>{let{dx:i,dy:o}=Ds(e,n.width,n.height),a=i!==0?"x":"y",s=i!==0?n.inRest.x:n.inRest.y;return{outgoing:Q.keys("opacity",[[n.outStart,1],[n.outStart+n.frames,.6,r]]),incoming:Q.keys(a,[[0,s-(i||o)],[n.frames,s,r]])}}),zoom:(e=18,t="power2.inOut")=>lt("zoom",e,r=>({outgoing:Q.create().keys("scale",[[r.outStart,1],[r.outStart+r.frames,1.25,t]]).keys("opacity",[[r.outStart,1],[r.outStart+r.frames,0,t]]),incoming:Q.create().keys("scale",[[0,.85],[r.frames,1,t]]).keys("opacity",[[0,0],[r.frames,1,t]])})),whip:(e="left",t=10)=>{let r=km.push(e,t,"expo.inOut");return lt("whip",t,n=>({...r.build(n),sceneProps:{motionBlurShutter:360}}))},wipe:(e="left",t=18,r="power2.inOut")=>lt("wipe",t,n=>{let{dx:i,dy:o}=Ds(e,n.width,n.height),a=i!==0?"x":"y",s=i!==0?n.inRest.x:n.inRest.y;return{incomingMatte:B.box({id:X("wipe-matte"),position:"absolute",x:n.inRest.x,y:n.inRest.y,width:n.width,height:n.height,background:"#ffffff"}).animate(Q.keys(a,[[0,s-(i||o)],[n.frames,s,r]]))}}),iris:(e=20,t={})=>lt("iris",e,r=>{let[n,i]=t.at??[.5,.5],o=r.inRest.x+n*r.width,a=r.inRest.y+i*r.height,s=Math.hypot(Math.max(n,1-n)*r.width,Math.max(i,1-i)*r.height);return{incomingMatte:B.shape("circle",{id:X("iris-matte"),position:"absolute",x:o-s,y:a-s,width:s*2,height:s*2,fillColor:"#ffffff"}).animate(Q.keys("scale",[[0,0],[r.frames,1,t.ease??"power2.inOut"]]))}})};function zi(e,t,r){let n=e[t];return typeof n=="number"?n:r}function Pm(e,t={}){let r=[],n=[],i=0;e.forEach((a,s)=>{let u=s===0?void 0:a.transition,c=Math.min(u?.frames??0,e[s-1]?.duration??0),d=Math.max(0,i-c),m=Math.max(1,Math.round(a.duration));n.push(d);let p=a.scene;(p.position===void 0||p.position==="relative")&&(p.position="absolute",p.x??=0,p.y??=0),p.startFrame=d,p.durationFrames=m,r.push(p),i=d+m}),e.forEach((a,s)=>{if(s===0||!a.transition||a.transition.frames===0)return;let u=r[s-1],c=r[s],d=Math.min(a.transition.frames,e[s-1].duration),m=t.width??zi(c,"width",1920),p=t.height??zi(c,"height",1080),h=a.transition.build({width:m,height:p,frames:d,outStart:e[s-1].duration-d,outRest:{x:typeof u.x=="number"?u.x:0,y:typeof u.y=="number"?u.y:0},inRest:{x:typeof c.x=="number"?c.x:0,y:typeof c.y=="number"?c.y:0}}),g=(b,y)=>{if(!y)return;let v=b.animation?.tracks??[];b.animation=Q.merge({tracks:v},y).toSpec()};g(u,h.outgoing),g(c,h.incoming),h.sceneProps&&(Object.assign(u,h.sceneProps),Object.assign(c,h.sceneProps)),h.incomingMatte&&(c.matte={node:h.incomingMatte,mode:"alpha"})});let o=B.box({id:t.id??X("sequence"),position:"absolute",x:0,y:0,width:t.width??zi(r[0]??{},"width",1920),height:t.height??zi(r[0]??{},"height",1080),startFrame:t.startFrame??0,durationFrames:Math.max(1,i),children:r});return Object.defineProperty(o,"totalFrames",{value:i,enumerable:!1}),Object.defineProperty(o,"sceneStarts",{value:n,enumerable:!1}),o}f();var gy={studio:{environment:"studio",envIntensity:1,key:{dir:[-.55,-1,-.7],color:"#fff6ec",intensity:1.1},rim:{dir:[.9,-.5,.9],color:"#dbe8ff",intensity:.9}},soft:{environment:"soft",envIntensity:1,key:{dir:[-.4,-1,-.8],color:"#ffffff",intensity:1}},sunset:{environment:"sunset",envIntensity:.9,key:{dir:[-1,-.35,-.3],color:"#ffb27a",intensity:2.2},fill:{dir:[.8,-.6,-.4],color:"#7f9cff",intensity:.35}},dramatic:{environment:"night",envIntensity:.8,key:{dir:[-.8,-1,-.35],color:"#ffffff",intensity:2.4},rim:{dir:[.7,-.4,1],color:"#8fb4ff",intensity:1.8}}};function by([e,t,r],n){let i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i);return[o*e+a*r,t,-a*e+o*r]}function Mm(e,t,r,n){let[i,o,a]=by(e,n),s=Math.hypot(i,o,a)||1;return{x:t[0]+i/s*r,y:t[1]+o/s*r,z:t[2]+a/s*r,targetX:t[0],targetY:t[1],targetZ:t[2]}}function _i(e,t){let r=gy[e],n=t.target??[960,540,0],i=t.distance??1600,o=t.rotation??0,a=t.intensity??1,s=t.id??X(`lighting-${e}`),u=[ct.environment(r.environment,{id:`${s}-environment`,intensity:r.envIntensity*a,rotation:o,exposure:t.exposure,toneMapping:t.toneMapping,fog:t.fog,bloom:t.bloom}),ct.directional({id:`${s}-key`,color:r.key.color,intensity:r.key.intensity*a,...Mm(r.key.dir,n,i,o),castShadow:t.shadows??!0,shadowSoftness:t.shadowSoftness??3})];for(let[c,d]of[["rim",r.rim],["fill",r.fill]])d&&u.push(ct.directional({id:`${s}-${c}`,color:d.color,intensity:d.intensity*a,...Mm(d.dir,n,i,o)}));return u}var yy={studio:(e={})=>_i("studio",e),soft:(e={})=>_i("soft",e),sunset:(e={})=>_i("sunset",e),dramatic:(e={})=>_i("dramatic",e)};f();f();var xy="@dimforge/rapier2d-deterministic-compat",wy="@dimforge/rapier3d-deterministic-compat";async function Tm(e,t){let r;try{r=await t()}catch(i){throw new Error(`Physics needs the optional dependency "${e}". Install it with \`npm i ${e}\`.`,{cause:i})}let n=r.default??r;return await n.init(),n}var Am,Cm;async function Ns(e){if(e===2){Am??=Tm(xy,()=>import("./rapier-ZL2QGRPX.mjs"));let r=await Am;return{createWorld2D:n=>new Rs(r,n),createWorld3D:()=>{throw new Error("This backend was loaded for 2D.")}}}Cm??=Tm(wy,()=>import("./rapier-EQTGTIYW.mjs"));let t=await Cm;return{createWorld2D:()=>{throw new Error("This backend was loaded for 3D.")},createWorld3D:r=>new Os(t,r)}}var Rs=class{constructor(t,r){this.R=t;this.world=new t.World({x:r[0],y:r[1]}),this.events=new t.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(t){let r=this.R,n=Dm(r,t.type).setTranslation(t.position[0],t.position[1]).setRotation(t.angle).setLinvel(t.velocity[0],t.velocity[1]).setAngvel(t.angularVelocity).setLinearDamping(t.linearDamping).setAngularDamping(t.angularDamping).setGravityScale(t.gravityScale).setCcdEnabled(t.ccd).setEnabled(t.enabled);t.lockRotation&&n.lockRotations();let i=this.world.createRigidBody(n),o=this.world.createCollider(vy(r,t.shape).setDensity(t.density).setFriction(t.friction).setRestitution(t.restitution).setActiveEvents(r.ActiveEvents.COLLISION_EVENTS).setSensor(t.sensor??!1),i),a={raw:i,position:()=>{let s=i.translation();return[s.x,s.y]},rotation:()=>i.rotation(),velocity:()=>{let s=i.linvel();return[s.x,s.y]},angularVelocity:()=>i.angvel(),sleeping:()=>i.isSleeping(),mass:()=>i.mass(),setEnabled:s=>i.setEnabled(s),applyImpulse:([s,u])=>i.applyImpulse({x:s,y:u},!0),setKinematicTarget:([s,u],c)=>{i.setNextKinematicTranslation({x:s,y:u}),i.setNextKinematicRotation(c)}};return this.byCollider.set(o.handle,a),a}addJoint(t,r,n){let i=this.R,o={x:n.anchorA[0],y:n.anchorA[1]},a={x:n.anchorB[0],y:n.anchorB[1]},s;switch(n.type){case"revolute":case"spherical":s=i.JointData.revolute(o,a);break;case"fixed":s=i.JointData.fixed(o,0,a,0);break;case"rope":s=i.JointData.rope(n.length,o,a);break;case"spring":s=i.JointData.spring(n.restLength,n.stiffness,n.damping,o,a);break}this.world.createImpulseJoint(s,$i(t),$i(r),!0).setContactsEnabled(!1)}step(t){this.world.timestep=t,this.world.step(this.events),this.events.drainCollisionEvents((r,n,i)=>{if(!i)return;let o=this.byCollider.get(r),a=this.byCollider.get(n);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}},Os=class{constructor(t,r){this.R=t;this.world=new t.World({x:r[0],y:r[1],z:r[2]}),this.events=new t.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(t){let r=this.R,[n,i,o,a]=t.rotation,s=Dm(r,t.type).setTranslation(t.position[0],t.position[1],t.position[2]).setRotation({x:n,y:i,z:o,w:a}).setLinvel(t.velocity[0],t.velocity[1],t.velocity[2]).setAngvel(Tr(t.lockRotation?[0,0,0]:t.angularVelocity.map((p,h)=>t.enabledRotations&&!t.enabledRotations[h]?0:p))).setLinearDamping(t.linearDamping).setAngularDamping(t.angularDamping).setGravityScale(t.gravityScale).setCcdEnabled(t.ccd).setEnabled(t.enabled);t.lockRotation?s.lockRotations():t.enabledRotations&&s.enabledRotations(...t.enabledRotations);let u=this.world.createRigidBody(s),c=Sy(r,t.shape),d=this.world.createCollider(c.setDensity(t.density).setFriction(t.friction).setRestitution(t.restitution).setActiveEvents(r.ActiveEvents.COLLISION_EVENTS).setSensor(t.sensor??!1),u),m={raw:u,position:()=>{let p=u.translation();return[p.x,p.y,p.z]},rotation:()=>{let p=u.rotation();return[p.x,p.y,p.z,p.w]},velocity:()=>{let p=u.linvel();return[p.x,p.y,p.z]},angularVelocity:()=>{let p=u.angvel();return[p.x,p.y,p.z]},sleeping:()=>u.isSleeping(),mass:()=>u.mass(),setEnabled:p=>u.setEnabled(p),applyImpulse:p=>u.applyImpulse(Tr(p),!0),setKinematicTarget:(p,[h,g,b,y])=>{u.setNextKinematicTranslation(Tr(p)),u.setNextKinematicRotation({x:h,y:g,z:b,w:y})}};return this.byCollider.set(d.handle,m),m}addJoint(t,r,n){let i=this.R,o=Tr(n.anchorA),a=Tr(n.anchorB),s;switch(n.type){case"revolute":s=i.JointData.revolute(o,a,Tr(n.axis??[0,0,1]));break;case"spherical":s=i.JointData.spherical(o,a);break;case"fixed":{let u={x:0,y:0,z:0,w:1};s=i.JointData.fixed(o,u,a,u);break}case"rope":s=i.JointData.rope(n.length,o,a);break;case"spring":s=i.JointData.spring(n.restLength,n.stiffness,n.damping,o,a);break}this.world.createImpulseJoint(s,$i(t),$i(r),!0).setContactsEnabled(!1)}step(t){this.world.timestep=t,this.world.step(this.events),this.events.drainCollisionEvents((r,n,i)=>{if(!i)return;let o=this.byCollider.get(r),a=this.byCollider.get(n);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}};function Tr([e,t,r]){return{x:e,y:t,z:r}}function $i(e){return e.raw}function Dm(e,t){let r=e.RigidBodyDesc;return t==="fixed"?r.fixed():t==="kinematic"?r.kinematicPositionBased():r.dynamic()}function vy(e,t){switch(t.kind){case"ball":return e.ColliderDesc.ball(t.radius);case"box":{let r=Math.min(t.radius??0,t.hx/2,t.hy/2);return r>0?e.ColliderDesc.roundCuboid(t.hx-r,t.hy-r,r):e.ColliderDesc.cuboid(t.hx,t.hy)}case"hull":{let r=e.ColliderDesc.convexHull(new Float32Array(t.points));if(!r)throw new Error("Physics: could not build a convex hull for this shape.");return r}}}function Sy(e,t){switch(t.kind){case"ball":return e.ColliderDesc.ball(t.radius);case"box":{let r=Math.min(t.radius??0,t.hx/2,t.hy/2,t.hz/2);return r>0?e.ColliderDesc.roundCuboid(t.hx-r,t.hy-r,t.hz-r,r):e.ColliderDesc.cuboid(t.hx,t.hy,t.hz)}case"cylinder":return e.ColliderDesc.cylinder(t.halfHeight,t.radius);case"hull":{let r=e.ColliderDesc.convexHull(new Float32Array(t.points));if(!r)throw new Error("Physics: could not build a convex hull for this shape.");return r}}}f();var wn=class{constructor(t,r,n,i,o,a,s){this.world=t;this.type=n;this.layer=i;this.frame=o;this.options=a;this.sim=r,this.recording=s}world;type;layer;frame;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get rotation(){return this.recording.signal("rotation")}get centerX(){return this.recording.signal("centerX")}get centerY(){return this.recording.signal("centerY")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get speed(){return this.recording.signal("speed")}get angularVelocity(){return this.recording.signal("angularVelocity")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(t){let r=this.options.follow;if(this.type!=="kinematic"||!r)return;let n=this.frame,i=this.world.fps,o=r.x===void 0?void 0:_e(r.x,t,i),a=r.y===void 0?void 0:_e(r.y,t,i),s=r.rotation===void 0?n.rotation:_e(r.rotation,t,i),u=this.initialLayerXY(),c=Nm(o??u[0],a??u[1],s,n),d=this.world.pixelsPerMeter;return{position:[c[0]/d,c[1]/d],rotation:s*Math.PI/180}}initialLayerXY(){let t=this.layer;return[Number(t?.x??0),Number(t?.y??0)]}record(t,r){let n=this.world.pixelsPerMeter,[i,o]=this.sim.position(),a=i*n,s=o*n,u=this.recording,c=u.channel("rotation"),d=this.sim.rotation()*180/Math.PI;c[t]=r<0?Zt(this.frame.rotation,d):Zt(c[r],d);let[m,p]=Ay(a,s,c[t],this.frame);u.channel("x")[t]=m,u.channel("y")[t]=p,u.channel("centerX")[t]=a,u.channel("centerY")[t]=s;let[h,g]=this.sim.velocity();u.channel("vx")[t]=h*n,u.channel("vy")[t]=g*n,u.channel("speed")[t]=Math.hypot(h,g)*n,u.channel("angularVelocity")[t]=this.sim.angularVelocity()*180/Math.PI,u.channel("sleeping")[t]=this.sim.sleeping()?1:0}boundChannels(){let t=[["x","x"],["y","y"]];return this.options.lockRotation||t.push(["rotation","rotation"]),t}localAnchor(t){if(!t)return[0,0];let r=this.world.pixelsPerMeter,[n,i]=this.sim.position(),o=-this.sim.rotation(),a=t[0]/r-n,s=t[1]/r-i;return[a*Math.cos(o)-s*Math.sin(o),a*Math.sin(o)+s*Math.cos(o)]}center(){let t=this.world.pixelsPerMeter,[r,n]=this.sim.position();return[r*t,n*t]}},Ar=class extends Mr{constructor(t,r){let n=r.pixelsPerMeter??100,i=r.gravity??2400,o=typeof i=="number"?[0,i/n]:[i[0]/n,i[1]/n],a=t.createWorld2D(o);super(a,o,r)}body(t,r={}){this.assertOpen();let i=typeof t.kind=="string"?t:void 0,o=Py(t,r),a=this.pixelsPerMeter,s=r.type??"dynamic",[u,c]=Nm(o.x,o.y,o.rotation,o),d=r.velocity??[0,0],m={type:s,position:[u/a,c/a],angle:o.rotation*Math.PI/180,velocity:[d[0]/a,d[1]/a],angularVelocity:(r.angularVelocity??0)*Math.PI/180,linearDamping:r.linearDamping??0,angularDamping:r.angularDamping??0,gravityScale:r.gravityScale??1,lockRotation:r.lockRotation??!1,ccd:r.ccd??!1,enabled:!0,sensor:r.sensor??!1,density:r.density??1,friction:r.friction??.6,restitution:r.restitution??.3,shape:Rm(o.shape,1/a)},p=this.sim.addBody(m),h=new wn(this,p,s,i,o,r,this.newRecording());return this.addBody(h)}ground(t){return this.body({x:-1e6/2,y:t.y,width:1e6,height:2e3},{type:"fixed",friction:t.friction,restitution:t.restitution??.2})}walls(t){let{width:r,height:n}=t,i=t.x??0,o=t.y??0,a=t.thickness??400,s={type:"fixed",friction:t.friction,restitution:t.restitution??.2},u=n*4+a,c={floor:this.body({x:i-a,y:o+n,width:r+2*a,height:a},s),left:this.body({x:i-a,y:o+n-u,width:a,height:u},s),right:this.body({x:i+r,y:o+n-u,width:a,height:u},s),ceiling:void 0};return t.ceiling&&(c.ceiling=this.body({x:i-a,y:o-a,width:r+2*a,height:a},s)),c}pin(t,r){let n=r??t.center(),i=this.anchorBody(n);return this.joint(t,i,{type:"revolute",anchorA:t.localAnchor(n),anchorB:[0,0]}),this}hinge(t,r,n){return this.joint(t,r,{type:"revolute",anchorA:t.localAnchor(n),anchorB:r.localAnchor(n)}),this}weld(t,r){let n=t.center();return this.joint(t,r,{type:"fixed",anchorA:[0,0],anchorB:r.localAnchor(n)}),this}spring(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB),s=this.pixelsPerMeter,u=(n.length??Math.hypot(a[0]-o[0],a[1]-o[1]))/s,c=ky(t,i),d=2*Math.PI*(n.frequency??2);return this.joint(t,i,{type:"spring",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),restLength:u,stiffness:c*d*d,damping:2*(n.dampingRatio??.2)*c*d}),this}rope(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB),s=n.length??Math.hypot(a[0]-o[0],a[1]-o[1]);return this.joint(t,i,{type:"rope",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),length:s/this.pixelsPerMeter}),this}force(t,r){let n=this.pixelsPerMeter;return this.addForce(t,i=>[r.x===void 0?0:_e(r.x,i,this.fps)/n,r.y===void 0?0:_e(r.y,i,this.fps)/n]),this}field(t,r={}){let n=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s]=i.sim.position(),[u,c]=i.sim.velocity(),d=t({x:a*n,y:s*n,vx:u*n,vy:c*n,frame:o,body:i});return d?[d[0]/n,d[1]/n]:null},r.bodies),this}impulse(t,r,n){let i=this.pixelsPerMeter;return this.addImpulse(t,r,[n[0]/i,n[1]/i]),this}lerpRotation(t,r,n){return t+(r-t)*n}joint(t,r,n){this.assertOpen(),this.sim.addJoint(t.sim,r.sim,n)}anchorBody(t){return this.body({x:t[0]-.5,y:t[1]-.5,width:1,height:1},{type:"fixed",output:"none",sensor:!0})}endpoints(t,r,n,i){let o=n??t.center();if(Array.isArray(r)){let a=i??r;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:r,pa:o,pb:i??r.center()}}};function ky(e,t){let r=e.type==="dynamic"?e.sim.mass():0,n=t.type==="dynamic"?t.sim.mass():0;return r>0&&n>0?r*n/(r+n):Math.max(r,n,.001)}function Qe(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Py(e,t){let r=typeof e.id=="string"?` "${e.id}"`:"";if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Physics: layer${r} needs numeric \`x\` and \`y\` (absolute position) to become a body.`);let n=t.size?.[0]??(typeof e.width=="number"?e.width:void 0),i=t.size?.[1]??(typeof e.height=="number"?e.height:void 0);if((n===void 0||i===void 0)&&e.kind==="text"){let s=je.measure(String(e.text??""),{fontFamily:String(e.fontFamily??"Inter"),fontSize:Qe(e.fontSize,48),fontWeight:e.fontWeight,letterSpacing:Qe(e.letterSpacing,0),lineHeight:typeof e.lineHeight=="number"?e.lineHeight:void 0});n??=s.width,i??=s.height}if(n===void 0||i===void 0||n<=0||i<=0)throw new Error(`Physics: layer${r} needs a numeric \`width\` and \`height\` (or the \`size\` option) to become a body.`);let o=Qe(e.scale,1);return{...{x:e.x,y:e.y,width:n,height:i,scale:o,anchorX:Qe(e.anchorX,.5),anchorY:Qe(e.anchorY,.5),rotation:Qe(e.rotation,0)},shape:Rm(My(e,n,i,t.shape??"auto"),o)}}function My(e,t,r,n){let o=e.kind==="shape"?String(e.shapeType??"rect"):"rect",a=Qe(e.borderRadius,Qe(e.cornerRadius,0)),s={kind:"box",hx:t/2,hy:r/2,radius:a};if(n==="box")return s;if(n==="circle"||n==="auto"&&o==="circle")return{kind:"ball",radius:Math.min(t,r)/2};if(n==="auto"&&o==="rect")return s;if(n==="hull"||n==="auto"){let u=Ty(e,o,t,r);return u.length>=6?{kind:"hull",points:u}:s}return s}function Ty(e,t,r,n){let i=t==="path"?String(e.d??""):vu({shapeType:t,width:r,height:n,cornerRadius:Qe(e.cornerRadius,Qe(e.borderRadius,0)),polygonSides:e.polygonSides,starPoints:e.starPoints,starInnerRadiusRatio:e.starInnerRadiusRatio,arrowHeadWidth:e.arrowHeadWidth,arrowHeadLength:e.arrowHeadLength,arrowShaftWidth:e.arrowShaftWidth}),o=[];for(let a of wu(i))o.push(a.p0.x-r/2,a.p0.y-n/2,a.p1.x-r/2,a.p1.y-n/2);return o}function Rm(e,t){switch(e.kind){case"ball":return{kind:"ball",radius:e.radius*t};case"box":return{kind:"box",hx:e.hx*t,hy:e.hy*t,radius:(e.radius??0)*t};case"hull":return{kind:"hull",points:e.points.map(r=>r*t)}}}function Om(e,t){let r=e*Math.PI/180,n=(.5-t.anchorX)*t.width*t.scale,i=(.5-t.anchorY)*t.height*t.scale;return[n*Math.cos(r)-i*Math.sin(r),n*Math.sin(r)+i*Math.cos(r)]}function Nm(e,t,r,n){let[i,o]=Om(r,n);return[e+n.anchorX*n.width+i,t+n.anchorY*n.height+o]}function Ay(e,t,r,n){let[i,o]=Om(r,n);return[e-i-n.anchorX*n.width,t-o-n.anchorY*n.height]}f();var Tt=Math.PI/180;function Em(e,t,r){let n=s=>s*Tt/2,i=[Math.sin(n(e)),0,0,Math.cos(n(e))],o=[0,Math.sin(n(t)),0,Math.cos(n(t))],a=[0,0,Math.sin(n(r)),Math.cos(n(r))];return Ui(Ui(a,o),i)}function Ui(e,t){let[r,n,i,o]=e,[a,s,u,c]=t;return[o*a+r*c+n*u-i*s,o*s-r*u+n*c+i*a,o*u+r*s-n*a+i*c,o*c-r*a-n*s-i*u]}function Cy(e,t){let[r,n,i,o]=e,a=1-2*(n*n+i*i),s=2*(r*n+o*i),u=2*(r*i-o*n),c=2*(n*i+o*r),d=1-2*(r*r+n*n),m=2*(r*n-o*i),p=1-2*(r*r+i*i),h=Math.max(-1,Math.min(1,-u)),g;if(Math.abs(h)>.999999){let T=Math.asin(h),S=t?t[0]*Tt:0,C=Math.atan2(-m,p)+(h>0?S:-S);g=[S,T,C]}else g=[Math.atan2(c,d),Math.asin(h),Math.atan2(s,a)];let b=[g[0]/Tt,g[1]/Tt,g[2]/Tt];if(!t)return b;let y=[b[0]+180,180-b[1],b[2]+180],v=T=>[Zt(t[0],T[0]),Zt(t[1],T[1]),Zt(t[2],T[2])],P=v(b),A=v(y),w=T=>Math.abs(T[0]-t[0])+Math.abs(T[1]-t[1])+Math.abs(T[2]-t[2]);return w(P)<=w(A)?P:A}var vn=class{constructor(t,r,n,i,o,a,s){this.world=t;this.type=n;this.layer=i;this.start=o;this.options=a;this.sim=r,this.recording=s}world;type;layer;start;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get z(){return this.recording.signal("z")}get rotateX(){return this.recording.signal("rotateX")}get rotateY(){return this.recording.signal("rotateY")}get rotateZ(){return this.recording.signal("rotateZ")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get vz(){return this.recording.signal("vz")}get speed(){return this.recording.signal("speed")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(t){let r=this.options.follow;if(this.type!=="kinematic"||!r)return;let n=this.world.fps,i=(u,c)=>u===void 0?c:_e(u,t,n),o=this.start.position,a=this.start.rotation,s=this.world.pixelsPerMeter;return{position:[i(r.x,o[0])/s,i(r.y,o[1])/s,i(r.z,o[2])/s],rotation:Em(i(r.rotateX,a[0]),i(r.rotateY,a[1]),i(r.rotateZ,a[2]))}}record(t,r){let n=this.world.pixelsPerMeter,i=this.recording,[o,a,s]=this.sim.position();i.channel("x")[t]=o*n,i.channel("y")[t]=a*n,i.channel("z")[t]=s*n;let u=i.channel("rotateX"),c=i.channel("rotateY"),d=i.channel("rotateZ"),m=r<0?this.start.rotation:[u[r],c[r],d[r]],p=Cy(this.sim.rotation(),m);u[t]=p[0],c[t]=p[1],d[t]=p[2];let[h,g,b]=this.sim.velocity();i.channel("vx")[t]=h*n,i.channel("vy")[t]=g*n,i.channel("vz")[t]=b*n,i.channel("speed")[t]=Math.hypot(h,g,b)*n,i.channel("sleeping")[t]=this.sim.sleeping()?1:0}boundChannels(){let t=[["x","x"],["y","y"],["z","z"]];return this.options.lockRotation!==!0&&t.push(["rotateX","rotateX"],["rotateY","rotateY"],["rotateZ","rotateZ"]),t}localAnchor(t){if(!t)return[0,0,0];let r=this.world.pixelsPerMeter,n=this.sim.position(),[i,o,a,s]=this.sim.rotation(),u=[t[0]/r-n[0],t[1]/r-n[1],t[2]/r-n[2]];return Dy(u,[-i,-o,-a,s])}center(){let t=this.world.pixelsPerMeter,[r,n,i]=this.sim.position();return[r*t,n*t,i*t]}};function Dy(e,t){let r=Ui(Ui(t,[e[0],e[1],e[2],0]),[-t[0],-t[1],-t[2],t[3]]);return[r[0],r[1],r[2]]}var Cr=class extends Mr{constructor(t,r){let n=r.pixelsPerMeter??100,i=r.gravity??2400,o=typeof i=="number"?[0,i/n,0]:[i[0]/n,i[1]/n,i[2]/n];super(t.createWorld3D(o),o,r)}body(t,r={}){this.assertOpen();let i=typeof t.kind=="string"?t:void 0,o=t,a=[ee(r.x??o.x,0),ee(r.y??o.y,0),ee(r.z??o.z,0)],s=[ee(r.rotateX??o.rotateX,0),ee(r.rotateY??o.rotateY,0),ee(r.rotateZ??o.rotateZ,0)],u=this.pixelsPerMeter,c=r.type??"dynamic",d=r.velocity??[0,0,0],m=r.angularVelocity??[0,0,0],p={type:c,position:[a[0]/u,a[1]/u,a[2]/u],rotation:Em(s[0],s[1],s[2]),velocity:[d[0]/u,d[1]/u,d[2]/u],angularVelocity:[m[0]*Tt,m[1]*Tt,m[2]*Tt],linearDamping:r.linearDamping??0,angularDamping:r.angularDamping??0,gravityScale:r.gravityScale??1,lockRotation:r.lockRotation===!0,...typeof r.lockRotation=="object"&&{enabledRotations:[!r.lockRotation.x,!r.lockRotation.y,!r.lockRotation.z]},ccd:r.ccd??!1,enabled:!0,sensor:r.sensor??!1,density:r.density??1,friction:r.friction??.6,restitution:r.restitution??.3,shape:Ny(Ry(o,r),1/u)},h=this.sim.addBody(p),g=new vn(this,h,c,i,{position:a,rotation:s},r,this.newRecording());return this.addBody(g)}ground(t){return this.body({x:0,y:t.y+2e3/2,z:0,width:1e6,height:2e3,depth:1e6},{type:"fixed",friction:t.friction,restitution:t.restitution??.2})}walls(t){let{width:r,height:n,depth:i}=t,[o,a,s]=[t.x??0,t.y??0,t.z??0],u=t.thickness??400,c={type:"fixed",friction:t.friction,restitution:t.restitution??.2},d=n*4,m=a+n/2-d/2;return[this.body({x:o,y:a+n/2+u/2,z:s,width:r+2*u,height:u,depth:i+2*u},c),this.body({x:o-r/2-u/2,y:m,z:s,width:u,height:d,depth:i+2*u},c),this.body({x:o+r/2+u/2,y:m,z:s,width:u,height:d,depth:i+2*u},c),this.body({x:o,y:m,z:s-i/2-u/2,width:r,height:d,depth:u},c),this.body({x:o,y:m,z:s+i/2+u/2,width:r,height:d,depth:u},c)]}pin(t,r){let n=r??t.center(),i=this.anchorBody(n);return this.joint(t,i,{type:"spherical",anchorA:t.localAnchor(n),anchorB:[0,0,0]}),this}hinge(t,r,n,i=[0,0,1]){return this.joint(t,r,{type:"revolute",anchorA:t.localAnchor(n),anchorB:r.localAnchor(n),axis:i}),this}weld(t,r){return this.joint(t,r,{type:"fixed",anchorA:[0,0,0],anchorB:r.localAnchor(t.center())}),this}spring(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB),s=this.pixelsPerMeter,u=(n.length??Fm(o,a))/s,c=t.type==="dynamic"?t.sim.mass():0,d=i.type==="dynamic"?i.sim.mass():0,m=c>0&&d>0?c*d/(c+d):Math.max(c,d,.001),p=2*Math.PI*(n.frequency??2);return this.joint(t,i,{type:"spring",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),restLength:u,stiffness:m*p*p,damping:2*(n.dampingRatio??.2)*m*p}),this}rope(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB);return this.joint(t,i,{type:"rope",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),length:(n.length??Fm(o,a))/this.pixelsPerMeter}),this}force(t,r){let n=this.pixelsPerMeter,i=(o,a)=>o===void 0?0:_e(o,a,this.fps)/n;return this.addForce(t,o=>[i(r.x,o),i(r.y,o),i(r.z,o)]),this}field(t,r={}){let n=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s,u]=i.sim.position(),[c,d,m]=i.sim.velocity(),p=t({x:a*n,y:s*n,z:u*n,vx:c*n,vy:d*n,vz:m*n,frame:o,body:i});return p?[p[0]/n,p[1]/n,p[2]/n]:null},r.bodies),this}impulse(t,r,n){let i=this.pixelsPerMeter;return this.addImpulse(t,r,[n[0]/i,n[1]/i,n[2]/i]),this}lerpRotation(t,r,n){let i=t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]<0?-1:1,o=t.map((s,u)=>s+(r[u]*i-s)*n),a=Math.hypot(...o)||1;return o.map(s=>s/a)}joint(t,r,n){this.assertOpen(),this.sim.addJoint(t.sim,r.sim,n)}anchorBody(t){return this.body({x:t[0],y:t[1],z:t[2],width:1,height:1,depth:1},{type:"fixed",output:"none",sensor:!0})}endpoints(t,r,n,i){let o=n??t.center();if(Array.isArray(r)){let a=i??r;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:r,pa:o,pb:i??r.center()}}};function Fm(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2])}function ee(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Ry(e,t){let r=typeof e.id=="string"?` "${e.id}"`:"",n=ee(e.scale,1),i=[n*ee(e.scaleX,1),n*ee(e.scaleY,1),n*ee(e.scaleZ,1)],o=i[0]===i[1]&&i[1]===i[2],a=e.primitive3d??{},s=t.shape??"auto",u=()=>{let b=Oy(e.modelData);if(b)return{kind:"hull",points:b.map((y,v)=>y*i[v%3])}};if(t.size||s==="box"){let[b,y,v]=t.size??Fs(e,a)??[0,0,0];if(b>0&&y>0&&v>0)return{kind:"box",hx:b*i[0]/2,hy:y*i[1]/2,hz:v*i[2]/2,radius:a.type==="roundedBox"?ee(a.radius,0)*Math.min(...i):0}}if(s==="hull"){let b=u();if(b)return b}if((s==="sphere"||s==="auto"&&(a.type==="sphere"||a.type==="polyhedron"&&a.shape==="icosphere"))&&(o||s==="sphere")){let b=ee(a.radius,0)||Math.max(...Fs(e,a)??[0])/2;if(b>0)return{kind:"ball",radius:b*Math.max(...i)}}let d=ee(a.radiusTop,ee(a.radius,0)),m=ee(a.radiusBottom,ee(a.radius,0));if((s==="cylinder"||s==="auto"&&a.type==="cylinder")&&d===m&&d>0&&i[0]===i[2])return{kind:"cylinder",halfHeight:ee(a.height,0)*i[1]/2,radius:d*i[0]};if(s==="auto"&&a.type==="roundedBox"&&(a.taper??1)===1){let[b,y,v]=[ee(a.width,0),ee(a.height,0),ee(a.depth,0)];return{kind:"box",hx:b*i[0]/2,hy:y*i[1]/2,hz:v*i[2]/2,radius:ee(a.radius,0)*Math.min(...i)}}let h=u();if(h)return h;let g=Fs(e,a);if(g)return{kind:"box",hx:g[0]*i[0]/2,hy:g[1]*i[1]/2,hz:g[2]*i[2]/2};throw new Error(`Physics: layer${r} has no mesh or size to build a 3D collider from; pass \`size: [w, h, d]\`.`)}function Fs(e,t){if(t.type==="roundedBox")return[ee(t.width,0),ee(t.height,0),ee(t.depth,0)];if(t.type==="sphere"||t.type==="polyhedron"){let r=ee(t.radius,50)*2;return[r,r,r]}if(t.type==="capsule"){let r=ee(t.radius,30),n=ee(t.length,60);return[r*2,n+r*2,r*2]}if(t.type==="torus"){let r=ee(t.radius,60),n=ee(t.tube,20);return[(r+n)*2,(r+n)*2,n*2]}if(t.type==="ring"){let r=ee(t.outerRadius,60),n=Math.max(2,ee(t.depth,0));return[r*2,r*2,n]}if(t.type==="cylinder"){let r=Math.max(ee(t.radiusTop,ee(t.radius,0)),ee(t.radiusBottom,ee(t.radius,0)))*2;return[r,ee(t.height,0),r]}if(typeof e.width=="number"&&typeof e.height=="number"&&typeof e.depth=="number")return[e.width,e.height,e.depth]}function Oy(e){let t=e?.meshes;if(!t?.length)return;let r=0;for(let a of t)r+=(a.positions?.length??0)/3;if(r<4)return;let n=Math.max(1,Math.floor(r/4096)),i=[],o=0;for(let a of t){let s=a.positions;if(s)for(let u=0;u<s.length;u+=3,o++)o%n===0&&i.push(s[u],s[u+1],s[u+2])}return i}function Ny(e,t){switch(e.kind){case"ball":return{kind:"ball",radius:e.radius*t};case"box":return{kind:"box",hx:e.hx*t,hy:e.hy*t,hz:e.hz*t,radius:(e.radius??0)*t};case"cylinder":return{kind:"cylinder",halfHeight:e.halfHeight*t,radius:e.radius*t};case"hull":return{kind:"hull",points:e.points.map(r=>r*t)}}}var Fy={async world2d(e){return new Ar(await Ns(2),e)},async world3d(e){return new Cr(await Ns(3),e)}};f();var ge=(...e)=>e,Ey={pixelArt:(e={})=>ge(new rr({palette:e.palette??"pico8",pixelSize:e.pixelSize??6,dither:.4})),gameBoy:(e={})=>ge(new rr({palette:"gameboy",pixelSize:e.pixelSize??4,dither:.6})),teletext:(e={})=>ge(new rr({palette:"teletext",pixelSize:e.pixelSize??10})),ledWall:(e={})=>ge(new Ro({size:e.size??14,shape:"circle",gap:.18})),ascii:(e={})=>ge(new vo({cellSize:e.cellSize??10,colorMode:e.matrix?"green":"source",bg:e.matrix?"#020a04":"#0b0b0b"})),oneBit:(e={})=>ge(new Mo({mode:"bayer",scale:e.scale??2,dark:e.dark??"#111111",light:e.light??"#f2efe6"})),risograph:(e={})=>{let t=e.inkA??"#1d3fbb",r=e.inkB??"#ff5fa2",n=e.paper??"#f4efe4";return ge(new Rt({stops:[{position:0,color:t},{position:.55,color:r},{position:1,color:n}]}),new rr({palette:"custom",colors:[t,r,n],dither:.8,pixelSize:2}),new nt({strength:.2}))},cartoon:(e={})=>ge(new Gn({levels:e.levels??4,edgeColor:e.ink??"#111111",saturation:1.3})),comic:(e={})=>ge(new Gn({levels:4,edgeWidth:1.5,saturation:1.4}),new jr({frequency:e.dotFrequency??70,opacity:.35})),thermal:()=>ge(new Rt({stops:[{position:0,color:"#000010"},{position:.25,color:"#3b0a7a"},{position:.5,color:"#c4205f"},{position:.75,color:"#ff9a1f"},{position:1,color:"#fffbe0"}]})),vhs:(e={})=>ge(new Ir({tracking:e.tracking??.5,chroma:4,curvature:.04,scanlines:.25,mask:.05,noise:.15}),new Vn({amount:3})),crt:(e={})=>ge(new Ir({curvature:e.curvature??.15,scanlines:.5,mask:.35})),glitch:(e={})=>ge(new Vn({amount:e.amount??18}),new Ir({tracking:1,chroma:6,curvature:0,scanlines:.1,mask:0,vignette:0})),oilPainting:(e={})=>ge(new Un({style:"oil",radius:e.brush??5})),watercolor:(e={})=>ge(new Un({style:"watercolor",radius:e.brush??6,paper:.5})),topographic:(e={})=>ge(new Po({levels:e.levels??16,fill:"flat",lineColor:e.ink??"#5a3a1a",fillColor:e.paper??"#f3ead8"})),kaleidoscope:(e={})=>ge(new Ao({segments:e.segments??8,rotation:e.rotation??0})),opArt:(e={})=>ge(new Do({pattern:e.pattern??"stripes",frequency:e.frequency??60})),holographic:(e={})=>ge(new To({strength:e.strength??.7,shift:e.shift??0})),noir:()=>ge(new Rt({stops:[{position:0,color:"#000000"},{position:.55,color:"#8a8a8a"},{position:1,color:"#ffffff"}]}),new nt({strength:.35}),new nr({strength:.6})),film:()=>ge(new nt({strength:.25}),new nr({strength:.35}))};f();var bp=rt(Rp(),1),Ki=rt(fo(),1);Ln();var Ys=rt(Lm(),1);f();f();var Km=rt(fo(),1);f();var Bs=new TextEncoder,By={appstream2:"appstream",cloudhsmv2:"cloudhsm",email:"ses",marketplace:"aws-marketplace",mobile:"AWSMobileHubService",pinpoint:"mobiletargeting",queue:"sqs","git-codecommit":"codecommit","mturk-requester-sandbox":"mturk-requester","personalize-runtime":"personalize"},Ly=new Set(["authorization","content-type","content-length","user-agent","presigned-expires","expect","x-amzn-trace-id","range","connection"]),Gi=class{constructor({accessKeyId:t,secretAccessKey:r,sessionToken:n,service:i,region:o,cache:a,retries:s,initRetryMs:u}){if(t==null)throw new TypeError("accessKeyId is a required option");if(r==null)throw new TypeError("secretAccessKey is a required option");this.accessKeyId=t,this.secretAccessKey=r,this.sessionToken=n,this.service=i,this.region=o,this.cache=a||new Map,this.retries=s??10,this.initRetryMs=u||50}async sign(t,r){if(t instanceof Request){let{method:o,url:a,headers:s,body:u}=t;r=Object.assign({method:o,url:a,headers:s},r),r.body==null&&s.has("Content-Type")&&(r.body=u!=null&&s.has("X-Amz-Content-Sha256")?u:await t.clone().arrayBuffer()),t=a}let n=new Ls(Object.assign({url:t.toString()},r,this,r&&r.aws)),i=Object.assign({},r,await n.sign());delete i.aws;try{return new Request(i.url.toString(),i)}catch(o){if(o instanceof TypeError)return new Request(i.url.toString(),Object.assign({duplex:"half"},i));throw o}}async fetch(t,r){for(let n=0;n<=this.retries;n++){let i=fetch(await this.sign(t,r));if(n===this.retries)return i;let o=await i;if(o.status<500&&o.status!==429)return o;await new Promise(a=>setTimeout(a,Math.random()*this.initRetryMs*Math.pow(2,n)))}throw new Error("An unknown error occurred, ensure retries is not negative")}},Ls=class{constructor({method:t,url:r,headers:n,body:i,accessKeyId:o,secretAccessKey:a,sessionToken:s,service:u,region:c,cache:d,datetime:m,signQuery:p,appendSessionToken:h,allHeaders:g,singleEncode:b}){if(r==null)throw new TypeError("url is a required option");if(o==null)throw new TypeError("accessKeyId is a required option");if(a==null)throw new TypeError("secretAccessKey is a required option");this.method=t||(i?"POST":"GET"),this.url=new URL(r),this.headers=new Headers(n||{}),this.body=i,this.accessKeyId=o,this.secretAccessKey=a,this.sessionToken=s;let y,v;(!u||!c)&&([y,v]=Iy(this.url,this.headers)),this.service=u||y||"",this.region=c||v||"us-east-1",this.cache=d||new Map,this.datetime=m||new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),this.signQuery=p,this.appendSessionToken=h||this.service==="iotdevicegateway",this.headers.delete("Host"),this.service==="s3"&&!this.signQuery&&!this.headers.has("X-Amz-Content-Sha256")&&this.headers.set("X-Amz-Content-Sha256","UNSIGNED-PAYLOAD");let P=this.signQuery?this.url.searchParams:this.headers;if(P.set("X-Amz-Date",this.datetime),this.sessionToken&&!this.appendSessionToken&&P.set("X-Amz-Security-Token",this.sessionToken),this.signableHeaders=["host",...this.headers.keys()].filter(w=>g||!Ly.has(w)).sort(),this.signedHeaders=this.signableHeaders.join(";"),this.canonicalHeaders=this.signableHeaders.map(w=>w+":"+(w==="host"?this.url.host:(this.headers.get(w)||"").replace(/\s+/g," "))).join(`
716
- `),this.credentialString=[this.datetime.slice(0,8),this.region,this.service,"aws4_request"].join("/"),this.signQuery&&(this.service==="s3"&&!P.has("X-Amz-Expires")&&P.set("X-Amz-Expires","86400"),P.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),P.set("X-Amz-Credential",this.accessKeyId+"/"+this.credentialString),P.set("X-Amz-SignedHeaders",this.signedHeaders)),this.service==="s3")try{this.encodedPath=decodeURIComponent(this.url.pathname.replace(/\+/g," "))}catch{this.encodedPath=this.url.pathname}else this.encodedPath=this.url.pathname.replace(/\/+/g,"/");b||(this.encodedPath=encodeURIComponent(this.encodedPath).replace(/%2F/g,"/")),this.encodedPath=zm(this.encodedPath);let A=new Set;this.encodedSearch=[...this.url.searchParams].filter(([w])=>{if(!w)return!1;if(this.service==="s3"){if(A.has(w))return!1;A.add(w)}return!0}).map(w=>w.map(T=>zm(encodeURIComponent(T)))).sort(([w,T],[S,C])=>w<S?-1:w>S?1:T<C?-1:T>C?1:0).map(w=>w.join("=")).join("&")}async sign(){return this.signQuery?(this.url.searchParams.set("X-Amz-Signature",await this.signature()),this.sessionToken&&this.appendSessionToken&&this.url.searchParams.set("X-Amz-Security-Token",this.sessionToken)):this.headers.set("Authorization",await this.authHeader()),{method:this.method,url:this.url,headers:this.headers,body:this.body}}async authHeader(){return["AWS4-HMAC-SHA256 Credential="+this.accessKeyId+"/"+this.credentialString,"SignedHeaders="+this.signedHeaders,"Signature="+await this.signature()].join(", ")}async signature(){let t=this.datetime.slice(0,8),r=[this.secretAccessKey,t,this.region,this.service].join(),n=this.cache.get(r);if(!n){let i=await Sn("AWS4"+this.secretAccessKey,t),o=await Sn(i,this.region),a=await Sn(o,this.service);n=await Sn(a,"aws4_request"),this.cache.set(r,n)}return Es(await Sn(n,await this.stringToSign()))}async stringToSign(){return["AWS4-HMAC-SHA256",this.datetime,this.credentialString,Es(await Im(await this.canonicalString()))].join(`
715
+ `)}:null}async function*bh(e,t){for await(let{event:r,data:n}of gh(e)){let i=JSON.parse(n);if(r==="error")throw new Ue({message:"The model stream ended with an error",status:500,body:i,requestId:t});yield i}}async function jc(e,{input:t,abortSignal:r}){let n=new AbortController,i=r?AbortSignal.any([r,n.signal]):n.signal,o=await Ta({service:"run",path:`${e}/stream`,body:await Nt.transformInput(t)??{},accept:"text/event-stream",signal:i}),a=o.headers.get("x-framefields-request-id")??"";if(!o.body)throw new Ue({message:"Empty stream",status:502,requestId:a});let s=bh(o.body,a),l,c;async function*d(){for await(let h of s)l=h,yield h}let m=d(),p=async()=>{let h=await m.next();for(;!h.done;)h=await m.next();if(l===void 0)throw new Ue({message:"Stream had no output",status:502,requestId:a});return l};return{requestId:a,[Symbol.asyncIterator]:()=>m,done:()=>(c??=p(),c),abort:()=>n.abort()}}async function yh(e,{input:t,abortSignal:r}){return ut({service:"run",path:e,body:await Nt.transformInput(t)??{},signal:r})}var xh={config(e){Mc(e.apiKey)},run:yh,subscribe:Lc,stream:jc,queue:Bc,storage:Nt};f();function wh(e,...t){let r=[];for(let n=0;n<e.length;n++){let i=e[n];if(i&&r.push({text:i}),n<t.length){let o=t[n];if(o==null)continue;if(Array.isArray(o))for(let a of o)typeof a=="string"?a&&r.push({text:a}):a&&typeof a=="object"&&"text"in a&&r.push(a);else typeof o=="object"&&"text"in o?r.push(o):typeof o=="object"&&"get"in o&&typeof o.get=="function"?r.push({text:o}):r.push({text:String(o)})}}return r}function vh(e,t={}){return{text:e,...t}}function Sh(e,t={}){return{text:e,fontWeight:t.fontWeight??700,...t}}function kh(e,t={}){return{text:e,fontStyle:"italic",...t}}function Ph(e,t={}){return{text:e,fill:t.fill??"#6366f1",...t}}function Mh(e,t,r={}){return{text:e,fill:t,...r}}function Th(e,t,r={}){return{text:e,fontSize:t,...r}}function Ah(e,t={}){let{bg:r,fill:n,radius:i,paddingX:o,paddingY:a,...s}=t;return{text:e,fill:n,mark:{background:r??"#6366f133",borderRadius:i??4,paddingX:o??6,paddingY:a??2},...s}}function Ch(e,t={}){return{text:e,baselineShift:t.baselineShift??-8,...t}}function Dh(e,t={}){return{text:e,baselineShift:t.baselineShift??6,...t}}function Oh(e,t={}){return{text:e,fontFamily:t.fontFamily??"JetBrains Mono",mark:t.mark??{background:"#ffffff18",borderRadius:4,paddingX:6,paddingY:2},...t}}function si(e){if(typeof e=="string")return{text:e};if(!Array.isArray(e))return{text:String(e)};let t=[],r="";for(let n of e)if(typeof n=="string")n&&(t.push({text:n}),r+=n);else if(n&&typeof n=="object"&&"text"in n){let i=n;t.push(i);let o=typeof i.text=="string"?i.text:i.text&&typeof i.text=="object"&&"get"in i.text&&typeof i.text.get=="function"?String(i.text.get()):String(i.text??"");r+=o}return{text:r,spans:t.length>0?t:void 0}}function Rh(e){if(!e||!e.includes("<"))return[{text:e}];let t=[],r=/<(\/?[a-zA-Z0-9_-]+)([^>]*)>/g,n=0,i=[],o=()=>{let s={};for(let l of i)Object.assign(s,l.style);return s};for(;;){let s=r.exec(e);if(!s)break;let l=e.slice(n,s.index);l&&t.push({text:l,...o()}),n=s.index+s[0].length;let c=s[1].toLowerCase(),d=s[2];if(c.startsWith("/")){let m=c.slice(1);for(let p=i.length-1;p>=0;p--)if(i[p].tag===m){i.splice(p,1);break}}else{let m={},p=/([a-zA-Z0-9_-]+)=["']([^"']*)["']/g;for(;;){let b=p.exec(d);if(!b)break;m[b[1].toLowerCase()]=b[2]}let h={};if(c==="b"||c==="strong")h.fontWeight=700,(m.color||m.fill)&&(h.fill=m.color??m.fill);else if(c==="i"||c==="em")h.fontStyle="italic",(m.color||m.fill)&&(h.fill=m.color??m.fill);else if(c==="accent")h.fill="#6366f1";else if(c==="color")h.fill=m.value??m.hex??m.fill;else if(c==="size"){let b=parseFloat(m.value??m.px??m.pt??"0");b>0&&(h.fontSize=b)}else if(c==="mark")h.mark={background:m.bg??m.background??"#6366f133",borderRadius:m.radius?parseFloat(m.radius):4,paddingX:m.paddingx?parseFloat(m.paddingx):6,paddingY:m.paddingy?parseFloat(m.paddingy):2},(m.color||m.fill)&&(h.fill=m.color??m.fill);else if(c==="sup")h.baselineShift=-8;else if(c==="sub")h.baselineShift=6;else if(c==="code")h.fontFamily="JetBrains Mono",h.mark={background:m.bg??"#ffffff18",borderRadius:4,paddingX:6,paddingY:2};else if(c==="span"){if((m.color||m.fill)&&(h.fill=m.color??m.fill),m.fontfamily&&(h.fontFamily=m.fontfamily),m.fontsize&&(h.fontSize=parseFloat(m.fontsize)),m.fontweight){let b=parseInt(m.fontweight,10);h.fontWeight=Number.isNaN(b)?m.fontweight:b}(m.fontstyle==="italic"||m.fontstyle==="normal")&&(h.fontStyle=m.fontstyle),m.letterspacing&&(h.letterSpacing=parseFloat(m.letterspacing)),m.baselineshift&&(h.baselineShift=parseFloat(m.baselineshift)),m.opacity&&(h.opacity=parseFloat(m.opacity))}i.push({tag:c,style:h})}}let a=e.slice(n);return a&&t.push({text:a,...o()}),t}f();f();f();f();f();f();function zc(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Ft(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Xe(e){return e=Ft(Math.abs(e)),e?e[1]:NaN}f();function _c(e,t){return function(r,n){for(var i=r.length,o=[],a=0,s=e[0],l=0;i>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),o.push(r.substring(i-=s,i+s)),!((l+=s+1)>n));)s=e[a=(a+1)%e.length];return o.reverse().join(t)}}f();function $c(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}f();var Nh=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function yt(e){if(!(t=Nh.exec(e)))throw new Error("invalid format: "+e);var t;return new ui({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}yt.prototype=ui.prototype;function ui(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}ui.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};f();function Uc(e){e:for(var t=e.length,r=1,n=-1,i;r<t;++r)switch(e[r]){case".":n=i=r;break;case"0":n===0&&(n=r),i=r;break;default:if(!+e[r])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}f();f();var en;function Vc(e,t){var r=Ft(e,t);if(!r)return en=void 0,e.toPrecision(t);var n=r[0],i=r[1],o=i-(en=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=n.length;return o===a?n:o>a?n+new Array(o-a+1).join("0"):o>0?n.slice(0,o)+"."+n.slice(o):"0."+new Array(1-o).join("0")+Ft(e,Math.max(0,t+o-1))[0]}f();function Oa(e,t){var r=Ft(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var Ra={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:zc,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Oa(e*100,t),r:Oa,s:Vc,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};f();function Na(e){return e}var Gc=Array.prototype.map,Wc=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Hc(e){var t=e.grouping===void 0||e.thousands===void 0?Na:_c(Gc.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",o=e.numerals===void 0?Na:$c(Gc.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function c(m,p){m=yt(m);var h=m.fill,b=m.align,g=m.sign,y=m.symbol,k=m.zero,S=m.width,A=m.comma,w=m.precision,T=m.trim,v=m.type;v==="n"?(A=!0,v="g"):Ra[v]||(w===void 0&&(w=12),T=!0,v="g"),(k||h==="0"&&b==="=")&&(k=!0,h="0",b="=");var E=(p&&p.prefix!==void 0?p.prefix:"")+(y==="$"?r:y==="#"&&/[boxX]/.test(v)?"0"+v.toLowerCase():""),C=(y==="$"?n:/[%p]/.test(v)?a:"")+(p&&p.suffix!==void 0?p.suffix:""),N=Ra[v],G=/[defgprs%]/.test(v);w=w===void 0?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function _(I){var P=E,M=C,H,q,V;if(v==="c")M=N(I)+M,I="";else{I=+I;var z=I<0||1/I<0;if(I=isNaN(I)?l:N(Math.abs(I),w),T&&(I=Uc(I)),z&&+I==0&&g!=="+"&&(z=!1),P=(z?g==="("?g:s:g==="-"||g==="("?"":g)+P,M=(v==="s"&&!isNaN(I)&&en!==void 0?Wc[8+en/3]:"")+M+(z&&g==="("?")":""),G){for(H=-1,q=I.length;++H<q;)if(V=I.charCodeAt(H),48>V||V>57){M=(V===46?i+I.slice(H+1):I.slice(H))+M,I=I.slice(0,H);break}}}A&&!k&&(I=t(I,1/0));var K=P.length+I.length+M.length,re=K<S?new Array(S-K+1).join(h):"";switch(A&&k&&(I=t(re+I,re.length?S-M.length:1/0),re=""),b){case"<":I=P+I+M+re;break;case"=":I=P+re+I+M;break;case"^":I=re.slice(0,K=re.length>>1)+P+I+M+re.slice(K);break;default:I=re+P+I+M;break}return o(I)}return _.toString=function(){return m+""},_}function d(m,p){var h=Math.max(-8,Math.min(8,Math.floor(Xe(p)/3)))*3,b=Math.pow(10,-h),g=c((m=yt(m),m.type="f",m),{suffix:Wc[8+h/3]});return function(y){return g(b*y)}}return{format:c,formatPrefix:d}}var li,sr,ci;Fa({thousands:",",grouping:[3],currency:["$",""]});function Fa(e){return li=Hc(e),sr=li.format,ci=li.formatPrefix,li}f();function Ea(e){return Math.max(0,-Xe(Math.abs(e)))}f();function Ba(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Xe(t)/3)))*3-Xe(Math.abs(e)))}f();function La(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Xe(t)-Xe(e))+1}f();f();f();f();f();function Et(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}f();f();function Ia(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Bt(e){let t,r,n;e.length!==2?(t=Et,r=(s,l)=>Et(e(s),l),n=(s,l)=>e(s)-l):(t=e===Et||e===Ia?e:Fh,r=e,n=e);function i(s,l,c=0,d=s.length){if(c<d){if(t(l,l)!==0)return d;do{let m=c+d>>>1;r(s[m],l)<0?c=m+1:d=m}while(c<d)}return c}function o(s,l,c=0,d=s.length){if(c<d){if(t(l,l)!==0)return d;do{let m=c+d>>>1;r(s[m],l)<=0?c=m+1:d=m}while(c<d)}return c}function a(s,l,c=0,d=s.length){let m=i(s,l,c,d-1);return m>c&&n(s[m-1],l)>-n(s[m],l)?m-1:m}return{left:i,center:a,right:o}}function Fh(){return 0}f();function ja(e){return e===null?NaN:+e}var Yc=Bt(Et),Xc=Yc.right,Eh=Yc.left,Bh=Bt(ja).center,za=Xc;f();var ur=class extends Map{constructor(t,r=jh){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(qc(this,t))}has(t){return super.has(qc(this,t))}set(t,r){return super.set(Lh(this,t),r)}delete(t){return super.delete(Ih(this,t))}};function qc({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Lh({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Ih({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function jh(e){return e!==null&&typeof e=="object"?e.valueOf():e}f();var zh=Math.sqrt(50),_h=Math.sqrt(10),$h=Math.sqrt(2);function di(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),o=n/Math.pow(10,i),a=o>=zh?10:o>=_h?5:o>=$h?2:1,s,l,c;return i<0?(c=Math.pow(10,-i)/a,s=Math.round(e*c),l=Math.round(t*c),s/c<e&&++s,l/c>t&&--l,c=-c):(c=Math.pow(10,i)*a,s=Math.round(e/c),l=Math.round(t/c),s*c<e&&++s,l*c>t&&--l),l<s&&.5<=r&&r<2?di(e,t,r*2):[s,l,c]}function mi(e,t,r){if(t=+t,e=+e,r=+r,!(r>0))return[];if(e===t)return[e];let n=t<e,[i,o,a]=n?di(t,e,r):di(e,t,r);if(!(o>=i))return[];let s=o-i+1,l=new Array(s);if(n)if(a<0)for(let c=0;c<s;++c)l[c]=(o-c)/-a;else for(let c=0;c<s;++c)l[c]=(o-c)*a;else if(a<0)for(let c=0;c<s;++c)l[c]=(i+c)/-a;else for(let c=0;c<s;++c)l[c]=(i+c)*a;return l}function tn(e,t,r){return t=+t,e=+e,r=+r,di(e,t,r)[2]}function lr(e,t,r){t=+t,e=+e,r=+r;let n=t<e,i=n?tn(t,e,r):tn(e,t,r);return(n?-1:1)*(i<0?1/-i:i)}f();function pi(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,o=new Array(i);++n<i;)o[n]=e+n*r;return o}f();function xt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}f();var Zc=Symbol("implicit");function fi(){var e=new ur,t=[],r=[],n=Zc;function i(o){let a=e.get(o);if(a===void 0){if(n!==Zc)return n;e.set(o,a=t.push(o)-1)}return r[a%r.length]}return i.domain=function(o){if(!arguments.length)return t.slice();t=[],e=new ur;for(let a of o)e.has(a)||e.set(a,t.push(a)-1);return i},i.range=function(o){return arguments.length?(r=Array.from(o),i):r.slice()},i.unknown=function(o){return arguments.length?(n=o,i):n},i.copy=function(){return fi(t,r).unknown(n)},xt.apply(i,arguments),i}function rn(){var e=fi().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,o,a,s=!1,l=0,c=0,d=.5;delete e.unknown;function m(){var p=t().length,h=i<n,b=h?i:n,g=h?n:i;o=(g-b)/Math.max(1,p-l+c*2),s&&(o=Math.floor(o)),b+=(g-b-o*(p-l))*d,a=o*(1-l),s&&(b=Math.round(b),a=Math.round(a));var y=pi(p).map(function(k){return b+o*k});return r(h?y.reverse():y)}return e.domain=function(p){return arguments.length?(t(p),m()):t()},e.range=function(p){return arguments.length?([n,i]=p,n=+n,i=+i,m()):[n,i]},e.rangeRound=function(p){return[n,i]=p,n=+n,i=+i,s=!0,m()},e.bandwidth=function(){return a},e.step=function(){return o},e.round=function(p){return arguments.length?(s=!!p,m()):s},e.padding=function(p){return arguments.length?(l=Math.min(1,c=+p),m()):l},e.paddingInner=function(p){return arguments.length?(l=Math.min(1,p),m()):l},e.paddingOuter=function(p){return arguments.length?(c=+p,m()):c},e.align=function(p){return arguments.length?(d=Math.max(0,Math.min(1,p)),m()):d},e.copy=function(){return rn(t(),[n,i]).round(s).paddingInner(l).paddingOuter(c).align(d)},xt.apply(m(),arguments)}f();f();f();f();f();f();f();function hi(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function _a(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function an(){}var nn=.7,yi=1/nn,cr="\\s*([+-]?\\d+)\\s*",on="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",qe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Uh=/^#([0-9a-f]{3,8})$/,Vh=new RegExp(`^rgb\\(${cr},${cr},${cr}\\)$`),Gh=new RegExp(`^rgb\\(${qe},${qe},${qe}\\)$`),Wh=new RegExp(`^rgba\\(${cr},${cr},${cr},${on}\\)$`),Hh=new RegExp(`^rgba\\(${qe},${qe},${qe},${on}\\)$`),Yh=new RegExp(`^hsl\\(${on},${qe},${qe}\\)$`),Xh=new RegExp(`^hsla\\(${on},${qe},${qe},${on}\\)$`),Kc={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};hi(an,wt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Qc,formatHex:Qc,formatHex8:qh,formatHsl:Zh,formatRgb:Jc,toString:Jc});function Qc(){return this.rgb().formatHex()}function qh(){return this.rgb().formatHex8()}function Zh(){return od(this).formatHsl()}function Jc(){return this.rgb().formatRgb()}function wt(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Uh.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?ed(t):r===3?new Ie(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?gi(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?gi(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Vh.exec(e))?new Ie(t[1],t[2],t[3],1):(t=Gh.exec(e))?new Ie(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Wh.exec(e))?gi(t[1],t[2],t[3],t[4]):(t=Hh.exec(e))?gi(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Yh.exec(e))?nd(t[1],t[2]/100,t[3]/100,1):(t=Xh.exec(e))?nd(t[1],t[2]/100,t[3]/100,t[4]):Kc.hasOwnProperty(e)?ed(Kc[e]):e==="transparent"?new Ie(NaN,NaN,NaN,0):null}function ed(e){return new Ie(e>>16&255,e>>8&255,e&255,1)}function gi(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ie(e,t,r,n)}function Kh(e){return e instanceof an||(e=wt(e)),e?(e=e.rgb(),new Ie(e.r,e.g,e.b,e.opacity)):new Ie}function dr(e,t,r,n){return arguments.length===1?Kh(e):new Ie(e,t,r,n??1)}function Ie(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}hi(Ie,dr,_a(an,{brighter(e){return e=e==null?yi:Math.pow(yi,e),new Ie(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?nn:Math.pow(nn,e),new Ie(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ie(It(this.r),It(this.g),It(this.b),xi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:td,formatHex:td,formatHex8:Qh,formatRgb:rd,toString:rd}));function td(){return`#${Lt(this.r)}${Lt(this.g)}${Lt(this.b)}`}function Qh(){return`#${Lt(this.r)}${Lt(this.g)}${Lt(this.b)}${Lt((isNaN(this.opacity)?1:this.opacity)*255)}`}function rd(){let e=xi(this.opacity);return`${e===1?"rgb(":"rgba("}${It(this.r)}, ${It(this.g)}, ${It(this.b)}${e===1?")":`, ${e})`}`}function xi(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function It(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Lt(e){return e=It(e),(e<16?"0":"")+e.toString(16)}function nd(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ve(e,t,r,n)}function od(e){if(e instanceof Ve)return new Ve(e.h,e.s,e.l,e.opacity);if(e instanceof an||(e=wt(e)),!e)return new Ve;if(e instanceof Ve)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),o=Math.max(t,r,n),a=NaN,s=o-i,l=(o+i)/2;return s?(t===o?a=(r-n)/s+(r<n)*6:r===o?a=(n-t)/s+2:a=(t-r)/s+4,s/=l<.5?o+i:2-o-i,a*=60):s=l>0&&l<1?0:a,new Ve(a,s,l,e.opacity)}function ad(e,t,r,n){return arguments.length===1?od(e):new Ve(e,t,r,n??1)}function Ve(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}hi(Ve,ad,_a(an,{brighter(e){return e=e==null?yi:Math.pow(yi,e),new Ve(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?nn:Math.pow(nn,e),new Ve(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Ie($a(e>=240?e-240:e+120,i,n),$a(e,i,n),$a(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Ve(id(this.h),bi(this.s),bi(this.l),xi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=xi(this.opacity);return`${e===1?"hsl(":"hsla("}${id(this.h)}, ${bi(this.s)*100}%, ${bi(this.l)*100}%${e===1?")":`, ${e})`}`}}));function id(e){return e=(e||0)%360,e<0?e+360:e}function bi(e){return Math.max(0,Math.min(1,e||0))}function $a(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}f();f();function Ua(e,t,r,n,i){var o=e*e,a=o*e;return((1-3*e+3*o-a)*t+(4-6*o+3*a)*r+(1+3*e+3*o-3*a)*n+a*i)/6}function sd(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],o=e[n+1],a=n>0?e[n-1]:2*i-o,s=n<t-1?e[n+2]:2*o-i;return Ua((r-n/t)*t,a,i,o,s)}}f();function ud(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],o=e[n%t],a=e[(n+1)%t],s=e[(n+2)%t];return Ua((r-n/t)*t,i,o,a,s)}}f();f();var sn=e=>()=>e;function Jh(e,t){return function(r){return e+r*t}}function eg(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function ld(e){return(e=+e)==1?wi:function(t,r){return r-t?eg(t,r,e):sn(isNaN(t)?r:t)}}function wi(e,t){var r=t-e;return r?Jh(e,r):sn(isNaN(e)?t:e)}var Va=(function e(t){var r=ld(t);function n(i,o){var a=r((i=dr(i)).r,(o=dr(o)).r),s=r(i.g,o.g),l=r(i.b,o.b),c=wi(i.opacity,o.opacity);return function(d){return i.r=a(d),i.g=s(d),i.b=l(d),i.opacity=c(d),i+""}}return n.gamma=e,n})(1);function cd(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),o=new Array(r),a,s;for(a=0;a<r;++a)s=dr(t[a]),n[a]=s.r||0,i[a]=s.g||0,o[a]=s.b||0;return n=e(n),i=e(i),o=e(o),s.opacity=1,function(l){return s.r=n(l),s.g=i(l),s.b=o(l),s+""}}}var Hk=cd(sd),Yk=cd(ud);f();f();function dd(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(o){for(i=0;i<r;++i)n[i]=e[i]*(1-o)+t[i]*o;return n}}function md(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function pd(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),o=new Array(r),a;for(a=0;a<n;++a)i[a]=jt(e[a],t[a]);for(;a<r;++a)o[a]=t[a];return function(s){for(a=0;a<n;++a)o[a]=i[a](s);return o}}f();function fd(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}f();function vt(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}f();function hd(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=jt(e[i],t[i]):n[i]=t[i];return function(o){for(i in r)n[i]=r[i](o);return n}}f();var Wa=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ga=new RegExp(Wa.source,"g");function tg(e){return function(){return e}}function rg(e){return function(t){return e(t)+""}}function gd(e,t){var r=Wa.lastIndex=Ga.lastIndex=0,n,i,o,a=-1,s=[],l=[];for(e=e+"",t=t+"";(n=Wa.exec(e))&&(i=Ga.exec(t));)(o=i.index)>r&&(o=t.slice(r,o),s[a]?s[a]+=o:s[++a]=o),(n=n[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:vt(n,i)})),r=Ga.lastIndex;return r<t.length&&(o=t.slice(r),s[a]?s[a]+=o:s[++a]=o),s.length<2?l[0]?rg(l[0].x):tg(t):(t=l.length,function(c){for(var d=0,m;d<t;++d)s[(m=l[d]).i]=m.x(c);return s.join("")})}function jt(e,t){var r=typeof t,n;return t==null||r==="boolean"?sn(t):(r==="number"?vt:r==="string"?(n=wt(t))?(t=n,Va):gd:t instanceof wt?Va:t instanceof Date?fd:md(t)?dd:Array.isArray(t)?pd:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?hd:vt)(e,t)}f();function Ha(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}f();function Ya(e){return function(){return e}}f();function Xa(e){return+e}var bd=[0,1];function mr(e){return e}function qa(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:Ya(isNaN(t)?NaN:.5)}function ng(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function ig(e,t,r){var n=e[0],i=e[1],o=t[0],a=t[1];return i<n?(n=qa(i,n),o=r(a,o)):(n=qa(n,i),o=r(o,a)),function(s){return o(n(s))}}function og(e,t,r){var n=Math.min(e.length,t.length)-1,i=new Array(n),o=new Array(n),a=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++a<n;)i[a]=qa(e[a],e[a+1]),o[a]=r(t[a],t[a+1]);return function(s){var l=za(e,s,1,n)-1;return o[l](i[l](s))}}function vi(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function ag(){var e=bd,t=bd,r=jt,n,i,o,a=mr,s,l,c;function d(){var p=Math.min(e.length,t.length);return a!==mr&&(a=ng(e[0],e[p-1])),s=p>2?og:ig,l=c=null,m}function m(p){return p==null||isNaN(p=+p)?o:(l||(l=s(e.map(n),t,r)))(n(a(p)))}return m.invert=function(p){return a(i((c||(c=s(t,e.map(n),vt)))(p)))},m.domain=function(p){return arguments.length?(e=Array.from(p,Xa),d()):e.slice()},m.range=function(p){return arguments.length?(t=Array.from(p),d()):t.slice()},m.rangeRound=function(p){return t=Array.from(p),r=Ha,d()},m.clamp=function(p){return arguments.length?(a=p?!0:mr,d()):a!==mr},m.interpolate=function(p){return arguments.length?(r=p,d()):r},m.unknown=function(p){return arguments.length?(o=p,m):o},function(p,h){return n=p,i=h,d()}}function un(){return ag()(mr,mr)}f();function Za(e,t,r,n){var i=lr(e,t,r),o;switch(n=yt(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(o=Ba(i,a))&&(n.precision=o),ci(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=La(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=Ea(i))&&(n.precision=o-(n.type==="%")*2);break}}return sr(n)}function sg(e){var t=e.domain;return e.ticks=function(r){var n=t();return mi(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return Za(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,o=n.length-1,a=n[i],s=n[o],l,c,d=10;for(s<a&&(c=a,a=s,s=c,c=i,i=o,o=c);d-- >0;){if(c=tn(a,s,r),c===l)return n[i]=a,n[o]=s,t(n);if(c>0)a=Math.floor(a/c)*c,s=Math.ceil(s/c)*c;else if(c<0)a=Math.ceil(a*c)/c,s=Math.floor(s*c)/c;else break;l=c}return e},e}function pr(){var e=un();return e.copy=function(){return vi(e,pr())},xt.apply(e,arguments),sg(e)}f();function Ka(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],o=e[n],a;return o<i&&(a=r,r=n,n=a,a=i,i=o,o=a),e[r]=t.floor(i),e[n]=t.ceil(o),e}f();f();f();var Qa=new Date,Ja=new Date;function le(e,t,r,n){function i(o){return e(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(e(o=new Date(+o)),o),i.ceil=o=>(e(o=new Date(o-1)),t(o,1),e(o),o),i.round=o=>{let a=i(o),s=i.ceil(o);return o-a<s-o?a:s},i.offset=(o,a)=>(t(o=new Date(+o),a==null?1:Math.floor(a)),o),i.range=(o,a,s)=>{let l=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o<a)||!(s>0))return l;let c;do l.push(c=new Date(+o)),t(o,s),e(o);while(c<o&&o<a);return l},i.filter=o=>le(a=>{if(a>=a)for(;e(a),!o(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!o(a););else for(;--s>=0;)for(;t(a,1),!o(a););}),r&&(i.count=(o,a)=>(Qa.setTime(+o),Ja.setTime(+a),e(Qa),e(Ja),Math.floor(r(Qa,Ja))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(n?a=>n(a)%o===0:a=>i.count(0,a)%o===0):i)),i}f();var ln=le(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ln.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?le(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ln);var e2=ln.range;f();var Ze=le(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),yd=Ze.range;f();var Si=le(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),ug=Si.range,fr=le(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),lg=fr.range;f();var ki=le(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),cg=ki.range,hr=le(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),dg=hr.range;f();var $t=le(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),mg=$t.range,Ut=le(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),pg=Ut.range,Pi=le(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),fg=Pi.range;f();function Vt(e){return le(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var Gt=Vt(0),gr=Vt(1),wd=Vt(2),vd=Vt(3),St=Vt(4),Sd=Vt(5),kd=Vt(6),Pd=Gt.range,hg=gr.range,gg=wd.range,bg=vd.range,yg=St.range,xg=Sd.range,wg=kd.range;function Wt(e){return le(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var lt=Wt(0),br=Wt(1),Md=Wt(2),Td=Wt(3),kt=Wt(4),Ad=Wt(5),Cd=Wt(6),Dd=lt.range,vg=br.range,Sg=Md.range,kg=Td.range,Pg=kt.range,Mg=Ad.range,Tg=Cd.range;f();var Mi=le(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),Ag=Mi.range,yr=le(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),Cg=yr.range;f();var Ge=le(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Ge.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:le(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var Dg=Ge.range,ze=le(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());ze.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:le(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var Og=ze.range;f();function Rd(e,t,r,n,i,o){let a=[[Ze,1,1e3],[Ze,5,5*1e3],[Ze,15,15*1e3],[Ze,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(c,d,m){let p=d<c;p&&([c,d]=[d,c]);let h=m&&typeof m.range=="function"?m:l(c,d,m),b=h?h.range(c,+d+1):[];return p?b.reverse():b}function l(c,d,m){let p=Math.abs(d-c)/m,h=Bt(([,,y])=>y).right(a,p);if(h===a.length)return e.every(lr(c/31536e6,d/31536e6,m));if(h===0)return ln.every(Math.max(lr(c,d,m),1));let[b,g]=a[p/a[h-1][2]<a[h][2]/p?h-1:h];return b.every(g)}return[s,l]}var[es,ts]=Rd(ze,yr,lt,Pi,hr,fr),[Ng,Fg]=Rd(Ge,Mi,Gt,$t,ki,Si);f();f();f();function rs(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function ns(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function dn(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function is(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,o=e.days,a=e.shortDays,s=e.months,l=e.shortMonths,c=mn(i),d=pn(i),m=mn(o),p=pn(o),h=mn(a),b=pn(a),g=mn(s),y=pn(s),k=mn(l),S=pn(l),A={a:V,A:z,b:K,B:re,c:null,d:Id,e:Id,f:rb,g:mb,G:fb,H:Jg,I:eb,j:tb,L:Ud,m:nb,M:ib,p:de,q:ae,Q:_d,s:$d,S:ob,u:ab,U:sb,V:ub,w:lb,W:cb,x:null,X:null,y:db,Y:pb,Z:hb,"%":zd},w={a:xe,A:ke,b:B,B:j,c:null,d:jd,e:jd,f:xb,g:Db,G:Rb,H:gb,I:bb,j:yb,L:Gd,m:wb,M:vb,p:Y,q:se,Q:_d,s:$d,S:Sb,u:kb,U:Pb,V:Mb,w:Tb,W:Ab,x:null,X:null,y:Cb,Y:Ob,Z:Nb,"%":zd},T={a:G,A:_,b:I,B:P,c:M,d:Bd,e:Bd,f:qg,g:Ed,G:Fd,H:Ld,I:Ld,j:Wg,L:Xg,m:Gg,M:Hg,p:N,q:Vg,Q:Kg,s:Qg,S:Yg,u:jg,U:zg,V:_g,w:Ig,W:$g,x:H,X:q,y:Ed,Y:Fd,Z:Ug,"%":Zg};A.x=v(r,A),A.X=v(n,A),A.c=v(t,A),w.x=v(r,w),w.X=v(n,w),w.c=v(t,w);function v(D,F){return function($){var R=[],we=-1,ue=0,Ce=D.length,De,tt,Cn;for($ instanceof Date||($=new Date(+$));++we<Ce;)D.charCodeAt(we)===37&&(R.push(D.slice(ue,we)),(tt=Nd[De=D.charAt(++we)])!=null?De=D.charAt(++we):tt=De==="e"?" ":"0",(Cn=F[De])&&(De=Cn($,tt)),R.push(De),ue=we+1);return R.push(D.slice(ue,we)),R.join("")}}function E(D,F){return function($){var R=dn(1900,void 0,1),we=C(R,D,$+="",0),ue,Ce;if(we!=$.length)return null;if("Q"in R)return new Date(R.Q);if("s"in R)return new Date(R.s*1e3+("L"in R?R.L:0));if(F&&!("Z"in R)&&(R.Z=0),"p"in R&&(R.H=R.H%12+R.p*12),R.m===void 0&&(R.m="q"in R?R.q:0),"V"in R){if(R.V<1||R.V>53)return null;"w"in R||(R.w=1),"Z"in R?(ue=ns(dn(R.y,0,1)),Ce=ue.getUTCDay(),ue=Ce>4||Ce===0?br.ceil(ue):br(ue),ue=Ut.offset(ue,(R.V-1)*7),R.y=ue.getUTCFullYear(),R.m=ue.getUTCMonth(),R.d=ue.getUTCDate()+(R.w+6)%7):(ue=rs(dn(R.y,0,1)),Ce=ue.getDay(),ue=Ce>4||Ce===0?gr.ceil(ue):gr(ue),ue=$t.offset(ue,(R.V-1)*7),R.y=ue.getFullYear(),R.m=ue.getMonth(),R.d=ue.getDate()+(R.w+6)%7)}else("W"in R||"U"in R)&&("w"in R||(R.w="u"in R?R.u%7:"W"in R?1:0),Ce="Z"in R?ns(dn(R.y,0,1)).getUTCDay():rs(dn(R.y,0,1)).getDay(),R.m=0,R.d="W"in R?(R.w+6)%7+R.W*7-(Ce+5)%7:R.w+R.U*7-(Ce+6)%7);return"Z"in R?(R.H+=R.Z/100|0,R.M+=R.Z%100,ns(R)):rs(R)}}function C(D,F,$,R){for(var we=0,ue=F.length,Ce=$.length,De,tt;we<ue;){if(R>=Ce)return-1;if(De=F.charCodeAt(we++),De===37){if(De=F.charAt(we++),tt=T[De in Nd?F.charAt(we++):De],!tt||(R=tt(D,$,R))<0)return-1}else if(De!=$.charCodeAt(R++))return-1}return R}function N(D,F,$){var R=c.exec(F.slice($));return R?(D.p=d.get(R[0].toLowerCase()),$+R[0].length):-1}function G(D,F,$){var R=h.exec(F.slice($));return R?(D.w=b.get(R[0].toLowerCase()),$+R[0].length):-1}function _(D,F,$){var R=m.exec(F.slice($));return R?(D.w=p.get(R[0].toLowerCase()),$+R[0].length):-1}function I(D,F,$){var R=k.exec(F.slice($));return R?(D.m=S.get(R[0].toLowerCase()),$+R[0].length):-1}function P(D,F,$){var R=g.exec(F.slice($));return R?(D.m=y.get(R[0].toLowerCase()),$+R[0].length):-1}function M(D,F,$){return C(D,t,F,$)}function H(D,F,$){return C(D,r,F,$)}function q(D,F,$){return C(D,n,F,$)}function V(D){return a[D.getDay()]}function z(D){return o[D.getDay()]}function K(D){return l[D.getMonth()]}function re(D){return s[D.getMonth()]}function de(D){return i[+(D.getHours()>=12)]}function ae(D){return 1+~~(D.getMonth()/3)}function xe(D){return a[D.getUTCDay()]}function ke(D){return o[D.getUTCDay()]}function B(D){return l[D.getUTCMonth()]}function j(D){return s[D.getUTCMonth()]}function Y(D){return i[+(D.getUTCHours()>=12)]}function se(D){return 1+~~(D.getUTCMonth()/3)}return{format:function(D){var F=v(D+="",A);return F.toString=function(){return D},F},parse:function(D){var F=E(D+="",!1);return F.toString=function(){return D},F},utcFormat:function(D){var F=v(D+="",w);return F.toString=function(){return D},F},utcParse:function(D){var F=E(D+="",!0);return F.toString=function(){return D},F}}}var Nd={"-":"",_:" ",0:"0"},Se=/^\s*\d+/,Eg=/^%/,Bg=/[\\^$*+?|[\]().{}]/g;function oe(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",o=i.length;return n+(o<r?new Array(r-o+1).join(t)+i:i)}function Lg(e){return e.replace(Bg,"\\$&")}function mn(e){return new RegExp("^(?:"+e.map(Lg).join("|")+")","i")}function pn(e){return new Map(e.map((t,r)=>[t.toLowerCase(),r]))}function Ig(e,t,r){var n=Se.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function jg(e,t,r){var n=Se.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function zg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function _g(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function $g(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function Fd(e,t,r){var n=Se.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function Ed(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Ug(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function Vg(e,t,r){var n=Se.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Gg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function Bd(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function Wg(e,t,r){var n=Se.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function Ld(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Hg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Yg(e,t,r){var n=Se.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Xg(e,t,r){var n=Se.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function qg(e,t,r){var n=Se.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Zg(e,t,r){var n=Eg.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Kg(e,t,r){var n=Se.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Qg(e,t,r){var n=Se.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function Id(e,t){return oe(e.getDate(),t,2)}function Jg(e,t){return oe(e.getHours(),t,2)}function eb(e,t){return oe(e.getHours()%12||12,t,2)}function tb(e,t){return oe(1+$t.count(Ge(e),e),t,3)}function Ud(e,t){return oe(e.getMilliseconds(),t,3)}function rb(e,t){return Ud(e,t)+"000"}function nb(e,t){return oe(e.getMonth()+1,t,2)}function ib(e,t){return oe(e.getMinutes(),t,2)}function ob(e,t){return oe(e.getSeconds(),t,2)}function ab(e){var t=e.getDay();return t===0?7:t}function sb(e,t){return oe(Gt.count(Ge(e)-1,e),t,2)}function Vd(e){var t=e.getDay();return t>=4||t===0?St(e):St.ceil(e)}function ub(e,t){return e=Vd(e),oe(St.count(Ge(e),e)+(Ge(e).getDay()===4),t,2)}function lb(e){return e.getDay()}function cb(e,t){return oe(gr.count(Ge(e)-1,e),t,2)}function db(e,t){return oe(e.getFullYear()%100,t,2)}function mb(e,t){return e=Vd(e),oe(e.getFullYear()%100,t,2)}function pb(e,t){return oe(e.getFullYear()%1e4,t,4)}function fb(e,t){var r=e.getDay();return e=r>=4||r===0?St(e):St.ceil(e),oe(e.getFullYear()%1e4,t,4)}function hb(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+oe(t/60|0,"0",2)+oe(t%60,"0",2)}function jd(e,t){return oe(e.getUTCDate(),t,2)}function gb(e,t){return oe(e.getUTCHours(),t,2)}function bb(e,t){return oe(e.getUTCHours()%12||12,t,2)}function yb(e,t){return oe(1+Ut.count(ze(e),e),t,3)}function Gd(e,t){return oe(e.getUTCMilliseconds(),t,3)}function xb(e,t){return Gd(e,t)+"000"}function wb(e,t){return oe(e.getUTCMonth()+1,t,2)}function vb(e,t){return oe(e.getUTCMinutes(),t,2)}function Sb(e,t){return oe(e.getUTCSeconds(),t,2)}function kb(e){var t=e.getUTCDay();return t===0?7:t}function Pb(e,t){return oe(lt.count(ze(e)-1,e),t,2)}function Wd(e){var t=e.getUTCDay();return t>=4||t===0?kt(e):kt.ceil(e)}function Mb(e,t){return e=Wd(e),oe(kt.count(ze(e),e)+(ze(e).getUTCDay()===4),t,2)}function Tb(e){return e.getUTCDay()}function Ab(e,t){return oe(br.count(ze(e)-1,e),t,2)}function Cb(e,t){return oe(e.getUTCFullYear()%100,t,2)}function Db(e,t){return e=Wd(e),oe(e.getUTCFullYear()%100,t,2)}function Ob(e,t){return oe(e.getUTCFullYear()%1e4,t,4)}function Rb(e,t){var r=e.getUTCDay();return e=r>=4||r===0?kt(e):kt.ceil(e),oe(e.getUTCFullYear()%1e4,t,4)}function Nb(){return"+0000"}function zd(){return"%"}function _d(e){return+e}function $d(e){return Math.floor(+e/1e3)}var xr,Hd,Yd,Ti,Xd;os({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function os(e){return xr=is(e),Hd=xr.format,Yd=xr.parse,Ti=xr.utcFormat,Xd=xr.utcParse,xr}function Fb(e){return new Date(e)}function Eb(e){return e instanceof Date?+e:+new Date(+e)}function as(e,t,r,n,i,o,a,s,l,c){var d=un(),m=d.invert,p=d.domain,h=c(".%L"),b=c(":%S"),g=c("%I:%M"),y=c("%I %p"),k=c("%a %d"),S=c("%b %d"),A=c("%B"),w=c("%Y");function T(v){return(l(v)<v?h:s(v)<v?b:a(v)<v?g:o(v)<v?y:n(v)<v?i(v)<v?k:S:r(v)<v?A:w)(v)}return d.invert=function(v){return new Date(m(v))},d.domain=function(v){return arguments.length?p(Array.from(v,Eb)):p().map(Fb)},d.ticks=function(v){var E=p();return e(E[0],E[E.length-1],v??10)},d.tickFormat=function(v,E){return E==null?T:c(E)},d.nice=function(v){var E=p();return(!v||typeof v.range!="function")&&(v=t(E[0],E[E.length-1],v??10)),v?p(Ka(E,v)):d},d.copy=function(){return vi(d,as(e,t,r,n,i,o,a,s,l,c))},d}f();function Ai(){return xt.apply(as(es,ts,ze,yr,lt,Ut,hr,fr,Ze,Ti).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}f();f();f();function Z(e){return function(){return e}}f();var ss=Math.abs,Te=Math.atan2,Pt=Math.cos,qd=Math.max,Ci=Math.min,We=Math.sin,Ht=Math.sqrt,Be=1e-12,wr=Math.PI,fn=wr/2,vr=2*wr;function Zd(e){return e>1?0:e<-1?wr:Math.acos(e)}function us(e){return e>=1?fn:e<=-1?-fn:Math.asin(e)}f();f();f();var ls=Math.PI,cs=2*ls,Yt=1e-6,Bb=cs-Yt;function Kd(e){this._+=e[0];for(let t=1,r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function Lb(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Kd;let r=10**t;return function(n){this._+=n[0];for(let i=1,o=n.length;i<o;++i)this._+=Math.round(arguments[i]*r)/r+n[i]}}var Xt=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Kd:Lb(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,o,a){this._append`C${+t},${+r},${+n},${+i},${this._x1=+o},${this._y1=+a}`}arcTo(t,r,n,i,o){if(t=+t,r=+r,n=+n,i=+i,o=+o,o<0)throw new Error(`negative radius: ${o}`);let a=this._x1,s=this._y1,l=n-t,c=i-r,d=a-t,m=s-r,p=d*d+m*m;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>Yt)if(!(Math.abs(m*l-c*d)>Yt)||!o)this._append`L${this._x1=t},${this._y1=r}`;else{let h=n-a,b=i-s,g=l*l+c*c,y=h*h+b*b,k=Math.sqrt(g),S=Math.sqrt(p),A=o*Math.tan((ls-Math.acos((g+p-y)/(2*k*S)))/2),w=A/S,T=A/k;Math.abs(w-1)>Yt&&this._append`L${t+w*d},${r+w*m}`,this._append`A${o},${o},0,0,${+(m*h>d*b)},${this._x1=t+T*l},${this._y1=r+T*c}`}}arc(t,r,n,i,o,a){if(t=+t,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(i),l=n*Math.sin(i),c=t+s,d=r+l,m=1^a,p=a?i-o:o-i;this._x1===null?this._append`M${c},${d}`:(Math.abs(this._x1-c)>Yt||Math.abs(this._y1-d)>Yt)&&this._append`L${c},${d}`,n&&(p<0&&(p=p%cs+cs),p>Bb?this._append`A${n},${n},0,1,${m},${t-s},${r-l}A${n},${n},0,1,${m},${this._x1=c},${this._y1=d}`:p>Yt&&this._append`A${n},${n},0,${+(p>=ls)},${m},${this._x1=t+n*Math.cos(o)},${this._y1=r+n*Math.sin(o)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};function Qd(){return new Xt}Qd.prototype=Xt.prototype;function Sr(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new Xt(t)}function Ib(e){return e.innerRadius}function jb(e){return e.outerRadius}function zb(e){return e.startAngle}function _b(e){return e.endAngle}function $b(e){return e&&e.padAngle}function Ub(e,t,r,n,i,o,a,s){var l=r-e,c=n-t,d=a-i,m=s-o,p=m*l-d*c;if(!(p*p<Be))return p=(d*(t-o)-m*(e-i))/p,[e+p*l,t+p*c]}function Di(e,t,r,n,i,o,a){var s=e-r,l=t-n,c=(a?o:-o)/Ht(s*s+l*l),d=c*l,m=-c*s,p=e+d,h=t+m,b=r+d,g=n+m,y=(p+b)/2,k=(h+g)/2,S=b-p,A=g-h,w=S*S+A*A,T=i-o,v=p*g-b*h,E=(A<0?-1:1)*Ht(qd(0,T*T*w-v*v)),C=(v*A-S*E)/w,N=(-v*S-A*E)/w,G=(v*A+S*E)/w,_=(-v*S+A*E)/w,I=C-y,P=N-k,M=G-y,H=_-k;return I*I+P*P>M*M+H*H&&(C=G,N=_),{cx:C,cy:N,x01:-d,y01:-m,x11:C*(i/T-1),y11:N*(i/T-1)}}function Oi(){var e=Ib,t=jb,r=Z(0),n=null,i=zb,o=_b,a=$b,s=null,l=Sr(c);function c(){var d,m,p=+e.apply(this,arguments),h=+t.apply(this,arguments),b=i.apply(this,arguments)-fn,g=o.apply(this,arguments)-fn,y=ss(g-b),k=g>b;if(s||(s=d=l()),h<p&&(m=h,h=p,p=m),!(h>Be))s.moveTo(0,0);else if(y>vr-Be)s.moveTo(h*Pt(b),h*We(b)),s.arc(0,0,h,b,g,!k),p>Be&&(s.moveTo(p*Pt(g),p*We(g)),s.arc(0,0,p,g,b,k));else{var S=b,A=g,w=b,T=g,v=y,E=y,C=a.apply(this,arguments)/2,N=C>Be&&(n?+n.apply(this,arguments):Ht(p*p+h*h)),G=Ci(ss(h-p)/2,+r.apply(this,arguments)),_=G,I=G,P,M;if(N>Be){var H=us(N/p*We(C)),q=us(N/h*We(C));(v-=H*2)>Be?(H*=k?1:-1,w+=H,T-=H):(v=0,w=T=(b+g)/2),(E-=q*2)>Be?(q*=k?1:-1,S+=q,A-=q):(E=0,S=A=(b+g)/2)}var V=h*Pt(S),z=h*We(S),K=p*Pt(T),re=p*We(T);if(G>Be){var de=h*Pt(A),ae=h*We(A),xe=p*Pt(w),ke=p*We(w),B;if(y<wr)if(B=Ub(V,z,xe,ke,de,ae,K,re)){var j=V-B[0],Y=z-B[1],se=de-B[0],D=ae-B[1],F=1/We(Zd((j*se+Y*D)/(Ht(j*j+Y*Y)*Ht(se*se+D*D)))/2),$=Ht(B[0]*B[0]+B[1]*B[1]);_=Ci(G,(p-$)/(F-1)),I=Ci(G,(h-$)/(F+1))}else _=I=0}E>Be?I>Be?(P=Di(xe,ke,V,z,h,I,k),M=Di(de,ae,K,re,h,I,k),s.moveTo(P.cx+P.x01,P.cy+P.y01),I<G?s.arc(P.cx,P.cy,I,Te(P.y01,P.x01),Te(M.y01,M.x01),!k):(s.arc(P.cx,P.cy,I,Te(P.y01,P.x01),Te(P.y11,P.x11),!k),s.arc(0,0,h,Te(P.cy+P.y11,P.cx+P.x11),Te(M.cy+M.y11,M.cx+M.x11),!k),s.arc(M.cx,M.cy,I,Te(M.y11,M.x11),Te(M.y01,M.x01),!k))):(s.moveTo(V,z),s.arc(0,0,h,S,A,!k)):s.moveTo(V,z),!(p>Be)||!(v>Be)?s.lineTo(K,re):_>Be?(P=Di(K,re,de,ae,p,-_,k),M=Di(V,z,xe,ke,p,-_,k),s.lineTo(P.cx+P.x01,P.cy+P.y01),_<G?s.arc(P.cx,P.cy,_,Te(P.y01,P.x01),Te(M.y01,M.x01),!k):(s.arc(P.cx,P.cy,_,Te(P.y01,P.x01),Te(P.y11,P.x11),!k),s.arc(0,0,p,Te(P.cy+P.y11,P.cx+P.x11),Te(M.cy+M.y11,M.cx+M.x11),k),s.arc(M.cx,M.cy,_,Te(M.y11,M.x11),Te(M.y01,M.x01),!k))):s.arc(0,0,p,T,w,k)}if(s.closePath(),d)return s=null,d+""||null}return c.centroid=function(){var d=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,m=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-wr/2;return[Pt(m)*d,We(m)*d]},c.innerRadius=function(d){return arguments.length?(e=typeof d=="function"?d:Z(+d),c):e},c.outerRadius=function(d){return arguments.length?(t=typeof d=="function"?d:Z(+d),c):t},c.cornerRadius=function(d){return arguments.length?(r=typeof d=="function"?d:Z(+d),c):r},c.padRadius=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Z(+d),c):n},c.startAngle=function(d){return arguments.length?(i=typeof d=="function"?d:Z(+d),c):i},c.endAngle=function(d){return arguments.length?(o=typeof d=="function"?d:Z(+d),c):o},c.padAngle=function(d){return arguments.length?(a=typeof d=="function"?d:Z(+d),c):a},c.context=function(d){return arguments.length?(s=d??null,c):s},c}f();f();var EM=Array.prototype.slice;function Mt(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}f();function Jd(e){this._context=e}Jd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function qt(e){return new Jd(e)}f();f();function Ri(e){return e[0]}function Ni(e){return e[1]}function hn(e,t){var r=Z(!0),n=null,i=qt,o=null,a=Sr(s);e=typeof e=="function"?e:e===void 0?Ri:Z(e),t=typeof t=="function"?t:t===void 0?Ni:Z(t);function s(l){var c,d=(l=Mt(l)).length,m,p=!1,h;for(n==null&&(o=i(h=a())),c=0;c<=d;++c)!(c<d&&r(m=l[c],c,l))===p&&((p=!p)?o.lineStart():o.lineEnd()),p&&o.point(+e(m,c,l),+t(m,c,l));if(h)return o=null,h+""||null}return s.x=function(l){return arguments.length?(e=typeof l=="function"?l:Z(+l),s):e},s.y=function(l){return arguments.length?(t=typeof l=="function"?l:Z(+l),s):t},s.defined=function(l){return arguments.length?(r=typeof l=="function"?l:Z(!!l),s):r},s.curve=function(l){return arguments.length?(i=l,n!=null&&(o=i(n)),s):i},s.context=function(l){return arguments.length?(l==null?n=o=null:o=i(n=l),s):n},s}function ds(e,t,r){var n=null,i=Z(!0),o=null,a=qt,s=null,l=Sr(c);e=typeof e=="function"?e:e===void 0?Ri:Z(+e),t=typeof t=="function"?t:t===void 0?Z(0):Z(+t),r=typeof r=="function"?r:r===void 0?Ni:Z(+r);function c(m){var p,h,b,g=(m=Mt(m)).length,y,k=!1,S,A=new Array(g),w=new Array(g);for(o==null&&(s=a(S=l())),p=0;p<=g;++p){if(!(p<g&&i(y=m[p],p,m))===k)if(k=!k)h=p,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),b=p-1;b>=h;--b)s.point(A[b],w[b]);s.lineEnd(),s.areaEnd()}k&&(A[p]=+e(y,p,m),w[p]=+t(y,p,m),s.point(n?+n(y,p,m):A[p],r?+r(y,p,m):w[p]))}if(S)return s=null,S+""||null}function d(){return hn().defined(i).curve(a).context(o)}return c.x=function(m){return arguments.length?(e=typeof m=="function"?m:Z(+m),n=null,c):e},c.x0=function(m){return arguments.length?(e=typeof m=="function"?m:Z(+m),c):e},c.x1=function(m){return arguments.length?(n=m==null?null:typeof m=="function"?m:Z(+m),c):n},c.y=function(m){return arguments.length?(t=typeof m=="function"?m:Z(+m),r=null,c):t},c.y0=function(m){return arguments.length?(t=typeof m=="function"?m:Z(+m),c):t},c.y1=function(m){return arguments.length?(r=m==null?null:typeof m=="function"?m:Z(+m),c):r},c.lineX0=c.lineY0=function(){return d().x(e).y(t)},c.lineY1=function(){return d().x(e).y(r)},c.lineX1=function(){return d().x(n).y(t)},c.defined=function(m){return arguments.length?(i=typeof m=="function"?m:Z(!!m),c):i},c.curve=function(m){return arguments.length?(a=m,o!=null&&(s=a(o)),c):a},c.context=function(m){return arguments.length?(m==null?o=s=null:s=a(o=m),c):o},c}f();f();function em(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}f();function tm(e){return e}function ms(){var e=tm,t=em,r=null,n=Z(0),i=Z(vr),o=Z(0);function a(s){var l,c=(s=Mt(s)).length,d,m,p=0,h=new Array(c),b=new Array(c),g=+n.apply(this,arguments),y=Math.min(vr,Math.max(-vr,i.apply(this,arguments)-g)),k,S=Math.min(Math.abs(y)/c,o.apply(this,arguments)),A=S*(y<0?-1:1),w;for(l=0;l<c;++l)(w=b[h[l]=l]=+e(s[l],l,s))>0&&(p+=w);for(t!=null?h.sort(function(T,v){return t(b[T],b[v])}):r!=null&&h.sort(function(T,v){return r(s[T],s[v])}),l=0,m=p?(y-c*A)/p:0;l<c;++l,g=k)d=h[l],w=b[d],k=g+(w>0?w*m:0)+A,b[d]={data:s[d],index:l,value:w,startAngle:g,endAngle:k,padAngle:S};return b}return a.value=function(s){return arguments.length?(e=typeof s=="function"?s:Z(+s),a):e},a.sortValues=function(s){return arguments.length?(t=s,r=null,a):t},a.sort=function(s){return arguments.length?(r=s,t=null,a):r},a.startAngle=function(s){return arguments.length?(n=typeof s=="function"?s:Z(+s),a):n},a.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:Z(+s),a):i},a.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:Z(+s),a):o},a}f();function rm(e){return e<0?-1:1}function nm(e,t,r){var n=e._x1-e._x0,i=t-e._x1,o=(e._y1-e._y0)/(n||i<0&&-0),a=(r-e._y1)/(i||n<0&&-0),s=(o*i+a*n)/(n+i);return(rm(o)+rm(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function im(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function ps(e,t,r){var n=e._x0,i=e._y0,o=e._x1,a=e._y1,s=(o-n)/3;e._context.bezierCurveTo(n+s,i+s*t,o-s,a-s*r,o,a)}function Fi(e){this._context=e}Fi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ps(this,this._t0,im(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,ps(this,im(this,r=nm(this,e,t)),r);break;default:ps(this,this._t0,r=nm(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Vb(e){this._context=new om(e)}(Vb.prototype=Object.create(Fi.prototype)).point=function(e,t){Fi.prototype.point.call(this,t,e)};function om(e){this._context=e}om.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,o){this._context.bezierCurveTo(t,e,n,r,o,i)}};function fs(e){return new Fi(e)}f();function am(e,t){this._context=e,this._t=t}am.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function hs(e){return new am(e,1)}f();f();function gs(e,t){if((a=e.length)>1)for(var r=1,n,i,o=e[t[0]],a,s=o.length;r<a;++r)for(i=o,o=e[t[r]],n=0;n<s;++n)o[n][1]+=o[n][0]=isNaN(i[n][1])?i[n][0]:i[n][1]}f();function bs(e){for(var t=e.length,r=new Array(t);--t>=0;)r[t]=t;return r}function Gb(e,t){return e[t]}function Wb(e){let t=[];return t.key=e,t}function ys(){var e=Z([]),t=bs,r=gs,n=Gb;function i(o){var a=Array.from(e.apply(this,arguments),Wb),s,l=a.length,c=-1,d;for(let m of o)for(s=0,++c;s<l;++s)(a[s][c]=[0,+n(m,a[s].key,c,o)]).data=m;for(s=0,d=Mt(t(a));s<l;++s)a[d[s]].index=s;return r(a,d),a}return i.keys=function(o){return arguments.length?(e=typeof o=="function"?o:Z(Array.from(o)),i):e},i.value=function(o){return arguments.length?(n=typeof o=="function"?o:Z(+o),i):n},i.order=function(o){return arguments.length?(t=o==null?bs:typeof o=="function"?o:Z(Array.from(o)),i):t},i.offset=function(o){return arguments.length?(r=o??gs,i):r},i}f();function xs(e,t){if((l=e.length)>0)for(var r,n=0,i,o,a,s,l,c=e[t[0]].length;n<c;++n)for(a=s=0,r=0;r<l;++r)(o=(i=e[t[r]][n])[1]-i[0])>0?(i[0]=a,i[1]=a+=o):o<0?(i[1]=s,i[0]=s+=o):(i[0]=0,i[1]=o)}var cm=["#6366f1","#22d3ee","#f59e0b","#ec4899","#10b981","#8b5cf6","#f97316","#3b82f6"],Hb=e=>typeof e=="object"&&e!==null&&"open"in e&&"close"in e,Yb=e=>typeof e=="object"&&e!==null&&"label"in e&&"value"in e;function Xb(e){return e==="linear"?qt:e==="step"?hs:fs}function ws(e,t){let r=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!r)return e;let n=r[1];n.length===3&&(n=[...n].map(o=>o+o).join(""));let i=parseInt(n,16);return`rgba(${i>>16&255}, ${i>>8&255}, ${i&255}, ${t})`}function sm(e){if(!e?.format)return null;if(typeof e.format=="function")return e.format;let t=sr(e.format);return r=>typeof r=="number"?t(r):String(r)}function J(e){return Math.round(e*100)/100}function kr(e,t=0,r=e.duration){return Q.create().fromTo("opacity",0,1,{start:e.start+t,end:e.start+t+Math.max(1,r),ease:"power2.out"})}function dm(e,t,r){let n=t.id??X("chart"),i=e.width??(typeof t.width=="number"?t.width:960),o=e.height??(typeof t.height=="number"?t.height:540),a=e.type??"line",s=e.fontSize??18,l=e.fontFamily??r,c=e.textColor??"#94a3b8",d=e.textColor??"#e2e8f0",m=e.gridColor??"rgba(148, 163, 184, 0.18)",p=e.colors?.length?e.colors:cm,h=e.cornerRadius??4,b=e.animate===!1?void 0:e.animate??{},g={enabled:b!==void 0,start:b?.start??0,duration:b?.duration??30,stagger:b?.stagger??-1,ease:b?.ease??"power3.out"},y=[],k=(P,M,H,q={},V="")=>{let z=L.text(P,{id:`${n}-label-${V||y.length}`,position:"absolute",x:J(M.x),y:J(M.y),width:J(M.width),height:J(M.height),fontFamily:l,fontSize:s,fontWeight:q.weight??500,fill:q.color??c,align:H,verticalAlign:"middle"});g.enabled&&z.animate(kr(g,q.delay??0)),y.push(z)},S=Math.ceil(s*1.4);a==="pie"||a==="donut"?A():T();for(let P of y)mm(P);return L.box({background:e.background??"transparent",...t,id:n,width:i,height:o,children:y});function A(){let P=w(),M=P.reduce((j,Y)=>j+Math.max(0,Y.value),0),H=e.legend??!0,q=E({top:16,right:H?N(P.map(j=>j.label)):16,bottom:16,left:16}),V=C(q),z=Math.max(1,Math.min(V.width,V.height)/2),K=z*(e.innerRadius??(a==="donut"?.6:0)),re=V.x+V.width/2,de=V.y+V.height/2,ae=4,xe=ms().sort(null).value(j=>Math.max(0,j.value)).padAngle(P.length>1?.012:0)(P),ke=Oi().innerRadius(K).outerRadius(z).cornerRadius(Math.min(h,(z-K)/2)),B=v(xe.length);xe.forEach((j,Y)=>{let se=ke(j);if(!se)return;let D=P[Y].color??p[Y%p.length],F=L.shape("path",{id:`${n}-slice-${Y}`,position:"absolute",x:J(re-z-ae),y:J(de-z-ae),width:J(2*(z+ae)),height:J(2*(z+ae)),d:qb(se,z+ae,z+ae),fillColor:D,anchorX:.5,anchorY:.5});if(g.enabled){let $=g.start+Y*B;F.animate(Q.create().fromTo("opacity",0,1,{start:$,end:$+g.duration*.5}).fromTo("scale",.85,1,{start:$,end:$+g.duration,ease:g.ease}))}if(y.push(F),e.valueLabels&&M>0&&j.value>0){let[$,R]=Oi().innerRadius(K||z*.55).outerRadius(z).centroid(j),we=`${Math.round(j.value/M*100)}%`;k(we,{x:re+$-60,y:de+R-S/2,width:120,height:S},"center",{delay:Y*B+g.duration*.5,color:"#ffffff",weight:700},`value-${Y}`)}}),H&&G(P.map((j,Y)=>({name:j.label,color:j.color??p[Y%p.length]})),{x:V.x+V.width+24,y:V.y,height:V.height})}function w(){return(e.data??e.series?.[0]?.data??[]).map((M,H)=>{if(Yb(M))return M;let q=typeof M=="number"?M:Array.isArray(M)?Number(M[1]):Number(M.y);return{label:e.categories?.[H]??(Array.isArray(M)?String(M[0]):typeof M=="object"&&M?String(M.x):`${H+1}`),value:q}})}function T(){let P=e.series?.length?[...e.series]:e.data?[{data:e.data}]:[];if(P.length===0)return;let M=O=>O.type??a??"line",H=(O,U)=>O.color??p[U%p.length],q=P.map(O=>O.data.map((U,te)=>Hb(U)?{x:U.x,y:U.close}:typeof U=="number"?{x:e.categories?.[te]??te,y:U}:Array.isArray(U)?{x:U[0],y:Number(U[1])}:{x:U.x,y:Number(U.y)})),V=P.some(O=>M(O)==="bar"||M(O)==="candlestick"),z=q.flat().map(O=>O.x),K=V||z.some(O=>typeof O=="string")?"band":z.some(O=>O instanceof Date)?"time":"linear",re=O=>M(O)==="bar"||M(O)==="area",de=!!e.stacked,ae=K==="band"?[...new Set(z.map(String))]:[],xe=new Map;if(de){let O=P.map((me,Pe)=>Pe).filter(me=>re(P[me])),U=ae.length?ae:[...new Set(z.map(me=>+me))].sort((me,Pe)=>me-Pe).map(String),te=U.map(me=>{let Pe={};for(let Oe of O){let Re=q[Oe].find(ve=>String(K==="band"?ve.x:+ve.x)===me);Pe[Oe]=Re?.y??0}return Pe});ys().keys(O.map(String)).offset(xs)(te).forEach(me=>{let Pe=Number(me.key);xe.set(Pe,q[Pe].map(Oe=>{let Re=U.indexOf(String(K==="band"?Oe.x:+Oe.x));return[me[Re][0],me[Re][1]]}))})}let ke=[0];P.forEach((O,U)=>{let te=xe.get(U);if(M(O)==="candlestick")for(let ce of O.data)ke.push(ce.high,ce.low);else if(te)for(let[ce,me]of te)ke.push(ce,me);else for(let ce of q[U])ke.push(ce.y)}),P.every(O=>M(O)==="candlestick"||M(O)==="scatter"||M(O)==="line")&&ke.shift();let B=e.yAxis??{},j=e.xAxis??{},Y=B.ticks??5,se=B.min??Math.min(...ke),D=B.max??Math.max(...ke);(!Number.isFinite(se)||!Number.isFinite(D))&&([se,D]=[0,1]),se===D&&([se,D]=[se-1,D+1]);let F=pr().domain([se,D]);(B.min===void 0||B.max===void 0)&&F.nice(Y);let $=sm(B)??(O=>F.tickFormat(Y)(O)),R=F.ticks(Y),we=P.map((O,U)=>({name:O.name??`Series ${U+1}`,color:H(O,U)})),ue=e.legend??P.length>1,Ce=B.show!==!1,De=j.show!==!1,tt=Ce?Math.max(...R.map(O=>$(O).length))*s*.7+20:0,Cn=E({top:(ue?S+20:0)+Math.ceil(S/2),right:20,bottom:De?S+14:12,left:Math.max(16,Math.ceil(tt))}),ne=C(Cn),qs=S+6,Zs=e.valueLabels?P.flatMap((O,U)=>M(O)==="bar"?q[U].map(te=>te.y):[]):[],Tp=Zs.some(O=>O>0)?qs:0,Ap=Zs.some(O=>O<0)?qs:0;F.range([ne.height-Ap,Tp]);let rt;if(K==="band")rt=rn().domain(ae).range([0,ne.width]).paddingInner(V?.28:0).paddingOuter(V?.14:.5);else if(K==="time"){let O=z.map(U=>+new Date(U));rt=Ai().domain([Math.min(...O),Math.max(...O)]).range([0,ne.width])}else{let O=z.map(Number);rt=pr().domain([j.min??Math.min(...O),j.max??Math.max(...O)]).range([0,ne.width])}let Ks=O=>{if(K==="band"){let U=rt;return(U(String(O))??0)+U.bandwidth()/2}return rt(K==="time"?new Date(O):Number(O))},Qs=0;B.grid!==!1&&R.forEach((O,U)=>{let te=L.box({id:`${n}-ygrid-${U}`,position:"absolute",x:ne.x,y:J(ne.y+F(O)-.5),width:ne.width,height:1,background:m});g.enabled&&te.animate(kr(g,Qs,g.duration/2)),y.push(te)}),Ce&&R.forEach((O,U)=>{k($(O),{x:0,y:ne.y+F(O)-S/2,width:ne.x-12,height:S},"end",{},`y-${U}`)});let Dr=[],Dn=sm(j);if(K==="band"){let O=rt,U=Math.max(1,Math.ceil(ae.length/Math.max(1,Math.floor(ne.width/(s*4)))));ae.forEach((te,ce)=>{ce%U===0&&Dr.push({pos:(O(te)??0)+O.bandwidth()/2,text:Dn?Dn(te):te})})}else{let O=rt,U=j.ticks??Math.max(2,Math.floor(ne.width/(s*6))),te=O.tickFormat(U);for(let ce of O.ticks(U))Dr.push({pos:O(ce),text:Dn?Dn(K==="time"?new Date(ce):ce):te(ce)})}if(j.grid&&Dr.forEach((O,U)=>{let te=L.box({id:`${n}-xgrid-${U}`,position:"absolute",x:J(ne.x+O.pos-.5),y:ne.y,width:1,height:ne.height,background:m});g.enabled&&te.animate(kr(g,Qs,g.duration/2)),y.push(te)}),De){let O=Math.max(s*3,ne.width/Math.max(1,Dr.length));Dr.forEach((U,te)=>{k(U.text,{x:ne.x+U.pos-O/2,y:ne.y+ne.height+10,width:O,height:S},"center",{},`x-${te}`)})}let[Cp,Dp]=F.domain();if(Cp<=0&&Dp>=0&&V){let O=L.box({id:`${n}-zero`,position:"absolute",x:ne.x,y:J(ne.y+F(0)-1),width:ne.width,height:2,background:ws("#94a3b8",.45)});g.enabled&&O.animate(kr(g,0,g.duration/2)),y.push(O)}let On=P.map((O,U)=>U).filter(O=>M(P[O])==="bar"),Op=[...On,...P.map((O,U)=>U).filter(O=>M(P[O])==="candlestick"),...P.map((O,U)=>U).filter(O=>M(P[O])==="area"),...P.map((O,U)=>U).filter(O=>M(P[O])==="line"),...P.map((O,U)=>U).filter(O=>M(P[O])==="scatter")],pt=K==="band"?rt:null,Js=pt?v(ae.length):0,eu=O=>pt?ae.indexOf(String(O)):0;Op.forEach((O,U)=>{let te=P[O],ce=H(te,O),me=M(te),Pe=q[O],Oe=xe.get(O);if(me==="bar"&&pt){let Re=de?1:On.length,ve=de?0:On.indexOf(O),Ne=pt.bandwidth()/Re,fe=Re>1?Math.min(4,Ne*.12):0;Pe.forEach((Fe,He)=>{let[ft,Me]=Oe?Oe[He]:[0,Fe.y],be=ne.y+F(Math.max(ft,Me)),Rn=ne.y+F(Math.min(ft,Me)),Ee=Math.max(0,Rn-be),Or=ne.x+(pt(String(Fe.x))??0)+ve*Ne+fe/2,At=Fe.y>=0?"up":"down",Nn=L.box({id:`${n}-bar-${O}-${He}`,position:"absolute",x:J(Or),y:J(be),width:J(Math.max(1,Ne-fe)),height:J(Ee),background:ce,borderRadius:Math.min(h,(Ne-fe)/2,Ee/2)}),ru=eu(Fe.x)*Js+(de?On.indexOf(O)*g.duration*.6:0);if(g.enabled){let Rr=g.start+ru,Fn=Rr+g.duration,nu=Q.create().fromTo("height",0,J(Ee),{start:Rr,end:Fn,ease:g.ease});At==="up"&&nu.fromTo("y",J(be+Ee),J(be),{start:Rr,end:Fn,ease:g.ease}),Nn.animate(nu)}if(y.push(Nn),e.valueLabels){let Rr=$(Fe.y),Fn=At==="up"?be-S-4:be+Ee+4;k(Rr,{x:Or-30,y:Fn,width:Ne-fe+60,height:S},"center",{delay:ru+g.duration*.6,color:d,weight:600},`value-${O}-${He}`)}});return}if(me==="candlestick"&&pt){let Re=e.upColor??"#22c55e",ve=e.downColor??"#ef4444",Ne=pt.bandwidth();te.data.forEach((fe,Fe)=>{let He=fe.close>=fe.open?Re:ve,ft=ne.x+(pt(String(fe.x))??0)+Ne/2,Me=eu(fe.x)*Js,be=[["wick",{x:ft-Math.max(1,Ne*.06),y:ne.y+F(fe.high),width:Math.max(2,Ne*.12),height:Math.max(1,F(fe.low)-F(fe.high))}],["body",{x:ft-Ne/2,y:ne.y+F(Math.max(fe.open,fe.close)),width:Ne,height:Math.max(2,Math.abs(F(fe.open)-F(fe.close)))}]];for(let[Rn,Ee]of be){let Or=L.box({id:`${n}-candle-${O}-${Fe}-${Rn}`,position:"absolute",x:J(Ee.x),y:J(Ee.y),width:J(Ee.width),height:J(Ee.height),background:He,borderRadius:Rn==="body"?Math.min(h/2,Ee.width/2):0});if(g.enabled){let At=g.start+Me,Nn=Ee.y+Ee.height/2;Or.animate(Q.create().fromTo("height",0,J(Ee.height),{start:At,end:At+g.duration,ease:g.ease}).fromTo("y",J(Nn),J(Ee.y),{start:At,end:At+g.duration,ease:g.ease}))}y.push(Or)}});return}if(me==="line"||me==="area"){let Re=te.strokeWidth??3,ve=Math.ceil(Re*2+(te.pointRadius??0)+2),Ne=Pe.map((Me,be)=>({x:Ks(Me.x)+ve,top:F(Oe?Oe[be][1]:Me.y)+ve,base:F(Oe?Oe[be][0]:Math.max(F.domain()[0],Math.min(0,F.domain()[1])))+ve})),fe=Xb(te.curve),Fe={x:ne.x-ve,y:ne.y-ve,width:ne.width+2*ve,height:ne.height+2*ve},He=U*(g.duration/3);if(me==="area"){let Me=ds().x(be=>be.x).y0(be=>be.base).y1(be=>be.top).curve(fe)(Ne);if(Me){let be=L.shape("path",{id:`${n}-area-${O}`,position:"absolute",...um(Fe),d:lm(Me),fillType:"linear",fillColor:ws(ce,.45),gradientEndColor:ws(ce,.02),gradientAngle:90});g.enabled&&be.animate(kr(g,He+g.duration*.4,g.duration)),y.push(be)}}let ft=hn().x(Me=>Me.x).y(Me=>Me.top).curve(fe)(Ne);if(ft&&Re>0){let Me=L.shape("path",{id:`${n}-line-${O}`,position:"absolute",...um(Fe),d:lm(ft),fillType:"none",strokeColor:ce,strokeWidth:Re,strokeLineCap:"round",strokeLineJoin:"round"});g.enabled&&Me.animate(Q.create().fromTo("trimEnd",0,1,{start:g.start+He,end:g.start+He+g.duration*1.5,ease:"power2.inOut"})),y.push(Me)}(te.pointRadius??0)>0&&tu(O,Pe,ce,te.pointRadius??0,He+g.duration*.5,Oe);return}me==="scatter"&&tu(O,Pe,ce,te.pointRadius??6,U*(g.duration/3),Oe)}),ue&&_(we);function tu(O,U,te,ce,me,Pe){let Oe=v(U.length);U.forEach((Re,ve)=>{let Ne=F(Pe?Pe[ve][1]:Re.y),fe=L.shape("circle",{id:`${n}-point-${O}-${ve}`,position:"absolute",x:J(ne.x+Ks(Re.x)-ce),y:J(ne.y+Ne-ce),width:J(ce*2),height:J(ce*2),fillColor:te,anchorX:.5,anchorY:.5});if(g.enabled){let Fe=g.start+me+ve*Oe;fe.animate(Q.create().fromTo("scale",0,1,{start:Fe,end:Fe+g.duration*.6,ease:"back.out(2)"}).fromTo("opacity",0,1,{start:Fe,end:Fe+6}))}y.push(fe)})}}function v(P){return!g.enabled||P<=1?0:g.stagger>=0?g.stagger:Math.min(4,g.duration/P)}function E(P){let M=e.padding;return typeof M=="number"?{top:M,right:M,bottom:M,left:M}:{top:M?.top??P.top,right:M?.right??P.right,bottom:M?.bottom??P.bottom,left:M?.left??P.left}}function C(P){return{x:P.left,y:P.top,width:Math.max(1,i-P.left-P.right),height:Math.max(1,o-P.top-P.bottom)}}function N(P){let M=Math.max(0,...P.map(H=>H.length));return Math.min(i*.4,M*s*.6+s+48)}function G(P,M){let H=S+8,q=M.y+Math.max(0,(M.height-P.length*H)/2);P.forEach((V,z)=>{I(V,M.x,q+z*H,z)})}function _(P){let M=P.map(V=>V.name.length*s*.6+s+28),H=M.reduce((V,z)=>V+z,0),q=Math.max(0,i-H-20);P.forEach((V,z)=>{I(V,q,4,z),q+=M[z]})}function I(P,M,H,q){let V=Math.round(s*.7),z=L.box({id:`${n}-legend-swatch-${q}`,position:"absolute",x:J(M),y:J(H+(S-V)/2),width:V,height:V,borderRadius:Math.round(V/4),background:P.color});g.enabled&&z.animate(kr(g,0,g.duration/2)),y.push(z),k(P.name,{x:M+V+8,y:H,width:P.name.length*s*.6+12,height:S},"start",{color:e.textColor??"#cbd5e1"},`legend-${q}`)}}function mm(e){for(let t of e.animation?.tracks??[])for(let r of t.keyframes??[])r.frame=Math.round(r.frame);for(let t of e.children??[])mm(t)}function um(e){return{x:J(e.x),y:J(e.y),width:J(e.width),height:J(e.height)}}function lm(e){return e.replace(/-?\d*\.\d{3,}(?:e-?\d+)?/gi,t=>String(J(Number(t))))}function qb(e,t,r){let n=[],i=/([MLAZ])([^MLAZ]*)/gi;for(let[,o,a]of e.matchAll(i)){let s=(a.match(/-?\d*\.?\d+(?:e-?\d+)?/gi)??[]).map(Number);if(o.toUpperCase()==="A")for(let l=0;l+6<s.length;l+=7)s[l+5]+=t,s[l+6]+=r;else if(o.toUpperCase()!=="Z")for(let l=0;l+1<s.length;l+=2)s[l]+=t,s[l+1]+=r;n.push(o+s.map(J).join(","))}return n.join("")}f();var pm=24,Zb=1,Kb=1,Qb="depth-anything-v2-s",Jb=48,fm,ey=0;function ty(){return fm??=import("./src-YXNX4MLK.mjs"),fm}var gn=class{source;fps;compositionFps;startFrame;trimStartSec;smoothing;options;results=new Map;sourceWidth=0;sourceHeight=0;cellW=0;cellH=0;cell;queue=Promise.resolve();runner;sam2Tracker;sam2Frame=-1;sam3Tracker;sam3Frame=-1;sam;decoderId=`clip-vision#${++ey}#`;signalBundle;publishedSignals=new Set;signalMaskFrame=-1;signalMasks=new Map;trackCounts=new Map;cacheLoaded;unsaved=0;unsavedSubjects=0;blurred=new Map;smoothed=new Map;personView;subjects=new Map;wantSubjects=!1;subjectsLoaded;depths=new Map;depthsOnDisk=new Set;depthDir;depthDisk;constructor(t,r,n={}){if(this.source=t,n.sam2&&n.sam3)throw new Error("Choose one prompted backend: sam2 or sam3.");this.options=n.sam2?{...n,sam2:{...n.sam2,prompts:n.sam2.prompts.map(i=>({...i,points:i.points.map(o=>({...o}))}))}}:n.sam3?{...n,sam3:{...n.sam3,prompts:(n.sam3.prompts??(n.sam3.text?[{frame:0,text:n.sam3.text}]:[])).map(i=>({...i,...i.points?{points:i.points.map(o=>({...o}))}:{}}))}}:n,this.compositionFps=r,this.fps=n.fps??r,this.startFrame=Math.round(n.startFrame??0),this.trimStartSec=n.trimStartSec??0,this.smoothing=Math.max(0,Math.round(n.smoothing??(n.sam2||n.sam3?0:2))),this.cell=Math.max(1,Math.round(n.maskCell??8)),(n.sam2||n.sam3)&&(this.wantSubjects=!0)}get exact(){return this.options.sam2!==void 0||this.options.sam3!==void 0}get signals(){return this.keepSubjects(),this.signalBundle??=new Br({fps:this.compositionFps,totalFrames:Number.MAX_SAFE_INTEGER,maskSource:t=>this.trackIds(t).flatMap(r=>{let n=this.maskAt(t,r);return n&&n.area>0?[n]:[]}),matteSource:t=>{let r=this.maskAt(t);return r?{mask:r.mask,width:r.width,height:r.height,coverage:r.coverage}:void 0}}),this.signalBundle}decoder(){return Er.getVideo(this.source,!0,this.decoderId)}release(){Er.clearNode(this.decoderId),this.sam2Tracker?.release(),this.sam2Tracker=void 0,this.sam2Frame=-1,this.sam3Tracker?.release(),this.sam3Tracker=void 0,this.sam3Frame=-1,this.runner?.close(),this.runner=void 0,this.signalMaskFrame=-1,this.signalMasks.clear(),this.publishedSignals.clear()}get person(){return this.personView??=new Bi(this),this.personView}ready(t,r=t){let[n,i]=this.window(t,r),o=this.queue.then(async()=>{try{await this.compute(n,i)}catch(a){throw this.release(),a}this.signalBundle&&this.publishSignals(Math.min(t,r),Math.max(t,r))});return this.queue=o.catch(()=>{}),o}isReady(t){let[r,n]=this.window(t,t);for(let i=r;i<=n;i++)if(!this.analysed(i))return!1;return!0}keepSubjects(){this.wantSubjects=!0}subject(t,r){let n=this.sourceFrame(t,r);if(n===void 0)return;let i=this.subjects.get(n);if(i===void 0)return i;if(i===null||!this.sourceWidth)return null;let o=this.sourceWidth,a=this.sourceHeight;return{category:i.category,mask:bm(i,o*a),width:o,height:a,area:i.area,coverage:i.area/(o*a),detectionIndex:-1}}pose(t,r){let n=this.sourceFrame(t,r);if(n===void 0||!this.tracksPose||!this.sourceWidth)return;for(let a=n-this.smoothing;a<=n+this.smoothing;a++)if(!this.results.has(Math.max(0,a)))return;if(!this.results.get(n)?.kp)return null;let i=this.sourceWidth,o=this.sourceHeight;return{width:i,height:o,keypoints:Array.from({length:17},(a,s)=>{let[l,c,d]=this.keypoint(s,n);return{x:l/i,y:c/o,visibility:d}})}}get tracksPose(){return this.exact?this.options.pose===!0:this.options.pose??!this.tracksDepth}get tracksMask(){return this.options.mask??!this.tracksDepth}get tracksDepth(){return this.options.depth===!0}depthMap(t){return this.depth(t,this.compositionFps)??void 0}depth(t,r){let n=this.sourceFrame(t,r);if(n===void 0||!this.tracksDepth)return;let i=this.storedDepth(n);if(!i)return i;let o=new Float32Array(i.data.length);for(let a=0;a<o.length;a++)o[a]=i.data[a]/65535;return{data:o,width:i.width,height:i.height}}sourceFrame(t,r){let n=t*this.fps/r;if(!(!this.exact&&!this.options.timeRemap&&Math.abs(n-Math.round(n))>1e-6))return this.options.timeRemap||this.exact?Math.floor(n+1e-6):Math.round(n)}clipFrame(t){return this.options.timeRemap?lu(this.options.timeRemap,this.localFrame(t),this.compositionFps)*this.fps:((t-this.startFrame)/this.compositionFps+this.trimStartSec)*this.fps}localFrame(t){let r=Math.max(0,t-this.startFrame);return this.options.durationFrames===void 0?r:Math.min(r,Math.max(0,this.options.durationFrames-1))}window(t,r){let n=this.options.timeRemap?cu(this.options.timeRemap,this.localFrame(Math.min(t,r)),this.localFrame(Math.max(t,r)),this.compositionFps):void 0,i=Math.floor(n?n.min*this.fps:this.clipFrame(Math.min(t,r))),o=Math.ceil(n?n.max*this.fps:this.clipFrame(Math.max(t,r)));return[Math.max(0,i-pm-this.smoothing),Math.max(0,o+this.smoothing)]}analysed(t){return this.analysedSubject(t)&&(!this.tracksDepth||this.hasDepth(t))}analysedSubject(t){return this.results.has(t)&&(!this.wantSubjects||this.subjects.has(t))}prompted(){return this.sam??=ty().then(t=>(this.options.sam2&&t.validateSam2Prompts(this.options.sam2.prompts),this.options.sam3&&t.validateSam3Prompts(this.options.sam3),t)),this.sam}async compute(t,r){this.exact&&await this.prompted(),this.cacheLoaded??=this.loadCache(),await this.cacheLoaded,this.wantSubjects&&(this.subjectsLoaded??=this.loadSubjects(),await this.subjectsLoaded),this.tracksDepth&&await this.computeDepth(t,r);let n=!1;for(let l=t;l<=r;l++)this.analysedSubject(l)||(n=!0);if(!n)return;if(this.options.sam2){await this.computeSam2(r);return}if(this.options.sam3){await this.computeSam3(r);return}let i=this.tracksPose,o=this.tracksMask,a=this.visionRunner(),s=this.decoder();for(let l=t;l<=r;l++){if(this.analysedSubject(l))continue;let c=await Ei(await s.getFrame(l/this.fps));if(!c){this.results.set(l,{kp:null,mask:null}),this.wantSubjects&&this.subjects.set(l,null);continue}this.sourceWidth||this.setSize(c.width,c.height);let d=this.results.get(l),m=d?.kp??null,p=d?.mask??null;if(i&&!d){let b=(await a.pose(c)).people[0];if(b){m=new Float32Array(51);for(let[g,y]of b.keypoints.entries())m.set([y.x,y.y,y.visibility],g*3)}}let h=o&&!d||this.wantSubjects?await a.segment(c):void 0;if(h&&this.wantSubjects){let b=go(h.masks);this.subjects.set(l,b?{category:b.category,area:b.area,...gm(b.mask)}:null),this.unsavedSubjects++}if(h&&o&&!d){let b=ny(h);b&&(p=new Uint8Array(this.cellW*this.cellH),hm(b,c.width,c.height,this.cell,p,this.cellW,this.cellH))}this.results.set(l,{kp:m,mask:p}),d||this.unsaved++,this.unsaved>=24&&await this.saveCache(),this.unsavedSubjects>=24&&await this.saveSubjects()}this.unsaved>0&&await this.saveCache(),this.unsavedSubjects>0&&await this.saveSubjects()}visionRunner(){return this.runner??=tr.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,...this.options.confidence!==void 0&&{confidence:this.options.confidence},...this.options.variant!==void 0&&{variant:this.options.variant}}),this.runner}async computeDepth(t,r){let n=await this.depthCacheDir(),i;for(let o=t;o<=r;o++){if(this.hasDepth(o))continue;i??=this.decoder();let a=await Ei(await i.getFrame(o/this.fps));if(!a){this.depths.set(o,null);continue}this.sourceWidth||this.setSize(a.width,a.height);let s=await this.visionRunner().depth(a),l={width:s.width,height:s.height,data:Uint16Array.from(s.data,c=>Math.round(c*65535))};this.keepDepth(o,l),n&&await this.saveDepth(n,o,l)}}hasDepth(t){return this.depths.has(t)||this.depthsOnDisk.has(t)}keepDepth(t,r){if(this.depths.delete(t),this.depths.set(t,r),this.depthsOnDisk.size!==0)for(let n of this.depths.keys()){if(this.depths.size<=Jb)break;this.depthsOnDisk.has(n)&&this.depths.delete(n)}}storedDepth(t){let r=this.depths.get(t);if(r!==void 0||!this.depthsOnDisk.has(t))return r;let n=this.depthDisk;if(!n)return;let i=uy(n.fs,n.path.join(n.dir,`${t}.bin`));return i&&this.keepDepth(t,i),i??void 0}depthCacheDir(){return this.depthDir??=(async()=>{let t=await xm();if(!t||this.options.cacheDir===!1)return null;let{fs:r,path:n,os:i,crypto:o}=t;try{let a=r.statSync(this.source),s=this.options.cacheDir??x.env.FRAMEFIELDS_VISION_CACHE_DIR??n.join(i.homedir(),".cache","framefields","vision"),l=JSON.stringify([Kb,n.resolve(this.source),a.size,a.mtimeMs,this.fps,Qb]),c=o.createHash("sha256").update(l).digest("hex").slice(0,24),d=n.join(s,`${n.basename(this.source)}.${c}.depth`);r.mkdirSync(d,{recursive:!0});for(let m of r.readdirSync(d)){let p=/^(\d+)\.bin$/.exec(m);p&&this.depthsOnDisk.add(Number(p[1]))}return this.depthDisk={dir:d,fs:r,path:n},d}catch{return null}})(),this.depthDir}async saveDepth(t,r,n){let i=await xm();if(!i)return;let o=new Uint32Array([n.width,n.height]),a=i.path.join(t,`${r}.bin`),s=`${a}.${x.pid}.tmp`;i.fs.writeFileSync(s,Buffer.concat([Buffer.from(o.buffer),Buffer.from(n.data.buffer,n.data.byteOffset,n.data.byteLength)])),i.fs.renameSync(s,a),this.depthsOnDisk.add(r),this.keepDepth(r,n)}async computeSam2(t){let r=this.options.sam2;if(!r)return;let n=r.prompts[0]?.frame??0;for(let o=0;o<Math.min(n,t+1);o++)this.results.set(o,{kp:null,mask:null,score:0}),this.subjects.set(o,null);if(t<n)return;let i=this.decoder();if(!this.sam2Tracker){let o=Math.max(1,Math.ceil(await i.durationSec()*this.fps-1e-6));if(r.prompts.some(s=>s.frame>=o))throw new Error("SAM 2 prompt frames must be inside the source video.");let{Sam2Tracker:a}=await this.prompted();this.sam2Tracker=await a.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,frameCount:o,model:r.model}),this.sam2Frame=n-1}for(let o=this.sam2Frame+1;o<=t;o++){let a=await Ei(await i.getFrame(o/this.fps));if(!a)throw new Error(`Cannot decode SAM 2 source frame ${o}.`);this.sourceWidth||this.setSize(a.width,a.height);let s=r.prompts.find(d=>d.frame===o),l=await this.sam2Tracker.process(a,o,s?.points),c=this.tracksPose?await this.matchedPose(a,l.mask):null;this.storeSamFrame(o,l.width,l.height,[l],c),this.unsaved>=24&&(await this.saveCache(),await this.saveSubjects())}await this.saveCache(),await this.saveSubjects()}async computeSam3(t){let r=this.options.sam3;if(!r)return;let n=r.prompts[0]?.frame??0;for(let o=0;o<Math.min(n,t+1);o++)this.results.set(o,{kp:null,mask:null,score:0}),this.subjects.set(o,null);if(t<n)return;let i=this.decoder();if(!this.sam3Tracker){let o=Math.max(1,Math.ceil(await i.durationSec()*this.fps-1e-6));if(r.prompts.some(s=>s.frame>=o))throw new Error("SAM 3 prompt frames must be inside the source video.");let{Sam3Tracker:a}=await this.prompted();this.sam3Tracker=await a.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,frameCount:o,textThreshold:r.textThreshold,maxObjects:r.maxObjects,merge:r.merge,redetect:r.redetect,precision:r.precision,acceptLicense:this.options.acceptSamLicense??this.options.sam3?.acceptLicense}),this.sam3Frame=n-1}for(let o=this.sam3Frame+1;o<=t;o++){let a=await Ei(await i.getFrame(o/this.fps));if(!a)throw new Error(`Cannot decode SAM 3 source frame ${o}.`);this.sourceWidth||this.setSize(a.width,a.height);let s=r.prompts.find(d=>d.frame===o),l=await this.sam3Tracker.process(a,o,s),c=this.tracksPose?await this.matchedPose(a,sy(l.objects,a)):null;this.storeSamFrame(o,l.width,l.height,l.objects,c),this.unsaved>=24&&(await this.saveCache(),await this.saveSubjects())}await this.saveCache(),await this.saveSubjects()}storeSamFrame(t,r,n,i,o){let a=new Uint8Array(r*n),s=[...i.keys()].sort((p,h)=>(i[p]?.score??0)-(i[h]?.score??0));for(let p of s){let h=i[p]?.mask;if(h)for(let b=0;b<h.length;b++)(h[b]??0)>=128&&(a[b]=p+1)}let l=Uint8Array.from(a,p=>p?255:0),c=new Uint8Array(this.cellW*this.cellH);hm(l,r,n,this.cell,c,this.cellW,this.cellH);let d=0;for(let p of a)p&&d++;let m=i.map(p=>1/(1+Math.exp(-p.score)));this.results.set(t,{kp:o,mask:c,score:Math.max(0,...m)}),this.subjects.set(t,d>0?{category:this.samCategory(),area:d,scores:m,...gm(a)}:null),this.trackCounts.set(t,i.length),this.blurred.delete(t),this.options.sam3?this.sam3Frame=t:this.sam2Frame=t,this.unsaved++,this.unsavedSubjects++}samCategory(){return this.options.sam2?.category??this.options.sam3?.category??"object"}async matchedPose(t,r){this.runner??=tr.create({modelsDir:this.options.modelsDir,baseUrl:this.options.baseUrl,variant:this.options.variant});let{people:n}=await this.runner.pose(t),o=n.map(a=>({person:a,overlap:a.keypoints.reduce((s,l)=>{let c=Math.max(0,Math.min(t.width-1,Math.round(l.x))),d=Math.max(0,Math.min(t.height-1,Math.round(l.y)));return s+(r[d*t.width+c]??0)/255*l.visibility},0)})).sort((a,s)=>s.overlap-a.overlap)[0];return!o||o.overlap<2?null:Float32Array.from(o.person.keypoints.flatMap(a=>[a.x,a.y,a.visibility]))}trackIds(t){let r=Math.max(0,Math.floor(this.clipFrame(t))),n=this.subjects.get(r)?.scores?.length??this.trackCounts.get(r)??1;return Array.from({length:n},(i,o)=>o+1)}maskAt(t,r){let n=Math.max(0,Math.floor(this.clipFrame(t)));this.signalMaskFrame!==n&&(this.signalMaskFrame=n,this.signalMasks.clear());let i=this.signalMasks.get(r??0);if(i)return i;if(!this.results.has(n)||!this.sourceWidth)return;let o=this.subjects.get(n),a=this.sourceWidth*this.sourceHeight,s=o?bm(o,a,r):new Uint8Array(a),l=o?.area??0;if(r!==void 0&&o?.scores){l=0;for(let d of s)d&&l++}let c={category:o?.category??this.samCategory(),mask:s,width:this.sourceWidth,height:this.sourceHeight,area:l,coverage:l/a,detectionIndex:(r??1)-1,trackId:r??1};return this.signalMasks.set(r??0,c),c}publishSignals(t,r){let n=this.signalBundle;if(!(!n||!this.sourceWidth)){n.setFrameSize(this.sourceWidth,this.sourceHeight);for(let i=t;i<=r;i++){if(this.publishedSignals.has(i))continue;this.publishedSignals.add(i);let o=Math.max(0,Math.floor(this.clipFrame(i))),a=this.maskAt(i);if(!a)continue;let s=n.getObjectResult(i-1).objects,l=this.subjects.get(o)?.scores,c=this.trackIds(i).flatMap(p=>{let h=this.maskAt(i,p);return h?[bo(h,i,this.compositionFps,l?.[p-1]??this.results.get(o)?.score??1,s.find(b=>b.trackId===p))]:[]});n.setObjectResult(i,c);let d=c[0]??bo(a,i,this.compositionFps,0),m=this.results.get(o)?.kp;n.setPoseResult(i,{people:m?[{score:d.score,boundingBox:d.boundingBox,trackId:1,keypoints:Array.from({length:17},(p,h)=>({x:(m[h*3]??0)/a.width,y:(m[h*3+1]??0)/a.height,visibility:m[h*3+2]??0}))}]:[]})}}}setSize(t,r){this.sourceWidth=t,this.sourceHeight=r,this.cellW=Math.ceil(t/this.cell),this.cellH=Math.ceil(r/this.cell)}size(){return{width:this.sourceWidth,height:this.sourceHeight}}result(t){return this.results.get(Math.max(0,t))}keypoint(t,r){r=Math.max(0,r);let n=`${t}:${r}`,i=this.smoothed.get(n);if(i)return i;let o=s=>{let l=0,c=0,d=0,m=0;for(let p=s-this.smoothing;p<=s+this.smoothing;p++){let h=this.mustHave(p<0?0:p);if(!h.kp)continue;let b=h.kp[t*3+2],g=(this.smoothing+1-Math.abs(p-s))*b*b;l+=h.kp[t*3]*g,c+=h.kp[t*3+1]*g,d+=b*g,m+=g}return m>1e-6?[l/m,c/m,d/m]:null},a=null;for(let s=0;s<=pm&&!a;s++)r-s>=0&&(a=o(r-s));return a??=[this.sourceWidth/2,this.sourceHeight/2,0],this.smoothed.set(n,a),a}blurredMask(t){if(t=Math.max(0,t),this.blurred.has(t))return this.blurred.get(t)??null;this.mustHave(t);let r=this.exact?this.results.get(t)?.mask??null:iy(this.results,t,this.smoothing),n=r?ay(r,this.cellW,this.cellH,2):null;return this.blurred.set(t,n),n}grid(){return{cell:this.cell,width:this.cellW,height:this.cellH}}mustHave(t){let r=this.results.get(t);if(r)return r;throw new Error(`ClipVision "${this.source}": frame ${t} is not analysed yet. Read it while rendering (the composition prepares each frame), in a live physics world, or after \`await clip.ready(frame)\`.`)}cacheFile;async cachePath(){if(this.cacheFile!==void 0)return this.cacheFile;if(this.cacheFile=null,this.options.cacheDir===!1||typeof x>"u"||!x.versions?.node)return null;try{let[t,r,n,i]=await Promise.all([import("./shims/fs.mjs"),import("./shims/path.mjs"),import("./shims/os.mjs"),import("./crypto-TRDUAUC5.mjs")]),o=t.statSync(this.source),a=this.options.cacheDir??x.env.FRAMEFIELDS_VISION_CACHE_DIR??r.join(n.homedir(),".cache","framefields","vision"),s=this.options,l=this.exact?await this.prompted():void 0,c=JSON.stringify([Zb,r.resolve(this.source),o.size,o.mtimeMs,this.fps,this.tracksPose,this.tracksMask,this.cell,s.variant??"s",s.confidence??null,...s.sam2?[[l?.sam2Revision(s.sam2.model),s.sam2,3]]:[],...s.sam3&&l?[[l.sam3Revision(await l.sam3Precision(void 0,s.sam3.precision)),s.sam3,3]]:[]]),d=i.createHash("sha256").update(c).digest("hex").slice(0,24);t.mkdirSync(a,{recursive:!0}),this.cacheFile=r.join(a,`${r.basename(this.source)}.${d}.json`)}catch{this.cacheFile=null}return this.cacheFile}async loadCache(){let t=await this.cachePath();if(t)try{let r=await import("./shims/fs.mjs");if(!r.existsSync(t))return;let n=JSON.parse(r.readFileSync(t,"utf8"));if(n.cell!==this.cell)return;this.setSize(n.width,n.height);for(let[i,o]of Object.entries(n.frames))this.results.set(Number(i),{kp:o.kp?Float32Array.from(o.kp):null,score:o.score,mask:o.mask?new Uint8Array(Buffer.from(o.mask,"base64")):null})}catch{}}async saveCache(){this.unsaved=0;let t=await this.cachePath();if(!t||!this.sourceWidth)return;let r={};for(let[o,a]of this.results)r[o]={kp:a.kp?Array.from(a.kp,s=>Math.round(s*100)/100):null,mask:a.mask?Buffer.from(a.mask).toString("base64"):null,score:a.score};let n=await import("./shims/fs.mjs"),i=`${t}.${x.pid}.tmp`;n.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,cell:this.cell,frames:r})),n.renameSync(i,t)}async subjectsPath(){let t=await this.cachePath();return t?t.replace(/\.json$/,".subjects.json"):null}async loadSubjects(){let t=await this.subjectsPath();if(t)try{let r=await import("./shims/fs.mjs");if(!r.existsSync(t))return;let n=JSON.parse(r.readFileSync(t,"utf8"));if(this.sourceWidth&&n.width!==this.sourceWidth)return;this.sourceWidth||this.setSize(n.width,n.height);for(let[i,o]of Object.entries(n.frames)){let a=Buffer.from(o?.lengths??"","base64");this.subjects.set(Number(i),o&&{category:o.category,area:o.area,...o.scores&&{scores:o.scores},values:new Uint8Array(Buffer.from(o.values,"base64")),lengths:new Uint32Array(a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength))})}}catch{}}async saveSubjects(){this.unsavedSubjects=0;let t=await this.subjectsPath();if(!t||!this.sourceWidth)return;let r={};for(let[o,a]of this.subjects)r[o]=a&&{category:a.category,area:a.area,...a.scores&&{scores:a.scores},values:Buffer.from(a.values).toString("base64"),lengths:Buffer.from(a.lengths.buffer,a.lengths.byteOffset,a.lengths.byteLength).toString("base64")};let n=await import("./shims/fs.mjs"),i=`${t}.${x.pid}.tmp`;n.writeFileSync(i,JSON.stringify({width:this.sourceWidth,height:this.sourceHeight,frames:r})),n.renameSync(i,t)}},Bi=class e{constructor(t,r,n){this.clip=t;this.t=r;this.placement=n}clip;t;placement;place(t){return new e(this.clip,void 0,t)}transform(){if(this.t)return this.t;let t=this.placement,{width:r,height:n}=this.clip.size();if(!t||!r)return{sx:1,sy:1,ox:0,oy:0};let i=t.width/r,o=t.height/n;if(t.fit!=="fill"){let a=t.fit==="contain"?Math.min(i,o):Math.max(i,o);i=a,o=a}return{sx:i,sy:o,ox:(t.x??0)+(t.width-r*i)/2,oy:(t.y??0)+(t.height-n*o)/2}}point(t,r){let n=ry(t),i=this.clip.clipFrame(r),o=Math.floor(i),a=i-o,s=this.clip.keypoint(n,o),l=a>0?this.clip.keypoint(n,o+1):s,c=this.transform();return{x:(s[0]+(l[0]-s[0])*a)*c.sx+c.ox,y:(s[1]+(l[1]-s[1])*a)*c.sy+c.oy,visibility:s[2]+(l[2]-s[2])*a}}signals(t){let r=n=>Nr.builder({type:"custom",fn:i=>this.point(t,i.frame)[n]});return{x:r("x"),y:r("y"),visibility:r("visibility")}}silhouetteGrid(t){let r=this.clip.blurredMask(Math.round(this.clip.clipFrame(t)));if(!r)return null;let{cell:n,width:i,height:o}=this.clip.grid(),a=this.transform();return{data:r,width:i,height:o,originX:a.ox,originY:a.oy,scaleX:n*a.sx,scaleY:n*a.sy}}sample(t,r,n){let i=this.clip.blurredMask(Math.round(this.clip.clipFrame(t)));if(!i)return{alpha:0,gx:0,gy:0};let{cell:o,width:a,height:s}=this.clip.grid(),l=this.transform(),c=(r-l.ox)/l.sx/o-.5,d=(n-l.oy)/l.sy/o-.5,m=(h,b)=>h<0||b<0||h>=a||b>=s?0:i[b*a+h],p=(h,b)=>{let g=Math.floor(h),y=Math.floor(b),k=h-g,S=b-y,A=m(g,y)+(m(g+1,y)-m(g,y))*k,w=m(g,y+1)+(m(g+1,y+1)-m(g,y+1))*k;return A+(w-A)*S};return{alpha:p(c,d),gx:(p(c+1,d)-p(c-1,d))/(2*o*l.sx),gy:(p(c,d+1)-p(c,d-1))/(2*o*l.sy)}}};function ry(e){let t=$n.indexOf(e);if(t<0)throw new Error(`Unknown keypoint "${e}". Use one of ${$n.join(", ")}.`);return t}async function Ei(e){if(!e||e.width<=0)return null;if(e.buffer)return{data:e.buffer,width:e.width,height:e.height};let r=e.canvas?.getContext("2d");return r?{data:r.getImageData(0,0,e.width,e.height).data,width:e.width,height:e.height}:null}function ny(e){return go(e.masks,{classes:["person"],overlap:.2,maxGrowth:3.5})?.mask}function vs(e){if(!e)return 0;let t=0;for(let r=0;r<e.length;r++)t+=e[r];return t}function iy(e,t,r){let n=e.get(t)?.mask??null;if(r<=0)return n;let i=vs(n),o=-1,a=null,s=-1,l=null,c=Math.max(1e3,i*1.35);for(let p=1;p<=r+1;p++){if(o<0&&t-p>=0){let h=e.get(t-p)?.mask??null;vs(h)>c&&(o=t-p,a=h)}if(s<0){let h=e.get(t+p)?.mask??null;vs(h)>c&&(s=t+p,l=h)}}if(!a&&!l)return n;let d=a??l;if(!d)return n;let m=n?new Uint8Array(n):new Uint8Array(d.length);if(a&&l&&s>o){let p=(t-o)/(s-o);for(let h=0;h<m.length;h++){let b=Math.round(a[h]+(l[h]-a[h])*p);b>m[h]&&(m[h]=b)}}else for(let p=0;p<m.length;p++)d[p]>m[p]&&(m[p]=d[p]);return m}function hm(e,t,r,n,i,o,a){for(let s=0;s<a;s++)for(let l=0;l<o;l++){let c=0,d=0;for(let m=s*n;m<Math.min(r,(s+1)*n);m++)for(let p=l*n;p<Math.min(t,(l+1)*n);p++)c+=e[m*t+p],d++;i[s*o+l]=d?Math.round(c/d):0}}function gm(e){let t=0;for(let a=1;a<=e.length;a++)(a===e.length||e[a]!==e[a-1])&&t++;let r=new Uint8Array(t),n=new Uint32Array(t),i=0,o=0;for(let a=1;a<=e.length;a++)(a===e.length||e[a]!==e[o])&&(r[i]=e[o],n[i++]=a-o,o=a);return{values:r,lengths:n}}function oy(e,t){let r=new Uint8Array(t),n=0;for(let i=0;i<e.values.length;i++){let o=Math.min(t,n+e.lengths[i]);e.values[i]!==0&&r.fill(e.values[i],n,o),n=o}return r}function ay(e,t,r,n){let i=new Float32Array(t*r),o=new Float32Array(t*r);for(let a=0;a<r;a++)for(let s=0;s<t;s++){let l=0,c=0;for(let d=-n;d<=n;d++){let m=s+d;m>=0&&m<t&&(l+=e[a*t+m],c++)}i[a*t+s]=l/c/255}for(let a=0;a<r;a++)for(let s=0;s<t;s++){let l=0,c=0;for(let d=-n;d<=n;d++){let m=a+d;m>=0&&m<r&&(l+=i[m*t+s],c++)}o[a*t+s]=l/c}return o}function bm(e,t,r){let n=oy(e,t);return e.scores?n.map(i=>(r===void 0?i>0:i===r)?255:0):n}function sy(e,t){let r=new Uint8Array(t.width*t.height);for(let{mask:n}of e)for(let i=0;i<r.length;i++)r[i]=Math.max(r[i]??0,n[i]??0);return r}var ym;function xm(){return ym??=typeof x>"u"||!x.versions?.node?Promise.resolve(null):Promise.all([import("./shims/fs.mjs"),import("./shims/path.mjs"),import("./shims/os.mjs"),import("./crypto-TRDUAUC5.mjs")]).then(([e,t,r,n])=>({fs:e,path:t,os:r,crypto:n})),ym}function uy(e,t){try{let r=e.readFileSync(t);if(r.byteLength<8)return null;let n=r.readUInt32LE(0),i=r.readUInt32LE(4);if(r.byteLength!==8+n*i*2)return null;let o=new Uint16Array(n*i);return Buffer.from(o.buffer).set(r.subarray(8)),{width:n,height:i,data:o}}catch{return null}}f();var Li=class{constructor(t){this.fps=t}fps;entries=new Map;reached=-1;resolver(t){let{live:r,compositionDurationFrames:n}=t,i={fps:this.fps,compositionDurationFrames:n,signals:t.signals};return(o,a)=>{let s=`${a.id}\0${a.startFrame}\0${a.durationFrames}`,l=this.entries.get(s);if(l&&l.live===r&&l.compositionFrames===n&&ly(l.binding,o))return l.resolved;let c=r?{kind:"recorded",recorder:new au({mode:o.mode,fps:this.fps,startFrame:a.startFrame,durationFrames:a.durationFrames,sourceStartSec:o.sourceStartSec,sample:Cu(o,i)})}:Du(o,a,i);return this.entries.set(s,{binding:o,live:r,compositionFrames:n,resolved:c}),c}}framesBefore(t){if(!this.recorders().some(i=>!i.complete&&i.nextFrame<t))return[];let n=[];for(let i=this.reached+1;i<t;i++)n.push(i);return n}advance(t){for(let r of this.recorders())r.advance(t)}reach(t){t>this.reached&&(this.reached=t);for(let[,r]of this.entries){if(r.resolved.kind!=="recorded")continue;let n=r.resolved.recorder;n.ensure(t),t>=r.compositionFrames-1&&!n.complete&&n.nextFrame>n.startFrame&&n.close()}}get pending(){return this.recorders().some(t=>!t.complete)}recorders(){let t=[];for(let{resolved:r}of this.entries.values())r.kind==="recorded"&&t.push(r.recorder);return t}};function ly(e,t){return e.signal===t.signal&&e.mode===t.mode&&e.sourceStartSec===t.sourceStartSec}function Ss(e,t){let r=e.fps>0?t/e.fps:0;return{...e,frame:t,time:r,progress:e.duration>0?Math.max(0,Math.min(1,r/e.duration)):0}}var wm=new WeakMap,cy=0;function Pr(e){if(!e)return"";if(e.kind==="rate"||e.kind==="keyframes")return JSON.stringify(e);let t=e.kind==="sampled"?e.history:e.recorder,r=wm.get(t);return r===void 0&&(r=++cy,wm.set(t,r)),`${e.kind}:${r}`}f();f();var dy={rotation:.2,rotateX:.2,rotateY:.2,rotateZ:.2};function _e(e,t,r){if(typeof e=="number")return e;if(typeof e=="function")return e(t);let n=t/r;return e.get({frame:t,fps:r,time:n,duration:0,durationMs:0,progress:0,deltaTime:1/r})}function Zt(e,t){let r=t-e;return r-=Math.round(r/360)*360,e+r}function my(e,t){let r=e.length;if(r===0)return[];let n=new Uint8Array(r);n[0]=1,n[r-1]=1;let i=[[0,r-1]];for(;i.length>0;){let[a,s]=i.pop(),l=-1,c=t;for(let d=a+1;d<s;d++){let m=(d-a)/(s-a),p=e[a]+(e[s]-e[a])*m,h=Math.abs(e[d]-p);h>c&&(c=h,l=d)}l>=0&&(n[l]=1,i.push([a,l],[l,s]))}let o=[];for(let a=0;a<r;a++)n[a]&&o.push([a,py(e[a]),"none"]);return o.length===2&&o[0][1]===o[1][1]&&o.pop(),o}function py(e){return Math.round(e*1e4)/1e4}var ks=class{constructor(t,r,n){this.length=t;this.fps=r;this.ensure=n}length;fps;ensure;channels=new Map;signals=new Map;channel(t){let r=this.channels.get(t);return r||(r=new Float32Array(this.length),this.channels.set(t,r)),r}signal(t){let r=this.signals.get(t);if(!r){let n=this.channel(t),i=this.fps;r=Nr.builder({type:"custom",fn:o=>{this.ensure();let a=o.fps&&o.fps!==i?o.frame/o.fps*i:o.frame,s=Math.max(0,Math.min(n.length-1,Math.round(a)));return n[s]}}),this.signals.set(t,r)}return r}},Mr=class{constructor(t,r,n){this.sim=t;this.gravity=r;if(!(n.fps>0))throw new Error("Physics: `fps` must be > 0.");if(!(n.frames>=1)||!Number.isInteger(n.frames))throw new Error("Physics: `frames` must be a positive integer.");this.fps=n.fps,this.frames=n.frames,this.startFrame=Math.max(0,Math.round(n.startFrame??0)),this.pixelsPerMeter=n.pixelsPerMeter??100,this.substeps=Math.max(1,Math.round(n.substeps??4)),this.impactDecay=Math.max(.5,n.impactDecay??8),this.impactReference=n.impactReference??1500,this.worldRecording=this.newRecording()}sim;gravity;fps;frames;startFrame;pixelsPerMeter;substeps;impactDecay;impactReference;bodies=[];forces=[];impulses=[];fields=[];worldRecording;allCollisions=[];locked=!1;liveMode=!1;stepper;chain=Promise.resolve();get collisions(){return this.ensureSimulated(),this.allCollisions}get impact(){return this.worldRecording.signal("impact")}simulate(){if(this.liveMode)throw new Error("Physics: this world is live; it steps as frames render.");return this.ensureSimulated(),this}bakeKeyframes(t={}){if(this.locked)throw new Error("Physics: bakeKeyframes() must come before simulate(), live() or reading any body signal.");return this.bakeDefault=t,this.ensureSimulated(),this}live(t,r={}){if(this.locked)throw new Error("Physics: live() must come before simulate() or reading any body signal.");this.locked=!0,this.liveMode=!0;let n=async i=>{await t.prepareVision?.(i);for(let o of r.inputs??[])await o.ready(i)};this.prepareInputs=n;for(let i of this.bodies)this.bind(i);return t.onPrepareFrame(i=>this.advanceTo(i.frame)),this}advanceTo(t){return this.chain=this.chain.then(async()=>{let r=Math.min(this.frames-1,Math.round(t)-this.startFrame);this.stepper||(await this.prepareInputs?.(this.startFrame),this.stepper=this.begin());let n=this.stepper;for(;n.current<r;){let i=n.current+1;await this.prepareInputs?.(this.startFrame+i),this.stepFrame(n,i)}n.current===this.frames-1&&!n.freed&&(n.freed=!0,this.sim.free())}),this.chain}prepareInputs;bakeDefault;newRecording(){return new ks(this.startFrame+this.frames,this.fps,()=>this.ensureSimulated())}assertOpen(){if(this.locked)throw new Error("Physics: the world has already started; add every body, joint and force before simulate(), live() or reading signals.")}addBody(t){return this.assertOpen(),this.bodies.push(t),t}addForce(t,r){this.assertOpen(),this.forces.push({body:t,accel:r})}addField(t,r){this.assertOpen(),this.fields.push({accel:t,...r&&{targets:new Set(r)}})}addImpulse(t,r,n){this.assertOpen(),this.impulses.push({body:t,frame:Math.round(r),dv:n})}ensureSimulated(){if(this.locked)return;this.locked=!0;let t=this.begin();for(let r=1;r<this.frames;r++)this.stepFrame(t,r);t.freed=!0,this.sim.free();for(let r of this.bodies)this.bind(r)}begin(){let{startFrame:t}=this,r=this.bodies,n=new Map;for(let o of r)n.set(o.sim,o);for(let o of r)o.startFrame>0&&o.sim.setEnabled(!1);let i=new Map;for(let o of r){o.record(t,-1),o.recording.channel("impact");let a=o.kinematicTarget?.(t);a&&i.set(o,a)}this.worldRecording.channel("impact");for(let o of[...r.map(a=>a.recording),this.worldRecording])for(let a of o.channels.values())a.fill(a[t]);return{current:0,freed:!1,bySim:n,kinematicFrom:i,level:new Map(r.map(o=>[o,0]))}}stepFrame(t,r){let{fps:n,startFrame:i,substeps:o}=this,a=1/(n*o),s=this.bodies,l=i+r,c=this.gravity.length,d=new Map;for(let w of s)w.startFrame>0&&r===w.startFrame+1&&w.sim.setEnabled(!0),d.set(w,w.sim.velocity());let m=w=>w.type==="dynamic"&&r>w.startFrame,p=new Map;for(let w of s)p.set(w,this.gravity.map(T=>m(w)?T*w.gravityScale/n:0));for(let w of this.impulses){if(w.frame!==r)continue;let T=w.body;if(!m(T))continue;let v=T.sim.mass();T.sim.applyImpulse(w.dv.map(C=>C*v));let E=p.get(T);for(let C=0;C<c;C++)E[C]+=w.dv[C]}let h=this.forces.filter(w=>m(w.body)).map(w=>{let T=w.body,v=w.accel(l),E=p.get(T);for(let C=0;C<c;C++)E[C]+=v[C]/n;return{body:T,a:v}}),b=new Map;for(let w of s){let T=w.kinematicTarget?.(l);T&&b.set(w,T)}let g=new Set,y=[];for(let w=1;w<=o;w++){for(let{body:T,a:v}of h){let E=T.sim.mass();T.sim.applyImpulse(v.map(C=>C*E*a))}for(let T of this.fields)for(let v of s){if(!m(v)||T.targets&&!T.targets.has(v))continue;let E=T.accel(v,l);if(!E)continue;let C=v.sim.mass();v.sim.applyImpulse(E.map(G=>G*C*a));let N=p.get(v);for(let G=0;G<c;G++)N[G]+=E[G]*a}for(let[T,v]of b){let E=t.kinematicFrom.get(T)??v,C=w/o;T.sim.setKinematicTarget(fy(E.position,v.position,C),this.lerpRotation(E.rotation,v.rotation,C))}this.sim.step(a);for(let[T,v]of this.sim.drainCollisionStarts()){let E=t.bySim.get(T),C=t.bySim.get(v);if(!E||!C)continue;let N=`${s.indexOf(E)}:${s.indexOf(C)}`;g.has(N)||(g.add(N),y.push([E,C]))}}t.kinematicFrom=b;for(let w of s)w.record(l,l-1);let k=new Map;if(y.length>0){let w=this.pixelsPerMeter,T=v=>{if(v.type!=="dynamic")return 0;let E=v.sim.velocity(),C=d.get(v),N=p.get(v),G=0;for(let _=0;_<c;_++){let I=E[_]-(C[_]+N[_]);G+=I*I}return Math.sqrt(G)*w};for(let[v,E]of y){let C=Math.max(T(v),T(E));for(let[N,G]of[[v,E],[E,v]]){k.set(N,Math.max(k.get(N)??0,C));let _={frame:l,with:G,speed:C};N.collisions.push(_),N===v&&this.allCollisions.push({..._,body:v})}}}let S=Math.exp(-1/this.impactDecay),A=0;for(let w of s){let T=Math.max((k.get(w)??0)/this.impactReference,(t.level.get(w)??0)*S);t.level.set(w,T),w.recording.channel("impact")[l]=T,T>A&&(A=T)}this.worldRecording.channel("impact")[l]=A,t.current=r}bind(t){let r=t.layer,n=t.output??(this.bakeDefault?"keyframes":"signals");if(typeof r?.animate!="function"||n==="none"||t.type==="fixed")return;let i=t.boundChannels();if(n==="keyframes"&&this.liveMode)throw new Error('Physics: live worlds bind signals; drop `output: "keyframes"` or use simulate().');if(n==="signals"){let s=Q.create();for(let[l,c]of i)s.signal(l,t.recording.signal(c));r.animate(s);return}let o=this.bakeDefault?.tolerance??.25,a=Q.create();for(let[s,l]of i){let d=t.recording.channel(l).subarray(this.startFrame),m=dy[s]??1;a.keys(s,my(d,o*m))}r.animate(a)}};function fy(e,t,r){return e.map((n,i)=>n+(t[i]-n)*r)}var Ps=(e,t)=>e===void 0?t:typeof e=="number"?[e,e]:e,bn=class extends Qt{op="Particles";particleStatic;particleState;options;constructor(t){super({}),this.options=t;let r=t.emitter??{},n=s=>typeof s=="number"?s:void 0,i=t.width,o=t.height,a=(Array.isArray(t.color)?t.color:[t.color??"#ffffff"]).map(s=>{let l=hu(s);return[l.r,l.g,l.b,l.a]});this.particleStatic={max:Math.max(1,Math.round(t.max??2e4)),seed:Math.round(t.seed??1)>>>0,layer:{x:t.x??0,y:t.y??0,width:i,height:o},emitter:{shape:r.shape??"rect",x:n(r.x)??(r.shape==="circle"||r.shape==="ring"||r.shape==="point"?i/2:0),y:n(r.y)??(r.shape==="circle"||r.shape==="ring"||r.shape==="point"?o/2:0),width:r.width??i,height:r.height??(r.shape==="line"?0:o),radius:r.radius??Math.min(i,o)/4,radial:r.radial??!1},lifetime:Ps(t.lifetime,[2,4]),speed:Ps(t.speed,[40,160]),direction:t.direction??-90,spread:t.spread??360,bounds:t.bounds??"none",floor:t.floor??null,bounce:t.bounce??.3,size:Ps(t.size,[6,0]),sizeJitter:t.sizeJitter??.5,fade:t.fade??[.1,.3],shape:t.shape??"circle",stretch:t.stretch??.04,blend:t.blend??"normal",colors:a.slice(0,8),colorBySpeed:t.colorBySpeed??null,opacity:t.opacity??1,substeps:t.substeps??2,prewarm:t.prewarm??0}}particleFrame(t,r){let n=this.options,i=(g,y)=>g===void 0?y:_e(g,t,r),o=t-(n.startFrame??0),a=(n.emitter?.bursts??[]).filter(g=>Math.round(g.frame)===o).reduce((g,y)=>g+y.count,0),s=n.gravity,l=Array.isArray(s)?[i(s[0],0),i(s[1],0)]:[0,i(s,0)],c=null;n.push&&(c={strength:i(n.push.strength,6e3),sweep:i(n.push.sweep,6e4),mask:n.push.person.silhouetteGrid(t),previous:n.push.person.silhouetteGrid(Math.max(0,t-1))});let d=n.emitter?.x,m=n.emitter?.y,p=d!==void 0&&typeof d!="number"||m!==void 0&&typeof m!="number",h=g=>({x:d===void 0?this.particleStatic.emitter.x:_e(d,g,r),y:m===void 0?this.particleStatic.emitter.y:_e(m,g,r)}),b;if(p){let g=h(t),y=h(Math.max(0,t-1));b={x:g.x,y:g.y,previousX:y.x,previousY:y.y}}return{...b&&{emitter:b},rate:i(n.emitter?.rate,1e3),burst:a,gravity:l,drag:i(n.drag,.4),noise:{strength:i(n.noise?.strength,0),scale:n.noise?.scale??300,speed:n.noise?.speed??.3},attractors:(n.attractors??[]).map(g=>({x:i(g.x,0),y:i(g.y,0),strength:i(g.strength,0),radius:g.radius??200})),push:c}}};f();var pe=nt(Sm(),1);f();var ji=nt(Rp(),1);function hy(e=64){if(!Number.isSafeInteger(e)||e<1)throw new Error("[FrameGrid] maxFrames must be a positive safe integer.");return Math.min(e,120)}function Ms(e,t){if(e>t)throw new Error(`[FrameGrid] Requested frames exceeds the safety threshold of ${t}. Increase stepFrames/stepMs or narrow the start/end range.`)}function km(e,t,r,n,i){if(!Number.isFinite(e)||!Number.isFinite(t)||e<0||t<e)throw new Error(`[FrameGrid] Invalid ${i} range: start${i==="frame"?"Frame":"Ms"} must be <= end${i==="frame"?"Frame":"Ms"}; bounds must be finite and nonnegative.`);if(!Number.isFinite(r)||r<=0)throw new Error(`[FrameGrid] Invalid ${i==="frame"?"stepFrames":"stepMs"}: ${r}. Must be > 0 and finite.`);if(i==="frame"&&![e,t,r].every(Number.isSafeInteger))throw new Error("[FrameGrid] Frame bounds and stepFrames must be safe integers.");let o=[];for(let a=0;;a++){let s=e+a*r;if(!Number.isFinite(s))throw new Error("[FrameGrid] Range arithmetic overflow.");if(a>0&&s<=o[a-1])throw new Error("[FrameGrid] Step does not advance the sampling range.");if(s>t)break;Ms(a+1,n),o.push(s)}return o}function Ts(e,t=24,r){let n=e.fps??t;Bn(n);let i=hy(e.maxFrames),o;if(e.frames?.length?(Ms(e.frames.length,i),o=e.frames.map(a=>Ct({frame:a},n))):e.timesMs?.length?(Ms(e.timesMs.length,i),o=e.timesMs.map(a=>Ct({atMs:a},n))):o=gy(e,n,r,i),!o.length)throw new Error("[FrameGrid] Zero frames were resolved for sampling.");return{samples:o,fps:n}}function gy(e,t,r,n){let i=r===void 0?void 0:ou(r,t)-1;if(e.startMs!==void 0||e.endMs!==void 0||e.stepMs!==void 0){let s=e.startMs??0,l=e.endMs??(i===void 0?s+1e3:i/t*1e3);return km(s,l,e.stepMs??5e3/t,n,"millisecond").map(c=>Ct({atMs:c},t))}let o=e.startFrame??0,a=e.endFrame??Math.min(o+30,i??o+30);return km(o,a,e.stepFrames??5,n,"frame").map(s=>Ct({frame:s},t))}function As(e,t,r){let n=r.gap??12,i=r.padding??16,a=r.showHeader??!0?54:0,s=r.maxGridWidth??4096,l=r.maxGridHeight??4096,c=r.columns;(!c||c<=0)&&(e<=4?c=e:e<=9?c=3:e<=16?c=4:e<=25?c=5:c=6),c=Math.min(c,e);let d=Math.ceil(e/c),m=Math.max(120,Math.min(r.cellWidth??320,960)),p=r.cellHeight??Math.round(m/(t>0?t:16/9)),h=c*m+(c-1)*n+i*2,b=d*p+(d-1)*n+i*2+a;if(h>s||b>l){let g=Math.min((s-(c-1)*n-i*2)/(c*m),(l-(d-1)*n-i*2-a)/(d*p));if(g<.25)throw new Error(`[FrameGrid] Cannot fit ${e} cells (${c}x${d}) into max dimensions [${s}x${l}]. Reduce cell count or decrease cellWidth.`);m=Math.max(100,Math.floor(m*g)),p=Math.round(m/(t>0?t:16/9)),h=c*m+(c-1)*n+i*2,b=d*p+(d-1)*n+i*2+a}return{columns:c,rows:d,cellWidth:m,cellHeight:p,totalWidth:h,totalHeight:b,headerHeight:a,gap:n,padding:i}}async function yn(e,t={}){let r=e.fps??24,n=e.durationMs,{samples:i,fps:o}=Ts(t,r,n),a=e.width??1920,s=e.height??1080,l=a>0&&s>0?a/s:16/9,c=As(i.length,l,t),d=t.renderer??new pe.HeadlessMediaRenderer,m=[];for(let y of i){let k=await e.renderFrame({frame:y.frame,fps:o,renderer:d});m.push(k)}let p=new ji.Canvas(c.totalWidth,c.totalHeight),h=p.getContext("2d");if(h.fillStyle=t.backgroundColor??"#090a0f",h.fillRect(0,0,c.totalWidth,c.totalHeight),t.showHeader!==!1&&c.headerHeight>0){let y=t.headerText??`FrameGrid Conformance Review | Frames ${i[0].frame}\u2013${i[i.length-1].frame} (Count: ${i.length})`,k=`${a}\xD7${s} @ ${o} FPS | Cell: ${c.cellWidth}\xD7${c.cellHeight}px | Step: ${t.stepFrames?`${t.stepFrames}f`:t.stepMs?`${t.stepMs}ms`:"Custom"}`;h.fillStyle="#f8fafc",h.font="bold 15px sans-serif",h.fillText(y,c.padding,c.padding+18),h.fillStyle="#94a3b8",h.font="12px sans-serif",h.fillText(k,c.padding,c.padding+36),h.strokeStyle="#1e2433",h.lineWidth=1,h.beginPath(),h.moveTo(c.padding,c.padding+46),h.lineTo(c.totalWidth-c.padding,c.padding+46),h.stroke()}let b=t.showLabels??!0;for(let y=0;y<i.length;y++){let k=i[y],S=y%c.columns,A=Math.floor(y/c.columns),w=c.padding+S*(c.cellWidth+c.gap),T=c.padding+c.headerHeight+A*(c.cellHeight+c.gap),v=await(0,ji.loadImage)(m[y]);if(h.drawImage(v,w,T,c.cellWidth,c.cellHeight),h.strokeStyle="#262b3d",h.lineWidth=1,h.strokeRect(w,T,c.cellWidth,c.cellHeight),b){let E=`F:${k.frame} \u2022 ${Math.round(k.timeMs)}ms`;h.font="bold 11px sans-serif";let N=h.measureText(E).width+14,G=20,_=w+6,I=T+6;h.fillStyle="#090a0fee",h.beginPath(),h.roundRect(_,I,N,G,4),h.fill(),h.strokeStyle="#6366f155",h.lineWidth=1,h.stroke(),h.fillStyle="#e2e8f0",h.fillText(E,_+7,I+14)}}let g=await p.toBuffer("png");return t.outputPath&&await Fr.writeFile(t.outputPath,g),g}f();f();function Pm(e){let t;if(Array.isArray(e.mesh))t=e.mesh;else if(e.mesh&&typeof e.mesh=="object"&&"kind"in e.mesh)t=[e.mesh];else if(e.mesh&&typeof e.mesh=="object"&&e.mesh.type==="shard"){let i=Math.max(1,e.mesh.variants??8);t=[];for(let o=0;o<i;o++)t.push(Ae.shard({radius:20,facets:e.mesh.facets??12+o%6,seed:(e.seed??1)*31+o*17,irregularity:e.mesh.irregularity??.35}))}else if(e.mesh==="sphere")t=[Ae.sphere({radius:20})];else if(e.mesh==="roundedBox")t=[Ae.roundedBox({size:[30,30,30]})];else if(e.mesh==="cylinder")t=[Ae.cylinder({radius:15,height:35})];else{t=[];for(let o=0;o<8;o++)t.push(Ae.shard({radius:20,facets:10+o%8*2,seed:(e.seed??42)+o*13,irregularity:.35+o%3*.1}))}let r={id:e.id??X("swarm3d"),kind:"model3d",x:0,y:0,z:0,opacity:1,twoSided:!0,material:e.material??"lit",roughness:e.roughness??.35,metallic:e.metallic??.7,specularIntensity:e.specularIntensity??.5,ambientIntensity:e.ambientIntensity??1,startFrame:e.startFrame,durationFrames:e.durationFrames,swarm3d:{...e,meshVariants:t}},n=t[0];return n&&(n.modelData&&(r.modelData=n.modelData),n.primitive3d&&(r.primitive3d=n.primitive3d)),L.model(r)}var yy=["toon","outline","material","shininess","roughness","specularIntensity","metallic","ambientIntensity","ior","transmission","dispersion","fresnelPower","envIntensity","emissive","emissiveIntensity","castShadow"];function Qe(e){let t=e,r={};for(let n of yy)t[n]!==void 0&&(r[n]=t[n]);return r}function xy(e){return e==="lit"||e==="unlit"||e==="toon"?e:void 0}function Cs(e){return e instanceof oo?e.getPoints(96):e}function Le(e,t,r){let n=Object.fromEntries(Object.entries({...t,color:r.color,material:xy(r.material),shininess:r.shininess,roughness:r.roughness,metallic:r.metallic}).filter(([,i])=>i!==void 0));return L.model({id:r.id??X(e),modelData:Mu(n),primitive3d:n,is3D:!0,x:r.x??0,y:r.y??0,z:r.z??0,rotateX:r.rotateX??0,rotateY:r.rotateY??0,rotateZ:r.rotateZ??0,scale:r.scale??1,scaleX:r.scaleX??1,scaleY:r.scaleY??1,scaleZ:r.scaleZ??1,opacity:r.opacity??1,color:r.tint,material:r.material,shininess:r.shininess??32,roughness:r.roughness,specularIntensity:r.specularIntensity??.5,ambientIntensity:r.ambientIntensity??1,metallic:r.metallic,...Qe(r),twoSided:r.twoSided??!1,wireframe:r.wireframe,startFrame:r.startFrame,durationFrames:r.durationFrames})}function xn(e,t){let r=t.faces??t.items??[];for(let[n,i]of Object.entries(t))Object.defineProperty(e,n,{value:i,enumerable:!1,configurable:!0});return Object.defineProperty(e,Symbol.iterator,{value:function*(){yield*r},enumerable:!1,configurable:!0}),e}function wy(e){let t=e.scale??1,r=Math.max(Math.abs(t*(e.scaleX??1)),Math.abs(t*(e.scaleY??1)));return r>0?r:1}var Ae={cube(e){let t=e.size,[r,n,i]=typeof t=="number"?[t,t,t]:t,o=e.twoSided??!0,a={front:"#3b82f6",back:"#1d4ed8",left:"#2563eb",right:"#1e40af",top:"#60a5fa",bottom:"#172554"},s=(h,b,g,y,k,S)=>{if(b&&typeof b=="object"&&"kind"in b){let w=b;return w.position="absolute",w.is3D=!0,w.twoSided=o,w.material=w.material??e.material??"lit",w.shininess=w.shininess??e.shininess??32,w.specularIntensity=w.specularIntensity??e.specularIntensity??.5,e.roughness!==void 0&&w.roughness===void 0&&(w.roughness=e.roughness),e.metallic!==void 0&&w.metallic===void 0&&(w.metallic=e.metallic),e.ambientIntensity!==void 0&&w.ambientIntensity===void 0&&(w.ambientIntensity=e.ambientIntensity),Object.assign(w,{...Qe(e),...Qe(w)},S),w}let A=typeof b=="string"?{background:b}:b??{background:g};return L.box({id:`${e.id??"cube"}-${h}`,position:"absolute",width:y,height:k,is3D:!0,twoSided:o,material:A.material??e.material??"lit",shininess:A.shininess??e.shininess??32,specularIntensity:A.specularIntensity??e.specularIntensity??.5,roughness:A.roughness??e.roughness,metallic:A.metallic??e.metallic,ambientIntensity:A.ambientIntensity??e.ambientIntensity??1,...Qe({...e,...A}),background:A.background??g,borderRadius:A.borderRadius??0,borderWidth:A.borderWidth,borderColor:A.borderColor,opacity:A.opacity??1,children:A.children??[],...S})},l=r/2,c=n/2,d=i/2,m=[s("front",e.faces?.front,a.front,r,n,{x:0,y:0,z:-d,rotateX:0,rotateY:0,rotateZ:0}),s("back",e.faces?.back,a.back,r,n,{x:0,y:0,z:d,rotateX:0,rotateY:180,rotateZ:0}),s("left",e.faces?.left,a.left,i,n,{x:-l,y:0,z:0,rotateX:0,rotateY:90,rotateZ:0}),s("right",e.faces?.right,a.right,i,n,{x:l,y:0,z:0,rotateX:0,rotateY:-90,rotateZ:0}),s("top",e.faces?.top,a.top,r,i,{x:0,y:-c,z:0,rotateX:-90,rotateY:0,rotateZ:0}),s("bottom",e.faces?.bottom,a.bottom,r,i,{x:0,y:c,z:0,rotateX:90,rotateY:0,rotateZ:0})],p=L.box({id:e.id??X("cube"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:r,height:n,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:m});return xn(p,{faces:m})},carousel(e){let{items:t,radius:r,faceInward:n=!1,twoSided:i=!0}=e,o=t.length,a=o>0?360/o:0,s=t.map((c,d)=>{let m=d*a,p=m*Math.PI/180,h=r*Math.sin(p),b=-r*Math.cos(p),g=n?180-m:-m,y=c;return y.position="absolute",y.is3D=!0,y.twoSided=i,y.x=h,y.y=0,y.z=b,y.rotateY=g,y}),l=L.box({id:e.id??X("carousel"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:e.itemWidth??200,height:e.itemHeight??200,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:s});return xn(l,{items:s})},prism(e){let t=Math.max(3,Math.round(e.sides));if(e.sideConfigs&&e.sideConfigs.length>0){let{radius:n,height:i,twoSided:o=!0}=e,a=2*n*Math.tan(Math.PI/t),s=360/t,l=[];for(let d=0;d<t;d++){let m=d*s,p=m*Math.PI/180,h=n*Math.sin(p),b=-n*Math.cos(p),g=e.sideConfigs[d],y=e.color??`hsl(${d*360/t}, 70%, 50%)`;if(g&&typeof g=="object"&&"kind"in g){let S=g;S.position="absolute",S.is3D=!0,S.twoSided=o,S.x=h,S.y=0,S.z=b,S.rotateY=-m,Object.assign(S,Qe(e)),l.push(S);continue}let k=typeof g=="string"?{background:g}:g??{background:y};l.push(L.box({id:`${e.id??"prism"}-panel-${d}`,position:"absolute",width:a,height:i,is3D:!0,twoSided:o,x:h,y:0,z:b,rotateY:-m,background:k.background??y,borderRadius:k.borderRadius??0,borderWidth:k.borderWidth,borderColor:k.borderColor,opacity:k.opacity??e.opacity??1,material:k.material??e.material??"lit",shininess:k.shininess??e.shininess??32,specularIntensity:k.specularIntensity??e.specularIntensity??.5,ambientIntensity:k.ambientIntensity??e.ambientIntensity??1,...Qe({...e,...k}),children:k.children??[]}))}let c=L.box({id:e.id??X("prism"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,width:a,height:i,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,opacity:e.opacity??1,background:"transparent",children:l});return xn(c,{faces:l})}let r=Le("prism",{type:"cylinder",radius:e.radius,radiusTop:e.radiusTop??e.radius,radiusBottom:e.radiusBottom??e.radius,height:e.height,segments:t,openEnded:e.openEnded??!1,flatShaded:e.flatShaded??!0},{...e,color:e.color??"#3b82f6",twoSided:e.twoSided??!!e.openEnded});return xn(r,{faces:[r],items:[r]})},pyramid(e){let t=Math.max(3,Math.round(e.sides??4));return Le("pyramid",{type:"cylinder",radius:e.radius??60,radiusTop:e.radiusTop??0,radiusBottom:e.radius??60,height:e.height,segments:t,openEnded:e.openEnded??!1,flatShaded:e.flatShaded??!0},{...e,color:e.color??"#f59e0b",twoSided:e.twoSided??!!e.openEnded})},plane(e){return L.box({id:e.id??X("plane"),position:"absolute",width:e.width,height:e.height,x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,twoSided:e.twoSided??!0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,background:e.background??"#3b82f6",borderRadius:e.borderRadius??0,opacity:e.opacity??1,...Qe(e),children:e.children??[]})},grid(e){let{width:t,height:r}=e,n=e.id??X("grid"),i=Math.max(1,Math.round(e.divisions??10)),o=e.lineWidth??2,a=e.color??"rgba(59, 130, 246, 0.5)",s=(p,h,b,g,y)=>L.box({id:`${n}-${p}`,position:"absolute",x:h,y:b,z:0,width:g,height:y,is3D:!0,twoSided:!0,material:"unlit",background:a}),l=4096,c=[],d=Math.ceil(r/l),m=Math.ceil(t/l);for(let p=0;p<=i;p++){let h=p/i-.5;for(let b=0;b<d;b++){let g=r/d,y=-r/2+g*(b+.5);c.push(s(`v${p}-${b}`,h*t,y,o,g))}for(let b=0;b<m;b++){let g=t/m,y=-t/2+g*(b+.5);c.push(s(`h${p}-${b}`,y,h*r,g,o))}}return L.box({id:n,position:"absolute",width:t,height:r,x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,transformStyle:"preserve-3d",rotateX:e.rotateX??90,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,background:"transparent",opacity:e.opacity??1,children:c})},text(e){return e.extrusionDepth&&e.extrusionDepth>0?Ae.extrudedText({...e,depth:e.extrusionDepth}):L.text(e.text,{id:e.id??X("text3d"),position:"absolute",x:e.x??0,y:e.y??0,z:e.z??0,is3D:!0,twoSided:e.twoSided??!0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,fontSize:e.fontSize??48,fontFamily:e.fontFamily,fontWeight:e.fontWeight??"bold",fontStyle:e.fontStyle,fill:e.fill??"#ffffff",align:e.align??"center",direction:e.direction,verticalAlign:e.verticalAlign??"middle",letterSpacing:e.letterSpacing,lineHeight:e.lineHeight,material:e.material??"lit",shininess:e.shininess??64,roughness:e.roughness,specularIntensity:e.specularIntensity??.8,ambientIntensity:e.ambientIntensity??1,metallic:e.metallic,...Qe(e),opacity:e.opacity??1,background:e.background,borderRadius:e.borderRadius,padding:e.padding,stroke:e.stroke,strokeWidth:e.strokeWidth})},extrudedText(e){let{depth:t,text:r,fill:n="#ffffff",bevelColor:i}=e,o,a=(e.curveTolerance??.1)/wy(e),s=(e.fontFamily?er.getParsed(e.fontFamily):null)??er.getParsed("Inter")??er.getParsed("Unbounded")??er.getFirstParsed();s&&(o=Pu({text:r,font:s,fontSize:e.fontSize??48,depth:t,fill:n,bevelColor:i,curveSegments:e.curveSegments,curveTolerance:a,align:e.align,direction:e.direction,verticalAlign:e.verticalAlign,letterSpacing:e.letterSpacing,material:e.material==="lit"||e.material==="unlit"||e.material==="toon"?e.material:void 0,shininess:e.shininess,roughness:e.roughness,metallic:e.metallic}).modelData);let l=L.model({id:e.id??X("extruded-text"),modelData:o,is3D:!0,x:e.x??0,y:e.y??0,z:e.z??0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,scale:e.scale??1,scaleX:e.scaleX??1,scaleY:e.scaleY??1,scaleZ:e.scaleZ??1,opacity:e.opacity??1,material:e.material,shininess:e.shininess??32,roughness:e.roughness,specularIntensity:e.specularIntensity??.8,ambientIntensity:e.ambientIntensity??1,metallic:e.metallic,...Qe(e),twoSided:e.twoSided??!0,text3dOptions:{...e,curveTolerance:a}});return xn(l,{faces:[l],items:[l]})},roundedBox(e){return Le("rounded-box",{type:"roundedBox",width:e.width,height:e.height,depth:e.depth,radius:e.radius,segments:e.segments,taper:e.taper},e)},sphere(e){return Le("sphere",{type:"sphere",radius:e.radius,segments:e.segments},e)},cylinder(e){return Le("cylinder",{type:"cylinder",radius:e.radius,radiusTop:e.radiusTop,radiusBottom:e.radiusBottom,height:e.height,segments:e.segments,openEnded:e.openEnded,flatShaded:e.flatShaded},{...e,twoSided:e.twoSided??!!e.openEnded})},torus(e={}){return Le("torus",{type:"torus",radius:e.radius,tube:e.tube,radialSegments:e.radialSegments,tubularSegments:e.tubularSegments,arc:e.arc},e)},capsule(e={}){return Le("capsule",{type:"capsule",radius:e.radius,length:e.length,capSegments:e.capSegments,radialSegments:e.radialSegments},e)},ring(e={}){return Le("ring",{type:"ring",innerRadius:e.innerRadius,outerRadius:e.outerRadius,depth:e.depth,thetaSegments:e.thetaSegments,phiSegments:e.phiSegments,thetaStart:e.thetaStart,thetaLength:e.thetaLength},e)},polyhedron(e={}){let t=e.shape??e.type??"icosahedron";return Le(t,{type:"polyhedron",shape:t,radius:e.radius,detail:e.detail,flatShaded:e.flatShaded},e)},icosahedron(e={}){return Ae.polyhedron({...e,shape:"icosahedron"})},icosphere(e={}){return Ae.polyhedron({...e,shape:"icosphere",detail:e.detail??2,flatShaded:e.flatShaded??!1})},extrude(e){return Le("extrude",{type:"extrude",shape:e.shape,d:e.d,contour:e.contour,holes:e.holes,depth:e.depth,bevelThickness:e.bevelThickness,bevelSize:e.bevelSize,bevelSegments:e.bevelSegments,bevelColor:e.bevelColor,curveSegments:e.curveSegments,curveTolerance:e.curveTolerance,center:e.center},e)},lathe(e){let t=e.capped??e.closed;return Le("lathe",{type:"lathe",points:e.points,segments:e.segments,phiStart:e.phiStart,phiLength:e.phiLength,capped:t,closed:e.closed,flatShaded:e.flatShaded},{...e,twoSided:e.twoSided??!(t??!1)})},tube(e){let t=e.path??e.points;if(!t)throw new Error("Layer3D.tube requires `path` or `points`");return Le("tube",{type:"tube",path:Cs(t),radius:e.radius,innerRadius:e.innerRadius,radiusTaper:e.radiusTaper,tubularSegments:e.tubularSegments,radialSegments:e.radialSegments,closed:e.closed,capped:e.capped},{...e,twoSided:e.twoSided??e.capped===!1})},line(e){let t=e.points??e.path;if(!t)throw new Error("Layer3D.line requires `points` or `path`");return Le("line3d",{type:"line3d",points:Cs(t),colors:e.colors,mode:e.mode,closed:e.closed,dashSize:e.dashSize,gapSize:e.gapSize},{...e,material:e.material??"unlit",castShadow:e.castShadow??!1})},points(e){let t=(e.pointSize??0)<=0;return Le("points3d",{type:"points3d",points:Cs(e.points),colors:e.colors,pointSize:e.pointSize},{...e,material:e.material??(t?"unlit":"lit"),castShadow:e.castShadow??!t})},shard(e={}){return Le("shard",{type:"shard",radius:e.radius,size:e.size,facets:e.facets,seed:e.seed,irregularity:e.irregularity},e)},instances(e){let t=Array.isArray(e.mesh)?e.mesh[0]:e.mesh,r={id:e.id??X("instances3d"),kind:"model3d",x:e.x??0,y:e.y??0,z:e.z??0,rotateX:e.rotateX??0,rotateY:e.rotateY??0,rotateZ:e.rotateZ??0,scale:e.scale??1,color:e.color,colorTint:e.colorTint,opacity:e.opacity??1,twoSided:e.twoSided??!0,wireframe:e.wireframe??!1,material:e.material??"lit",roughness:e.roughness,metallic:e.metallic,specularIntensity:e.specularIntensity,ambientIntensity:e.ambientIntensity,startFrame:e.startFrame,durationFrames:e.durationFrames,instances3d:{...e},...Qe(e)};if(t){let n=t;n.modelData&&(r.modelData=n.modelData),n.primitive3d&&(r.primitive3d=n.primitive3d),n.src&&(r.src=n.src)}return L.model(r)},swarm(e={}){return Pm(e)},model(e={}){return L.model(e)},obj(e,t={}){return L.obj(e,t)},fbx(e,t={}){return L.fbx(e,t)},gltf(e,t={}){return L.gltf(e,t)},glb(e,t={}){return L.glb(e,t)},stl(e,t={}){return L.stl(e,t)},ply(e,t={}){return L.ply(e,t)},vox(e,t={}){return L.vox(e,t)},threeDS(e,t={}){return L.threeDS(e,t)},off(e,t={}){return L.off(e,t)}};f();var Ds=(e,t,r)=>{switch(e){case"left":return{dx:-t,dy:0};case"right":return{dx:t,dy:0};case"up":return{dx:0,dy:-r};default:return{dx:0,dy:r}}};function ct(e,t,r){return{kind:e,frames:Math.max(0,Math.round(t)),build:r}}var Mm={cut:()=>ct("cut",0,()=>({})),crossfade:(e=15,t="sine.inOut")=>ct("crossfade",e,r=>({incoming:Q.keys("opacity",[[0,0],[r.frames,1,t]])})),fadeThrough:(e=20,t="sine.inOut")=>ct("fadeThrough",e,r=>{let n=Math.max(1,Math.floor(r.frames/2));return{outgoing:Q.keys("opacity",[[r.outStart,1],[r.outStart+n,0,t]]),incoming:Q.keys("opacity",[[0,0],[n,0],[r.frames,1,t]])}}),push:(e="left",t=18,r="power3.inOut")=>ct("push",t,n=>{let{dx:i,dy:o}=Ds(e,n.width,n.height),a=Q.create(),s=Q.create();return i!==0?(a.keys("x",[[n.outStart,n.outRest.x],[n.outStart+n.frames,n.outRest.x+i,r]]),s.keys("x",[[0,n.inRest.x-i],[n.frames,n.inRest.x,r]])):(a.keys("y",[[n.outStart,n.outRest.y],[n.outStart+n.frames,n.outRest.y+o,r]]),s.keys("y",[[0,n.inRest.y-o],[n.frames,n.inRest.y,r]])),{outgoing:a,incoming:s}}),slide:(e="left",t=18,r="power3.out")=>ct("slide",t,n=>{let{dx:i,dy:o}=Ds(e,n.width,n.height),a=i!==0?"x":"y",s=i!==0?n.inRest.x:n.inRest.y;return{outgoing:Q.keys("opacity",[[n.outStart,1],[n.outStart+n.frames,.6,r]]),incoming:Q.keys(a,[[0,s-(i||o)],[n.frames,s,r]])}}),zoom:(e=18,t="power2.inOut")=>ct("zoom",e,r=>({outgoing:Q.create().keys("scale",[[r.outStart,1],[r.outStart+r.frames,1.25,t]]).keys("opacity",[[r.outStart,1],[r.outStart+r.frames,0,t]]),incoming:Q.create().keys("scale",[[0,.85],[r.frames,1,t]]).keys("opacity",[[0,0],[r.frames,1,t]])})),whip:(e="left",t=10)=>{let r=Mm.push(e,t,"expo.inOut");return ct("whip",t,n=>({...r.build(n),sceneProps:{motionBlurShutter:360}}))},wipe:(e="left",t=18,r="power2.inOut")=>ct("wipe",t,n=>{let{dx:i,dy:o}=Ds(e,n.width,n.height),a=i!==0?"x":"y",s=i!==0?n.inRest.x:n.inRest.y;return{incomingMatte:L.box({id:X("wipe-matte"),position:"absolute",x:n.inRest.x,y:n.inRest.y,width:n.width,height:n.height,background:"#ffffff"}).animate(Q.keys(a,[[0,s-(i||o)],[n.frames,s,r]]))}}),iris:(e=20,t={})=>ct("iris",e,r=>{let[n,i]=t.at??[.5,.5],o=r.inRest.x+n*r.width,a=r.inRest.y+i*r.height,s=Math.hypot(Math.max(n,1-n)*r.width,Math.max(i,1-i)*r.height);return{incomingMatte:L.shape("circle",{id:X("iris-matte"),position:"absolute",x:o-s,y:a-s,width:s*2,height:s*2,fillColor:"#ffffff"}).animate(Q.keys("scale",[[0,0],[r.frames,1,t.ease??"power2.inOut"]]))}})};function zi(e,t,r){let n=e[t];return typeof n=="number"?n:r}function Tm(e,t={}){let r=[],n=[],i=0;e.forEach((a,s)=>{let l=s===0?void 0:a.transition,c=Math.min(l?.frames??0,e[s-1]?.duration??0),d=Math.max(0,i-c),m=Math.max(1,Math.round(a.duration));n.push(d);let p=a.scene;(p.position===void 0||p.position==="relative")&&(p.position="absolute",p.x??=0,p.y??=0),p.startFrame=d,p.durationFrames=m,r.push(p),i=d+m}),e.forEach((a,s)=>{if(s===0||!a.transition||a.transition.frames===0)return;let l=r[s-1],c=r[s],d=Math.min(a.transition.frames,e[s-1].duration),m=t.width??zi(c,"width",1920),p=t.height??zi(c,"height",1080),h=a.transition.build({width:m,height:p,frames:d,outStart:e[s-1].duration-d,outRest:{x:typeof l.x=="number"?l.x:0,y:typeof l.y=="number"?l.y:0},inRest:{x:typeof c.x=="number"?c.x:0,y:typeof c.y=="number"?c.y:0}}),b=(g,y)=>{if(!y)return;let k=g.animation?.tracks??[];g.animation=Q.merge({tracks:k},y).toSpec()};b(l,h.outgoing),b(c,h.incoming),h.sceneProps&&(Object.assign(l,h.sceneProps),Object.assign(c,h.sceneProps)),h.incomingMatte&&(c.matte={node:h.incomingMatte,mode:"alpha"})});let o=L.box({id:t.id??X("sequence"),position:"absolute",x:0,y:0,width:t.width??zi(r[0]??{},"width",1920),height:t.height??zi(r[0]??{},"height",1080),startFrame:t.startFrame??0,durationFrames:Math.max(1,i),children:r});return Object.defineProperty(o,"totalFrames",{value:i,enumerable:!1}),Object.defineProperty(o,"sceneStarts",{value:n,enumerable:!1}),o}f();var vy={studio:{environment:"studio",envIntensity:1,key:{dir:[-.55,-1,-.7],color:"#fff6ec",intensity:1.1},rim:{dir:[.9,-.5,.9],color:"#dbe8ff",intensity:.9}},soft:{environment:"soft",envIntensity:1,key:{dir:[-.4,-1,-.8],color:"#ffffff",intensity:1}},sunset:{environment:"sunset",envIntensity:.9,key:{dir:[-1,-.35,-.3],color:"#ffb27a",intensity:2.2},fill:{dir:[.8,-.6,-.4],color:"#7f9cff",intensity:.35}},dramatic:{environment:"night",envIntensity:.8,key:{dir:[-.8,-1,-.35],color:"#ffffff",intensity:2.4},rim:{dir:[.7,-.4,1],color:"#8fb4ff",intensity:1.8}}};function Sy([e,t,r],n){let i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i);return[o*e+a*r,t,-a*e+o*r]}function Am(e,t,r,n){let[i,o,a]=Sy(e,n),s=Math.hypot(i,o,a)||1;return{x:t[0]+i/s*r,y:t[1]+o/s*r,z:t[2]+a/s*r,targetX:t[0],targetY:t[1],targetZ:t[2]}}function _i(e,t){let r=vy[e],n=t.target??[960,540,0],i=t.distance??1600,o=t.rotation??0,a=t.intensity??1,s=t.id??X(`lighting-${e}`),l=[dt.environment(r.environment,{id:`${s}-environment`,intensity:r.envIntensity*a,rotation:o,exposure:t.exposure,toneMapping:t.toneMapping,fog:t.fog,bloom:t.bloom}),dt.directional({id:`${s}-key`,color:r.key.color,intensity:r.key.intensity*a,...Am(r.key.dir,n,i,o),castShadow:t.shadows??!0,shadowSoftness:t.shadowSoftness??3})];for(let[c,d]of[["rim",r.rim],["fill",r.fill]])d&&l.push(dt.directional({id:`${s}-${c}`,color:d.color,intensity:d.intensity*a,...Am(d.dir,n,i,o)}));return l}var ky={studio:(e={})=>_i("studio",e),soft:(e={})=>_i("soft",e),sunset:(e={})=>_i("sunset",e),dramatic:(e={})=>_i("dramatic",e)};f();f();var Py="@dimforge/rapier2d-deterministic-compat",My="@dimforge/rapier3d-deterministic-compat";async function Cm(e,t){let r;try{r=await t()}catch(i){throw new Error(`Physics needs the optional dependency "${e}". Install it with \`npm i ${e}\`.`,{cause:i})}let n=r.default??r;return await n.init(),n}var Dm,Om;async function Ns(e){if(e===2){Dm??=Cm(Py,()=>import("./rapier-ZL2QGRPX.mjs"));let r=await Dm;return{createWorld2D:n=>new Os(r,n),createWorld3D:()=>{throw new Error("This backend was loaded for 2D.")}}}Om??=Cm(My,()=>import("./rapier-EQTGTIYW.mjs"));let t=await Om;return{createWorld2D:()=>{throw new Error("This backend was loaded for 3D.")},createWorld3D:r=>new Rs(t,r)}}var Os=class{constructor(t,r){this.R=t;this.world=new t.World({x:r[0],y:r[1]}),this.events=new t.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(t){let r=this.R,n=Rm(r,t.type).setTranslation(t.position[0],t.position[1]).setRotation(t.angle).setLinvel(t.velocity[0],t.velocity[1]).setAngvel(t.angularVelocity).setLinearDamping(t.linearDamping).setAngularDamping(t.angularDamping).setGravityScale(t.gravityScale).setCcdEnabled(t.ccd).setEnabled(t.enabled);t.lockRotation&&n.lockRotations();let i=this.world.createRigidBody(n),o=this.world.createCollider(Ty(r,t.shape).setDensity(t.density).setFriction(t.friction).setRestitution(t.restitution).setActiveEvents(r.ActiveEvents.COLLISION_EVENTS).setSensor(t.sensor??!1),i),a={raw:i,position:()=>{let s=i.translation();return[s.x,s.y]},rotation:()=>i.rotation(),velocity:()=>{let s=i.linvel();return[s.x,s.y]},angularVelocity:()=>i.angvel(),sleeping:()=>i.isSleeping(),mass:()=>i.mass(),setEnabled:s=>i.setEnabled(s),applyImpulse:([s,l])=>i.applyImpulse({x:s,y:l},!0),setKinematicTarget:([s,l],c)=>{i.setNextKinematicTranslation({x:s,y:l}),i.setNextKinematicRotation(c)}};return this.byCollider.set(o.handle,a),a}addJoint(t,r,n){let i=this.R,o={x:n.anchorA[0],y:n.anchorA[1]},a={x:n.anchorB[0],y:n.anchorB[1]},s;switch(n.type){case"revolute":case"spherical":s=i.JointData.revolute(o,a);break;case"fixed":s=i.JointData.fixed(o,0,a,0);break;case"rope":s=i.JointData.rope(n.length,o,a);break;case"spring":s=i.JointData.spring(n.restLength,n.stiffness,n.damping,o,a);break}this.world.createImpulseJoint(s,$i(t),$i(r),!0).setContactsEnabled(!1)}step(t){this.world.timestep=t,this.world.step(this.events),this.events.drainCollisionEvents((r,n,i)=>{if(!i)return;let o=this.byCollider.get(r),a=this.byCollider.get(n);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}},Rs=class{constructor(t,r){this.R=t;this.world=new t.World({x:r[0],y:r[1],z:r[2]}),this.events=new t.EventQueue(!0)}R;world;events;byCollider=new Map;started=[];addBody(t){let r=this.R,[n,i,o,a]=t.rotation,s=Rm(r,t.type).setTranslation(t.position[0],t.position[1],t.position[2]).setRotation({x:n,y:i,z:o,w:a}).setLinvel(t.velocity[0],t.velocity[1],t.velocity[2]).setAngvel(Tr(t.lockRotation?[0,0,0]:t.angularVelocity.map((p,h)=>t.enabledRotations&&!t.enabledRotations[h]?0:p))).setLinearDamping(t.linearDamping).setAngularDamping(t.angularDamping).setGravityScale(t.gravityScale).setCcdEnabled(t.ccd).setEnabled(t.enabled);t.lockRotation?s.lockRotations():t.enabledRotations&&s.enabledRotations(...t.enabledRotations);let l=this.world.createRigidBody(s),c=Ay(r,t.shape),d=this.world.createCollider(c.setDensity(t.density).setFriction(t.friction).setRestitution(t.restitution).setActiveEvents(r.ActiveEvents.COLLISION_EVENTS).setSensor(t.sensor??!1),l),m={raw:l,position:()=>{let p=l.translation();return[p.x,p.y,p.z]},rotation:()=>{let p=l.rotation();return[p.x,p.y,p.z,p.w]},velocity:()=>{let p=l.linvel();return[p.x,p.y,p.z]},angularVelocity:()=>{let p=l.angvel();return[p.x,p.y,p.z]},sleeping:()=>l.isSleeping(),mass:()=>l.mass(),setEnabled:p=>l.setEnabled(p),applyImpulse:p=>l.applyImpulse(Tr(p),!0),setKinematicTarget:(p,[h,b,g,y])=>{l.setNextKinematicTranslation(Tr(p)),l.setNextKinematicRotation({x:h,y:b,z:g,w:y})}};return this.byCollider.set(d.handle,m),m}addJoint(t,r,n){let i=this.R,o=Tr(n.anchorA),a=Tr(n.anchorB),s;switch(n.type){case"revolute":s=i.JointData.revolute(o,a,Tr(n.axis??[0,0,1]));break;case"spherical":s=i.JointData.spherical(o,a);break;case"fixed":{let l={x:0,y:0,z:0,w:1};s=i.JointData.fixed(o,l,a,l);break}case"rope":s=i.JointData.rope(n.length,o,a);break;case"spring":s=i.JointData.spring(n.restLength,n.stiffness,n.damping,o,a);break}this.world.createImpulseJoint(s,$i(t),$i(r),!0).setContactsEnabled(!1)}step(t){this.world.timestep=t,this.world.step(this.events),this.events.drainCollisionEvents((r,n,i)=>{if(!i)return;let o=this.byCollider.get(r),a=this.byCollider.get(n);o&&a&&this.started.push([o,a])})}drainCollisionStarts(){return this.started.splice(0)}free(){this.events.free(),this.world.free()}};function Tr([e,t,r]){return{x:e,y:t,z:r}}function $i(e){return e.raw}function Rm(e,t){let r=e.RigidBodyDesc;return t==="fixed"?r.fixed():t==="kinematic"?r.kinematicPositionBased():r.dynamic()}function Ty(e,t){switch(t.kind){case"ball":return e.ColliderDesc.ball(t.radius);case"box":{let r=Math.min(t.radius??0,t.hx/2,t.hy/2);return r>0?e.ColliderDesc.roundCuboid(t.hx-r,t.hy-r,r):e.ColliderDesc.cuboid(t.hx,t.hy)}case"hull":{let r=e.ColliderDesc.convexHull(new Float32Array(t.points));if(!r)throw new Error("Physics: could not build a convex hull for this shape.");return r}}}function Ay(e,t){switch(t.kind){case"ball":return e.ColliderDesc.ball(t.radius);case"box":{let r=Math.min(t.radius??0,t.hx/2,t.hy/2,t.hz/2);return r>0?e.ColliderDesc.roundCuboid(t.hx-r,t.hy-r,t.hz-r,r):e.ColliderDesc.cuboid(t.hx,t.hy,t.hz)}case"cylinder":return e.ColliderDesc.cylinder(t.halfHeight,t.radius);case"hull":{let r=e.ColliderDesc.convexHull(new Float32Array(t.points));if(!r)throw new Error("Physics: could not build a convex hull for this shape.");return r}}}f();var wn=class{constructor(t,r,n,i,o,a,s){this.world=t;this.type=n;this.layer=i;this.frame=o;this.options=a;this.sim=r,this.recording=s}world;type;layer;frame;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get rotation(){return this.recording.signal("rotation")}get centerX(){return this.recording.signal("centerX")}get centerY(){return this.recording.signal("centerY")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get speed(){return this.recording.signal("speed")}get angularVelocity(){return this.recording.signal("angularVelocity")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(t){let r=this.options.follow;if(this.type!=="kinematic"||!r)return;let n=this.frame,i=this.world.fps,o=r.x===void 0?void 0:_e(r.x,t,i),a=r.y===void 0?void 0:_e(r.y,t,i),s=r.rotation===void 0?n.rotation:_e(r.rotation,t,i),l=this.initialLayerXY(),c=Em(o??l[0],a??l[1],s,n),d=this.world.pixelsPerMeter;return{position:[c[0]/d,c[1]/d],rotation:s*Math.PI/180}}initialLayerXY(){let t=this.layer;return[Number(t?.x??0),Number(t?.y??0)]}record(t,r){let n=this.world.pixelsPerMeter,[i,o]=this.sim.position(),a=i*n,s=o*n,l=this.recording,c=l.channel("rotation"),d=this.sim.rotation()*180/Math.PI;c[t]=r<0?Zt(this.frame.rotation,d):Zt(c[r],d);let[m,p]=Ny(a,s,c[t],this.frame);l.channel("x")[t]=m,l.channel("y")[t]=p,l.channel("centerX")[t]=a,l.channel("centerY")[t]=s;let[h,b]=this.sim.velocity();l.channel("vx")[t]=h*n,l.channel("vy")[t]=b*n,l.channel("speed")[t]=Math.hypot(h,b)*n,l.channel("angularVelocity")[t]=this.sim.angularVelocity()*180/Math.PI,l.channel("sleeping")[t]=this.sim.sleeping()?1:0}boundChannels(){let t=[["x","x"],["y","y"]];return this.options.lockRotation||t.push(["rotation","rotation"]),t}localAnchor(t){if(!t)return[0,0];let r=this.world.pixelsPerMeter,[n,i]=this.sim.position(),o=-this.sim.rotation(),a=t[0]/r-n,s=t[1]/r-i;return[a*Math.cos(o)-s*Math.sin(o),a*Math.sin(o)+s*Math.cos(o)]}center(){let t=this.world.pixelsPerMeter,[r,n]=this.sim.position();return[r*t,n*t]}},Ar=class extends Mr{constructor(t,r){let n=r.pixelsPerMeter??100,i=r.gravity??2400,o=typeof i=="number"?[0,i/n]:[i[0]/n,i[1]/n],a=t.createWorld2D(o);super(a,o,r)}body(t,r={}){this.assertOpen();let i=typeof t.kind=="string"?t:void 0,o=Dy(t,r),a=this.pixelsPerMeter,s=r.type??"dynamic",[l,c]=Em(o.x,o.y,o.rotation,o),d=r.velocity??[0,0],m={type:s,position:[l/a,c/a],angle:o.rotation*Math.PI/180,velocity:[d[0]/a,d[1]/a],angularVelocity:(r.angularVelocity??0)*Math.PI/180,linearDamping:r.linearDamping??0,angularDamping:r.angularDamping??0,gravityScale:r.gravityScale??1,lockRotation:r.lockRotation??!1,ccd:r.ccd??!1,enabled:!0,sensor:r.sensor??!1,density:r.density??1,friction:r.friction??.6,restitution:r.restitution??.3,shape:Nm(o.shape,1/a)},p=this.sim.addBody(m),h=new wn(this,p,s,i,o,r,this.newRecording());return this.addBody(h)}ground(t){return this.body({x:-1e6/2,y:t.y,width:1e6,height:2e3},{type:"fixed",friction:t.friction,restitution:t.restitution??.2})}walls(t){let{width:r,height:n}=t,i=t.x??0,o=t.y??0,a=t.thickness??400,s={type:"fixed",friction:t.friction,restitution:t.restitution??.2},l=n*4+a,c={floor:this.body({x:i-a,y:o+n,width:r+2*a,height:a},s),left:this.body({x:i-a,y:o+n-l,width:a,height:l},s),right:this.body({x:i+r,y:o+n-l,width:a,height:l},s),ceiling:void 0};return t.ceiling&&(c.ceiling=this.body({x:i-a,y:o-a,width:r+2*a,height:a},s)),c}pin(t,r){let n=r??t.center(),i=this.anchorBody(n);return this.joint(t,i,{type:"revolute",anchorA:t.localAnchor(n),anchorB:[0,0]}),this}hinge(t,r,n){return this.joint(t,r,{type:"revolute",anchorA:t.localAnchor(n),anchorB:r.localAnchor(n)}),this}weld(t,r){let n=t.center();return this.joint(t,r,{type:"fixed",anchorA:[0,0],anchorB:r.localAnchor(n)}),this}spring(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB),s=this.pixelsPerMeter,l=(n.length??Math.hypot(a[0]-o[0],a[1]-o[1]))/s,c=Cy(t,i),d=2*Math.PI*(n.frequency??2);return this.joint(t,i,{type:"spring",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),restLength:l,stiffness:c*d*d,damping:2*(n.dampingRatio??.2)*c*d}),this}rope(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB),s=n.length??Math.hypot(a[0]-o[0],a[1]-o[1]);return this.joint(t,i,{type:"rope",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),length:s/this.pixelsPerMeter}),this}force(t,r){let n=this.pixelsPerMeter;return this.addForce(t,i=>[r.x===void 0?0:_e(r.x,i,this.fps)/n,r.y===void 0?0:_e(r.y,i,this.fps)/n]),this}field(t,r={}){let n=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s]=i.sim.position(),[l,c]=i.sim.velocity(),d=t({x:a*n,y:s*n,vx:l*n,vy:c*n,frame:o,body:i});return d?[d[0]/n,d[1]/n]:null},r.bodies),this}impulse(t,r,n){let i=this.pixelsPerMeter;return this.addImpulse(t,r,[n[0]/i,n[1]/i]),this}lerpRotation(t,r,n){return t+(r-t)*n}joint(t,r,n){this.assertOpen(),this.sim.addJoint(t.sim,r.sim,n)}anchorBody(t){return this.body({x:t[0]-.5,y:t[1]-.5,width:1,height:1},{type:"fixed",output:"none",sensor:!0})}endpoints(t,r,n,i){let o=n??t.center();if(Array.isArray(r)){let a=i??r;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:r,pa:o,pb:i??r.center()}}};function Cy(e,t){let r=e.type==="dynamic"?e.sim.mass():0,n=t.type==="dynamic"?t.sim.mass():0;return r>0&&n>0?r*n/(r+n):Math.max(r,n,.001)}function Je(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Dy(e,t){let r=typeof e.id=="string"?` "${e.id}"`:"";if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Physics: layer${r} needs numeric \`x\` and \`y\` (absolute position) to become a body.`);let n=t.size?.[0]??(typeof e.width=="number"?e.width:void 0),i=t.size?.[1]??(typeof e.height=="number"?e.height:void 0);if((n===void 0||i===void 0)&&e.kind==="text"){let s=je.measure(String(e.text??""),{fontFamily:String(e.fontFamily??"Inter"),fontSize:Je(e.fontSize,48),fontWeight:e.fontWeight,letterSpacing:Je(e.letterSpacing,0),lineHeight:typeof e.lineHeight=="number"?e.lineHeight:void 0});n??=s.width,i??=s.height}if(n===void 0||i===void 0||n<=0||i<=0)throw new Error(`Physics: layer${r} needs a numeric \`width\` and \`height\` (or the \`size\` option) to become a body.`);let o=Je(e.scale,1);return{...{x:e.x,y:e.y,width:n,height:i,scale:o,anchorX:Je(e.anchorX,.5),anchorY:Je(e.anchorY,.5),rotation:Je(e.rotation,0)},shape:Nm(Oy(e,n,i,t.shape??"auto"),o)}}function Oy(e,t,r,n){let o=e.kind==="shape"?String(e.shapeType??"rect"):"rect",a=Je(e.borderRadius,Je(e.cornerRadius,0)),s={kind:"box",hx:t/2,hy:r/2,radius:a};if(n==="box")return s;if(n==="circle"||n==="auto"&&o==="circle")return{kind:"ball",radius:Math.min(t,r)/2};if(n==="auto"&&o==="rect")return s;if(n==="hull"||n==="auto"){let l=Ry(e,o,t,r);return l.length>=6?{kind:"hull",points:l}:s}return s}function Ry(e,t,r,n){let i=t==="path"?String(e.d??""):vu({shapeType:t,width:r,height:n,cornerRadius:Je(e.cornerRadius,Je(e.borderRadius,0)),polygonSides:e.polygonSides,starPoints:e.starPoints,starInnerRadiusRatio:e.starInnerRadiusRatio,arrowHeadWidth:e.arrowHeadWidth,arrowHeadLength:e.arrowHeadLength,arrowShaftWidth:e.arrowShaftWidth}),o=[];for(let a of wu(i))o.push(a.p0.x-r/2,a.p0.y-n/2,a.p1.x-r/2,a.p1.y-n/2);return o}function Nm(e,t){switch(e.kind){case"ball":return{kind:"ball",radius:e.radius*t};case"box":return{kind:"box",hx:e.hx*t,hy:e.hy*t,radius:(e.radius??0)*t};case"hull":return{kind:"hull",points:e.points.map(r=>r*t)}}}function Fm(e,t){let r=e*Math.PI/180,n=(.5-t.anchorX)*t.width*t.scale,i=(.5-t.anchorY)*t.height*t.scale;return[n*Math.cos(r)-i*Math.sin(r),n*Math.sin(r)+i*Math.cos(r)]}function Em(e,t,r,n){let[i,o]=Fm(r,n);return[e+n.anchorX*n.width+i,t+n.anchorY*n.height+o]}function Ny(e,t,r,n){let[i,o]=Fm(r,n);return[e-i-n.anchorX*n.width,t-o-n.anchorY*n.height]}f();var Tt=Math.PI/180;function Lm(e,t,r){let n=s=>s*Tt/2,i=[Math.sin(n(e)),0,0,Math.cos(n(e))],o=[0,Math.sin(n(t)),0,Math.cos(n(t))],a=[0,0,Math.sin(n(r)),Math.cos(n(r))];return Ui(Ui(a,o),i)}function Ui(e,t){let[r,n,i,o]=e,[a,s,l,c]=t;return[o*a+r*c+n*l-i*s,o*s-r*l+n*c+i*a,o*l+r*s-n*a+i*c,o*c-r*a-n*s-i*l]}function Fy(e,t){let[r,n,i,o]=e,a=1-2*(n*n+i*i),s=2*(r*n+o*i),l=2*(r*i-o*n),c=2*(n*i+o*r),d=1-2*(r*r+n*n),m=2*(r*n-o*i),p=1-2*(r*r+i*i),h=Math.max(-1,Math.min(1,-l)),b;if(Math.abs(h)>.999999){let T=Math.asin(h),v=t?t[0]*Tt:0,E=Math.atan2(-m,p)+(h>0?v:-v);b=[v,T,E]}else b=[Math.atan2(c,d),Math.asin(h),Math.atan2(s,a)];let g=[b[0]/Tt,b[1]/Tt,b[2]/Tt];if(!t)return g;let y=[g[0]+180,180-g[1],g[2]+180],k=T=>[Zt(t[0],T[0]),Zt(t[1],T[1]),Zt(t[2],T[2])],S=k(g),A=k(y),w=T=>Math.abs(T[0]-t[0])+Math.abs(T[1]-t[1])+Math.abs(T[2]-t[2]);return w(S)<=w(A)?S:A}var vn=class{constructor(t,r,n,i,o,a,s){this.world=t;this.type=n;this.layer=i;this.start=o;this.options=a;this.sim=r,this.recording=s}world;type;layer;start;options;collisions=[];recording;sim;get startFrame(){return Math.max(0,Math.round(this.options.startFrame??0))}get gravityScale(){return this.options.gravityScale??1}get output(){return this.options.output}get x(){return this.recording.signal("x")}get y(){return this.recording.signal("y")}get z(){return this.recording.signal("z")}get rotateX(){return this.recording.signal("rotateX")}get rotateY(){return this.recording.signal("rotateY")}get rotateZ(){return this.recording.signal("rotateZ")}get vx(){return this.recording.signal("vx")}get vy(){return this.recording.signal("vy")}get vz(){return this.recording.signal("vz")}get speed(){return this.recording.signal("speed")}get impact(){return this.recording.signal("impact")}get sleeping(){return this.recording.signal("sleeping")}kinematicTarget(t){let r=this.options.follow;if(this.type!=="kinematic"||!r)return;let n=this.world.fps,i=(l,c)=>l===void 0?c:_e(l,t,n),o=this.start.position,a=this.start.rotation,s=this.world.pixelsPerMeter;return{position:[i(r.x,o[0])/s,i(r.y,o[1])/s,i(r.z,o[2])/s],rotation:Lm(i(r.rotateX,a[0]),i(r.rotateY,a[1]),i(r.rotateZ,a[2]))}}record(t,r){let n=this.world.pixelsPerMeter,i=this.recording,[o,a,s]=this.sim.position();i.channel("x")[t]=o*n,i.channel("y")[t]=a*n,i.channel("z")[t]=s*n;let l=i.channel("rotateX"),c=i.channel("rotateY"),d=i.channel("rotateZ"),m=r<0?this.start.rotation:[l[r],c[r],d[r]],p=Fy(this.sim.rotation(),m);l[t]=p[0],c[t]=p[1],d[t]=p[2];let[h,b,g]=this.sim.velocity();i.channel("vx")[t]=h*n,i.channel("vy")[t]=b*n,i.channel("vz")[t]=g*n,i.channel("speed")[t]=Math.hypot(h,b,g)*n,i.channel("sleeping")[t]=this.sim.sleeping()?1:0}boundChannels(){let t=[["x","x"],["y","y"],["z","z"]];return this.options.lockRotation!==!0&&t.push(["rotateX","rotateX"],["rotateY","rotateY"],["rotateZ","rotateZ"]),t}localAnchor(t){if(!t)return[0,0,0];let r=this.world.pixelsPerMeter,n=this.sim.position(),[i,o,a,s]=this.sim.rotation(),l=[t[0]/r-n[0],t[1]/r-n[1],t[2]/r-n[2]];return Ey(l,[-i,-o,-a,s])}center(){let t=this.world.pixelsPerMeter,[r,n,i]=this.sim.position();return[r*t,n*t,i*t]}};function Ey(e,t){let r=Ui(Ui(t,[e[0],e[1],e[2],0]),[-t[0],-t[1],-t[2],t[3]]);return[r[0],r[1],r[2]]}var Cr=class extends Mr{constructor(t,r){let n=r.pixelsPerMeter??100,i=r.gravity??2400,o=typeof i=="number"?[0,i/n,0]:[i[0]/n,i[1]/n,i[2]/n];super(t.createWorld3D(o),o,r)}body(t,r={}){this.assertOpen();let i=typeof t.kind=="string"?t:void 0,o=t,a=[ee(r.x??o.x,0),ee(r.y??o.y,0),ee(r.z??o.z,0)],s=[ee(r.rotateX??o.rotateX,0),ee(r.rotateY??o.rotateY,0),ee(r.rotateZ??o.rotateZ,0)],l=this.pixelsPerMeter,c=r.type??"dynamic",d=r.velocity??[0,0,0],m=r.angularVelocity??[0,0,0],p={type:c,position:[a[0]/l,a[1]/l,a[2]/l],rotation:Lm(s[0],s[1],s[2]),velocity:[d[0]/l,d[1]/l,d[2]/l],angularVelocity:[m[0]*Tt,m[1]*Tt,m[2]*Tt],linearDamping:r.linearDamping??0,angularDamping:r.angularDamping??0,gravityScale:r.gravityScale??1,lockRotation:r.lockRotation===!0,...typeof r.lockRotation=="object"&&{enabledRotations:[!r.lockRotation.x,!r.lockRotation.y,!r.lockRotation.z]},ccd:r.ccd??!1,enabled:!0,sensor:r.sensor??!1,density:r.density??1,friction:r.friction??.6,restitution:r.restitution??.3,shape:Iy(By(o,r),1/l)},h=this.sim.addBody(p),b=new vn(this,h,c,i,{position:a,rotation:s},r,this.newRecording());return this.addBody(b)}ground(t){return this.body({x:0,y:t.y+2e3/2,z:0,width:1e6,height:2e3,depth:1e6},{type:"fixed",friction:t.friction,restitution:t.restitution??.2})}walls(t){let{width:r,height:n,depth:i}=t,[o,a,s]=[t.x??0,t.y??0,t.z??0],l=t.thickness??400,c={type:"fixed",friction:t.friction,restitution:t.restitution??.2},d=n*4,m=a+n/2-d/2;return[this.body({x:o,y:a+n/2+l/2,z:s,width:r+2*l,height:l,depth:i+2*l},c),this.body({x:o-r/2-l/2,y:m,z:s,width:l,height:d,depth:i+2*l},c),this.body({x:o+r/2+l/2,y:m,z:s,width:l,height:d,depth:i+2*l},c),this.body({x:o,y:m,z:s-i/2-l/2,width:r,height:d,depth:l},c),this.body({x:o,y:m,z:s+i/2+l/2,width:r,height:d,depth:l},c)]}pin(t,r){let n=r??t.center(),i=this.anchorBody(n);return this.joint(t,i,{type:"spherical",anchorA:t.localAnchor(n),anchorB:[0,0,0]}),this}hinge(t,r,n,i=[0,0,1]){return this.joint(t,r,{type:"revolute",anchorA:t.localAnchor(n),anchorB:r.localAnchor(n),axis:i}),this}weld(t,r){return this.joint(t,r,{type:"fixed",anchorA:[0,0,0],anchorB:r.localAnchor(t.center())}),this}spring(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB),s=this.pixelsPerMeter,l=(n.length??Bm(o,a))/s,c=t.type==="dynamic"?t.sim.mass():0,d=i.type==="dynamic"?i.sim.mass():0,m=c>0&&d>0?c*d/(c+d):Math.max(c,d,.001),p=2*Math.PI*(n.frequency??2);return this.joint(t,i,{type:"spring",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),restLength:l,stiffness:m*p*p,damping:2*(n.dampingRatio??.2)*m*p}),this}rope(t,r,n={}){let{other:i,pa:o,pb:a}=this.endpoints(t,r,n.anchorA,n.anchorB);return this.joint(t,i,{type:"rope",anchorA:t.localAnchor(o),anchorB:i.localAnchor(a),length:(n.length??Bm(o,a))/this.pixelsPerMeter}),this}force(t,r){let n=this.pixelsPerMeter,i=(o,a)=>o===void 0?0:_e(o,a,this.fps)/n;return this.addForce(t,o=>[i(r.x,o),i(r.y,o),i(r.z,o)]),this}field(t,r={}){let n=this.pixelsPerMeter;return this.addField((i,o)=>{let[a,s,l]=i.sim.position(),[c,d,m]=i.sim.velocity(),p=t({x:a*n,y:s*n,z:l*n,vx:c*n,vy:d*n,vz:m*n,frame:o,body:i});return p?[p[0]/n,p[1]/n,p[2]/n]:null},r.bodies),this}impulse(t,r,n){let i=this.pixelsPerMeter;return this.addImpulse(t,r,[n[0]/i,n[1]/i,n[2]/i]),this}lerpRotation(t,r,n){let i=t[0]*r[0]+t[1]*r[1]+t[2]*r[2]+t[3]*r[3]<0?-1:1,o=t.map((s,l)=>s+(r[l]*i-s)*n),a=Math.hypot(...o)||1;return o.map(s=>s/a)}joint(t,r,n){this.assertOpen(),this.sim.addJoint(t.sim,r.sim,n)}anchorBody(t){return this.body({x:t[0],y:t[1],z:t[2],width:1,height:1,depth:1},{type:"fixed",output:"none",sensor:!0})}endpoints(t,r,n,i){let o=n??t.center();if(Array.isArray(r)){let a=i??r;return{other:this.anchorBody(a),pa:o,pb:a}}return{other:r,pa:o,pb:i??r.center()}}};function Bm(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2])}function ee(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function By(e,t){let r=typeof e.id=="string"?` "${e.id}"`:"",n=ee(e.scale,1),i=[n*ee(e.scaleX,1),n*ee(e.scaleY,1),n*ee(e.scaleZ,1)],o=i[0]===i[1]&&i[1]===i[2],a=e.primitive3d??{},s=t.shape??"auto",l=()=>{let g=Ly(e.modelData);if(g)return{kind:"hull",points:g.map((y,k)=>y*i[k%3])}};if(t.size||s==="box"){let[g,y,k]=t.size??Fs(e,a)??[0,0,0];if(g>0&&y>0&&k>0)return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:a.type==="roundedBox"?ee(a.radius,0)*Math.min(...i):0}}if(s==="hull"){let g=l();if(g)return g}if((s==="sphere"||s==="auto"&&(a.type==="sphere"||a.type==="polyhedron"&&a.shape==="icosphere"))&&(o||s==="sphere")){let g=ee(a.radius,0)||Math.max(...Fs(e,a)??[0])/2;if(g>0)return{kind:"ball",radius:g*Math.max(...i)}}let d=ee(a.radiusTop,ee(a.radius,0)),m=ee(a.radiusBottom,ee(a.radius,0));if((s==="cylinder"||s==="auto"&&a.type==="cylinder")&&d===m&&d>0&&i[0]===i[2])return{kind:"cylinder",halfHeight:ee(a.height,0)*i[1]/2,radius:d*i[0]};if(s==="auto"&&a.type==="roundedBox"&&(a.taper??1)===1){let[g,y,k]=[ee(a.width,0),ee(a.height,0),ee(a.depth,0)];return{kind:"box",hx:g*i[0]/2,hy:y*i[1]/2,hz:k*i[2]/2,radius:ee(a.radius,0)*Math.min(...i)}}let h=l();if(h)return h;let b=Fs(e,a);if(b)return{kind:"box",hx:b[0]*i[0]/2,hy:b[1]*i[1]/2,hz:b[2]*i[2]/2};throw new Error(`Physics: layer${r} has no mesh or size to build a 3D collider from; pass \`size: [w, h, d]\`.`)}function Fs(e,t){if(t.type==="roundedBox")return[ee(t.width,0),ee(t.height,0),ee(t.depth,0)];if(t.type==="sphere"||t.type==="polyhedron"){let r=ee(t.radius,50)*2;return[r,r,r]}if(t.type==="capsule"){let r=ee(t.radius,30),n=ee(t.length,60);return[r*2,n+r*2,r*2]}if(t.type==="torus"){let r=ee(t.radius,60),n=ee(t.tube,20);return[(r+n)*2,(r+n)*2,n*2]}if(t.type==="ring"){let r=ee(t.outerRadius,60),n=Math.max(2,ee(t.depth,0));return[r*2,r*2,n]}if(t.type==="cylinder"){let r=Math.max(ee(t.radiusTop,ee(t.radius,0)),ee(t.radiusBottom,ee(t.radius,0)))*2;return[r,ee(t.height,0),r]}if(typeof e.width=="number"&&typeof e.height=="number"&&typeof e.depth=="number")return[e.width,e.height,e.depth]}function Ly(e){let t=e?.meshes;if(!t?.length)return;let r=0;for(let a of t)r+=(a.positions?.length??0)/3;if(r<4)return;let n=Math.max(1,Math.floor(r/4096)),i=[],o=0;for(let a of t){let s=a.positions;if(s)for(let l=0;l<s.length;l+=3,o++)o%n===0&&i.push(s[l],s[l+1],s[l+2])}return i}function Iy(e,t){switch(e.kind){case"ball":return{kind:"ball",radius:e.radius*t};case"box":return{kind:"box",hx:e.hx*t,hy:e.hy*t,hz:e.hz*t,radius:(e.radius??0)*t};case"cylinder":return{kind:"cylinder",halfHeight:e.halfHeight*t,radius:e.radius*t};case"hull":return{kind:"hull",points:e.points.map(r=>r*t)}}}var jy={async world2d(e){return new Ar(await Ns(2),e)},async world3d(e){return new Cr(await Ns(3),e)}};f();var ge=(...e)=>e,zy={pixelArt:(e={})=>ge(new rr({palette:e.palette??"pico8",pixelSize:e.pixelSize??6,dither:.4})),gameBoy:(e={})=>ge(new rr({palette:"gameboy",pixelSize:e.pixelSize??4,dither:.6})),teletext:(e={})=>ge(new rr({palette:"teletext",pixelSize:e.pixelSize??10})),ledWall:(e={})=>ge(new Oo({size:e.size??14,shape:"circle",gap:.18})),ascii:(e={})=>ge(new vo({cellSize:e.cellSize??10,colorMode:e.matrix?"green":"source",bg:e.matrix?"#020a04":"#0b0b0b"})),oneBit:(e={})=>ge(new Mo({mode:"bayer",scale:e.scale??2,dark:e.dark??"#111111",light:e.light??"#f2efe6"})),risograph:(e={})=>{let t=e.inkA??"#1d3fbb",r=e.inkB??"#ff5fa2",n=e.paper??"#f4efe4";return ge(new Ot({stops:[{position:0,color:t},{position:.55,color:r},{position:1,color:n}]}),new rr({palette:"custom",colors:[t,r,n],dither:.8,pixelSize:2}),new it({strength:.2}))},cartoon:(e={})=>ge(new Gn({levels:e.levels??4,edgeColor:e.ink??"#111111",saturation:1.3})),comic:(e={})=>ge(new Gn({levels:4,edgeWidth:1.5,saturation:1.4}),new jr({frequency:e.dotFrequency??70,opacity:.35})),thermal:()=>ge(new Ot({stops:[{position:0,color:"#000010"},{position:.25,color:"#3b0a7a"},{position:.5,color:"#c4205f"},{position:.75,color:"#ff9a1f"},{position:1,color:"#fffbe0"}]})),vhs:(e={})=>ge(new Ir({tracking:e.tracking??.5,chroma:4,curvature:.04,scanlines:.25,mask:.05,noise:.15}),new Vn({amount:3})),crt:(e={})=>ge(new Ir({curvature:e.curvature??.15,scanlines:.5,mask:.35})),glitch:(e={})=>ge(new Vn({amount:e.amount??18}),new Ir({tracking:1,chroma:6,curvature:0,scanlines:.1,mask:0,vignette:0})),oilPainting:(e={})=>ge(new Un({style:"oil",radius:e.brush??5})),watercolor:(e={})=>ge(new Un({style:"watercolor",radius:e.brush??6,paper:.5})),topographic:(e={})=>ge(new Po({levels:e.levels??16,fill:"flat",lineColor:e.ink??"#5a3a1a",fillColor:e.paper??"#f3ead8"})),kaleidoscope:(e={})=>ge(new Ao({segments:e.segments??8,rotation:e.rotation??0})),opArt:(e={})=>ge(new Do({pattern:e.pattern??"stripes",frequency:e.frequency??60})),holographic:(e={})=>ge(new To({strength:e.strength??.7,shift:e.shift??0})),noir:()=>ge(new Ot({stops:[{position:0,color:"#000000"},{position:.55,color:"#8a8a8a"},{position:1,color:"#ffffff"}]}),new it({strength:.35}),new nr({strength:.6})),film:()=>ge(new it({strength:.25}),new nr({strength:.35}))};f();var xp=nt(Np(),1),Ki=nt(fo(),1);Ln();var Ys=nt(jm(),1);f();f();var Jm=nt(fo(),1);f();var Bs=new TextEncoder,_y={appstream2:"appstream",cloudhsmv2:"cloudhsm",email:"ses",marketplace:"aws-marketplace",mobile:"AWSMobileHubService",pinpoint:"mobiletargeting",queue:"sqs","git-codecommit":"codecommit","mturk-requester-sandbox":"mturk-requester","personalize-runtime":"personalize"},$y=new Set(["authorization","content-type","content-length","user-agent","presigned-expires","expect","x-amzn-trace-id","range","connection"]),Gi=class{constructor({accessKeyId:t,secretAccessKey:r,sessionToken:n,service:i,region:o,cache:a,retries:s,initRetryMs:l}){if(t==null)throw new TypeError("accessKeyId is a required option");if(r==null)throw new TypeError("secretAccessKey is a required option");this.accessKeyId=t,this.secretAccessKey=r,this.sessionToken=n,this.service=i,this.region=o,this.cache=a||new Map,this.retries=s??10,this.initRetryMs=l||50}async sign(t,r){if(t instanceof Request){let{method:o,url:a,headers:s,body:l}=t;r=Object.assign({method:o,url:a,headers:s},r),r.body==null&&s.has("Content-Type")&&(r.body=l!=null&&s.has("X-Amz-Content-Sha256")?l:await t.clone().arrayBuffer()),t=a}let n=new Ls(Object.assign({url:t.toString()},r,this,r&&r.aws)),i=Object.assign({},r,await n.sign());delete i.aws;try{return new Request(i.url.toString(),i)}catch(o){if(o instanceof TypeError)return new Request(i.url.toString(),Object.assign({duplex:"half"},i));throw o}}async fetch(t,r){for(let n=0;n<=this.retries;n++){let i=fetch(await this.sign(t,r));if(n===this.retries)return i;let o=await i;if(o.status<500&&o.status!==429)return o;await new Promise(a=>setTimeout(a,Math.random()*this.initRetryMs*Math.pow(2,n)))}throw new Error("An unknown error occurred, ensure retries is not negative")}},Ls=class{constructor({method:t,url:r,headers:n,body:i,accessKeyId:o,secretAccessKey:a,sessionToken:s,service:l,region:c,cache:d,datetime:m,signQuery:p,appendSessionToken:h,allHeaders:b,singleEncode:g}){if(r==null)throw new TypeError("url is a required option");if(o==null)throw new TypeError("accessKeyId is a required option");if(a==null)throw new TypeError("secretAccessKey is a required option");this.method=t||(i?"POST":"GET"),this.url=new URL(r),this.headers=new Headers(n||{}),this.body=i,this.accessKeyId=o,this.secretAccessKey=a,this.sessionToken=s;let y,k;(!l||!c)&&([y,k]=Uy(this.url,this.headers)),this.service=l||y||"",this.region=c||k||"us-east-1",this.cache=d||new Map,this.datetime=m||new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),this.signQuery=p,this.appendSessionToken=h||this.service==="iotdevicegateway",this.headers.delete("Host"),this.service==="s3"&&!this.signQuery&&!this.headers.has("X-Amz-Content-Sha256")&&this.headers.set("X-Amz-Content-Sha256","UNSIGNED-PAYLOAD");let S=this.signQuery?this.url.searchParams:this.headers;if(S.set("X-Amz-Date",this.datetime),this.sessionToken&&!this.appendSessionToken&&S.set("X-Amz-Security-Token",this.sessionToken),this.signableHeaders=["host",...this.headers.keys()].filter(w=>b||!$y.has(w)).sort(),this.signedHeaders=this.signableHeaders.join(";"),this.canonicalHeaders=this.signableHeaders.map(w=>w+":"+(w==="host"?this.url.host:(this.headers.get(w)||"").replace(/\s+/g," "))).join(`
716
+ `),this.credentialString=[this.datetime.slice(0,8),this.region,this.service,"aws4_request"].join("/"),this.signQuery&&(this.service==="s3"&&!S.has("X-Amz-Expires")&&S.set("X-Amz-Expires","86400"),S.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),S.set("X-Amz-Credential",this.accessKeyId+"/"+this.credentialString),S.set("X-Amz-SignedHeaders",this.signedHeaders)),this.service==="s3")try{this.encodedPath=decodeURIComponent(this.url.pathname.replace(/\+/g," "))}catch{this.encodedPath=this.url.pathname}else this.encodedPath=this.url.pathname.replace(/\/+/g,"/");g||(this.encodedPath=encodeURIComponent(this.encodedPath).replace(/%2F/g,"/")),this.encodedPath=$m(this.encodedPath);let A=new Set;this.encodedSearch=[...this.url.searchParams].filter(([w])=>{if(!w)return!1;if(this.service==="s3"){if(A.has(w))return!1;A.add(w)}return!0}).map(w=>w.map(T=>$m(encodeURIComponent(T)))).sort(([w,T],[v,E])=>w<v?-1:w>v?1:T<E?-1:T>E?1:0).map(w=>w.join("=")).join("&")}async sign(){return this.signQuery?(this.url.searchParams.set("X-Amz-Signature",await this.signature()),this.sessionToken&&this.appendSessionToken&&this.url.searchParams.set("X-Amz-Security-Token",this.sessionToken)):this.headers.set("Authorization",await this.authHeader()),{method:this.method,url:this.url,headers:this.headers,body:this.body}}async authHeader(){return["AWS4-HMAC-SHA256 Credential="+this.accessKeyId+"/"+this.credentialString,"SignedHeaders="+this.signedHeaders,"Signature="+await this.signature()].join(", ")}async signature(){let t=this.datetime.slice(0,8),r=[this.secretAccessKey,t,this.region,this.service].join(),n=this.cache.get(r);if(!n){let i=await Sn("AWS4"+this.secretAccessKey,t),o=await Sn(i,this.region),a=await Sn(o,this.service);n=await Sn(a,"aws4_request"),this.cache.set(r,n)}return Es(await Sn(n,await this.stringToSign()))}async stringToSign(){return["AWS4-HMAC-SHA256",this.datetime,this.credentialString,Es(await zm(await this.canonicalString()))].join(`
717
717
  `)}async canonicalString(){return[this.method.toUpperCase(),this.encodedPath,this.encodedSearch,this.canonicalHeaders+`
718
718
  `,this.signedHeaders,await this.hexBodyHash()].join(`
719
- `)}async hexBodyHash(){let t=this.headers.get("X-Amz-Content-Sha256")||(this.service==="s3"&&this.signQuery?"UNSIGNED-PAYLOAD":null);if(t==null){if(this.body&&typeof this.body!="string"&&!("byteLength"in this.body))throw new Error("body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header");t=Es(await Im(this.body||""))}return t}};async function Sn(e,t){let r=await crypto.subtle.importKey("raw",typeof e=="string"?Bs.encode(e):e,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return crypto.subtle.sign("HMAC",r,Bs.encode(t))}async function Im(e){return crypto.subtle.digest("SHA-256",typeof e=="string"?Bs.encode(e):e)}var jm=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function Es(e){let t=new Uint8Array(e),r="";for(let n=0;n<t.length;n++){let i=t[n];r+=jm[i>>>4&15],r+=jm[i&15]}return r}function zm(e){return e.replace(/[!'()*]/g,t=>"%"+t.charCodeAt(0).toString(16).toUpperCase())}function Iy(e,t){let{hostname:r,pathname:n}=e;if(r.endsWith(".on.aws")){let s=r.match(/^[^.]{1,63}\.lambda-url\.([^.]{1,63})\.on\.aws$/);return s!=null?["lambda",s[1]||""]:["",""]}if(r.endsWith(".r2.cloudflarestorage.com"))return["s3","auto"];if(r.endsWith(".backblazeb2.com")){let s=r.match(/^(?:[^.]{1,63}\.)?s3\.([^.]{1,63})\.backblazeb2\.com$/);return s!=null?["s3",s[1]||""]:["",""]}let i=r.replace("dualstack.","").match(/([^.]{1,63})\.(?:([^.]{0,63})\.)?amazonaws\.com(?:\.cn)?$/),o=i&&i[1]||"",a=i&&i[2];if(a==="us-gov")a="us-gov-west-1";else if(a==="s3"||a==="s3-accelerate")a="us-east-1",o="s3";else if(o==="iot")r.startsWith("iot.")?o="execute-api":r.startsWith("data.jobs.iot.")?o="iot-jobs-data":o=n==="/mqtt"?"iotdevicegateway":"iotdata";else if(o==="autoscaling"){let s=(t.get("X-Amz-Target")||"").split(".")[0];s==="AnyScaleFrontendService"?o="application-autoscaling":s==="AnyScaleScalingPlannerFrontendService"&&(o="autoscaling-plans")}else a==null&&o.startsWith("s3-")?(a=o.slice(3).replace(/^fips-|^external-1/,""),o="s3"):o.endsWith("-fips")?o=o.slice(0,-5):a&&/-\d$/.test(o)&&!/-\d$/.test(a)&&([o,a]=[a,o]);return[By[o]||o,a||""]}f();var Gm=rt(fo(),1);var Wm=rt($m(),1),jy=rt(Vm(),1);var zy={mp4:"video/mp4",m4v:"video/mp4",mov:"video/quicktime",webm:"video/webm",mkv:"video/x-matroska",mp3:"audio/mpeg",m4a:"audio/mp4",aac:"audio/aac",wav:"audio/wav",flac:"audio/flac",ogg:"audio/ogg",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",webp:"image/webp",avif:"image/avif",gif:"image/gif",svg:"image/svg+xml",json:"application/json",lottie:"application/zip",glb:"model/gltf-binary",gltf:"model/gltf+json",ttf:"font/ttf",otf:"font/otf",woff2:"font/woff2",cube:"text/plain",srt:"text/plain",vtt:"text/vtt"};function Hm(e){let t=e.slice(e.lastIndexOf(".")+1).toLowerCase();return zy[t]??"application/octet-stream"}f();var _y=/^[A-Za-z0-9][\w-]{0,63}$/,$y=/^[0-9a-f]{64}$/,dt="framefields.json",$e=class extends Error{name="ManifestError"};function Ym(e){if(!kn(e)||!kn(e.remotes))throw new $e(`${dt}: "storage" needs "remotes", e.g. { "remotes": { "media": { "endpoint": "https://<account>.r2.cloudflarestorage.com", "bucket": "films" } } }`);let t={};for(let[n,i]of Object.entries(e.remotes))t[n]=Uy(n,i);let r=Object.keys(t);if(r.length===0)throw new $e(`${dt}: "storage.remotes" is empty`);if(e.default!==void 0&&!r.includes(e.default))throw new $e(`${dt}: "storage.default" must name a remote (${r.join(", ")})`);return{...typeof e.default=="string"&&{default:e.default},remotes:t}}function Uy(e,t){let r=i=>{throw new $e(`${dt}: storage.remotes.${e} ${i}`)};_y.test(e)||r("has an invalid name: use letters, digits, - and _ (at most 64)"),kn(t)||r("must be an object with an endpoint and a bucket");let n=t;return Is(n.endpoint)||r('needs "endpoint": the S3 API URL, e.g. "https://<account>.r2.cloudflarestorage.com"'),(typeof n.bucket!="string"||!/^[a-z0-9][a-z0-9.-]{1,62}$/.test(n.bucket))&&r('needs "bucket": the bucket name'),n.region!==void 0&&typeof n.region!="string"&&r('"region" must be a string'),n.prefix!==void 0&&(typeof n.prefix!="string"||n.prefix.startsWith("/")||n.prefix.split("/").includes(".."))&&r('"prefix" must be a key prefix such as "films/launch/"'),n.publicUrl!==void 0&&!Is(n.publicUrl)&&r('"publicUrl" must be an http(s) URL, e.g. "https://media.example.com"'),{endpoint:n.endpoint,bucket:n.bucket,...n.region!==void 0&&{region:n.region},...typeof n.prefix=="string"&&n.prefix&&{prefix:Wy(n.prefix)},...n.publicUrl!==void 0&&{publicUrl:n.publicUrl}}}function Xm(e,t){if(!kn(e))throw new $e(`${dt}: "assets" must map project paths to { "sha256", "size" }`);let r={};for(let[n,i]of Object.entries(e)){let o=s=>{throw new $e(`${dt}: assets["${n}"] ${s}`)};Gy(n)||o("must be a path inside the project, e.g. assets/footage/intro.mp4"),kn(i)||o('must be { "sha256", "size" }');let a=i;(typeof a.sha256!="string"||!$y.test(a.sha256))&&o('needs "sha256": 64 lowercase hex digits'),(typeof a.size!="number"||!Number.isSafeInteger(a.size)||a.size<0)&&o('needs "size" in bytes'),a.url!==void 0&&!Is(a.url)&&o('"url" must be an http(s) URL'),a.remote!==void 0?(typeof a.remote!="string"||!t?.remotes[a.remote])&&o('"remote" must name a remote in "storage.remotes"'):a.url===void 0&&!t&&o('needs a "url", or a "storage" section with a remote to hold it'),r[n]={sha256:a.sha256,size:a.size,...a.remote!==void 0&&{remote:a.remote},...a.url!==void 0&&{url:a.url}}}return r}function js(e,t){let r=Object.keys(e?.remotes??{}),n=t??e?.default??(r.length===1?r[0]:void 0);if(!e||r.length===0)throw new $e(`${dt} has no "storage" remotes: add one (an R2 or S3 bucket) first`);if(!n)throw new $e(`${dt}: name the remote (${r.join(", ")}), or set "storage.default"`);let i=e.remotes[n];if(!i)throw new $e(`${dt}: no remote named "${n}" (${r.join(", ")})`);return{name:n,remote:i}}function zs(e,t=""){return`${t}sha256/${e.slice(0,2)}/${e}`}function Vy(e,t){if(e.publicUrl)return`${e.publicUrl.replace(/\/+$/,"")}/${zs(t,e.prefix)}`}function qm(e,t,r){let n=r?.[e.sha256];if(n)return n;if(e.url)return e.url;if(t)return Vy(js(t,e.remote).remote,e.sha256)}function Gy(e){return e.length>0&&e.length<=1024&&!e.startsWith("/")&&!e.includes("\\")&&!e.split("/").some(t=>t===""||t==="."||t==="..")}function Wy(e){return e.endsWith("/")?e:`${e}/`}function Is(e){if(typeof e!="string")return!1;try{let{protocol:t}=new URL(e);return t==="https:"||t==="http:"}catch{return!1}}function kn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Qm(e,t=x.env){let r=`FRAMEFIELDS_STORAGE_${e.toUpperCase().replace(/-/g,"_")}`,n=t[`${r}_ACCESS_KEY_ID`],i=t[`${r}_SECRET_ACCESS_KEY`];if(n&&i)return{accessKeyId:n,secretAccessKey:i};let o=t.AWS_ACCESS_KEY_ID,a=t.AWS_SECRET_ACCESS_KEY;if(!(!o||!a))return{accessKeyId:o,secretAccessKey:a,...t.AWS_SESSION_TOKEN&&{sessionToken:t.AWS_SESSION_TOKEN}}}var Pn=class extends Error{constructor(r,n){super(r);this.status=n}status;name="StorageError"},_s=1024*1024,Hy="public, max-age=31536000, immutable",Yi=class{constructor(t,r,n={}){this.remote=t;this.options=n;this.aws=new Gi({...r,service:"s3",region:t.region??"auto",retries:3}),this.fetch=n.fetch??fetch}remote;options;aws;fetch;keyFor(t){return zs(t,this.remote.prefix)}async has(t,r){let n=await this.send(this.keyFor(t),{method:"HEAD"});if(n.status===404)return!1;if(!n.ok)throw await this.failure("HEAD",n);return Number(n.headers.get("content-length"))===r}async upload(t,r,n){let i=this.keyFor(r.sha256),o={"content-type":Hm(t),"cache-control":Hy},a=this.options.multipartThreshold??64*_s;if(r.size<=a){let s=await to(t);try{let u=await s.readFile();await this.put(i,u,r.sha256,o)}finally{await s.close()}n?.({sent:r.size,total:r.size});return}await this.uploadParts(t,i,r.size,o,n)}async presign(t,r=86400){let n=new URL(this.url(this.keyFor(t)));return n.searchParams.set("X-Amz-Expires",String(Math.min(r,604800))),(await this.aws.sign(n,{method:"GET",aws:{signQuery:!0}})).url}async put(t,r,n,i,o=""){let a=await this.send(t,{method:"PUT",body:r,headers:{...i,"x-amz-content-sha256":n},query:o});if(!a.ok)throw await this.failure("PUT",a);return a}async uploadParts(t,r,n,i,o){let a=Math.max(this.options.partSize??16*_s,Math.ceil(n/1e4),5*_s),s=await this.send(r,{method:"POST",query:"uploads=",headers:i});if(!s.ok)throw await this.failure("CreateMultipartUpload",s);let u=/<UploadId>([^<]+)<\/UploadId>/.exec(await s.text())?.[1];if(!u)throw new Pn("CreateMultipartUpload returned no UploadId");let c=encodeURIComponent(u),d=Math.ceil(n/a),m=new Array(d),p=await to(t),h=0,g=0,b=async()=>{for(;h<d;){let y=h++,v=Math.min(a,n-y*a),P=Buffer.alloc(v);await p.read(P,0,v,y*a);let A=(0,Km.createHash)("sha256").update(P).digest("hex"),w=await this.put(r,P,A,{},`partNumber=${y+1}&uploadId=${c}`);m[y]=w.headers.get("etag")??"",g+=v,o?.({sent:g,total:n})}};try{await Promise.all(Array.from({length:Math.min(this.options.concurrency??4,d)},b));let y=`<CompleteMultipartUpload>${m.map((A,w)=>`<Part><PartNumber>${w+1}</PartNumber><ETag>${Yy(A)}</ETag></Part>`).join("")}</CompleteMultipartUpload>`,v=await this.send(r,{method:"POST",query:`uploadId=${c}`,body:y,headers:{"content-type":"application/xml"}}),P=await v.text();if(!v.ok||P.includes("<Error>"))throw new Pn(`CompleteMultipartUpload failed (${v.status}): ${Zm(P)}`,v.status)}catch(y){throw await this.send(r,{method:"DELETE",query:`uploadId=${c}`}).catch(()=>{}),y}finally{await p.close()}}url(t,r=""){let n=this.remote.endpoint.replace(/\/+$/,""),i=t.split("/").map(encodeURIComponent).join("/");return`${n}/${this.remote.bucket}/${i}${r?`?${r}`:""}`}async send(t,r){let n=await this.aws.sign(this.url(t,r.query),{method:r.method,headers:r.headers,body:r.body});return this.fetch(n)}async failure(t,r){let n=await r.text().catch(()=>""),i=r.status===403?": check the remote's keys and that they may write to the bucket":r.status===404?": check the remote's endpoint and bucket":"";return new Pn(`${t} ${this.remote.bucket} failed (${r.status} ${Zm(n)})${i}`,r.status)}};function Zm(e){return/<Code>([^<]+)<\/Code>/.exec(e)?.[1]??"no error code"}function Yy(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/"/g,"&quot;")}f();Ln();var $s="framefields.json";function Jm(e){for(let t=e;;t=no(t)){if(eo(ro(t,$s)))return t;if(no(t)===t)return}}async function ep(e){let t=ro(e,$s);if(!eo(t))return;let r;try{r=JSON.parse(await gu(t,"utf8"))}catch(i){throw new $e(`${$s} is not valid JSON: ${i.message}`)}if(r.assets===void 0)return;let n=r.storage===void 0?void 0:Ym(r.storage);return{storage:n,assets:Xm(r.assets,n)}}var Xy=6*3600,qy=5*3600*1e3;async function Us(e,t={}){let r=Jm(e),n=r&&await ep(r);if(!r||!n)return;let i=new Map,o=a=>{let s=yu(r,a).split("/").join("/");return s.startsWith("../")?void 0:n.assets[s]};return{root:r,entry:o,async url(a){let s=o(a);if(!s)return;let u=qm(s,n.storage);if(u)return u;let c=i.get(s.sha256);if(c&&Date.now()-c.at<qy)return c.url;let{name:d,remote:m}=js(n.storage,s.remote),p=Qm(d,t.env);if(!p)return;let h=await new Yi(m,p,{fetch:t.fetch}).presign(s.sha256,Xy);return i.set(s.sha256,{url:h,at:Date.now()}),h}}}f();Ln();var Mn=G.dirname(In(import.meta.url)),tp=["import","meta","url"].join("."),Zy=ao(import.meta.url),Tn="/@framefields/engine",np={framefields:"index.ts","framefields/effects":"effects/index.ts","framefields/audio":"audio/index.ts","framefields/signals":"signals/index.ts","framefields/fonts":"fonts/index.ts","framefields/components":"components/index.ts"},Vs={path:"path","path/posix":"path",url:"url",os:"os",fs:"fs","fs/promises":"fs-promises",module:"module"},rp=new Set(["sharp","skia-canvas","node-av","onnxruntime-node","@resvg/resvg-js","@napi-rs/webcodecs","@mediabunny/server","@mediabunny/mp3-encoder","webgpu","pino","pino-pretty","dotenv","esbuild","@framefields/renderer","framefields/renderer","framefields/preview"]),Ky=`
719
+ `)}async hexBodyHash(){let t=this.headers.get("X-Amz-Content-Sha256")||(this.service==="s3"&&this.signQuery?"UNSIGNED-PAYLOAD":null);if(t==null){if(this.body&&typeof this.body!="string"&&!("byteLength"in this.body))throw new Error("body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header");t=Es(await zm(this.body||""))}return t}};async function Sn(e,t){let r=await crypto.subtle.importKey("raw",typeof e=="string"?Bs.encode(e):e,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return crypto.subtle.sign("HMAC",r,Bs.encode(t))}async function zm(e){return crypto.subtle.digest("SHA-256",typeof e=="string"?Bs.encode(e):e)}var _m=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function Es(e){let t=new Uint8Array(e),r="";for(let n=0;n<t.length;n++){let i=t[n];r+=_m[i>>>4&15],r+=_m[i&15]}return r}function $m(e){return e.replace(/[!'()*]/g,t=>"%"+t.charCodeAt(0).toString(16).toUpperCase())}function Uy(e,t){let{hostname:r,pathname:n}=e;if(r.endsWith(".on.aws")){let s=r.match(/^[^.]{1,63}\.lambda-url\.([^.]{1,63})\.on\.aws$/);return s!=null?["lambda",s[1]||""]:["",""]}if(r.endsWith(".r2.cloudflarestorage.com"))return["s3","auto"];if(r.endsWith(".backblazeb2.com")){let s=r.match(/^(?:[^.]{1,63}\.)?s3\.([^.]{1,63})\.backblazeb2\.com$/);return s!=null?["s3",s[1]||""]:["",""]}let i=r.replace("dualstack.","").match(/([^.]{1,63})\.(?:([^.]{0,63})\.)?amazonaws\.com(?:\.cn)?$/),o=i&&i[1]||"",a=i&&i[2];if(a==="us-gov")a="us-gov-west-1";else if(a==="s3"||a==="s3-accelerate")a="us-east-1",o="s3";else if(o==="iot")r.startsWith("iot.")?o="execute-api":r.startsWith("data.jobs.iot.")?o="iot-jobs-data":o=n==="/mqtt"?"iotdevicegateway":"iotdata";else if(o==="autoscaling"){let s=(t.get("X-Amz-Target")||"").split(".")[0];s==="AnyScaleFrontendService"?o="application-autoscaling":s==="AnyScaleScalingPlannerFrontendService"&&(o="autoscaling-plans")}else a==null&&o.startsWith("s3-")?(a=o.slice(3).replace(/^fips-|^external-1/,""),o="s3"):o.endsWith("-fips")?o=o.slice(0,-5):a&&/-\d$/.test(o)&&!/-\d$/.test(a)&&([o,a]=[a,o]);return[_y[o]||o,a||""]}f();var Hm=nt(fo(),1);var Ym=nt(Vm(),1),Vy=nt(Wm(),1);var Gy={mp4:"video/mp4",m4v:"video/mp4",mov:"video/quicktime",webm:"video/webm",mkv:"video/x-matroska",mp3:"audio/mpeg",m4a:"audio/mp4",aac:"audio/aac",wav:"audio/wav",flac:"audio/flac",ogg:"audio/ogg",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",webp:"image/webp",avif:"image/avif",gif:"image/gif",svg:"image/svg+xml",json:"application/json",lottie:"application/zip",glb:"model/gltf-binary",gltf:"model/gltf+json",ttf:"font/ttf",otf:"font/otf",woff2:"font/woff2",cube:"text/plain",srt:"text/plain",vtt:"text/vtt"};function Xm(e){let t=e.slice(e.lastIndexOf(".")+1).toLowerCase();return Gy[t]??"application/octet-stream"}f();var Wy=/^[A-Za-z0-9][\w-]{0,63}$/,Hy=/^[0-9a-f]{64}$/,mt="framefields.json",$e=class extends Error{name="ManifestError"};function qm(e){if(!kn(e)||!kn(e.remotes))throw new $e(`${mt}: "storage" needs "remotes", e.g. { "remotes": { "media": { "endpoint": "https://<account>.r2.cloudflarestorage.com", "bucket": "films" } } }`);let t={};for(let[n,i]of Object.entries(e.remotes))t[n]=Yy(n,i);let r=Object.keys(t);if(r.length===0)throw new $e(`${mt}: "storage.remotes" is empty`);if(e.default!==void 0&&!r.includes(e.default))throw new $e(`${mt}: "storage.default" must name a remote (${r.join(", ")})`);return{...typeof e.default=="string"&&{default:e.default},remotes:t}}function Yy(e,t){let r=i=>{throw new $e(`${mt}: storage.remotes.${e} ${i}`)};Wy.test(e)||r("has an invalid name: use letters, digits, - and _ (at most 64)"),kn(t)||r("must be an object with an endpoint and a bucket");let n=t;return Is(n.endpoint)||r('needs "endpoint": the S3 API URL, e.g. "https://<account>.r2.cloudflarestorage.com"'),(typeof n.bucket!="string"||!/^[a-z0-9][a-z0-9.-]{1,62}$/.test(n.bucket))&&r('needs "bucket": the bucket name'),n.region!==void 0&&typeof n.region!="string"&&r('"region" must be a string'),n.prefix!==void 0&&(typeof n.prefix!="string"||n.prefix.startsWith("/")||n.prefix.split("/").includes(".."))&&r('"prefix" must be a key prefix such as "films/launch/"'),n.publicUrl!==void 0&&!Is(n.publicUrl)&&r('"publicUrl" must be an http(s) URL, e.g. "https://media.example.com"'),{endpoint:n.endpoint,bucket:n.bucket,...n.region!==void 0&&{region:n.region},...typeof n.prefix=="string"&&n.prefix&&{prefix:Zy(n.prefix)},...n.publicUrl!==void 0&&{publicUrl:n.publicUrl}}}function Zm(e,t){if(!kn(e))throw new $e(`${mt}: "assets" must map project paths to { "sha256", "size" }`);let r={};for(let[n,i]of Object.entries(e)){let o=s=>{throw new $e(`${mt}: assets["${n}"] ${s}`)};qy(n)||o("must be a path inside the project, e.g. assets/footage/intro.mp4"),kn(i)||o('must be { "sha256", "size" }');let a=i;(typeof a.sha256!="string"||!Hy.test(a.sha256))&&o('needs "sha256": 64 lowercase hex digits'),(typeof a.size!="number"||!Number.isSafeInteger(a.size)||a.size<0)&&o('needs "size" in bytes'),a.url!==void 0&&!Is(a.url)&&o('"url" must be an http(s) URL'),a.remote!==void 0?(typeof a.remote!="string"||!t?.remotes[a.remote])&&o('"remote" must name a remote in "storage.remotes"'):a.url===void 0&&!t&&o('needs a "url", or a "storage" section with a remote to hold it'),r[n]={sha256:a.sha256,size:a.size,...a.remote!==void 0&&{remote:a.remote},...a.url!==void 0&&{url:a.url}}}return r}function js(e,t){let r=Object.keys(e?.remotes??{}),n=t??e?.default??(r.length===1?r[0]:void 0);if(!e||r.length===0)throw new $e(`${mt} has no "storage" remotes: add one (an R2 or S3 bucket) first`);if(!n)throw new $e(`${mt}: name the remote (${r.join(", ")}), or set "storage.default"`);let i=e.remotes[n];if(!i)throw new $e(`${mt}: no remote named "${n}" (${r.join(", ")})`);return{name:n,remote:i}}function zs(e,t=""){return`${t}sha256/${e.slice(0,2)}/${e}`}function Xy(e,t){if(e.publicUrl)return`${e.publicUrl.replace(/\/+$/,"")}/${zs(t,e.prefix)}`}function Km(e,t,r){let n=r?.[e.sha256];if(n)return n;if(e.url)return e.url;if(t)return Xy(js(t,e.remote).remote,e.sha256)}function qy(e){return e.length>0&&e.length<=1024&&!e.startsWith("/")&&!e.includes("\\")&&!e.split("/").some(t=>t===""||t==="."||t==="..")}function Zy(e){return e.endsWith("/")?e:`${e}/`}function Is(e){if(typeof e!="string")return!1;try{let{protocol:t}=new URL(e);return t==="https:"||t==="http:"}catch{return!1}}function kn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ep(e,t=x.env){let r=`FRAMEFIELDS_STORAGE_${e.toUpperCase().replace(/-/g,"_")}`,n=t[`${r}_ACCESS_KEY_ID`],i=t[`${r}_SECRET_ACCESS_KEY`];if(n&&i)return{accessKeyId:n,secretAccessKey:i};let o=t.AWS_ACCESS_KEY_ID,a=t.AWS_SECRET_ACCESS_KEY;if(!(!o||!a))return{accessKeyId:o,secretAccessKey:a,...t.AWS_SESSION_TOKEN&&{sessionToken:t.AWS_SESSION_TOKEN}}}var Pn=class extends Error{constructor(r,n){super(r);this.status=n}status;name="StorageError"},_s=1024*1024,Ky="public, max-age=31536000, immutable",Yi=class{constructor(t,r,n={}){this.remote=t;this.options=n;this.aws=new Gi({...r,service:"s3",region:t.region??"auto",retries:3}),this.fetch=n.fetch??fetch}remote;options;aws;fetch;keyFor(t){return zs(t,this.remote.prefix)}async has(t,r){let n=await this.send(this.keyFor(t),{method:"HEAD"});if(n.status===404)return!1;if(!n.ok)throw await this.failure("HEAD",n);return Number(n.headers.get("content-length"))===r}async upload(t,r,n){let i=this.keyFor(r.sha256),o={"content-type":Xm(t),"cache-control":Ky},a=this.options.multipartThreshold??64*_s;if(r.size<=a){let s=await to(t);try{let l=await s.readFile();await this.put(i,l,r.sha256,o)}finally{await s.close()}n?.({sent:r.size,total:r.size});return}await this.uploadParts(t,i,r.size,o,n)}async presign(t,r=86400){let n=new URL(this.url(this.keyFor(t)));return n.searchParams.set("X-Amz-Expires",String(Math.min(r,604800))),(await this.aws.sign(n,{method:"GET",aws:{signQuery:!0}})).url}async put(t,r,n,i,o=""){let a=await this.send(t,{method:"PUT",body:r,headers:{...i,"x-amz-content-sha256":n},query:o});if(!a.ok)throw await this.failure("PUT",a);return a}async uploadParts(t,r,n,i,o){let a=Math.max(this.options.partSize??16*_s,Math.ceil(n/1e4),5*_s),s=await this.send(r,{method:"POST",query:"uploads=",headers:i});if(!s.ok)throw await this.failure("CreateMultipartUpload",s);let l=/<UploadId>([^<]+)<\/UploadId>/.exec(await s.text())?.[1];if(!l)throw new Pn("CreateMultipartUpload returned no UploadId");let c=encodeURIComponent(l),d=Math.ceil(n/a),m=new Array(d),p=await to(t),h=0,b=0,g=async()=>{for(;h<d;){let y=h++,k=Math.min(a,n-y*a),S=Buffer.alloc(k);await p.read(S,0,k,y*a);let A=(0,Jm.createHash)("sha256").update(S).digest("hex"),w=await this.put(r,S,A,{},`partNumber=${y+1}&uploadId=${c}`);m[y]=w.headers.get("etag")??"",b+=k,o?.({sent:b,total:n})}};try{await Promise.all(Array.from({length:Math.min(this.options.concurrency??4,d)},g));let y=`<CompleteMultipartUpload>${m.map((A,w)=>`<Part><PartNumber>${w+1}</PartNumber><ETag>${Qy(A)}</ETag></Part>`).join("")}</CompleteMultipartUpload>`,k=await this.send(r,{method:"POST",query:`uploadId=${c}`,body:y,headers:{"content-type":"application/xml"}}),S=await k.text();if(!k.ok||S.includes("<Error>"))throw new Pn(`CompleteMultipartUpload failed (${k.status}): ${Qm(S)}`,k.status)}catch(y){throw await this.send(r,{method:"DELETE",query:`uploadId=${c}`}).catch(()=>{}),y}finally{await p.close()}}url(t,r=""){let n=this.remote.endpoint.replace(/\/+$/,""),i=t.split("/").map(encodeURIComponent).join("/");return`${n}/${this.remote.bucket}/${i}${r?`?${r}`:""}`}async send(t,r){let n=await this.aws.sign(this.url(t,r.query),{method:r.method,headers:r.headers,body:r.body});return this.fetch(n)}async failure(t,r){let n=await r.text().catch(()=>""),i=r.status===403?": check the remote's keys and that they may write to the bucket":r.status===404?": check the remote's endpoint and bucket":"";return new Pn(`${t} ${this.remote.bucket} failed (${r.status} ${Qm(n)})${i}`,r.status)}};function Qm(e){return/<Code>([^<]+)<\/Code>/.exec(e)?.[1]??"no error code"}function Qy(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/"/g,"&quot;")}f();Ln();var $s="framefields.json";function tp(e){for(let t=e;;t=no(t)){if(eo(ro(t,$s)))return t;if(no(t)===t)return}}async function rp(e){let t=ro(e,$s);if(!eo(t))return;let r;try{r=JSON.parse(await gu(t,"utf8"))}catch(i){throw new $e(`${$s} is not valid JSON: ${i.message}`)}if(r.assets===void 0)return;let n=r.storage===void 0?void 0:qm(r.storage);return{storage:n,assets:Zm(r.assets,n)}}var Jy=6*3600,e0=5*3600*1e3;async function Us(e,t={}){let r=tp(e),n=r&&await rp(r);if(!r||!n)return;let i=new Map,o=a=>{let s=yu(r,a).split("/").join("/");return s.startsWith("../")?void 0:n.assets[s]};return{root:r,entry:o,async url(a){let s=o(a);if(!s)return;let l=Km(s,n.storage);if(l)return l;let c=i.get(s.sha256);if(c&&Date.now()-c.at<e0)return c.url;let{name:d,remote:m}=js(n.storage,s.remote),p=ep(d,t.env);if(!p)return;let h=await new Yi(m,p,{fetch:t.fetch}).presign(s.sha256,Jy);return i.set(s.sha256,{url:h,at:Date.now()}),h}}}f();Ln();var Mn=W.dirname(In(import.meta.url)),np=["import","meta","url"].join("."),t0=ao(import.meta.url),Tn="/@framefields/engine",op={framefields:"index.ts","framefields/effects":"effects/index.ts","framefields/audio":"audio/index.ts","framefields/signals":"signals/index.ts","framefields/fonts":"fonts/index.ts","framefields/components":"components/index.ts"},Vs={path:"path","path/posix":"path",url:"url",os:"os",fs:"fs","fs/promises":"fs-promises",module:"module"},ip=new Set(["sharp","skia-canvas","node-av","onnxruntime-node","@resvg/resvg-js","@napi-rs/webcodecs","@mediabunny/server","@mediabunny/mp3-encoder","webgpu","pino","pino-pretty","dotenv","esbuild","@framefields/renderer","framefields/renderer","framefields/preview"]),r0=`
720
720
  const stub = () => new Proxy(function () {}, {
721
721
  get: (_t, k) => (k === "__esModule" ? true : k === Symbol.toPrimitive ? () => "" : stub()),
722
722
  apply: () => stub(),
723
723
  construct: () => stub(),
724
724
  });
725
725
  module.exports = stub();
726
- `;async function Qy(e){let{build:t}=await import("./esbuild-DZUM7TEX.mjs"),r=G.resolve(Mn,".."),n=G.join(Mn,"shims"),i={player:G.join(Mn,"player.ts")};for(let[o,a]of Object.entries(np))i[lp(o)]=G.join(r,a);for(let o of new Set(Object.values(Vs)))i[`shims/${o}`]=G.join(n,`${o}.ts`);await he.promises.rm(e,{recursive:!0,force:!0}),await t({...up,entryPoints:i,outdir:e,outExtension:{".js":".mjs"},splitting:!0,minify:!0,conditions:["development","browser","import"],define:{"process.env.NODE_ENV":'"production"',global:"globalThis"},inject:[G.join(n,"process.ts")],plugins:[{name:"framefields-engine",setup(o){o.onResolve({filter:/^framefields-preview:renderers$/},()=>({path:r0()})),cp(o,a=>({path:G.join(n,`${a}.ts`)}))}}]})}async function ip(e){let{build:t}=await import("./esbuild-DZUM7TEX.mjs"),r=G.resolve(e.entry),n=s=>({path:`${Tn}/${s}.mjs`,external:!0}),i={modelsDir:e.modelsDir,ortBase:e.ortBase},o=await t({...up,entryPoints:["framefields-preview:entry"],write:!1,metafile:!0,sourcemap:"inline",plugins:[{name:"framefields-project",setup(s){s.onResolve({filter:/^framefields-preview:entry$/},()=>({path:"entry",namespace:"framefields-preview"})),s.onLoad({filter:/.*/,namespace:"framefields-preview"},()=>({contents:[`import { startAudioMixer, startPlayer } from ${JSON.stringify(`${Tn}/player.mjs`)};`,`import * as mod from ${JSON.stringify(r)};`,`if (typeof document === "undefined") startAudioMixer(mod, ${JSON.stringify(e.exportName)});`,`else startPlayer(mod, ${JSON.stringify(e.exportName)}, ${JSON.stringify(i)});`].join(`
727
- `),resolveDir:G.dirname(r),loader:"js"})),s.onResolve({filter:/^\/@framefields\/engine\//},u=>({path:u.path,external:!0})),s.onResolve({filter:/^framefields(\/|$)/},u=>np[u.path]?n(lp(u.path)):void 0),cp(s,u=>n(`shims/${u}`)),t0(s)}}]}),a=Object.keys(o.metafile?.inputs??{}).filter(s=>!s.includes(":")&&!s.includes("node_modules")).map(s=>G.resolve(s));return{code:o.outputFiles[0].text,inputs:a}}var Xi;function Jy(e){return[e,G.join(e,"..")].map(t=>G.join(t,"preview-engine")).find(t=>he.existsSync(G.join(t,"player.mjs")))}function op(){let e=Jy(Mn);return e?Promise.resolve(e):(Xi??=(async()=>{let t=G.join(io.tmpdir(),`framefields-preview-engine-${x.pid}`);return await Qy(t),t})(),Xi.catch(()=>{Xi=void 0}),Xi)}function ap(){return x.env.FRAMEFIELDS_MODELS_DIR?G.resolve(x.env.FRAMEFIELDS_MODELS_DIR):G.join(io.homedir(),".cache","framefields","models")}var e0="1.30.0";function sp(e){for(let t of[e,Mn])try{let r=ao(G.join(t,"noop.js")).resolve("onnxruntime-web"),n=G.dirname(r);return{base:`/@fs${n}/`,dir:n}}catch{}return{base:`https://cdn.jsdelivr.net/npm/onnxruntime-web@${e0}/dist/`}}var up={bundle:!0,format:"esm",platform:"browser",target:"es2022",mainFields:["browser","module","main"],logLevel:"silent"};function lp(e){return e==="framefields"?"framefields":e.slice(12)}function cp(e,t){e.onResolve({filter:/^(node:)?[a-z_/]+$/},r=>{let n=r.path.replace(/^node:/,"");if(Vs[n])return t(Vs[n]);if(r.path.startsWith("node:")||xu(n))return{path:n,namespace:"framefields-stub"}}),e.onResolve({filter:/.*/},r=>{let n=n0(r.path);if(n&&(rp.has(n)||rp.has(r.path)))return{path:r.path,namespace:"framefields-stub"}}),e.onLoad({filter:/.*/,namespace:"framefields-stub"},()=>({contents:Ky,loader:"js"}))}function t0(e){e.onLoad({filter:/\.[cm]?[jt]sx?$/},async t=>{if(t.path.includes(`${G.sep}node_modules${G.sep}`))return;let r=await he.promises.readFile(t.path,"utf8");if(r.includes(tp))return{contents:`const __framefieldsFileUrl = ${JSON.stringify(jn(t.path).href)};
728
- ${r.replaceAll(tp,"__framefieldsFileUrl")}`,loader:i0(t.path)}})}function r0(){let e=Zy.resolve("@framefields/renderer"),t=G.join(G.dirname(e),"..","src","generated","node-renderers.ts");if(!he.existsSync(t))throw new Error(`[framefields] node renderer list not found at ${t}`);return t}function n0(e){if(e.startsWith(".")||e.startsWith("/"))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function i0(e){return e.endsWith(".tsx")?"tsx":e.endsWith(".jsx")?"jsx":/\.[cm]?ts$/.test(e)?"ts":"js"}f();Ln();var Zi=class{constructor(t){this.dir=t;this.file=G.join(t,"notes.json")}dir;file;async list(){try{let t=JSON.parse(await he.promises.readFile(this.file,"utf8"));return Array.isArray(t)?t:[]}catch{return[]}}async add(t){let r=await this.list(),n=r.reduce((a,s)=>Math.max(a,s.id),0)+1,i={id:n,frame:Math.max(0,Math.round(Number(t.frame)||0)),time:An(Number(t.time)||0,3),x:An(qi(t.x),4),y:An(qi(t.y),4),...t.w!==void 0&&t.h!==void 0&&{w:An(qi(t.w),4),h:An(qi(t.h),4)},text:String(t.text??"").trim(),done:!1,created:new Date().toISOString()};await this.ensureDir();let o=/^data:image\/jpeg;base64,(.+)$/.exec(t.image??"");return o&&(i.image=G.join(this.dir,`note-${n}.jpg`),await he.promises.writeFile(i.image,Buffer.from(o[1],"base64"))),await this.save([...r,i]),i}async update(t,r){let n=await this.list(),i=n.find(o=>o.id===t);if(i)return typeof r.done=="boolean"&&(i.done=r.done),typeof r.text=="string"&&r.text.trim()&&(i.text=r.text.trim()),await this.save(n),i}async remove(t){let r=await this.list(),n=r.find(i=>i.id===t);if(n)return n.image&&await he.promises.rm(n.image,{force:!0}),await this.save(r.filter(i=>i!==n)),n}async save(t){await this.ensureDir();let r=`${this.file}.${x.pid}.tmp`;await he.promises.writeFile(r,`${JSON.stringify(t,null," ")}
729
- `),await he.promises.rename(r,this.file)}async ensureDir(){await he.promises.mkdir(this.dir,{recursive:!0});let t=G.join(G.dirname(this.dir),".gitignore");he.existsSync(t)||await he.promises.writeFile(t,`*
730
- `)}};function dp(e,t){let r=i=>`${Math.round(i*100)}%`,n=e.w!==void 0&&e.h!==void 0?`area ${r(e.x)},${r(e.y)} to ${r(e.x+e.w)},${r(e.y+e.h)}`:`spot ${r(e.x)},${r(e.y)}`;return`note ${e.id} at ${o0(e.frame,t)} (frame ${e.frame}), ${n}: ${e.text}`}function o0(e,t){let r=e/t,n=Math.floor(r/60);return`${n}:${(r-n*60).toFixed(2).padStart(5,"0")}`}function qi(e){let t=Number(e);return Number.isFinite(t)?Math.min(1,Math.max(0,t)):0}function An(e,t){return Number(e.toFixed(t))}f();var mp=`<!doctype html>
726
+ `;async function n0(e){let{build:t}=await import("./esbuild-DZUM7TEX.mjs"),r=W.resolve(Mn,".."),n=W.join(Mn,"shims"),i={player:W.join(Mn,"player.ts")};for(let[o,a]of Object.entries(op))i[dp(o)]=W.join(r,a);for(let o of new Set(Object.values(Vs)))i[`shims/${o}`]=W.join(n,`${o}.ts`);await he.promises.rm(e,{recursive:!0,force:!0}),await t({...cp,entryPoints:i,outdir:e,outExtension:{".js":".mjs"},splitting:!0,minify:!0,conditions:["development","browser","import"],define:{"process.env.NODE_ENV":'"production"',global:"globalThis"},inject:[W.join(n,"process.ts")],plugins:[{name:"framefields-engine",setup(o){o.onResolve({filter:/^framefields-preview:renderers$/},()=>({path:s0()})),mp(o,a=>({path:W.join(n,`${a}.ts`)}))}}]})}async function ap(e){let{build:t}=await import("./esbuild-DZUM7TEX.mjs"),r=W.resolve(e.entry),n=s=>({path:`${Tn}/${s}.mjs`,external:!0}),i={modelsDir:e.modelsDir,ortBase:e.ortBase},o=await t({...cp,entryPoints:["framefields-preview:entry"],write:!1,metafile:!0,sourcemap:"inline",plugins:[{name:"framefields-project",setup(s){s.onResolve({filter:/^framefields-preview:entry$/},()=>({path:"entry",namespace:"framefields-preview"})),s.onLoad({filter:/.*/,namespace:"framefields-preview"},()=>({contents:[`import { startAudioMixer, startPlayer } from ${JSON.stringify(`${Tn}/player.mjs`)};`,`import * as mod from ${JSON.stringify(r)};`,`if (typeof document === "undefined") startAudioMixer(mod, ${JSON.stringify(e.exportName)});`,`else startPlayer(mod, ${JSON.stringify(e.exportName)}, ${JSON.stringify(i)});`].join(`
727
+ `),resolveDir:W.dirname(r),loader:"js"})),s.onResolve({filter:/^\/@framefields\/engine\//},l=>({path:l.path,external:!0})),s.onResolve({filter:/^framefields(\/|$)/},l=>op[l.path]?n(dp(l.path)):void 0),mp(s,l=>n(`shims/${l}`)),a0(s)}}]}),a=Object.keys(o.metafile?.inputs??{}).filter(s=>!s.includes(":")&&!s.includes("node_modules")).map(s=>W.resolve(s));return{code:o.outputFiles[0].text,inputs:a}}var Xi;function i0(e){return[e,W.join(e,"..")].map(t=>W.join(t,"preview-engine")).find(t=>he.existsSync(W.join(t,"player.mjs")))}function sp(){let e=i0(Mn);return e?Promise.resolve(e):(Xi??=(async()=>{let t=W.join(io.tmpdir(),`framefields-preview-engine-${x.pid}`);return await n0(t),t})(),Xi.catch(()=>{Xi=void 0}),Xi)}function up(){return x.env.FRAMEFIELDS_MODELS_DIR?W.resolve(x.env.FRAMEFIELDS_MODELS_DIR):W.join(io.homedir(),".cache","framefields","models")}var o0="1.30.0";function lp(e){for(let t of[e,Mn])try{let r=ao(W.join(t,"noop.js")).resolve("onnxruntime-web"),n=W.dirname(r);return{base:`/@fs${n}/`,dir:n}}catch{}return{base:`https://cdn.jsdelivr.net/npm/onnxruntime-web@${o0}/dist/`}}var cp={bundle:!0,format:"esm",platform:"browser",target:"es2022",mainFields:["browser","module","main"],logLevel:"silent"};function dp(e){return e==="framefields"?"framefields":e.slice(12)}function mp(e,t){e.onResolve({filter:/^(node:)?[a-z_/]+$/},r=>{let n=r.path.replace(/^node:/,"");if(Vs[n])return t(Vs[n]);if(r.path.startsWith("node:")||xu(n))return{path:n,namespace:"framefields-stub"}}),e.onResolve({filter:/.*/},r=>{let n=u0(r.path);if(n&&(ip.has(n)||ip.has(r.path)))return{path:r.path,namespace:"framefields-stub"}}),e.onLoad({filter:/.*/,namespace:"framefields-stub"},()=>({contents:r0,loader:"js"}))}function a0(e){e.onLoad({filter:/\.[cm]?[jt]sx?$/},async t=>{if(t.path.includes(`${W.sep}node_modules${W.sep}`))return;let r=await he.promises.readFile(t.path,"utf8");if(r.includes(np))return{contents:`const __framefieldsFileUrl = ${JSON.stringify(jn(t.path).href)};
728
+ ${r.replaceAll(np,"__framefieldsFileUrl")}`,loader:l0(t.path)}})}function s0(){let e=t0.resolve("@framefields/renderer"),t=W.join(W.dirname(e),"..","src","generated","node-renderers.ts");if(!he.existsSync(t))throw new Error(`[framefields] node renderer list not found at ${t}`);return t}function u0(e){if(e.startsWith(".")||e.startsWith("/"))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function l0(e){return e.endsWith(".tsx")?"tsx":e.endsWith(".jsx")?"jsx":/\.[cm]?ts$/.test(e)?"ts":"js"}f();Ln();var Zi=class{constructor(t){this.dir=t;this.file=W.join(t,"notes.json")}dir;file;async list(){try{let t=JSON.parse(await he.promises.readFile(this.file,"utf8"));return Array.isArray(t)?t:[]}catch{return[]}}async add(t){let r=await this.list(),n=r.reduce((a,s)=>Math.max(a,s.id),0)+1,i={id:n,frame:Math.max(0,Math.round(Number(t.frame)||0)),time:An(Number(t.time)||0,3),x:An(qi(t.x),4),y:An(qi(t.y),4),...t.w!==void 0&&t.h!==void 0&&{w:An(qi(t.w),4),h:An(qi(t.h),4)},text:String(t.text??"").trim(),done:!1,created:new Date().toISOString()};await this.ensureDir();let o=/^data:image\/jpeg;base64,(.+)$/.exec(t.image??"");return o&&(i.image=W.join(this.dir,`note-${n}.jpg`),await he.promises.writeFile(i.image,Buffer.from(o[1],"base64"))),await this.save([...r,i]),i}async update(t,r){let n=await this.list(),i=n.find(o=>o.id===t);if(i)return typeof r.done=="boolean"&&(i.done=r.done),typeof r.text=="string"&&r.text.trim()&&(i.text=r.text.trim()),await this.save(n),i}async remove(t){let r=await this.list(),n=r.find(i=>i.id===t);if(n)return n.image&&await he.promises.rm(n.image,{force:!0}),await this.save(r.filter(i=>i!==n)),n}async save(t){await this.ensureDir();let r=`${this.file}.${x.pid}.tmp`;await he.promises.writeFile(r,`${JSON.stringify(t,null," ")}
729
+ `),await he.promises.rename(r,this.file)}async ensureDir(){await he.promises.mkdir(this.dir,{recursive:!0});let t=W.join(W.dirname(this.dir),".gitignore");he.existsSync(t)||await he.promises.writeFile(t,`*
730
+ `)}};function pp(e,t){let r=i=>`${Math.round(i*100)}%`,n=e.w!==void 0&&e.h!==void 0?`area ${r(e.x)},${r(e.y)} to ${r(e.x+e.w)},${r(e.y+e.h)}`:`spot ${r(e.x)},${r(e.y)}`;return`note ${e.id} at ${c0(e.frame,t)} (frame ${e.frame}), ${n}: ${e.text}`}function c0(e,t){let r=e/t,n=Math.floor(r/60);return`${n}:${(r-n*60).toFixed(2).padStart(5,"0")}`}function qi(e){let t=Number(e);return Number.isFinite(t)?Math.min(1,Math.max(0,t)):0}function An(e,t){return Number(e.toFixed(t))}f();var fp=`<!doctype html>
731
731
  <html lang="en">
732
732
  <head>
733
733
  <meta charset="utf-8">
@@ -2206,17 +2206,17 @@ ${r.replaceAll(tp,"__framefieldsFileUrl")}`,loader:i0(t.path)}})}function r0(){l
2206
2206
  <script type="module" src="/@framefields/player.js"><\/script>
2207
2207
  </body>
2208
2208
  </html>
2209
- `;f();function pp(e,t,r){let n=new Array(r).fill(0);if(e.length===0)return n;let i=e.length/r;for(let o=0;o<r;o++){let a=Math.floor(o*i),s=Math.min(e.length,Math.floor((o+1)*i)),u=0;for(let c=a;c<s;c++){let d=Math.max(Math.abs(e[c]??0),Math.abs(t[c]??0));d>u&&(u=d)}n[o]=Math.min(1,u)}return n}var fp=1200,hp=.001;var yp="x-framefields-preview",a0="/@framefields/player.js";async function s0(e,t={}){let r=e.entry instanceof URL||String(e.entry).startsWith("file:")?In(e.entry):G.resolve(String(e.entry)),n=e.export??"default",i=ap(),o=sp(G.dirname(r)),a=[...t.root===void 0?[l0(G.dirname(r))]:Array.isArray(t.root)?t.root:[t.root],i,o.dir].filter(E=>!!E).map(E=>G.resolve(E)),s=new Set,u=t.idleCloseMs??5e3,c,d=t.title??"framefields preview",m=(0,Ki.randomUUID)(),p=t.log===!1?()=>{}:t.log??(E=>console.error(E)),h=E=>p(`[framefields preview] ${E}`),g=new Set,b=!1,y=t.notesDir===!1?void 0:new Zi(G.resolve(t.notesDir??G.join(x.cwd(),".framefields","preview-notes"))),v=Promise.resolve(),P=await Us(G.dirname(r)).catch(E=>{h(`pinned assets are off: ${E.message}`)});P&&Jt.setMissingMediaResolver(E=>P.url(E));let A=new Set,w=await u0(r,n),T=await f0(w,d,m,y?.dir??null),S,C=()=>{if(!S){let E=ip({entry:r,exportName:n,modelsDir:i,ortBase:o.base}).then(I=>I.code);S=E,E.catch(I=>{h(`could not build ${G.relative(x.cwd(),r)}:
2210
- ${d0(I)}`),S===E&&(S=void 0)})}return S},O=op();O.catch(()=>{});let z={state:t.audio===!1?"none":"browser"},W;function _(E,I){for(let Y of s)Y.write(`event: ${E}
2211
- data: ${JSON.stringify(I)}
2209
+ `;f();function hp(e,t,r){let n=new Array(r).fill(0);if(e.length===0)return n;let i=e.length/r;for(let o=0;o<r;o++){let a=Math.floor(o*i),s=Math.min(e.length,Math.floor((o+1)*i)),l=0;for(let c=a;c<s;c++){let d=Math.max(Math.abs(e[c]??0),Math.abs(t[c]??0));d>l&&(l=d)}n[o]=Math.min(1,l)}return n}var gp=1200,bp=.001;var wp="x-framefields-preview",d0="/@framefields/player.js";async function m0(e,t={}){let r=e.entry instanceof URL||String(e.entry).startsWith("file:")?In(e.entry):W.resolve(String(e.entry)),n=e.export??"default",i=up(),o=lp(W.dirname(r)),a=[...t.root===void 0?[f0(W.dirname(r))]:Array.isArray(t.root)?t.root:[t.root],i,o.dir].filter(B=>!!B).map(B=>W.resolve(B)),s=new Set,l=t.idleCloseMs??5e3,c,d=t.title??"framefields preview",m=(0,Ki.randomUUID)(),p=t.log===!1?()=>{}:t.log??(B=>console.error(B)),h=B=>p(`[framefields preview] ${B}`),b=new Set,g=!1,y=t.notesDir===!1?void 0:new Zi(W.resolve(t.notesDir??W.join(x.cwd(),".framefields","preview-notes"))),k=Promise.resolve(),S=await Us(W.dirname(r)).catch(B=>{h(`pinned assets are off: ${B.message}`)});S&&Jt.setMissingMediaResolver(B=>S.url(B));let A=new Set,w=await p0(r,n),T=await x0(w,d,m,y?.dir??null),v,E=()=>{if(!v){let B=ap({entry:r,exportName:n,modelsDir:i,ortBase:o.base}).then(j=>j.code);v=B,B.catch(j=>{h(`could not build ${W.relative(x.cwd(),r)}:
2210
+ ${g0(j)}`),v===B&&(v=void 0)})}return v},C=sp();C.catch(()=>{});let N={state:t.audio===!1?"none":"browser"},G;function _(B,j){for(let Y of s)Y.write(`event: ${B}
2211
+ data: ${JSON.stringify(j)}
2212
2212
 
2213
- `)}function L(E){z=E,_("audio",z)}function k(){if(z.state!=="mixing")return;if(!w.toVirtualMediaAsync&&!w.toVirtualMedia){L({state:"none"});return}let E=t.renderer??new pe.HeadlessMediaRenderer;(async()=>{let I=w.toVirtualMediaAsync?await w.toVirtualMediaAsync():w.toVirtualMedia();return await w.prepareMediaTime?.(),E.renderAudio(I,{fps:T.fps})})().then(({channels:I,sampleRate:Y})=>{let ae=I[0]??new Float32Array(0),D=I[1]??ae,F=pp(ae,D,fp);if(ae.length===0||Math.max(...F)<hp){L({state:"none"});return}W=wo([ae,D],{sampleRate:Y}),L({state:"ready",durationSec:ae.length/Y,peaks:F.map($=>Math.round($*1e3)/1e3)})},I=>{L({state:"error",error:I instanceof Error?I.message:String(I)})})}let M,H=new Promise(E=>{M=E}),q;function V(E="closed"){return q??=new Promise(I=>{clearTimeout(c),E==="idle"&&h("stopped: its tab was closed"),E==="replaced"&&h("stopped: a newer preview took over");for(let Y of s)Y.end();s.clear(),P&&Jt.setMissingMediaResolver(),j.close(()=>{I(),M(E)}),j.closeAllConnections()}),q}let j=Ys.default.createServer(async(E,I)=>{let Y=new URL(E.url??"/","http://localhost");I.setHeader("cross-origin-opener-policy","same-origin"),I.setHeader("cross-origin-embedder-policy","credentialless");try{if(E.method==="GET"&&Y.pathname==="/"){I.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}),I.end(mp);return}if(E.method==="GET"&&Y.pathname==="/meta"){Je(I,200,{...T,audio:z});return}if(E.method==="GET"&&Y.pathname.startsWith(`${Tn}/`)){let D=await O,F=G.resolve(D,`.${Y.pathname.slice(Tn.length)}`);if(Gs(D,F)&&await Ws(F)){await Hs(E,I,F);return}Je(I,404,{error:"not found"});return}if(E.method==="GET"&&Y.pathname===a0){let D;try{await O,D=await C()}catch(F){let $=F instanceof Error?F.message:String(F);D=`throw new Error(${JSON.stringify(`Could not build the preview:
2214
- ${$}`)});`}I.writeHead(200,{"content-type":"text/javascript; charset=utf-8","cache-control":"no-store"}),I.end(D);return}if(E.method==="GET"&&Y.pathname==="/@framefields/stat"){let D=G.resolve(Y.searchParams.get("path")??""),F=-1;a.some($=>Gs($,D))&&(F=await he.promises.stat(D).then($=>$.isFile()?$.size:-1,()=>P?.entry(D)?.size??-1)),Je(I,200,{exists:F>=0,size:Math.max(0,F)});return}if(E.method==="GET"&&Y.pathname==="/events"){I.writeHead(200,{"content-type":"text/event-stream","cache-control":"no-store",connection:"keep-alive"}),I.write(`retry: 1000
2215
- `),I.write(`event: hello
2213
+ `)}function I(B){N=B,_("audio",N)}function P(){if(N.state!=="mixing")return;if(!w.toVirtualMediaAsync&&!w.toVirtualMedia){I({state:"none"});return}let B=t.renderer??new pe.HeadlessMediaRenderer;(async()=>{let j=w.toVirtualMediaAsync?await w.toVirtualMediaAsync():w.toVirtualMedia();return await w.prepareMediaTime?.(),B.renderAudio(j,{fps:T.fps})})().then(({channels:j,sampleRate:Y})=>{let se=j[0]??new Float32Array(0),D=j[1]??se,F=hp(se,D,gp);if(se.length===0||Math.max(...F)<bp){I({state:"none"});return}G=wo([se,D],{sampleRate:Y}),I({state:"ready",durationSec:se.length/Y,peaks:F.map($=>Math.round($*1e3)/1e3)})},j=>{I({state:"error",error:j instanceof Error?j.message:String(j)})})}let M,H=new Promise(B=>{M=B}),q;function V(B="closed"){return q??=new Promise(j=>{clearTimeout(c),B==="idle"&&h("stopped: its tab was closed"),B==="replaced"&&h("stopped: a newer preview took over");for(let Y of s)Y.end();s.clear(),S&&Jt.setMissingMediaResolver(),z.close(()=>{j(),M(B)}),z.closeAllConnections()}),q}let z=Ys.default.createServer(async(B,j)=>{let Y=new URL(B.url??"/","http://localhost");j.setHeader("cross-origin-opener-policy","same-origin"),j.setHeader("cross-origin-embedder-policy","credentialless");try{if(B.method==="GET"&&Y.pathname==="/"){j.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}),j.end(fp);return}if(B.method==="GET"&&Y.pathname==="/meta"){et(j,200,{...T,audio:N});return}if(B.method==="GET"&&Y.pathname.startsWith(`${Tn}/`)){let D=await C,F=W.resolve(D,`.${Y.pathname.slice(Tn.length)}`);if(Gs(D,F)&&await Ws(F)){await Hs(B,j,F);return}et(j,404,{error:"not found"});return}if(B.method==="GET"&&Y.pathname===d0){let D;try{await C,D=await E()}catch(F){let $=F instanceof Error?F.message:String(F);D=`throw new Error(${JSON.stringify(`Could not build the preview:
2214
+ ${$}`)});`}j.writeHead(200,{"content-type":"text/javascript; charset=utf-8","cache-control":"no-store"}),j.end(D);return}if(B.method==="GET"&&Y.pathname==="/@framefields/stat"){let D=W.resolve(Y.searchParams.get("path")??""),F=-1;a.some($=>Gs($,D))&&(F=await he.promises.stat(D).then($=>$.isFile()?$.size:-1,()=>S?.entry(D)?.size??-1)),et(j,200,{exists:F>=0,size:Math.max(0,F)});return}if(B.method==="GET"&&Y.pathname==="/events"){j.writeHead(200,{"content-type":"text/event-stream","cache-control":"no-store",connection:"keep-alive"}),j.write(`retry: 1000
2215
+ `),j.write(`event: hello
2216
2216
  data: ${JSON.stringify({session:T.session})}
2217
2217
 
2218
- `),s.add(I),clearTimeout(c),b||(b=!0,h(u===!1?"page opened":`page opened; the server stops ${Number((u/1e3).toFixed(1))} s after its last tab closes`)),K?.(),E.on("close",()=>{s.delete(I),s.size===0&&u!==!1&&!q&&(c=setTimeout(()=>{s.size===0&&V("idle")},u))});return}if(E.method==="POST"&&Y.pathname==="/takeover"&&E.headers[yp]==="1"){Je(I,200,{ok:!0}),setImmediate(()=>{V("replaced")});return}if(E.method==="POST"&&Y.pathname==="/@framefields/log"&&E.headers["content-type"]==="application/json"){let D=await gp(E,16384),{message:F,level:$}=JSON.parse(D),N=String(F??"").trim();N&&!g.has(N)&&g.size<200&&(g.add(N),h(`${$==="warning"?"warning":"error"} in the page: ${N}`)),I.writeHead(204).end();return}if(y&&Y.pathname==="/@framefields/notes"){if(E.method==="GET"){Je(I,200,await y.list());return}if(E.method==="POST"&&E.headers["content-type"]==="application/json"){let D=JSON.parse(await gp(E,16777216)),F=v.then(()=>c0(y,D,T.fps,h));v=F.catch(()=>{});let $=await F;_("notes",await y.list()),Je(I,$?200:404,$??{error:"no such note"});return}}if(E.method==="POST"&&Y.pathname==="/audio/mix"){(z.state==="browser"||z.state==="error")&&(z={state:"mixing"},k()),Je(I,202,z);return}if(E.method==="GET"&&Y.pathname==="/audio"){if(z.state!=="ready"||!W){Je(I,404,{error:`audio is ${z.state}`});return}I.writeHead(200,{"content-type":"audio/wav","content-length":W.length,"cache-control":"no-store"}),I.end(W);return}let ae=/^\/assets\/fonts\/([^/]+)$/.exec(Y.pathname);if(ae&&(E.method==="GET"||E.method==="HEAD")){let D=G.join(x.cwd(),"assets","fonts",decodeURIComponent(ae[1]));if(await Ws(D)){await Hs(E,I,D);return}}if(E.method==="GET"||E.method==="HEAD"){let D=G.resolve(decodeURIComponent(Y.pathname.replace(/^\/@fs(?=\/)/,"")));if(a.some(F=>Gs(F,D))&&await Ws(D)){await Hs(E,I,D);return}if(P&&await p0(I,P,D,A,h))return}Je(I,404,{error:"not found"})}catch(ae){I.headersSent?I.end():Je(I,500,{error:ae instanceof Error?ae.message:String(ae)})}}),K,re=t.host??"127.0.0.1",de=t.port??h0(),oe=E=>new Promise((I,Y)=>{let ae=F=>{j.off("listening",D),Y(F)},D=()=>{j.off("error",ae),I()};j.once("error",ae),j.once("listening",D),j.listen(E,re)});try{await oe(de)}catch(E){if(E.code!=="EADDRINUSE")throw E;if(await g0(re,de))await oe(de).catch(()=>oe(0));else if(t.port===void 0)await oe(0);else throw E}let{port:xe}=j.address(),ke=`http://${re.includes(":")?`[${re}]`:re}:${xe}/`;if(C().catch(()=>{}),t.open===!0){let E=await new Promise(I=>{let Y=setTimeout(()=>I(!1),2e3);K=()=>{clearTimeout(Y),I(!0)},s.size>0&&K()});K=void 0,E||b0(ke)}return{url:ke,closed:H,close:()=>V()}}async function u0(e,t){let n=(await import(jn(e).href))[t];if(n===void 0)throw new Error(`[framefields] ${e} has no export named "${t}" to preview.`);return typeof n=="function"?await n():n}function l0(e){let t;for(let r=e;;r=G.dirname(r)){if(he.existsSync(G.join(r,".git")))return r;if(!t&&he.existsSync(G.join(r,"package.json"))&&(t=r),G.dirname(r)===r)return t??e}}async function c0(e,t,r,n){if(t.op==="add"&&t.note&&String(t.note.text).trim()){let o=await e.add(t.note),a=[o.image&&`frame with the spot marked: ${o.image}`,`all notes: ${e.file}`];return n(`${dp(o,r)}
2219
- ${a.filter(Boolean).join(" \xB7 ")}`),o}let i=Number(t.id);if(t.op==="update"){let o=await e.update(i,t);return o&&typeof t.done=="boolean"&&n(`note ${i} marked ${o.done?"done":"open"}`),o}if(t.op==="remove"){let o=await e.remove(i);return o&&n(`note ${i} deleted`),o}}function d0(e){return e instanceof Error?e.message:String(e)}function gp(e,t){return new Promise((r,n)=>{let i="";e.setEncoding("utf8"),e.on("data",o=>{i+=o,i.length>t&&(n(new Error("request body too large")),e.destroy())}),e.on("end",()=>r(i)),e.on("error",n)})}function Gs(e,t){let r=G.relative(e,t);return!!r&&!r.startsWith("..")&&!G.isAbsolute(r)}async function Ws(e){try{return(await he.promises.stat(e)).isFile()}catch{return!1}}var m0={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".webm":"video/webm",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".ttf":"font/ttf",".otf":"font/otf",".woff":"font/woff",".woff2":"font/woff2",".json":"application/json",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".wasm":"application/wasm",".onnx":"application/octet-stream",".srt":"text/plain; charset=utf-8",".txt":"text/plain; charset=utf-8"};async function p0(e,t,r,n,i){if(!t.entry(r))return!1;let o=await t.url(r);if(o)return e.writeHead(302,{location:o,"cache-control":"no-store"}),e.end(),!0;let a=G.relative(t.root,r);return n.has(a)||(n.add(a),i(`${a} is pinned on a private remote and there are no keys here: set its FRAMEFIELDS_STORAGE_* keys, give the remote a publicUrl, or \`npx framefields assets pull\``)),!1}async function Hs(e,t,r){let{size:n}=await he.promises.stat(r),i=m0[G.extname(r).toLowerCase()]??"application/octet-stream",o=/^bytes=(\d*)-(\d*)$/.exec(e.headers.range??""),a=0,s=n-1;if(o&&(o[1]||o[2])&&(o[1]?(a=Number(o[1]),o[2]&&(s=Math.min(s,Number(o[2])))):a=Math.max(0,n-Number(o[2])),a>s||a>=n)){t.writeHead(416,{"content-range":`bytes */${n}`}),t.end();return}if(t.writeHead(o?206:200,{"content-type":i,"content-length":s-a+1,"accept-ranges":"bytes","cache-control":"no-cache",...o&&{"content-range":`bytes ${a}-${s}/${n}`}}),e.method==="HEAD"){t.end();return}he.createReadStream(r,{start:a,end:s}).pipe(t)}async function f0(e,t,r,n){let i=e.fps??24,o=e.durationMs??await e.computeDuration?.()??5e3;return{session:r,notesDir:n,title:t,fps:i,frameCount:Math.max(1,Math.round(o/1e3*i)),width:e.width??1920,height:e.height??1080}}function h0(){return 41e3+(0,Ki.createHash)("sha1").update(x.cwd()).digest().readUInt16BE(0)%900}async function g0(e,t){let r=await new Promise(n=>{let i=Ys.default.request({host:e,port:t,method:"POST",path:"/takeover",agent:!1,headers:{[yp]:"1"},timeout:1500},o=>{o.resume(),n(o.statusCode===200)});i.on("timeout",()=>i.destroy()),i.on("error",()=>n(!1)),i.end()});return r&&await new Promise(n=>setTimeout(n,150)),r}function Je(e,t,r){e.writeHead(t,{"content-type":"application/json","cache-control":"no-store"}),e.end(JSON.stringify(r))}function b0(e){let[t,r]=x.platform==="darwin"?["open",[e]]:x.platform==="win32"?["cmd",["/c","start","",e]]:["xdg-open",[e]];try{(0,bp.spawn)(t,r,{stdio:"ignore",detached:!0}).on("error",()=>{}).unref()}catch{}}function Xs(e,t){return e&&(t&&!e.source&&Object.defineProperty(e,"source",{value:t,enumerable:!0,writable:!0,configurable:!0}),typeof e.section!="function"&&Object.defineProperty(e,"section",{value:(r,n)=>{if(typeof r=="object"&&r!==null&&!("kind"in r)&&!("inputHandleId"in r)&&!("src"in r)){let o=r.source??e.source??t;return B.section(o,e,r)}let i=r??e.source??t;return B.section(i,e,n)},enumerable:!1,writable:!0,configurable:!0}),typeof e.blurEffect!="function"&&Object.defineProperty(e,"blurEffect",{value:r=>new Dt({track:e,...r}),enumerable:!1,writable:!0,configurable:!0}),typeof e.isolate!="function"&&Object.defineProperty(e,"isolate",{value:(r,n)=>B.section(r,e,n),enumerable:!1,writable:!0,configurable:!0}),e)}var x0=Lr.attach;Lr.attach=function(e,t,r){let n=x0.call(this,e,t,r);if(n?.objects){let i=e,o=n.objects.get.bind(n.objects);n.objects.get=s=>Xs(o(s),i);let a=n.objects.byCategory.bind(n.objects);n.objects.byCategory=(s,u)=>Xs(a(s,u),i),n.objects.primary&&Xs(n.objects.primary,i)}return n};var xp=class e{virtualMedia;constructor(t,r="Video"){this.virtualMedia=du(t,r)}static video(t,r){let n=new e(t,"Video");return r&&Object.assign(n.virtualMedia.metadata,r),n}static image(t,r){let n=new e(t,"Image");return r&&Object.assign(n.virtualMedia.metadata,r),n}static lottie(t,r){let n=new e(t,"Lottie");return r&&Object.assign(n.virtualMedia.metadata,r),n}static audio(t,r){let n=new e(t,"Audio");return r&&Object.assign(n.virtualMedia.metadata,r),n}apply(t,r={}){let n;t instanceof w0||typeof t=="object"&&t!==null&&"op"in t?n=t.toOperation():n={op:t,...r};let i=mu(this.virtualMedia,{...n,dataType:this.virtualMedia.operation.dataType});return new e(i)}toVirtualMedia(){return this.virtualMedia}async renderFrame(t={}){return(t.renderer??new pe.HeadlessMediaRenderer).renderFrame(this.virtualMedia,t)}get fps(){return this.virtualMedia.metadata?.fps??void 0}get durationMs(){return this.virtualMedia.metadata?.durationMs??void 0}get width(){return this.virtualMedia.metadata?.width??void 0}get height(){return this.virtualMedia.metadata?.height??void 0}async renderFrameGrid(t={}){return yn(this,t)}async renderVideo(t={},r={}){let n=typeof t=="string"?{...r,outputPath:t}:t,o=await(n.renderer??new pe.HeadlessMediaRenderer).renderVideo(this.virtualMedia,n);return Sp(o,n.outputPath)}};async function Sp(e,t){if(!t)return e;let r=G.resolve(t);return await Fr.mkdir(G.dirname(r),{recursive:!0}),await Fr.copyFile(e.filePath,r),await e.cleanup(),{...e,filePath:r,cleanup:async()=>{}}}var wp=class e{width;height;fps;durationMs;backgroundColor;antialias3d;fonts;children=[];audioTracks=[];signals={};_frameHooks=[];_prepareHooks=[];_clipVision=new Map;_linking=!1;_mediaSignals;_visionConfig;_visionBundle;_effects=[];apply(t){return t instanceof ht?(this.withVision(t),this):(this._effects.push(t),this)}withVision(t={}){this._visionBundle??=new Br({width:this.width,height:this.height,fps:this.fps});let r=t instanceof ht?t.config:t;return this._visionConfig={...r,visionBundle:this._visionBundle},this._visionBundle}vision(t,r={}){let n=typeof t=="string"?t:t.src??t.inputHandleId;if(typeof t!="string"){let a=this.toVirtualMedia({resolveMediaSignal:this.mediaSignalResolver(!0)}),s=_n(a.children).find(u=>u.operation.id===t.id);if(!s)throw new Error("Add the media layer to the composition before calling comp.vision(layer)");r={startFrame:s.operation.startFrame??t.startFrame,trimStartSec:t.trimStartSec,timeRemap:s.operation.timeRemap,durationFrames:t.durationFrames,...r}}let i=`${n}\0${JSON.stringify({...r,timeRemap:Pr(r.timeRemap)})}`,o=this._clipVision.get(i);return o||(o=new gn(n,this.fps,r),this._clipVision.set(i,o)),o}async prepareVision(t){this.linkClipLayers(),await Promise.all([...this._clipVision.values()].map(r=>r.ready(0,t)))}linkClipLayers(){let t,r=n=>{if(!n||typeof n!="object")return;let i=n;if(i.kind==="media"&&i.dataType==="Video"&&typeof i.inputHandleId=="string"&&i.vision instanceof ht&&!(ho in i.vision)){t??=new Map(_n(this.toVirtualMedia().children).map(s=>{let u=s.operation;return[u.id,u]}));let o=t.get(i.id),a=this.clipForLayer(i.src??i.inputHandleId,i.vision,{trimStartSec:i.trimStartSec,startFrame:o?.startFrame??i.startFrame,timeRemap:o?.timeRemap});a&&(i.vision.mode!=="skeleton"&&i.vision.mode!=="depth"&&a.keepSubjects(),Object.defineProperty(i.vision,ho,{value:a,enumerable:!1,configurable:!0}))}if(Array.isArray(i.children))for(let o of i.children)r(o);r(i.matte?.node),r(i.relief?.node)};for(let n of this.children)r(n)}clipForLayer(t,r,n){let i=r.mode??"passthrough";if(i==="depth")return this.depthClip(t,n);let o=i==="skeleton";if(!(i!=="matte"&&i!=="mask"&&i!=="crop"&&!o)&&!(r.classes!==void 0||r.enableMatte===!0||r.visionBundle!==void 0||!o&&(r.matteSource==="selfie"||r.keyBackground===!0||r.enablePose===!0||(r.maskThreshold??.5)!==.5||r.featherRadius!==void 0)))for(let a of this._clipVision.values()){let s=a.options;if(a.source===t&&a.startFrame===(n.startFrame??0)&&a.trimStartSec===(n.trimStartSec??0)&&Pr(s.timeRemap)===Pr(n.timeRemap)&&(s.variant??"s")===(r.variant??"s")&&(s.confidence??.3)===(r.confidence??.3)){if(o&&!a.tracksPose){if(a.exact)throw new Error("A skeleton layer of a prompted comp.vision clip needs `pose: true` on that clip.");continue}return a}}}depthClip(t,r){for(let n of this._clipVision.values())if(n.tracksDepth&&n.source===t&&n.startFrame===(r.startFrame??0)&&n.trimStartSec===(r.trimStartSec??0)&&Pr(n.options.timeRemap)===Pr(r.timeRemap))return n;return this.vision(t,{depth:!0,...r.startFrame!==void 0&&{startFrame:r.startFrame},...r.trimStartSec!==void 0&&{trimStartSec:r.trimStartSec},...r.timeRemap!==void 0&&{timeRemap:r.timeRemap}})}async analyzeVisionSequence(t,r={}){let n=r.fps??this.fps,i=this.durationMs??await this.computeDuration(),o=r.totalFrames??Math.max(1,Math.round(i/1e3*n)),a=tr.create({modelsDir:r.modelsDir,baseUrl:r.baseUrl,...r.confidence!==void 0?{confidence:r.confidence}:{},...r.variant!==void 0?{variant:r.variant}:{}}),s=Er.getVideo(t,!0);async function*u(){for(let c=0;c<o;c++){let d=await s.getFrame(c/n);d?.buffer&&d.width>0&&d.height>0&&(yield{data:d.buffer,width:d.width,height:d.height})}}try{return await po(u(),{runner:a,source:t,fps:n,...r.tasks!==void 0?{tasks:r.tasks}:{},...r.categories!==void 0?{categories:r.categories}:{},...r.pathStride!==void 0?{pathStride:r.pathStride}:{},...r.includeMasks!==void 0?{includeMasks:r.includeMasks}:{},...r.iouThreshold!==void 0?{iouThreshold:r.iouThreshold}:{}})}finally{a.close(),s.destroy()}}onRequestFrame(t){return this._frameHooks.push(t),this}onPrepareFrame(t){return this._prepareHooks.push(t),this}notifyFrame(t){let r=this._mediaSignals?.framesBefore(t.frame)??[];return r.length===0?this.runFrame(t):(async()=>{for(let n of r)await this.runFrame(Ss(t,n));await this.runFrame(t)})()}runFrame(t){for(let n of this._frameHooks)n(t);let r=this._mediaSignals;if(r?.advance(t.frame),this.linkClipLayers(),this._clipVision.size===0&&this._prepareHooks.length===0){r?.reach(t.frame);return}return(async()=>{await this.prepareVision(t.frame);for(let n of this._prepareHooks)await n(t);r?.reach(t.frame)})()}async prepareMediaTime(){let t=this.durationMs??await this.computeDuration(),r=Math.round(t/1e3*this.fps)-1;!this._mediaSignals?.pending||r<0||await this.notifyFrame(Ss({frame:0,fps:this.fps,time:0,duration:t/1e3,durationMs:t,progress:0,deltaTime:1/this.fps},r))}mediaSignalResolver(t=this.hasFrameHooks(),r=this.durationMs,n=this.signals){return this._mediaSignals??=new Li(this.fps),this._mediaSignals.resolver({live:t,compositionDurationFrames:Math.round((r??0)/1e3*this.fps),signals:n})}hasFrameHooks(){return this._frameHooks.length>0||this._prepareHooks.length>0||this._clipVision.size>0}constructor(t){this.width=t.width,this.height=t.height,this.fps=t.fps??60,this.durationMs=t.durationMs??(t.durationFrames!==void 0?t.durationFrames/this.fps*1e3:void 0),this.backgroundColor=t.backgroundColor??"#000000",this.antialias3d=t.antialias3d,this.fonts=t.fonts??[],this.signals=t.signals??{}}static create(t){return new e(t)}addSignal(t,r){return this.signals[t]=r,this}add(t,...r){if(t instanceof ar)this.children.push(t.toNode());else if(t instanceof Lr)this.children.push(t.toNode());else{if(t&&typeof t=="object"&&"node"in t)return this.add(t.node,...r),this;if(Array.isArray(t))for(let n of t)this.add(n);else{let n=t,i=r[0];if(i&&!(i instanceof ar)&&!Array.isArray(i)&&(i instanceof Q||"tracks"in i))return n.animation=i instanceof Q?i.toSpec():i,this.children.push(n),this;this.children.push(n)}}for(let n of r)n&&!(n instanceof Q)&&!("tracks"in n)&&this.add(n);return this}addAudio(t){return this.audioTracks.push(t),this}addSubjectSandwich(t){let r=typeof t.source=="string"?t.source:t.source.inputHandleId??"",n=t.fit??"cover",i=t.feather??4,o=i>1?i/100:i,a=t.variant??"s",s=B.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:t.muted??!1,volume:t.muted?0:t.volume??1});this.add(s);for(let c of t.behind)this.add(c);let u=B.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:!0,volume:0}).withVision({mode:"matte",enableSegmentation:!0,variant:a,confidence:t.confidence??.25,featherRadius:o,keyBackground:t.keyBackground??!0,backgroundKeyThreshold:t.backgroundKeyThreshold});return this.add(u),this}addSmartFraming(t){let r=typeof t.source=="string"?t.source:t.source.inputHandleId??"",n=Math.max(0,Math.min(.99,t.damping??.8)),i=t.leadHeadroom??.18,o=this.width,a=this.height,s=t.sourceAspect??16/9,u=o/a,c=u<s?Math.round(a*s):o,d=u<s?a:Math.round(o/s),m=o-c,p=a-d,h=t.target,g=new Kt(w=>{if(m>=0)return 0;let T=h.center?.x?h.center.x.get(w):h.bounds?.centerX?h.bounds.centerX.get(w)/o:h.center?.screenX?h.center.screenX.get(w)/o:.5,C=Math.max(0,Math.min(1,T))*c,O=o/2-C;return Math.max(m,Math.min(0,O))},{fps:this.fps,label:"smart_framing_pan_x"}),b=new Kt(w=>{if(p>=0)return 0;let T=h.center?.y?h.center.y.get(w):h.bounds?.centerY?h.bounds.centerY.get(w)/a:h.center?.screenY?h.center.screenY.get(w)/a:.5,C=Math.max(0,Math.min(1,T))*d,O=a*i-C;return Math.max(p,Math.min(0,O))},{fps:this.fps,label:"smart_framing_pan_y"}),y=new Kt(w=>{let T=w.frame;if(T<=0)return g.get(w);let S=g.get({...w,frame:0,time:0}),C=1-n;for(let O=1;O<=T;O++){let z=g.get({...w,frame:O,time:O/w.fps});S=S+C*(z-S)}return S},{fps:this.fps,label:"smart_framing_smooth_x"}),v=new Kt(w=>{let T=w.frame;if(T<=0)return b.get(w);let S=b.get({...w,frame:0,time:0}),C=1-n;for(let O=1;O<=T;O++){let z=b.get({...w,frame:O,time:O/w.fps});S=S+C*(z-S)}return S},{fps:this.fps,label:"smart_framing_smooth_y"}),P=B.box({width:o,height:a,overflow:"hidden",position:"relative"}),A=B.video(r,{width:c,height:d,position:"absolute",x:y,y:v,fit:t.fit??"cover",muted:t.muted??!1,volume:t.muted?0:t.volume??1});return P.children||(P.children=[]),P.children.push(A),this.add(P),this}addSubjectOutline(t,r={}){let n=r.blur??12,i=this.width,o=this.height,a=r.pulseSignal,s=a?new Kt(d=>Math.max(0,Math.min(1,Number(a.get(d))||0)),{fps:this.fps,label:"outline_pulse"}):1,u=typeof r.source=="string"?r.source:r.source?.inputHandleId??"",c=B.box({width:i,height:o,position:"absolute",x:0,y:0,opacity:s});if(u){let d=B.video(u,{width:i,height:o,position:"absolute",x:0,y:0,fit:"cover",muted:!0,volume:0}).withVision({mode:"mask",enableSegmentation:!0});c.children||(c.children=[]),c.children.push(d)}return c.apply(new Dt({strength:n,blurType:"Gaussian"})),this.add(c),this}section(t,r,n){let i,o,a={},s=t!==null&&typeof t=="object"&&"bounds"in t,u=typeof t=="string"||t!==null&&typeof t=="object"&&("kind"in t||"src"in t||"inputHandleId"in t);if(u&&r&&typeof r=="object"&&"bounds"in r?(i=t,o=r,a=n??{}):u&&r?(i=t,a=r):s?(o=t,a=r??{},i=a.source??o.source):t&&typeof t=="object"&&(a=t,i=a.source),!i){let c=this.children.find(d=>d.kind==="media"&&(d.dataType==="Video"||d.dataType==="Image"));c&&(i=c)}return B.section(i??"",o??a,{compositionWidth:this.width,compositionHeight:this.height,...a})}addSection(t,r,n){let i=this.section(t,r,n);return this.add(i),i}async computeDuration(){if(this.durationMs!==void 0)return this.durationMs;let t=0,r=[];for(let n of[...this.children,...this.audioTracks]){if(n.kind==="media"){let i=n.inputHandleId;typeof i=="string"&&(n.dataType==="Video"||n.dataType==="Audio")&&r.push(i)}if(typeof n.durationFrames=="number"){let o=((typeof n.startFrame=="number"?n.startFrame:0)+n.durationFrames)/this.fps*1e3;o>t&&(t=o)}}for(let n of r)try{let o=await(await Jt.acquire(n)).computeDuration();if(Number.isFinite(o)&&o>0){let a=Math.round(o*1e3);a>t&&(t=a)}}catch{}return t>0?t:5e3}async registerFont(t,r){let n=await je.register(t,r);return n.filePath&&!this.fonts.includes(n.filePath)&&this.fonts.push(n.filePath),this}async registerEmojiFont(t){return await je.registerEmojiFont(t),this}toSpec(){let t=[...this.children,...this.audioTracks],r=je.getRegisteredFontPaths(),n=Array.from(new Set([...this.fonts,...r]));return{width:this.width,height:this.height,fps:this.fps,mode:"Video",backgroundColor:this.backgroundColor,...this.antialias3d!==void 0&&{antialias3d:this.antialias3d},layout:t,fonts:n,signals:this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...this.hasFrameHooks()&&{onRequestFrame:i=>this.notifyFrame(i)}}}toVirtualMedia(t={}){if(!this._linking){this._linking=!0;try{this.linkClipLayers()}finally{this._linking=!1}}let r=t.durationMs??this.durationMs,n=t.signals??this.signals;return zn(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:r,signals:n,resolveMediaSignal:this.mediaSignalResolver(void 0,r,n),...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...t})}async toVirtualMediaAsync(t={}){let r=t.durationMs??this.durationMs??await this.computeDuration();this.durationMs=r;let n=t.signals??this.signals,i=zn(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:r,signals:n,resolveMediaSignal:this.mediaSignalResolver(void 0,r,n),...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...t});return await Au(i,this.fps),i}async renderFrame(t={}){let{frame:r}=Ct(t,this.fps);if(t.fps!==void 0&&t.fps!==this.fps)throw new Error(`Composition fps is ${this.fps}; cannot render at fps ${t.fps}.`);let n=this.toVirtualMedia();if(this.hasFrameHooks()){let o=r;await this.notifyFrame({frame:o,fps:this.fps,time:this.fps>0?o/this.fps:0,duration:(this.durationMs??0)/1e3,durationMs:this.durationMs??0,progress:this.durationMs&&this.durationMs>0?Math.max(0,Math.min(1,o/this.fps*1e3/this.durationMs)):0,deltaTime:this.fps>0?1/this.fps:0})}return(t.renderer??new pe.HeadlessMediaRenderer).renderFrame(n,{fps:this.fps,frame:r})}async renderFrameGrid(t={}){return yn(this,t)}async renderVideo(t={},r={}){let n=typeof t=="string"?{...r,outputPath:t}:t,o=await(n.renderer??new pe.HeadlessMediaRenderer).renderVideo(this.toVirtualMedia(),n);if(o.qa){let a=this.lint(),s=[...o.qa.issues,...a.map(u=>({severity:u.severity,code:u.code,message:u.message,...u.layerId!==void 0&&{layerId:u.layerId}}))];o.qa={...o.qa,issues:s,passed:o.qa.passed&&!a.some(u=>u.severity==="error")}}return Sp(o,n.outputPath)}lint(){return ua(this.toSpec(),{emojiFont:je.hasEmojiFont()})}};function ye(e){let t=e;t.animation instanceof Q&&(t.animation=t.animation.toSpec()),Object.defineProperty(t,"animate",{value:(...n)=>{let i=n.flat().flatMap(u=>u instanceof Q?u.tracks:u.tracks??[]),o=t.animation,a=o?.tracks??[],s=n.flat().map(u=>u.frameStep).filter(u=>u!==void 0).at(-1)??o?.frameStep;return t.animation={tracks:_r([...a,...i]),...s!==void 0&&s>1&&{frameStep:s}},t},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"pinToLandmark",{value:(n,i)=>(yo(t,n,i),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"pinToObject",{value:(n,i)=>(xo(t,n,i),t),enumerable:!1,writable:!0,configurable:!0});let r=(n,i)=>(t.matte={node:n,...i&&{mode:i}},t);for(let n of["withMatte","withMask"])Object.defineProperty(t,n,{value:r,enumerable:!1,writable:!0,configurable:!0});return Object.defineProperty(t,"withRelief",{value:(n,i={})=>(t.relief={node:n,...i},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withPbrGlass",{value:n=>(t.glass=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"deformWithAudio",{value:n=>(t.audioDeform=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withCrop",{value:n=>(t.crop=n instanceof zr?n:new zr(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withVision",{value:n=>(t.vision=n instanceof ht?n:new ht(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withRelighting",{value:n=>(t.relighting=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"relight",{value:n=>(t.relighting=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withDeflicker",{value:n=>(t.deflicker=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"apply",{value:n=>(t.effects||(t.effects=[]),t.effects.push(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withEffect",{value:n=>(t.effects||(t.effects=[]),t.effects.push(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withEffects",{value:n=>(t.effects||(t.effects=[]),t.effects.push(...n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"section",{value:(n={},i)=>n!==null&&typeof n=="object"&&"bounds"in n?B.section(t,n,i):B.section(t,n),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"blurRegion",{value:(n,i)=>{let o=new Dt({track:n,strength:i?.strength??25,shape:i?.shape??"ellipse",...i});return t.effects||(t.effects=[]),t.effects.push(o),t},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withBlurRegion",{value:(n,i)=>t.blurRegion(n,i),enumerable:!1,writable:!0,configurable:!0}),t}var B={video:(e,t={})=>ye({id:t.id??X("video"),kind:"media",inputHandleId:e,dataType:"Video",fit:t.fit??"cover",...t}),image:(e,t={})=>(typeof e=="string"&&(/\.(json|lottie)(\?.*)?$/i.test(e)||e.startsWith("data:application/json")?console.warn(`[Layer.image] '${e}' is a Lottie vector animation, not a static image. Use Layer.lottie('${e}', options) instead.`):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(e)?console.warn(`[Layer.image] '${e}' is a video file, not a static image. Use Layer.video('${e}', options) instead.`):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(e)&&console.warn(`[Layer.image] '${e}' is an audio file, not a static image. Use Layer.audio('${e}', options) instead.`)),ye({id:t.id??X("img"),kind:"media",inputHandleId:e,dataType:"Image",fit:t.fit??"cover",...t})),svg:(e,t={})=>ye({id:t.id??X("svg"),kind:"media",inputHandleId:e,dataType:"SVG",fit:t.fit??"contain",...t}),lottie:(e,t={})=>ye({id:t.id??X("lottie"),kind:"media",inputHandleId:e,dataType:"Lottie",fit:t.fit??"contain",...t}),audio:(e,t={})=>ye({id:t.id??X("audio"),kind:"media",inputHandleId:e,dataType:"Audio",volume:t.volume??1,...t}),text:(e,t={})=>{let r=Array.isArray(e),n=!r&&typeof e=="object"&&e!==null,i=n?e:t,o="",a=i.spans;if(r){let s=si(e);o=s.text,a=s.spans}else n?i.spans&&!i.text?o=si(i.spans).text:o=i.text??"":o=typeof e=="string"?e:String(e??"");return ye({id:i.id??X("text"),kind:"text",fontFamily:i.fontFamily??je.getAll()[0]?.family??"Inter",fontSize:i.fontSize??48,fill:i.fill??"#ffffff",...i,text:i.text??o,spans:i.spans??a})},caption:(e,t={})=>ye({id:t.id??X("caption"),kind:"media",inputHandleId:e,dataType:t.dataType??"Caption",fontFamily:t.fontFamily??je.getAll()[0]?.family??"Inter",fontSize:t.fontSize??48,fill:t.fill??"#ffffff",...t}),shape:(e="rect",t={})=>{let{fill:r,...n}=t;return ye({id:n.id??X("shape"),kind:"shape",shapeType:n.shapeType??e,...n,fillColor:n.fillColor??r??"#3b82f6"})},flex:(e={})=>ye({id:e.id??X("flex"),kind:"flex",dir:e.dir??"column",children:e.children??[],...e}),box:(e={})=>ye({id:e.id??X("box"),kind:"box",background:e.background??"transparent",children:e.children??[],...e}),particles:e=>{let t=new bn(e),r={metadata:{width:e.width,height:e.height},operation:{...t.toOperation(),effect:t,dataType:"Video"},children:[]};return ye({id:e.id??X("particles"),kind:"media",dataType:"Video",src:r,position:"absolute",x:e.x??0,y:e.y??0,width:e.width,height:e.height,...e.startFrame!==void 0&&{startFrame:e.startFrame},...e.durationFrames!==void 0&&{durationFrames:e.durationFrames},...e.zIndex!==void 0&&{zIndex:e.zIndex}})},vfx:e=>{let{x:t,y:r,id:n,startFrame:i,durationFrames:o,zIndex:a,...s}=e,u=new Oo({outputType:"Video",...s}),c={metadata:{width:e.width,height:e.height},operation:{...u.toOperation(),effect:u,dataType:"Video"},children:[]};return ye({id:n??X("vfx"),kind:"media",dataType:"Video",src:c,position:"absolute",x:t??0,y:r??0,width:e.width,height:e.height,...i!==void 0&&{startFrame:i},...o!==void 0&&{durationFrames:o},...a!==void 0&&{zIndex:a}})},section:(e,t={},r={})=>{let n=e;if(e&&typeof e=="object"&&"toSpec"in e&&"children"in e){let S=(e.children||[]).find(C=>C.kind==="media"&&(C.dataType==="Video"||C.dataType==="Image"));S&&(n=S)}let i=t!==null&&typeof t=="object"&&"bounds"in t,o=i?r:t,a=i?t:void 0,s=o.padding??0,u=typeof n=="string"?n:n?.inputHandleId??n?.src??"",c=typeof n=="object"&&n?.dataType?n.dataType:"Video",d=o.compositionWidth??o.compWidth??(i?o.width:void 0)??1920,m=o.compositionHeight??o.compHeight??(i?o.height:void 0)??1080,p=Array.isArray(o.effects)?[...o.effects]:o.effects?[o.effects]:[],h=a?a.bounds.screenX.multiply(-1).add(s):typeof o.x=="number"?-o.x:o.x&&typeof o.x.multiply=="function"?o.x.multiply(-1):0,g=a?a.bounds.screenY.multiply(-1).add(s):typeof o.y=="number"?-o.y:o.y&&typeof o.y.multiply=="function"?o.y.multiply(-1):0,b=(c==="Image"?B.image(u,{position:"absolute",width:d,height:m,fit:o.fit??"cover",x:h,y:g}):B.video(u,{position:"absolute",width:d,height:m,fit:o.fit??"cover",x:h,y:g})).withEffects(p),y=a?a.bounds.screenWidth.add(s*2):o.width!==void 0?o.width:d,v=a?a.bounds.screenHeight.add(s*2):o.height!==void 0?o.height:m,P=[b,...o.children??[]],A=o.id??(a?X(`section-track-${a.trackId}`):X("section")),w=B.box({id:A,position:o.position??"absolute",width:y,height:v,x:a?void 0:o.x,y:a?void 0:o.y,borderRadius:o.borderRadius??0,borderColor:o.borderColor,borderWidth:o.borderWidth,opacity:o.opacity??1,overflow:"hidden",children:P});a&&(w=w.pinToObject(a,{anchor:"topLeft",offsetX:-s,offsetY:-s,hideWhenLost:o.hideWhenLost??!0,smoothFrames:o.smoothFrames}));let T=w;return Object.defineProperty(T,"innerMedia",{value:b,enumerable:!0,writable:!1}),Object.defineProperty(T,"effects",{get:()=>p,enumerable:!0}),Object.defineProperty(T,"addEffect",{value:S=>(p.push(S),b.effects=p,T),enumerable:!0,writable:!1}),Object.defineProperty(T,"withEffect",{value:S=>T.addEffect(S),enumerable:!0,writable:!1}),Object.defineProperty(T,"withEffects",{value:S=>{for(let C of S)T.addEffect(C);return T},enumerable:!0,writable:!1}),T},trackedRegion:(e,t,r={})=>B.section(e,t,r),blurTrackedRegion:(e,t,r={})=>{let{padding:n,borderRadius:i,borderColor:o,borderWidth:a,...s}=r;return B.section(e,t,{padding:n??8,borderRadius:i??12,borderColor:o,borderWidth:a,effects:[new Dt({strength:s.strength??25,blurType:s.blurType??"Gaussian",...s})]})},chart:(e,t={})=>lm(e,t,je.getAll()[0]?.family??"Inter"),camera:(e={})=>ye({id:e.id??X("camera"),kind:"camera",mode:e.mode??"lookAt",pitch:e.pitch??0,yaw:e.yaw??0,roll:e.roll??0,...e}),light:(e={})=>ye({id:e.id??X("light"),kind:"light",lightType:e.lightType??"point",color:e.color??"#ffffff",intensity:e.intensity??1,...e}),ambientLight:(e="#ffffff",t=.5,r={})=>ct.ambient(e,t,r),sequence:(e,t)=>Pm(e,t),environment:(e="studio",t={})=>ct.environment(e,t),directionalLight:(e={})=>ct.directional(e),pointLight:(e={})=>ct.point(e),spotLight:(e={})=>ct.spot(e),cube:e=>Ae.cube(e),carousel3d:e=>Ae.carousel(e),plane3d:e=>Ae.plane(e),prism3d:(e={})=>Ae.prism(e),model:(e={})=>ye({id:e.id??X("model3d"),kind:"model3d",is3D:e.is3D??!0,modelFormat:e.modelFormat??"auto",loop:e.loop??!0,scale:e.scale??1,scaleX:e.scaleX??1,scaleY:e.scaleY??1,scaleZ:e.scaleZ??1,opacity:e.opacity??1,...e}),obj:(e,t={})=>B.model({src:e,modelFormat:"obj",...t}),fbx:(e,t={})=>B.model({src:e,modelFormat:"fbx",...t}),gltf:(e,t={})=>B.model({src:e,modelFormat:"gltf",...t}),glb:(e,t={})=>B.model({src:e,modelFormat:"glb",...t}),stl:(e,t={})=>B.model({src:e,modelFormat:"stl",...t}),ply:(e,t={})=>B.model({src:e,modelFormat:"ply",...t}),vox:(e,t={})=>B.model({src:e,modelFormat:"vox",...t}),threeDS:(e,t={})=>B.model({src:e,modelFormat:"3ds",...t}),off:(e,t={})=>B.model({src:e,modelFormat:"off",...t})},ct={environment:(e="studio",t={})=>{let r=typeof e=="string"?{preset:e,...t}:{...e,...t};return ye({kind:"light",lightType:"environment",preset:"studio",intensity:1,...r,id:r.id??X("environment")})},ambient:(e="#ffffff",t=.5,r={})=>ye({id:r.id??X("light-ambient"),kind:"light",lightType:"ambient",color:typeof e=="string"?e:e.color??"#ffffff",intensity:t,...typeof e=="object"&&e,...r}),directional:(e={})=>ye({id:e.id??X("light-directional"),kind:"light",lightType:"directional",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??-1e3,z:e.z??-1e3,targetX:e.targetX??0,targetY:e.targetY??0,targetZ:e.targetZ??0,...e}),point:(e={})=>ye({id:e.id??X("light-point"),kind:"light",lightType:"point",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??0,z:e.z??-500,radius:e.radius??1e3,decay:e.decay??1,...e}),spot:(e={})=>ye({id:e.id??X("light-spot"),kind:"light",lightType:"spot",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??-500,z:e.z??-1e3,targetX:e.targetX??0,targetY:e.targetY??0,targetZ:e.targetZ??0,angle:e.angle??45,penumbra:e.penumbra??.2,radius:e.radius??2e3,decay:e.decay??1,...e})};function vR(e,t={},r={}){return B.section(e,t,r)}function SR(e,t,r={}){return typeof e=="object"&&"blurRegion"in e?e.blurRegion(t,r):B.blurTrackedRegion(e,t,r)}function kR(e,t,r={}){return B.section(e,t,r)}var w0=Object.assign(Qt,No,{blur:e=>new Dt(e),vignette:e=>new nr(e),colorBalance:e=>new So(e),colorKey:e=>new ko(e),levels:e=>new Fo(e),filmGrain:e=>new nt(e),curves:e=>new Bo(e),selectiveColor:e=>new Lo(e),gradientMap:e=>new Rt(e),shadowsHighlights:e=>new Io(e),applyLut:e=>new jo(e),unsharpMask:e=>new zo(e),highPass:e=>new _o(e),halftoneScreen:e=>new jr(e),tileOffset:e=>new $o(e),motionBlur:e=>new Uo(e),ssao:e=>new Vo(e),pbrGlass:e=>new Go(e),depthOfField:e=>new Wo(e),crop:e=>new zr(e),vision:e=>new ht(e),relight3d:e=>new Ho(e),modulate:e=>new Xo(e),deflicker:e=>new Yo(e),custom:(e,t={})=>new Eo(e,t)});var v0=/\.(png|jpe?g|webp|gif|avif|tiff?|bmp)(\?.*)?$/i,S0=/\.svg(\?.*)?$/i;function k0(e){let t=r=>r?{...r,enabled:!0}:void 0;return new Co({...e.dropShadow&&{dropShadow:t(e.dropShadow)},...e.outerGlow&&{outerGlow:t(e.outerGlow)},...e.innerShadow&&{innerShadow:t(e.innerShadow)},...e.stroke&&{stroke:t(e.stroke)}})}function P0(e,t){let r=Math.max(16,Math.round(e)),n=Math.max(16,Math.round(t));return`data:image/svg+xml;utf8,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${n}"><rect width="${r}" height="${n}" fill="#808080"/></svg>`)}`}var kp={box:e=>B.box(e),flex:e=>B.flex(e),text:(e,t)=>B.text(e,t),shape:(e,t)=>B.shape(e,t),measure:(e,t)=>je.measure(e,t),fonts:()=>je.getAll().map(e=>e.family),autoId:X,media:(e,t)=>S0.test(e)?B.svg(e,t):v0.test(e)?B.image(e,t):B.video(e,{muted:!0,...t}),style:(e,t)=>(e.withEffect(k0(t)),e),cutout:(e,{mode:t="person",...r})=>B.video(e,{muted:!0,volume:0,fit:"cover",...r}).withVision({mode:"matte",enableSegmentation:!0,variant:t==="subject"?"m":"s",confidence:.25,featherRadius:.04,keyBackground:!0}),particles:e=>B.particles(e),signal:(e,t)=>iu([...e],t),grain:({id:e,x:t,y:r,width:n,height:i,strength:o,size:a})=>B.svg(P0(n,i),{id:e,position:"absolute",x:t,y:r,width:n,height:i,fit:"fill",blendMode:"soft-light"}).withEffect(new nt({strength:o,...a!==void 0&&{size:a},shadows:1,midtones:1,highlights:1})),extrudedText:({fontWeight:e,...t})=>Ae.extrudedText({...t,...e!==void 0&&{fontWeight:String(e)},align:"center",verticalAlign:"middle"}),matte:(e,t,r="alpha")=>(e.withMatte(t,r),e)};f();async function vp(e,t={}){let r=await Tu(e);if(!r||r.channels.length===0)throw new Error(`analyzeAudio: could not decode audio from ${e}`);return Wl(r.channels,r.sampleRate,t)}function y0(e){return ic(kp,e)}export{Ko as a,Nu as b,Fu as c,Eu as d,Np as e,Fp as f,Bu as g,Qo as h,Ep as i,Lu as j,Bp as k,Iu as l,Jo as m,ju as n,zu as o,_u as p,$u as q,Uu as r,Vu as s,ea as t,$r as u,Gu as v,Wu as w,ir as x,Hu as y,Yu as z,Xu as A,qu as B,Wn as C,Hn as D,Zu as E,Ku as F,Yn as G,Qu as H,Ju as I,el as J,tl as K,rl as L,nl as M,il as N,or as O,Lp as P,ta as Q,ra as R,na as S,ia as T,oa as U,aa as V,Xv as W,qv as X,Qv as Y,_r as Z,Q as _,Zo as $,ua as aa,la as ba,gl as ca,yl as da,ef as ea,xl as fa,wl as ga,vl as ha,Sl as ia,kl as ja,Pl as ka,Ml as la,Tl as ma,Al as na,Cl as oa,Dl as pa,Rl as qa,Ol as ra,Nl as sa,Fl as ta,uf as ua,El as va,ma as wa,lf as xa,Bl as ya,Ll as za,Il as Aa,cf as Ba,jl as Ca,Ur as Da,pa as Ea,qr as Fa,Zr as Ga,Kr as Ha,ar as Ia,Ue as Ja,Jr as Ka,Ma as La,fh as Ma,hh as Na,gh as Oa,bh as Pa,yh as Qa,xh as Ra,wh as Sa,vh as Ta,Sh as Ua,kh as Va,Ph as Wa,Mh as Xa,si as Ya,Th as Za,um as _a,gn as $a,Bi as ab,bn as bb,Ts as cb,As as db,yn as eb,pe as fb,Ae as gb,km as hb,yy as ib,wn as jb,Ar as kb,vn as lb,Cr as mb,Fy as nb,Ey as ob,s0 as pb,hf as qb,Zn as rb,Vr as sb,fa as tb,gf as ub,bf as vb,Px as wb,_l as xb,$l as yb,Sf as zb,Wl as Ab,Dx as Bb,Rx as Cb,Ox as Db,Hl as Eb,Ex as Fb,Qn as Gb,Pf as Hb,Bx as Ib,Lx as Jb,Gr as Kb,zx as Lb,_x as Mb,Yl as Nb,ha as Ob,Jn as Pb,Xl as Qb,$x as Rb,ba as Sb,Tf as Tb,Wr as Ub,Yx as Vb,Xx as Wb,qx as Xb,Zx as Yb,ei as Zb,Kx as _b,Af as $b,Cf as ac,Qx as bc,Jx as cc,ew as dc,Hr as ec,xa as fc,Kl as gc,Ql as hc,ec as ic,Yr as jc,lw as kc,Rf as lc,Of as mc,Ff as nc,gw as oc,Bf as pc,Lf as qc,ic as rc,Pa as sc,oc as tc,ac as uc,sc as vc,xw as wc,ot as xc,ww as yc,Mw as zc,Xr as Ac,Tw as Bc,Aw as Cc,Cw as Dc,Dw as Ec,Rw as Fc,Ow as Gc,ri as Hc,Bw as Ic,Lw as Jc,Iw as Kc,jw as Lc,zw as Mc,_w as Nc,$w as Oc,Vf as Pc,Gw as Qc,Yw as Rc,Kw as Sc,Gf as Tc,tv as Uc,rv as Vc,ov as Wc,lc as Xc,Wf as Yc,cc as Zc,lv as _c,Xf as $c,Kf as ad,mc as bd,cv as cd,pv as dd,vp as ed,y0 as fd,xp as gd,wp as hd,B as id,ct as jd,vR as kd,SR as ld,kR as md,w0 as nd};
2218
+ `),s.add(j),clearTimeout(c),g||(g=!0,h(l===!1?"page opened":`page opened; the server stops ${Number((l/1e3).toFixed(1))} s after its last tab closes`)),K?.(),B.on("close",()=>{s.delete(j),s.size===0&&l!==!1&&!q&&(c=setTimeout(()=>{s.size===0&&V("idle")},l))});return}if(B.method==="POST"&&Y.pathname==="/takeover"&&B.headers[wp]==="1"){et(j,200,{ok:!0}),setImmediate(()=>{V("replaced")});return}if(B.method==="POST"&&Y.pathname==="/@framefields/log"&&B.headers["content-type"]==="application/json"){let D=await yp(B,16384),{message:F,level:$}=JSON.parse(D),R=String(F??"").trim();R&&!b.has(R)&&b.size<200&&(b.add(R),h(`${$==="warning"?"warning":"error"} in the page: ${R}`)),j.writeHead(204).end();return}if(y&&Y.pathname==="/@framefields/notes"){if(B.method==="GET"){et(j,200,await y.list());return}if(B.method==="POST"&&B.headers["content-type"]==="application/json"){let D=JSON.parse(await yp(B,16777216)),F=k.then(()=>h0(y,D,T.fps,h));k=F.catch(()=>{});let $=await F;_("notes",await y.list()),et(j,$?200:404,$??{error:"no such note"});return}}if(B.method==="POST"&&Y.pathname==="/audio/mix"){(N.state==="browser"||N.state==="error")&&(N={state:"mixing"},P()),et(j,202,N);return}if(B.method==="GET"&&Y.pathname==="/audio"){if(N.state!=="ready"||!G){et(j,404,{error:`audio is ${N.state}`});return}j.writeHead(200,{"content-type":"audio/wav","content-length":G.length,"cache-control":"no-store"}),j.end(G);return}let se=/^\/assets\/fonts\/([^/]+)$/.exec(Y.pathname);if(se&&(B.method==="GET"||B.method==="HEAD")){let D=W.join(x.cwd(),"assets","fonts",decodeURIComponent(se[1]));if(await Ws(D)){await Hs(B,j,D);return}}if(B.method==="GET"||B.method==="HEAD"){let D=W.resolve(decodeURIComponent(Y.pathname.replace(/^\/@fs(?=\/)/,"")));if(a.some(F=>Gs(F,D))&&await Ws(D)){await Hs(B,j,D);return}if(S&&await y0(j,S,D,A,h))return}et(j,404,{error:"not found"})}catch(se){j.headersSent?j.end():et(j,500,{error:se instanceof Error?se.message:String(se)})}}),K,re=t.host??"127.0.0.1",de=t.port??w0(),ae=B=>new Promise((j,Y)=>{let se=F=>{z.off("listening",D),Y(F)},D=()=>{z.off("error",se),j()};z.once("error",se),z.once("listening",D),z.listen(B,re)});try{await ae(de)}catch(B){if(B.code!=="EADDRINUSE")throw B;if(await v0(re,de))await ae(de).catch(()=>ae(0));else if(t.port===void 0)await ae(0);else throw B}let{port:xe}=z.address(),ke=`http://${re.includes(":")?`[${re}]`:re}:${xe}/`;if(E().catch(()=>{}),t.open===!0){let B=await new Promise(j=>{let Y=setTimeout(()=>j(!1),2e3);K=()=>{clearTimeout(Y),j(!0)},s.size>0&&K()});K=void 0,B||S0(ke)}return{url:ke,closed:H,close:()=>V()}}async function p0(e,t){let n=(await import(jn(e).href))[t];if(n===void 0)throw new Error(`[framefields] ${e} has no export named "${t}" to preview.`);return typeof n=="function"?await n():n}function f0(e){let t;for(let r=e;;r=W.dirname(r)){if(he.existsSync(W.join(r,".git")))return r;if(!t&&he.existsSync(W.join(r,"package.json"))&&(t=r),W.dirname(r)===r)return t??e}}async function h0(e,t,r,n){if(t.op==="add"&&t.note&&String(t.note.text).trim()){let o=await e.add(t.note),a=[o.image&&`frame with the spot marked: ${o.image}`,`all notes: ${e.file}`];return n(`${pp(o,r)}
2219
+ ${a.filter(Boolean).join(" \xB7 ")}`),o}let i=Number(t.id);if(t.op==="update"){let o=await e.update(i,t);return o&&typeof t.done=="boolean"&&n(`note ${i} marked ${o.done?"done":"open"}`),o}if(t.op==="remove"){let o=await e.remove(i);return o&&n(`note ${i} deleted`),o}}function g0(e){return e instanceof Error?e.message:String(e)}function yp(e,t){return new Promise((r,n)=>{let i="";e.setEncoding("utf8"),e.on("data",o=>{i+=o,i.length>t&&(n(new Error("request body too large")),e.destroy())}),e.on("end",()=>r(i)),e.on("error",n)})}function Gs(e,t){let r=W.relative(e,t);return!!r&&!r.startsWith("..")&&!W.isAbsolute(r)}async function Ws(e){try{return(await he.promises.stat(e)).isFile()}catch{return!1}}var b0={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".webm":"video/webm",".mp3":"audio/mpeg",".wav":"audio/wav",".m4a":"audio/mp4",".ogg":"audio/ogg",".ttf":"font/ttf",".otf":"font/otf",".woff":"font/woff",".woff2":"font/woff2",".json":"application/json",".js":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".wasm":"application/wasm",".onnx":"application/octet-stream",".srt":"text/plain; charset=utf-8",".txt":"text/plain; charset=utf-8"};async function y0(e,t,r,n,i){if(!t.entry(r))return!1;let o=await t.url(r);if(o)return e.writeHead(302,{location:o,"cache-control":"no-store"}),e.end(),!0;let a=W.relative(t.root,r);return n.has(a)||(n.add(a),i(`${a} is pinned on a private remote and there are no keys here: set its FRAMEFIELDS_STORAGE_* keys, give the remote a publicUrl, or \`npx framefields assets pull\``)),!1}async function Hs(e,t,r){let{size:n}=await he.promises.stat(r),i=b0[W.extname(r).toLowerCase()]??"application/octet-stream",o=/^bytes=(\d*)-(\d*)$/.exec(e.headers.range??""),a=0,s=n-1;if(o&&(o[1]||o[2])&&(o[1]?(a=Number(o[1]),o[2]&&(s=Math.min(s,Number(o[2])))):a=Math.max(0,n-Number(o[2])),a>s||a>=n)){t.writeHead(416,{"content-range":`bytes */${n}`}),t.end();return}if(t.writeHead(o?206:200,{"content-type":i,"content-length":s-a+1,"accept-ranges":"bytes","cache-control":"no-cache",...o&&{"content-range":`bytes ${a}-${s}/${n}`}}),e.method==="HEAD"){t.end();return}he.createReadStream(r,{start:a,end:s}).pipe(t)}async function x0(e,t,r,n){let i=e.fps??24,o=e.durationMs??await e.computeDuration?.()??5e3;return{session:r,notesDir:n,title:t,fps:i,frameCount:Math.max(1,Math.round(o/1e3*i)),width:e.width??1920,height:e.height??1080}}function w0(){return 41e3+(0,Ki.createHash)("sha1").update(x.cwd()).digest().readUInt16BE(0)%900}async function v0(e,t){let r=await new Promise(n=>{let i=Ys.default.request({host:e,port:t,method:"POST",path:"/takeover",agent:!1,headers:{[wp]:"1"},timeout:1500},o=>{o.resume(),n(o.statusCode===200)});i.on("timeout",()=>i.destroy()),i.on("error",()=>n(!1)),i.end()});return r&&await new Promise(n=>setTimeout(n,150)),r}function et(e,t,r){e.writeHead(t,{"content-type":"application/json","cache-control":"no-store"}),e.end(JSON.stringify(r))}function S0(e){let[t,r]=x.platform==="darwin"?["open",[e]]:x.platform==="win32"?["cmd",["/c","start","",e]]:["xdg-open",[e]];try{(0,xp.spawn)(t,r,{stdio:"ignore",detached:!0}).on("error",()=>{}).unref()}catch{}}function Xs(e,t){return e&&(t&&!e.source&&Object.defineProperty(e,"source",{value:t,enumerable:!0,writable:!0,configurable:!0}),typeof e.section!="function"&&Object.defineProperty(e,"section",{value:(r,n)=>{if(typeof r=="object"&&r!==null&&!("kind"in r)&&!("inputHandleId"in r)&&!("src"in r)){let o=r.source??e.source??t;return L.section(o,e,r)}let i=r??e.source??t;return L.section(i,e,n)},enumerable:!1,writable:!0,configurable:!0}),typeof e.blurEffect!="function"&&Object.defineProperty(e,"blurEffect",{value:r=>new Dt({track:e,...r}),enumerable:!1,writable:!0,configurable:!0}),typeof e.isolate!="function"&&Object.defineProperty(e,"isolate",{value:(r,n)=>L.section(r,e,n),enumerable:!1,writable:!0,configurable:!0}),e)}var P0=Lr.attach;Lr.attach=function(e,t,r){let n=P0.call(this,e,t,r);if(n?.objects){let i=e,o=n.objects.get.bind(n.objects);n.objects.get=s=>Xs(o(s),i);let a=n.objects.byCategory.bind(n.objects);n.objects.byCategory=(s,l)=>Xs(a(s,l),i),n.objects.primary&&Xs(n.objects.primary,i)}return n};var vp=class e{virtualMedia;constructor(t,r="Video"){this.virtualMedia=du(t,r)}static video(t,r){let n=new e(t,"Video");return r&&Object.assign(n.virtualMedia.metadata,r),n}static image(t,r){let n=new e(t,"Image");return r&&Object.assign(n.virtualMedia.metadata,r),n}static lottie(t,r){let n=new e(t,"Lottie");return r&&Object.assign(n.virtualMedia.metadata,r),n}static audio(t,r){let n=new e(t,"Audio");return r&&Object.assign(n.virtualMedia.metadata,r),n}apply(t,r={}){let n;t instanceof M0||typeof t=="object"&&t!==null&&"op"in t?n=t.toOperation():n={op:t,...r};let i=mu(this.virtualMedia,{...n,dataType:this.virtualMedia.operation.dataType});return new e(i)}toVirtualMedia(){return this.virtualMedia}async renderFrame(t={}){return(t.renderer??new pe.HeadlessMediaRenderer).renderFrame(this.virtualMedia,t)}get fps(){return this.virtualMedia.metadata?.fps??void 0}get durationMs(){return this.virtualMedia.metadata?.durationMs??void 0}get width(){return this.virtualMedia.metadata?.width??void 0}get height(){return this.virtualMedia.metadata?.height??void 0}async renderFrameGrid(t={}){return yn(this,t)}async renderVideo(t={},r={}){let n=typeof t=="string"?{...r,outputPath:t}:t,o=await(n.renderer??new pe.HeadlessMediaRenderer).renderVideo(this.virtualMedia,n);return Pp(o,n.outputPath)}};async function Pp(e,t){if(!t)return e;let r=W.resolve(t);return await Fr.mkdir(W.dirname(r),{recursive:!0}),await Fr.copyFile(e.filePath,r),await e.cleanup(),{...e,filePath:r,cleanup:async()=>{}}}var Sp=class e{width;height;fps;durationMs;backgroundColor;antialias3d;fonts;children=[];audioTracks=[];signals={};_frameHooks=[];_prepareHooks=[];_clipVision=new Map;_linking=!1;_mediaSignals;_visionConfig;_visionBundle;_effects=[];apply(t){return t instanceof gt?(this.withVision(t),this):(this._effects.push(t),this)}withVision(t={}){this._visionBundle??=new Br({width:this.width,height:this.height,fps:this.fps});let r=t instanceof gt?t.config:t;return this._visionConfig={...r,visionBundle:this._visionBundle},this._visionBundle}vision(t,r={}){let n=typeof t=="string"?t:t.src??t.inputHandleId;if(typeof t!="string"){let a=this.toVirtualMedia({resolveMediaSignal:this.mediaSignalResolver(!0)}),s=_n(a.children).find(l=>l.operation.id===t.id);if(!s)throw new Error("Add the media layer to the composition before calling comp.vision(layer)");r={startFrame:s.operation.startFrame??t.startFrame,trimStartSec:t.trimStartSec,timeRemap:s.operation.timeRemap,durationFrames:t.durationFrames,...r}}let i=`${n}\0${JSON.stringify({...r,timeRemap:Pr(r.timeRemap)})}`,o=this._clipVision.get(i);return o||(o=new gn(n,this.fps,r),this._clipVision.set(i,o)),o}async prepareVision(t){this.linkClipLayers(),await Promise.all([...this._clipVision.values()].map(r=>r.ready(0,t)))}linkClipLayers(){let t,r=n=>{if(!n||typeof n!="object")return;let i=n;if(i.kind==="media"&&i.dataType==="Video"&&typeof i.inputHandleId=="string"&&i.vision instanceof gt&&!(ho in i.vision)){t??=new Map(_n(this.toVirtualMedia().children).map(s=>{let l=s.operation;return[l.id,l]}));let o=t.get(i.id),a=this.clipForLayer(i.src??i.inputHandleId,i.vision,{trimStartSec:i.trimStartSec,startFrame:o?.startFrame??i.startFrame,timeRemap:o?.timeRemap});a&&(i.vision.mode!=="skeleton"&&i.vision.mode!=="depth"&&a.keepSubjects(),Object.defineProperty(i.vision,ho,{value:a,enumerable:!1,configurable:!0}))}if(Array.isArray(i.children))for(let o of i.children)r(o);r(i.matte?.node),r(i.relief?.node)};for(let n of this.children)r(n)}clipForLayer(t,r,n){let i=r.mode??"passthrough";if(i==="depth")return this.depthClip(t,n);let o=i==="skeleton";if(!(i!=="matte"&&i!=="mask"&&i!=="crop"&&!o)&&!(r.classes!==void 0||r.enableMatte===!0||r.visionBundle!==void 0||!o&&(r.matteSource==="selfie"||r.keyBackground===!0||r.enablePose===!0||(r.maskThreshold??.5)!==.5||r.featherRadius!==void 0)))for(let a of this._clipVision.values()){let s=a.options;if(a.source===t&&a.startFrame===(n.startFrame??0)&&a.trimStartSec===(n.trimStartSec??0)&&Pr(s.timeRemap)===Pr(n.timeRemap)&&(s.variant??"s")===(r.variant??"s")&&(s.confidence??.3)===(r.confidence??.3)){if(o&&!a.tracksPose){if(a.exact)throw new Error("A skeleton layer of a prompted comp.vision clip needs `pose: true` on that clip.");continue}return a}}}depthClip(t,r){for(let n of this._clipVision.values())if(n.tracksDepth&&n.source===t&&n.startFrame===(r.startFrame??0)&&n.trimStartSec===(r.trimStartSec??0)&&Pr(n.options.timeRemap)===Pr(r.timeRemap))return n;return this.vision(t,{depth:!0,...r.startFrame!==void 0&&{startFrame:r.startFrame},...r.trimStartSec!==void 0&&{trimStartSec:r.trimStartSec},...r.timeRemap!==void 0&&{timeRemap:r.timeRemap}})}async analyzeVisionSequence(t,r={}){let n=r.fps??this.fps,i=this.durationMs??await this.computeDuration(),o=r.totalFrames??Math.max(1,Math.round(i/1e3*n)),a=tr.create({modelsDir:r.modelsDir,baseUrl:r.baseUrl,...r.confidence!==void 0?{confidence:r.confidence}:{},...r.variant!==void 0?{variant:r.variant}:{}}),s=Er.getVideo(t,!0);async function*l(){for(let c=0;c<o;c++){let d=await s.getFrame(c/n);d?.buffer&&d.width>0&&d.height>0&&(yield{data:d.buffer,width:d.width,height:d.height})}}try{return await po(l(),{runner:a,source:t,fps:n,...r.tasks!==void 0?{tasks:r.tasks}:{},...r.categories!==void 0?{categories:r.categories}:{},...r.pathStride!==void 0?{pathStride:r.pathStride}:{},...r.includeMasks!==void 0?{includeMasks:r.includeMasks}:{},...r.iouThreshold!==void 0?{iouThreshold:r.iouThreshold}:{}})}finally{a.close(),s.destroy()}}onRequestFrame(t){return this._frameHooks.push(t),this}onPrepareFrame(t){return this._prepareHooks.push(t),this}notifyFrame(t){let r=this._mediaSignals?.framesBefore(t.frame)??[];return r.length===0?this.runFrame(t):(async()=>{for(let n of r)await this.runFrame(Ss(t,n));await this.runFrame(t)})()}runFrame(t){for(let n of this._frameHooks)n(t);let r=this._mediaSignals;if(r?.advance(t.frame),this.linkClipLayers(),this._clipVision.size===0&&this._prepareHooks.length===0){r?.reach(t.frame);return}return(async()=>{await this.prepareVision(t.frame);for(let n of this._prepareHooks)await n(t);r?.reach(t.frame)})()}async prepareMediaTime(){let t=this.durationMs??await this.computeDuration(),r=Math.round(t/1e3*this.fps)-1;!this._mediaSignals?.pending||r<0||await this.notifyFrame(Ss({frame:0,fps:this.fps,time:0,duration:t/1e3,durationMs:t,progress:0,deltaTime:1/this.fps},r))}mediaSignalResolver(t=this.hasFrameHooks(),r=this.durationMs,n=this.signals){return this._mediaSignals??=new Li(this.fps),this._mediaSignals.resolver({live:t,compositionDurationFrames:Math.round((r??0)/1e3*this.fps),signals:n})}hasFrameHooks(){return this._frameHooks.length>0||this._prepareHooks.length>0||this._clipVision.size>0}constructor(t){this.width=t.width,this.height=t.height,this.fps=t.fps??60,this.durationMs=t.durationMs??(t.durationFrames!==void 0?t.durationFrames/this.fps*1e3:void 0),this.backgroundColor=t.backgroundColor??"#000000",this.antialias3d=t.antialias3d,this.fonts=t.fonts??[],this.signals=t.signals??{}}static create(t){return new e(t)}addSignal(t,r){return this.signals[t]=r,this}add(t,...r){if(t instanceof ar)this.children.push(t.toNode());else if(t instanceof Lr)this.children.push(t.toNode());else{if(t&&typeof t=="object"&&"node"in t)return this.add(t.node,...r),this;if(Array.isArray(t))for(let n of t)this.add(n);else{let n=t,i=r[0];if(i&&!(i instanceof ar)&&!Array.isArray(i)&&(i instanceof Q||"tracks"in i))return n.animation=i instanceof Q?i.toSpec():i,this.children.push(n),this;this.children.push(n)}}for(let n of r)n&&!(n instanceof Q)&&!("tracks"in n)&&this.add(n);return this}addAudio(t){return this.audioTracks.push(t),this}addSubjectSandwich(t){let r=typeof t.source=="string"?t.source:t.source.inputHandleId??"",n=t.fit??"cover",i=t.feather??4,o=i>1?i/100:i,a=t.variant??"s",s=L.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:t.muted??!1,volume:t.muted?0:t.volume??1});this.add(s);for(let c of t.behind)this.add(c);let l=L.video(r,{width:this.width,height:this.height,position:"absolute",x:0,y:0,fit:n,muted:!0,volume:0}).withVision({mode:"matte",enableSegmentation:!0,variant:a,confidence:t.confidence??.25,featherRadius:o,keyBackground:t.keyBackground??!0,backgroundKeyThreshold:t.backgroundKeyThreshold});return this.add(l),this}addSmartFraming(t){let r=typeof t.source=="string"?t.source:t.source.inputHandleId??"",n=Math.max(0,Math.min(.99,t.damping??.8)),i=t.leadHeadroom??.18,o=this.width,a=this.height,s=t.sourceAspect??16/9,l=o/a,c=l<s?Math.round(a*s):o,d=l<s?a:Math.round(o/s),m=o-c,p=a-d,h=t.target,b=new Kt(w=>{if(m>=0)return 0;let T=h.center?.x?h.center.x.get(w):h.bounds?.centerX?h.bounds.centerX.get(w)/o:h.center?.screenX?h.center.screenX.get(w)/o:.5,E=Math.max(0,Math.min(1,T))*c,C=o/2-E;return Math.max(m,Math.min(0,C))},{fps:this.fps,label:"smart_framing_pan_x"}),g=new Kt(w=>{if(p>=0)return 0;let T=h.center?.y?h.center.y.get(w):h.bounds?.centerY?h.bounds.centerY.get(w)/a:h.center?.screenY?h.center.screenY.get(w)/a:.5,E=Math.max(0,Math.min(1,T))*d,C=a*i-E;return Math.max(p,Math.min(0,C))},{fps:this.fps,label:"smart_framing_pan_y"}),y=new Kt(w=>{let T=w.frame;if(T<=0)return b.get(w);let v=b.get({...w,frame:0,time:0}),E=1-n;for(let C=1;C<=T;C++){let N=b.get({...w,frame:C,time:C/w.fps});v=v+E*(N-v)}return v},{fps:this.fps,label:"smart_framing_smooth_x"}),k=new Kt(w=>{let T=w.frame;if(T<=0)return g.get(w);let v=g.get({...w,frame:0,time:0}),E=1-n;for(let C=1;C<=T;C++){let N=g.get({...w,frame:C,time:C/w.fps});v=v+E*(N-v)}return v},{fps:this.fps,label:"smart_framing_smooth_y"}),S=L.box({width:o,height:a,overflow:"hidden",position:"relative"}),A=L.video(r,{width:c,height:d,position:"absolute",x:y,y:k,fit:t.fit??"cover",muted:t.muted??!1,volume:t.muted?0:t.volume??1});return S.children||(S.children=[]),S.children.push(A),this.add(S),this}addSubjectOutline(t,r={}){let n=r.blur??12,i=this.width,o=this.height,a=r.pulseSignal,s=a?new Kt(d=>Math.max(0,Math.min(1,Number(a.get(d))||0)),{fps:this.fps,label:"outline_pulse"}):1,l=typeof r.source=="string"?r.source:r.source?.inputHandleId??"",c=L.box({width:i,height:o,position:"absolute",x:0,y:0,opacity:s});if(l){let d=L.video(l,{width:i,height:o,position:"absolute",x:0,y:0,fit:"cover",muted:!0,volume:0}).withVision({mode:"mask",enableSegmentation:!0});c.children||(c.children=[]),c.children.push(d)}return c.apply(new Dt({strength:n,blurType:"Gaussian"})),this.add(c),this}section(t,r,n){let i,o,a={},s=t!==null&&typeof t=="object"&&"bounds"in t,l=typeof t=="string"||t!==null&&typeof t=="object"&&("kind"in t||"src"in t||"inputHandleId"in t);if(l&&r&&typeof r=="object"&&"bounds"in r?(i=t,o=r,a=n??{}):l&&r?(i=t,a=r):s?(o=t,a=r??{},i=a.source??o.source):t&&typeof t=="object"&&(a=t,i=a.source),!i){let c=this.children.find(d=>d.kind==="media"&&(d.dataType==="Video"||d.dataType==="Image"));c&&(i=c)}return L.section(i??"",o??a,{compositionWidth:this.width,compositionHeight:this.height,...a})}addSection(t,r,n){let i=this.section(t,r,n);return this.add(i),i}async computeDuration(){if(this.durationMs!==void 0)return this.durationMs;let t=0,r=[];for(let n of[...this.children,...this.audioTracks]){if(n.kind==="media"){let i=n.inputHandleId;typeof i=="string"&&(n.dataType==="Video"||n.dataType==="Audio")&&r.push(i)}if(typeof n.durationFrames=="number"){let o=((typeof n.startFrame=="number"?n.startFrame:0)+n.durationFrames)/this.fps*1e3;o>t&&(t=o)}}for(let n of r)try{let o=await(await Jt.acquire(n)).computeDuration();if(Number.isFinite(o)&&o>0){let a=Math.round(o*1e3);a>t&&(t=a)}}catch{}return t>0?t:5e3}async registerFont(t,r){let n=await je.register(t,r);return n.filePath&&!this.fonts.includes(n.filePath)&&this.fonts.push(n.filePath),this}async registerEmojiFont(t){return await je.registerEmojiFont(t),this}toSpec(){let t=[...this.children,...this.audioTracks],r=je.getRegisteredFontPaths(),n=Array.from(new Set([...this.fonts,...r]));return{width:this.width,height:this.height,fps:this.fps,mode:"Video",backgroundColor:this.backgroundColor,...this.antialias3d!==void 0&&{antialias3d:this.antialias3d},layout:t,fonts:n,signals:this.signals,...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...this.hasFrameHooks()&&{onRequestFrame:i=>this.notifyFrame(i)}}}toVirtualMedia(t={}){if(!this._linking){this._linking=!0;try{this.linkClipLayers()}finally{this._linking=!1}}let r=t.durationMs??this.durationMs,n=t.signals??this.signals;return zn(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:r,signals:n,resolveMediaSignal:this.mediaSignalResolver(void 0,r,n),...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...t})}async toVirtualMediaAsync(t={}){let r=t.durationMs??this.durationMs??await this.computeDuration();this.durationMs=r;let n=t.signals??this.signals,i=zn(this.toSpec(),{isVideoMode:!0,fps:this.fps,durationMs:r,signals:n,resolveMediaSignal:this.mediaSignalResolver(void 0,r,n),...this._effects.length>0&&{effects:this._effects},...this._visionConfig&&{vision:this._visionConfig},...t});return await Au(i,this.fps),i}async renderFrame(t={}){let{frame:r}=Ct(t,this.fps);if(t.fps!==void 0&&t.fps!==this.fps)throw new Error(`Composition fps is ${this.fps}; cannot render at fps ${t.fps}.`);let n=this.toVirtualMedia();if(this.hasFrameHooks()){let o=r;await this.notifyFrame({frame:o,fps:this.fps,time:this.fps>0?o/this.fps:0,duration:(this.durationMs??0)/1e3,durationMs:this.durationMs??0,progress:this.durationMs&&this.durationMs>0?Math.max(0,Math.min(1,o/this.fps*1e3/this.durationMs)):0,deltaTime:this.fps>0?1/this.fps:0})}return(t.renderer??new pe.HeadlessMediaRenderer).renderFrame(n,{fps:this.fps,frame:r})}async renderFrameGrid(t={}){return yn(this,t)}async renderVideo(t={},r={}){let n=typeof t=="string"?{...r,outputPath:t}:t,o=await(n.renderer??new pe.HeadlessMediaRenderer).renderVideo(this.toVirtualMedia(),n);if(o.qa){let a=this.lint(),s=[...o.qa.issues,...a.map(l=>({severity:l.severity,code:l.code,message:l.message,...l.layerId!==void 0&&{layerId:l.layerId}}))];o.qa={...o.qa,issues:s,passed:o.qa.passed&&!a.some(l=>l.severity==="error")}}return Pp(o,n.outputPath)}lint(){return ua(this.toSpec(),{emojiFont:je.hasEmojiFont()})}};function ye(e){let t=e;t.animation instanceof Q&&(t.animation=t.animation.toSpec()),Object.defineProperty(t,"animate",{value:(...n)=>{let i=n.flat().flatMap(l=>l instanceof Q?l.tracks:l.tracks??[]),o=t.animation,a=o?.tracks??[],s=n.flat().map(l=>l.frameStep).filter(l=>l!==void 0).at(-1)??o?.frameStep;return t.animation={tracks:_r([...a,...i]),...s!==void 0&&s>1&&{frameStep:s}},t},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"pinToLandmark",{value:(n,i)=>(yo(t,n,i),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"pinToObject",{value:(n,i)=>(xo(t,n,i),t),enumerable:!1,writable:!0,configurable:!0});let r=(n,i)=>(t.matte={node:n,...i&&{mode:i}},t);for(let n of["withMatte","withMask"])Object.defineProperty(t,n,{value:r,enumerable:!1,writable:!0,configurable:!0});return Object.defineProperty(t,"withRelief",{value:(n,i={})=>(t.relief={node:n,...i},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withPbrGlass",{value:n=>(t.glass=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"deformWithAudio",{value:n=>(t.audioDeform=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withCrop",{value:n=>(t.crop=n instanceof zr?n:new zr(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withVision",{value:n=>(t.vision=n instanceof gt?n:new gt(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withRelighting",{value:n=>(t.relighting=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"relight",{value:n=>(t.relighting=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withDeflicker",{value:n=>(t.deflicker=n??{},t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"apply",{value:n=>(t.effects||(t.effects=[]),t.effects.push(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withEffect",{value:n=>(t.effects||(t.effects=[]),t.effects.push(n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withEffects",{value:n=>(t.effects||(t.effects=[]),t.effects.push(...n),t),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"section",{value:(n={},i)=>n!==null&&typeof n=="object"&&"bounds"in n?L.section(t,n,i):L.section(t,n),enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"blurRegion",{value:(n,i)=>{let o=new Dt({track:n,strength:i?.strength??25,shape:i?.shape??"ellipse",...i});return t.effects||(t.effects=[]),t.effects.push(o),t},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"withBlurRegion",{value:(n,i)=>t.blurRegion(n,i),enumerable:!1,writable:!0,configurable:!0}),t}var L={video:(e,t={})=>ye({id:t.id??X("video"),kind:"media",inputHandleId:e,dataType:"Video",fit:t.fit??"cover",...t}),image:(e,t={})=>(typeof e=="string"&&(/\.(json|lottie)(\?.*)?$/i.test(e)||e.startsWith("data:application/json")?console.warn(`[Layer.image] '${e}' is a Lottie vector animation, not a static image. Use Layer.lottie('${e}', options) instead.`):/\.(mp4|mov|webm|mkv)(\?.*)?$/i.test(e)?console.warn(`[Layer.image] '${e}' is a video file, not a static image. Use Layer.video('${e}', options) instead.`):/\.(mp3|wav|ogg|m4a|aac)(\?.*)?$/i.test(e)&&console.warn(`[Layer.image] '${e}' is an audio file, not a static image. Use Layer.audio('${e}', options) instead.`)),ye({id:t.id??X("img"),kind:"media",inputHandleId:e,dataType:"Image",fit:t.fit??"cover",...t})),svg:(e,t={})=>ye({id:t.id??X("svg"),kind:"media",inputHandleId:e,dataType:"SVG",fit:t.fit??"contain",...t}),lottie:(e,t={})=>ye({id:t.id??X("lottie"),kind:"media",inputHandleId:e,dataType:"Lottie",fit:t.fit??"contain",...t}),audio:(e,t={})=>ye({id:t.id??X("audio"),kind:"media",inputHandleId:e,dataType:"Audio",volume:t.volume??1,...t}),text:(e,t={})=>{let r=Array.isArray(e),n=!r&&typeof e=="object"&&e!==null,i=n?e:t,o="",a=i.spans;if(r){let s=si(e);o=s.text,a=s.spans}else n?i.spans&&!i.text?o=si(i.spans).text:o=i.text??"":o=typeof e=="string"?e:String(e??"");return ye({id:i.id??X("text"),kind:"text",fontFamily:i.fontFamily??je.getAll()[0]?.family??"Inter",fontSize:i.fontSize??48,fill:i.fill??"#ffffff",...i,text:i.text??o,spans:i.spans??a})},caption:(e,t={})=>ye({id:t.id??X("caption"),kind:"media",inputHandleId:e,dataType:t.dataType??"Caption",fontFamily:t.fontFamily??je.getAll()[0]?.family??"Inter",fontSize:t.fontSize??48,fill:t.fill??"#ffffff",...t}),shape:(e="rect",t={})=>{let{fill:r,...n}=t;return ye({id:n.id??X("shape"),kind:"shape",shapeType:n.shapeType??e,...n,fillColor:n.fillColor??r??"#3b82f6"})},flex:(e={})=>ye({id:e.id??X("flex"),kind:"flex",dir:e.dir??"column",children:e.children??[],...e}),box:(e={})=>ye({id:e.id??X("box"),kind:"box",background:e.background??"transparent",children:e.children??[],...e}),particles:e=>{let t=new bn(e),r={metadata:{width:e.width,height:e.height},operation:{...t.toOperation(),effect:t,dataType:"Video"},children:[]};return ye({id:e.id??X("particles"),kind:"media",dataType:"Video",src:r,position:"absolute",x:e.x??0,y:e.y??0,width:e.width,height:e.height,...e.startFrame!==void 0&&{startFrame:e.startFrame},...e.durationFrames!==void 0&&{durationFrames:e.durationFrames},...e.zIndex!==void 0&&{zIndex:e.zIndex}})},vfx:e=>{let{x:t,y:r,id:n,startFrame:i,durationFrames:o,zIndex:a,...s}=e,l=new Ro({outputType:"Video",...s}),c={metadata:{width:e.width,height:e.height},operation:{...l.toOperation(),effect:l,dataType:"Video"},children:[]};return ye({id:n??X("vfx"),kind:"media",dataType:"Video",src:c,position:"absolute",x:t??0,y:r??0,width:e.width,height:e.height,...i!==void 0&&{startFrame:i},...o!==void 0&&{durationFrames:o},...a!==void 0&&{zIndex:a}})},section:(e,t={},r={})=>{let n=e;if(e&&typeof e=="object"&&"toSpec"in e&&"children"in e){let v=(e.children||[]).find(E=>E.kind==="media"&&(E.dataType==="Video"||E.dataType==="Image"));v&&(n=v)}let i=t!==null&&typeof t=="object"&&"bounds"in t,o=i?r:t,a=i?t:void 0,s=o.padding??0,l=typeof n=="string"?n:n?.inputHandleId??n?.src??"",c=typeof n=="object"&&n?.dataType?n.dataType:"Video",d=o.compositionWidth??o.compWidth??(i?o.width:void 0)??1920,m=o.compositionHeight??o.compHeight??(i?o.height:void 0)??1080,p=Array.isArray(o.effects)?[...o.effects]:o.effects?[o.effects]:[],h=a?a.bounds.screenX.multiply(-1).add(s):typeof o.x=="number"?-o.x:o.x&&typeof o.x.multiply=="function"?o.x.multiply(-1):0,b=a?a.bounds.screenY.multiply(-1).add(s):typeof o.y=="number"?-o.y:o.y&&typeof o.y.multiply=="function"?o.y.multiply(-1):0,g=(c==="Image"?L.image(l,{position:"absolute",width:d,height:m,fit:o.fit??"cover",x:h,y:b}):L.video(l,{position:"absolute",width:d,height:m,fit:o.fit??"cover",x:h,y:b})).withEffects(p),y=a?a.bounds.screenWidth.add(s*2):o.width!==void 0?o.width:d,k=a?a.bounds.screenHeight.add(s*2):o.height!==void 0?o.height:m,S=[g,...o.children??[]],A=o.id??(a?X(`section-track-${a.trackId}`):X("section")),w=L.box({id:A,position:o.position??"absolute",width:y,height:k,x:a?void 0:o.x,y:a?void 0:o.y,borderRadius:o.borderRadius??0,borderColor:o.borderColor,borderWidth:o.borderWidth,opacity:o.opacity??1,overflow:"hidden",children:S});a&&(w=w.pinToObject(a,{anchor:"topLeft",offsetX:-s,offsetY:-s,hideWhenLost:o.hideWhenLost??!0,smoothFrames:o.smoothFrames}));let T=w;return Object.defineProperty(T,"innerMedia",{value:g,enumerable:!0,writable:!1}),Object.defineProperty(T,"effects",{get:()=>p,enumerable:!0}),Object.defineProperty(T,"addEffect",{value:v=>(p.push(v),g.effects=p,T),enumerable:!0,writable:!1}),Object.defineProperty(T,"withEffect",{value:v=>T.addEffect(v),enumerable:!0,writable:!1}),Object.defineProperty(T,"withEffects",{value:v=>{for(let E of v)T.addEffect(E);return T},enumerable:!0,writable:!1}),T},trackedRegion:(e,t,r={})=>L.section(e,t,r),blurTrackedRegion:(e,t,r={})=>{let{padding:n,borderRadius:i,borderColor:o,borderWidth:a,...s}=r;return L.section(e,t,{padding:n??8,borderRadius:i??12,borderColor:o,borderWidth:a,effects:[new Dt({strength:s.strength??25,blurType:s.blurType??"Gaussian",...s})]})},chart:(e,t={})=>dm(e,t,je.getAll()[0]?.family??"Inter"),camera:(e={})=>ye({id:e.id??X("camera"),kind:"camera",mode:e.mode??"lookAt",pitch:e.pitch??0,yaw:e.yaw??0,roll:e.roll??0,...e}),light:(e={})=>ye({id:e.id??X("light"),kind:"light",lightType:e.lightType??"point",color:e.color??"#ffffff",intensity:e.intensity??1,...e}),ambientLight:(e="#ffffff",t=.5,r={})=>dt.ambient(e,t,r),sequence:(e,t)=>Tm(e,t),environment:(e="studio",t={})=>dt.environment(e,t),directionalLight:(e={})=>dt.directional(e),pointLight:(e={})=>dt.point(e),spotLight:(e={})=>dt.spot(e),cube:e=>Ae.cube(e),carousel3d:e=>Ae.carousel(e),plane3d:e=>Ae.plane(e),prism3d:(e={})=>Ae.prism(e),model:(e={})=>ye({id:e.id??X("model3d"),kind:"model3d",is3D:e.is3D??!0,modelFormat:e.modelFormat??"auto",loop:e.loop??!0,scale:e.scale??1,scaleX:e.scaleX??1,scaleY:e.scaleY??1,scaleZ:e.scaleZ??1,opacity:e.opacity??1,...e}),obj:(e,t={})=>L.model({src:e,modelFormat:"obj",...t}),fbx:(e,t={})=>L.model({src:e,modelFormat:"fbx",...t}),gltf:(e,t={})=>L.model({src:e,modelFormat:"gltf",...t}),glb:(e,t={})=>L.model({src:e,modelFormat:"glb",...t}),stl:(e,t={})=>L.model({src:e,modelFormat:"stl",...t}),ply:(e,t={})=>L.model({src:e,modelFormat:"ply",...t}),vox:(e,t={})=>L.model({src:e,modelFormat:"vox",...t}),threeDS:(e,t={})=>L.model({src:e,modelFormat:"3ds",...t}),off:(e,t={})=>L.model({src:e,modelFormat:"off",...t})},dt={environment:(e="studio",t={})=>{let r=typeof e=="string"?{preset:e,...t}:{...e,...t};return ye({kind:"light",lightType:"environment",preset:"studio",intensity:1,...r,id:r.id??X("environment")})},ambient:(e="#ffffff",t=.5,r={})=>ye({id:r.id??X("light-ambient"),kind:"light",lightType:"ambient",color:typeof e=="string"?e:e.color??"#ffffff",intensity:t,...typeof e=="object"&&e,...r}),directional:(e={})=>ye({id:e.id??X("light-directional"),kind:"light",lightType:"directional",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??-1e3,z:e.z??-1e3,targetX:e.targetX??0,targetY:e.targetY??0,targetZ:e.targetZ??0,...e}),point:(e={})=>ye({id:e.id??X("light-point"),kind:"light",lightType:"point",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??0,z:e.z??-500,radius:e.radius??1e3,decay:e.decay??1,...e}),spot:(e={})=>ye({id:e.id??X("light-spot"),kind:"light",lightType:"spot",color:e.color??"#ffffff",intensity:e.intensity??1,x:e.x??0,y:e.y??-500,z:e.z??-1e3,targetX:e.targetX??0,targetY:e.targetY??0,targetZ:e.targetZ??0,angle:e.angle??45,penumbra:e.penumbra??.2,radius:e.radius??2e3,decay:e.decay??1,...e})};function TO(e,t={},r={}){return L.section(e,t,r)}function AO(e,t,r={}){return typeof e=="object"&&"blurRegion"in e?e.blurRegion(t,r):L.blurTrackedRegion(e,t,r)}function CO(e,t,r={}){return L.section(e,t,r)}var M0=Object.assign(Qt,No,{blur:e=>new Dt(e),vignette:e=>new nr(e),colorBalance:e=>new So(e),colorKey:e=>new ko(e),levels:e=>new Fo(e),filmGrain:e=>new it(e),curves:e=>new Bo(e),selectiveColor:e=>new Lo(e),gradientMap:e=>new Ot(e),shadowsHighlights:e=>new Io(e),applyLut:e=>new jo(e),unsharpMask:e=>new zo(e),highPass:e=>new _o(e),halftoneScreen:e=>new jr(e),tileOffset:e=>new $o(e),motionBlur:e=>new Uo(e),ssao:e=>new Vo(e),pbrGlass:e=>new Go(e),depthOfField:e=>new Wo(e),crop:e=>new zr(e),vision:e=>new gt(e),relight3d:e=>new Ho(e),modulate:e=>new Xo(e),deflicker:e=>new Yo(e),custom:(e,t={})=>new Eo(e,t)});var T0=/\.(png|jpe?g|webp|gif|avif|tiff?|bmp)(\?.*)?$/i,A0=/\.svg(\?.*)?$/i;function C0(e){let t=r=>r?{...r,enabled:!0}:void 0;return new Co({...e.dropShadow&&{dropShadow:t(e.dropShadow)},...e.outerGlow&&{outerGlow:t(e.outerGlow)},...e.innerShadow&&{innerShadow:t(e.innerShadow)},...e.stroke&&{stroke:t(e.stroke)}})}function D0(e,t){let r=Math.max(16,Math.round(e)),n=Math.max(16,Math.round(t));return`data:image/svg+xml;utf8,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${n}"><rect width="${r}" height="${n}" fill="#808080"/></svg>`)}`}var Mp={box:e=>L.box(e),flex:e=>L.flex(e),text:(e,t)=>L.text(e,t),shape:(e,t)=>L.shape(e,t),measure:(e,t)=>je.measure(e,t),fonts:()=>je.getAll().map(e=>e.family),autoId:X,media:(e,t)=>A0.test(e)?L.svg(e,t):T0.test(e)?L.image(e,t):L.video(e,{muted:!0,...t}),style:(e,t)=>(e.withEffect(C0(t)),e),cutout:(e,{mode:t="person",...r})=>L.video(e,{muted:!0,volume:0,fit:"cover",...r}).withVision({mode:"matte",enableSegmentation:!0,variant:t==="subject"?"m":"s",confidence:.25,featherRadius:.04,keyBackground:!0}),particles:e=>L.particles(e),signal:(e,t)=>iu([...e],t),grain:({id:e,x:t,y:r,width:n,height:i,strength:o,size:a})=>L.svg(D0(n,i),{id:e,position:"absolute",x:t,y:r,width:n,height:i,fit:"fill",blendMode:"soft-light"}).withEffect(new it({strength:o,...a!==void 0&&{size:a},shadows:1,midtones:1,highlights:1})),extrudedText:({fontWeight:e,...t})=>Ae.extrudedText({...t,...e!==void 0&&{fontWeight:String(e)},align:"center",verticalAlign:"middle"}),matte:(e,t,r="alpha")=>(e.withMatte(t,r),e)};f();async function kp(e,t={}){let r=await Tu(e);if(!r||r.channels.length===0)throw new Error(`analyzeAudio: could not decode audio from ${e}`);return Yl(r.channels,r.sampleRate,t)}function k0(e){return ac(Mp,e)}export{Ko as a,Nu as b,Fu as c,Eu as d,Ep as e,Bp as f,Bu as g,Qo as h,Lp as i,Lu as j,Ip as k,Iu as l,Jo as m,ju as n,zu as o,_u as p,$u as q,Uu as r,Vu as s,ea as t,$r as u,Gu as v,Wu as w,ir as x,Hu as y,Yu as z,Xu as A,qu as B,Wn as C,Hn as D,Zu as E,Ku as F,Yn as G,Qu as H,Ju as I,el as J,tl as K,rl as L,nl as M,il as N,or as O,jp as P,ta as Q,ra as R,na as S,ia as T,oa as U,aa as V,Jv as W,eS as X,nS as Y,_r as Z,Q as _,Zo as $,ua as aa,la as ba,gl as ca,bl as da,yl as ea,wl as fa,nf as ga,vl as ha,Sl as ia,kl as ja,Pl as ka,Ml as la,Tl as ma,Al as na,Cl as oa,Dl as pa,Ol as qa,Rl as ra,Nl as sa,Fl as ta,El as ua,Bl as va,df as wa,Ll as xa,ma as ya,mf as za,Il as Aa,jl as Ba,zl as Ca,pf as Da,_l as Ea,Ur as Fa,pa as Ga,qr as Ha,Zr as Ia,Kr as Ja,ar as Ka,Ue as La,Jr as Ma,Ma as Na,xh as Oa,wh as Pa,vh as Qa,Sh as Ra,kh as Sa,Ph as Ta,Mh as Ua,Th as Va,Ah as Wa,Ch as Xa,Dh as Ya,Oh as Za,si as _a,Rh as $a,cm as ab,gn as bb,Bi as cb,bn as db,Ts as eb,As as fb,yn as gb,pe as hb,Ae as ib,Mm as jb,ky as kb,wn as lb,Ar as mb,vn as nb,Cr as ob,jy as pb,zy as qb,m0 as rb,yf as sb,Zn as tb,Vr as ub,fa as vb,xf as wb,wf as xb,Dx as yb,Ul as zb,Vl as Ab,Mf as Bb,Yl as Cb,Ex as Db,Bx as Eb,Lx as Fb,Xl as Gb,zx as Hb,Qn as Ib,Af as Jb,_x as Kb,$x as Lb,Gr as Mb,Gx as Nb,Wx as Ob,ql as Pb,ha as Qb,Jn as Rb,Zl as Sb,Hx as Tb,ba as Ub,Df as Vb,Wr as Wb,Qx as Xb,Jx as Yb,ew as Zb,tw as _b,ei as $b,rw as ac,Of as bc,Rf as cc,nw as dc,iw as ec,ow as fc,Hr as gc,xa as hc,Jl as ic,ec as jc,rc as kc,Yr as lc,fw as mc,Ff as nc,Ef as oc,Lf as pc,vw as qc,jf as rc,zf as sc,ac as tc,Pa as uc,sc as vc,uc as wc,lc as xc,Pw as yc,at as zc,Mw as Ac,Ow as Bc,Xr as Cc,Rw as Dc,Nw as Ec,Fw as Fc,Ew as Gc,Bw as Hc,Lw as Ic,ri as Jc,_w as Kc,$w as Lc,Uw as Mc,Vw as Nc,Gw as Oc,Ww as Pc,Hw as Qc,Xf as Rc,qw as Sc,Qw as Tc,rv as Uc,qf as Vc,av as Wc,sv as Xc,cv as Yc,dc as Zc,Zf as _c,mc as $c,fv as ad,Jf as bd,rh as cd,fc as dd,hv as ed,yv as fd,kp as gd,k0 as hd,vp as id,Sp as jd,L as kd,dt as ld,TO as md,AO as nd,CO as od,M0 as pd};
2220
2220
  /*! Bundled license information:
2221
2221
 
2222
2222
  aws4fetch/dist/aws4fetch.esm.mjs: